• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (C) 2018 The Android Open Source Project
2 // Copyright (C) 2018 Google Inc.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 
16 // Autogenerated module VkEncoder
17 // (impl) generated by android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/genvk.py -registry android/android-emugl/host/libs/libOpenglRender/vulkan-registry/xml/vk.xml cereal -o android/android-emugl/host/libs/libOpenglRender/vulkan/cereal
18 // Please do not modify directly;
19 // re-run android/scripts/generate-vulkan-sources.sh,
20 // or directly from Python by defining:
21 // VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml
22 // CEREAL_OUTPUT_DIR: Where to put the generated sources.
23 // python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR
24 
25 #include "VkEncoder.h"
26 
27 
28 #include "IOStream.h"
29 #include "Resources.h"
30 #include "ResourceTracker.h"
31 #include "Validation.h"
32 #include "VulkanStreamGuest.h"
33 
34 #include "android/base/AlignedBuf.h"
35 #include "android/base/Pool.h"
36 
37 #include <cutils/properties.h>
38 
39 #include "goldfish_vk_marshaling_guest.h"
40 #include "goldfish_vk_deepcopy_guest.h"
41 #include "goldfish_vk_handlemap_guest.h"
42 #include "goldfish_vk_private_defs.h"
43 #include "goldfish_vk_transform_guest.h"
44 
45 
46 namespace goldfish_vk {
47 
48 
49 
50 using namespace goldfish_vk;
51 
52 using android::aligned_buf_alloc;
53 using android::aligned_buf_free;
54 using android::base::Pool;
55 
56 class VkEncoder::Impl {
57 public:
Impl(IOStream * stream)58     Impl(IOStream* stream) : m_stream(stream), m_logEncodes(false) {
59         const char* emuVkLogEncodesPropName = "qemu.vk.log";
60         char encodeProp[PROPERTY_VALUE_MAX];
61         if (property_get(emuVkLogEncodesPropName, encodeProp, nullptr) > 0) {
62             m_logEncodes = atoi(encodeProp) > 0;
63         }
64     }
countingStream()65     VulkanCountingStream* countingStream() { return &m_countingStream; }
stream()66     VulkanStreamGuest* stream() { return &m_stream; }
pool()67     Pool* pool() { return &m_pool; }
resources()68     ResourceTracker* resources() { return ResourceTracker::get(); }
validation()69     Validation* validation() { return &m_validation; }
70 
log(const char * text)71     void log(const char* text) {
72         if (!m_logEncodes) return;
73         ALOGD("encoder log: %s", text);
74     }
75 private:
76     VulkanCountingStream m_countingStream;
77     VulkanStreamGuest m_stream;
78     Pool m_pool { 8, 4096, 64 };
79 
80     Validation m_validation;
81     bool m_logEncodes;
82 };
83 
VkEncoder(IOStream * stream)84 VkEncoder::VkEncoder(IOStream *stream) :
85     mImpl(new VkEncoder::Impl(stream)) { }
86 
87 #define VALIDATE_RET(retType, success, validate) \
88     retType goldfish_vk_validateResult = validate; \
89     if (goldfish_vk_validateResult != success) return goldfish_vk_validateResult; \
90 
91 #define VALIDATE_VOID(validate) \
92     VkResult goldfish_vk_validateResult = validate; \
93     if (goldfish_vk_validateResult != VK_SUCCESS) return; \
94 
95 #ifdef VK_VERSION_1_0
vkCreateInstance(const VkInstanceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkInstance * pInstance)96 VkResult VkEncoder::vkCreateInstance(
97     const VkInstanceCreateInfo* pCreateInfo,
98     const VkAllocationCallbacks* pAllocator,
99     VkInstance* pInstance)
100 {
101     AEMU_SCOPED_TRACE("vkCreateInstance encode");
102     mImpl->log("start vkCreateInstance");
103     auto stream = mImpl->stream();
104     auto countingStream = mImpl->countingStream();
105     auto resources = mImpl->resources();
106     auto pool = mImpl->pool();
107     stream->setHandleMapping(resources->unwrapMapping());
108     VkInstanceCreateInfo* local_pCreateInfo;
109     VkAllocationCallbacks* local_pAllocator;
110     local_pCreateInfo = nullptr;
111     if (pCreateInfo)
112     {
113         local_pCreateInfo = (VkInstanceCreateInfo*)pool->alloc(sizeof(const VkInstanceCreateInfo));
114         deepcopy_VkInstanceCreateInfo(pool, pCreateInfo, (VkInstanceCreateInfo*)(local_pCreateInfo));
115     }
116     local_pAllocator = nullptr;
117     if (pAllocator)
118     {
119         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
120         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
121     }
122     local_pAllocator = nullptr;
123     if (local_pCreateInfo)
124     {
125         transform_tohost_VkInstanceCreateInfo(mImpl->resources(), (VkInstanceCreateInfo*)(local_pCreateInfo));
126     }
127     if (local_pAllocator)
128     {
129         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
130     }
131     countingStream->rewind();
132     {
133         marshal_VkInstanceCreateInfo(countingStream, (VkInstanceCreateInfo*)(local_pCreateInfo));
134         // WARNING PTR CHECK
135         uint64_t cgen_var_0 = (uint64_t)(uintptr_t)local_pAllocator;
136         countingStream->putBe64(cgen_var_0);
137         if (local_pAllocator)
138         {
139             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
140         }
141         uint64_t cgen_var_1;
142         countingStream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_1, 1);
143         countingStream->write((uint64_t*)&cgen_var_1, 8);
144     }
145     uint32_t packetSize_vkCreateInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
146     countingStream->rewind();
147     uint32_t opcode_vkCreateInstance = OP_vkCreateInstance;
148     stream->write(&opcode_vkCreateInstance, sizeof(uint32_t));
149     stream->write(&packetSize_vkCreateInstance, sizeof(uint32_t));
150     marshal_VkInstanceCreateInfo(stream, (VkInstanceCreateInfo*)(local_pCreateInfo));
151     // WARNING PTR CHECK
152     uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator;
153     stream->putBe64(cgen_var_2);
154     if (local_pAllocator)
155     {
156         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
157     }
158     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
159     uint64_t cgen_var_3;
160     stream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_3, 1);
161     stream->write((uint64_t*)&cgen_var_3, 8);
162     stream->setHandleMapping(resources->unwrapMapping());
163     AEMU_SCOPED_TRACE("vkCreateInstance readParams");
164     stream->setHandleMapping(resources->createMapping());
165     uint64_t cgen_var_4;
166     stream->read((uint64_t*)&cgen_var_4, 8);
167     stream->handleMapping()->mapHandles_u64_VkInstance(&cgen_var_4, (VkInstance*)pInstance, 1);
168     stream->unsetHandleMapping();
169     AEMU_SCOPED_TRACE("vkCreateInstance returnUnmarshal");
170     VkResult vkCreateInstance_VkResult_return = (VkResult)0;
171     stream->read(&vkCreateInstance_VkResult_return, sizeof(VkResult));
172     countingStream->clearPool();
173     stream->clearPool();
174     pool->freeAll();
175     mImpl->resources()->on_vkCreateInstance(this, vkCreateInstance_VkResult_return, pCreateInfo, pAllocator, pInstance);
176     mImpl->log("finish vkCreateInstance");;
177     return vkCreateInstance_VkResult_return;
178 }
179 
vkDestroyInstance(VkInstance instance,const VkAllocationCallbacks * pAllocator)180 void VkEncoder::vkDestroyInstance(
181     VkInstance instance,
182     const VkAllocationCallbacks* pAllocator)
183 {
184     AEMU_SCOPED_TRACE("vkDestroyInstance encode");
185     mImpl->log("start vkDestroyInstance");
186     auto stream = mImpl->stream();
187     auto countingStream = mImpl->countingStream();
188     auto resources = mImpl->resources();
189     auto pool = mImpl->pool();
190     stream->setHandleMapping(resources->unwrapMapping());
191     VkInstance local_instance;
192     VkAllocationCallbacks* local_pAllocator;
193     local_instance = instance;
194     local_pAllocator = nullptr;
195     if (pAllocator)
196     {
197         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
198         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
199     }
200     local_pAllocator = nullptr;
201     if (local_pAllocator)
202     {
203         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
204     }
205     countingStream->rewind();
206     {
207         uint64_t cgen_var_5;
208         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_5, 1);
209         countingStream->write((uint64_t*)&cgen_var_5, 1 * 8);
210         // WARNING PTR CHECK
211         uint64_t cgen_var_6 = (uint64_t)(uintptr_t)local_pAllocator;
212         countingStream->putBe64(cgen_var_6);
213         if (local_pAllocator)
214         {
215             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
216         }
217     }
218     uint32_t packetSize_vkDestroyInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten();
219     countingStream->rewind();
220     uint32_t opcode_vkDestroyInstance = OP_vkDestroyInstance;
221     stream->write(&opcode_vkDestroyInstance, sizeof(uint32_t));
222     stream->write(&packetSize_vkDestroyInstance, sizeof(uint32_t));
223     uint64_t cgen_var_7;
224     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_7, 1);
225     stream->write((uint64_t*)&cgen_var_7, 1 * 8);
226     // WARNING PTR CHECK
227     uint64_t cgen_var_8 = (uint64_t)(uintptr_t)local_pAllocator;
228     stream->putBe64(cgen_var_8);
229     if (local_pAllocator)
230     {
231         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
232     }
233     AEMU_SCOPED_TRACE("vkDestroyInstance readParams");
234     AEMU_SCOPED_TRACE("vkDestroyInstance returnUnmarshal");
235     resources->destroyMapping()->mapHandles_VkInstance((VkInstance*)&instance);
236     mImpl->log("finish vkDestroyInstance");;
237 }
238 
vkEnumeratePhysicalDevices(VkInstance instance,uint32_t * pPhysicalDeviceCount,VkPhysicalDevice * pPhysicalDevices)239 VkResult VkEncoder::vkEnumeratePhysicalDevices(
240     VkInstance instance,
241     uint32_t* pPhysicalDeviceCount,
242     VkPhysicalDevice* pPhysicalDevices)
243 {
244     AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices encode");
245     mImpl->log("start vkEnumeratePhysicalDevices");
246     auto stream = mImpl->stream();
247     auto countingStream = mImpl->countingStream();
248     auto resources = mImpl->resources();
249     auto pool = mImpl->pool();
250     stream->setHandleMapping(resources->unwrapMapping());
251     VkInstance local_instance;
252     local_instance = instance;
253     countingStream->rewind();
254     {
255         uint64_t cgen_var_9;
256         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_9, 1);
257         countingStream->write((uint64_t*)&cgen_var_9, 1 * 8);
258         // WARNING PTR CHECK
259         uint64_t cgen_var_10 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
260         countingStream->putBe64(cgen_var_10);
261         if (pPhysicalDeviceCount)
262         {
263             countingStream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
264         }
265         // WARNING PTR CHECK
266         uint64_t cgen_var_11 = (uint64_t)(uintptr_t)pPhysicalDevices;
267         countingStream->putBe64(cgen_var_11);
268         if (pPhysicalDevices)
269         {
270             if ((*(pPhysicalDeviceCount)))
271             {
272                 uint64_t* cgen_var_12;
273                 countingStream->alloc((void**)&cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
274                 countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_12, (*(pPhysicalDeviceCount)));
275                 countingStream->write((uint64_t*)cgen_var_12, (*(pPhysicalDeviceCount)) * 8);
276             }
277         }
278     }
279     uint32_t packetSize_vkEnumeratePhysicalDevices = 4 + 4 + (uint32_t)countingStream->bytesWritten();
280     countingStream->rewind();
281     uint32_t opcode_vkEnumeratePhysicalDevices = OP_vkEnumeratePhysicalDevices;
282     stream->write(&opcode_vkEnumeratePhysicalDevices, sizeof(uint32_t));
283     stream->write(&packetSize_vkEnumeratePhysicalDevices, sizeof(uint32_t));
284     uint64_t cgen_var_13;
285     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_13, 1);
286     stream->write((uint64_t*)&cgen_var_13, 1 * 8);
287     // WARNING PTR CHECK
288     uint64_t cgen_var_14 = (uint64_t)(uintptr_t)pPhysicalDeviceCount;
289     stream->putBe64(cgen_var_14);
290     if (pPhysicalDeviceCount)
291     {
292         stream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
293     }
294     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
295     // WARNING PTR CHECK
296     uint64_t cgen_var_15 = (uint64_t)(uintptr_t)pPhysicalDevices;
297     stream->putBe64(cgen_var_15);
298     if (pPhysicalDevices)
299     {
300         if ((*(pPhysicalDeviceCount)))
301         {
302             uint64_t* cgen_var_16;
303             stream->alloc((void**)&cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
304             stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_16, (*(pPhysicalDeviceCount)));
305             stream->write((uint64_t*)cgen_var_16, (*(pPhysicalDeviceCount)) * 8);
306         }
307     }
308     stream->setHandleMapping(resources->unwrapMapping());
309     AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices readParams");
310     // WARNING PTR CHECK
311     uint32_t* check_pPhysicalDeviceCount;
312     check_pPhysicalDeviceCount = (uint32_t*)(uintptr_t)stream->getBe64();
313     if (pPhysicalDeviceCount)
314     {
315         if (!(check_pPhysicalDeviceCount))
316         {
317             fprintf(stderr, "fatal: pPhysicalDeviceCount inconsistent between guest and host\n");
318         }
319         stream->read((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t));
320     }
321     stream->setHandleMapping(resources->createMapping());
322     // WARNING PTR CHECK
323     VkPhysicalDevice* check_pPhysicalDevices;
324     check_pPhysicalDevices = (VkPhysicalDevice*)(uintptr_t)stream->getBe64();
325     if (pPhysicalDevices)
326     {
327         if (!(check_pPhysicalDevices))
328         {
329             fprintf(stderr, "fatal: pPhysicalDevices inconsistent between guest and host\n");
330         }
331         if ((*(pPhysicalDeviceCount)))
332         {
333             uint64_t* cgen_var_19;
334             stream->alloc((void**)&cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
335             stream->read((uint64_t*)cgen_var_19, (*(pPhysicalDeviceCount)) * 8);
336             stream->handleMapping()->mapHandles_u64_VkPhysicalDevice(cgen_var_19, (VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount)));
337         }
338     }
339     stream->unsetHandleMapping();
340     AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices returnUnmarshal");
341     VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0;
342     stream->read(&vkEnumeratePhysicalDevices_VkResult_return, sizeof(VkResult));
343     countingStream->clearPool();
344     stream->clearPool();
345     pool->freeAll();
346     mImpl->log("finish vkEnumeratePhysicalDevices");;
347     return vkEnumeratePhysicalDevices_VkResult_return;
348 }
349 
vkGetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures * pFeatures)350 void VkEncoder::vkGetPhysicalDeviceFeatures(
351     VkPhysicalDevice physicalDevice,
352     VkPhysicalDeviceFeatures* pFeatures)
353 {
354     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures encode");
355     mImpl->log("start vkGetPhysicalDeviceFeatures");
356     auto stream = mImpl->stream();
357     auto countingStream = mImpl->countingStream();
358     auto resources = mImpl->resources();
359     auto pool = mImpl->pool();
360     stream->setHandleMapping(resources->unwrapMapping());
361     VkPhysicalDevice local_physicalDevice;
362     local_physicalDevice = physicalDevice;
363     countingStream->rewind();
364     {
365         uint64_t cgen_var_20;
366         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_20, 1);
367         countingStream->write((uint64_t*)&cgen_var_20, 1 * 8);
368         marshal_VkPhysicalDeviceFeatures(countingStream, (VkPhysicalDeviceFeatures*)(pFeatures));
369     }
370     uint32_t packetSize_vkGetPhysicalDeviceFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
371     countingStream->rewind();
372     uint32_t opcode_vkGetPhysicalDeviceFeatures = OP_vkGetPhysicalDeviceFeatures;
373     stream->write(&opcode_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
374     stream->write(&packetSize_vkGetPhysicalDeviceFeatures, sizeof(uint32_t));
375     uint64_t cgen_var_21;
376     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_21, 1);
377     stream->write((uint64_t*)&cgen_var_21, 1 * 8);
378     marshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
379     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures readParams");
380     unmarshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures));
381     if (pFeatures)
382     {
383         transform_fromhost_VkPhysicalDeviceFeatures(mImpl->resources(), (VkPhysicalDeviceFeatures*)(pFeatures));
384     }
385     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures returnUnmarshal");
386     mImpl->log("finish vkGetPhysicalDeviceFeatures");;
387 }
388 
vkGetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties * pFormatProperties)389 void VkEncoder::vkGetPhysicalDeviceFormatProperties(
390     VkPhysicalDevice physicalDevice,
391     VkFormat format,
392     VkFormatProperties* pFormatProperties)
393 {
394     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties encode");
395     mImpl->log("start vkGetPhysicalDeviceFormatProperties");
396     auto stream = mImpl->stream();
397     auto countingStream = mImpl->countingStream();
398     auto resources = mImpl->resources();
399     auto pool = mImpl->pool();
400     stream->setHandleMapping(resources->unwrapMapping());
401     VkPhysicalDevice local_physicalDevice;
402     VkFormat local_format;
403     local_physicalDevice = physicalDevice;
404     local_format = format;
405     countingStream->rewind();
406     {
407         uint64_t cgen_var_22;
408         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_22, 1);
409         countingStream->write((uint64_t*)&cgen_var_22, 1 * 8);
410         countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
411         marshal_VkFormatProperties(countingStream, (VkFormatProperties*)(pFormatProperties));
412     }
413     uint32_t packetSize_vkGetPhysicalDeviceFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
414     countingStream->rewind();
415     uint32_t opcode_vkGetPhysicalDeviceFormatProperties = OP_vkGetPhysicalDeviceFormatProperties;
416     stream->write(&opcode_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
417     stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t));
418     uint64_t cgen_var_23;
419     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_23, 1);
420     stream->write((uint64_t*)&cgen_var_23, 1 * 8);
421     stream->write((VkFormat*)&local_format, sizeof(VkFormat));
422     marshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
423     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties readParams");
424     unmarshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties));
425     if (pFormatProperties)
426     {
427         transform_fromhost_VkFormatProperties(mImpl->resources(), (VkFormatProperties*)(pFormatProperties));
428     }
429     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties returnUnmarshal");
430     mImpl->log("finish vkGetPhysicalDeviceFormatProperties");;
431 }
432 
vkGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkImageTiling tiling,VkImageUsageFlags usage,VkImageCreateFlags flags,VkImageFormatProperties * pImageFormatProperties)433 VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties(
434     VkPhysicalDevice physicalDevice,
435     VkFormat format,
436     VkImageType type,
437     VkImageTiling tiling,
438     VkImageUsageFlags usage,
439     VkImageCreateFlags flags,
440     VkImageFormatProperties* pImageFormatProperties)
441 {
442     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties encode");
443     mImpl->log("start vkGetPhysicalDeviceImageFormatProperties");
444     auto stream = mImpl->stream();
445     auto countingStream = mImpl->countingStream();
446     auto resources = mImpl->resources();
447     auto pool = mImpl->pool();
448     stream->setHandleMapping(resources->unwrapMapping());
449     VkPhysicalDevice local_physicalDevice;
450     VkFormat local_format;
451     VkImageType local_type;
452     VkImageTiling local_tiling;
453     VkImageUsageFlags local_usage;
454     VkImageCreateFlags local_flags;
455     local_physicalDevice = physicalDevice;
456     local_format = format;
457     local_type = type;
458     local_tiling = tiling;
459     local_usage = usage;
460     local_flags = flags;
461     countingStream->rewind();
462     {
463         uint64_t cgen_var_24;
464         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_24, 1);
465         countingStream->write((uint64_t*)&cgen_var_24, 1 * 8);
466         countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
467         countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
468         countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
469         countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
470         countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
471         marshal_VkImageFormatProperties(countingStream, (VkImageFormatProperties*)(pImageFormatProperties));
472     }
473     uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
474     countingStream->rewind();
475     uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties = OP_vkGetPhysicalDeviceImageFormatProperties;
476     stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
477     stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t));
478     uint64_t cgen_var_25;
479     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_25, 1);
480     stream->write((uint64_t*)&cgen_var_25, 1 * 8);
481     stream->write((VkFormat*)&local_format, sizeof(VkFormat));
482     stream->write((VkImageType*)&local_type, sizeof(VkImageType));
483     stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
484     stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
485     stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
486     marshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
487     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties readParams");
488     unmarshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties));
489     if (pImageFormatProperties)
490     {
491         transform_fromhost_VkImageFormatProperties(mImpl->resources(), (VkImageFormatProperties*)(pImageFormatProperties));
492     }
493     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties returnUnmarshal");
494     VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
495     stream->read(&vkGetPhysicalDeviceImageFormatProperties_VkResult_return, sizeof(VkResult));
496     countingStream->clearPool();
497     stream->clearPool();
498     pool->freeAll();
499     mImpl->log("finish vkGetPhysicalDeviceImageFormatProperties");;
500     return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
501 }
502 
vkGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties * pProperties)503 void VkEncoder::vkGetPhysicalDeviceProperties(
504     VkPhysicalDevice physicalDevice,
505     VkPhysicalDeviceProperties* pProperties)
506 {
507     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties encode");
508     mImpl->log("start vkGetPhysicalDeviceProperties");
509     auto stream = mImpl->stream();
510     auto countingStream = mImpl->countingStream();
511     auto resources = mImpl->resources();
512     auto pool = mImpl->pool();
513     stream->setHandleMapping(resources->unwrapMapping());
514     VkPhysicalDevice local_physicalDevice;
515     local_physicalDevice = physicalDevice;
516     countingStream->rewind();
517     {
518         uint64_t cgen_var_26;
519         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_26, 1);
520         countingStream->write((uint64_t*)&cgen_var_26, 1 * 8);
521         marshal_VkPhysicalDeviceProperties(countingStream, (VkPhysicalDeviceProperties*)(pProperties));
522     }
523     uint32_t packetSize_vkGetPhysicalDeviceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
524     countingStream->rewind();
525     uint32_t opcode_vkGetPhysicalDeviceProperties = OP_vkGetPhysicalDeviceProperties;
526     stream->write(&opcode_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
527     stream->write(&packetSize_vkGetPhysicalDeviceProperties, sizeof(uint32_t));
528     uint64_t cgen_var_27;
529     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_27, 1);
530     stream->write((uint64_t*)&cgen_var_27, 1 * 8);
531     marshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
532     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties readParams");
533     unmarshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties));
534     if (pProperties)
535     {
536         transform_fromhost_VkPhysicalDeviceProperties(mImpl->resources(), (VkPhysicalDeviceProperties*)(pProperties));
537     }
538     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties returnUnmarshal");
539     mImpl->log("finish vkGetPhysicalDeviceProperties");;
540 }
541 
vkGetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties * pQueueFamilyProperties)542 void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties(
543     VkPhysicalDevice physicalDevice,
544     uint32_t* pQueueFamilyPropertyCount,
545     VkQueueFamilyProperties* pQueueFamilyProperties)
546 {
547     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties encode");
548     mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties");
549     auto stream = mImpl->stream();
550     auto countingStream = mImpl->countingStream();
551     auto resources = mImpl->resources();
552     auto pool = mImpl->pool();
553     stream->setHandleMapping(resources->unwrapMapping());
554     VkPhysicalDevice local_physicalDevice;
555     local_physicalDevice = physicalDevice;
556     countingStream->rewind();
557     {
558         uint64_t cgen_var_28;
559         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_28, 1);
560         countingStream->write((uint64_t*)&cgen_var_28, 1 * 8);
561         // WARNING PTR CHECK
562         uint64_t cgen_var_29 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
563         countingStream->putBe64(cgen_var_29);
564         if (pQueueFamilyPropertyCount)
565         {
566             countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
567         }
568         // WARNING PTR CHECK
569         uint64_t cgen_var_30 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
570         countingStream->putBe64(cgen_var_30);
571         if (pQueueFamilyProperties)
572         {
573             for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
574             {
575                 marshal_VkQueueFamilyProperties(countingStream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
576             }
577         }
578     }
579     uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
580     countingStream->rewind();
581     uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties = OP_vkGetPhysicalDeviceQueueFamilyProperties;
582     stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
583     stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t));
584     uint64_t cgen_var_31;
585     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_31, 1);
586     stream->write((uint64_t*)&cgen_var_31, 1 * 8);
587     // WARNING PTR CHECK
588     uint64_t cgen_var_32 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
589     stream->putBe64(cgen_var_32);
590     if (pQueueFamilyPropertyCount)
591     {
592         stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
593     }
594     // WARNING PTR CHECK
595     uint64_t cgen_var_33 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
596     stream->putBe64(cgen_var_33);
597     if (pQueueFamilyProperties)
598     {
599         for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
600         {
601             marshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
602         }
603     }
604     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties readParams");
605     // WARNING PTR CHECK
606     uint32_t* check_pQueueFamilyPropertyCount;
607     check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
608     if (pQueueFamilyPropertyCount)
609     {
610         if (!(check_pQueueFamilyPropertyCount))
611         {
612             fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
613         }
614         stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
615     }
616     // WARNING PTR CHECK
617     VkQueueFamilyProperties* check_pQueueFamilyProperties;
618     check_pQueueFamilyProperties = (VkQueueFamilyProperties*)(uintptr_t)stream->getBe64();
619     if (pQueueFamilyProperties)
620     {
621         if (!(check_pQueueFamilyProperties))
622         {
623             fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
624         }
625         for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
626         {
627             unmarshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
628         }
629     }
630     if (pQueueFamilyProperties)
631     {
632         for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
633         {
634             transform_fromhost_VkQueueFamilyProperties(mImpl->resources(), (VkQueueFamilyProperties*)(pQueueFamilyProperties + i));
635         }
636     }
637     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties returnUnmarshal");
638     mImpl->log("finish vkGetPhysicalDeviceQueueFamilyProperties");;
639 }
640 
vkGetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties * pMemoryProperties)641 void VkEncoder::vkGetPhysicalDeviceMemoryProperties(
642     VkPhysicalDevice physicalDevice,
643     VkPhysicalDeviceMemoryProperties* pMemoryProperties)
644 {
645     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties encode");
646     mImpl->log("start vkGetPhysicalDeviceMemoryProperties");
647     auto stream = mImpl->stream();
648     auto countingStream = mImpl->countingStream();
649     auto resources = mImpl->resources();
650     auto pool = mImpl->pool();
651     stream->setHandleMapping(resources->unwrapMapping());
652     VkPhysicalDevice local_physicalDevice;
653     local_physicalDevice = physicalDevice;
654     countingStream->rewind();
655     {
656         uint64_t cgen_var_36;
657         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_36, 1);
658         countingStream->write((uint64_t*)&cgen_var_36, 1 * 8);
659         marshal_VkPhysicalDeviceMemoryProperties(countingStream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
660     }
661     uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
662     countingStream->rewind();
663     uint32_t opcode_vkGetPhysicalDeviceMemoryProperties = OP_vkGetPhysicalDeviceMemoryProperties;
664     stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
665     stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t));
666     uint64_t cgen_var_37;
667     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_37, 1);
668     stream->write((uint64_t*)&cgen_var_37, 1 * 8);
669     marshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
670     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties readParams");
671     unmarshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
672     if (pMemoryProperties)
673     {
674         transform_fromhost_VkPhysicalDeviceMemoryProperties(mImpl->resources(), (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties));
675     }
676     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties returnUnmarshal");
677     mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties(this, physicalDevice, pMemoryProperties);
678     mImpl->log("finish vkGetPhysicalDeviceMemoryProperties");;
679 }
680 
vkGetInstanceProcAddr(VkInstance instance,const char * pName)681 PFN_vkVoidFunction VkEncoder::vkGetInstanceProcAddr(
682     VkInstance instance,
683     const char* pName)
684 {
685     AEMU_SCOPED_TRACE("vkGetInstanceProcAddr encode");
686     mImpl->log("start vkGetInstanceProcAddr");
687     auto stream = mImpl->stream();
688     auto countingStream = mImpl->countingStream();
689     auto resources = mImpl->resources();
690     auto pool = mImpl->pool();
691     stream->setHandleMapping(resources->unwrapMapping());
692     VkInstance local_instance;
693     char* local_pName;
694     local_instance = instance;
695     local_pName = nullptr;
696     if (pName)
697     {
698         local_pName = pool->strDup(pName);
699     }
700     countingStream->rewind();
701     {
702         uint64_t cgen_var_38;
703         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_38, 1);
704         countingStream->write((uint64_t*)&cgen_var_38, 1 * 8);
705         countingStream->putString(local_pName);
706     }
707     uint32_t packetSize_vkGetInstanceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
708     countingStream->rewind();
709     uint32_t opcode_vkGetInstanceProcAddr = OP_vkGetInstanceProcAddr;
710     stream->write(&opcode_vkGetInstanceProcAddr, sizeof(uint32_t));
711     stream->write(&packetSize_vkGetInstanceProcAddr, sizeof(uint32_t));
712     uint64_t cgen_var_39;
713     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_39, 1);
714     stream->write((uint64_t*)&cgen_var_39, 1 * 8);
715     stream->putString(local_pName);
716     AEMU_SCOPED_TRACE("vkGetInstanceProcAddr readParams");
717     AEMU_SCOPED_TRACE("vkGetInstanceProcAddr returnUnmarshal");
718     PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
719     stream->read(&vkGetInstanceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
720     countingStream->clearPool();
721     stream->clearPool();
722     pool->freeAll();
723     mImpl->log("finish vkGetInstanceProcAddr");;
724     return vkGetInstanceProcAddr_PFN_vkVoidFunction_return;
725 }
726 
vkGetDeviceProcAddr(VkDevice device,const char * pName)727 PFN_vkVoidFunction VkEncoder::vkGetDeviceProcAddr(
728     VkDevice device,
729     const char* pName)
730 {
731     AEMU_SCOPED_TRACE("vkGetDeviceProcAddr encode");
732     mImpl->log("start vkGetDeviceProcAddr");
733     auto stream = mImpl->stream();
734     auto countingStream = mImpl->countingStream();
735     auto resources = mImpl->resources();
736     auto pool = mImpl->pool();
737     stream->setHandleMapping(resources->unwrapMapping());
738     VkDevice local_device;
739     char* local_pName;
740     local_device = device;
741     local_pName = nullptr;
742     if (pName)
743     {
744         local_pName = pool->strDup(pName);
745     }
746     countingStream->rewind();
747     {
748         uint64_t cgen_var_40;
749         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_40, 1);
750         countingStream->write((uint64_t*)&cgen_var_40, 1 * 8);
751         countingStream->putString(local_pName);
752     }
753     uint32_t packetSize_vkGetDeviceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten();
754     countingStream->rewind();
755     uint32_t opcode_vkGetDeviceProcAddr = OP_vkGetDeviceProcAddr;
756     stream->write(&opcode_vkGetDeviceProcAddr, sizeof(uint32_t));
757     stream->write(&packetSize_vkGetDeviceProcAddr, sizeof(uint32_t));
758     uint64_t cgen_var_41;
759     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_41, 1);
760     stream->write((uint64_t*)&cgen_var_41, 1 * 8);
761     stream->putString(local_pName);
762     AEMU_SCOPED_TRACE("vkGetDeviceProcAddr readParams");
763     AEMU_SCOPED_TRACE("vkGetDeviceProcAddr returnUnmarshal");
764     PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0;
765     stream->read(&vkGetDeviceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction));
766     countingStream->clearPool();
767     stream->clearPool();
768     pool->freeAll();
769     mImpl->log("finish vkGetDeviceProcAddr");;
770     return vkGetDeviceProcAddr_PFN_vkVoidFunction_return;
771 }
772 
vkCreateDevice(VkPhysicalDevice physicalDevice,const VkDeviceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDevice * pDevice)773 VkResult VkEncoder::vkCreateDevice(
774     VkPhysicalDevice physicalDevice,
775     const VkDeviceCreateInfo* pCreateInfo,
776     const VkAllocationCallbacks* pAllocator,
777     VkDevice* pDevice)
778 {
779     AEMU_SCOPED_TRACE("vkCreateDevice encode");
780     mImpl->log("start vkCreateDevice");
781     auto stream = mImpl->stream();
782     auto countingStream = mImpl->countingStream();
783     auto resources = mImpl->resources();
784     auto pool = mImpl->pool();
785     stream->setHandleMapping(resources->unwrapMapping());
786     VkPhysicalDevice local_physicalDevice;
787     VkDeviceCreateInfo* local_pCreateInfo;
788     VkAllocationCallbacks* local_pAllocator;
789     local_physicalDevice = physicalDevice;
790     local_pCreateInfo = nullptr;
791     if (pCreateInfo)
792     {
793         local_pCreateInfo = (VkDeviceCreateInfo*)pool->alloc(sizeof(const VkDeviceCreateInfo));
794         deepcopy_VkDeviceCreateInfo(pool, pCreateInfo, (VkDeviceCreateInfo*)(local_pCreateInfo));
795     }
796     local_pAllocator = nullptr;
797     if (pAllocator)
798     {
799         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
800         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
801     }
802     local_pAllocator = nullptr;
803     if (local_pCreateInfo)
804     {
805         transform_tohost_VkDeviceCreateInfo(mImpl->resources(), (VkDeviceCreateInfo*)(local_pCreateInfo));
806     }
807     if (local_pAllocator)
808     {
809         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
810     }
811     countingStream->rewind();
812     {
813         uint64_t cgen_var_42;
814         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_42, 1);
815         countingStream->write((uint64_t*)&cgen_var_42, 1 * 8);
816         marshal_VkDeviceCreateInfo(countingStream, (VkDeviceCreateInfo*)(local_pCreateInfo));
817         // WARNING PTR CHECK
818         uint64_t cgen_var_43 = (uint64_t)(uintptr_t)local_pAllocator;
819         countingStream->putBe64(cgen_var_43);
820         if (local_pAllocator)
821         {
822             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
823         }
824         uint64_t cgen_var_44;
825         countingStream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_44, 1);
826         countingStream->write((uint64_t*)&cgen_var_44, 8);
827     }
828     uint32_t packetSize_vkCreateDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
829     countingStream->rewind();
830     uint32_t opcode_vkCreateDevice = OP_vkCreateDevice;
831     stream->write(&opcode_vkCreateDevice, sizeof(uint32_t));
832     stream->write(&packetSize_vkCreateDevice, sizeof(uint32_t));
833     uint64_t cgen_var_45;
834     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_45, 1);
835     stream->write((uint64_t*)&cgen_var_45, 1 * 8);
836     marshal_VkDeviceCreateInfo(stream, (VkDeviceCreateInfo*)(local_pCreateInfo));
837     // WARNING PTR CHECK
838     uint64_t cgen_var_46 = (uint64_t)(uintptr_t)local_pAllocator;
839     stream->putBe64(cgen_var_46);
840     if (local_pAllocator)
841     {
842         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
843     }
844     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
845     uint64_t cgen_var_47;
846     stream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_47, 1);
847     stream->write((uint64_t*)&cgen_var_47, 8);
848     stream->setHandleMapping(resources->unwrapMapping());
849     AEMU_SCOPED_TRACE("vkCreateDevice readParams");
850     stream->setHandleMapping(resources->createMapping());
851     uint64_t cgen_var_48;
852     stream->read((uint64_t*)&cgen_var_48, 8);
853     stream->handleMapping()->mapHandles_u64_VkDevice(&cgen_var_48, (VkDevice*)pDevice, 1);
854     stream->unsetHandleMapping();
855     AEMU_SCOPED_TRACE("vkCreateDevice returnUnmarshal");
856     VkResult vkCreateDevice_VkResult_return = (VkResult)0;
857     stream->read(&vkCreateDevice_VkResult_return, sizeof(VkResult));
858     countingStream->clearPool();
859     stream->clearPool();
860     pool->freeAll();
861     mImpl->resources()->on_vkCreateDevice(this, vkCreateDevice_VkResult_return, physicalDevice, pCreateInfo, pAllocator, pDevice);
862     mImpl->log("finish vkCreateDevice");;
863     return vkCreateDevice_VkResult_return;
864 }
865 
vkDestroyDevice(VkDevice device,const VkAllocationCallbacks * pAllocator)866 void VkEncoder::vkDestroyDevice(
867     VkDevice device,
868     const VkAllocationCallbacks* pAllocator)
869 {
870     AEMU_SCOPED_TRACE("vkDestroyDevice encode");
871     mImpl->log("start vkDestroyDevice");
872     mImpl->resources()->on_vkDestroyDevice_pre(this, device, pAllocator);
873     auto stream = mImpl->stream();
874     auto countingStream = mImpl->countingStream();
875     auto resources = mImpl->resources();
876     auto pool = mImpl->pool();
877     stream->setHandleMapping(resources->unwrapMapping());
878     VkDevice local_device;
879     VkAllocationCallbacks* local_pAllocator;
880     local_device = device;
881     local_pAllocator = nullptr;
882     if (pAllocator)
883     {
884         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
885         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
886     }
887     local_pAllocator = nullptr;
888     if (local_pAllocator)
889     {
890         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
891     }
892     countingStream->rewind();
893     {
894         uint64_t cgen_var_49;
895         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_49, 1);
896         countingStream->write((uint64_t*)&cgen_var_49, 1 * 8);
897         // WARNING PTR CHECK
898         uint64_t cgen_var_50 = (uint64_t)(uintptr_t)local_pAllocator;
899         countingStream->putBe64(cgen_var_50);
900         if (local_pAllocator)
901         {
902             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
903         }
904     }
905     uint32_t packetSize_vkDestroyDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten();
906     countingStream->rewind();
907     uint32_t opcode_vkDestroyDevice = OP_vkDestroyDevice;
908     stream->write(&opcode_vkDestroyDevice, sizeof(uint32_t));
909     stream->write(&packetSize_vkDestroyDevice, sizeof(uint32_t));
910     uint64_t cgen_var_51;
911     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_51, 1);
912     stream->write((uint64_t*)&cgen_var_51, 1 * 8);
913     // WARNING PTR CHECK
914     uint64_t cgen_var_52 = (uint64_t)(uintptr_t)local_pAllocator;
915     stream->putBe64(cgen_var_52);
916     if (local_pAllocator)
917     {
918         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
919     }
920     AEMU_SCOPED_TRACE("vkDestroyDevice readParams");
921     AEMU_SCOPED_TRACE("vkDestroyDevice returnUnmarshal");
922     resources->destroyMapping()->mapHandles_VkDevice((VkDevice*)&device);
923     stream->flush();
924     mImpl->log("finish vkDestroyDevice");;
925 }
926 
vkEnumerateInstanceExtensionProperties(const char * pLayerName,uint32_t * pPropertyCount,VkExtensionProperties * pProperties)927 VkResult VkEncoder::vkEnumerateInstanceExtensionProperties(
928     const char* pLayerName,
929     uint32_t* pPropertyCount,
930     VkExtensionProperties* pProperties)
931 {
932     AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties encode");
933     mImpl->log("start vkEnumerateInstanceExtensionProperties");
934     auto stream = mImpl->stream();
935     auto countingStream = mImpl->countingStream();
936     auto resources = mImpl->resources();
937     auto pool = mImpl->pool();
938     stream->setHandleMapping(resources->unwrapMapping());
939     char* local_pLayerName;
940     local_pLayerName = nullptr;
941     if (pLayerName)
942     {
943         local_pLayerName = pool->strDup(pLayerName);
944     }
945     countingStream->rewind();
946     {
947         countingStream->putString(local_pLayerName);
948         // WARNING PTR CHECK
949         uint64_t cgen_var_53 = (uint64_t)(uintptr_t)pPropertyCount;
950         countingStream->putBe64(cgen_var_53);
951         if (pPropertyCount)
952         {
953             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
954         }
955         // WARNING PTR CHECK
956         uint64_t cgen_var_54 = (uint64_t)(uintptr_t)pProperties;
957         countingStream->putBe64(cgen_var_54);
958         if (pProperties)
959         {
960             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
961             {
962                 marshal_VkExtensionProperties(countingStream, (VkExtensionProperties*)(pProperties + i));
963             }
964         }
965     }
966     uint32_t packetSize_vkEnumerateInstanceExtensionProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
967     countingStream->rewind();
968     uint32_t opcode_vkEnumerateInstanceExtensionProperties = OP_vkEnumerateInstanceExtensionProperties;
969     stream->write(&opcode_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
970     stream->write(&packetSize_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t));
971     stream->putString(local_pLayerName);
972     // WARNING PTR CHECK
973     uint64_t cgen_var_55 = (uint64_t)(uintptr_t)pPropertyCount;
974     stream->putBe64(cgen_var_55);
975     if (pPropertyCount)
976     {
977         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
978     }
979     // WARNING PTR CHECK
980     uint64_t cgen_var_56 = (uint64_t)(uintptr_t)pProperties;
981     stream->putBe64(cgen_var_56);
982     if (pProperties)
983     {
984         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
985         {
986             marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
987         }
988     }
989     AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties readParams");
990     // WARNING PTR CHECK
991     uint32_t* check_pPropertyCount;
992     check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
993     if (pPropertyCount)
994     {
995         if (!(check_pPropertyCount))
996         {
997             fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
998         }
999         stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1000     }
1001     // WARNING PTR CHECK
1002     VkExtensionProperties* check_pProperties;
1003     check_pProperties = (VkExtensionProperties*)(uintptr_t)stream->getBe64();
1004     if (pProperties)
1005     {
1006         if (!(check_pProperties))
1007         {
1008             fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1009         }
1010         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1011         {
1012             unmarshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
1013         }
1014     }
1015     if (pProperties)
1016     {
1017         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1018         {
1019             transform_fromhost_VkExtensionProperties(mImpl->resources(), (VkExtensionProperties*)(pProperties + i));
1020         }
1021     }
1022     AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties returnUnmarshal");
1023     VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0;
1024     stream->read(&vkEnumerateInstanceExtensionProperties_VkResult_return, sizeof(VkResult));
1025     countingStream->clearPool();
1026     stream->clearPool();
1027     pool->freeAll();
1028     mImpl->log("finish vkEnumerateInstanceExtensionProperties");;
1029     return vkEnumerateInstanceExtensionProperties_VkResult_return;
1030 }
1031 
vkEnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice,const char * pLayerName,uint32_t * pPropertyCount,VkExtensionProperties * pProperties)1032 VkResult VkEncoder::vkEnumerateDeviceExtensionProperties(
1033     VkPhysicalDevice physicalDevice,
1034     const char* pLayerName,
1035     uint32_t* pPropertyCount,
1036     VkExtensionProperties* pProperties)
1037 {
1038     AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties encode");
1039     mImpl->log("start vkEnumerateDeviceExtensionProperties");
1040     auto stream = mImpl->stream();
1041     auto countingStream = mImpl->countingStream();
1042     auto resources = mImpl->resources();
1043     auto pool = mImpl->pool();
1044     stream->setHandleMapping(resources->unwrapMapping());
1045     VkPhysicalDevice local_physicalDevice;
1046     char* local_pLayerName;
1047     local_physicalDevice = physicalDevice;
1048     local_pLayerName = nullptr;
1049     if (pLayerName)
1050     {
1051         local_pLayerName = pool->strDup(pLayerName);
1052     }
1053     countingStream->rewind();
1054     {
1055         uint64_t cgen_var_59;
1056         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_59, 1);
1057         countingStream->write((uint64_t*)&cgen_var_59, 1 * 8);
1058         countingStream->putString(local_pLayerName);
1059         // WARNING PTR CHECK
1060         uint64_t cgen_var_60 = (uint64_t)(uintptr_t)pPropertyCount;
1061         countingStream->putBe64(cgen_var_60);
1062         if (pPropertyCount)
1063         {
1064             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1065         }
1066         // WARNING PTR CHECK
1067         uint64_t cgen_var_61 = (uint64_t)(uintptr_t)pProperties;
1068         countingStream->putBe64(cgen_var_61);
1069         if (pProperties)
1070         {
1071             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1072             {
1073                 marshal_VkExtensionProperties(countingStream, (VkExtensionProperties*)(pProperties + i));
1074             }
1075         }
1076     }
1077     uint32_t packetSize_vkEnumerateDeviceExtensionProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1078     countingStream->rewind();
1079     uint32_t opcode_vkEnumerateDeviceExtensionProperties = OP_vkEnumerateDeviceExtensionProperties;
1080     stream->write(&opcode_vkEnumerateDeviceExtensionProperties, sizeof(uint32_t));
1081     stream->write(&packetSize_vkEnumerateDeviceExtensionProperties, sizeof(uint32_t));
1082     uint64_t cgen_var_62;
1083     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_62, 1);
1084     stream->write((uint64_t*)&cgen_var_62, 1 * 8);
1085     stream->putString(local_pLayerName);
1086     // WARNING PTR CHECK
1087     uint64_t cgen_var_63 = (uint64_t)(uintptr_t)pPropertyCount;
1088     stream->putBe64(cgen_var_63);
1089     if (pPropertyCount)
1090     {
1091         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1092     }
1093     // WARNING PTR CHECK
1094     uint64_t cgen_var_64 = (uint64_t)(uintptr_t)pProperties;
1095     stream->putBe64(cgen_var_64);
1096     if (pProperties)
1097     {
1098         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1099         {
1100             marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
1101         }
1102     }
1103     AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties readParams");
1104     // WARNING PTR CHECK
1105     uint32_t* check_pPropertyCount;
1106     check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
1107     if (pPropertyCount)
1108     {
1109         if (!(check_pPropertyCount))
1110         {
1111             fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1112         }
1113         stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1114     }
1115     // WARNING PTR CHECK
1116     VkExtensionProperties* check_pProperties;
1117     check_pProperties = (VkExtensionProperties*)(uintptr_t)stream->getBe64();
1118     if (pProperties)
1119     {
1120         if (!(check_pProperties))
1121         {
1122             fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1123         }
1124         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1125         {
1126             unmarshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i));
1127         }
1128     }
1129     if (pProperties)
1130     {
1131         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1132         {
1133             transform_fromhost_VkExtensionProperties(mImpl->resources(), (VkExtensionProperties*)(pProperties + i));
1134         }
1135     }
1136     AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties returnUnmarshal");
1137     VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0;
1138     stream->read(&vkEnumerateDeviceExtensionProperties_VkResult_return, sizeof(VkResult));
1139     countingStream->clearPool();
1140     stream->clearPool();
1141     pool->freeAll();
1142     mImpl->log("finish vkEnumerateDeviceExtensionProperties");;
1143     return vkEnumerateDeviceExtensionProperties_VkResult_return;
1144 }
1145 
vkEnumerateInstanceLayerProperties(uint32_t * pPropertyCount,VkLayerProperties * pProperties)1146 VkResult VkEncoder::vkEnumerateInstanceLayerProperties(
1147     uint32_t* pPropertyCount,
1148     VkLayerProperties* pProperties)
1149 {
1150     AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties encode");
1151     mImpl->log("start vkEnumerateInstanceLayerProperties");
1152     auto stream = mImpl->stream();
1153     auto countingStream = mImpl->countingStream();
1154     auto resources = mImpl->resources();
1155     auto pool = mImpl->pool();
1156     stream->setHandleMapping(resources->unwrapMapping());
1157     countingStream->rewind();
1158     {
1159         // WARNING PTR CHECK
1160         uint64_t cgen_var_67 = (uint64_t)(uintptr_t)pPropertyCount;
1161         countingStream->putBe64(cgen_var_67);
1162         if (pPropertyCount)
1163         {
1164             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1165         }
1166         // WARNING PTR CHECK
1167         uint64_t cgen_var_68 = (uint64_t)(uintptr_t)pProperties;
1168         countingStream->putBe64(cgen_var_68);
1169         if (pProperties)
1170         {
1171             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1172             {
1173                 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
1174             }
1175         }
1176     }
1177     uint32_t packetSize_vkEnumerateInstanceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1178     countingStream->rewind();
1179     uint32_t opcode_vkEnumerateInstanceLayerProperties = OP_vkEnumerateInstanceLayerProperties;
1180     stream->write(&opcode_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
1181     stream->write(&packetSize_vkEnumerateInstanceLayerProperties, sizeof(uint32_t));
1182     // WARNING PTR CHECK
1183     uint64_t cgen_var_69 = (uint64_t)(uintptr_t)pPropertyCount;
1184     stream->putBe64(cgen_var_69);
1185     if (pPropertyCount)
1186     {
1187         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1188     }
1189     // WARNING PTR CHECK
1190     uint64_t cgen_var_70 = (uint64_t)(uintptr_t)pProperties;
1191     stream->putBe64(cgen_var_70);
1192     if (pProperties)
1193     {
1194         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1195         {
1196             marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1197         }
1198     }
1199     AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties readParams");
1200     // WARNING PTR CHECK
1201     uint32_t* check_pPropertyCount;
1202     check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
1203     if (pPropertyCount)
1204     {
1205         if (!(check_pPropertyCount))
1206         {
1207             fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1208         }
1209         stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1210     }
1211     // WARNING PTR CHECK
1212     VkLayerProperties* check_pProperties;
1213     check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
1214     if (pProperties)
1215     {
1216         if (!(check_pProperties))
1217         {
1218             fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1219         }
1220         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1221         {
1222             unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1223         }
1224     }
1225     if (pProperties)
1226     {
1227         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1228         {
1229             transform_fromhost_VkLayerProperties(mImpl->resources(), (VkLayerProperties*)(pProperties + i));
1230         }
1231     }
1232     AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties returnUnmarshal");
1233     VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0;
1234     stream->read(&vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult));
1235     countingStream->clearPool();
1236     stream->clearPool();
1237     pool->freeAll();
1238     mImpl->log("finish vkEnumerateInstanceLayerProperties");;
1239     return vkEnumerateInstanceLayerProperties_VkResult_return;
1240 }
1241 
vkEnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkLayerProperties * pProperties)1242 VkResult VkEncoder::vkEnumerateDeviceLayerProperties(
1243     VkPhysicalDevice physicalDevice,
1244     uint32_t* pPropertyCount,
1245     VkLayerProperties* pProperties)
1246 {
1247     AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties encode");
1248     mImpl->log("start vkEnumerateDeviceLayerProperties");
1249     auto stream = mImpl->stream();
1250     auto countingStream = mImpl->countingStream();
1251     auto resources = mImpl->resources();
1252     auto pool = mImpl->pool();
1253     stream->setHandleMapping(resources->unwrapMapping());
1254     VkPhysicalDevice local_physicalDevice;
1255     local_physicalDevice = physicalDevice;
1256     countingStream->rewind();
1257     {
1258         uint64_t cgen_var_73;
1259         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_73, 1);
1260         countingStream->write((uint64_t*)&cgen_var_73, 1 * 8);
1261         // WARNING PTR CHECK
1262         uint64_t cgen_var_74 = (uint64_t)(uintptr_t)pPropertyCount;
1263         countingStream->putBe64(cgen_var_74);
1264         if (pPropertyCount)
1265         {
1266             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1267         }
1268         // WARNING PTR CHECK
1269         uint64_t cgen_var_75 = (uint64_t)(uintptr_t)pProperties;
1270         countingStream->putBe64(cgen_var_75);
1271         if (pProperties)
1272         {
1273             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1274             {
1275                 marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i));
1276             }
1277         }
1278     }
1279     uint32_t packetSize_vkEnumerateDeviceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1280     countingStream->rewind();
1281     uint32_t opcode_vkEnumerateDeviceLayerProperties = OP_vkEnumerateDeviceLayerProperties;
1282     stream->write(&opcode_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
1283     stream->write(&packetSize_vkEnumerateDeviceLayerProperties, sizeof(uint32_t));
1284     uint64_t cgen_var_76;
1285     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_76, 1);
1286     stream->write((uint64_t*)&cgen_var_76, 1 * 8);
1287     // WARNING PTR CHECK
1288     uint64_t cgen_var_77 = (uint64_t)(uintptr_t)pPropertyCount;
1289     stream->putBe64(cgen_var_77);
1290     if (pPropertyCount)
1291     {
1292         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
1293     }
1294     // WARNING PTR CHECK
1295     uint64_t cgen_var_78 = (uint64_t)(uintptr_t)pProperties;
1296     stream->putBe64(cgen_var_78);
1297     if (pProperties)
1298     {
1299         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1300         {
1301             marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1302         }
1303     }
1304     AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties readParams");
1305     // WARNING PTR CHECK
1306     uint32_t* check_pPropertyCount;
1307     check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
1308     if (pPropertyCount)
1309     {
1310         if (!(check_pPropertyCount))
1311         {
1312             fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
1313         }
1314         stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
1315     }
1316     // WARNING PTR CHECK
1317     VkLayerProperties* check_pProperties;
1318     check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64();
1319     if (pProperties)
1320     {
1321         if (!(check_pProperties))
1322         {
1323             fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
1324         }
1325         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1326         {
1327             unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i));
1328         }
1329     }
1330     if (pProperties)
1331     {
1332         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
1333         {
1334             transform_fromhost_VkLayerProperties(mImpl->resources(), (VkLayerProperties*)(pProperties + i));
1335         }
1336     }
1337     AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties returnUnmarshal");
1338     VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
1339     stream->read(&vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult));
1340     countingStream->clearPool();
1341     stream->clearPool();
1342     pool->freeAll();
1343     mImpl->log("finish vkEnumerateDeviceLayerProperties");;
1344     return vkEnumerateDeviceLayerProperties_VkResult_return;
1345 }
1346 
vkGetDeviceQueue(VkDevice device,uint32_t queueFamilyIndex,uint32_t queueIndex,VkQueue * pQueue)1347 void VkEncoder::vkGetDeviceQueue(
1348     VkDevice device,
1349     uint32_t queueFamilyIndex,
1350     uint32_t queueIndex,
1351     VkQueue* pQueue)
1352 {
1353     AEMU_SCOPED_TRACE("vkGetDeviceQueue encode");
1354     mImpl->log("start vkGetDeviceQueue");
1355     auto stream = mImpl->stream();
1356     auto countingStream = mImpl->countingStream();
1357     auto resources = mImpl->resources();
1358     auto pool = mImpl->pool();
1359     stream->setHandleMapping(resources->unwrapMapping());
1360     VkDevice local_device;
1361     uint32_t local_queueFamilyIndex;
1362     uint32_t local_queueIndex;
1363     local_device = device;
1364     local_queueFamilyIndex = queueFamilyIndex;
1365     local_queueIndex = queueIndex;
1366     countingStream->rewind();
1367     {
1368         uint64_t cgen_var_81;
1369         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_81, 1);
1370         countingStream->write((uint64_t*)&cgen_var_81, 1 * 8);
1371         countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1372         countingStream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
1373         uint64_t cgen_var_82;
1374         countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_82, 1);
1375         countingStream->write((uint64_t*)&cgen_var_82, 8);
1376     }
1377     uint32_t packetSize_vkGetDeviceQueue = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1378     countingStream->rewind();
1379     uint32_t opcode_vkGetDeviceQueue = OP_vkGetDeviceQueue;
1380     stream->write(&opcode_vkGetDeviceQueue, sizeof(uint32_t));
1381     stream->write(&packetSize_vkGetDeviceQueue, sizeof(uint32_t));
1382     uint64_t cgen_var_83;
1383     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_83, 1);
1384     stream->write((uint64_t*)&cgen_var_83, 1 * 8);
1385     stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
1386     stream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t));
1387     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
1388     uint64_t cgen_var_84;
1389     stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_84, 1);
1390     stream->write((uint64_t*)&cgen_var_84, 8);
1391     stream->setHandleMapping(resources->unwrapMapping());
1392     AEMU_SCOPED_TRACE("vkGetDeviceQueue readParams");
1393     stream->setHandleMapping(resources->createMapping());
1394     uint64_t cgen_var_85;
1395     stream->read((uint64_t*)&cgen_var_85, 8);
1396     stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_85, (VkQueue*)pQueue, 1);
1397     stream->unsetHandleMapping();
1398     AEMU_SCOPED_TRACE("vkGetDeviceQueue returnUnmarshal");
1399     mImpl->log("finish vkGetDeviceQueue");;
1400 }
1401 
vkQueueSubmit(VkQueue queue,uint32_t submitCount,const VkSubmitInfo * pSubmits,VkFence fence)1402 VkResult VkEncoder::vkQueueSubmit(
1403     VkQueue queue,
1404     uint32_t submitCount,
1405     const VkSubmitInfo* pSubmits,
1406     VkFence fence)
1407 {
1408     AEMU_SCOPED_TRACE("vkQueueSubmit encode");
1409     mImpl->log("start vkQueueSubmit");
1410     auto stream = mImpl->stream();
1411     auto countingStream = mImpl->countingStream();
1412     auto resources = mImpl->resources();
1413     auto pool = mImpl->pool();
1414     stream->setHandleMapping(resources->unwrapMapping());
1415     VkQueue local_queue;
1416     uint32_t local_submitCount;
1417     VkSubmitInfo* local_pSubmits;
1418     VkFence local_fence;
1419     local_queue = queue;
1420     local_submitCount = submitCount;
1421     local_pSubmits = nullptr;
1422     if (pSubmits)
1423     {
1424         local_pSubmits = (VkSubmitInfo*)pool->alloc(((submitCount)) * sizeof(const VkSubmitInfo));
1425         for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1426         {
1427             deepcopy_VkSubmitInfo(pool, pSubmits + i, (VkSubmitInfo*)(local_pSubmits + i));
1428         }
1429     }
1430     local_fence = fence;
1431     if (local_pSubmits)
1432     {
1433         for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1434         {
1435             transform_tohost_VkSubmitInfo(mImpl->resources(), (VkSubmitInfo*)(local_pSubmits + i));
1436         }
1437     }
1438     countingStream->rewind();
1439     {
1440         uint64_t cgen_var_86;
1441         countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_86, 1);
1442         countingStream->write((uint64_t*)&cgen_var_86, 1 * 8);
1443         countingStream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
1444         for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1445         {
1446             marshal_VkSubmitInfo(countingStream, (VkSubmitInfo*)(local_pSubmits + i));
1447         }
1448         uint64_t cgen_var_87;
1449         countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_87, 1);
1450         countingStream->write((uint64_t*)&cgen_var_87, 1 * 8);
1451     }
1452     uint32_t packetSize_vkQueueSubmit = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1453     countingStream->rewind();
1454     uint32_t opcode_vkQueueSubmit = OP_vkQueueSubmit;
1455     stream->write(&opcode_vkQueueSubmit, sizeof(uint32_t));
1456     stream->write(&packetSize_vkQueueSubmit, sizeof(uint32_t));
1457     uint64_t cgen_var_88;
1458     stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_88, 1);
1459     stream->write((uint64_t*)&cgen_var_88, 1 * 8);
1460     stream->write((uint32_t*)&local_submitCount, sizeof(uint32_t));
1461     for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i)
1462     {
1463         marshal_VkSubmitInfo(stream, (VkSubmitInfo*)(local_pSubmits + i));
1464     }
1465     uint64_t cgen_var_89;
1466     stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_89, 1);
1467     stream->write((uint64_t*)&cgen_var_89, 1 * 8);
1468     AEMU_SCOPED_TRACE("vkQueueSubmit readParams");
1469     AEMU_SCOPED_TRACE("vkQueueSubmit returnUnmarshal");
1470     VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
1471     stream->read(&vkQueueSubmit_VkResult_return, sizeof(VkResult));
1472     countingStream->clearPool();
1473     stream->clearPool();
1474     pool->freeAll();
1475     mImpl->log("finish vkQueueSubmit");;
1476     return vkQueueSubmit_VkResult_return;
1477 }
1478 
vkQueueWaitIdle(VkQueue queue)1479 VkResult VkEncoder::vkQueueWaitIdle(
1480     VkQueue queue)
1481 {
1482     AEMU_SCOPED_TRACE("vkQueueWaitIdle encode");
1483     mImpl->log("start vkQueueWaitIdle");
1484     auto stream = mImpl->stream();
1485     auto countingStream = mImpl->countingStream();
1486     auto resources = mImpl->resources();
1487     auto pool = mImpl->pool();
1488     stream->setHandleMapping(resources->unwrapMapping());
1489     VkQueue local_queue;
1490     local_queue = queue;
1491     countingStream->rewind();
1492     {
1493         uint64_t cgen_var_90;
1494         countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_90, 1);
1495         countingStream->write((uint64_t*)&cgen_var_90, 1 * 8);
1496     }
1497     uint32_t packetSize_vkQueueWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1498     countingStream->rewind();
1499     uint32_t opcode_vkQueueWaitIdle = OP_vkQueueWaitIdle;
1500     stream->write(&opcode_vkQueueWaitIdle, sizeof(uint32_t));
1501     stream->write(&packetSize_vkQueueWaitIdle, sizeof(uint32_t));
1502     uint64_t cgen_var_91;
1503     stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_91, 1);
1504     stream->write((uint64_t*)&cgen_var_91, 1 * 8);
1505     AEMU_SCOPED_TRACE("vkQueueWaitIdle readParams");
1506     AEMU_SCOPED_TRACE("vkQueueWaitIdle returnUnmarshal");
1507     VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
1508     stream->read(&vkQueueWaitIdle_VkResult_return, sizeof(VkResult));
1509     countingStream->clearPool();
1510     stream->clearPool();
1511     pool->freeAll();
1512     mImpl->log("finish vkQueueWaitIdle");;
1513     return vkQueueWaitIdle_VkResult_return;
1514 }
1515 
vkDeviceWaitIdle(VkDevice device)1516 VkResult VkEncoder::vkDeviceWaitIdle(
1517     VkDevice device)
1518 {
1519     AEMU_SCOPED_TRACE("vkDeviceWaitIdle encode");
1520     mImpl->log("start vkDeviceWaitIdle");
1521     auto stream = mImpl->stream();
1522     auto countingStream = mImpl->countingStream();
1523     auto resources = mImpl->resources();
1524     auto pool = mImpl->pool();
1525     stream->setHandleMapping(resources->unwrapMapping());
1526     VkDevice local_device;
1527     local_device = device;
1528     countingStream->rewind();
1529     {
1530         uint64_t cgen_var_92;
1531         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_92, 1);
1532         countingStream->write((uint64_t*)&cgen_var_92, 1 * 8);
1533     }
1534     uint32_t packetSize_vkDeviceWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1535     countingStream->rewind();
1536     uint32_t opcode_vkDeviceWaitIdle = OP_vkDeviceWaitIdle;
1537     stream->write(&opcode_vkDeviceWaitIdle, sizeof(uint32_t));
1538     stream->write(&packetSize_vkDeviceWaitIdle, sizeof(uint32_t));
1539     uint64_t cgen_var_93;
1540     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_93, 1);
1541     stream->write((uint64_t*)&cgen_var_93, 1 * 8);
1542     AEMU_SCOPED_TRACE("vkDeviceWaitIdle readParams");
1543     AEMU_SCOPED_TRACE("vkDeviceWaitIdle returnUnmarshal");
1544     VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
1545     stream->read(&vkDeviceWaitIdle_VkResult_return, sizeof(VkResult));
1546     countingStream->clearPool();
1547     stream->clearPool();
1548     pool->freeAll();
1549     mImpl->log("finish vkDeviceWaitIdle");;
1550     return vkDeviceWaitIdle_VkResult_return;
1551 }
1552 
vkAllocateMemory(VkDevice device,const VkMemoryAllocateInfo * pAllocateInfo,const VkAllocationCallbacks * pAllocator,VkDeviceMemory * pMemory)1553 VkResult VkEncoder::vkAllocateMemory(
1554     VkDevice device,
1555     const VkMemoryAllocateInfo* pAllocateInfo,
1556     const VkAllocationCallbacks* pAllocator,
1557     VkDeviceMemory* pMemory)
1558 {
1559     AEMU_SCOPED_TRACE("vkAllocateMemory encode");
1560     mImpl->log("start vkAllocateMemory");
1561     auto stream = mImpl->stream();
1562     auto countingStream = mImpl->countingStream();
1563     auto resources = mImpl->resources();
1564     auto pool = mImpl->pool();
1565     stream->setHandleMapping(resources->unwrapMapping());
1566     VkDevice local_device;
1567     VkMemoryAllocateInfo* local_pAllocateInfo;
1568     VkAllocationCallbacks* local_pAllocator;
1569     local_device = device;
1570     local_pAllocateInfo = nullptr;
1571     if (pAllocateInfo)
1572     {
1573         local_pAllocateInfo = (VkMemoryAllocateInfo*)pool->alloc(sizeof(const VkMemoryAllocateInfo));
1574         deepcopy_VkMemoryAllocateInfo(pool, pAllocateInfo, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
1575     }
1576     local_pAllocator = nullptr;
1577     if (pAllocator)
1578     {
1579         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1580         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1581     }
1582     local_pAllocator = nullptr;
1583     if (local_pAllocateInfo)
1584     {
1585         transform_tohost_VkMemoryAllocateInfo(mImpl->resources(), (VkMemoryAllocateInfo*)(local_pAllocateInfo));
1586     }
1587     if (local_pAllocator)
1588     {
1589         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
1590     }
1591     countingStream->rewind();
1592     {
1593         uint64_t cgen_var_94;
1594         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_94, 1);
1595         countingStream->write((uint64_t*)&cgen_var_94, 1 * 8);
1596         marshal_VkMemoryAllocateInfo(countingStream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
1597         // WARNING PTR CHECK
1598         uint64_t cgen_var_95 = (uint64_t)(uintptr_t)local_pAllocator;
1599         countingStream->putBe64(cgen_var_95);
1600         if (local_pAllocator)
1601         {
1602             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
1603         }
1604         uint64_t cgen_var_96;
1605         countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_96, 1);
1606         countingStream->write((uint64_t*)&cgen_var_96, 8);
1607     }
1608     uint32_t packetSize_vkAllocateMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1609     countingStream->rewind();
1610     uint32_t opcode_vkAllocateMemory = OP_vkAllocateMemory;
1611     stream->write(&opcode_vkAllocateMemory, sizeof(uint32_t));
1612     stream->write(&packetSize_vkAllocateMemory, sizeof(uint32_t));
1613     uint64_t cgen_var_97;
1614     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_97, 1);
1615     stream->write((uint64_t*)&cgen_var_97, 1 * 8);
1616     marshal_VkMemoryAllocateInfo(stream, (VkMemoryAllocateInfo*)(local_pAllocateInfo));
1617     // WARNING PTR CHECK
1618     uint64_t cgen_var_98 = (uint64_t)(uintptr_t)local_pAllocator;
1619     stream->putBe64(cgen_var_98);
1620     if (local_pAllocator)
1621     {
1622         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
1623     }
1624     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
1625     uint64_t cgen_var_99;
1626     stream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_99, 1);
1627     stream->write((uint64_t*)&cgen_var_99, 8);
1628     stream->setHandleMapping(resources->unwrapMapping());
1629     AEMU_SCOPED_TRACE("vkAllocateMemory readParams");
1630     stream->setHandleMapping(resources->createMapping());
1631     uint64_t cgen_var_100;
1632     stream->read((uint64_t*)&cgen_var_100, 8);
1633     stream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_100, (VkDeviceMemory*)pMemory, 1);
1634     stream->unsetHandleMapping();
1635     AEMU_SCOPED_TRACE("vkAllocateMemory returnUnmarshal");
1636     VkResult vkAllocateMemory_VkResult_return = (VkResult)0;
1637     stream->read(&vkAllocateMemory_VkResult_return, sizeof(VkResult));
1638     countingStream->clearPool();
1639     stream->clearPool();
1640     pool->freeAll();
1641     mImpl->log("finish vkAllocateMemory");;
1642     return vkAllocateMemory_VkResult_return;
1643 }
1644 
vkFreeMemory(VkDevice device,VkDeviceMemory memory,const VkAllocationCallbacks * pAllocator)1645 void VkEncoder::vkFreeMemory(
1646     VkDevice device,
1647     VkDeviceMemory memory,
1648     const VkAllocationCallbacks* pAllocator)
1649 {
1650     AEMU_SCOPED_TRACE("vkFreeMemory encode");
1651     mImpl->log("start vkFreeMemory");
1652     auto stream = mImpl->stream();
1653     auto countingStream = mImpl->countingStream();
1654     auto resources = mImpl->resources();
1655     auto pool = mImpl->pool();
1656     stream->setHandleMapping(resources->unwrapMapping());
1657     VkDevice local_device;
1658     VkDeviceMemory local_memory;
1659     VkAllocationCallbacks* local_pAllocator;
1660     local_device = device;
1661     local_memory = memory;
1662     local_pAllocator = nullptr;
1663     if (pAllocator)
1664     {
1665         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
1666         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
1667     }
1668     local_pAllocator = nullptr;
1669     mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
1670     countingStream->rewind();
1671     {
1672         uint64_t cgen_var_101;
1673         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_101, 1);
1674         countingStream->write((uint64_t*)&cgen_var_101, 1 * 8);
1675         uint64_t cgen_var_102;
1676         countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_102, 1);
1677         countingStream->write((uint64_t*)&cgen_var_102, 1 * 8);
1678         // WARNING PTR CHECK
1679         uint64_t cgen_var_103 = (uint64_t)(uintptr_t)local_pAllocator;
1680         countingStream->putBe64(cgen_var_103);
1681         if (local_pAllocator)
1682         {
1683             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
1684         }
1685     }
1686     uint32_t packetSize_vkFreeMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1687     countingStream->rewind();
1688     uint32_t opcode_vkFreeMemory = OP_vkFreeMemory;
1689     stream->write(&opcode_vkFreeMemory, sizeof(uint32_t));
1690     stream->write(&packetSize_vkFreeMemory, sizeof(uint32_t));
1691     uint64_t cgen_var_104;
1692     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_104, 1);
1693     stream->write((uint64_t*)&cgen_var_104, 1 * 8);
1694     uint64_t cgen_var_105;
1695     stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_105, 1);
1696     stream->write((uint64_t*)&cgen_var_105, 1 * 8);
1697     // WARNING PTR CHECK
1698     uint64_t cgen_var_106 = (uint64_t)(uintptr_t)local_pAllocator;
1699     stream->putBe64(cgen_var_106);
1700     if (local_pAllocator)
1701     {
1702         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
1703     }
1704     AEMU_SCOPED_TRACE("vkFreeMemory readParams");
1705     AEMU_SCOPED_TRACE("vkFreeMemory returnUnmarshal");
1706     resources->destroyMapping()->mapHandles_VkDeviceMemory((VkDeviceMemory*)&memory);
1707     mImpl->log("finish vkFreeMemory");;
1708 }
1709 
vkMapMemory(VkDevice device,VkDeviceMemory memory,VkDeviceSize offset,VkDeviceSize size,VkMemoryMapFlags flags,void ** ppData)1710 VkResult VkEncoder::vkMapMemory(
1711     VkDevice device,
1712     VkDeviceMemory memory,
1713     VkDeviceSize offset,
1714     VkDeviceSize size,
1715     VkMemoryMapFlags flags,
1716     void** ppData)
1717 {
1718     AEMU_SCOPED_TRACE("vkMapMemory resourceEvent");
1719     VkResult vkMapMemory_VkResult_return = (VkResult)0;
1720     vkMapMemory_VkResult_return = mImpl->resources()->on_vkMapMemory(this, VK_SUCCESS, device, memory, offset, size, flags, ppData);
1721     mImpl->log("finish vkMapMemory");;
1722     return vkMapMemory_VkResult_return;
1723 }
1724 
vkUnmapMemory(VkDevice device,VkDeviceMemory memory)1725 void VkEncoder::vkUnmapMemory(
1726     VkDevice device,
1727     VkDeviceMemory memory)
1728 {
1729     AEMU_SCOPED_TRACE("vkUnmapMemory resourceEvent");
1730     mImpl->resources()->on_vkUnmapMemory(this, device, memory);
1731 }
1732 
vkFlushMappedMemoryRanges(VkDevice device,uint32_t memoryRangeCount,const VkMappedMemoryRange * pMemoryRanges)1733 VkResult VkEncoder::vkFlushMappedMemoryRanges(
1734     VkDevice device,
1735     uint32_t memoryRangeCount,
1736     const VkMappedMemoryRange* pMemoryRanges)
1737 {
1738     AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges encode");
1739     mImpl->log("start vkFlushMappedMemoryRanges");
1740     VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkFlushMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges));
1741     auto stream = mImpl->stream();
1742     auto countingStream = mImpl->countingStream();
1743     auto resources = mImpl->resources();
1744     auto pool = mImpl->pool();
1745     stream->setHandleMapping(resources->unwrapMapping());
1746     VkDevice local_device;
1747     uint32_t local_memoryRangeCount;
1748     VkMappedMemoryRange* local_pMemoryRanges;
1749     local_device = device;
1750     local_memoryRangeCount = memoryRangeCount;
1751     local_pMemoryRanges = nullptr;
1752     if (pMemoryRanges)
1753     {
1754         local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
1755         for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1756         {
1757             deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1758         }
1759     }
1760     if (local_pMemoryRanges)
1761     {
1762         for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1763         {
1764             transform_tohost_VkMappedMemoryRange(mImpl->resources(), (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1765         }
1766     }
1767     countingStream->rewind();
1768     {
1769         uint64_t cgen_var_107;
1770         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_107, 1);
1771         countingStream->write((uint64_t*)&cgen_var_107, 1 * 8);
1772         countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1773         for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1774         {
1775             marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1776         }
1777     }
1778     if (!resources->usingDirectMapping())
1779     {
1780         for (uint32_t i = 0; i < memoryRangeCount; ++i)
1781         {
1782             auto range = pMemoryRanges[i];
1783             auto memory = pMemoryRanges[i].memory;
1784             auto size = pMemoryRanges[i].size;
1785             auto offset = pMemoryRanges[i].offset;
1786             uint64_t streamSize = 0;
1787             if (!memory) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
1788             auto hostPtr = resources->getMappedPointer(memory);
1789             auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1790             if (!hostPtr) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; };
1791             streamSize = actualSize;
1792             countingStream->write(&streamSize, sizeof(uint64_t));
1793             uint8_t* targetRange = hostPtr + offset;
1794             countingStream->write(targetRange, actualSize);
1795         }
1796     }
1797     uint32_t packetSize_vkFlushMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1798     countingStream->rewind();
1799     uint32_t opcode_vkFlushMappedMemoryRanges = OP_vkFlushMappedMemoryRanges;
1800     stream->write(&opcode_vkFlushMappedMemoryRanges, sizeof(uint32_t));
1801     stream->write(&packetSize_vkFlushMappedMemoryRanges, sizeof(uint32_t));
1802     uint64_t cgen_var_108;
1803     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_108, 1);
1804     stream->write((uint64_t*)&cgen_var_108, 1 * 8);
1805     stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1806     for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1807     {
1808         marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1809     }
1810     if (!resources->usingDirectMapping())
1811     {
1812         for (uint32_t i = 0; i < memoryRangeCount; ++i)
1813         {
1814             auto range = pMemoryRanges[i];
1815             auto memory = pMemoryRanges[i].memory;
1816             auto size = pMemoryRanges[i].size;
1817             auto offset = pMemoryRanges[i].offset;
1818             uint64_t streamSize = 0;
1819             if (!memory) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
1820             auto hostPtr = resources->getMappedPointer(memory);
1821             auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1822             if (!hostPtr) { stream->write(&streamSize, sizeof(uint64_t)); continue; };
1823             streamSize = actualSize;
1824             stream->write(&streamSize, sizeof(uint64_t));
1825             uint8_t* targetRange = hostPtr + offset;
1826             stream->write(targetRange, actualSize);
1827         }
1828     }
1829     AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges readParams");
1830     AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges returnUnmarshal");
1831     VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
1832     stream->read(&vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult));
1833     countingStream->clearPool();
1834     stream->clearPool();
1835     pool->freeAll();
1836     mImpl->log("finish vkFlushMappedMemoryRanges");;
1837     return vkFlushMappedMemoryRanges_VkResult_return;
1838 }
1839 
vkInvalidateMappedMemoryRanges(VkDevice device,uint32_t memoryRangeCount,const VkMappedMemoryRange * pMemoryRanges)1840 VkResult VkEncoder::vkInvalidateMappedMemoryRanges(
1841     VkDevice device,
1842     uint32_t memoryRangeCount,
1843     const VkMappedMemoryRange* pMemoryRanges)
1844 {
1845     AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges encode");
1846     mImpl->log("start vkInvalidateMappedMemoryRanges");
1847     VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkInvalidateMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges));
1848     auto stream = mImpl->stream();
1849     auto countingStream = mImpl->countingStream();
1850     auto resources = mImpl->resources();
1851     auto pool = mImpl->pool();
1852     stream->setHandleMapping(resources->unwrapMapping());
1853     VkDevice local_device;
1854     uint32_t local_memoryRangeCount;
1855     VkMappedMemoryRange* local_pMemoryRanges;
1856     local_device = device;
1857     local_memoryRangeCount = memoryRangeCount;
1858     local_pMemoryRanges = nullptr;
1859     if (pMemoryRanges)
1860     {
1861         local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange));
1862         for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1863         {
1864             deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1865         }
1866     }
1867     if (local_pMemoryRanges)
1868     {
1869         for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1870         {
1871             transform_tohost_VkMappedMemoryRange(mImpl->resources(), (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1872         }
1873     }
1874     countingStream->rewind();
1875     {
1876         uint64_t cgen_var_109;
1877         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_109, 1);
1878         countingStream->write((uint64_t*)&cgen_var_109, 1 * 8);
1879         countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1880         for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1881         {
1882             marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1883         }
1884     }
1885     uint32_t packetSize_vkInvalidateMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1886     countingStream->rewind();
1887     uint32_t opcode_vkInvalidateMappedMemoryRanges = OP_vkInvalidateMappedMemoryRanges;
1888     stream->write(&opcode_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
1889     stream->write(&packetSize_vkInvalidateMappedMemoryRanges, sizeof(uint32_t));
1890     uint64_t cgen_var_110;
1891     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_110, 1);
1892     stream->write((uint64_t*)&cgen_var_110, 1 * 8);
1893     stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t));
1894     for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i)
1895     {
1896         marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i));
1897     }
1898     AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges readParams");
1899     AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges returnUnmarshal");
1900     VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
1901     stream->read(&vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult));
1902     countingStream->clearPool();
1903     stream->clearPool();
1904     pool->freeAll();
1905     if (!resources->usingDirectMapping())
1906     {
1907         for (uint32_t i = 0; i < memoryRangeCount; ++i)
1908         {
1909             auto range = pMemoryRanges[i];
1910             auto memory = pMemoryRanges[i].memory;
1911             auto size = pMemoryRanges[i].size;
1912             auto offset = pMemoryRanges[i].offset;
1913             uint64_t streamSize = 0;
1914             if (!memory) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
1915             auto hostPtr = resources->getMappedPointer(memory);
1916             auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size;
1917             if (!hostPtr) { stream->read(&streamSize, sizeof(uint64_t)); continue; };
1918             streamSize = actualSize;
1919             stream->read(&streamSize, sizeof(uint64_t));
1920             uint8_t* targetRange = hostPtr + offset;
1921             stream->read(targetRange, actualSize);
1922         }
1923     }
1924     mImpl->log("finish vkInvalidateMappedMemoryRanges");;
1925     return vkInvalidateMappedMemoryRanges_VkResult_return;
1926 }
1927 
vkGetDeviceMemoryCommitment(VkDevice device,VkDeviceMemory memory,VkDeviceSize * pCommittedMemoryInBytes)1928 void VkEncoder::vkGetDeviceMemoryCommitment(
1929     VkDevice device,
1930     VkDeviceMemory memory,
1931     VkDeviceSize* pCommittedMemoryInBytes)
1932 {
1933     AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment encode");
1934     mImpl->log("start vkGetDeviceMemoryCommitment");
1935     auto stream = mImpl->stream();
1936     auto countingStream = mImpl->countingStream();
1937     auto resources = mImpl->resources();
1938     auto pool = mImpl->pool();
1939     stream->setHandleMapping(resources->unwrapMapping());
1940     VkDevice local_device;
1941     VkDeviceMemory local_memory;
1942     local_device = device;
1943     local_memory = memory;
1944     mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
1945     countingStream->rewind();
1946     {
1947         uint64_t cgen_var_111;
1948         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_111, 1);
1949         countingStream->write((uint64_t*)&cgen_var_111, 1 * 8);
1950         uint64_t cgen_var_112;
1951         countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_112, 1);
1952         countingStream->write((uint64_t*)&cgen_var_112, 1 * 8);
1953         countingStream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1954     }
1955     uint32_t packetSize_vkGetDeviceMemoryCommitment = 4 + 4 + (uint32_t)countingStream->bytesWritten();
1956     countingStream->rewind();
1957     uint32_t opcode_vkGetDeviceMemoryCommitment = OP_vkGetDeviceMemoryCommitment;
1958     stream->write(&opcode_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
1959     stream->write(&packetSize_vkGetDeviceMemoryCommitment, sizeof(uint32_t));
1960     uint64_t cgen_var_113;
1961     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_113, 1);
1962     stream->write((uint64_t*)&cgen_var_113, 1 * 8);
1963     uint64_t cgen_var_114;
1964     stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_114, 1);
1965     stream->write((uint64_t*)&cgen_var_114, 1 * 8);
1966     stream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1967     AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment readParams");
1968     stream->read((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize));
1969     AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment returnUnmarshal");
1970     mImpl->log("finish vkGetDeviceMemoryCommitment");;
1971 }
1972 
vkBindBufferMemory(VkDevice device,VkBuffer buffer,VkDeviceMemory memory,VkDeviceSize memoryOffset)1973 VkResult VkEncoder::vkBindBufferMemory(
1974     VkDevice device,
1975     VkBuffer buffer,
1976     VkDeviceMemory memory,
1977     VkDeviceSize memoryOffset)
1978 {
1979     AEMU_SCOPED_TRACE("vkBindBufferMemory encode");
1980     mImpl->log("start vkBindBufferMemory");
1981     auto stream = mImpl->stream();
1982     auto countingStream = mImpl->countingStream();
1983     auto resources = mImpl->resources();
1984     auto pool = mImpl->pool();
1985     stream->setHandleMapping(resources->unwrapMapping());
1986     VkDevice local_device;
1987     VkBuffer local_buffer;
1988     VkDeviceMemory local_memory;
1989     VkDeviceSize local_memoryOffset;
1990     local_device = device;
1991     local_buffer = buffer;
1992     local_memory = memory;
1993     local_memoryOffset = memoryOffset;
1994     mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)&local_memoryOffset, 1, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
1995     countingStream->rewind();
1996     {
1997         uint64_t cgen_var_115;
1998         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_115, 1);
1999         countingStream->write((uint64_t*)&cgen_var_115, 1 * 8);
2000         uint64_t cgen_var_116;
2001         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_116, 1);
2002         countingStream->write((uint64_t*)&cgen_var_116, 1 * 8);
2003         uint64_t cgen_var_117;
2004         countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_117, 1);
2005         countingStream->write((uint64_t*)&cgen_var_117, 1 * 8);
2006         countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
2007     }
2008     uint32_t packetSize_vkBindBufferMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2009     countingStream->rewind();
2010     uint32_t opcode_vkBindBufferMemory = OP_vkBindBufferMemory;
2011     stream->write(&opcode_vkBindBufferMemory, sizeof(uint32_t));
2012     stream->write(&packetSize_vkBindBufferMemory, sizeof(uint32_t));
2013     uint64_t cgen_var_118;
2014     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_118, 1);
2015     stream->write((uint64_t*)&cgen_var_118, 1 * 8);
2016     uint64_t cgen_var_119;
2017     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_119, 1);
2018     stream->write((uint64_t*)&cgen_var_119, 1 * 8);
2019     uint64_t cgen_var_120;
2020     stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_120, 1);
2021     stream->write((uint64_t*)&cgen_var_120, 1 * 8);
2022     stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
2023     AEMU_SCOPED_TRACE("vkBindBufferMemory readParams");
2024     AEMU_SCOPED_TRACE("vkBindBufferMemory returnUnmarshal");
2025     VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
2026     stream->read(&vkBindBufferMemory_VkResult_return, sizeof(VkResult));
2027     countingStream->clearPool();
2028     stream->clearPool();
2029     pool->freeAll();
2030     mImpl->log("finish vkBindBufferMemory");;
2031     return vkBindBufferMemory_VkResult_return;
2032 }
2033 
vkBindImageMemory(VkDevice device,VkImage image,VkDeviceMemory memory,VkDeviceSize memoryOffset)2034 VkResult VkEncoder::vkBindImageMemory(
2035     VkDevice device,
2036     VkImage image,
2037     VkDeviceMemory memory,
2038     VkDeviceSize memoryOffset)
2039 {
2040     AEMU_SCOPED_TRACE("vkBindImageMemory encode");
2041     mImpl->log("start vkBindImageMemory");
2042     auto stream = mImpl->stream();
2043     auto countingStream = mImpl->countingStream();
2044     auto resources = mImpl->resources();
2045     auto pool = mImpl->pool();
2046     stream->setHandleMapping(resources->unwrapMapping());
2047     VkDevice local_device;
2048     VkImage local_image;
2049     VkDeviceMemory local_memory;
2050     VkDeviceSize local_memoryOffset;
2051     local_device = device;
2052     local_image = image;
2053     local_memory = memory;
2054     local_memoryOffset = memoryOffset;
2055     mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)&local_memoryOffset, 1, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
2056     countingStream->rewind();
2057     {
2058         uint64_t cgen_var_121;
2059         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_121, 1);
2060         countingStream->write((uint64_t*)&cgen_var_121, 1 * 8);
2061         uint64_t cgen_var_122;
2062         countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_122, 1);
2063         countingStream->write((uint64_t*)&cgen_var_122, 1 * 8);
2064         uint64_t cgen_var_123;
2065         countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_123, 1);
2066         countingStream->write((uint64_t*)&cgen_var_123, 1 * 8);
2067         countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
2068     }
2069     uint32_t packetSize_vkBindImageMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2070     countingStream->rewind();
2071     uint32_t opcode_vkBindImageMemory = OP_vkBindImageMemory;
2072     stream->write(&opcode_vkBindImageMemory, sizeof(uint32_t));
2073     stream->write(&packetSize_vkBindImageMemory, sizeof(uint32_t));
2074     uint64_t cgen_var_124;
2075     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_124, 1);
2076     stream->write((uint64_t*)&cgen_var_124, 1 * 8);
2077     uint64_t cgen_var_125;
2078     stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_125, 1);
2079     stream->write((uint64_t*)&cgen_var_125, 1 * 8);
2080     uint64_t cgen_var_126;
2081     stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_126, 1);
2082     stream->write((uint64_t*)&cgen_var_126, 1 * 8);
2083     stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize));
2084     AEMU_SCOPED_TRACE("vkBindImageMemory readParams");
2085     AEMU_SCOPED_TRACE("vkBindImageMemory returnUnmarshal");
2086     VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
2087     stream->read(&vkBindImageMemory_VkResult_return, sizeof(VkResult));
2088     countingStream->clearPool();
2089     stream->clearPool();
2090     pool->freeAll();
2091     mImpl->log("finish vkBindImageMemory");;
2092     return vkBindImageMemory_VkResult_return;
2093 }
2094 
vkGetBufferMemoryRequirements(VkDevice device,VkBuffer buffer,VkMemoryRequirements * pMemoryRequirements)2095 void VkEncoder::vkGetBufferMemoryRequirements(
2096     VkDevice device,
2097     VkBuffer buffer,
2098     VkMemoryRequirements* pMemoryRequirements)
2099 {
2100     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements encode");
2101     mImpl->log("start vkGetBufferMemoryRequirements");
2102     auto stream = mImpl->stream();
2103     auto countingStream = mImpl->countingStream();
2104     auto resources = mImpl->resources();
2105     auto pool = mImpl->pool();
2106     stream->setHandleMapping(resources->unwrapMapping());
2107     VkDevice local_device;
2108     VkBuffer local_buffer;
2109     local_device = device;
2110     local_buffer = buffer;
2111     countingStream->rewind();
2112     {
2113         uint64_t cgen_var_127;
2114         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_127, 1);
2115         countingStream->write((uint64_t*)&cgen_var_127, 1 * 8);
2116         uint64_t cgen_var_128;
2117         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_128, 1);
2118         countingStream->write((uint64_t*)&cgen_var_128, 1 * 8);
2119         marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
2120     }
2121     uint32_t packetSize_vkGetBufferMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2122     countingStream->rewind();
2123     uint32_t opcode_vkGetBufferMemoryRequirements = OP_vkGetBufferMemoryRequirements;
2124     stream->write(&opcode_vkGetBufferMemoryRequirements, sizeof(uint32_t));
2125     stream->write(&packetSize_vkGetBufferMemoryRequirements, sizeof(uint32_t));
2126     uint64_t cgen_var_129;
2127     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_129, 1);
2128     stream->write((uint64_t*)&cgen_var_129, 1 * 8);
2129     uint64_t cgen_var_130;
2130     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_130, 1);
2131     stream->write((uint64_t*)&cgen_var_130, 1 * 8);
2132     marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
2133     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements readParams");
2134     unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
2135     if (pMemoryRequirements)
2136     {
2137         transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements));
2138     }
2139     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements returnUnmarshal");
2140     mImpl->log("finish vkGetBufferMemoryRequirements");;
2141 }
2142 
vkGetImageMemoryRequirements(VkDevice device,VkImage image,VkMemoryRequirements * pMemoryRequirements)2143 void VkEncoder::vkGetImageMemoryRequirements(
2144     VkDevice device,
2145     VkImage image,
2146     VkMemoryRequirements* pMemoryRequirements)
2147 {
2148     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements encode");
2149     mImpl->log("start vkGetImageMemoryRequirements");
2150     auto stream = mImpl->stream();
2151     auto countingStream = mImpl->countingStream();
2152     auto resources = mImpl->resources();
2153     auto pool = mImpl->pool();
2154     stream->setHandleMapping(resources->unwrapMapping());
2155     VkDevice local_device;
2156     VkImage local_image;
2157     local_device = device;
2158     local_image = image;
2159     countingStream->rewind();
2160     {
2161         uint64_t cgen_var_131;
2162         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_131, 1);
2163         countingStream->write((uint64_t*)&cgen_var_131, 1 * 8);
2164         uint64_t cgen_var_132;
2165         countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_132, 1);
2166         countingStream->write((uint64_t*)&cgen_var_132, 1 * 8);
2167         marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements));
2168     }
2169     uint32_t packetSize_vkGetImageMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2170     countingStream->rewind();
2171     uint32_t opcode_vkGetImageMemoryRequirements = OP_vkGetImageMemoryRequirements;
2172     stream->write(&opcode_vkGetImageMemoryRequirements, sizeof(uint32_t));
2173     stream->write(&packetSize_vkGetImageMemoryRequirements, sizeof(uint32_t));
2174     uint64_t cgen_var_133;
2175     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_133, 1);
2176     stream->write((uint64_t*)&cgen_var_133, 1 * 8);
2177     uint64_t cgen_var_134;
2178     stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_134, 1);
2179     stream->write((uint64_t*)&cgen_var_134, 1 * 8);
2180     marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
2181     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements readParams");
2182     unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements));
2183     if (pMemoryRequirements)
2184     {
2185         transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements));
2186     }
2187     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements returnUnmarshal");
2188     mImpl->log("finish vkGetImageMemoryRequirements");;
2189 }
2190 
vkGetImageSparseMemoryRequirements(VkDevice device,VkImage image,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements * pSparseMemoryRequirements)2191 void VkEncoder::vkGetImageSparseMemoryRequirements(
2192     VkDevice device,
2193     VkImage image,
2194     uint32_t* pSparseMemoryRequirementCount,
2195     VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
2196 {
2197     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements encode");
2198     mImpl->log("start vkGetImageSparseMemoryRequirements");
2199     auto stream = mImpl->stream();
2200     auto countingStream = mImpl->countingStream();
2201     auto resources = mImpl->resources();
2202     auto pool = mImpl->pool();
2203     stream->setHandleMapping(resources->unwrapMapping());
2204     VkDevice local_device;
2205     VkImage local_image;
2206     local_device = device;
2207     local_image = image;
2208     countingStream->rewind();
2209     {
2210         uint64_t cgen_var_135;
2211         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_135, 1);
2212         countingStream->write((uint64_t*)&cgen_var_135, 1 * 8);
2213         uint64_t cgen_var_136;
2214         countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_136, 1);
2215         countingStream->write((uint64_t*)&cgen_var_136, 1 * 8);
2216         // WARNING PTR CHECK
2217         uint64_t cgen_var_137 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
2218         countingStream->putBe64(cgen_var_137);
2219         if (pSparseMemoryRequirementCount)
2220         {
2221             countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
2222         }
2223         // WARNING PTR CHECK
2224         uint64_t cgen_var_138 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
2225         countingStream->putBe64(cgen_var_138);
2226         if (pSparseMemoryRequirements)
2227         {
2228             for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2229             {
2230                 marshal_VkSparseImageMemoryRequirements(countingStream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2231             }
2232         }
2233     }
2234     uint32_t packetSize_vkGetImageSparseMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2235     countingStream->rewind();
2236     uint32_t opcode_vkGetImageSparseMemoryRequirements = OP_vkGetImageSparseMemoryRequirements;
2237     stream->write(&opcode_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
2238     stream->write(&packetSize_vkGetImageSparseMemoryRequirements, sizeof(uint32_t));
2239     uint64_t cgen_var_139;
2240     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_139, 1);
2241     stream->write((uint64_t*)&cgen_var_139, 1 * 8);
2242     uint64_t cgen_var_140;
2243     stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_140, 1);
2244     stream->write((uint64_t*)&cgen_var_140, 1 * 8);
2245     // WARNING PTR CHECK
2246     uint64_t cgen_var_141 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
2247     stream->putBe64(cgen_var_141);
2248     if (pSparseMemoryRequirementCount)
2249     {
2250         stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
2251     }
2252     // WARNING PTR CHECK
2253     uint64_t cgen_var_142 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
2254     stream->putBe64(cgen_var_142);
2255     if (pSparseMemoryRequirements)
2256     {
2257         for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2258         {
2259             marshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2260         }
2261     }
2262     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements readParams");
2263     // WARNING PTR CHECK
2264     uint32_t* check_pSparseMemoryRequirementCount;
2265     check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
2266     if (pSparseMemoryRequirementCount)
2267     {
2268         if (!(check_pSparseMemoryRequirementCount))
2269         {
2270             fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
2271         }
2272         stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
2273     }
2274     // WARNING PTR CHECK
2275     VkSparseImageMemoryRequirements* check_pSparseMemoryRequirements;
2276     check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements*)(uintptr_t)stream->getBe64();
2277     if (pSparseMemoryRequirements)
2278     {
2279         if (!(check_pSparseMemoryRequirements))
2280         {
2281             fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
2282         }
2283         for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2284         {
2285             unmarshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2286         }
2287     }
2288     if (pSparseMemoryRequirements)
2289     {
2290         for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
2291         {
2292             transform_fromhost_VkSparseImageMemoryRequirements(mImpl->resources(), (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i));
2293         }
2294     }
2295     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements returnUnmarshal");
2296     mImpl->log("finish vkGetImageSparseMemoryRequirements");;
2297 }
2298 
vkGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkSampleCountFlagBits samples,VkImageUsageFlags usage,VkImageTiling tiling,uint32_t * pPropertyCount,VkSparseImageFormatProperties * pProperties)2299 void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties(
2300     VkPhysicalDevice physicalDevice,
2301     VkFormat format,
2302     VkImageType type,
2303     VkSampleCountFlagBits samples,
2304     VkImageUsageFlags usage,
2305     VkImageTiling tiling,
2306     uint32_t* pPropertyCount,
2307     VkSparseImageFormatProperties* pProperties)
2308 {
2309     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties encode");
2310     mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties");
2311     auto stream = mImpl->stream();
2312     auto countingStream = mImpl->countingStream();
2313     auto resources = mImpl->resources();
2314     auto pool = mImpl->pool();
2315     stream->setHandleMapping(resources->unwrapMapping());
2316     VkPhysicalDevice local_physicalDevice;
2317     VkFormat local_format;
2318     VkImageType local_type;
2319     VkSampleCountFlagBits local_samples;
2320     VkImageUsageFlags local_usage;
2321     VkImageTiling local_tiling;
2322     local_physicalDevice = physicalDevice;
2323     local_format = format;
2324     local_type = type;
2325     local_samples = samples;
2326     local_usage = usage;
2327     local_tiling = tiling;
2328     countingStream->rewind();
2329     {
2330         uint64_t cgen_var_145;
2331         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_145, 1);
2332         countingStream->write((uint64_t*)&cgen_var_145, 1 * 8);
2333         countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
2334         countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
2335         countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
2336         countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
2337         countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
2338         // WARNING PTR CHECK
2339         uint64_t cgen_var_146 = (uint64_t)(uintptr_t)pPropertyCount;
2340         countingStream->putBe64(cgen_var_146);
2341         if (pPropertyCount)
2342         {
2343             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
2344         }
2345         // WARNING PTR CHECK
2346         uint64_t cgen_var_147 = (uint64_t)(uintptr_t)pProperties;
2347         countingStream->putBe64(cgen_var_147);
2348         if (pProperties)
2349         {
2350             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2351             {
2352                 marshal_VkSparseImageFormatProperties(countingStream, (VkSparseImageFormatProperties*)(pProperties + i));
2353             }
2354         }
2355     }
2356     uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2357     countingStream->rewind();
2358     uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties = OP_vkGetPhysicalDeviceSparseImageFormatProperties;
2359     stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
2360     stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t));
2361     uint64_t cgen_var_148;
2362     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_148, 1);
2363     stream->write((uint64_t*)&cgen_var_148, 1 * 8);
2364     stream->write((VkFormat*)&local_format, sizeof(VkFormat));
2365     stream->write((VkImageType*)&local_type, sizeof(VkImageType));
2366     stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
2367     stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
2368     stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
2369     // WARNING PTR CHECK
2370     uint64_t cgen_var_149 = (uint64_t)(uintptr_t)pPropertyCount;
2371     stream->putBe64(cgen_var_149);
2372     if (pPropertyCount)
2373     {
2374         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
2375     }
2376     // WARNING PTR CHECK
2377     uint64_t cgen_var_150 = (uint64_t)(uintptr_t)pProperties;
2378     stream->putBe64(cgen_var_150);
2379     if (pProperties)
2380     {
2381         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2382         {
2383             marshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
2384         }
2385     }
2386     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties readParams");
2387     // WARNING PTR CHECK
2388     uint32_t* check_pPropertyCount;
2389     check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
2390     if (pPropertyCount)
2391     {
2392         if (!(check_pPropertyCount))
2393         {
2394             fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
2395         }
2396         stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
2397     }
2398     // WARNING PTR CHECK
2399     VkSparseImageFormatProperties* check_pProperties;
2400     check_pProperties = (VkSparseImageFormatProperties*)(uintptr_t)stream->getBe64();
2401     if (pProperties)
2402     {
2403         if (!(check_pProperties))
2404         {
2405             fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
2406         }
2407         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2408         {
2409             unmarshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i));
2410         }
2411     }
2412     if (pProperties)
2413     {
2414         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
2415         {
2416             transform_fromhost_VkSparseImageFormatProperties(mImpl->resources(), (VkSparseImageFormatProperties*)(pProperties + i));
2417         }
2418     }
2419     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties returnUnmarshal");
2420     mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties");;
2421 }
2422 
vkQueueBindSparse(VkQueue queue,uint32_t bindInfoCount,const VkBindSparseInfo * pBindInfo,VkFence fence)2423 VkResult VkEncoder::vkQueueBindSparse(
2424     VkQueue queue,
2425     uint32_t bindInfoCount,
2426     const VkBindSparseInfo* pBindInfo,
2427     VkFence fence)
2428 {
2429     AEMU_SCOPED_TRACE("vkQueueBindSparse encode");
2430     mImpl->log("start vkQueueBindSparse");
2431     auto stream = mImpl->stream();
2432     auto countingStream = mImpl->countingStream();
2433     auto resources = mImpl->resources();
2434     auto pool = mImpl->pool();
2435     stream->setHandleMapping(resources->unwrapMapping());
2436     VkQueue local_queue;
2437     uint32_t local_bindInfoCount;
2438     VkBindSparseInfo* local_pBindInfo;
2439     VkFence local_fence;
2440     local_queue = queue;
2441     local_bindInfoCount = bindInfoCount;
2442     local_pBindInfo = nullptr;
2443     if (pBindInfo)
2444     {
2445         local_pBindInfo = (VkBindSparseInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindSparseInfo));
2446         for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2447         {
2448             deepcopy_VkBindSparseInfo(pool, pBindInfo + i, (VkBindSparseInfo*)(local_pBindInfo + i));
2449         }
2450     }
2451     local_fence = fence;
2452     if (local_pBindInfo)
2453     {
2454         for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2455         {
2456             transform_tohost_VkBindSparseInfo(mImpl->resources(), (VkBindSparseInfo*)(local_pBindInfo + i));
2457         }
2458     }
2459     countingStream->rewind();
2460     {
2461         uint64_t cgen_var_153;
2462         countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_153, 1);
2463         countingStream->write((uint64_t*)&cgen_var_153, 1 * 8);
2464         countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
2465         for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2466         {
2467             marshal_VkBindSparseInfo(countingStream, (VkBindSparseInfo*)(local_pBindInfo + i));
2468         }
2469         uint64_t cgen_var_154;
2470         countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_154, 1);
2471         countingStream->write((uint64_t*)&cgen_var_154, 1 * 8);
2472     }
2473     uint32_t packetSize_vkQueueBindSparse = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2474     countingStream->rewind();
2475     uint32_t opcode_vkQueueBindSparse = OP_vkQueueBindSparse;
2476     stream->write(&opcode_vkQueueBindSparse, sizeof(uint32_t));
2477     stream->write(&packetSize_vkQueueBindSparse, sizeof(uint32_t));
2478     uint64_t cgen_var_155;
2479     stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_155, 1);
2480     stream->write((uint64_t*)&cgen_var_155, 1 * 8);
2481     stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
2482     for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
2483     {
2484         marshal_VkBindSparseInfo(stream, (VkBindSparseInfo*)(local_pBindInfo + i));
2485     }
2486     uint64_t cgen_var_156;
2487     stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_156, 1);
2488     stream->write((uint64_t*)&cgen_var_156, 1 * 8);
2489     AEMU_SCOPED_TRACE("vkQueueBindSparse readParams");
2490     AEMU_SCOPED_TRACE("vkQueueBindSparse returnUnmarshal");
2491     VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
2492     stream->read(&vkQueueBindSparse_VkResult_return, sizeof(VkResult));
2493     countingStream->clearPool();
2494     stream->clearPool();
2495     pool->freeAll();
2496     mImpl->log("finish vkQueueBindSparse");;
2497     return vkQueueBindSparse_VkResult_return;
2498 }
2499 
vkCreateFence(VkDevice device,const VkFenceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)2500 VkResult VkEncoder::vkCreateFence(
2501     VkDevice device,
2502     const VkFenceCreateInfo* pCreateInfo,
2503     const VkAllocationCallbacks* pAllocator,
2504     VkFence* pFence)
2505 {
2506     AEMU_SCOPED_TRACE("vkCreateFence encode");
2507     mImpl->log("start vkCreateFence");
2508     auto stream = mImpl->stream();
2509     auto countingStream = mImpl->countingStream();
2510     auto resources = mImpl->resources();
2511     auto pool = mImpl->pool();
2512     stream->setHandleMapping(resources->unwrapMapping());
2513     VkDevice local_device;
2514     VkFenceCreateInfo* local_pCreateInfo;
2515     VkAllocationCallbacks* local_pAllocator;
2516     local_device = device;
2517     local_pCreateInfo = nullptr;
2518     if (pCreateInfo)
2519     {
2520         local_pCreateInfo = (VkFenceCreateInfo*)pool->alloc(sizeof(const VkFenceCreateInfo));
2521         deepcopy_VkFenceCreateInfo(pool, pCreateInfo, (VkFenceCreateInfo*)(local_pCreateInfo));
2522     }
2523     local_pAllocator = nullptr;
2524     if (pAllocator)
2525     {
2526         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2527         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2528     }
2529     local_pAllocator = nullptr;
2530     if (local_pCreateInfo)
2531     {
2532         transform_tohost_VkFenceCreateInfo(mImpl->resources(), (VkFenceCreateInfo*)(local_pCreateInfo));
2533     }
2534     if (local_pAllocator)
2535     {
2536         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
2537     }
2538     countingStream->rewind();
2539     {
2540         uint64_t cgen_var_157;
2541         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_157, 1);
2542         countingStream->write((uint64_t*)&cgen_var_157, 1 * 8);
2543         marshal_VkFenceCreateInfo(countingStream, (VkFenceCreateInfo*)(local_pCreateInfo));
2544         // WARNING PTR CHECK
2545         uint64_t cgen_var_158 = (uint64_t)(uintptr_t)local_pAllocator;
2546         countingStream->putBe64(cgen_var_158);
2547         if (local_pAllocator)
2548         {
2549             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
2550         }
2551         uint64_t cgen_var_159;
2552         countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_159, 1);
2553         countingStream->write((uint64_t*)&cgen_var_159, 8);
2554     }
2555     uint32_t packetSize_vkCreateFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2556     countingStream->rewind();
2557     uint32_t opcode_vkCreateFence = OP_vkCreateFence;
2558     stream->write(&opcode_vkCreateFence, sizeof(uint32_t));
2559     stream->write(&packetSize_vkCreateFence, sizeof(uint32_t));
2560     uint64_t cgen_var_160;
2561     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_160, 1);
2562     stream->write((uint64_t*)&cgen_var_160, 1 * 8);
2563     marshal_VkFenceCreateInfo(stream, (VkFenceCreateInfo*)(local_pCreateInfo));
2564     // WARNING PTR CHECK
2565     uint64_t cgen_var_161 = (uint64_t)(uintptr_t)local_pAllocator;
2566     stream->putBe64(cgen_var_161);
2567     if (local_pAllocator)
2568     {
2569         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
2570     }
2571     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
2572     uint64_t cgen_var_162;
2573     stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_162, 1);
2574     stream->write((uint64_t*)&cgen_var_162, 8);
2575     stream->setHandleMapping(resources->unwrapMapping());
2576     AEMU_SCOPED_TRACE("vkCreateFence readParams");
2577     stream->setHandleMapping(resources->createMapping());
2578     uint64_t cgen_var_163;
2579     stream->read((uint64_t*)&cgen_var_163, 8);
2580     stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_163, (VkFence*)pFence, 1);
2581     stream->unsetHandleMapping();
2582     AEMU_SCOPED_TRACE("vkCreateFence returnUnmarshal");
2583     VkResult vkCreateFence_VkResult_return = (VkResult)0;
2584     stream->read(&vkCreateFence_VkResult_return, sizeof(VkResult));
2585     countingStream->clearPool();
2586     stream->clearPool();
2587     pool->freeAll();
2588     mImpl->log("finish vkCreateFence");;
2589     return vkCreateFence_VkResult_return;
2590 }
2591 
vkDestroyFence(VkDevice device,VkFence fence,const VkAllocationCallbacks * pAllocator)2592 void VkEncoder::vkDestroyFence(
2593     VkDevice device,
2594     VkFence fence,
2595     const VkAllocationCallbacks* pAllocator)
2596 {
2597     AEMU_SCOPED_TRACE("vkDestroyFence encode");
2598     mImpl->log("start vkDestroyFence");
2599     auto stream = mImpl->stream();
2600     auto countingStream = mImpl->countingStream();
2601     auto resources = mImpl->resources();
2602     auto pool = mImpl->pool();
2603     stream->setHandleMapping(resources->unwrapMapping());
2604     VkDevice local_device;
2605     VkFence local_fence;
2606     VkAllocationCallbacks* local_pAllocator;
2607     local_device = device;
2608     local_fence = fence;
2609     local_pAllocator = nullptr;
2610     if (pAllocator)
2611     {
2612         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2613         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2614     }
2615     local_pAllocator = nullptr;
2616     if (local_pAllocator)
2617     {
2618         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
2619     }
2620     countingStream->rewind();
2621     {
2622         uint64_t cgen_var_164;
2623         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_164, 1);
2624         countingStream->write((uint64_t*)&cgen_var_164, 1 * 8);
2625         uint64_t cgen_var_165;
2626         countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_165, 1);
2627         countingStream->write((uint64_t*)&cgen_var_165, 1 * 8);
2628         // WARNING PTR CHECK
2629         uint64_t cgen_var_166 = (uint64_t)(uintptr_t)local_pAllocator;
2630         countingStream->putBe64(cgen_var_166);
2631         if (local_pAllocator)
2632         {
2633             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
2634         }
2635     }
2636     uint32_t packetSize_vkDestroyFence = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2637     countingStream->rewind();
2638     uint32_t opcode_vkDestroyFence = OP_vkDestroyFence;
2639     stream->write(&opcode_vkDestroyFence, sizeof(uint32_t));
2640     stream->write(&packetSize_vkDestroyFence, sizeof(uint32_t));
2641     uint64_t cgen_var_167;
2642     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_167, 1);
2643     stream->write((uint64_t*)&cgen_var_167, 1 * 8);
2644     uint64_t cgen_var_168;
2645     stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_168, 1);
2646     stream->write((uint64_t*)&cgen_var_168, 1 * 8);
2647     // WARNING PTR CHECK
2648     uint64_t cgen_var_169 = (uint64_t)(uintptr_t)local_pAllocator;
2649     stream->putBe64(cgen_var_169);
2650     if (local_pAllocator)
2651     {
2652         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
2653     }
2654     AEMU_SCOPED_TRACE("vkDestroyFence readParams");
2655     AEMU_SCOPED_TRACE("vkDestroyFence returnUnmarshal");
2656     resources->destroyMapping()->mapHandles_VkFence((VkFence*)&fence);
2657     mImpl->log("finish vkDestroyFence");;
2658 }
2659 
vkResetFences(VkDevice device,uint32_t fenceCount,const VkFence * pFences)2660 VkResult VkEncoder::vkResetFences(
2661     VkDevice device,
2662     uint32_t fenceCount,
2663     const VkFence* pFences)
2664 {
2665     AEMU_SCOPED_TRACE("vkResetFences encode");
2666     mImpl->log("start vkResetFences");
2667     auto stream = mImpl->stream();
2668     auto countingStream = mImpl->countingStream();
2669     auto resources = mImpl->resources();
2670     auto pool = mImpl->pool();
2671     stream->setHandleMapping(resources->unwrapMapping());
2672     VkDevice local_device;
2673     uint32_t local_fenceCount;
2674     VkFence* local_pFences;
2675     local_device = device;
2676     local_fenceCount = fenceCount;
2677     local_pFences = nullptr;
2678     if (pFences)
2679     {
2680         local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2681     }
2682     countingStream->rewind();
2683     {
2684         uint64_t cgen_var_170;
2685         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_170, 1);
2686         countingStream->write((uint64_t*)&cgen_var_170, 1 * 8);
2687         countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
2688         if (((fenceCount)))
2689         {
2690             uint64_t* cgen_var_171;
2691             countingStream->alloc((void**)&cgen_var_171, ((fenceCount)) * 8);
2692             countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_171, ((fenceCount)));
2693             countingStream->write((uint64_t*)cgen_var_171, ((fenceCount)) * 8);
2694         }
2695     }
2696     uint32_t packetSize_vkResetFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2697     countingStream->rewind();
2698     uint32_t opcode_vkResetFences = OP_vkResetFences;
2699     stream->write(&opcode_vkResetFences, sizeof(uint32_t));
2700     stream->write(&packetSize_vkResetFences, sizeof(uint32_t));
2701     uint64_t cgen_var_172;
2702     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_172, 1);
2703     stream->write((uint64_t*)&cgen_var_172, 1 * 8);
2704     stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
2705     if (((fenceCount)))
2706     {
2707         uint64_t* cgen_var_173;
2708         stream->alloc((void**)&cgen_var_173, ((fenceCount)) * 8);
2709         stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_173, ((fenceCount)));
2710         stream->write((uint64_t*)cgen_var_173, ((fenceCount)) * 8);
2711     }
2712     AEMU_SCOPED_TRACE("vkResetFences readParams");
2713     AEMU_SCOPED_TRACE("vkResetFences returnUnmarshal");
2714     VkResult vkResetFences_VkResult_return = (VkResult)0;
2715     stream->read(&vkResetFences_VkResult_return, sizeof(VkResult));
2716     countingStream->clearPool();
2717     stream->clearPool();
2718     pool->freeAll();
2719     mImpl->log("finish vkResetFences");;
2720     return vkResetFences_VkResult_return;
2721 }
2722 
vkGetFenceStatus(VkDevice device,VkFence fence)2723 VkResult VkEncoder::vkGetFenceStatus(
2724     VkDevice device,
2725     VkFence fence)
2726 {
2727     AEMU_SCOPED_TRACE("vkGetFenceStatus encode");
2728     mImpl->log("start vkGetFenceStatus");
2729     auto stream = mImpl->stream();
2730     auto countingStream = mImpl->countingStream();
2731     auto resources = mImpl->resources();
2732     auto pool = mImpl->pool();
2733     stream->setHandleMapping(resources->unwrapMapping());
2734     VkDevice local_device;
2735     VkFence local_fence;
2736     local_device = device;
2737     local_fence = fence;
2738     countingStream->rewind();
2739     {
2740         uint64_t cgen_var_174;
2741         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_174, 1);
2742         countingStream->write((uint64_t*)&cgen_var_174, 1 * 8);
2743         uint64_t cgen_var_175;
2744         countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_175, 1);
2745         countingStream->write((uint64_t*)&cgen_var_175, 1 * 8);
2746     }
2747     uint32_t packetSize_vkGetFenceStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2748     countingStream->rewind();
2749     uint32_t opcode_vkGetFenceStatus = OP_vkGetFenceStatus;
2750     stream->write(&opcode_vkGetFenceStatus, sizeof(uint32_t));
2751     stream->write(&packetSize_vkGetFenceStatus, sizeof(uint32_t));
2752     uint64_t cgen_var_176;
2753     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_176, 1);
2754     stream->write((uint64_t*)&cgen_var_176, 1 * 8);
2755     uint64_t cgen_var_177;
2756     stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_177, 1);
2757     stream->write((uint64_t*)&cgen_var_177, 1 * 8);
2758     AEMU_SCOPED_TRACE("vkGetFenceStatus readParams");
2759     AEMU_SCOPED_TRACE("vkGetFenceStatus returnUnmarshal");
2760     VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
2761     stream->read(&vkGetFenceStatus_VkResult_return, sizeof(VkResult));
2762     countingStream->clearPool();
2763     stream->clearPool();
2764     pool->freeAll();
2765     mImpl->log("finish vkGetFenceStatus");;
2766     return vkGetFenceStatus_VkResult_return;
2767 }
2768 
vkWaitForFences(VkDevice device,uint32_t fenceCount,const VkFence * pFences,VkBool32 waitAll,uint64_t timeout)2769 VkResult VkEncoder::vkWaitForFences(
2770     VkDevice device,
2771     uint32_t fenceCount,
2772     const VkFence* pFences,
2773     VkBool32 waitAll,
2774     uint64_t timeout)
2775 {
2776     AEMU_SCOPED_TRACE("vkWaitForFences encode");
2777     mImpl->log("start vkWaitForFences");
2778     auto stream = mImpl->stream();
2779     auto countingStream = mImpl->countingStream();
2780     auto resources = mImpl->resources();
2781     auto pool = mImpl->pool();
2782     stream->setHandleMapping(resources->unwrapMapping());
2783     VkDevice local_device;
2784     uint32_t local_fenceCount;
2785     VkFence* local_pFences;
2786     VkBool32 local_waitAll;
2787     uint64_t local_timeout;
2788     local_device = device;
2789     local_fenceCount = fenceCount;
2790     local_pFences = nullptr;
2791     if (pFences)
2792     {
2793         local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence));
2794     }
2795     local_waitAll = waitAll;
2796     local_timeout = timeout;
2797     countingStream->rewind();
2798     {
2799         uint64_t cgen_var_178;
2800         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_178, 1);
2801         countingStream->write((uint64_t*)&cgen_var_178, 1 * 8);
2802         countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
2803         if (((fenceCount)))
2804         {
2805             uint64_t* cgen_var_179;
2806             countingStream->alloc((void**)&cgen_var_179, ((fenceCount)) * 8);
2807             countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_179, ((fenceCount)));
2808             countingStream->write((uint64_t*)cgen_var_179, ((fenceCount)) * 8);
2809         }
2810         countingStream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2811         countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
2812     }
2813     uint32_t packetSize_vkWaitForFences = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2814     countingStream->rewind();
2815     uint32_t opcode_vkWaitForFences = OP_vkWaitForFences;
2816     stream->write(&opcode_vkWaitForFences, sizeof(uint32_t));
2817     stream->write(&packetSize_vkWaitForFences, sizeof(uint32_t));
2818     uint64_t cgen_var_180;
2819     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_180, 1);
2820     stream->write((uint64_t*)&cgen_var_180, 1 * 8);
2821     stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t));
2822     if (((fenceCount)))
2823     {
2824         uint64_t* cgen_var_181;
2825         stream->alloc((void**)&cgen_var_181, ((fenceCount)) * 8);
2826         stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_181, ((fenceCount)));
2827         stream->write((uint64_t*)cgen_var_181, ((fenceCount)) * 8);
2828     }
2829     stream->write((VkBool32*)&local_waitAll, sizeof(VkBool32));
2830     stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
2831     AEMU_SCOPED_TRACE("vkWaitForFences readParams");
2832     AEMU_SCOPED_TRACE("vkWaitForFences returnUnmarshal");
2833     VkResult vkWaitForFences_VkResult_return = (VkResult)0;
2834     stream->read(&vkWaitForFences_VkResult_return, sizeof(VkResult));
2835     countingStream->clearPool();
2836     stream->clearPool();
2837     pool->freeAll();
2838     mImpl->log("finish vkWaitForFences");;
2839     return vkWaitForFences_VkResult_return;
2840 }
2841 
vkCreateSemaphore(VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)2842 VkResult VkEncoder::vkCreateSemaphore(
2843     VkDevice device,
2844     const VkSemaphoreCreateInfo* pCreateInfo,
2845     const VkAllocationCallbacks* pAllocator,
2846     VkSemaphore* pSemaphore)
2847 {
2848     AEMU_SCOPED_TRACE("vkCreateSemaphore encode");
2849     mImpl->log("start vkCreateSemaphore");
2850     auto stream = mImpl->stream();
2851     auto countingStream = mImpl->countingStream();
2852     auto resources = mImpl->resources();
2853     auto pool = mImpl->pool();
2854     stream->setHandleMapping(resources->unwrapMapping());
2855     VkDevice local_device;
2856     VkSemaphoreCreateInfo* local_pCreateInfo;
2857     VkAllocationCallbacks* local_pAllocator;
2858     local_device = device;
2859     local_pCreateInfo = nullptr;
2860     if (pCreateInfo)
2861     {
2862         local_pCreateInfo = (VkSemaphoreCreateInfo*)pool->alloc(sizeof(const VkSemaphoreCreateInfo));
2863         deepcopy_VkSemaphoreCreateInfo(pool, pCreateInfo, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
2864     }
2865     local_pAllocator = nullptr;
2866     if (pAllocator)
2867     {
2868         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2869         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2870     }
2871     local_pAllocator = nullptr;
2872     if (local_pCreateInfo)
2873     {
2874         transform_tohost_VkSemaphoreCreateInfo(mImpl->resources(), (VkSemaphoreCreateInfo*)(local_pCreateInfo));
2875     }
2876     if (local_pAllocator)
2877     {
2878         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
2879     }
2880     countingStream->rewind();
2881     {
2882         uint64_t cgen_var_182;
2883         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_182, 1);
2884         countingStream->write((uint64_t*)&cgen_var_182, 1 * 8);
2885         marshal_VkSemaphoreCreateInfo(countingStream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
2886         // WARNING PTR CHECK
2887         uint64_t cgen_var_183 = (uint64_t)(uintptr_t)local_pAllocator;
2888         countingStream->putBe64(cgen_var_183);
2889         if (local_pAllocator)
2890         {
2891             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
2892         }
2893         uint64_t cgen_var_184;
2894         countingStream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_184, 1);
2895         countingStream->write((uint64_t*)&cgen_var_184, 8);
2896     }
2897     uint32_t packetSize_vkCreateSemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2898     countingStream->rewind();
2899     uint32_t opcode_vkCreateSemaphore = OP_vkCreateSemaphore;
2900     stream->write(&opcode_vkCreateSemaphore, sizeof(uint32_t));
2901     stream->write(&packetSize_vkCreateSemaphore, sizeof(uint32_t));
2902     uint64_t cgen_var_185;
2903     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_185, 1);
2904     stream->write((uint64_t*)&cgen_var_185, 1 * 8);
2905     marshal_VkSemaphoreCreateInfo(stream, (VkSemaphoreCreateInfo*)(local_pCreateInfo));
2906     // WARNING PTR CHECK
2907     uint64_t cgen_var_186 = (uint64_t)(uintptr_t)local_pAllocator;
2908     stream->putBe64(cgen_var_186);
2909     if (local_pAllocator)
2910     {
2911         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
2912     }
2913     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
2914     uint64_t cgen_var_187;
2915     stream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_187, 1);
2916     stream->write((uint64_t*)&cgen_var_187, 8);
2917     stream->setHandleMapping(resources->unwrapMapping());
2918     AEMU_SCOPED_TRACE("vkCreateSemaphore readParams");
2919     stream->setHandleMapping(resources->createMapping());
2920     uint64_t cgen_var_188;
2921     stream->read((uint64_t*)&cgen_var_188, 8);
2922     stream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_188, (VkSemaphore*)pSemaphore, 1);
2923     stream->unsetHandleMapping();
2924     AEMU_SCOPED_TRACE("vkCreateSemaphore returnUnmarshal");
2925     VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
2926     stream->read(&vkCreateSemaphore_VkResult_return, sizeof(VkResult));
2927     countingStream->clearPool();
2928     stream->clearPool();
2929     pool->freeAll();
2930     mImpl->log("finish vkCreateSemaphore");;
2931     return vkCreateSemaphore_VkResult_return;
2932 }
2933 
vkDestroySemaphore(VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)2934 void VkEncoder::vkDestroySemaphore(
2935     VkDevice device,
2936     VkSemaphore semaphore,
2937     const VkAllocationCallbacks* pAllocator)
2938 {
2939     AEMU_SCOPED_TRACE("vkDestroySemaphore encode");
2940     mImpl->log("start vkDestroySemaphore");
2941     auto stream = mImpl->stream();
2942     auto countingStream = mImpl->countingStream();
2943     auto resources = mImpl->resources();
2944     auto pool = mImpl->pool();
2945     stream->setHandleMapping(resources->unwrapMapping());
2946     VkDevice local_device;
2947     VkSemaphore local_semaphore;
2948     VkAllocationCallbacks* local_pAllocator;
2949     local_device = device;
2950     local_semaphore = semaphore;
2951     local_pAllocator = nullptr;
2952     if (pAllocator)
2953     {
2954         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
2955         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
2956     }
2957     local_pAllocator = nullptr;
2958     if (local_pAllocator)
2959     {
2960         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
2961     }
2962     countingStream->rewind();
2963     {
2964         uint64_t cgen_var_189;
2965         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_189, 1);
2966         countingStream->write((uint64_t*)&cgen_var_189, 1 * 8);
2967         uint64_t cgen_var_190;
2968         countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_190, 1);
2969         countingStream->write((uint64_t*)&cgen_var_190, 1 * 8);
2970         // WARNING PTR CHECK
2971         uint64_t cgen_var_191 = (uint64_t)(uintptr_t)local_pAllocator;
2972         countingStream->putBe64(cgen_var_191);
2973         if (local_pAllocator)
2974         {
2975             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
2976         }
2977     }
2978     uint32_t packetSize_vkDestroySemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten();
2979     countingStream->rewind();
2980     uint32_t opcode_vkDestroySemaphore = OP_vkDestroySemaphore;
2981     stream->write(&opcode_vkDestroySemaphore, sizeof(uint32_t));
2982     stream->write(&packetSize_vkDestroySemaphore, sizeof(uint32_t));
2983     uint64_t cgen_var_192;
2984     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_192, 1);
2985     stream->write((uint64_t*)&cgen_var_192, 1 * 8);
2986     uint64_t cgen_var_193;
2987     stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_193, 1);
2988     stream->write((uint64_t*)&cgen_var_193, 1 * 8);
2989     // WARNING PTR CHECK
2990     uint64_t cgen_var_194 = (uint64_t)(uintptr_t)local_pAllocator;
2991     stream->putBe64(cgen_var_194);
2992     if (local_pAllocator)
2993     {
2994         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
2995     }
2996     AEMU_SCOPED_TRACE("vkDestroySemaphore readParams");
2997     AEMU_SCOPED_TRACE("vkDestroySemaphore returnUnmarshal");
2998     resources->destroyMapping()->mapHandles_VkSemaphore((VkSemaphore*)&semaphore);
2999     mImpl->log("finish vkDestroySemaphore");;
3000 }
3001 
vkCreateEvent(VkDevice device,const VkEventCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkEvent * pEvent)3002 VkResult VkEncoder::vkCreateEvent(
3003     VkDevice device,
3004     const VkEventCreateInfo* pCreateInfo,
3005     const VkAllocationCallbacks* pAllocator,
3006     VkEvent* pEvent)
3007 {
3008     AEMU_SCOPED_TRACE("vkCreateEvent encode");
3009     mImpl->log("start vkCreateEvent");
3010     auto stream = mImpl->stream();
3011     auto countingStream = mImpl->countingStream();
3012     auto resources = mImpl->resources();
3013     auto pool = mImpl->pool();
3014     stream->setHandleMapping(resources->unwrapMapping());
3015     VkDevice local_device;
3016     VkEventCreateInfo* local_pCreateInfo;
3017     VkAllocationCallbacks* local_pAllocator;
3018     local_device = device;
3019     local_pCreateInfo = nullptr;
3020     if (pCreateInfo)
3021     {
3022         local_pCreateInfo = (VkEventCreateInfo*)pool->alloc(sizeof(const VkEventCreateInfo));
3023         deepcopy_VkEventCreateInfo(pool, pCreateInfo, (VkEventCreateInfo*)(local_pCreateInfo));
3024     }
3025     local_pAllocator = nullptr;
3026     if (pAllocator)
3027     {
3028         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3029         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3030     }
3031     local_pAllocator = nullptr;
3032     if (local_pCreateInfo)
3033     {
3034         transform_tohost_VkEventCreateInfo(mImpl->resources(), (VkEventCreateInfo*)(local_pCreateInfo));
3035     }
3036     if (local_pAllocator)
3037     {
3038         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
3039     }
3040     countingStream->rewind();
3041     {
3042         uint64_t cgen_var_195;
3043         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_195, 1);
3044         countingStream->write((uint64_t*)&cgen_var_195, 1 * 8);
3045         marshal_VkEventCreateInfo(countingStream, (VkEventCreateInfo*)(local_pCreateInfo));
3046         // WARNING PTR CHECK
3047         uint64_t cgen_var_196 = (uint64_t)(uintptr_t)local_pAllocator;
3048         countingStream->putBe64(cgen_var_196);
3049         if (local_pAllocator)
3050         {
3051             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
3052         }
3053         uint64_t cgen_var_197;
3054         countingStream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_197, 1);
3055         countingStream->write((uint64_t*)&cgen_var_197, 8);
3056     }
3057     uint32_t packetSize_vkCreateEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3058     countingStream->rewind();
3059     uint32_t opcode_vkCreateEvent = OP_vkCreateEvent;
3060     stream->write(&opcode_vkCreateEvent, sizeof(uint32_t));
3061     stream->write(&packetSize_vkCreateEvent, sizeof(uint32_t));
3062     uint64_t cgen_var_198;
3063     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_198, 1);
3064     stream->write((uint64_t*)&cgen_var_198, 1 * 8);
3065     marshal_VkEventCreateInfo(stream, (VkEventCreateInfo*)(local_pCreateInfo));
3066     // WARNING PTR CHECK
3067     uint64_t cgen_var_199 = (uint64_t)(uintptr_t)local_pAllocator;
3068     stream->putBe64(cgen_var_199);
3069     if (local_pAllocator)
3070     {
3071         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
3072     }
3073     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
3074     uint64_t cgen_var_200;
3075     stream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_200, 1);
3076     stream->write((uint64_t*)&cgen_var_200, 8);
3077     stream->setHandleMapping(resources->unwrapMapping());
3078     AEMU_SCOPED_TRACE("vkCreateEvent readParams");
3079     stream->setHandleMapping(resources->createMapping());
3080     uint64_t cgen_var_201;
3081     stream->read((uint64_t*)&cgen_var_201, 8);
3082     stream->handleMapping()->mapHandles_u64_VkEvent(&cgen_var_201, (VkEvent*)pEvent, 1);
3083     stream->unsetHandleMapping();
3084     AEMU_SCOPED_TRACE("vkCreateEvent returnUnmarshal");
3085     VkResult vkCreateEvent_VkResult_return = (VkResult)0;
3086     stream->read(&vkCreateEvent_VkResult_return, sizeof(VkResult));
3087     countingStream->clearPool();
3088     stream->clearPool();
3089     pool->freeAll();
3090     mImpl->log("finish vkCreateEvent");;
3091     return vkCreateEvent_VkResult_return;
3092 }
3093 
vkDestroyEvent(VkDevice device,VkEvent event,const VkAllocationCallbacks * pAllocator)3094 void VkEncoder::vkDestroyEvent(
3095     VkDevice device,
3096     VkEvent event,
3097     const VkAllocationCallbacks* pAllocator)
3098 {
3099     AEMU_SCOPED_TRACE("vkDestroyEvent encode");
3100     mImpl->log("start vkDestroyEvent");
3101     auto stream = mImpl->stream();
3102     auto countingStream = mImpl->countingStream();
3103     auto resources = mImpl->resources();
3104     auto pool = mImpl->pool();
3105     stream->setHandleMapping(resources->unwrapMapping());
3106     VkDevice local_device;
3107     VkEvent local_event;
3108     VkAllocationCallbacks* local_pAllocator;
3109     local_device = device;
3110     local_event = event;
3111     local_pAllocator = nullptr;
3112     if (pAllocator)
3113     {
3114         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3115         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3116     }
3117     local_pAllocator = nullptr;
3118     if (local_pAllocator)
3119     {
3120         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
3121     }
3122     countingStream->rewind();
3123     {
3124         uint64_t cgen_var_202;
3125         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_202, 1);
3126         countingStream->write((uint64_t*)&cgen_var_202, 1 * 8);
3127         uint64_t cgen_var_203;
3128         countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_203, 1);
3129         countingStream->write((uint64_t*)&cgen_var_203, 1 * 8);
3130         // WARNING PTR CHECK
3131         uint64_t cgen_var_204 = (uint64_t)(uintptr_t)local_pAllocator;
3132         countingStream->putBe64(cgen_var_204);
3133         if (local_pAllocator)
3134         {
3135             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
3136         }
3137     }
3138     uint32_t packetSize_vkDestroyEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3139     countingStream->rewind();
3140     uint32_t opcode_vkDestroyEvent = OP_vkDestroyEvent;
3141     stream->write(&opcode_vkDestroyEvent, sizeof(uint32_t));
3142     stream->write(&packetSize_vkDestroyEvent, sizeof(uint32_t));
3143     uint64_t cgen_var_205;
3144     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_205, 1);
3145     stream->write((uint64_t*)&cgen_var_205, 1 * 8);
3146     uint64_t cgen_var_206;
3147     stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_206, 1);
3148     stream->write((uint64_t*)&cgen_var_206, 1 * 8);
3149     // WARNING PTR CHECK
3150     uint64_t cgen_var_207 = (uint64_t)(uintptr_t)local_pAllocator;
3151     stream->putBe64(cgen_var_207);
3152     if (local_pAllocator)
3153     {
3154         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
3155     }
3156     AEMU_SCOPED_TRACE("vkDestroyEvent readParams");
3157     AEMU_SCOPED_TRACE("vkDestroyEvent returnUnmarshal");
3158     resources->destroyMapping()->mapHandles_VkEvent((VkEvent*)&event);
3159     mImpl->log("finish vkDestroyEvent");;
3160 }
3161 
vkGetEventStatus(VkDevice device,VkEvent event)3162 VkResult VkEncoder::vkGetEventStatus(
3163     VkDevice device,
3164     VkEvent event)
3165 {
3166     AEMU_SCOPED_TRACE("vkGetEventStatus encode");
3167     mImpl->log("start vkGetEventStatus");
3168     auto stream = mImpl->stream();
3169     auto countingStream = mImpl->countingStream();
3170     auto resources = mImpl->resources();
3171     auto pool = mImpl->pool();
3172     stream->setHandleMapping(resources->unwrapMapping());
3173     VkDevice local_device;
3174     VkEvent local_event;
3175     local_device = device;
3176     local_event = event;
3177     countingStream->rewind();
3178     {
3179         uint64_t cgen_var_208;
3180         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_208, 1);
3181         countingStream->write((uint64_t*)&cgen_var_208, 1 * 8);
3182         uint64_t cgen_var_209;
3183         countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_209, 1);
3184         countingStream->write((uint64_t*)&cgen_var_209, 1 * 8);
3185     }
3186     uint32_t packetSize_vkGetEventStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3187     countingStream->rewind();
3188     uint32_t opcode_vkGetEventStatus = OP_vkGetEventStatus;
3189     stream->write(&opcode_vkGetEventStatus, sizeof(uint32_t));
3190     stream->write(&packetSize_vkGetEventStatus, sizeof(uint32_t));
3191     uint64_t cgen_var_210;
3192     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_210, 1);
3193     stream->write((uint64_t*)&cgen_var_210, 1 * 8);
3194     uint64_t cgen_var_211;
3195     stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_211, 1);
3196     stream->write((uint64_t*)&cgen_var_211, 1 * 8);
3197     AEMU_SCOPED_TRACE("vkGetEventStatus readParams");
3198     AEMU_SCOPED_TRACE("vkGetEventStatus returnUnmarshal");
3199     VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
3200     stream->read(&vkGetEventStatus_VkResult_return, sizeof(VkResult));
3201     countingStream->clearPool();
3202     stream->clearPool();
3203     pool->freeAll();
3204     mImpl->log("finish vkGetEventStatus");;
3205     return vkGetEventStatus_VkResult_return;
3206 }
3207 
vkSetEvent(VkDevice device,VkEvent event)3208 VkResult VkEncoder::vkSetEvent(
3209     VkDevice device,
3210     VkEvent event)
3211 {
3212     AEMU_SCOPED_TRACE("vkSetEvent encode");
3213     mImpl->log("start vkSetEvent");
3214     auto stream = mImpl->stream();
3215     auto countingStream = mImpl->countingStream();
3216     auto resources = mImpl->resources();
3217     auto pool = mImpl->pool();
3218     stream->setHandleMapping(resources->unwrapMapping());
3219     VkDevice local_device;
3220     VkEvent local_event;
3221     local_device = device;
3222     local_event = event;
3223     countingStream->rewind();
3224     {
3225         uint64_t cgen_var_212;
3226         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_212, 1);
3227         countingStream->write((uint64_t*)&cgen_var_212, 1 * 8);
3228         uint64_t cgen_var_213;
3229         countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_213, 1);
3230         countingStream->write((uint64_t*)&cgen_var_213, 1 * 8);
3231     }
3232     uint32_t packetSize_vkSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3233     countingStream->rewind();
3234     uint32_t opcode_vkSetEvent = OP_vkSetEvent;
3235     stream->write(&opcode_vkSetEvent, sizeof(uint32_t));
3236     stream->write(&packetSize_vkSetEvent, sizeof(uint32_t));
3237     uint64_t cgen_var_214;
3238     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_214, 1);
3239     stream->write((uint64_t*)&cgen_var_214, 1 * 8);
3240     uint64_t cgen_var_215;
3241     stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_215, 1);
3242     stream->write((uint64_t*)&cgen_var_215, 1 * 8);
3243     AEMU_SCOPED_TRACE("vkSetEvent readParams");
3244     AEMU_SCOPED_TRACE("vkSetEvent returnUnmarshal");
3245     VkResult vkSetEvent_VkResult_return = (VkResult)0;
3246     stream->read(&vkSetEvent_VkResult_return, sizeof(VkResult));
3247     countingStream->clearPool();
3248     stream->clearPool();
3249     pool->freeAll();
3250     mImpl->log("finish vkSetEvent");;
3251     return vkSetEvent_VkResult_return;
3252 }
3253 
vkResetEvent(VkDevice device,VkEvent event)3254 VkResult VkEncoder::vkResetEvent(
3255     VkDevice device,
3256     VkEvent event)
3257 {
3258     AEMU_SCOPED_TRACE("vkResetEvent encode");
3259     mImpl->log("start vkResetEvent");
3260     auto stream = mImpl->stream();
3261     auto countingStream = mImpl->countingStream();
3262     auto resources = mImpl->resources();
3263     auto pool = mImpl->pool();
3264     stream->setHandleMapping(resources->unwrapMapping());
3265     VkDevice local_device;
3266     VkEvent local_event;
3267     local_device = device;
3268     local_event = event;
3269     countingStream->rewind();
3270     {
3271         uint64_t cgen_var_216;
3272         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_216, 1);
3273         countingStream->write((uint64_t*)&cgen_var_216, 1 * 8);
3274         uint64_t cgen_var_217;
3275         countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_217, 1);
3276         countingStream->write((uint64_t*)&cgen_var_217, 1 * 8);
3277     }
3278     uint32_t packetSize_vkResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3279     countingStream->rewind();
3280     uint32_t opcode_vkResetEvent = OP_vkResetEvent;
3281     stream->write(&opcode_vkResetEvent, sizeof(uint32_t));
3282     stream->write(&packetSize_vkResetEvent, sizeof(uint32_t));
3283     uint64_t cgen_var_218;
3284     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_218, 1);
3285     stream->write((uint64_t*)&cgen_var_218, 1 * 8);
3286     uint64_t cgen_var_219;
3287     stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_219, 1);
3288     stream->write((uint64_t*)&cgen_var_219, 1 * 8);
3289     AEMU_SCOPED_TRACE("vkResetEvent readParams");
3290     AEMU_SCOPED_TRACE("vkResetEvent returnUnmarshal");
3291     VkResult vkResetEvent_VkResult_return = (VkResult)0;
3292     stream->read(&vkResetEvent_VkResult_return, sizeof(VkResult));
3293     countingStream->clearPool();
3294     stream->clearPool();
3295     pool->freeAll();
3296     mImpl->log("finish vkResetEvent");;
3297     return vkResetEvent_VkResult_return;
3298 }
3299 
vkCreateQueryPool(VkDevice device,const VkQueryPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkQueryPool * pQueryPool)3300 VkResult VkEncoder::vkCreateQueryPool(
3301     VkDevice device,
3302     const VkQueryPoolCreateInfo* pCreateInfo,
3303     const VkAllocationCallbacks* pAllocator,
3304     VkQueryPool* pQueryPool)
3305 {
3306     AEMU_SCOPED_TRACE("vkCreateQueryPool encode");
3307     mImpl->log("start vkCreateQueryPool");
3308     auto stream = mImpl->stream();
3309     auto countingStream = mImpl->countingStream();
3310     auto resources = mImpl->resources();
3311     auto pool = mImpl->pool();
3312     stream->setHandleMapping(resources->unwrapMapping());
3313     VkDevice local_device;
3314     VkQueryPoolCreateInfo* local_pCreateInfo;
3315     VkAllocationCallbacks* local_pAllocator;
3316     local_device = device;
3317     local_pCreateInfo = nullptr;
3318     if (pCreateInfo)
3319     {
3320         local_pCreateInfo = (VkQueryPoolCreateInfo*)pool->alloc(sizeof(const VkQueryPoolCreateInfo));
3321         deepcopy_VkQueryPoolCreateInfo(pool, pCreateInfo, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
3322     }
3323     local_pAllocator = nullptr;
3324     if (pAllocator)
3325     {
3326         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3327         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3328     }
3329     local_pAllocator = nullptr;
3330     if (local_pCreateInfo)
3331     {
3332         transform_tohost_VkQueryPoolCreateInfo(mImpl->resources(), (VkQueryPoolCreateInfo*)(local_pCreateInfo));
3333     }
3334     if (local_pAllocator)
3335     {
3336         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
3337     }
3338     countingStream->rewind();
3339     {
3340         uint64_t cgen_var_220;
3341         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_220, 1);
3342         countingStream->write((uint64_t*)&cgen_var_220, 1 * 8);
3343         marshal_VkQueryPoolCreateInfo(countingStream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
3344         // WARNING PTR CHECK
3345         uint64_t cgen_var_221 = (uint64_t)(uintptr_t)local_pAllocator;
3346         countingStream->putBe64(cgen_var_221);
3347         if (local_pAllocator)
3348         {
3349             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
3350         }
3351         uint64_t cgen_var_222;
3352         countingStream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_222, 1);
3353         countingStream->write((uint64_t*)&cgen_var_222, 8);
3354     }
3355     uint32_t packetSize_vkCreateQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3356     countingStream->rewind();
3357     uint32_t opcode_vkCreateQueryPool = OP_vkCreateQueryPool;
3358     stream->write(&opcode_vkCreateQueryPool, sizeof(uint32_t));
3359     stream->write(&packetSize_vkCreateQueryPool, sizeof(uint32_t));
3360     uint64_t cgen_var_223;
3361     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_223, 1);
3362     stream->write((uint64_t*)&cgen_var_223, 1 * 8);
3363     marshal_VkQueryPoolCreateInfo(stream, (VkQueryPoolCreateInfo*)(local_pCreateInfo));
3364     // WARNING PTR CHECK
3365     uint64_t cgen_var_224 = (uint64_t)(uintptr_t)local_pAllocator;
3366     stream->putBe64(cgen_var_224);
3367     if (local_pAllocator)
3368     {
3369         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
3370     }
3371     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
3372     uint64_t cgen_var_225;
3373     stream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_225, 1);
3374     stream->write((uint64_t*)&cgen_var_225, 8);
3375     stream->setHandleMapping(resources->unwrapMapping());
3376     AEMU_SCOPED_TRACE("vkCreateQueryPool readParams");
3377     stream->setHandleMapping(resources->createMapping());
3378     uint64_t cgen_var_226;
3379     stream->read((uint64_t*)&cgen_var_226, 8);
3380     stream->handleMapping()->mapHandles_u64_VkQueryPool(&cgen_var_226, (VkQueryPool*)pQueryPool, 1);
3381     stream->unsetHandleMapping();
3382     AEMU_SCOPED_TRACE("vkCreateQueryPool returnUnmarshal");
3383     VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
3384     stream->read(&vkCreateQueryPool_VkResult_return, sizeof(VkResult));
3385     countingStream->clearPool();
3386     stream->clearPool();
3387     pool->freeAll();
3388     mImpl->log("finish vkCreateQueryPool");;
3389     return vkCreateQueryPool_VkResult_return;
3390 }
3391 
vkDestroyQueryPool(VkDevice device,VkQueryPool queryPool,const VkAllocationCallbacks * pAllocator)3392 void VkEncoder::vkDestroyQueryPool(
3393     VkDevice device,
3394     VkQueryPool queryPool,
3395     const VkAllocationCallbacks* pAllocator)
3396 {
3397     AEMU_SCOPED_TRACE("vkDestroyQueryPool encode");
3398     mImpl->log("start vkDestroyQueryPool");
3399     auto stream = mImpl->stream();
3400     auto countingStream = mImpl->countingStream();
3401     auto resources = mImpl->resources();
3402     auto pool = mImpl->pool();
3403     stream->setHandleMapping(resources->unwrapMapping());
3404     VkDevice local_device;
3405     VkQueryPool local_queryPool;
3406     VkAllocationCallbacks* local_pAllocator;
3407     local_device = device;
3408     local_queryPool = queryPool;
3409     local_pAllocator = nullptr;
3410     if (pAllocator)
3411     {
3412         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3413         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3414     }
3415     local_pAllocator = nullptr;
3416     if (local_pAllocator)
3417     {
3418         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
3419     }
3420     countingStream->rewind();
3421     {
3422         uint64_t cgen_var_227;
3423         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_227, 1);
3424         countingStream->write((uint64_t*)&cgen_var_227, 1 * 8);
3425         uint64_t cgen_var_228;
3426         countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_228, 1);
3427         countingStream->write((uint64_t*)&cgen_var_228, 1 * 8);
3428         // WARNING PTR CHECK
3429         uint64_t cgen_var_229 = (uint64_t)(uintptr_t)local_pAllocator;
3430         countingStream->putBe64(cgen_var_229);
3431         if (local_pAllocator)
3432         {
3433             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
3434         }
3435     }
3436     uint32_t packetSize_vkDestroyQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3437     countingStream->rewind();
3438     uint32_t opcode_vkDestroyQueryPool = OP_vkDestroyQueryPool;
3439     stream->write(&opcode_vkDestroyQueryPool, sizeof(uint32_t));
3440     stream->write(&packetSize_vkDestroyQueryPool, sizeof(uint32_t));
3441     uint64_t cgen_var_230;
3442     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_230, 1);
3443     stream->write((uint64_t*)&cgen_var_230, 1 * 8);
3444     uint64_t cgen_var_231;
3445     stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_231, 1);
3446     stream->write((uint64_t*)&cgen_var_231, 1 * 8);
3447     // WARNING PTR CHECK
3448     uint64_t cgen_var_232 = (uint64_t)(uintptr_t)local_pAllocator;
3449     stream->putBe64(cgen_var_232);
3450     if (local_pAllocator)
3451     {
3452         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
3453     }
3454     AEMU_SCOPED_TRACE("vkDestroyQueryPool readParams");
3455     AEMU_SCOPED_TRACE("vkDestroyQueryPool returnUnmarshal");
3456     resources->destroyMapping()->mapHandles_VkQueryPool((VkQueryPool*)&queryPool);
3457     mImpl->log("finish vkDestroyQueryPool");;
3458 }
3459 
vkGetQueryPoolResults(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount,size_t dataSize,void * pData,VkDeviceSize stride,VkQueryResultFlags flags)3460 VkResult VkEncoder::vkGetQueryPoolResults(
3461     VkDevice device,
3462     VkQueryPool queryPool,
3463     uint32_t firstQuery,
3464     uint32_t queryCount,
3465     size_t dataSize,
3466     void* pData,
3467     VkDeviceSize stride,
3468     VkQueryResultFlags flags)
3469 {
3470     AEMU_SCOPED_TRACE("vkGetQueryPoolResults encode");
3471     mImpl->log("start vkGetQueryPoolResults");
3472     auto stream = mImpl->stream();
3473     auto countingStream = mImpl->countingStream();
3474     auto resources = mImpl->resources();
3475     auto pool = mImpl->pool();
3476     stream->setHandleMapping(resources->unwrapMapping());
3477     VkDevice local_device;
3478     VkQueryPool local_queryPool;
3479     uint32_t local_firstQuery;
3480     uint32_t local_queryCount;
3481     size_t local_dataSize;
3482     VkDeviceSize local_stride;
3483     VkQueryResultFlags local_flags;
3484     local_device = device;
3485     local_queryPool = queryPool;
3486     local_firstQuery = firstQuery;
3487     local_queryCount = queryCount;
3488     local_dataSize = dataSize;
3489     local_stride = stride;
3490     local_flags = flags;
3491     countingStream->rewind();
3492     {
3493         uint64_t cgen_var_233;
3494         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_233, 1);
3495         countingStream->write((uint64_t*)&cgen_var_233, 1 * 8);
3496         uint64_t cgen_var_234;
3497         countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_234, 1);
3498         countingStream->write((uint64_t*)&cgen_var_234, 1 * 8);
3499         countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
3500         countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
3501         uint64_t cgen_var_235 = (uint64_t)local_dataSize;
3502         countingStream->putBe64(cgen_var_235);
3503         countingStream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
3504         countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
3505         countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
3506     }
3507     uint32_t packetSize_vkGetQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3508     countingStream->rewind();
3509     uint32_t opcode_vkGetQueryPoolResults = OP_vkGetQueryPoolResults;
3510     stream->write(&opcode_vkGetQueryPoolResults, sizeof(uint32_t));
3511     stream->write(&packetSize_vkGetQueryPoolResults, sizeof(uint32_t));
3512     uint64_t cgen_var_236;
3513     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_236, 1);
3514     stream->write((uint64_t*)&cgen_var_236, 1 * 8);
3515     uint64_t cgen_var_237;
3516     stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_237, 1);
3517     stream->write((uint64_t*)&cgen_var_237, 1 * 8);
3518     stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
3519     stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
3520     uint64_t cgen_var_238 = (uint64_t)local_dataSize;
3521     stream->putBe64(cgen_var_238);
3522     stream->write((void*)pData, ((dataSize)) * sizeof(uint8_t));
3523     stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
3524     stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
3525     AEMU_SCOPED_TRACE("vkGetQueryPoolResults readParams");
3526     stream->read((void*)pData, ((dataSize)) * sizeof(uint8_t));
3527     AEMU_SCOPED_TRACE("vkGetQueryPoolResults returnUnmarshal");
3528     VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
3529     stream->read(&vkGetQueryPoolResults_VkResult_return, sizeof(VkResult));
3530     countingStream->clearPool();
3531     stream->clearPool();
3532     pool->freeAll();
3533     mImpl->log("finish vkGetQueryPoolResults");;
3534     return vkGetQueryPoolResults_VkResult_return;
3535 }
3536 
vkCreateBuffer(VkDevice device,const VkBufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBuffer * pBuffer)3537 VkResult VkEncoder::vkCreateBuffer(
3538     VkDevice device,
3539     const VkBufferCreateInfo* pCreateInfo,
3540     const VkAllocationCallbacks* pAllocator,
3541     VkBuffer* pBuffer)
3542 {
3543     AEMU_SCOPED_TRACE("vkCreateBuffer encode");
3544     mImpl->log("start vkCreateBuffer");
3545     auto stream = mImpl->stream();
3546     auto countingStream = mImpl->countingStream();
3547     auto resources = mImpl->resources();
3548     auto pool = mImpl->pool();
3549     stream->setHandleMapping(resources->unwrapMapping());
3550     VkDevice local_device;
3551     VkBufferCreateInfo* local_pCreateInfo;
3552     VkAllocationCallbacks* local_pAllocator;
3553     local_device = device;
3554     local_pCreateInfo = nullptr;
3555     if (pCreateInfo)
3556     {
3557         local_pCreateInfo = (VkBufferCreateInfo*)pool->alloc(sizeof(const VkBufferCreateInfo));
3558         deepcopy_VkBufferCreateInfo(pool, pCreateInfo, (VkBufferCreateInfo*)(local_pCreateInfo));
3559     }
3560     local_pAllocator = nullptr;
3561     if (pAllocator)
3562     {
3563         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3564         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3565     }
3566     local_pAllocator = nullptr;
3567     if (local_pCreateInfo)
3568     {
3569         transform_tohost_VkBufferCreateInfo(mImpl->resources(), (VkBufferCreateInfo*)(local_pCreateInfo));
3570     }
3571     if (local_pAllocator)
3572     {
3573         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
3574     }
3575     countingStream->rewind();
3576     {
3577         uint64_t cgen_var_239;
3578         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_239, 1);
3579         countingStream->write((uint64_t*)&cgen_var_239, 1 * 8);
3580         marshal_VkBufferCreateInfo(countingStream, (VkBufferCreateInfo*)(local_pCreateInfo));
3581         // WARNING PTR CHECK
3582         uint64_t cgen_var_240 = (uint64_t)(uintptr_t)local_pAllocator;
3583         countingStream->putBe64(cgen_var_240);
3584         if (local_pAllocator)
3585         {
3586             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
3587         }
3588         uint64_t cgen_var_241;
3589         countingStream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_241, 1);
3590         countingStream->write((uint64_t*)&cgen_var_241, 8);
3591     }
3592     uint32_t packetSize_vkCreateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3593     countingStream->rewind();
3594     uint32_t opcode_vkCreateBuffer = OP_vkCreateBuffer;
3595     stream->write(&opcode_vkCreateBuffer, sizeof(uint32_t));
3596     stream->write(&packetSize_vkCreateBuffer, sizeof(uint32_t));
3597     uint64_t cgen_var_242;
3598     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_242, 1);
3599     stream->write((uint64_t*)&cgen_var_242, 1 * 8);
3600     marshal_VkBufferCreateInfo(stream, (VkBufferCreateInfo*)(local_pCreateInfo));
3601     // WARNING PTR CHECK
3602     uint64_t cgen_var_243 = (uint64_t)(uintptr_t)local_pAllocator;
3603     stream->putBe64(cgen_var_243);
3604     if (local_pAllocator)
3605     {
3606         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
3607     }
3608     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
3609     uint64_t cgen_var_244;
3610     stream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_244, 1);
3611     stream->write((uint64_t*)&cgen_var_244, 8);
3612     stream->setHandleMapping(resources->unwrapMapping());
3613     AEMU_SCOPED_TRACE("vkCreateBuffer readParams");
3614     stream->setHandleMapping(resources->createMapping());
3615     uint64_t cgen_var_245;
3616     stream->read((uint64_t*)&cgen_var_245, 8);
3617     stream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_245, (VkBuffer*)pBuffer, 1);
3618     stream->unsetHandleMapping();
3619     AEMU_SCOPED_TRACE("vkCreateBuffer returnUnmarshal");
3620     VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
3621     stream->read(&vkCreateBuffer_VkResult_return, sizeof(VkResult));
3622     countingStream->clearPool();
3623     stream->clearPool();
3624     pool->freeAll();
3625     mImpl->log("finish vkCreateBuffer");;
3626     return vkCreateBuffer_VkResult_return;
3627 }
3628 
vkDestroyBuffer(VkDevice device,VkBuffer buffer,const VkAllocationCallbacks * pAllocator)3629 void VkEncoder::vkDestroyBuffer(
3630     VkDevice device,
3631     VkBuffer buffer,
3632     const VkAllocationCallbacks* pAllocator)
3633 {
3634     AEMU_SCOPED_TRACE("vkDestroyBuffer encode");
3635     mImpl->log("start vkDestroyBuffer");
3636     auto stream = mImpl->stream();
3637     auto countingStream = mImpl->countingStream();
3638     auto resources = mImpl->resources();
3639     auto pool = mImpl->pool();
3640     stream->setHandleMapping(resources->unwrapMapping());
3641     VkDevice local_device;
3642     VkBuffer local_buffer;
3643     VkAllocationCallbacks* local_pAllocator;
3644     local_device = device;
3645     local_buffer = buffer;
3646     local_pAllocator = nullptr;
3647     if (pAllocator)
3648     {
3649         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3650         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3651     }
3652     local_pAllocator = nullptr;
3653     if (local_pAllocator)
3654     {
3655         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
3656     }
3657     countingStream->rewind();
3658     {
3659         uint64_t cgen_var_246;
3660         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_246, 1);
3661         countingStream->write((uint64_t*)&cgen_var_246, 1 * 8);
3662         uint64_t cgen_var_247;
3663         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_247, 1);
3664         countingStream->write((uint64_t*)&cgen_var_247, 1 * 8);
3665         // WARNING PTR CHECK
3666         uint64_t cgen_var_248 = (uint64_t)(uintptr_t)local_pAllocator;
3667         countingStream->putBe64(cgen_var_248);
3668         if (local_pAllocator)
3669         {
3670             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
3671         }
3672     }
3673     uint32_t packetSize_vkDestroyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3674     countingStream->rewind();
3675     uint32_t opcode_vkDestroyBuffer = OP_vkDestroyBuffer;
3676     stream->write(&opcode_vkDestroyBuffer, sizeof(uint32_t));
3677     stream->write(&packetSize_vkDestroyBuffer, sizeof(uint32_t));
3678     uint64_t cgen_var_249;
3679     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_249, 1);
3680     stream->write((uint64_t*)&cgen_var_249, 1 * 8);
3681     uint64_t cgen_var_250;
3682     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_250, 1);
3683     stream->write((uint64_t*)&cgen_var_250, 1 * 8);
3684     // WARNING PTR CHECK
3685     uint64_t cgen_var_251 = (uint64_t)(uintptr_t)local_pAllocator;
3686     stream->putBe64(cgen_var_251);
3687     if (local_pAllocator)
3688     {
3689         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
3690     }
3691     AEMU_SCOPED_TRACE("vkDestroyBuffer readParams");
3692     AEMU_SCOPED_TRACE("vkDestroyBuffer returnUnmarshal");
3693     resources->destroyMapping()->mapHandles_VkBuffer((VkBuffer*)&buffer);
3694     mImpl->log("finish vkDestroyBuffer");;
3695 }
3696 
vkCreateBufferView(VkDevice device,const VkBufferViewCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBufferView * pView)3697 VkResult VkEncoder::vkCreateBufferView(
3698     VkDevice device,
3699     const VkBufferViewCreateInfo* pCreateInfo,
3700     const VkAllocationCallbacks* pAllocator,
3701     VkBufferView* pView)
3702 {
3703     AEMU_SCOPED_TRACE("vkCreateBufferView encode");
3704     mImpl->log("start vkCreateBufferView");
3705     auto stream = mImpl->stream();
3706     auto countingStream = mImpl->countingStream();
3707     auto resources = mImpl->resources();
3708     auto pool = mImpl->pool();
3709     stream->setHandleMapping(resources->unwrapMapping());
3710     VkDevice local_device;
3711     VkBufferViewCreateInfo* local_pCreateInfo;
3712     VkAllocationCallbacks* local_pAllocator;
3713     local_device = device;
3714     local_pCreateInfo = nullptr;
3715     if (pCreateInfo)
3716     {
3717         local_pCreateInfo = (VkBufferViewCreateInfo*)pool->alloc(sizeof(const VkBufferViewCreateInfo));
3718         deepcopy_VkBufferViewCreateInfo(pool, pCreateInfo, (VkBufferViewCreateInfo*)(local_pCreateInfo));
3719     }
3720     local_pAllocator = nullptr;
3721     if (pAllocator)
3722     {
3723         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3724         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3725     }
3726     local_pAllocator = nullptr;
3727     if (local_pCreateInfo)
3728     {
3729         transform_tohost_VkBufferViewCreateInfo(mImpl->resources(), (VkBufferViewCreateInfo*)(local_pCreateInfo));
3730     }
3731     if (local_pAllocator)
3732     {
3733         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
3734     }
3735     countingStream->rewind();
3736     {
3737         uint64_t cgen_var_252;
3738         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_252, 1);
3739         countingStream->write((uint64_t*)&cgen_var_252, 1 * 8);
3740         marshal_VkBufferViewCreateInfo(countingStream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
3741         // WARNING PTR CHECK
3742         uint64_t cgen_var_253 = (uint64_t)(uintptr_t)local_pAllocator;
3743         countingStream->putBe64(cgen_var_253);
3744         if (local_pAllocator)
3745         {
3746             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
3747         }
3748         uint64_t cgen_var_254;
3749         countingStream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_254, 1);
3750         countingStream->write((uint64_t*)&cgen_var_254, 8);
3751     }
3752     uint32_t packetSize_vkCreateBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3753     countingStream->rewind();
3754     uint32_t opcode_vkCreateBufferView = OP_vkCreateBufferView;
3755     stream->write(&opcode_vkCreateBufferView, sizeof(uint32_t));
3756     stream->write(&packetSize_vkCreateBufferView, sizeof(uint32_t));
3757     uint64_t cgen_var_255;
3758     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_255, 1);
3759     stream->write((uint64_t*)&cgen_var_255, 1 * 8);
3760     marshal_VkBufferViewCreateInfo(stream, (VkBufferViewCreateInfo*)(local_pCreateInfo));
3761     // WARNING PTR CHECK
3762     uint64_t cgen_var_256 = (uint64_t)(uintptr_t)local_pAllocator;
3763     stream->putBe64(cgen_var_256);
3764     if (local_pAllocator)
3765     {
3766         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
3767     }
3768     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
3769     uint64_t cgen_var_257;
3770     stream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_257, 1);
3771     stream->write((uint64_t*)&cgen_var_257, 8);
3772     stream->setHandleMapping(resources->unwrapMapping());
3773     AEMU_SCOPED_TRACE("vkCreateBufferView readParams");
3774     stream->setHandleMapping(resources->createMapping());
3775     uint64_t cgen_var_258;
3776     stream->read((uint64_t*)&cgen_var_258, 8);
3777     stream->handleMapping()->mapHandles_u64_VkBufferView(&cgen_var_258, (VkBufferView*)pView, 1);
3778     stream->unsetHandleMapping();
3779     AEMU_SCOPED_TRACE("vkCreateBufferView returnUnmarshal");
3780     VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
3781     stream->read(&vkCreateBufferView_VkResult_return, sizeof(VkResult));
3782     countingStream->clearPool();
3783     stream->clearPool();
3784     pool->freeAll();
3785     mImpl->log("finish vkCreateBufferView");;
3786     return vkCreateBufferView_VkResult_return;
3787 }
3788 
vkDestroyBufferView(VkDevice device,VkBufferView bufferView,const VkAllocationCallbacks * pAllocator)3789 void VkEncoder::vkDestroyBufferView(
3790     VkDevice device,
3791     VkBufferView bufferView,
3792     const VkAllocationCallbacks* pAllocator)
3793 {
3794     AEMU_SCOPED_TRACE("vkDestroyBufferView encode");
3795     mImpl->log("start vkDestroyBufferView");
3796     auto stream = mImpl->stream();
3797     auto countingStream = mImpl->countingStream();
3798     auto resources = mImpl->resources();
3799     auto pool = mImpl->pool();
3800     stream->setHandleMapping(resources->unwrapMapping());
3801     VkDevice local_device;
3802     VkBufferView local_bufferView;
3803     VkAllocationCallbacks* local_pAllocator;
3804     local_device = device;
3805     local_bufferView = bufferView;
3806     local_pAllocator = nullptr;
3807     if (pAllocator)
3808     {
3809         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3810         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3811     }
3812     local_pAllocator = nullptr;
3813     if (local_pAllocator)
3814     {
3815         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
3816     }
3817     countingStream->rewind();
3818     {
3819         uint64_t cgen_var_259;
3820         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_259, 1);
3821         countingStream->write((uint64_t*)&cgen_var_259, 1 * 8);
3822         uint64_t cgen_var_260;
3823         countingStream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_260, 1);
3824         countingStream->write((uint64_t*)&cgen_var_260, 1 * 8);
3825         // WARNING PTR CHECK
3826         uint64_t cgen_var_261 = (uint64_t)(uintptr_t)local_pAllocator;
3827         countingStream->putBe64(cgen_var_261);
3828         if (local_pAllocator)
3829         {
3830             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
3831         }
3832     }
3833     uint32_t packetSize_vkDestroyBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3834     countingStream->rewind();
3835     uint32_t opcode_vkDestroyBufferView = OP_vkDestroyBufferView;
3836     stream->write(&opcode_vkDestroyBufferView, sizeof(uint32_t));
3837     stream->write(&packetSize_vkDestroyBufferView, sizeof(uint32_t));
3838     uint64_t cgen_var_262;
3839     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_262, 1);
3840     stream->write((uint64_t*)&cgen_var_262, 1 * 8);
3841     uint64_t cgen_var_263;
3842     stream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_263, 1);
3843     stream->write((uint64_t*)&cgen_var_263, 1 * 8);
3844     // WARNING PTR CHECK
3845     uint64_t cgen_var_264 = (uint64_t)(uintptr_t)local_pAllocator;
3846     stream->putBe64(cgen_var_264);
3847     if (local_pAllocator)
3848     {
3849         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
3850     }
3851     AEMU_SCOPED_TRACE("vkDestroyBufferView readParams");
3852     AEMU_SCOPED_TRACE("vkDestroyBufferView returnUnmarshal");
3853     resources->destroyMapping()->mapHandles_VkBufferView((VkBufferView*)&bufferView);
3854     mImpl->log("finish vkDestroyBufferView");;
3855 }
3856 
vkCreateImage(VkDevice device,const VkImageCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImage * pImage)3857 VkResult VkEncoder::vkCreateImage(
3858     VkDevice device,
3859     const VkImageCreateInfo* pCreateInfo,
3860     const VkAllocationCallbacks* pAllocator,
3861     VkImage* pImage)
3862 {
3863     AEMU_SCOPED_TRACE("vkCreateImage encode");
3864     mImpl->log("start vkCreateImage");
3865     auto stream = mImpl->stream();
3866     auto countingStream = mImpl->countingStream();
3867     auto resources = mImpl->resources();
3868     auto pool = mImpl->pool();
3869     stream->setHandleMapping(resources->unwrapMapping());
3870     VkDevice local_device;
3871     VkImageCreateInfo* local_pCreateInfo;
3872     VkAllocationCallbacks* local_pAllocator;
3873     local_device = device;
3874     local_pCreateInfo = nullptr;
3875     if (pCreateInfo)
3876     {
3877         local_pCreateInfo = (VkImageCreateInfo*)pool->alloc(sizeof(const VkImageCreateInfo));
3878         deepcopy_VkImageCreateInfo(pool, pCreateInfo, (VkImageCreateInfo*)(local_pCreateInfo));
3879     }
3880     local_pAllocator = nullptr;
3881     if (pAllocator)
3882     {
3883         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3884         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3885     }
3886     mImpl->resources()->unwrap_VkNativeBufferANDROID(pCreateInfo, local_pCreateInfo);
3887     local_pAllocator = nullptr;
3888     if (local_pCreateInfo)
3889     {
3890         transform_tohost_VkImageCreateInfo(mImpl->resources(), (VkImageCreateInfo*)(local_pCreateInfo));
3891     }
3892     if (local_pAllocator)
3893     {
3894         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
3895     }
3896     countingStream->rewind();
3897     {
3898         uint64_t cgen_var_265;
3899         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_265, 1);
3900         countingStream->write((uint64_t*)&cgen_var_265, 1 * 8);
3901         marshal_VkImageCreateInfo(countingStream, (VkImageCreateInfo*)(local_pCreateInfo));
3902         // WARNING PTR CHECK
3903         uint64_t cgen_var_266 = (uint64_t)(uintptr_t)local_pAllocator;
3904         countingStream->putBe64(cgen_var_266);
3905         if (local_pAllocator)
3906         {
3907             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
3908         }
3909         uint64_t cgen_var_267;
3910         countingStream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_267, 1);
3911         countingStream->write((uint64_t*)&cgen_var_267, 8);
3912     }
3913     uint32_t packetSize_vkCreateImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3914     countingStream->rewind();
3915     uint32_t opcode_vkCreateImage = OP_vkCreateImage;
3916     stream->write(&opcode_vkCreateImage, sizeof(uint32_t));
3917     stream->write(&packetSize_vkCreateImage, sizeof(uint32_t));
3918     uint64_t cgen_var_268;
3919     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_268, 1);
3920     stream->write((uint64_t*)&cgen_var_268, 1 * 8);
3921     marshal_VkImageCreateInfo(stream, (VkImageCreateInfo*)(local_pCreateInfo));
3922     // WARNING PTR CHECK
3923     uint64_t cgen_var_269 = (uint64_t)(uintptr_t)local_pAllocator;
3924     stream->putBe64(cgen_var_269);
3925     if (local_pAllocator)
3926     {
3927         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
3928     }
3929     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
3930     uint64_t cgen_var_270;
3931     stream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_270, 1);
3932     stream->write((uint64_t*)&cgen_var_270, 8);
3933     stream->setHandleMapping(resources->unwrapMapping());
3934     AEMU_SCOPED_TRACE("vkCreateImage readParams");
3935     stream->setHandleMapping(resources->createMapping());
3936     uint64_t cgen_var_271;
3937     stream->read((uint64_t*)&cgen_var_271, 8);
3938     stream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_271, (VkImage*)pImage, 1);
3939     stream->unsetHandleMapping();
3940     AEMU_SCOPED_TRACE("vkCreateImage returnUnmarshal");
3941     VkResult vkCreateImage_VkResult_return = (VkResult)0;
3942     stream->read(&vkCreateImage_VkResult_return, sizeof(VkResult));
3943     countingStream->clearPool();
3944     stream->clearPool();
3945     pool->freeAll();
3946     mImpl->log("finish vkCreateImage");;
3947     return vkCreateImage_VkResult_return;
3948 }
3949 
vkDestroyImage(VkDevice device,VkImage image,const VkAllocationCallbacks * pAllocator)3950 void VkEncoder::vkDestroyImage(
3951     VkDevice device,
3952     VkImage image,
3953     const VkAllocationCallbacks* pAllocator)
3954 {
3955     AEMU_SCOPED_TRACE("vkDestroyImage encode");
3956     mImpl->log("start vkDestroyImage");
3957     auto stream = mImpl->stream();
3958     auto countingStream = mImpl->countingStream();
3959     auto resources = mImpl->resources();
3960     auto pool = mImpl->pool();
3961     stream->setHandleMapping(resources->unwrapMapping());
3962     VkDevice local_device;
3963     VkImage local_image;
3964     VkAllocationCallbacks* local_pAllocator;
3965     local_device = device;
3966     local_image = image;
3967     local_pAllocator = nullptr;
3968     if (pAllocator)
3969     {
3970         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
3971         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
3972     }
3973     local_pAllocator = nullptr;
3974     if (local_pAllocator)
3975     {
3976         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
3977     }
3978     countingStream->rewind();
3979     {
3980         uint64_t cgen_var_272;
3981         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_272, 1);
3982         countingStream->write((uint64_t*)&cgen_var_272, 1 * 8);
3983         uint64_t cgen_var_273;
3984         countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_273, 1);
3985         countingStream->write((uint64_t*)&cgen_var_273, 1 * 8);
3986         // WARNING PTR CHECK
3987         uint64_t cgen_var_274 = (uint64_t)(uintptr_t)local_pAllocator;
3988         countingStream->putBe64(cgen_var_274);
3989         if (local_pAllocator)
3990         {
3991             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
3992         }
3993     }
3994     uint32_t packetSize_vkDestroyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
3995     countingStream->rewind();
3996     uint32_t opcode_vkDestroyImage = OP_vkDestroyImage;
3997     stream->write(&opcode_vkDestroyImage, sizeof(uint32_t));
3998     stream->write(&packetSize_vkDestroyImage, sizeof(uint32_t));
3999     uint64_t cgen_var_275;
4000     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_275, 1);
4001     stream->write((uint64_t*)&cgen_var_275, 1 * 8);
4002     uint64_t cgen_var_276;
4003     stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_276, 1);
4004     stream->write((uint64_t*)&cgen_var_276, 1 * 8);
4005     // WARNING PTR CHECK
4006     uint64_t cgen_var_277 = (uint64_t)(uintptr_t)local_pAllocator;
4007     stream->putBe64(cgen_var_277);
4008     if (local_pAllocator)
4009     {
4010         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
4011     }
4012     AEMU_SCOPED_TRACE("vkDestroyImage readParams");
4013     AEMU_SCOPED_TRACE("vkDestroyImage returnUnmarshal");
4014     resources->destroyMapping()->mapHandles_VkImage((VkImage*)&image);
4015     mImpl->log("finish vkDestroyImage");;
4016 }
4017 
vkGetImageSubresourceLayout(VkDevice device,VkImage image,const VkImageSubresource * pSubresource,VkSubresourceLayout * pLayout)4018 void VkEncoder::vkGetImageSubresourceLayout(
4019     VkDevice device,
4020     VkImage image,
4021     const VkImageSubresource* pSubresource,
4022     VkSubresourceLayout* pLayout)
4023 {
4024     AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout encode");
4025     mImpl->log("start vkGetImageSubresourceLayout");
4026     auto stream = mImpl->stream();
4027     auto countingStream = mImpl->countingStream();
4028     auto resources = mImpl->resources();
4029     auto pool = mImpl->pool();
4030     stream->setHandleMapping(resources->unwrapMapping());
4031     VkDevice local_device;
4032     VkImage local_image;
4033     VkImageSubresource* local_pSubresource;
4034     local_device = device;
4035     local_image = image;
4036     local_pSubresource = nullptr;
4037     if (pSubresource)
4038     {
4039         local_pSubresource = (VkImageSubresource*)pool->alloc(sizeof(const VkImageSubresource));
4040         deepcopy_VkImageSubresource(pool, pSubresource, (VkImageSubresource*)(local_pSubresource));
4041     }
4042     if (local_pSubresource)
4043     {
4044         transform_tohost_VkImageSubresource(mImpl->resources(), (VkImageSubresource*)(local_pSubresource));
4045     }
4046     countingStream->rewind();
4047     {
4048         uint64_t cgen_var_278;
4049         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_278, 1);
4050         countingStream->write((uint64_t*)&cgen_var_278, 1 * 8);
4051         uint64_t cgen_var_279;
4052         countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_279, 1);
4053         countingStream->write((uint64_t*)&cgen_var_279, 1 * 8);
4054         marshal_VkImageSubresource(countingStream, (VkImageSubresource*)(local_pSubresource));
4055         marshal_VkSubresourceLayout(countingStream, (VkSubresourceLayout*)(pLayout));
4056     }
4057     uint32_t packetSize_vkGetImageSubresourceLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4058     countingStream->rewind();
4059     uint32_t opcode_vkGetImageSubresourceLayout = OP_vkGetImageSubresourceLayout;
4060     stream->write(&opcode_vkGetImageSubresourceLayout, sizeof(uint32_t));
4061     stream->write(&packetSize_vkGetImageSubresourceLayout, sizeof(uint32_t));
4062     uint64_t cgen_var_280;
4063     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_280, 1);
4064     stream->write((uint64_t*)&cgen_var_280, 1 * 8);
4065     uint64_t cgen_var_281;
4066     stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_281, 1);
4067     stream->write((uint64_t*)&cgen_var_281, 1 * 8);
4068     marshal_VkImageSubresource(stream, (VkImageSubresource*)(local_pSubresource));
4069     marshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
4070     AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout readParams");
4071     unmarshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout));
4072     if (pLayout)
4073     {
4074         transform_fromhost_VkSubresourceLayout(mImpl->resources(), (VkSubresourceLayout*)(pLayout));
4075     }
4076     AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout returnUnmarshal");
4077     mImpl->log("finish vkGetImageSubresourceLayout");;
4078 }
4079 
vkCreateImageView(VkDevice device,const VkImageViewCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImageView * pView)4080 VkResult VkEncoder::vkCreateImageView(
4081     VkDevice device,
4082     const VkImageViewCreateInfo* pCreateInfo,
4083     const VkAllocationCallbacks* pAllocator,
4084     VkImageView* pView)
4085 {
4086     AEMU_SCOPED_TRACE("vkCreateImageView encode");
4087     mImpl->log("start vkCreateImageView");
4088     auto stream = mImpl->stream();
4089     auto countingStream = mImpl->countingStream();
4090     auto resources = mImpl->resources();
4091     auto pool = mImpl->pool();
4092     stream->setHandleMapping(resources->unwrapMapping());
4093     VkDevice local_device;
4094     VkImageViewCreateInfo* local_pCreateInfo;
4095     VkAllocationCallbacks* local_pAllocator;
4096     local_device = device;
4097     local_pCreateInfo = nullptr;
4098     if (pCreateInfo)
4099     {
4100         local_pCreateInfo = (VkImageViewCreateInfo*)pool->alloc(sizeof(const VkImageViewCreateInfo));
4101         deepcopy_VkImageViewCreateInfo(pool, pCreateInfo, (VkImageViewCreateInfo*)(local_pCreateInfo));
4102     }
4103     local_pAllocator = nullptr;
4104     if (pAllocator)
4105     {
4106         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4107         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4108     }
4109     local_pAllocator = nullptr;
4110     if (local_pCreateInfo)
4111     {
4112         transform_tohost_VkImageViewCreateInfo(mImpl->resources(), (VkImageViewCreateInfo*)(local_pCreateInfo));
4113     }
4114     if (local_pAllocator)
4115     {
4116         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
4117     }
4118     countingStream->rewind();
4119     {
4120         uint64_t cgen_var_282;
4121         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_282, 1);
4122         countingStream->write((uint64_t*)&cgen_var_282, 1 * 8);
4123         marshal_VkImageViewCreateInfo(countingStream, (VkImageViewCreateInfo*)(local_pCreateInfo));
4124         // WARNING PTR CHECK
4125         uint64_t cgen_var_283 = (uint64_t)(uintptr_t)local_pAllocator;
4126         countingStream->putBe64(cgen_var_283);
4127         if (local_pAllocator)
4128         {
4129             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
4130         }
4131         uint64_t cgen_var_284;
4132         countingStream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_284, 1);
4133         countingStream->write((uint64_t*)&cgen_var_284, 8);
4134     }
4135     uint32_t packetSize_vkCreateImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4136     countingStream->rewind();
4137     uint32_t opcode_vkCreateImageView = OP_vkCreateImageView;
4138     stream->write(&opcode_vkCreateImageView, sizeof(uint32_t));
4139     stream->write(&packetSize_vkCreateImageView, sizeof(uint32_t));
4140     uint64_t cgen_var_285;
4141     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_285, 1);
4142     stream->write((uint64_t*)&cgen_var_285, 1 * 8);
4143     marshal_VkImageViewCreateInfo(stream, (VkImageViewCreateInfo*)(local_pCreateInfo));
4144     // WARNING PTR CHECK
4145     uint64_t cgen_var_286 = (uint64_t)(uintptr_t)local_pAllocator;
4146     stream->putBe64(cgen_var_286);
4147     if (local_pAllocator)
4148     {
4149         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
4150     }
4151     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
4152     uint64_t cgen_var_287;
4153     stream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_287, 1);
4154     stream->write((uint64_t*)&cgen_var_287, 8);
4155     stream->setHandleMapping(resources->unwrapMapping());
4156     AEMU_SCOPED_TRACE("vkCreateImageView readParams");
4157     stream->setHandleMapping(resources->createMapping());
4158     uint64_t cgen_var_288;
4159     stream->read((uint64_t*)&cgen_var_288, 8);
4160     stream->handleMapping()->mapHandles_u64_VkImageView(&cgen_var_288, (VkImageView*)pView, 1);
4161     stream->unsetHandleMapping();
4162     AEMU_SCOPED_TRACE("vkCreateImageView returnUnmarshal");
4163     VkResult vkCreateImageView_VkResult_return = (VkResult)0;
4164     stream->read(&vkCreateImageView_VkResult_return, sizeof(VkResult));
4165     countingStream->clearPool();
4166     stream->clearPool();
4167     pool->freeAll();
4168     mImpl->log("finish vkCreateImageView");;
4169     return vkCreateImageView_VkResult_return;
4170 }
4171 
vkDestroyImageView(VkDevice device,VkImageView imageView,const VkAllocationCallbacks * pAllocator)4172 void VkEncoder::vkDestroyImageView(
4173     VkDevice device,
4174     VkImageView imageView,
4175     const VkAllocationCallbacks* pAllocator)
4176 {
4177     AEMU_SCOPED_TRACE("vkDestroyImageView encode");
4178     mImpl->log("start vkDestroyImageView");
4179     auto stream = mImpl->stream();
4180     auto countingStream = mImpl->countingStream();
4181     auto resources = mImpl->resources();
4182     auto pool = mImpl->pool();
4183     stream->setHandleMapping(resources->unwrapMapping());
4184     VkDevice local_device;
4185     VkImageView local_imageView;
4186     VkAllocationCallbacks* local_pAllocator;
4187     local_device = device;
4188     local_imageView = imageView;
4189     local_pAllocator = nullptr;
4190     if (pAllocator)
4191     {
4192         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4193         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4194     }
4195     local_pAllocator = nullptr;
4196     if (local_pAllocator)
4197     {
4198         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
4199     }
4200     countingStream->rewind();
4201     {
4202         uint64_t cgen_var_289;
4203         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_289, 1);
4204         countingStream->write((uint64_t*)&cgen_var_289, 1 * 8);
4205         uint64_t cgen_var_290;
4206         countingStream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_290, 1);
4207         countingStream->write((uint64_t*)&cgen_var_290, 1 * 8);
4208         // WARNING PTR CHECK
4209         uint64_t cgen_var_291 = (uint64_t)(uintptr_t)local_pAllocator;
4210         countingStream->putBe64(cgen_var_291);
4211         if (local_pAllocator)
4212         {
4213             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
4214         }
4215     }
4216     uint32_t packetSize_vkDestroyImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4217     countingStream->rewind();
4218     uint32_t opcode_vkDestroyImageView = OP_vkDestroyImageView;
4219     stream->write(&opcode_vkDestroyImageView, sizeof(uint32_t));
4220     stream->write(&packetSize_vkDestroyImageView, sizeof(uint32_t));
4221     uint64_t cgen_var_292;
4222     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_292, 1);
4223     stream->write((uint64_t*)&cgen_var_292, 1 * 8);
4224     uint64_t cgen_var_293;
4225     stream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_293, 1);
4226     stream->write((uint64_t*)&cgen_var_293, 1 * 8);
4227     // WARNING PTR CHECK
4228     uint64_t cgen_var_294 = (uint64_t)(uintptr_t)local_pAllocator;
4229     stream->putBe64(cgen_var_294);
4230     if (local_pAllocator)
4231     {
4232         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
4233     }
4234     AEMU_SCOPED_TRACE("vkDestroyImageView readParams");
4235     AEMU_SCOPED_TRACE("vkDestroyImageView returnUnmarshal");
4236     resources->destroyMapping()->mapHandles_VkImageView((VkImageView*)&imageView);
4237     mImpl->log("finish vkDestroyImageView");;
4238 }
4239 
vkCreateShaderModule(VkDevice device,const VkShaderModuleCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkShaderModule * pShaderModule)4240 VkResult VkEncoder::vkCreateShaderModule(
4241     VkDevice device,
4242     const VkShaderModuleCreateInfo* pCreateInfo,
4243     const VkAllocationCallbacks* pAllocator,
4244     VkShaderModule* pShaderModule)
4245 {
4246     AEMU_SCOPED_TRACE("vkCreateShaderModule encode");
4247     mImpl->log("start vkCreateShaderModule");
4248     auto stream = mImpl->stream();
4249     auto countingStream = mImpl->countingStream();
4250     auto resources = mImpl->resources();
4251     auto pool = mImpl->pool();
4252     stream->setHandleMapping(resources->unwrapMapping());
4253     VkDevice local_device;
4254     VkShaderModuleCreateInfo* local_pCreateInfo;
4255     VkAllocationCallbacks* local_pAllocator;
4256     local_device = device;
4257     local_pCreateInfo = nullptr;
4258     if (pCreateInfo)
4259     {
4260         local_pCreateInfo = (VkShaderModuleCreateInfo*)pool->alloc(sizeof(const VkShaderModuleCreateInfo));
4261         deepcopy_VkShaderModuleCreateInfo(pool, pCreateInfo, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
4262     }
4263     local_pAllocator = nullptr;
4264     if (pAllocator)
4265     {
4266         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4267         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4268     }
4269     local_pAllocator = nullptr;
4270     if (local_pCreateInfo)
4271     {
4272         transform_tohost_VkShaderModuleCreateInfo(mImpl->resources(), (VkShaderModuleCreateInfo*)(local_pCreateInfo));
4273     }
4274     if (local_pAllocator)
4275     {
4276         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
4277     }
4278     countingStream->rewind();
4279     {
4280         uint64_t cgen_var_295;
4281         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_295, 1);
4282         countingStream->write((uint64_t*)&cgen_var_295, 1 * 8);
4283         marshal_VkShaderModuleCreateInfo(countingStream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
4284         // WARNING PTR CHECK
4285         uint64_t cgen_var_296 = (uint64_t)(uintptr_t)local_pAllocator;
4286         countingStream->putBe64(cgen_var_296);
4287         if (local_pAllocator)
4288         {
4289             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
4290         }
4291         uint64_t cgen_var_297;
4292         countingStream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_297, 1);
4293         countingStream->write((uint64_t*)&cgen_var_297, 8);
4294     }
4295     uint32_t packetSize_vkCreateShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4296     countingStream->rewind();
4297     uint32_t opcode_vkCreateShaderModule = OP_vkCreateShaderModule;
4298     stream->write(&opcode_vkCreateShaderModule, sizeof(uint32_t));
4299     stream->write(&packetSize_vkCreateShaderModule, sizeof(uint32_t));
4300     uint64_t cgen_var_298;
4301     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_298, 1);
4302     stream->write((uint64_t*)&cgen_var_298, 1 * 8);
4303     marshal_VkShaderModuleCreateInfo(stream, (VkShaderModuleCreateInfo*)(local_pCreateInfo));
4304     // WARNING PTR CHECK
4305     uint64_t cgen_var_299 = (uint64_t)(uintptr_t)local_pAllocator;
4306     stream->putBe64(cgen_var_299);
4307     if (local_pAllocator)
4308     {
4309         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
4310     }
4311     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
4312     uint64_t cgen_var_300;
4313     stream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_300, 1);
4314     stream->write((uint64_t*)&cgen_var_300, 8);
4315     stream->setHandleMapping(resources->unwrapMapping());
4316     AEMU_SCOPED_TRACE("vkCreateShaderModule readParams");
4317     stream->setHandleMapping(resources->createMapping());
4318     uint64_t cgen_var_301;
4319     stream->read((uint64_t*)&cgen_var_301, 8);
4320     stream->handleMapping()->mapHandles_u64_VkShaderModule(&cgen_var_301, (VkShaderModule*)pShaderModule, 1);
4321     stream->unsetHandleMapping();
4322     AEMU_SCOPED_TRACE("vkCreateShaderModule returnUnmarshal");
4323     VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
4324     stream->read(&vkCreateShaderModule_VkResult_return, sizeof(VkResult));
4325     countingStream->clearPool();
4326     stream->clearPool();
4327     pool->freeAll();
4328     mImpl->log("finish vkCreateShaderModule");;
4329     return vkCreateShaderModule_VkResult_return;
4330 }
4331 
vkDestroyShaderModule(VkDevice device,VkShaderModule shaderModule,const VkAllocationCallbacks * pAllocator)4332 void VkEncoder::vkDestroyShaderModule(
4333     VkDevice device,
4334     VkShaderModule shaderModule,
4335     const VkAllocationCallbacks* pAllocator)
4336 {
4337     AEMU_SCOPED_TRACE("vkDestroyShaderModule encode");
4338     mImpl->log("start vkDestroyShaderModule");
4339     auto stream = mImpl->stream();
4340     auto countingStream = mImpl->countingStream();
4341     auto resources = mImpl->resources();
4342     auto pool = mImpl->pool();
4343     stream->setHandleMapping(resources->unwrapMapping());
4344     VkDevice local_device;
4345     VkShaderModule local_shaderModule;
4346     VkAllocationCallbacks* local_pAllocator;
4347     local_device = device;
4348     local_shaderModule = shaderModule;
4349     local_pAllocator = nullptr;
4350     if (pAllocator)
4351     {
4352         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4353         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4354     }
4355     local_pAllocator = nullptr;
4356     if (local_pAllocator)
4357     {
4358         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
4359     }
4360     countingStream->rewind();
4361     {
4362         uint64_t cgen_var_302;
4363         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_302, 1);
4364         countingStream->write((uint64_t*)&cgen_var_302, 1 * 8);
4365         uint64_t cgen_var_303;
4366         countingStream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_303, 1);
4367         countingStream->write((uint64_t*)&cgen_var_303, 1 * 8);
4368         // WARNING PTR CHECK
4369         uint64_t cgen_var_304 = (uint64_t)(uintptr_t)local_pAllocator;
4370         countingStream->putBe64(cgen_var_304);
4371         if (local_pAllocator)
4372         {
4373             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
4374         }
4375     }
4376     uint32_t packetSize_vkDestroyShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4377     countingStream->rewind();
4378     uint32_t opcode_vkDestroyShaderModule = OP_vkDestroyShaderModule;
4379     stream->write(&opcode_vkDestroyShaderModule, sizeof(uint32_t));
4380     stream->write(&packetSize_vkDestroyShaderModule, sizeof(uint32_t));
4381     uint64_t cgen_var_305;
4382     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_305, 1);
4383     stream->write((uint64_t*)&cgen_var_305, 1 * 8);
4384     uint64_t cgen_var_306;
4385     stream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_306, 1);
4386     stream->write((uint64_t*)&cgen_var_306, 1 * 8);
4387     // WARNING PTR CHECK
4388     uint64_t cgen_var_307 = (uint64_t)(uintptr_t)local_pAllocator;
4389     stream->putBe64(cgen_var_307);
4390     if (local_pAllocator)
4391     {
4392         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
4393     }
4394     AEMU_SCOPED_TRACE("vkDestroyShaderModule readParams");
4395     AEMU_SCOPED_TRACE("vkDestroyShaderModule returnUnmarshal");
4396     resources->destroyMapping()->mapHandles_VkShaderModule((VkShaderModule*)&shaderModule);
4397     mImpl->log("finish vkDestroyShaderModule");;
4398 }
4399 
vkCreatePipelineCache(VkDevice device,const VkPipelineCacheCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPipelineCache * pPipelineCache)4400 VkResult VkEncoder::vkCreatePipelineCache(
4401     VkDevice device,
4402     const VkPipelineCacheCreateInfo* pCreateInfo,
4403     const VkAllocationCallbacks* pAllocator,
4404     VkPipelineCache* pPipelineCache)
4405 {
4406     AEMU_SCOPED_TRACE("vkCreatePipelineCache encode");
4407     mImpl->log("start vkCreatePipelineCache");
4408     auto stream = mImpl->stream();
4409     auto countingStream = mImpl->countingStream();
4410     auto resources = mImpl->resources();
4411     auto pool = mImpl->pool();
4412     stream->setHandleMapping(resources->unwrapMapping());
4413     VkDevice local_device;
4414     VkPipelineCacheCreateInfo* local_pCreateInfo;
4415     VkAllocationCallbacks* local_pAllocator;
4416     local_device = device;
4417     local_pCreateInfo = nullptr;
4418     if (pCreateInfo)
4419     {
4420         local_pCreateInfo = (VkPipelineCacheCreateInfo*)pool->alloc(sizeof(const VkPipelineCacheCreateInfo));
4421         deepcopy_VkPipelineCacheCreateInfo(pool, pCreateInfo, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
4422     }
4423     local_pAllocator = nullptr;
4424     if (pAllocator)
4425     {
4426         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4427         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4428     }
4429     local_pAllocator = nullptr;
4430     if (local_pCreateInfo)
4431     {
4432         transform_tohost_VkPipelineCacheCreateInfo(mImpl->resources(), (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
4433     }
4434     if (local_pAllocator)
4435     {
4436         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
4437     }
4438     countingStream->rewind();
4439     {
4440         uint64_t cgen_var_308;
4441         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_308, 1);
4442         countingStream->write((uint64_t*)&cgen_var_308, 1 * 8);
4443         marshal_VkPipelineCacheCreateInfo(countingStream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
4444         // WARNING PTR CHECK
4445         uint64_t cgen_var_309 = (uint64_t)(uintptr_t)local_pAllocator;
4446         countingStream->putBe64(cgen_var_309);
4447         if (local_pAllocator)
4448         {
4449             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
4450         }
4451         uint64_t cgen_var_310;
4452         countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_310, 1);
4453         countingStream->write((uint64_t*)&cgen_var_310, 8);
4454     }
4455     uint32_t packetSize_vkCreatePipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4456     countingStream->rewind();
4457     uint32_t opcode_vkCreatePipelineCache = OP_vkCreatePipelineCache;
4458     stream->write(&opcode_vkCreatePipelineCache, sizeof(uint32_t));
4459     stream->write(&packetSize_vkCreatePipelineCache, sizeof(uint32_t));
4460     uint64_t cgen_var_311;
4461     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_311, 1);
4462     stream->write((uint64_t*)&cgen_var_311, 1 * 8);
4463     marshal_VkPipelineCacheCreateInfo(stream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo));
4464     // WARNING PTR CHECK
4465     uint64_t cgen_var_312 = (uint64_t)(uintptr_t)local_pAllocator;
4466     stream->putBe64(cgen_var_312);
4467     if (local_pAllocator)
4468     {
4469         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
4470     }
4471     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
4472     uint64_t cgen_var_313;
4473     stream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_313, 1);
4474     stream->write((uint64_t*)&cgen_var_313, 8);
4475     stream->setHandleMapping(resources->unwrapMapping());
4476     AEMU_SCOPED_TRACE("vkCreatePipelineCache readParams");
4477     stream->setHandleMapping(resources->createMapping());
4478     uint64_t cgen_var_314;
4479     stream->read((uint64_t*)&cgen_var_314, 8);
4480     stream->handleMapping()->mapHandles_u64_VkPipelineCache(&cgen_var_314, (VkPipelineCache*)pPipelineCache, 1);
4481     stream->unsetHandleMapping();
4482     AEMU_SCOPED_TRACE("vkCreatePipelineCache returnUnmarshal");
4483     VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
4484     stream->read(&vkCreatePipelineCache_VkResult_return, sizeof(VkResult));
4485     countingStream->clearPool();
4486     stream->clearPool();
4487     pool->freeAll();
4488     mImpl->log("finish vkCreatePipelineCache");;
4489     return vkCreatePipelineCache_VkResult_return;
4490 }
4491 
vkDestroyPipelineCache(VkDevice device,VkPipelineCache pipelineCache,const VkAllocationCallbacks * pAllocator)4492 void VkEncoder::vkDestroyPipelineCache(
4493     VkDevice device,
4494     VkPipelineCache pipelineCache,
4495     const VkAllocationCallbacks* pAllocator)
4496 {
4497     AEMU_SCOPED_TRACE("vkDestroyPipelineCache encode");
4498     mImpl->log("start vkDestroyPipelineCache");
4499     auto stream = mImpl->stream();
4500     auto countingStream = mImpl->countingStream();
4501     auto resources = mImpl->resources();
4502     auto pool = mImpl->pool();
4503     stream->setHandleMapping(resources->unwrapMapping());
4504     VkDevice local_device;
4505     VkPipelineCache local_pipelineCache;
4506     VkAllocationCallbacks* local_pAllocator;
4507     local_device = device;
4508     local_pipelineCache = pipelineCache;
4509     local_pAllocator = nullptr;
4510     if (pAllocator)
4511     {
4512         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4513         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4514     }
4515     local_pAllocator = nullptr;
4516     if (local_pAllocator)
4517     {
4518         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
4519     }
4520     countingStream->rewind();
4521     {
4522         uint64_t cgen_var_315;
4523         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_315, 1);
4524         countingStream->write((uint64_t*)&cgen_var_315, 1 * 8);
4525         uint64_t cgen_var_316;
4526         countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_316, 1);
4527         countingStream->write((uint64_t*)&cgen_var_316, 1 * 8);
4528         // WARNING PTR CHECK
4529         uint64_t cgen_var_317 = (uint64_t)(uintptr_t)local_pAllocator;
4530         countingStream->putBe64(cgen_var_317);
4531         if (local_pAllocator)
4532         {
4533             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
4534         }
4535     }
4536     uint32_t packetSize_vkDestroyPipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4537     countingStream->rewind();
4538     uint32_t opcode_vkDestroyPipelineCache = OP_vkDestroyPipelineCache;
4539     stream->write(&opcode_vkDestroyPipelineCache, sizeof(uint32_t));
4540     stream->write(&packetSize_vkDestroyPipelineCache, sizeof(uint32_t));
4541     uint64_t cgen_var_318;
4542     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_318, 1);
4543     stream->write((uint64_t*)&cgen_var_318, 1 * 8);
4544     uint64_t cgen_var_319;
4545     stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_319, 1);
4546     stream->write((uint64_t*)&cgen_var_319, 1 * 8);
4547     // WARNING PTR CHECK
4548     uint64_t cgen_var_320 = (uint64_t)(uintptr_t)local_pAllocator;
4549     stream->putBe64(cgen_var_320);
4550     if (local_pAllocator)
4551     {
4552         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
4553     }
4554     AEMU_SCOPED_TRACE("vkDestroyPipelineCache readParams");
4555     AEMU_SCOPED_TRACE("vkDestroyPipelineCache returnUnmarshal");
4556     resources->destroyMapping()->mapHandles_VkPipelineCache((VkPipelineCache*)&pipelineCache);
4557     mImpl->log("finish vkDestroyPipelineCache");;
4558 }
4559 
vkGetPipelineCacheData(VkDevice device,VkPipelineCache pipelineCache,size_t * pDataSize,void * pData)4560 VkResult VkEncoder::vkGetPipelineCacheData(
4561     VkDevice device,
4562     VkPipelineCache pipelineCache,
4563     size_t* pDataSize,
4564     void* pData)
4565 {
4566     AEMU_SCOPED_TRACE("vkGetPipelineCacheData encode");
4567     mImpl->log("start vkGetPipelineCacheData");
4568     auto stream = mImpl->stream();
4569     auto countingStream = mImpl->countingStream();
4570     auto resources = mImpl->resources();
4571     auto pool = mImpl->pool();
4572     stream->setHandleMapping(resources->unwrapMapping());
4573     VkDevice local_device;
4574     VkPipelineCache local_pipelineCache;
4575     local_device = device;
4576     local_pipelineCache = pipelineCache;
4577     countingStream->rewind();
4578     {
4579         uint64_t cgen_var_321;
4580         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_321, 1);
4581         countingStream->write((uint64_t*)&cgen_var_321, 1 * 8);
4582         uint64_t cgen_var_322;
4583         countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_322, 1);
4584         countingStream->write((uint64_t*)&cgen_var_322, 1 * 8);
4585         // WARNING PTR CHECK
4586         uint64_t cgen_var_323 = (uint64_t)(uintptr_t)pDataSize;
4587         countingStream->putBe64(cgen_var_323);
4588         if (pDataSize)
4589         {
4590             uint64_t cgen_var_324 = (uint64_t)(*pDataSize);
4591             countingStream->putBe64(cgen_var_324);
4592         }
4593         // WARNING PTR CHECK
4594         uint64_t cgen_var_325 = (uint64_t)(uintptr_t)pData;
4595         countingStream->putBe64(cgen_var_325);
4596         if (pData)
4597         {
4598             countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4599         }
4600     }
4601     uint32_t packetSize_vkGetPipelineCacheData = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4602     countingStream->rewind();
4603     uint32_t opcode_vkGetPipelineCacheData = OP_vkGetPipelineCacheData;
4604     stream->write(&opcode_vkGetPipelineCacheData, sizeof(uint32_t));
4605     stream->write(&packetSize_vkGetPipelineCacheData, sizeof(uint32_t));
4606     uint64_t cgen_var_326;
4607     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_326, 1);
4608     stream->write((uint64_t*)&cgen_var_326, 1 * 8);
4609     uint64_t cgen_var_327;
4610     stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_327, 1);
4611     stream->write((uint64_t*)&cgen_var_327, 1 * 8);
4612     // WARNING PTR CHECK
4613     uint64_t cgen_var_328 = (uint64_t)(uintptr_t)pDataSize;
4614     stream->putBe64(cgen_var_328);
4615     if (pDataSize)
4616     {
4617         uint64_t cgen_var_329 = (uint64_t)(*pDataSize);
4618         stream->putBe64(cgen_var_329);
4619     }
4620     // WARNING PTR CHECK
4621     uint64_t cgen_var_330 = (uint64_t)(uintptr_t)pData;
4622     stream->putBe64(cgen_var_330);
4623     if (pData)
4624     {
4625         stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4626     }
4627     AEMU_SCOPED_TRACE("vkGetPipelineCacheData readParams");
4628     // WARNING PTR CHECK
4629     size_t* check_pDataSize;
4630     check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
4631     if (pDataSize)
4632     {
4633         if (!(check_pDataSize))
4634         {
4635             fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
4636         }
4637         (*pDataSize) = (size_t)stream->getBe64();
4638     }
4639     // WARNING PTR CHECK
4640     void* check_pData;
4641     check_pData = (void*)(uintptr_t)stream->getBe64();
4642     if (pData)
4643     {
4644         if (!(check_pData))
4645         {
4646             fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
4647         }
4648         stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
4649     }
4650     AEMU_SCOPED_TRACE("vkGetPipelineCacheData returnUnmarshal");
4651     VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
4652     stream->read(&vkGetPipelineCacheData_VkResult_return, sizeof(VkResult));
4653     countingStream->clearPool();
4654     stream->clearPool();
4655     pool->freeAll();
4656     mImpl->log("finish vkGetPipelineCacheData");;
4657     return vkGetPipelineCacheData_VkResult_return;
4658 }
4659 
vkMergePipelineCaches(VkDevice device,VkPipelineCache dstCache,uint32_t srcCacheCount,const VkPipelineCache * pSrcCaches)4660 VkResult VkEncoder::vkMergePipelineCaches(
4661     VkDevice device,
4662     VkPipelineCache dstCache,
4663     uint32_t srcCacheCount,
4664     const VkPipelineCache* pSrcCaches)
4665 {
4666     AEMU_SCOPED_TRACE("vkMergePipelineCaches encode");
4667     mImpl->log("start vkMergePipelineCaches");
4668     auto stream = mImpl->stream();
4669     auto countingStream = mImpl->countingStream();
4670     auto resources = mImpl->resources();
4671     auto pool = mImpl->pool();
4672     stream->setHandleMapping(resources->unwrapMapping());
4673     VkDevice local_device;
4674     VkPipelineCache local_dstCache;
4675     uint32_t local_srcCacheCount;
4676     VkPipelineCache* local_pSrcCaches;
4677     local_device = device;
4678     local_dstCache = dstCache;
4679     local_srcCacheCount = srcCacheCount;
4680     local_pSrcCaches = nullptr;
4681     if (pSrcCaches)
4682     {
4683         local_pSrcCaches = (VkPipelineCache*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache));
4684     }
4685     countingStream->rewind();
4686     {
4687         uint64_t cgen_var_334;
4688         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_334, 1);
4689         countingStream->write((uint64_t*)&cgen_var_334, 1 * 8);
4690         uint64_t cgen_var_335;
4691         countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_335, 1);
4692         countingStream->write((uint64_t*)&cgen_var_335, 1 * 8);
4693         countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
4694         if (((srcCacheCount)))
4695         {
4696             uint64_t* cgen_var_336;
4697             countingStream->alloc((void**)&cgen_var_336, ((srcCacheCount)) * 8);
4698             countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_336, ((srcCacheCount)));
4699             countingStream->write((uint64_t*)cgen_var_336, ((srcCacheCount)) * 8);
4700         }
4701     }
4702     uint32_t packetSize_vkMergePipelineCaches = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4703     countingStream->rewind();
4704     uint32_t opcode_vkMergePipelineCaches = OP_vkMergePipelineCaches;
4705     stream->write(&opcode_vkMergePipelineCaches, sizeof(uint32_t));
4706     stream->write(&packetSize_vkMergePipelineCaches, sizeof(uint32_t));
4707     uint64_t cgen_var_337;
4708     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_337, 1);
4709     stream->write((uint64_t*)&cgen_var_337, 1 * 8);
4710     uint64_t cgen_var_338;
4711     stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_338, 1);
4712     stream->write((uint64_t*)&cgen_var_338, 1 * 8);
4713     stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
4714     if (((srcCacheCount)))
4715     {
4716         uint64_t* cgen_var_339;
4717         stream->alloc((void**)&cgen_var_339, ((srcCacheCount)) * 8);
4718         stream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_339, ((srcCacheCount)));
4719         stream->write((uint64_t*)cgen_var_339, ((srcCacheCount)) * 8);
4720     }
4721     AEMU_SCOPED_TRACE("vkMergePipelineCaches readParams");
4722     AEMU_SCOPED_TRACE("vkMergePipelineCaches returnUnmarshal");
4723     VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
4724     stream->read(&vkMergePipelineCaches_VkResult_return, sizeof(VkResult));
4725     countingStream->clearPool();
4726     stream->clearPool();
4727     pool->freeAll();
4728     mImpl->log("finish vkMergePipelineCaches");;
4729     return vkMergePipelineCaches_VkResult_return;
4730 }
4731 
vkCreateGraphicsPipelines(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkGraphicsPipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)4732 VkResult VkEncoder::vkCreateGraphicsPipelines(
4733     VkDevice device,
4734     VkPipelineCache pipelineCache,
4735     uint32_t createInfoCount,
4736     const VkGraphicsPipelineCreateInfo* pCreateInfos,
4737     const VkAllocationCallbacks* pAllocator,
4738     VkPipeline* pPipelines)
4739 {
4740     AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines encode");
4741     mImpl->log("start vkCreateGraphicsPipelines");
4742     auto stream = mImpl->stream();
4743     auto countingStream = mImpl->countingStream();
4744     auto resources = mImpl->resources();
4745     auto pool = mImpl->pool();
4746     stream->setHandleMapping(resources->unwrapMapping());
4747     VkDevice local_device;
4748     VkPipelineCache local_pipelineCache;
4749     uint32_t local_createInfoCount;
4750     VkGraphicsPipelineCreateInfo* local_pCreateInfos;
4751     VkAllocationCallbacks* local_pAllocator;
4752     local_device = device;
4753     local_pipelineCache = pipelineCache;
4754     local_createInfoCount = createInfoCount;
4755     local_pCreateInfos = nullptr;
4756     if (pCreateInfos)
4757     {
4758         local_pCreateInfos = (VkGraphicsPipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkGraphicsPipelineCreateInfo));
4759         for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4760         {
4761             deepcopy_VkGraphicsPipelineCreateInfo(pool, pCreateInfos + i, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
4762         }
4763     }
4764     local_pAllocator = nullptr;
4765     if (pAllocator)
4766     {
4767         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4768         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4769     }
4770     local_pAllocator = nullptr;
4771     if (local_pCreateInfos)
4772     {
4773         for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4774         {
4775             transform_tohost_VkGraphicsPipelineCreateInfo(mImpl->resources(), (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
4776         }
4777     }
4778     if (local_pAllocator)
4779     {
4780         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
4781     }
4782     countingStream->rewind();
4783     {
4784         uint64_t cgen_var_340;
4785         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_340, 1);
4786         countingStream->write((uint64_t*)&cgen_var_340, 1 * 8);
4787         uint64_t cgen_var_341;
4788         countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_341, 1);
4789         countingStream->write((uint64_t*)&cgen_var_341, 1 * 8);
4790         countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4791         for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4792         {
4793             marshal_VkGraphicsPipelineCreateInfo(countingStream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
4794         }
4795         // WARNING PTR CHECK
4796         uint64_t cgen_var_342 = (uint64_t)(uintptr_t)local_pAllocator;
4797         countingStream->putBe64(cgen_var_342);
4798         if (local_pAllocator)
4799         {
4800             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
4801         }
4802         if (((createInfoCount)))
4803         {
4804             uint64_t* cgen_var_343;
4805             countingStream->alloc((void**)&cgen_var_343, ((createInfoCount)) * 8);
4806             countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_343, ((createInfoCount)));
4807             countingStream->write((uint64_t*)cgen_var_343, ((createInfoCount)) * 8);
4808         }
4809     }
4810     uint32_t packetSize_vkCreateGraphicsPipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4811     countingStream->rewind();
4812     uint32_t opcode_vkCreateGraphicsPipelines = OP_vkCreateGraphicsPipelines;
4813     stream->write(&opcode_vkCreateGraphicsPipelines, sizeof(uint32_t));
4814     stream->write(&packetSize_vkCreateGraphicsPipelines, sizeof(uint32_t));
4815     uint64_t cgen_var_344;
4816     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_344, 1);
4817     stream->write((uint64_t*)&cgen_var_344, 1 * 8);
4818     uint64_t cgen_var_345;
4819     stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_345, 1);
4820     stream->write((uint64_t*)&cgen_var_345, 1 * 8);
4821     stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4822     for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4823     {
4824         marshal_VkGraphicsPipelineCreateInfo(stream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i));
4825     }
4826     // WARNING PTR CHECK
4827     uint64_t cgen_var_346 = (uint64_t)(uintptr_t)local_pAllocator;
4828     stream->putBe64(cgen_var_346);
4829     if (local_pAllocator)
4830     {
4831         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
4832     }
4833     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
4834     if (((createInfoCount)))
4835     {
4836         uint64_t* cgen_var_347;
4837         stream->alloc((void**)&cgen_var_347, ((createInfoCount)) * 8);
4838         stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_347, ((createInfoCount)));
4839         stream->write((uint64_t*)cgen_var_347, ((createInfoCount)) * 8);
4840     }
4841     stream->setHandleMapping(resources->unwrapMapping());
4842     AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines readParams");
4843     stream->setHandleMapping(resources->createMapping());
4844     if (((createInfoCount)))
4845     {
4846         uint64_t* cgen_var_348;
4847         stream->alloc((void**)&cgen_var_348, ((createInfoCount)) * 8);
4848         stream->read((uint64_t*)cgen_var_348, ((createInfoCount)) * 8);
4849         stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_348, (VkPipeline*)pPipelines, ((createInfoCount)));
4850     }
4851     stream->unsetHandleMapping();
4852     AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines returnUnmarshal");
4853     VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
4854     stream->read(&vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult));
4855     countingStream->clearPool();
4856     stream->clearPool();
4857     pool->freeAll();
4858     mImpl->log("finish vkCreateGraphicsPipelines");;
4859     return vkCreateGraphicsPipelines_VkResult_return;
4860 }
4861 
vkCreateComputePipelines(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkComputePipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)4862 VkResult VkEncoder::vkCreateComputePipelines(
4863     VkDevice device,
4864     VkPipelineCache pipelineCache,
4865     uint32_t createInfoCount,
4866     const VkComputePipelineCreateInfo* pCreateInfos,
4867     const VkAllocationCallbacks* pAllocator,
4868     VkPipeline* pPipelines)
4869 {
4870     AEMU_SCOPED_TRACE("vkCreateComputePipelines encode");
4871     mImpl->log("start vkCreateComputePipelines");
4872     auto stream = mImpl->stream();
4873     auto countingStream = mImpl->countingStream();
4874     auto resources = mImpl->resources();
4875     auto pool = mImpl->pool();
4876     stream->setHandleMapping(resources->unwrapMapping());
4877     VkDevice local_device;
4878     VkPipelineCache local_pipelineCache;
4879     uint32_t local_createInfoCount;
4880     VkComputePipelineCreateInfo* local_pCreateInfos;
4881     VkAllocationCallbacks* local_pAllocator;
4882     local_device = device;
4883     local_pipelineCache = pipelineCache;
4884     local_createInfoCount = createInfoCount;
4885     local_pCreateInfos = nullptr;
4886     if (pCreateInfos)
4887     {
4888         local_pCreateInfos = (VkComputePipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkComputePipelineCreateInfo));
4889         for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4890         {
4891             deepcopy_VkComputePipelineCreateInfo(pool, pCreateInfos + i, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
4892         }
4893     }
4894     local_pAllocator = nullptr;
4895     if (pAllocator)
4896     {
4897         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
4898         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
4899     }
4900     local_pAllocator = nullptr;
4901     if (local_pCreateInfos)
4902     {
4903         for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4904         {
4905             transform_tohost_VkComputePipelineCreateInfo(mImpl->resources(), (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
4906         }
4907     }
4908     if (local_pAllocator)
4909     {
4910         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
4911     }
4912     countingStream->rewind();
4913     {
4914         uint64_t cgen_var_349;
4915         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_349, 1);
4916         countingStream->write((uint64_t*)&cgen_var_349, 1 * 8);
4917         uint64_t cgen_var_350;
4918         countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_350, 1);
4919         countingStream->write((uint64_t*)&cgen_var_350, 1 * 8);
4920         countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4921         for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4922         {
4923             marshal_VkComputePipelineCreateInfo(countingStream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
4924         }
4925         // WARNING PTR CHECK
4926         uint64_t cgen_var_351 = (uint64_t)(uintptr_t)local_pAllocator;
4927         countingStream->putBe64(cgen_var_351);
4928         if (local_pAllocator)
4929         {
4930             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
4931         }
4932         if (((createInfoCount)))
4933         {
4934             uint64_t* cgen_var_352;
4935             countingStream->alloc((void**)&cgen_var_352, ((createInfoCount)) * 8);
4936             countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_352, ((createInfoCount)));
4937             countingStream->write((uint64_t*)cgen_var_352, ((createInfoCount)) * 8);
4938         }
4939     }
4940     uint32_t packetSize_vkCreateComputePipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten();
4941     countingStream->rewind();
4942     uint32_t opcode_vkCreateComputePipelines = OP_vkCreateComputePipelines;
4943     stream->write(&opcode_vkCreateComputePipelines, sizeof(uint32_t));
4944     stream->write(&packetSize_vkCreateComputePipelines, sizeof(uint32_t));
4945     uint64_t cgen_var_353;
4946     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_353, 1);
4947     stream->write((uint64_t*)&cgen_var_353, 1 * 8);
4948     uint64_t cgen_var_354;
4949     stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_354, 1);
4950     stream->write((uint64_t*)&cgen_var_354, 1 * 8);
4951     stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t));
4952     for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i)
4953     {
4954         marshal_VkComputePipelineCreateInfo(stream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i));
4955     }
4956     // WARNING PTR CHECK
4957     uint64_t cgen_var_355 = (uint64_t)(uintptr_t)local_pAllocator;
4958     stream->putBe64(cgen_var_355);
4959     if (local_pAllocator)
4960     {
4961         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
4962     }
4963     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
4964     if (((createInfoCount)))
4965     {
4966         uint64_t* cgen_var_356;
4967         stream->alloc((void**)&cgen_var_356, ((createInfoCount)) * 8);
4968         stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_356, ((createInfoCount)));
4969         stream->write((uint64_t*)cgen_var_356, ((createInfoCount)) * 8);
4970     }
4971     stream->setHandleMapping(resources->unwrapMapping());
4972     AEMU_SCOPED_TRACE("vkCreateComputePipelines readParams");
4973     stream->setHandleMapping(resources->createMapping());
4974     if (((createInfoCount)))
4975     {
4976         uint64_t* cgen_var_357;
4977         stream->alloc((void**)&cgen_var_357, ((createInfoCount)) * 8);
4978         stream->read((uint64_t*)cgen_var_357, ((createInfoCount)) * 8);
4979         stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_357, (VkPipeline*)pPipelines, ((createInfoCount)));
4980     }
4981     stream->unsetHandleMapping();
4982     AEMU_SCOPED_TRACE("vkCreateComputePipelines returnUnmarshal");
4983     VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
4984     stream->read(&vkCreateComputePipelines_VkResult_return, sizeof(VkResult));
4985     countingStream->clearPool();
4986     stream->clearPool();
4987     pool->freeAll();
4988     mImpl->log("finish vkCreateComputePipelines");;
4989     return vkCreateComputePipelines_VkResult_return;
4990 }
4991 
vkDestroyPipeline(VkDevice device,VkPipeline pipeline,const VkAllocationCallbacks * pAllocator)4992 void VkEncoder::vkDestroyPipeline(
4993     VkDevice device,
4994     VkPipeline pipeline,
4995     const VkAllocationCallbacks* pAllocator)
4996 {
4997     AEMU_SCOPED_TRACE("vkDestroyPipeline encode");
4998     mImpl->log("start vkDestroyPipeline");
4999     auto stream = mImpl->stream();
5000     auto countingStream = mImpl->countingStream();
5001     auto resources = mImpl->resources();
5002     auto pool = mImpl->pool();
5003     stream->setHandleMapping(resources->unwrapMapping());
5004     VkDevice local_device;
5005     VkPipeline local_pipeline;
5006     VkAllocationCallbacks* local_pAllocator;
5007     local_device = device;
5008     local_pipeline = pipeline;
5009     local_pAllocator = nullptr;
5010     if (pAllocator)
5011     {
5012         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5013         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5014     }
5015     local_pAllocator = nullptr;
5016     if (local_pAllocator)
5017     {
5018         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
5019     }
5020     countingStream->rewind();
5021     {
5022         uint64_t cgen_var_358;
5023         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_358, 1);
5024         countingStream->write((uint64_t*)&cgen_var_358, 1 * 8);
5025         uint64_t cgen_var_359;
5026         countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_359, 1);
5027         countingStream->write((uint64_t*)&cgen_var_359, 1 * 8);
5028         // WARNING PTR CHECK
5029         uint64_t cgen_var_360 = (uint64_t)(uintptr_t)local_pAllocator;
5030         countingStream->putBe64(cgen_var_360);
5031         if (local_pAllocator)
5032         {
5033             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
5034         }
5035     }
5036     uint32_t packetSize_vkDestroyPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5037     countingStream->rewind();
5038     uint32_t opcode_vkDestroyPipeline = OP_vkDestroyPipeline;
5039     stream->write(&opcode_vkDestroyPipeline, sizeof(uint32_t));
5040     stream->write(&packetSize_vkDestroyPipeline, sizeof(uint32_t));
5041     uint64_t cgen_var_361;
5042     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_361, 1);
5043     stream->write((uint64_t*)&cgen_var_361, 1 * 8);
5044     uint64_t cgen_var_362;
5045     stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_362, 1);
5046     stream->write((uint64_t*)&cgen_var_362, 1 * 8);
5047     // WARNING PTR CHECK
5048     uint64_t cgen_var_363 = (uint64_t)(uintptr_t)local_pAllocator;
5049     stream->putBe64(cgen_var_363);
5050     if (local_pAllocator)
5051     {
5052         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
5053     }
5054     AEMU_SCOPED_TRACE("vkDestroyPipeline readParams");
5055     AEMU_SCOPED_TRACE("vkDestroyPipeline returnUnmarshal");
5056     resources->destroyMapping()->mapHandles_VkPipeline((VkPipeline*)&pipeline);
5057     mImpl->log("finish vkDestroyPipeline");;
5058 }
5059 
vkCreatePipelineLayout(VkDevice device,const VkPipelineLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPipelineLayout * pPipelineLayout)5060 VkResult VkEncoder::vkCreatePipelineLayout(
5061     VkDevice device,
5062     const VkPipelineLayoutCreateInfo* pCreateInfo,
5063     const VkAllocationCallbacks* pAllocator,
5064     VkPipelineLayout* pPipelineLayout)
5065 {
5066     AEMU_SCOPED_TRACE("vkCreatePipelineLayout encode");
5067     mImpl->log("start vkCreatePipelineLayout");
5068     auto stream = mImpl->stream();
5069     auto countingStream = mImpl->countingStream();
5070     auto resources = mImpl->resources();
5071     auto pool = mImpl->pool();
5072     stream->setHandleMapping(resources->unwrapMapping());
5073     VkDevice local_device;
5074     VkPipelineLayoutCreateInfo* local_pCreateInfo;
5075     VkAllocationCallbacks* local_pAllocator;
5076     local_device = device;
5077     local_pCreateInfo = nullptr;
5078     if (pCreateInfo)
5079     {
5080         local_pCreateInfo = (VkPipelineLayoutCreateInfo*)pool->alloc(sizeof(const VkPipelineLayoutCreateInfo));
5081         deepcopy_VkPipelineLayoutCreateInfo(pool, pCreateInfo, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
5082     }
5083     local_pAllocator = nullptr;
5084     if (pAllocator)
5085     {
5086         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5087         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5088     }
5089     local_pAllocator = nullptr;
5090     if (local_pCreateInfo)
5091     {
5092         transform_tohost_VkPipelineLayoutCreateInfo(mImpl->resources(), (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
5093     }
5094     if (local_pAllocator)
5095     {
5096         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
5097     }
5098     countingStream->rewind();
5099     {
5100         uint64_t cgen_var_364;
5101         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_364, 1);
5102         countingStream->write((uint64_t*)&cgen_var_364, 1 * 8);
5103         marshal_VkPipelineLayoutCreateInfo(countingStream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
5104         // WARNING PTR CHECK
5105         uint64_t cgen_var_365 = (uint64_t)(uintptr_t)local_pAllocator;
5106         countingStream->putBe64(cgen_var_365);
5107         if (local_pAllocator)
5108         {
5109             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
5110         }
5111         uint64_t cgen_var_366;
5112         countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_366, 1);
5113         countingStream->write((uint64_t*)&cgen_var_366, 8);
5114     }
5115     uint32_t packetSize_vkCreatePipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5116     countingStream->rewind();
5117     uint32_t opcode_vkCreatePipelineLayout = OP_vkCreatePipelineLayout;
5118     stream->write(&opcode_vkCreatePipelineLayout, sizeof(uint32_t));
5119     stream->write(&packetSize_vkCreatePipelineLayout, sizeof(uint32_t));
5120     uint64_t cgen_var_367;
5121     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_367, 1);
5122     stream->write((uint64_t*)&cgen_var_367, 1 * 8);
5123     marshal_VkPipelineLayoutCreateInfo(stream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo));
5124     // WARNING PTR CHECK
5125     uint64_t cgen_var_368 = (uint64_t)(uintptr_t)local_pAllocator;
5126     stream->putBe64(cgen_var_368);
5127     if (local_pAllocator)
5128     {
5129         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
5130     }
5131     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
5132     uint64_t cgen_var_369;
5133     stream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_369, 1);
5134     stream->write((uint64_t*)&cgen_var_369, 8);
5135     stream->setHandleMapping(resources->unwrapMapping());
5136     AEMU_SCOPED_TRACE("vkCreatePipelineLayout readParams");
5137     stream->setHandleMapping(resources->createMapping());
5138     uint64_t cgen_var_370;
5139     stream->read((uint64_t*)&cgen_var_370, 8);
5140     stream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_370, (VkPipelineLayout*)pPipelineLayout, 1);
5141     stream->unsetHandleMapping();
5142     AEMU_SCOPED_TRACE("vkCreatePipelineLayout returnUnmarshal");
5143     VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
5144     stream->read(&vkCreatePipelineLayout_VkResult_return, sizeof(VkResult));
5145     countingStream->clearPool();
5146     stream->clearPool();
5147     pool->freeAll();
5148     mImpl->log("finish vkCreatePipelineLayout");;
5149     return vkCreatePipelineLayout_VkResult_return;
5150 }
5151 
vkDestroyPipelineLayout(VkDevice device,VkPipelineLayout pipelineLayout,const VkAllocationCallbacks * pAllocator)5152 void VkEncoder::vkDestroyPipelineLayout(
5153     VkDevice device,
5154     VkPipelineLayout pipelineLayout,
5155     const VkAllocationCallbacks* pAllocator)
5156 {
5157     AEMU_SCOPED_TRACE("vkDestroyPipelineLayout encode");
5158     mImpl->log("start vkDestroyPipelineLayout");
5159     auto stream = mImpl->stream();
5160     auto countingStream = mImpl->countingStream();
5161     auto resources = mImpl->resources();
5162     auto pool = mImpl->pool();
5163     stream->setHandleMapping(resources->unwrapMapping());
5164     VkDevice local_device;
5165     VkPipelineLayout local_pipelineLayout;
5166     VkAllocationCallbacks* local_pAllocator;
5167     local_device = device;
5168     local_pipelineLayout = pipelineLayout;
5169     local_pAllocator = nullptr;
5170     if (pAllocator)
5171     {
5172         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5173         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5174     }
5175     local_pAllocator = nullptr;
5176     if (local_pAllocator)
5177     {
5178         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
5179     }
5180     countingStream->rewind();
5181     {
5182         uint64_t cgen_var_371;
5183         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_371, 1);
5184         countingStream->write((uint64_t*)&cgen_var_371, 1 * 8);
5185         uint64_t cgen_var_372;
5186         countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_372, 1);
5187         countingStream->write((uint64_t*)&cgen_var_372, 1 * 8);
5188         // WARNING PTR CHECK
5189         uint64_t cgen_var_373 = (uint64_t)(uintptr_t)local_pAllocator;
5190         countingStream->putBe64(cgen_var_373);
5191         if (local_pAllocator)
5192         {
5193             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
5194         }
5195     }
5196     uint32_t packetSize_vkDestroyPipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5197     countingStream->rewind();
5198     uint32_t opcode_vkDestroyPipelineLayout = OP_vkDestroyPipelineLayout;
5199     stream->write(&opcode_vkDestroyPipelineLayout, sizeof(uint32_t));
5200     stream->write(&packetSize_vkDestroyPipelineLayout, sizeof(uint32_t));
5201     uint64_t cgen_var_374;
5202     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_374, 1);
5203     stream->write((uint64_t*)&cgen_var_374, 1 * 8);
5204     uint64_t cgen_var_375;
5205     stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_375, 1);
5206     stream->write((uint64_t*)&cgen_var_375, 1 * 8);
5207     // WARNING PTR CHECK
5208     uint64_t cgen_var_376 = (uint64_t)(uintptr_t)local_pAllocator;
5209     stream->putBe64(cgen_var_376);
5210     if (local_pAllocator)
5211     {
5212         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
5213     }
5214     AEMU_SCOPED_TRACE("vkDestroyPipelineLayout readParams");
5215     AEMU_SCOPED_TRACE("vkDestroyPipelineLayout returnUnmarshal");
5216     resources->destroyMapping()->mapHandles_VkPipelineLayout((VkPipelineLayout*)&pipelineLayout);
5217     mImpl->log("finish vkDestroyPipelineLayout");;
5218 }
5219 
vkCreateSampler(VkDevice device,const VkSamplerCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSampler * pSampler)5220 VkResult VkEncoder::vkCreateSampler(
5221     VkDevice device,
5222     const VkSamplerCreateInfo* pCreateInfo,
5223     const VkAllocationCallbacks* pAllocator,
5224     VkSampler* pSampler)
5225 {
5226     AEMU_SCOPED_TRACE("vkCreateSampler encode");
5227     mImpl->log("start vkCreateSampler");
5228     auto stream = mImpl->stream();
5229     auto countingStream = mImpl->countingStream();
5230     auto resources = mImpl->resources();
5231     auto pool = mImpl->pool();
5232     stream->setHandleMapping(resources->unwrapMapping());
5233     VkDevice local_device;
5234     VkSamplerCreateInfo* local_pCreateInfo;
5235     VkAllocationCallbacks* local_pAllocator;
5236     local_device = device;
5237     local_pCreateInfo = nullptr;
5238     if (pCreateInfo)
5239     {
5240         local_pCreateInfo = (VkSamplerCreateInfo*)pool->alloc(sizeof(const VkSamplerCreateInfo));
5241         deepcopy_VkSamplerCreateInfo(pool, pCreateInfo, (VkSamplerCreateInfo*)(local_pCreateInfo));
5242     }
5243     local_pAllocator = nullptr;
5244     if (pAllocator)
5245     {
5246         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5247         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5248     }
5249     local_pAllocator = nullptr;
5250     if (local_pCreateInfo)
5251     {
5252         transform_tohost_VkSamplerCreateInfo(mImpl->resources(), (VkSamplerCreateInfo*)(local_pCreateInfo));
5253     }
5254     if (local_pAllocator)
5255     {
5256         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
5257     }
5258     countingStream->rewind();
5259     {
5260         uint64_t cgen_var_377;
5261         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_377, 1);
5262         countingStream->write((uint64_t*)&cgen_var_377, 1 * 8);
5263         marshal_VkSamplerCreateInfo(countingStream, (VkSamplerCreateInfo*)(local_pCreateInfo));
5264         // WARNING PTR CHECK
5265         uint64_t cgen_var_378 = (uint64_t)(uintptr_t)local_pAllocator;
5266         countingStream->putBe64(cgen_var_378);
5267         if (local_pAllocator)
5268         {
5269             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
5270         }
5271         uint64_t cgen_var_379;
5272         countingStream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_379, 1);
5273         countingStream->write((uint64_t*)&cgen_var_379, 8);
5274     }
5275     uint32_t packetSize_vkCreateSampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5276     countingStream->rewind();
5277     uint32_t opcode_vkCreateSampler = OP_vkCreateSampler;
5278     stream->write(&opcode_vkCreateSampler, sizeof(uint32_t));
5279     stream->write(&packetSize_vkCreateSampler, sizeof(uint32_t));
5280     uint64_t cgen_var_380;
5281     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_380, 1);
5282     stream->write((uint64_t*)&cgen_var_380, 1 * 8);
5283     marshal_VkSamplerCreateInfo(stream, (VkSamplerCreateInfo*)(local_pCreateInfo));
5284     // WARNING PTR CHECK
5285     uint64_t cgen_var_381 = (uint64_t)(uintptr_t)local_pAllocator;
5286     stream->putBe64(cgen_var_381);
5287     if (local_pAllocator)
5288     {
5289         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
5290     }
5291     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
5292     uint64_t cgen_var_382;
5293     stream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_382, 1);
5294     stream->write((uint64_t*)&cgen_var_382, 8);
5295     stream->setHandleMapping(resources->unwrapMapping());
5296     AEMU_SCOPED_TRACE("vkCreateSampler readParams");
5297     stream->setHandleMapping(resources->createMapping());
5298     uint64_t cgen_var_383;
5299     stream->read((uint64_t*)&cgen_var_383, 8);
5300     stream->handleMapping()->mapHandles_u64_VkSampler(&cgen_var_383, (VkSampler*)pSampler, 1);
5301     stream->unsetHandleMapping();
5302     AEMU_SCOPED_TRACE("vkCreateSampler returnUnmarshal");
5303     VkResult vkCreateSampler_VkResult_return = (VkResult)0;
5304     stream->read(&vkCreateSampler_VkResult_return, sizeof(VkResult));
5305     countingStream->clearPool();
5306     stream->clearPool();
5307     pool->freeAll();
5308     mImpl->log("finish vkCreateSampler");;
5309     return vkCreateSampler_VkResult_return;
5310 }
5311 
vkDestroySampler(VkDevice device,VkSampler sampler,const VkAllocationCallbacks * pAllocator)5312 void VkEncoder::vkDestroySampler(
5313     VkDevice device,
5314     VkSampler sampler,
5315     const VkAllocationCallbacks* pAllocator)
5316 {
5317     AEMU_SCOPED_TRACE("vkDestroySampler encode");
5318     mImpl->log("start vkDestroySampler");
5319     auto stream = mImpl->stream();
5320     auto countingStream = mImpl->countingStream();
5321     auto resources = mImpl->resources();
5322     auto pool = mImpl->pool();
5323     stream->setHandleMapping(resources->unwrapMapping());
5324     VkDevice local_device;
5325     VkSampler local_sampler;
5326     VkAllocationCallbacks* local_pAllocator;
5327     local_device = device;
5328     local_sampler = sampler;
5329     local_pAllocator = nullptr;
5330     if (pAllocator)
5331     {
5332         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5333         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5334     }
5335     local_pAllocator = nullptr;
5336     if (local_pAllocator)
5337     {
5338         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
5339     }
5340     countingStream->rewind();
5341     {
5342         uint64_t cgen_var_384;
5343         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_384, 1);
5344         countingStream->write((uint64_t*)&cgen_var_384, 1 * 8);
5345         uint64_t cgen_var_385;
5346         countingStream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_385, 1);
5347         countingStream->write((uint64_t*)&cgen_var_385, 1 * 8);
5348         // WARNING PTR CHECK
5349         uint64_t cgen_var_386 = (uint64_t)(uintptr_t)local_pAllocator;
5350         countingStream->putBe64(cgen_var_386);
5351         if (local_pAllocator)
5352         {
5353             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
5354         }
5355     }
5356     uint32_t packetSize_vkDestroySampler = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5357     countingStream->rewind();
5358     uint32_t opcode_vkDestroySampler = OP_vkDestroySampler;
5359     stream->write(&opcode_vkDestroySampler, sizeof(uint32_t));
5360     stream->write(&packetSize_vkDestroySampler, sizeof(uint32_t));
5361     uint64_t cgen_var_387;
5362     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_387, 1);
5363     stream->write((uint64_t*)&cgen_var_387, 1 * 8);
5364     uint64_t cgen_var_388;
5365     stream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_388, 1);
5366     stream->write((uint64_t*)&cgen_var_388, 1 * 8);
5367     // WARNING PTR CHECK
5368     uint64_t cgen_var_389 = (uint64_t)(uintptr_t)local_pAllocator;
5369     stream->putBe64(cgen_var_389);
5370     if (local_pAllocator)
5371     {
5372         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
5373     }
5374     AEMU_SCOPED_TRACE("vkDestroySampler readParams");
5375     AEMU_SCOPED_TRACE("vkDestroySampler returnUnmarshal");
5376     resources->destroyMapping()->mapHandles_VkSampler((VkSampler*)&sampler);
5377     mImpl->log("finish vkDestroySampler");;
5378 }
5379 
vkCreateDescriptorSetLayout(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorSetLayout * pSetLayout)5380 VkResult VkEncoder::vkCreateDescriptorSetLayout(
5381     VkDevice device,
5382     const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
5383     const VkAllocationCallbacks* pAllocator,
5384     VkDescriptorSetLayout* pSetLayout)
5385 {
5386     AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout encode");
5387     mImpl->log("start vkCreateDescriptorSetLayout");
5388     auto stream = mImpl->stream();
5389     auto countingStream = mImpl->countingStream();
5390     auto resources = mImpl->resources();
5391     auto pool = mImpl->pool();
5392     stream->setHandleMapping(resources->unwrapMapping());
5393     VkDevice local_device;
5394     VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
5395     VkAllocationCallbacks* local_pAllocator;
5396     local_device = device;
5397     local_pCreateInfo = nullptr;
5398     if (pCreateInfo)
5399     {
5400         local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
5401         deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
5402     }
5403     local_pAllocator = nullptr;
5404     if (pAllocator)
5405     {
5406         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5407         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5408     }
5409     local_pAllocator = nullptr;
5410     if (local_pCreateInfo)
5411     {
5412         transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
5413     }
5414     if (local_pAllocator)
5415     {
5416         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
5417     }
5418     countingStream->rewind();
5419     {
5420         uint64_t cgen_var_390;
5421         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_390, 1);
5422         countingStream->write((uint64_t*)&cgen_var_390, 1 * 8);
5423         marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
5424         // WARNING PTR CHECK
5425         uint64_t cgen_var_391 = (uint64_t)(uintptr_t)local_pAllocator;
5426         countingStream->putBe64(cgen_var_391);
5427         if (local_pAllocator)
5428         {
5429             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
5430         }
5431         uint64_t cgen_var_392;
5432         countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_392, 1);
5433         countingStream->write((uint64_t*)&cgen_var_392, 8);
5434     }
5435     uint32_t packetSize_vkCreateDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5436     countingStream->rewind();
5437     uint32_t opcode_vkCreateDescriptorSetLayout = OP_vkCreateDescriptorSetLayout;
5438     stream->write(&opcode_vkCreateDescriptorSetLayout, sizeof(uint32_t));
5439     stream->write(&packetSize_vkCreateDescriptorSetLayout, sizeof(uint32_t));
5440     uint64_t cgen_var_393;
5441     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_393, 1);
5442     stream->write((uint64_t*)&cgen_var_393, 1 * 8);
5443     marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
5444     // WARNING PTR CHECK
5445     uint64_t cgen_var_394 = (uint64_t)(uintptr_t)local_pAllocator;
5446     stream->putBe64(cgen_var_394);
5447     if (local_pAllocator)
5448     {
5449         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
5450     }
5451     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
5452     uint64_t cgen_var_395;
5453     stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_395, 1);
5454     stream->write((uint64_t*)&cgen_var_395, 8);
5455     stream->setHandleMapping(resources->unwrapMapping());
5456     AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout readParams");
5457     stream->setHandleMapping(resources->createMapping());
5458     uint64_t cgen_var_396;
5459     stream->read((uint64_t*)&cgen_var_396, 8);
5460     stream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(&cgen_var_396, (VkDescriptorSetLayout*)pSetLayout, 1);
5461     stream->unsetHandleMapping();
5462     AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout returnUnmarshal");
5463     VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
5464     stream->read(&vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult));
5465     countingStream->clearPool();
5466     stream->clearPool();
5467     pool->freeAll();
5468     mImpl->log("finish vkCreateDescriptorSetLayout");;
5469     return vkCreateDescriptorSetLayout_VkResult_return;
5470 }
5471 
vkDestroyDescriptorSetLayout(VkDevice device,VkDescriptorSetLayout descriptorSetLayout,const VkAllocationCallbacks * pAllocator)5472 void VkEncoder::vkDestroyDescriptorSetLayout(
5473     VkDevice device,
5474     VkDescriptorSetLayout descriptorSetLayout,
5475     const VkAllocationCallbacks* pAllocator)
5476 {
5477     AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout encode");
5478     mImpl->log("start vkDestroyDescriptorSetLayout");
5479     auto stream = mImpl->stream();
5480     auto countingStream = mImpl->countingStream();
5481     auto resources = mImpl->resources();
5482     auto pool = mImpl->pool();
5483     stream->setHandleMapping(resources->unwrapMapping());
5484     VkDevice local_device;
5485     VkDescriptorSetLayout local_descriptorSetLayout;
5486     VkAllocationCallbacks* local_pAllocator;
5487     local_device = device;
5488     local_descriptorSetLayout = descriptorSetLayout;
5489     local_pAllocator = nullptr;
5490     if (pAllocator)
5491     {
5492         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5493         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5494     }
5495     local_pAllocator = nullptr;
5496     if (local_pAllocator)
5497     {
5498         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
5499     }
5500     countingStream->rewind();
5501     {
5502         uint64_t cgen_var_397;
5503         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_397, 1);
5504         countingStream->write((uint64_t*)&cgen_var_397, 1 * 8);
5505         uint64_t cgen_var_398;
5506         countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_398, 1);
5507         countingStream->write((uint64_t*)&cgen_var_398, 1 * 8);
5508         // WARNING PTR CHECK
5509         uint64_t cgen_var_399 = (uint64_t)(uintptr_t)local_pAllocator;
5510         countingStream->putBe64(cgen_var_399);
5511         if (local_pAllocator)
5512         {
5513             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
5514         }
5515     }
5516     uint32_t packetSize_vkDestroyDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5517     countingStream->rewind();
5518     uint32_t opcode_vkDestroyDescriptorSetLayout = OP_vkDestroyDescriptorSetLayout;
5519     stream->write(&opcode_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
5520     stream->write(&packetSize_vkDestroyDescriptorSetLayout, sizeof(uint32_t));
5521     uint64_t cgen_var_400;
5522     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_400, 1);
5523     stream->write((uint64_t*)&cgen_var_400, 1 * 8);
5524     uint64_t cgen_var_401;
5525     stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_401, 1);
5526     stream->write((uint64_t*)&cgen_var_401, 1 * 8);
5527     // WARNING PTR CHECK
5528     uint64_t cgen_var_402 = (uint64_t)(uintptr_t)local_pAllocator;
5529     stream->putBe64(cgen_var_402);
5530     if (local_pAllocator)
5531     {
5532         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
5533     }
5534     AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout readParams");
5535     AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout returnUnmarshal");
5536     resources->destroyMapping()->mapHandles_VkDescriptorSetLayout((VkDescriptorSetLayout*)&descriptorSetLayout);
5537     mImpl->log("finish vkDestroyDescriptorSetLayout");;
5538 }
5539 
vkCreateDescriptorPool(VkDevice device,const VkDescriptorPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorPool * pDescriptorPool)5540 VkResult VkEncoder::vkCreateDescriptorPool(
5541     VkDevice device,
5542     const VkDescriptorPoolCreateInfo* pCreateInfo,
5543     const VkAllocationCallbacks* pAllocator,
5544     VkDescriptorPool* pDescriptorPool)
5545 {
5546     AEMU_SCOPED_TRACE("vkCreateDescriptorPool encode");
5547     mImpl->log("start vkCreateDescriptorPool");
5548     auto stream = mImpl->stream();
5549     auto countingStream = mImpl->countingStream();
5550     auto resources = mImpl->resources();
5551     auto pool = mImpl->pool();
5552     stream->setHandleMapping(resources->unwrapMapping());
5553     VkDevice local_device;
5554     VkDescriptorPoolCreateInfo* local_pCreateInfo;
5555     VkAllocationCallbacks* local_pAllocator;
5556     local_device = device;
5557     local_pCreateInfo = nullptr;
5558     if (pCreateInfo)
5559     {
5560         local_pCreateInfo = (VkDescriptorPoolCreateInfo*)pool->alloc(sizeof(const VkDescriptorPoolCreateInfo));
5561         deepcopy_VkDescriptorPoolCreateInfo(pool, pCreateInfo, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
5562     }
5563     local_pAllocator = nullptr;
5564     if (pAllocator)
5565     {
5566         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5567         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5568     }
5569     local_pAllocator = nullptr;
5570     if (local_pCreateInfo)
5571     {
5572         transform_tohost_VkDescriptorPoolCreateInfo(mImpl->resources(), (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
5573     }
5574     if (local_pAllocator)
5575     {
5576         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
5577     }
5578     countingStream->rewind();
5579     {
5580         uint64_t cgen_var_403;
5581         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_403, 1);
5582         countingStream->write((uint64_t*)&cgen_var_403, 1 * 8);
5583         marshal_VkDescriptorPoolCreateInfo(countingStream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
5584         // WARNING PTR CHECK
5585         uint64_t cgen_var_404 = (uint64_t)(uintptr_t)local_pAllocator;
5586         countingStream->putBe64(cgen_var_404);
5587         if (local_pAllocator)
5588         {
5589             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
5590         }
5591         uint64_t cgen_var_405;
5592         countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_405, 1);
5593         countingStream->write((uint64_t*)&cgen_var_405, 8);
5594     }
5595     uint32_t packetSize_vkCreateDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5596     countingStream->rewind();
5597     uint32_t opcode_vkCreateDescriptorPool = OP_vkCreateDescriptorPool;
5598     stream->write(&opcode_vkCreateDescriptorPool, sizeof(uint32_t));
5599     stream->write(&packetSize_vkCreateDescriptorPool, sizeof(uint32_t));
5600     uint64_t cgen_var_406;
5601     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_406, 1);
5602     stream->write((uint64_t*)&cgen_var_406, 1 * 8);
5603     marshal_VkDescriptorPoolCreateInfo(stream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo));
5604     // WARNING PTR CHECK
5605     uint64_t cgen_var_407 = (uint64_t)(uintptr_t)local_pAllocator;
5606     stream->putBe64(cgen_var_407);
5607     if (local_pAllocator)
5608     {
5609         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
5610     }
5611     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
5612     uint64_t cgen_var_408;
5613     stream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_408, 1);
5614     stream->write((uint64_t*)&cgen_var_408, 8);
5615     stream->setHandleMapping(resources->unwrapMapping());
5616     AEMU_SCOPED_TRACE("vkCreateDescriptorPool readParams");
5617     stream->setHandleMapping(resources->createMapping());
5618     uint64_t cgen_var_409;
5619     stream->read((uint64_t*)&cgen_var_409, 8);
5620     stream->handleMapping()->mapHandles_u64_VkDescriptorPool(&cgen_var_409, (VkDescriptorPool*)pDescriptorPool, 1);
5621     stream->unsetHandleMapping();
5622     AEMU_SCOPED_TRACE("vkCreateDescriptorPool returnUnmarshal");
5623     VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
5624     stream->read(&vkCreateDescriptorPool_VkResult_return, sizeof(VkResult));
5625     countingStream->clearPool();
5626     stream->clearPool();
5627     pool->freeAll();
5628     mImpl->log("finish vkCreateDescriptorPool");;
5629     return vkCreateDescriptorPool_VkResult_return;
5630 }
5631 
vkDestroyDescriptorPool(VkDevice device,VkDescriptorPool descriptorPool,const VkAllocationCallbacks * pAllocator)5632 void VkEncoder::vkDestroyDescriptorPool(
5633     VkDevice device,
5634     VkDescriptorPool descriptorPool,
5635     const VkAllocationCallbacks* pAllocator)
5636 {
5637     AEMU_SCOPED_TRACE("vkDestroyDescriptorPool encode");
5638     mImpl->log("start vkDestroyDescriptorPool");
5639     auto stream = mImpl->stream();
5640     auto countingStream = mImpl->countingStream();
5641     auto resources = mImpl->resources();
5642     auto pool = mImpl->pool();
5643     stream->setHandleMapping(resources->unwrapMapping());
5644     VkDevice local_device;
5645     VkDescriptorPool local_descriptorPool;
5646     VkAllocationCallbacks* local_pAllocator;
5647     local_device = device;
5648     local_descriptorPool = descriptorPool;
5649     local_pAllocator = nullptr;
5650     if (pAllocator)
5651     {
5652         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
5653         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
5654     }
5655     local_pAllocator = nullptr;
5656     if (local_pAllocator)
5657     {
5658         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
5659     }
5660     countingStream->rewind();
5661     {
5662         uint64_t cgen_var_410;
5663         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_410, 1);
5664         countingStream->write((uint64_t*)&cgen_var_410, 1 * 8);
5665         uint64_t cgen_var_411;
5666         countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_411, 1);
5667         countingStream->write((uint64_t*)&cgen_var_411, 1 * 8);
5668         // WARNING PTR CHECK
5669         uint64_t cgen_var_412 = (uint64_t)(uintptr_t)local_pAllocator;
5670         countingStream->putBe64(cgen_var_412);
5671         if (local_pAllocator)
5672         {
5673             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
5674         }
5675     }
5676     uint32_t packetSize_vkDestroyDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5677     countingStream->rewind();
5678     uint32_t opcode_vkDestroyDescriptorPool = OP_vkDestroyDescriptorPool;
5679     stream->write(&opcode_vkDestroyDescriptorPool, sizeof(uint32_t));
5680     stream->write(&packetSize_vkDestroyDescriptorPool, sizeof(uint32_t));
5681     uint64_t cgen_var_413;
5682     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_413, 1);
5683     stream->write((uint64_t*)&cgen_var_413, 1 * 8);
5684     uint64_t cgen_var_414;
5685     stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_414, 1);
5686     stream->write((uint64_t*)&cgen_var_414, 1 * 8);
5687     // WARNING PTR CHECK
5688     uint64_t cgen_var_415 = (uint64_t)(uintptr_t)local_pAllocator;
5689     stream->putBe64(cgen_var_415);
5690     if (local_pAllocator)
5691     {
5692         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
5693     }
5694     AEMU_SCOPED_TRACE("vkDestroyDescriptorPool readParams");
5695     AEMU_SCOPED_TRACE("vkDestroyDescriptorPool returnUnmarshal");
5696     resources->destroyMapping()->mapHandles_VkDescriptorPool((VkDescriptorPool*)&descriptorPool);
5697     mImpl->log("finish vkDestroyDescriptorPool");;
5698 }
5699 
vkResetDescriptorPool(VkDevice device,VkDescriptorPool descriptorPool,VkDescriptorPoolResetFlags flags)5700 VkResult VkEncoder::vkResetDescriptorPool(
5701     VkDevice device,
5702     VkDescriptorPool descriptorPool,
5703     VkDescriptorPoolResetFlags flags)
5704 {
5705     AEMU_SCOPED_TRACE("vkResetDescriptorPool encode");
5706     mImpl->log("start vkResetDescriptorPool");
5707     auto stream = mImpl->stream();
5708     auto countingStream = mImpl->countingStream();
5709     auto resources = mImpl->resources();
5710     auto pool = mImpl->pool();
5711     stream->setHandleMapping(resources->unwrapMapping());
5712     VkDevice local_device;
5713     VkDescriptorPool local_descriptorPool;
5714     VkDescriptorPoolResetFlags local_flags;
5715     local_device = device;
5716     local_descriptorPool = descriptorPool;
5717     local_flags = flags;
5718     countingStream->rewind();
5719     {
5720         uint64_t cgen_var_416;
5721         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_416, 1);
5722         countingStream->write((uint64_t*)&cgen_var_416, 1 * 8);
5723         uint64_t cgen_var_417;
5724         countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_417, 1);
5725         countingStream->write((uint64_t*)&cgen_var_417, 1 * 8);
5726         countingStream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
5727     }
5728     uint32_t packetSize_vkResetDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5729     countingStream->rewind();
5730     uint32_t opcode_vkResetDescriptorPool = OP_vkResetDescriptorPool;
5731     stream->write(&opcode_vkResetDescriptorPool, sizeof(uint32_t));
5732     stream->write(&packetSize_vkResetDescriptorPool, sizeof(uint32_t));
5733     uint64_t cgen_var_418;
5734     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_418, 1);
5735     stream->write((uint64_t*)&cgen_var_418, 1 * 8);
5736     uint64_t cgen_var_419;
5737     stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_419, 1);
5738     stream->write((uint64_t*)&cgen_var_419, 1 * 8);
5739     stream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags));
5740     AEMU_SCOPED_TRACE("vkResetDescriptorPool readParams");
5741     AEMU_SCOPED_TRACE("vkResetDescriptorPool returnUnmarshal");
5742     VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
5743     stream->read(&vkResetDescriptorPool_VkResult_return, sizeof(VkResult));
5744     countingStream->clearPool();
5745     stream->clearPool();
5746     pool->freeAll();
5747     mImpl->log("finish vkResetDescriptorPool");;
5748     return vkResetDescriptorPool_VkResult_return;
5749 }
5750 
vkAllocateDescriptorSets(VkDevice device,const VkDescriptorSetAllocateInfo * pAllocateInfo,VkDescriptorSet * pDescriptorSets)5751 VkResult VkEncoder::vkAllocateDescriptorSets(
5752     VkDevice device,
5753     const VkDescriptorSetAllocateInfo* pAllocateInfo,
5754     VkDescriptorSet* pDescriptorSets)
5755 {
5756     AEMU_SCOPED_TRACE("vkAllocateDescriptorSets encode");
5757     mImpl->log("start vkAllocateDescriptorSets");
5758     auto stream = mImpl->stream();
5759     auto countingStream = mImpl->countingStream();
5760     auto resources = mImpl->resources();
5761     auto pool = mImpl->pool();
5762     stream->setHandleMapping(resources->unwrapMapping());
5763     VkDevice local_device;
5764     VkDescriptorSetAllocateInfo* local_pAllocateInfo;
5765     local_device = device;
5766     local_pAllocateInfo = nullptr;
5767     if (pAllocateInfo)
5768     {
5769         local_pAllocateInfo = (VkDescriptorSetAllocateInfo*)pool->alloc(sizeof(const VkDescriptorSetAllocateInfo));
5770         deepcopy_VkDescriptorSetAllocateInfo(pool, pAllocateInfo, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
5771     }
5772     if (local_pAllocateInfo)
5773     {
5774         transform_tohost_VkDescriptorSetAllocateInfo(mImpl->resources(), (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
5775     }
5776     countingStream->rewind();
5777     {
5778         uint64_t cgen_var_420;
5779         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_420, 1);
5780         countingStream->write((uint64_t*)&cgen_var_420, 1 * 8);
5781         marshal_VkDescriptorSetAllocateInfo(countingStream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
5782         if (pAllocateInfo->descriptorSetCount)
5783         {
5784             uint64_t* cgen_var_421;
5785             countingStream->alloc((void**)&cgen_var_421, pAllocateInfo->descriptorSetCount * 8);
5786             countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_421, pAllocateInfo->descriptorSetCount);
5787             countingStream->write((uint64_t*)cgen_var_421, pAllocateInfo->descriptorSetCount * 8);
5788         }
5789     }
5790     uint32_t packetSize_vkAllocateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5791     countingStream->rewind();
5792     uint32_t opcode_vkAllocateDescriptorSets = OP_vkAllocateDescriptorSets;
5793     stream->write(&opcode_vkAllocateDescriptorSets, sizeof(uint32_t));
5794     stream->write(&packetSize_vkAllocateDescriptorSets, sizeof(uint32_t));
5795     uint64_t cgen_var_422;
5796     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_422, 1);
5797     stream->write((uint64_t*)&cgen_var_422, 1 * 8);
5798     marshal_VkDescriptorSetAllocateInfo(stream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo));
5799     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
5800     if (pAllocateInfo->descriptorSetCount)
5801     {
5802         uint64_t* cgen_var_423;
5803         stream->alloc((void**)&cgen_var_423, pAllocateInfo->descriptorSetCount * 8);
5804         stream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_423, pAllocateInfo->descriptorSetCount);
5805         stream->write((uint64_t*)cgen_var_423, pAllocateInfo->descriptorSetCount * 8);
5806     }
5807     stream->setHandleMapping(resources->unwrapMapping());
5808     AEMU_SCOPED_TRACE("vkAllocateDescriptorSets readParams");
5809     stream->setHandleMapping(resources->createMapping());
5810     if (pAllocateInfo->descriptorSetCount)
5811     {
5812         uint64_t* cgen_var_424;
5813         stream->alloc((void**)&cgen_var_424, pAllocateInfo->descriptorSetCount * 8);
5814         stream->read((uint64_t*)cgen_var_424, pAllocateInfo->descriptorSetCount * 8);
5815         stream->handleMapping()->mapHandles_u64_VkDescriptorSet(cgen_var_424, (VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount);
5816     }
5817     stream->unsetHandleMapping();
5818     AEMU_SCOPED_TRACE("vkAllocateDescriptorSets returnUnmarshal");
5819     VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
5820     stream->read(&vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult));
5821     countingStream->clearPool();
5822     stream->clearPool();
5823     pool->freeAll();
5824     mImpl->log("finish vkAllocateDescriptorSets");;
5825     return vkAllocateDescriptorSets_VkResult_return;
5826 }
5827 
vkFreeDescriptorSets(VkDevice device,VkDescriptorPool descriptorPool,uint32_t descriptorSetCount,const VkDescriptorSet * pDescriptorSets)5828 VkResult VkEncoder::vkFreeDescriptorSets(
5829     VkDevice device,
5830     VkDescriptorPool descriptorPool,
5831     uint32_t descriptorSetCount,
5832     const VkDescriptorSet* pDescriptorSets)
5833 {
5834     AEMU_SCOPED_TRACE("vkFreeDescriptorSets encode");
5835     mImpl->log("start vkFreeDescriptorSets");
5836     auto stream = mImpl->stream();
5837     auto countingStream = mImpl->countingStream();
5838     auto resources = mImpl->resources();
5839     auto pool = mImpl->pool();
5840     stream->setHandleMapping(resources->unwrapMapping());
5841     VkDevice local_device;
5842     VkDescriptorPool local_descriptorPool;
5843     uint32_t local_descriptorSetCount;
5844     VkDescriptorSet* local_pDescriptorSets;
5845     local_device = device;
5846     local_descriptorPool = descriptorPool;
5847     local_descriptorSetCount = descriptorSetCount;
5848     local_pDescriptorSets = nullptr;
5849     if (pDescriptorSets)
5850     {
5851         local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
5852     }
5853     countingStream->rewind();
5854     {
5855         uint64_t cgen_var_425;
5856         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_425, 1);
5857         countingStream->write((uint64_t*)&cgen_var_425, 1 * 8);
5858         uint64_t cgen_var_426;
5859         countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_426, 1);
5860         countingStream->write((uint64_t*)&cgen_var_426, 1 * 8);
5861         countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
5862         // WARNING PTR CHECK
5863         uint64_t cgen_var_427 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5864         countingStream->putBe64(cgen_var_427);
5865         if (local_pDescriptorSets)
5866         {
5867             if (((descriptorSetCount)))
5868             {
5869                 uint64_t* cgen_var_428;
5870                 countingStream->alloc((void**)&cgen_var_428, ((descriptorSetCount)) * 8);
5871                 countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_428, ((descriptorSetCount)));
5872                 countingStream->write((uint64_t*)cgen_var_428, ((descriptorSetCount)) * 8);
5873             }
5874         }
5875     }
5876     uint32_t packetSize_vkFreeDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5877     countingStream->rewind();
5878     uint32_t opcode_vkFreeDescriptorSets = OP_vkFreeDescriptorSets;
5879     stream->write(&opcode_vkFreeDescriptorSets, sizeof(uint32_t));
5880     stream->write(&packetSize_vkFreeDescriptorSets, sizeof(uint32_t));
5881     uint64_t cgen_var_429;
5882     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_429, 1);
5883     stream->write((uint64_t*)&cgen_var_429, 1 * 8);
5884     uint64_t cgen_var_430;
5885     stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_430, 1);
5886     stream->write((uint64_t*)&cgen_var_430, 1 * 8);
5887     stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
5888     // WARNING PTR CHECK
5889     uint64_t cgen_var_431 = (uint64_t)(uintptr_t)local_pDescriptorSets;
5890     stream->putBe64(cgen_var_431);
5891     if (local_pDescriptorSets)
5892     {
5893         if (((descriptorSetCount)))
5894         {
5895             uint64_t* cgen_var_432;
5896             stream->alloc((void**)&cgen_var_432, ((descriptorSetCount)) * 8);
5897             stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_432, ((descriptorSetCount)));
5898             stream->write((uint64_t*)cgen_var_432, ((descriptorSetCount)) * 8);
5899         }
5900     }
5901     AEMU_SCOPED_TRACE("vkFreeDescriptorSets readParams");
5902     AEMU_SCOPED_TRACE("vkFreeDescriptorSets returnUnmarshal");
5903     VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
5904     stream->read(&vkFreeDescriptorSets_VkResult_return, sizeof(VkResult));
5905     countingStream->clearPool();
5906     stream->clearPool();
5907     pool->freeAll();
5908     if (pDescriptorSets)
5909     {
5910         resources->destroyMapping()->mapHandles_VkDescriptorSet((VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount)));
5911     }
5912     mImpl->log("finish vkFreeDescriptorSets");;
5913     return vkFreeDescriptorSets_VkResult_return;
5914 }
5915 
vkUpdateDescriptorSets(VkDevice device,uint32_t descriptorWriteCount,const VkWriteDescriptorSet * pDescriptorWrites,uint32_t descriptorCopyCount,const VkCopyDescriptorSet * pDescriptorCopies)5916 void VkEncoder::vkUpdateDescriptorSets(
5917     VkDevice device,
5918     uint32_t descriptorWriteCount,
5919     const VkWriteDescriptorSet* pDescriptorWrites,
5920     uint32_t descriptorCopyCount,
5921     const VkCopyDescriptorSet* pDescriptorCopies)
5922 {
5923     AEMU_SCOPED_TRACE("vkUpdateDescriptorSets encode");
5924     mImpl->log("start vkUpdateDescriptorSets");
5925     auto stream = mImpl->stream();
5926     auto countingStream = mImpl->countingStream();
5927     auto resources = mImpl->resources();
5928     auto pool = mImpl->pool();
5929     stream->setHandleMapping(resources->unwrapMapping());
5930     VkDevice local_device;
5931     uint32_t local_descriptorWriteCount;
5932     VkWriteDescriptorSet* local_pDescriptorWrites;
5933     uint32_t local_descriptorCopyCount;
5934     VkCopyDescriptorSet* local_pDescriptorCopies;
5935     local_device = device;
5936     local_descriptorWriteCount = descriptorWriteCount;
5937     local_pDescriptorWrites = nullptr;
5938     if (pDescriptorWrites)
5939     {
5940         local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
5941         for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5942         {
5943             deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
5944         }
5945     }
5946     local_descriptorCopyCount = descriptorCopyCount;
5947     local_pDescriptorCopies = nullptr;
5948     if (pDescriptorCopies)
5949     {
5950         local_pDescriptorCopies = (VkCopyDescriptorSet*)pool->alloc(((descriptorCopyCount)) * sizeof(const VkCopyDescriptorSet));
5951         for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5952         {
5953             deepcopy_VkCopyDescriptorSet(pool, pDescriptorCopies + i, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
5954         }
5955     }
5956     if (local_pDescriptorWrites)
5957     {
5958         for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5959         {
5960             transform_tohost_VkWriteDescriptorSet(mImpl->resources(), (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
5961         }
5962     }
5963     if (local_pDescriptorCopies)
5964     {
5965         for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5966         {
5967             transform_tohost_VkCopyDescriptorSet(mImpl->resources(), (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
5968         }
5969     }
5970     countingStream->rewind();
5971     {
5972         uint64_t cgen_var_433;
5973         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_433, 1);
5974         countingStream->write((uint64_t*)&cgen_var_433, 1 * 8);
5975         countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
5976         for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5977         {
5978             marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
5979         }
5980         countingStream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
5981         for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
5982         {
5983             marshal_VkCopyDescriptorSet(countingStream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
5984         }
5985     }
5986     uint32_t packetSize_vkUpdateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
5987     countingStream->rewind();
5988     uint32_t opcode_vkUpdateDescriptorSets = OP_vkUpdateDescriptorSets;
5989     stream->write(&opcode_vkUpdateDescriptorSets, sizeof(uint32_t));
5990     stream->write(&packetSize_vkUpdateDescriptorSets, sizeof(uint32_t));
5991     uint64_t cgen_var_434;
5992     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_434, 1);
5993     stream->write((uint64_t*)&cgen_var_434, 1 * 8);
5994     stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
5995     for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
5996     {
5997         marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
5998     }
5999     stream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t));
6000     for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i)
6001     {
6002         marshal_VkCopyDescriptorSet(stream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i));
6003     }
6004     AEMU_SCOPED_TRACE("vkUpdateDescriptorSets readParams");
6005     AEMU_SCOPED_TRACE("vkUpdateDescriptorSets returnUnmarshal");
6006     mImpl->log("finish vkUpdateDescriptorSets");;
6007 }
6008 
vkCreateFramebuffer(VkDevice device,const VkFramebufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFramebuffer * pFramebuffer)6009 VkResult VkEncoder::vkCreateFramebuffer(
6010     VkDevice device,
6011     const VkFramebufferCreateInfo* pCreateInfo,
6012     const VkAllocationCallbacks* pAllocator,
6013     VkFramebuffer* pFramebuffer)
6014 {
6015     AEMU_SCOPED_TRACE("vkCreateFramebuffer encode");
6016     mImpl->log("start vkCreateFramebuffer");
6017     auto stream = mImpl->stream();
6018     auto countingStream = mImpl->countingStream();
6019     auto resources = mImpl->resources();
6020     auto pool = mImpl->pool();
6021     stream->setHandleMapping(resources->unwrapMapping());
6022     VkDevice local_device;
6023     VkFramebufferCreateInfo* local_pCreateInfo;
6024     VkAllocationCallbacks* local_pAllocator;
6025     local_device = device;
6026     local_pCreateInfo = nullptr;
6027     if (pCreateInfo)
6028     {
6029         local_pCreateInfo = (VkFramebufferCreateInfo*)pool->alloc(sizeof(const VkFramebufferCreateInfo));
6030         deepcopy_VkFramebufferCreateInfo(pool, pCreateInfo, (VkFramebufferCreateInfo*)(local_pCreateInfo));
6031     }
6032     local_pAllocator = nullptr;
6033     if (pAllocator)
6034     {
6035         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6036         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6037     }
6038     local_pAllocator = nullptr;
6039     if (local_pCreateInfo)
6040     {
6041         transform_tohost_VkFramebufferCreateInfo(mImpl->resources(), (VkFramebufferCreateInfo*)(local_pCreateInfo));
6042     }
6043     if (local_pAllocator)
6044     {
6045         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
6046     }
6047     countingStream->rewind();
6048     {
6049         uint64_t cgen_var_435;
6050         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_435, 1);
6051         countingStream->write((uint64_t*)&cgen_var_435, 1 * 8);
6052         marshal_VkFramebufferCreateInfo(countingStream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
6053         // WARNING PTR CHECK
6054         uint64_t cgen_var_436 = (uint64_t)(uintptr_t)local_pAllocator;
6055         countingStream->putBe64(cgen_var_436);
6056         if (local_pAllocator)
6057         {
6058             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
6059         }
6060         uint64_t cgen_var_437;
6061         countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_437, 1);
6062         countingStream->write((uint64_t*)&cgen_var_437, 8);
6063     }
6064     uint32_t packetSize_vkCreateFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6065     countingStream->rewind();
6066     uint32_t opcode_vkCreateFramebuffer = OP_vkCreateFramebuffer;
6067     stream->write(&opcode_vkCreateFramebuffer, sizeof(uint32_t));
6068     stream->write(&packetSize_vkCreateFramebuffer, sizeof(uint32_t));
6069     uint64_t cgen_var_438;
6070     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_438, 1);
6071     stream->write((uint64_t*)&cgen_var_438, 1 * 8);
6072     marshal_VkFramebufferCreateInfo(stream, (VkFramebufferCreateInfo*)(local_pCreateInfo));
6073     // WARNING PTR CHECK
6074     uint64_t cgen_var_439 = (uint64_t)(uintptr_t)local_pAllocator;
6075     stream->putBe64(cgen_var_439);
6076     if (local_pAllocator)
6077     {
6078         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
6079     }
6080     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
6081     uint64_t cgen_var_440;
6082     stream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_440, 1);
6083     stream->write((uint64_t*)&cgen_var_440, 8);
6084     stream->setHandleMapping(resources->unwrapMapping());
6085     AEMU_SCOPED_TRACE("vkCreateFramebuffer readParams");
6086     stream->setHandleMapping(resources->createMapping());
6087     uint64_t cgen_var_441;
6088     stream->read((uint64_t*)&cgen_var_441, 8);
6089     stream->handleMapping()->mapHandles_u64_VkFramebuffer(&cgen_var_441, (VkFramebuffer*)pFramebuffer, 1);
6090     stream->unsetHandleMapping();
6091     AEMU_SCOPED_TRACE("vkCreateFramebuffer returnUnmarshal");
6092     VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
6093     stream->read(&vkCreateFramebuffer_VkResult_return, sizeof(VkResult));
6094     countingStream->clearPool();
6095     stream->clearPool();
6096     pool->freeAll();
6097     mImpl->log("finish vkCreateFramebuffer");;
6098     return vkCreateFramebuffer_VkResult_return;
6099 }
6100 
vkDestroyFramebuffer(VkDevice device,VkFramebuffer framebuffer,const VkAllocationCallbacks * pAllocator)6101 void VkEncoder::vkDestroyFramebuffer(
6102     VkDevice device,
6103     VkFramebuffer framebuffer,
6104     const VkAllocationCallbacks* pAllocator)
6105 {
6106     AEMU_SCOPED_TRACE("vkDestroyFramebuffer encode");
6107     mImpl->log("start vkDestroyFramebuffer");
6108     auto stream = mImpl->stream();
6109     auto countingStream = mImpl->countingStream();
6110     auto resources = mImpl->resources();
6111     auto pool = mImpl->pool();
6112     stream->setHandleMapping(resources->unwrapMapping());
6113     VkDevice local_device;
6114     VkFramebuffer local_framebuffer;
6115     VkAllocationCallbacks* local_pAllocator;
6116     local_device = device;
6117     local_framebuffer = framebuffer;
6118     local_pAllocator = nullptr;
6119     if (pAllocator)
6120     {
6121         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6122         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6123     }
6124     local_pAllocator = nullptr;
6125     if (local_pAllocator)
6126     {
6127         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
6128     }
6129     countingStream->rewind();
6130     {
6131         uint64_t cgen_var_442;
6132         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_442, 1);
6133         countingStream->write((uint64_t*)&cgen_var_442, 1 * 8);
6134         uint64_t cgen_var_443;
6135         countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_443, 1);
6136         countingStream->write((uint64_t*)&cgen_var_443, 1 * 8);
6137         // WARNING PTR CHECK
6138         uint64_t cgen_var_444 = (uint64_t)(uintptr_t)local_pAllocator;
6139         countingStream->putBe64(cgen_var_444);
6140         if (local_pAllocator)
6141         {
6142             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
6143         }
6144     }
6145     uint32_t packetSize_vkDestroyFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6146     countingStream->rewind();
6147     uint32_t opcode_vkDestroyFramebuffer = OP_vkDestroyFramebuffer;
6148     stream->write(&opcode_vkDestroyFramebuffer, sizeof(uint32_t));
6149     stream->write(&packetSize_vkDestroyFramebuffer, sizeof(uint32_t));
6150     uint64_t cgen_var_445;
6151     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_445, 1);
6152     stream->write((uint64_t*)&cgen_var_445, 1 * 8);
6153     uint64_t cgen_var_446;
6154     stream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_446, 1);
6155     stream->write((uint64_t*)&cgen_var_446, 1 * 8);
6156     // WARNING PTR CHECK
6157     uint64_t cgen_var_447 = (uint64_t)(uintptr_t)local_pAllocator;
6158     stream->putBe64(cgen_var_447);
6159     if (local_pAllocator)
6160     {
6161         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
6162     }
6163     AEMU_SCOPED_TRACE("vkDestroyFramebuffer readParams");
6164     AEMU_SCOPED_TRACE("vkDestroyFramebuffer returnUnmarshal");
6165     resources->destroyMapping()->mapHandles_VkFramebuffer((VkFramebuffer*)&framebuffer);
6166     mImpl->log("finish vkDestroyFramebuffer");;
6167 }
6168 
vkCreateRenderPass(VkDevice device,const VkRenderPassCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)6169 VkResult VkEncoder::vkCreateRenderPass(
6170     VkDevice device,
6171     const VkRenderPassCreateInfo* pCreateInfo,
6172     const VkAllocationCallbacks* pAllocator,
6173     VkRenderPass* pRenderPass)
6174 {
6175     AEMU_SCOPED_TRACE("vkCreateRenderPass encode");
6176     mImpl->log("start vkCreateRenderPass");
6177     auto stream = mImpl->stream();
6178     auto countingStream = mImpl->countingStream();
6179     auto resources = mImpl->resources();
6180     auto pool = mImpl->pool();
6181     stream->setHandleMapping(resources->unwrapMapping());
6182     VkDevice local_device;
6183     VkRenderPassCreateInfo* local_pCreateInfo;
6184     VkAllocationCallbacks* local_pAllocator;
6185     local_device = device;
6186     local_pCreateInfo = nullptr;
6187     if (pCreateInfo)
6188     {
6189         local_pCreateInfo = (VkRenderPassCreateInfo*)pool->alloc(sizeof(const VkRenderPassCreateInfo));
6190         deepcopy_VkRenderPassCreateInfo(pool, pCreateInfo, (VkRenderPassCreateInfo*)(local_pCreateInfo));
6191     }
6192     local_pAllocator = nullptr;
6193     if (pAllocator)
6194     {
6195         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6196         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6197     }
6198     local_pAllocator = nullptr;
6199     if (local_pCreateInfo)
6200     {
6201         transform_tohost_VkRenderPassCreateInfo(mImpl->resources(), (VkRenderPassCreateInfo*)(local_pCreateInfo));
6202     }
6203     if (local_pAllocator)
6204     {
6205         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
6206     }
6207     countingStream->rewind();
6208     {
6209         uint64_t cgen_var_448;
6210         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_448, 1);
6211         countingStream->write((uint64_t*)&cgen_var_448, 1 * 8);
6212         marshal_VkRenderPassCreateInfo(countingStream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
6213         // WARNING PTR CHECK
6214         uint64_t cgen_var_449 = (uint64_t)(uintptr_t)local_pAllocator;
6215         countingStream->putBe64(cgen_var_449);
6216         if (local_pAllocator)
6217         {
6218             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
6219         }
6220         uint64_t cgen_var_450;
6221         countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_450, 1);
6222         countingStream->write((uint64_t*)&cgen_var_450, 8);
6223     }
6224     uint32_t packetSize_vkCreateRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6225     countingStream->rewind();
6226     uint32_t opcode_vkCreateRenderPass = OP_vkCreateRenderPass;
6227     stream->write(&opcode_vkCreateRenderPass, sizeof(uint32_t));
6228     stream->write(&packetSize_vkCreateRenderPass, sizeof(uint32_t));
6229     uint64_t cgen_var_451;
6230     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_451, 1);
6231     stream->write((uint64_t*)&cgen_var_451, 1 * 8);
6232     marshal_VkRenderPassCreateInfo(stream, (VkRenderPassCreateInfo*)(local_pCreateInfo));
6233     // WARNING PTR CHECK
6234     uint64_t cgen_var_452 = (uint64_t)(uintptr_t)local_pAllocator;
6235     stream->putBe64(cgen_var_452);
6236     if (local_pAllocator)
6237     {
6238         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
6239     }
6240     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
6241     uint64_t cgen_var_453;
6242     stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_453, 1);
6243     stream->write((uint64_t*)&cgen_var_453, 8);
6244     stream->setHandleMapping(resources->unwrapMapping());
6245     AEMU_SCOPED_TRACE("vkCreateRenderPass readParams");
6246     stream->setHandleMapping(resources->createMapping());
6247     uint64_t cgen_var_454;
6248     stream->read((uint64_t*)&cgen_var_454, 8);
6249     stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_454, (VkRenderPass*)pRenderPass, 1);
6250     stream->unsetHandleMapping();
6251     AEMU_SCOPED_TRACE("vkCreateRenderPass returnUnmarshal");
6252     VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
6253     stream->read(&vkCreateRenderPass_VkResult_return, sizeof(VkResult));
6254     countingStream->clearPool();
6255     stream->clearPool();
6256     pool->freeAll();
6257     mImpl->log("finish vkCreateRenderPass");;
6258     return vkCreateRenderPass_VkResult_return;
6259 }
6260 
vkDestroyRenderPass(VkDevice device,VkRenderPass renderPass,const VkAllocationCallbacks * pAllocator)6261 void VkEncoder::vkDestroyRenderPass(
6262     VkDevice device,
6263     VkRenderPass renderPass,
6264     const VkAllocationCallbacks* pAllocator)
6265 {
6266     AEMU_SCOPED_TRACE("vkDestroyRenderPass encode");
6267     mImpl->log("start vkDestroyRenderPass");
6268     auto stream = mImpl->stream();
6269     auto countingStream = mImpl->countingStream();
6270     auto resources = mImpl->resources();
6271     auto pool = mImpl->pool();
6272     stream->setHandleMapping(resources->unwrapMapping());
6273     VkDevice local_device;
6274     VkRenderPass local_renderPass;
6275     VkAllocationCallbacks* local_pAllocator;
6276     local_device = device;
6277     local_renderPass = renderPass;
6278     local_pAllocator = nullptr;
6279     if (pAllocator)
6280     {
6281         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6282         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6283     }
6284     local_pAllocator = nullptr;
6285     if (local_pAllocator)
6286     {
6287         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
6288     }
6289     countingStream->rewind();
6290     {
6291         uint64_t cgen_var_455;
6292         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_455, 1);
6293         countingStream->write((uint64_t*)&cgen_var_455, 1 * 8);
6294         uint64_t cgen_var_456;
6295         countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_456, 1);
6296         countingStream->write((uint64_t*)&cgen_var_456, 1 * 8);
6297         // WARNING PTR CHECK
6298         uint64_t cgen_var_457 = (uint64_t)(uintptr_t)local_pAllocator;
6299         countingStream->putBe64(cgen_var_457);
6300         if (local_pAllocator)
6301         {
6302             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
6303         }
6304     }
6305     uint32_t packetSize_vkDestroyRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6306     countingStream->rewind();
6307     uint32_t opcode_vkDestroyRenderPass = OP_vkDestroyRenderPass;
6308     stream->write(&opcode_vkDestroyRenderPass, sizeof(uint32_t));
6309     stream->write(&packetSize_vkDestroyRenderPass, sizeof(uint32_t));
6310     uint64_t cgen_var_458;
6311     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_458, 1);
6312     stream->write((uint64_t*)&cgen_var_458, 1 * 8);
6313     uint64_t cgen_var_459;
6314     stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_459, 1);
6315     stream->write((uint64_t*)&cgen_var_459, 1 * 8);
6316     // WARNING PTR CHECK
6317     uint64_t cgen_var_460 = (uint64_t)(uintptr_t)local_pAllocator;
6318     stream->putBe64(cgen_var_460);
6319     if (local_pAllocator)
6320     {
6321         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
6322     }
6323     AEMU_SCOPED_TRACE("vkDestroyRenderPass readParams");
6324     AEMU_SCOPED_TRACE("vkDestroyRenderPass returnUnmarshal");
6325     resources->destroyMapping()->mapHandles_VkRenderPass((VkRenderPass*)&renderPass);
6326     mImpl->log("finish vkDestroyRenderPass");;
6327 }
6328 
vkGetRenderAreaGranularity(VkDevice device,VkRenderPass renderPass,VkExtent2D * pGranularity)6329 void VkEncoder::vkGetRenderAreaGranularity(
6330     VkDevice device,
6331     VkRenderPass renderPass,
6332     VkExtent2D* pGranularity)
6333 {
6334     AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity encode");
6335     mImpl->log("start vkGetRenderAreaGranularity");
6336     auto stream = mImpl->stream();
6337     auto countingStream = mImpl->countingStream();
6338     auto resources = mImpl->resources();
6339     auto pool = mImpl->pool();
6340     stream->setHandleMapping(resources->unwrapMapping());
6341     VkDevice local_device;
6342     VkRenderPass local_renderPass;
6343     local_device = device;
6344     local_renderPass = renderPass;
6345     countingStream->rewind();
6346     {
6347         uint64_t cgen_var_461;
6348         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_461, 1);
6349         countingStream->write((uint64_t*)&cgen_var_461, 1 * 8);
6350         uint64_t cgen_var_462;
6351         countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_462, 1);
6352         countingStream->write((uint64_t*)&cgen_var_462, 1 * 8);
6353         marshal_VkExtent2D(countingStream, (VkExtent2D*)(pGranularity));
6354     }
6355     uint32_t packetSize_vkGetRenderAreaGranularity = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6356     countingStream->rewind();
6357     uint32_t opcode_vkGetRenderAreaGranularity = OP_vkGetRenderAreaGranularity;
6358     stream->write(&opcode_vkGetRenderAreaGranularity, sizeof(uint32_t));
6359     stream->write(&packetSize_vkGetRenderAreaGranularity, sizeof(uint32_t));
6360     uint64_t cgen_var_463;
6361     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_463, 1);
6362     stream->write((uint64_t*)&cgen_var_463, 1 * 8);
6363     uint64_t cgen_var_464;
6364     stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_464, 1);
6365     stream->write((uint64_t*)&cgen_var_464, 1 * 8);
6366     marshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
6367     AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity readParams");
6368     unmarshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity));
6369     if (pGranularity)
6370     {
6371         transform_fromhost_VkExtent2D(mImpl->resources(), (VkExtent2D*)(pGranularity));
6372     }
6373     AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity returnUnmarshal");
6374     mImpl->log("finish vkGetRenderAreaGranularity");;
6375 }
6376 
vkCreateCommandPool(VkDevice device,const VkCommandPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkCommandPool * pCommandPool)6377 VkResult VkEncoder::vkCreateCommandPool(
6378     VkDevice device,
6379     const VkCommandPoolCreateInfo* pCreateInfo,
6380     const VkAllocationCallbacks* pAllocator,
6381     VkCommandPool* pCommandPool)
6382 {
6383     AEMU_SCOPED_TRACE("vkCreateCommandPool encode");
6384     mImpl->log("start vkCreateCommandPool");
6385     auto stream = mImpl->stream();
6386     auto countingStream = mImpl->countingStream();
6387     auto resources = mImpl->resources();
6388     auto pool = mImpl->pool();
6389     stream->setHandleMapping(resources->unwrapMapping());
6390     VkDevice local_device;
6391     VkCommandPoolCreateInfo* local_pCreateInfo;
6392     VkAllocationCallbacks* local_pAllocator;
6393     local_device = device;
6394     local_pCreateInfo = nullptr;
6395     if (pCreateInfo)
6396     {
6397         local_pCreateInfo = (VkCommandPoolCreateInfo*)pool->alloc(sizeof(const VkCommandPoolCreateInfo));
6398         deepcopy_VkCommandPoolCreateInfo(pool, pCreateInfo, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
6399     }
6400     local_pAllocator = nullptr;
6401     if (pAllocator)
6402     {
6403         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6404         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6405     }
6406     local_pAllocator = nullptr;
6407     if (local_pCreateInfo)
6408     {
6409         transform_tohost_VkCommandPoolCreateInfo(mImpl->resources(), (VkCommandPoolCreateInfo*)(local_pCreateInfo));
6410     }
6411     if (local_pAllocator)
6412     {
6413         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
6414     }
6415     countingStream->rewind();
6416     {
6417         uint64_t cgen_var_465;
6418         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_465, 1);
6419         countingStream->write((uint64_t*)&cgen_var_465, 1 * 8);
6420         marshal_VkCommandPoolCreateInfo(countingStream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
6421         // WARNING PTR CHECK
6422         uint64_t cgen_var_466 = (uint64_t)(uintptr_t)local_pAllocator;
6423         countingStream->putBe64(cgen_var_466);
6424         if (local_pAllocator)
6425         {
6426             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
6427         }
6428         uint64_t cgen_var_467;
6429         countingStream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_467, 1);
6430         countingStream->write((uint64_t*)&cgen_var_467, 8);
6431     }
6432     uint32_t packetSize_vkCreateCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6433     countingStream->rewind();
6434     uint32_t opcode_vkCreateCommandPool = OP_vkCreateCommandPool;
6435     stream->write(&opcode_vkCreateCommandPool, sizeof(uint32_t));
6436     stream->write(&packetSize_vkCreateCommandPool, sizeof(uint32_t));
6437     uint64_t cgen_var_468;
6438     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_468, 1);
6439     stream->write((uint64_t*)&cgen_var_468, 1 * 8);
6440     marshal_VkCommandPoolCreateInfo(stream, (VkCommandPoolCreateInfo*)(local_pCreateInfo));
6441     // WARNING PTR CHECK
6442     uint64_t cgen_var_469 = (uint64_t)(uintptr_t)local_pAllocator;
6443     stream->putBe64(cgen_var_469);
6444     if (local_pAllocator)
6445     {
6446         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
6447     }
6448     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
6449     uint64_t cgen_var_470;
6450     stream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_470, 1);
6451     stream->write((uint64_t*)&cgen_var_470, 8);
6452     stream->setHandleMapping(resources->unwrapMapping());
6453     AEMU_SCOPED_TRACE("vkCreateCommandPool readParams");
6454     stream->setHandleMapping(resources->createMapping());
6455     uint64_t cgen_var_471;
6456     stream->read((uint64_t*)&cgen_var_471, 8);
6457     stream->handleMapping()->mapHandles_u64_VkCommandPool(&cgen_var_471, (VkCommandPool*)pCommandPool, 1);
6458     stream->unsetHandleMapping();
6459     AEMU_SCOPED_TRACE("vkCreateCommandPool returnUnmarshal");
6460     VkResult vkCreateCommandPool_VkResult_return = (VkResult)0;
6461     stream->read(&vkCreateCommandPool_VkResult_return, sizeof(VkResult));
6462     countingStream->clearPool();
6463     stream->clearPool();
6464     pool->freeAll();
6465     mImpl->log("finish vkCreateCommandPool");;
6466     return vkCreateCommandPool_VkResult_return;
6467 }
6468 
vkDestroyCommandPool(VkDevice device,VkCommandPool commandPool,const VkAllocationCallbacks * pAllocator)6469 void VkEncoder::vkDestroyCommandPool(
6470     VkDevice device,
6471     VkCommandPool commandPool,
6472     const VkAllocationCallbacks* pAllocator)
6473 {
6474     AEMU_SCOPED_TRACE("vkDestroyCommandPool encode");
6475     mImpl->log("start vkDestroyCommandPool");
6476     auto stream = mImpl->stream();
6477     auto countingStream = mImpl->countingStream();
6478     auto resources = mImpl->resources();
6479     auto pool = mImpl->pool();
6480     stream->setHandleMapping(resources->unwrapMapping());
6481     VkDevice local_device;
6482     VkCommandPool local_commandPool;
6483     VkAllocationCallbacks* local_pAllocator;
6484     local_device = device;
6485     local_commandPool = commandPool;
6486     local_pAllocator = nullptr;
6487     if (pAllocator)
6488     {
6489         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
6490         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
6491     }
6492     local_pAllocator = nullptr;
6493     if (local_pAllocator)
6494     {
6495         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
6496     }
6497     countingStream->rewind();
6498     {
6499         uint64_t cgen_var_472;
6500         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_472, 1);
6501         countingStream->write((uint64_t*)&cgen_var_472, 1 * 8);
6502         uint64_t cgen_var_473;
6503         countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_473, 1);
6504         countingStream->write((uint64_t*)&cgen_var_473, 1 * 8);
6505         // WARNING PTR CHECK
6506         uint64_t cgen_var_474 = (uint64_t)(uintptr_t)local_pAllocator;
6507         countingStream->putBe64(cgen_var_474);
6508         if (local_pAllocator)
6509         {
6510             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
6511         }
6512     }
6513     uint32_t packetSize_vkDestroyCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6514     countingStream->rewind();
6515     uint32_t opcode_vkDestroyCommandPool = OP_vkDestroyCommandPool;
6516     stream->write(&opcode_vkDestroyCommandPool, sizeof(uint32_t));
6517     stream->write(&packetSize_vkDestroyCommandPool, sizeof(uint32_t));
6518     uint64_t cgen_var_475;
6519     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_475, 1);
6520     stream->write((uint64_t*)&cgen_var_475, 1 * 8);
6521     uint64_t cgen_var_476;
6522     stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_476, 1);
6523     stream->write((uint64_t*)&cgen_var_476, 1 * 8);
6524     // WARNING PTR CHECK
6525     uint64_t cgen_var_477 = (uint64_t)(uintptr_t)local_pAllocator;
6526     stream->putBe64(cgen_var_477);
6527     if (local_pAllocator)
6528     {
6529         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
6530     }
6531     AEMU_SCOPED_TRACE("vkDestroyCommandPool readParams");
6532     AEMU_SCOPED_TRACE("vkDestroyCommandPool returnUnmarshal");
6533     resources->destroyMapping()->mapHandles_VkCommandPool((VkCommandPool*)&commandPool);
6534     mImpl->log("finish vkDestroyCommandPool");;
6535 }
6536 
vkResetCommandPool(VkDevice device,VkCommandPool commandPool,VkCommandPoolResetFlags flags)6537 VkResult VkEncoder::vkResetCommandPool(
6538     VkDevice device,
6539     VkCommandPool commandPool,
6540     VkCommandPoolResetFlags flags)
6541 {
6542     AEMU_SCOPED_TRACE("vkResetCommandPool encode");
6543     mImpl->log("start vkResetCommandPool");
6544     auto stream = mImpl->stream();
6545     auto countingStream = mImpl->countingStream();
6546     auto resources = mImpl->resources();
6547     auto pool = mImpl->pool();
6548     stream->setHandleMapping(resources->unwrapMapping());
6549     VkDevice local_device;
6550     VkCommandPool local_commandPool;
6551     VkCommandPoolResetFlags local_flags;
6552     local_device = device;
6553     local_commandPool = commandPool;
6554     local_flags = flags;
6555     countingStream->rewind();
6556     {
6557         uint64_t cgen_var_478;
6558         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_478, 1);
6559         countingStream->write((uint64_t*)&cgen_var_478, 1 * 8);
6560         uint64_t cgen_var_479;
6561         countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_479, 1);
6562         countingStream->write((uint64_t*)&cgen_var_479, 1 * 8);
6563         countingStream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
6564     }
6565     uint32_t packetSize_vkResetCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6566     countingStream->rewind();
6567     uint32_t opcode_vkResetCommandPool = OP_vkResetCommandPool;
6568     stream->write(&opcode_vkResetCommandPool, sizeof(uint32_t));
6569     stream->write(&packetSize_vkResetCommandPool, sizeof(uint32_t));
6570     uint64_t cgen_var_480;
6571     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_480, 1);
6572     stream->write((uint64_t*)&cgen_var_480, 1 * 8);
6573     uint64_t cgen_var_481;
6574     stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_481, 1);
6575     stream->write((uint64_t*)&cgen_var_481, 1 * 8);
6576     stream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags));
6577     AEMU_SCOPED_TRACE("vkResetCommandPool readParams");
6578     AEMU_SCOPED_TRACE("vkResetCommandPool returnUnmarshal");
6579     VkResult vkResetCommandPool_VkResult_return = (VkResult)0;
6580     stream->read(&vkResetCommandPool_VkResult_return, sizeof(VkResult));
6581     countingStream->clearPool();
6582     stream->clearPool();
6583     pool->freeAll();
6584     mImpl->log("finish vkResetCommandPool");;
6585     return vkResetCommandPool_VkResult_return;
6586 }
6587 
vkAllocateCommandBuffers(VkDevice device,const VkCommandBufferAllocateInfo * pAllocateInfo,VkCommandBuffer * pCommandBuffers)6588 VkResult VkEncoder::vkAllocateCommandBuffers(
6589     VkDevice device,
6590     const VkCommandBufferAllocateInfo* pAllocateInfo,
6591     VkCommandBuffer* pCommandBuffers)
6592 {
6593     AEMU_SCOPED_TRACE("vkAllocateCommandBuffers encode");
6594     mImpl->log("start vkAllocateCommandBuffers");
6595     auto stream = mImpl->stream();
6596     auto countingStream = mImpl->countingStream();
6597     auto resources = mImpl->resources();
6598     auto pool = mImpl->pool();
6599     stream->setHandleMapping(resources->unwrapMapping());
6600     VkDevice local_device;
6601     VkCommandBufferAllocateInfo* local_pAllocateInfo;
6602     local_device = device;
6603     local_pAllocateInfo = nullptr;
6604     if (pAllocateInfo)
6605     {
6606         local_pAllocateInfo = (VkCommandBufferAllocateInfo*)pool->alloc(sizeof(const VkCommandBufferAllocateInfo));
6607         deepcopy_VkCommandBufferAllocateInfo(pool, pAllocateInfo, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
6608     }
6609     if (local_pAllocateInfo)
6610     {
6611         transform_tohost_VkCommandBufferAllocateInfo(mImpl->resources(), (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
6612     }
6613     countingStream->rewind();
6614     {
6615         uint64_t cgen_var_482;
6616         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_482, 1);
6617         countingStream->write((uint64_t*)&cgen_var_482, 1 * 8);
6618         marshal_VkCommandBufferAllocateInfo(countingStream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
6619         if (pAllocateInfo->commandBufferCount)
6620         {
6621             uint64_t* cgen_var_483;
6622             countingStream->alloc((void**)&cgen_var_483, pAllocateInfo->commandBufferCount * 8);
6623             countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_483, pAllocateInfo->commandBufferCount);
6624             countingStream->write((uint64_t*)cgen_var_483, pAllocateInfo->commandBufferCount * 8);
6625         }
6626     }
6627     uint32_t packetSize_vkAllocateCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6628     countingStream->rewind();
6629     uint32_t opcode_vkAllocateCommandBuffers = OP_vkAllocateCommandBuffers;
6630     stream->write(&opcode_vkAllocateCommandBuffers, sizeof(uint32_t));
6631     stream->write(&packetSize_vkAllocateCommandBuffers, sizeof(uint32_t));
6632     uint64_t cgen_var_484;
6633     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_484, 1);
6634     stream->write((uint64_t*)&cgen_var_484, 1 * 8);
6635     marshal_VkCommandBufferAllocateInfo(stream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo));
6636     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
6637     if (pAllocateInfo->commandBufferCount)
6638     {
6639         uint64_t* cgen_var_485;
6640         stream->alloc((void**)&cgen_var_485, pAllocateInfo->commandBufferCount * 8);
6641         stream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_485, pAllocateInfo->commandBufferCount);
6642         stream->write((uint64_t*)cgen_var_485, pAllocateInfo->commandBufferCount * 8);
6643     }
6644     stream->setHandleMapping(resources->unwrapMapping());
6645     AEMU_SCOPED_TRACE("vkAllocateCommandBuffers readParams");
6646     stream->setHandleMapping(resources->createMapping());
6647     if (pAllocateInfo->commandBufferCount)
6648     {
6649         uint64_t* cgen_var_486;
6650         stream->alloc((void**)&cgen_var_486, pAllocateInfo->commandBufferCount * 8);
6651         stream->read((uint64_t*)cgen_var_486, pAllocateInfo->commandBufferCount * 8);
6652         stream->handleMapping()->mapHandles_u64_VkCommandBuffer(cgen_var_486, (VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount);
6653     }
6654     stream->unsetHandleMapping();
6655     AEMU_SCOPED_TRACE("vkAllocateCommandBuffers returnUnmarshal");
6656     VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0;
6657     stream->read(&vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult));
6658     countingStream->clearPool();
6659     stream->clearPool();
6660     pool->freeAll();
6661     mImpl->log("finish vkAllocateCommandBuffers");;
6662     return vkAllocateCommandBuffers_VkResult_return;
6663 }
6664 
vkFreeCommandBuffers(VkDevice device,VkCommandPool commandPool,uint32_t commandBufferCount,const VkCommandBuffer * pCommandBuffers)6665 void VkEncoder::vkFreeCommandBuffers(
6666     VkDevice device,
6667     VkCommandPool commandPool,
6668     uint32_t commandBufferCount,
6669     const VkCommandBuffer* pCommandBuffers)
6670 {
6671     AEMU_SCOPED_TRACE("vkFreeCommandBuffers encode");
6672     mImpl->log("start vkFreeCommandBuffers");
6673     auto stream = mImpl->stream();
6674     auto countingStream = mImpl->countingStream();
6675     auto resources = mImpl->resources();
6676     auto pool = mImpl->pool();
6677     stream->setHandleMapping(resources->unwrapMapping());
6678     VkDevice local_device;
6679     VkCommandPool local_commandPool;
6680     uint32_t local_commandBufferCount;
6681     VkCommandBuffer* local_pCommandBuffers;
6682     local_device = device;
6683     local_commandPool = commandPool;
6684     local_commandBufferCount = commandBufferCount;
6685     local_pCommandBuffers = nullptr;
6686     if (pCommandBuffers)
6687     {
6688         local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
6689     }
6690     countingStream->rewind();
6691     {
6692         uint64_t cgen_var_487;
6693         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_487, 1);
6694         countingStream->write((uint64_t*)&cgen_var_487, 1 * 8);
6695         uint64_t cgen_var_488;
6696         countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_488, 1);
6697         countingStream->write((uint64_t*)&cgen_var_488, 1 * 8);
6698         countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
6699         // WARNING PTR CHECK
6700         uint64_t cgen_var_489 = (uint64_t)(uintptr_t)local_pCommandBuffers;
6701         countingStream->putBe64(cgen_var_489);
6702         if (local_pCommandBuffers)
6703         {
6704             if (((commandBufferCount)))
6705             {
6706                 uint64_t* cgen_var_490;
6707                 countingStream->alloc((void**)&cgen_var_490, ((commandBufferCount)) * 8);
6708                 countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_490, ((commandBufferCount)));
6709                 countingStream->write((uint64_t*)cgen_var_490, ((commandBufferCount)) * 8);
6710             }
6711         }
6712     }
6713     uint32_t packetSize_vkFreeCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6714     countingStream->rewind();
6715     uint32_t opcode_vkFreeCommandBuffers = OP_vkFreeCommandBuffers;
6716     stream->write(&opcode_vkFreeCommandBuffers, sizeof(uint32_t));
6717     stream->write(&packetSize_vkFreeCommandBuffers, sizeof(uint32_t));
6718     uint64_t cgen_var_491;
6719     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_491, 1);
6720     stream->write((uint64_t*)&cgen_var_491, 1 * 8);
6721     uint64_t cgen_var_492;
6722     stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_492, 1);
6723     stream->write((uint64_t*)&cgen_var_492, 1 * 8);
6724     stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
6725     // WARNING PTR CHECK
6726     uint64_t cgen_var_493 = (uint64_t)(uintptr_t)local_pCommandBuffers;
6727     stream->putBe64(cgen_var_493);
6728     if (local_pCommandBuffers)
6729     {
6730         if (((commandBufferCount)))
6731         {
6732             uint64_t* cgen_var_494;
6733             stream->alloc((void**)&cgen_var_494, ((commandBufferCount)) * 8);
6734             stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_494, ((commandBufferCount)));
6735             stream->write((uint64_t*)cgen_var_494, ((commandBufferCount)) * 8);
6736         }
6737     }
6738     AEMU_SCOPED_TRACE("vkFreeCommandBuffers readParams");
6739     AEMU_SCOPED_TRACE("vkFreeCommandBuffers returnUnmarshal");
6740     if (pCommandBuffers)
6741     {
6742         resources->destroyMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)pCommandBuffers, ((commandBufferCount)));
6743     }
6744     mImpl->log("finish vkFreeCommandBuffers");;
6745 }
6746 
vkBeginCommandBuffer(VkCommandBuffer commandBuffer,const VkCommandBufferBeginInfo * pBeginInfo)6747 VkResult VkEncoder::vkBeginCommandBuffer(
6748     VkCommandBuffer commandBuffer,
6749     const VkCommandBufferBeginInfo* pBeginInfo)
6750 {
6751     AEMU_SCOPED_TRACE("vkBeginCommandBuffer encode");
6752     mImpl->log("start vkBeginCommandBuffer");
6753     auto stream = mImpl->stream();
6754     auto countingStream = mImpl->countingStream();
6755     auto resources = mImpl->resources();
6756     auto pool = mImpl->pool();
6757     stream->setHandleMapping(resources->unwrapMapping());
6758     VkCommandBuffer local_commandBuffer;
6759     VkCommandBufferBeginInfo* local_pBeginInfo;
6760     local_commandBuffer = commandBuffer;
6761     local_pBeginInfo = nullptr;
6762     if (pBeginInfo)
6763     {
6764         local_pBeginInfo = (VkCommandBufferBeginInfo*)pool->alloc(sizeof(const VkCommandBufferBeginInfo));
6765         deepcopy_VkCommandBufferBeginInfo(pool, pBeginInfo, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
6766     }
6767     if (local_pBeginInfo)
6768     {
6769         transform_tohost_VkCommandBufferBeginInfo(mImpl->resources(), (VkCommandBufferBeginInfo*)(local_pBeginInfo));
6770     }
6771     countingStream->rewind();
6772     {
6773         uint64_t cgen_var_495;
6774         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_495, 1);
6775         countingStream->write((uint64_t*)&cgen_var_495, 1 * 8);
6776         marshal_VkCommandBufferBeginInfo(countingStream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
6777     }
6778     uint32_t packetSize_vkBeginCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6779     countingStream->rewind();
6780     uint32_t opcode_vkBeginCommandBuffer = OP_vkBeginCommandBuffer;
6781     stream->write(&opcode_vkBeginCommandBuffer, sizeof(uint32_t));
6782     stream->write(&packetSize_vkBeginCommandBuffer, sizeof(uint32_t));
6783     uint64_t cgen_var_496;
6784     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_496, 1);
6785     stream->write((uint64_t*)&cgen_var_496, 1 * 8);
6786     marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
6787     AEMU_SCOPED_TRACE("vkBeginCommandBuffer readParams");
6788     AEMU_SCOPED_TRACE("vkBeginCommandBuffer returnUnmarshal");
6789     VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
6790     stream->read(&vkBeginCommandBuffer_VkResult_return, sizeof(VkResult));
6791     countingStream->clearPool();
6792     stream->clearPool();
6793     pool->freeAll();
6794     mImpl->log("finish vkBeginCommandBuffer");;
6795     return vkBeginCommandBuffer_VkResult_return;
6796 }
6797 
vkEndCommandBuffer(VkCommandBuffer commandBuffer)6798 VkResult VkEncoder::vkEndCommandBuffer(
6799     VkCommandBuffer commandBuffer)
6800 {
6801     AEMU_SCOPED_TRACE("vkEndCommandBuffer encode");
6802     mImpl->log("start vkEndCommandBuffer");
6803     auto stream = mImpl->stream();
6804     auto countingStream = mImpl->countingStream();
6805     auto resources = mImpl->resources();
6806     auto pool = mImpl->pool();
6807     stream->setHandleMapping(resources->unwrapMapping());
6808     VkCommandBuffer local_commandBuffer;
6809     local_commandBuffer = commandBuffer;
6810     countingStream->rewind();
6811     {
6812         uint64_t cgen_var_497;
6813         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_497, 1);
6814         countingStream->write((uint64_t*)&cgen_var_497, 1 * 8);
6815     }
6816     uint32_t packetSize_vkEndCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6817     countingStream->rewind();
6818     uint32_t opcode_vkEndCommandBuffer = OP_vkEndCommandBuffer;
6819     stream->write(&opcode_vkEndCommandBuffer, sizeof(uint32_t));
6820     stream->write(&packetSize_vkEndCommandBuffer, sizeof(uint32_t));
6821     uint64_t cgen_var_498;
6822     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_498, 1);
6823     stream->write((uint64_t*)&cgen_var_498, 1 * 8);
6824     AEMU_SCOPED_TRACE("vkEndCommandBuffer readParams");
6825     AEMU_SCOPED_TRACE("vkEndCommandBuffer returnUnmarshal");
6826     VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
6827     stream->read(&vkEndCommandBuffer_VkResult_return, sizeof(VkResult));
6828     countingStream->clearPool();
6829     stream->clearPool();
6830     pool->freeAll();
6831     mImpl->log("finish vkEndCommandBuffer");;
6832     return vkEndCommandBuffer_VkResult_return;
6833 }
6834 
vkResetCommandBuffer(VkCommandBuffer commandBuffer,VkCommandBufferResetFlags flags)6835 VkResult VkEncoder::vkResetCommandBuffer(
6836     VkCommandBuffer commandBuffer,
6837     VkCommandBufferResetFlags flags)
6838 {
6839     AEMU_SCOPED_TRACE("vkResetCommandBuffer encode");
6840     mImpl->log("start vkResetCommandBuffer");
6841     auto stream = mImpl->stream();
6842     auto countingStream = mImpl->countingStream();
6843     auto resources = mImpl->resources();
6844     auto pool = mImpl->pool();
6845     stream->setHandleMapping(resources->unwrapMapping());
6846     VkCommandBuffer local_commandBuffer;
6847     VkCommandBufferResetFlags local_flags;
6848     local_commandBuffer = commandBuffer;
6849     local_flags = flags;
6850     countingStream->rewind();
6851     {
6852         uint64_t cgen_var_499;
6853         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_499, 1);
6854         countingStream->write((uint64_t*)&cgen_var_499, 1 * 8);
6855         countingStream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
6856     }
6857     uint32_t packetSize_vkResetCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6858     countingStream->rewind();
6859     uint32_t opcode_vkResetCommandBuffer = OP_vkResetCommandBuffer;
6860     stream->write(&opcode_vkResetCommandBuffer, sizeof(uint32_t));
6861     stream->write(&packetSize_vkResetCommandBuffer, sizeof(uint32_t));
6862     uint64_t cgen_var_500;
6863     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_500, 1);
6864     stream->write((uint64_t*)&cgen_var_500, 1 * 8);
6865     stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
6866     AEMU_SCOPED_TRACE("vkResetCommandBuffer readParams");
6867     AEMU_SCOPED_TRACE("vkResetCommandBuffer returnUnmarshal");
6868     VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
6869     stream->read(&vkResetCommandBuffer_VkResult_return, sizeof(VkResult));
6870     countingStream->clearPool();
6871     stream->clearPool();
6872     pool->freeAll();
6873     mImpl->log("finish vkResetCommandBuffer");;
6874     return vkResetCommandBuffer_VkResult_return;
6875 }
6876 
vkCmdBindPipeline(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipeline pipeline)6877 void VkEncoder::vkCmdBindPipeline(
6878     VkCommandBuffer commandBuffer,
6879     VkPipelineBindPoint pipelineBindPoint,
6880     VkPipeline pipeline)
6881 {
6882     AEMU_SCOPED_TRACE("vkCmdBindPipeline encode");
6883     mImpl->log("start vkCmdBindPipeline");
6884     auto stream = mImpl->stream();
6885     auto countingStream = mImpl->countingStream();
6886     auto resources = mImpl->resources();
6887     auto pool = mImpl->pool();
6888     stream->setHandleMapping(resources->unwrapMapping());
6889     VkCommandBuffer local_commandBuffer;
6890     VkPipelineBindPoint local_pipelineBindPoint;
6891     VkPipeline local_pipeline;
6892     local_commandBuffer = commandBuffer;
6893     local_pipelineBindPoint = pipelineBindPoint;
6894     local_pipeline = pipeline;
6895     countingStream->rewind();
6896     {
6897         uint64_t cgen_var_501;
6898         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_501, 1);
6899         countingStream->write((uint64_t*)&cgen_var_501, 1 * 8);
6900         countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
6901         uint64_t cgen_var_502;
6902         countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_502, 1);
6903         countingStream->write((uint64_t*)&cgen_var_502, 1 * 8);
6904     }
6905     uint32_t packetSize_vkCmdBindPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6906     countingStream->rewind();
6907     uint32_t opcode_vkCmdBindPipeline = OP_vkCmdBindPipeline;
6908     stream->write(&opcode_vkCmdBindPipeline, sizeof(uint32_t));
6909     stream->write(&packetSize_vkCmdBindPipeline, sizeof(uint32_t));
6910     uint64_t cgen_var_503;
6911     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_503, 1);
6912     stream->write((uint64_t*)&cgen_var_503, 1 * 8);
6913     stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
6914     uint64_t cgen_var_504;
6915     stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_504, 1);
6916     stream->write((uint64_t*)&cgen_var_504, 1 * 8);
6917     AEMU_SCOPED_TRACE("vkCmdBindPipeline readParams");
6918     AEMU_SCOPED_TRACE("vkCmdBindPipeline returnUnmarshal");
6919     mImpl->log("finish vkCmdBindPipeline");;
6920 }
6921 
vkCmdSetViewport(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewport * pViewports)6922 void VkEncoder::vkCmdSetViewport(
6923     VkCommandBuffer commandBuffer,
6924     uint32_t firstViewport,
6925     uint32_t viewportCount,
6926     const VkViewport* pViewports)
6927 {
6928     AEMU_SCOPED_TRACE("vkCmdSetViewport encode");
6929     mImpl->log("start vkCmdSetViewport");
6930     auto stream = mImpl->stream();
6931     auto countingStream = mImpl->countingStream();
6932     auto resources = mImpl->resources();
6933     auto pool = mImpl->pool();
6934     stream->setHandleMapping(resources->unwrapMapping());
6935     VkCommandBuffer local_commandBuffer;
6936     uint32_t local_firstViewport;
6937     uint32_t local_viewportCount;
6938     VkViewport* local_pViewports;
6939     local_commandBuffer = commandBuffer;
6940     local_firstViewport = firstViewport;
6941     local_viewportCount = viewportCount;
6942     local_pViewports = nullptr;
6943     if (pViewports)
6944     {
6945         local_pViewports = (VkViewport*)pool->alloc(((viewportCount)) * sizeof(const VkViewport));
6946         for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6947         {
6948             deepcopy_VkViewport(pool, pViewports + i, (VkViewport*)(local_pViewports + i));
6949         }
6950     }
6951     if (local_pViewports)
6952     {
6953         for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6954         {
6955             transform_tohost_VkViewport(mImpl->resources(), (VkViewport*)(local_pViewports + i));
6956         }
6957     }
6958     countingStream->rewind();
6959     {
6960         uint64_t cgen_var_505;
6961         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_505, 1);
6962         countingStream->write((uint64_t*)&cgen_var_505, 1 * 8);
6963         countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
6964         countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
6965         for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6966         {
6967             marshal_VkViewport(countingStream, (VkViewport*)(local_pViewports + i));
6968         }
6969     }
6970     uint32_t packetSize_vkCmdSetViewport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
6971     countingStream->rewind();
6972     uint32_t opcode_vkCmdSetViewport = OP_vkCmdSetViewport;
6973     stream->write(&opcode_vkCmdSetViewport, sizeof(uint32_t));
6974     stream->write(&packetSize_vkCmdSetViewport, sizeof(uint32_t));
6975     uint64_t cgen_var_506;
6976     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_506, 1);
6977     stream->write((uint64_t*)&cgen_var_506, 1 * 8);
6978     stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
6979     stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
6980     for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
6981     {
6982         marshal_VkViewport(stream, (VkViewport*)(local_pViewports + i));
6983     }
6984     AEMU_SCOPED_TRACE("vkCmdSetViewport readParams");
6985     AEMU_SCOPED_TRACE("vkCmdSetViewport returnUnmarshal");
6986     mImpl->log("finish vkCmdSetViewport");;
6987 }
6988 
vkCmdSetScissor(VkCommandBuffer commandBuffer,uint32_t firstScissor,uint32_t scissorCount,const VkRect2D * pScissors)6989 void VkEncoder::vkCmdSetScissor(
6990     VkCommandBuffer commandBuffer,
6991     uint32_t firstScissor,
6992     uint32_t scissorCount,
6993     const VkRect2D* pScissors)
6994 {
6995     AEMU_SCOPED_TRACE("vkCmdSetScissor encode");
6996     mImpl->log("start vkCmdSetScissor");
6997     auto stream = mImpl->stream();
6998     auto countingStream = mImpl->countingStream();
6999     auto resources = mImpl->resources();
7000     auto pool = mImpl->pool();
7001     stream->setHandleMapping(resources->unwrapMapping());
7002     VkCommandBuffer local_commandBuffer;
7003     uint32_t local_firstScissor;
7004     uint32_t local_scissorCount;
7005     VkRect2D* local_pScissors;
7006     local_commandBuffer = commandBuffer;
7007     local_firstScissor = firstScissor;
7008     local_scissorCount = scissorCount;
7009     local_pScissors = nullptr;
7010     if (pScissors)
7011     {
7012         local_pScissors = (VkRect2D*)pool->alloc(((scissorCount)) * sizeof(const VkRect2D));
7013         for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
7014         {
7015             deepcopy_VkRect2D(pool, pScissors + i, (VkRect2D*)(local_pScissors + i));
7016         }
7017     }
7018     if (local_pScissors)
7019     {
7020         for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
7021         {
7022             transform_tohost_VkRect2D(mImpl->resources(), (VkRect2D*)(local_pScissors + i));
7023         }
7024     }
7025     countingStream->rewind();
7026     {
7027         uint64_t cgen_var_507;
7028         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_507, 1);
7029         countingStream->write((uint64_t*)&cgen_var_507, 1 * 8);
7030         countingStream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
7031         countingStream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
7032         for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
7033         {
7034             marshal_VkRect2D(countingStream, (VkRect2D*)(local_pScissors + i));
7035         }
7036     }
7037     uint32_t packetSize_vkCmdSetScissor = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7038     countingStream->rewind();
7039     uint32_t opcode_vkCmdSetScissor = OP_vkCmdSetScissor;
7040     stream->write(&opcode_vkCmdSetScissor, sizeof(uint32_t));
7041     stream->write(&packetSize_vkCmdSetScissor, sizeof(uint32_t));
7042     uint64_t cgen_var_508;
7043     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_508, 1);
7044     stream->write((uint64_t*)&cgen_var_508, 1 * 8);
7045     stream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t));
7046     stream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t));
7047     for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i)
7048     {
7049         marshal_VkRect2D(stream, (VkRect2D*)(local_pScissors + i));
7050     }
7051     AEMU_SCOPED_TRACE("vkCmdSetScissor readParams");
7052     AEMU_SCOPED_TRACE("vkCmdSetScissor returnUnmarshal");
7053     mImpl->log("finish vkCmdSetScissor");;
7054 }
7055 
vkCmdSetLineWidth(VkCommandBuffer commandBuffer,float lineWidth)7056 void VkEncoder::vkCmdSetLineWidth(
7057     VkCommandBuffer commandBuffer,
7058     float lineWidth)
7059 {
7060     AEMU_SCOPED_TRACE("vkCmdSetLineWidth encode");
7061     mImpl->log("start vkCmdSetLineWidth");
7062     auto stream = mImpl->stream();
7063     auto countingStream = mImpl->countingStream();
7064     auto resources = mImpl->resources();
7065     auto pool = mImpl->pool();
7066     stream->setHandleMapping(resources->unwrapMapping());
7067     VkCommandBuffer local_commandBuffer;
7068     float local_lineWidth;
7069     local_commandBuffer = commandBuffer;
7070     local_lineWidth = lineWidth;
7071     countingStream->rewind();
7072     {
7073         uint64_t cgen_var_509;
7074         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_509, 1);
7075         countingStream->write((uint64_t*)&cgen_var_509, 1 * 8);
7076         countingStream->write((float*)&local_lineWidth, sizeof(float));
7077     }
7078     uint32_t packetSize_vkCmdSetLineWidth = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7079     countingStream->rewind();
7080     uint32_t opcode_vkCmdSetLineWidth = OP_vkCmdSetLineWidth;
7081     stream->write(&opcode_vkCmdSetLineWidth, sizeof(uint32_t));
7082     stream->write(&packetSize_vkCmdSetLineWidth, sizeof(uint32_t));
7083     uint64_t cgen_var_510;
7084     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_510, 1);
7085     stream->write((uint64_t*)&cgen_var_510, 1 * 8);
7086     stream->write((float*)&local_lineWidth, sizeof(float));
7087     AEMU_SCOPED_TRACE("vkCmdSetLineWidth readParams");
7088     AEMU_SCOPED_TRACE("vkCmdSetLineWidth returnUnmarshal");
7089     mImpl->log("finish vkCmdSetLineWidth");;
7090 }
7091 
vkCmdSetDepthBias(VkCommandBuffer commandBuffer,float depthBiasConstantFactor,float depthBiasClamp,float depthBiasSlopeFactor)7092 void VkEncoder::vkCmdSetDepthBias(
7093     VkCommandBuffer commandBuffer,
7094     float depthBiasConstantFactor,
7095     float depthBiasClamp,
7096     float depthBiasSlopeFactor)
7097 {
7098     AEMU_SCOPED_TRACE("vkCmdSetDepthBias encode");
7099     mImpl->log("start vkCmdSetDepthBias");
7100     auto stream = mImpl->stream();
7101     auto countingStream = mImpl->countingStream();
7102     auto resources = mImpl->resources();
7103     auto pool = mImpl->pool();
7104     stream->setHandleMapping(resources->unwrapMapping());
7105     VkCommandBuffer local_commandBuffer;
7106     float local_depthBiasConstantFactor;
7107     float local_depthBiasClamp;
7108     float local_depthBiasSlopeFactor;
7109     local_commandBuffer = commandBuffer;
7110     local_depthBiasConstantFactor = depthBiasConstantFactor;
7111     local_depthBiasClamp = depthBiasClamp;
7112     local_depthBiasSlopeFactor = depthBiasSlopeFactor;
7113     countingStream->rewind();
7114     {
7115         uint64_t cgen_var_511;
7116         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_511, 1);
7117         countingStream->write((uint64_t*)&cgen_var_511, 1 * 8);
7118         countingStream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
7119         countingStream->write((float*)&local_depthBiasClamp, sizeof(float));
7120         countingStream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
7121     }
7122     uint32_t packetSize_vkCmdSetDepthBias = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7123     countingStream->rewind();
7124     uint32_t opcode_vkCmdSetDepthBias = OP_vkCmdSetDepthBias;
7125     stream->write(&opcode_vkCmdSetDepthBias, sizeof(uint32_t));
7126     stream->write(&packetSize_vkCmdSetDepthBias, sizeof(uint32_t));
7127     uint64_t cgen_var_512;
7128     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_512, 1);
7129     stream->write((uint64_t*)&cgen_var_512, 1 * 8);
7130     stream->write((float*)&local_depthBiasConstantFactor, sizeof(float));
7131     stream->write((float*)&local_depthBiasClamp, sizeof(float));
7132     stream->write((float*)&local_depthBiasSlopeFactor, sizeof(float));
7133     AEMU_SCOPED_TRACE("vkCmdSetDepthBias readParams");
7134     AEMU_SCOPED_TRACE("vkCmdSetDepthBias returnUnmarshal");
7135     mImpl->log("finish vkCmdSetDepthBias");;
7136 }
7137 
vkCmdSetBlendConstants(VkCommandBuffer commandBuffer,const float blendConstants[4])7138 void VkEncoder::vkCmdSetBlendConstants(
7139     VkCommandBuffer commandBuffer,
7140     const float blendConstants[4])
7141 {
7142     AEMU_SCOPED_TRACE("vkCmdSetBlendConstants encode");
7143     mImpl->log("start vkCmdSetBlendConstants");
7144     auto stream = mImpl->stream();
7145     auto countingStream = mImpl->countingStream();
7146     auto resources = mImpl->resources();
7147     auto pool = mImpl->pool();
7148     stream->setHandleMapping(resources->unwrapMapping());
7149     VkCommandBuffer local_commandBuffer;
7150     float local_blendConstants[4];
7151     local_commandBuffer = commandBuffer;
7152     memcpy(&local_blendConstants, &blendConstants, 4 * sizeof(const float));
7153     countingStream->rewind();
7154     {
7155         uint64_t cgen_var_513;
7156         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_513, 1);
7157         countingStream->write((uint64_t*)&cgen_var_513, 1 * 8);
7158         countingStream->write((float*)&local_blendConstants, 4 * sizeof(float));
7159     }
7160     uint32_t packetSize_vkCmdSetBlendConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7161     countingStream->rewind();
7162     uint32_t opcode_vkCmdSetBlendConstants = OP_vkCmdSetBlendConstants;
7163     stream->write(&opcode_vkCmdSetBlendConstants, sizeof(uint32_t));
7164     stream->write(&packetSize_vkCmdSetBlendConstants, sizeof(uint32_t));
7165     uint64_t cgen_var_514;
7166     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_514, 1);
7167     stream->write((uint64_t*)&cgen_var_514, 1 * 8);
7168     stream->write((float*)&local_blendConstants, 4 * sizeof(float));
7169     AEMU_SCOPED_TRACE("vkCmdSetBlendConstants readParams");
7170     AEMU_SCOPED_TRACE("vkCmdSetBlendConstants returnUnmarshal");
7171     mImpl->log("finish vkCmdSetBlendConstants");;
7172 }
7173 
vkCmdSetDepthBounds(VkCommandBuffer commandBuffer,float minDepthBounds,float maxDepthBounds)7174 void VkEncoder::vkCmdSetDepthBounds(
7175     VkCommandBuffer commandBuffer,
7176     float minDepthBounds,
7177     float maxDepthBounds)
7178 {
7179     AEMU_SCOPED_TRACE("vkCmdSetDepthBounds encode");
7180     mImpl->log("start vkCmdSetDepthBounds");
7181     auto stream = mImpl->stream();
7182     auto countingStream = mImpl->countingStream();
7183     auto resources = mImpl->resources();
7184     auto pool = mImpl->pool();
7185     stream->setHandleMapping(resources->unwrapMapping());
7186     VkCommandBuffer local_commandBuffer;
7187     float local_minDepthBounds;
7188     float local_maxDepthBounds;
7189     local_commandBuffer = commandBuffer;
7190     local_minDepthBounds = minDepthBounds;
7191     local_maxDepthBounds = maxDepthBounds;
7192     countingStream->rewind();
7193     {
7194         uint64_t cgen_var_515;
7195         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_515, 1);
7196         countingStream->write((uint64_t*)&cgen_var_515, 1 * 8);
7197         countingStream->write((float*)&local_minDepthBounds, sizeof(float));
7198         countingStream->write((float*)&local_maxDepthBounds, sizeof(float));
7199     }
7200     uint32_t packetSize_vkCmdSetDepthBounds = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7201     countingStream->rewind();
7202     uint32_t opcode_vkCmdSetDepthBounds = OP_vkCmdSetDepthBounds;
7203     stream->write(&opcode_vkCmdSetDepthBounds, sizeof(uint32_t));
7204     stream->write(&packetSize_vkCmdSetDepthBounds, sizeof(uint32_t));
7205     uint64_t cgen_var_516;
7206     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_516, 1);
7207     stream->write((uint64_t*)&cgen_var_516, 1 * 8);
7208     stream->write((float*)&local_minDepthBounds, sizeof(float));
7209     stream->write((float*)&local_maxDepthBounds, sizeof(float));
7210     AEMU_SCOPED_TRACE("vkCmdSetDepthBounds readParams");
7211     AEMU_SCOPED_TRACE("vkCmdSetDepthBounds returnUnmarshal");
7212     mImpl->log("finish vkCmdSetDepthBounds");;
7213 }
7214 
vkCmdSetStencilCompareMask(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t compareMask)7215 void VkEncoder::vkCmdSetStencilCompareMask(
7216     VkCommandBuffer commandBuffer,
7217     VkStencilFaceFlags faceMask,
7218     uint32_t compareMask)
7219 {
7220     AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask encode");
7221     mImpl->log("start vkCmdSetStencilCompareMask");
7222     auto stream = mImpl->stream();
7223     auto countingStream = mImpl->countingStream();
7224     auto resources = mImpl->resources();
7225     auto pool = mImpl->pool();
7226     stream->setHandleMapping(resources->unwrapMapping());
7227     VkCommandBuffer local_commandBuffer;
7228     VkStencilFaceFlags local_faceMask;
7229     uint32_t local_compareMask;
7230     local_commandBuffer = commandBuffer;
7231     local_faceMask = faceMask;
7232     local_compareMask = compareMask;
7233     countingStream->rewind();
7234     {
7235         uint64_t cgen_var_517;
7236         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_517, 1);
7237         countingStream->write((uint64_t*)&cgen_var_517, 1 * 8);
7238         countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7239         countingStream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
7240     }
7241     uint32_t packetSize_vkCmdSetStencilCompareMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7242     countingStream->rewind();
7243     uint32_t opcode_vkCmdSetStencilCompareMask = OP_vkCmdSetStencilCompareMask;
7244     stream->write(&opcode_vkCmdSetStencilCompareMask, sizeof(uint32_t));
7245     stream->write(&packetSize_vkCmdSetStencilCompareMask, sizeof(uint32_t));
7246     uint64_t cgen_var_518;
7247     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_518, 1);
7248     stream->write((uint64_t*)&cgen_var_518, 1 * 8);
7249     stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7250     stream->write((uint32_t*)&local_compareMask, sizeof(uint32_t));
7251     AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask readParams");
7252     AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask returnUnmarshal");
7253     mImpl->log("finish vkCmdSetStencilCompareMask");;
7254 }
7255 
vkCmdSetStencilWriteMask(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t writeMask)7256 void VkEncoder::vkCmdSetStencilWriteMask(
7257     VkCommandBuffer commandBuffer,
7258     VkStencilFaceFlags faceMask,
7259     uint32_t writeMask)
7260 {
7261     AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask encode");
7262     mImpl->log("start vkCmdSetStencilWriteMask");
7263     auto stream = mImpl->stream();
7264     auto countingStream = mImpl->countingStream();
7265     auto resources = mImpl->resources();
7266     auto pool = mImpl->pool();
7267     stream->setHandleMapping(resources->unwrapMapping());
7268     VkCommandBuffer local_commandBuffer;
7269     VkStencilFaceFlags local_faceMask;
7270     uint32_t local_writeMask;
7271     local_commandBuffer = commandBuffer;
7272     local_faceMask = faceMask;
7273     local_writeMask = writeMask;
7274     countingStream->rewind();
7275     {
7276         uint64_t cgen_var_519;
7277         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_519, 1);
7278         countingStream->write((uint64_t*)&cgen_var_519, 1 * 8);
7279         countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7280         countingStream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
7281     }
7282     uint32_t packetSize_vkCmdSetStencilWriteMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7283     countingStream->rewind();
7284     uint32_t opcode_vkCmdSetStencilWriteMask = OP_vkCmdSetStencilWriteMask;
7285     stream->write(&opcode_vkCmdSetStencilWriteMask, sizeof(uint32_t));
7286     stream->write(&packetSize_vkCmdSetStencilWriteMask, sizeof(uint32_t));
7287     uint64_t cgen_var_520;
7288     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_520, 1);
7289     stream->write((uint64_t*)&cgen_var_520, 1 * 8);
7290     stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7291     stream->write((uint32_t*)&local_writeMask, sizeof(uint32_t));
7292     AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask readParams");
7293     AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask returnUnmarshal");
7294     mImpl->log("finish vkCmdSetStencilWriteMask");;
7295 }
7296 
vkCmdSetStencilReference(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t reference)7297 void VkEncoder::vkCmdSetStencilReference(
7298     VkCommandBuffer commandBuffer,
7299     VkStencilFaceFlags faceMask,
7300     uint32_t reference)
7301 {
7302     AEMU_SCOPED_TRACE("vkCmdSetStencilReference encode");
7303     mImpl->log("start vkCmdSetStencilReference");
7304     auto stream = mImpl->stream();
7305     auto countingStream = mImpl->countingStream();
7306     auto resources = mImpl->resources();
7307     auto pool = mImpl->pool();
7308     stream->setHandleMapping(resources->unwrapMapping());
7309     VkCommandBuffer local_commandBuffer;
7310     VkStencilFaceFlags local_faceMask;
7311     uint32_t local_reference;
7312     local_commandBuffer = commandBuffer;
7313     local_faceMask = faceMask;
7314     local_reference = reference;
7315     countingStream->rewind();
7316     {
7317         uint64_t cgen_var_521;
7318         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_521, 1);
7319         countingStream->write((uint64_t*)&cgen_var_521, 1 * 8);
7320         countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7321         countingStream->write((uint32_t*)&local_reference, sizeof(uint32_t));
7322     }
7323     uint32_t packetSize_vkCmdSetStencilReference = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7324     countingStream->rewind();
7325     uint32_t opcode_vkCmdSetStencilReference = OP_vkCmdSetStencilReference;
7326     stream->write(&opcode_vkCmdSetStencilReference, sizeof(uint32_t));
7327     stream->write(&packetSize_vkCmdSetStencilReference, sizeof(uint32_t));
7328     uint64_t cgen_var_522;
7329     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_522, 1);
7330     stream->write((uint64_t*)&cgen_var_522, 1 * 8);
7331     stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags));
7332     stream->write((uint32_t*)&local_reference, sizeof(uint32_t));
7333     AEMU_SCOPED_TRACE("vkCmdSetStencilReference readParams");
7334     AEMU_SCOPED_TRACE("vkCmdSetStencilReference returnUnmarshal");
7335     mImpl->log("finish vkCmdSetStencilReference");;
7336 }
7337 
vkCmdBindDescriptorSets(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t firstSet,uint32_t descriptorSetCount,const VkDescriptorSet * pDescriptorSets,uint32_t dynamicOffsetCount,const uint32_t * pDynamicOffsets)7338 void VkEncoder::vkCmdBindDescriptorSets(
7339     VkCommandBuffer commandBuffer,
7340     VkPipelineBindPoint pipelineBindPoint,
7341     VkPipelineLayout layout,
7342     uint32_t firstSet,
7343     uint32_t descriptorSetCount,
7344     const VkDescriptorSet* pDescriptorSets,
7345     uint32_t dynamicOffsetCount,
7346     const uint32_t* pDynamicOffsets)
7347 {
7348     AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets encode");
7349     mImpl->log("start vkCmdBindDescriptorSets");
7350     auto stream = mImpl->stream();
7351     auto countingStream = mImpl->countingStream();
7352     auto resources = mImpl->resources();
7353     auto pool = mImpl->pool();
7354     stream->setHandleMapping(resources->unwrapMapping());
7355     VkCommandBuffer local_commandBuffer;
7356     VkPipelineBindPoint local_pipelineBindPoint;
7357     VkPipelineLayout local_layout;
7358     uint32_t local_firstSet;
7359     uint32_t local_descriptorSetCount;
7360     VkDescriptorSet* local_pDescriptorSets;
7361     uint32_t local_dynamicOffsetCount;
7362     uint32_t* local_pDynamicOffsets;
7363     local_commandBuffer = commandBuffer;
7364     local_pipelineBindPoint = pipelineBindPoint;
7365     local_layout = layout;
7366     local_firstSet = firstSet;
7367     local_descriptorSetCount = descriptorSetCount;
7368     local_pDescriptorSets = nullptr;
7369     if (pDescriptorSets)
7370     {
7371         local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet));
7372     }
7373     local_dynamicOffsetCount = dynamicOffsetCount;
7374     local_pDynamicOffsets = nullptr;
7375     if (pDynamicOffsets)
7376     {
7377         local_pDynamicOffsets = (uint32_t*)pool->dupArray(pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t));
7378     }
7379     countingStream->rewind();
7380     {
7381         uint64_t cgen_var_523;
7382         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_523, 1);
7383         countingStream->write((uint64_t*)&cgen_var_523, 1 * 8);
7384         countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
7385         uint64_t cgen_var_524;
7386         countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_524, 1);
7387         countingStream->write((uint64_t*)&cgen_var_524, 1 * 8);
7388         countingStream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
7389         countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
7390         if (((descriptorSetCount)))
7391         {
7392             uint64_t* cgen_var_525;
7393             countingStream->alloc((void**)&cgen_var_525, ((descriptorSetCount)) * 8);
7394             countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_525, ((descriptorSetCount)));
7395             countingStream->write((uint64_t*)cgen_var_525, ((descriptorSetCount)) * 8);
7396         }
7397         countingStream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
7398         countingStream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
7399     }
7400     uint32_t packetSize_vkCmdBindDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7401     countingStream->rewind();
7402     uint32_t opcode_vkCmdBindDescriptorSets = OP_vkCmdBindDescriptorSets;
7403     stream->write(&opcode_vkCmdBindDescriptorSets, sizeof(uint32_t));
7404     stream->write(&packetSize_vkCmdBindDescriptorSets, sizeof(uint32_t));
7405     uint64_t cgen_var_526;
7406     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_526, 1);
7407     stream->write((uint64_t*)&cgen_var_526, 1 * 8);
7408     stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
7409     uint64_t cgen_var_527;
7410     stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_527, 1);
7411     stream->write((uint64_t*)&cgen_var_527, 1 * 8);
7412     stream->write((uint32_t*)&local_firstSet, sizeof(uint32_t));
7413     stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t));
7414     if (((descriptorSetCount)))
7415     {
7416         uint64_t* cgen_var_528;
7417         stream->alloc((void**)&cgen_var_528, ((descriptorSetCount)) * 8);
7418         stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_528, ((descriptorSetCount)));
7419         stream->write((uint64_t*)cgen_var_528, ((descriptorSetCount)) * 8);
7420     }
7421     stream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t));
7422     stream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t));
7423     AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets readParams");
7424     AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets returnUnmarshal");
7425     mImpl->log("finish vkCmdBindDescriptorSets");;
7426 }
7427 
vkCmdBindIndexBuffer(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkIndexType indexType)7428 void VkEncoder::vkCmdBindIndexBuffer(
7429     VkCommandBuffer commandBuffer,
7430     VkBuffer buffer,
7431     VkDeviceSize offset,
7432     VkIndexType indexType)
7433 {
7434     AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer encode");
7435     mImpl->log("start vkCmdBindIndexBuffer");
7436     auto stream = mImpl->stream();
7437     auto countingStream = mImpl->countingStream();
7438     auto resources = mImpl->resources();
7439     auto pool = mImpl->pool();
7440     stream->setHandleMapping(resources->unwrapMapping());
7441     VkCommandBuffer local_commandBuffer;
7442     VkBuffer local_buffer;
7443     VkDeviceSize local_offset;
7444     VkIndexType local_indexType;
7445     local_commandBuffer = commandBuffer;
7446     local_buffer = buffer;
7447     local_offset = offset;
7448     local_indexType = indexType;
7449     countingStream->rewind();
7450     {
7451         uint64_t cgen_var_529;
7452         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_529, 1);
7453         countingStream->write((uint64_t*)&cgen_var_529, 1 * 8);
7454         uint64_t cgen_var_530;
7455         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_530, 1);
7456         countingStream->write((uint64_t*)&cgen_var_530, 1 * 8);
7457         countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7458         countingStream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
7459     }
7460     uint32_t packetSize_vkCmdBindIndexBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7461     countingStream->rewind();
7462     uint32_t opcode_vkCmdBindIndexBuffer = OP_vkCmdBindIndexBuffer;
7463     stream->write(&opcode_vkCmdBindIndexBuffer, sizeof(uint32_t));
7464     stream->write(&packetSize_vkCmdBindIndexBuffer, sizeof(uint32_t));
7465     uint64_t cgen_var_531;
7466     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_531, 1);
7467     stream->write((uint64_t*)&cgen_var_531, 1 * 8);
7468     uint64_t cgen_var_532;
7469     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_532, 1);
7470     stream->write((uint64_t*)&cgen_var_532, 1 * 8);
7471     stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7472     stream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType));
7473     AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer readParams");
7474     AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer returnUnmarshal");
7475     mImpl->log("finish vkCmdBindIndexBuffer");;
7476 }
7477 
vkCmdBindVertexBuffers(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets)7478 void VkEncoder::vkCmdBindVertexBuffers(
7479     VkCommandBuffer commandBuffer,
7480     uint32_t firstBinding,
7481     uint32_t bindingCount,
7482     const VkBuffer* pBuffers,
7483     const VkDeviceSize* pOffsets)
7484 {
7485     AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers encode");
7486     mImpl->log("start vkCmdBindVertexBuffers");
7487     auto stream = mImpl->stream();
7488     auto countingStream = mImpl->countingStream();
7489     auto resources = mImpl->resources();
7490     auto pool = mImpl->pool();
7491     stream->setHandleMapping(resources->unwrapMapping());
7492     VkCommandBuffer local_commandBuffer;
7493     uint32_t local_firstBinding;
7494     uint32_t local_bindingCount;
7495     VkBuffer* local_pBuffers;
7496     VkDeviceSize* local_pOffsets;
7497     local_commandBuffer = commandBuffer;
7498     local_firstBinding = firstBinding;
7499     local_bindingCount = bindingCount;
7500     local_pBuffers = nullptr;
7501     if (pBuffers)
7502     {
7503         local_pBuffers = (VkBuffer*)pool->dupArray(pBuffers, ((bindingCount)) * sizeof(const VkBuffer));
7504     }
7505     local_pOffsets = nullptr;
7506     if (pOffsets)
7507     {
7508         local_pOffsets = (VkDeviceSize*)pool->dupArray(pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize));
7509     }
7510     countingStream->rewind();
7511     {
7512         uint64_t cgen_var_533;
7513         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_533, 1);
7514         countingStream->write((uint64_t*)&cgen_var_533, 1 * 8);
7515         countingStream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
7516         countingStream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
7517         if (((bindingCount)))
7518         {
7519             uint64_t* cgen_var_534;
7520             countingStream->alloc((void**)&cgen_var_534, ((bindingCount)) * 8);
7521             countingStream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_534, ((bindingCount)));
7522             countingStream->write((uint64_t*)cgen_var_534, ((bindingCount)) * 8);
7523         }
7524         countingStream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
7525     }
7526     uint32_t packetSize_vkCmdBindVertexBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7527     countingStream->rewind();
7528     uint32_t opcode_vkCmdBindVertexBuffers = OP_vkCmdBindVertexBuffers;
7529     stream->write(&opcode_vkCmdBindVertexBuffers, sizeof(uint32_t));
7530     stream->write(&packetSize_vkCmdBindVertexBuffers, sizeof(uint32_t));
7531     uint64_t cgen_var_535;
7532     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_535, 1);
7533     stream->write((uint64_t*)&cgen_var_535, 1 * 8);
7534     stream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t));
7535     stream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t));
7536     if (((bindingCount)))
7537     {
7538         uint64_t* cgen_var_536;
7539         stream->alloc((void**)&cgen_var_536, ((bindingCount)) * 8);
7540         stream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_536, ((bindingCount)));
7541         stream->write((uint64_t*)cgen_var_536, ((bindingCount)) * 8);
7542     }
7543     stream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize));
7544     AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers readParams");
7545     AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers returnUnmarshal");
7546     mImpl->log("finish vkCmdBindVertexBuffers");;
7547 }
7548 
vkCmdDraw(VkCommandBuffer commandBuffer,uint32_t vertexCount,uint32_t instanceCount,uint32_t firstVertex,uint32_t firstInstance)7549 void VkEncoder::vkCmdDraw(
7550     VkCommandBuffer commandBuffer,
7551     uint32_t vertexCount,
7552     uint32_t instanceCount,
7553     uint32_t firstVertex,
7554     uint32_t firstInstance)
7555 {
7556     AEMU_SCOPED_TRACE("vkCmdDraw encode");
7557     mImpl->log("start vkCmdDraw");
7558     auto stream = mImpl->stream();
7559     auto countingStream = mImpl->countingStream();
7560     auto resources = mImpl->resources();
7561     auto pool = mImpl->pool();
7562     stream->setHandleMapping(resources->unwrapMapping());
7563     VkCommandBuffer local_commandBuffer;
7564     uint32_t local_vertexCount;
7565     uint32_t local_instanceCount;
7566     uint32_t local_firstVertex;
7567     uint32_t local_firstInstance;
7568     local_commandBuffer = commandBuffer;
7569     local_vertexCount = vertexCount;
7570     local_instanceCount = instanceCount;
7571     local_firstVertex = firstVertex;
7572     local_firstInstance = firstInstance;
7573     countingStream->rewind();
7574     {
7575         uint64_t cgen_var_537;
7576         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_537, 1);
7577         countingStream->write((uint64_t*)&cgen_var_537, 1 * 8);
7578         countingStream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
7579         countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7580         countingStream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
7581         countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
7582     }
7583     uint32_t packetSize_vkCmdDraw = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7584     countingStream->rewind();
7585     uint32_t opcode_vkCmdDraw = OP_vkCmdDraw;
7586     stream->write(&opcode_vkCmdDraw, sizeof(uint32_t));
7587     stream->write(&packetSize_vkCmdDraw, sizeof(uint32_t));
7588     uint64_t cgen_var_538;
7589     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_538, 1);
7590     stream->write((uint64_t*)&cgen_var_538, 1 * 8);
7591     stream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t));
7592     stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7593     stream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t));
7594     stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
7595     AEMU_SCOPED_TRACE("vkCmdDraw readParams");
7596     AEMU_SCOPED_TRACE("vkCmdDraw returnUnmarshal");
7597     mImpl->log("finish vkCmdDraw");;
7598 }
7599 
vkCmdDrawIndexed(VkCommandBuffer commandBuffer,uint32_t indexCount,uint32_t instanceCount,uint32_t firstIndex,int32_t vertexOffset,uint32_t firstInstance)7600 void VkEncoder::vkCmdDrawIndexed(
7601     VkCommandBuffer commandBuffer,
7602     uint32_t indexCount,
7603     uint32_t instanceCount,
7604     uint32_t firstIndex,
7605     int32_t vertexOffset,
7606     uint32_t firstInstance)
7607 {
7608     AEMU_SCOPED_TRACE("vkCmdDrawIndexed encode");
7609     mImpl->log("start vkCmdDrawIndexed");
7610     auto stream = mImpl->stream();
7611     auto countingStream = mImpl->countingStream();
7612     auto resources = mImpl->resources();
7613     auto pool = mImpl->pool();
7614     stream->setHandleMapping(resources->unwrapMapping());
7615     VkCommandBuffer local_commandBuffer;
7616     uint32_t local_indexCount;
7617     uint32_t local_instanceCount;
7618     uint32_t local_firstIndex;
7619     int32_t local_vertexOffset;
7620     uint32_t local_firstInstance;
7621     local_commandBuffer = commandBuffer;
7622     local_indexCount = indexCount;
7623     local_instanceCount = instanceCount;
7624     local_firstIndex = firstIndex;
7625     local_vertexOffset = vertexOffset;
7626     local_firstInstance = firstInstance;
7627     countingStream->rewind();
7628     {
7629         uint64_t cgen_var_539;
7630         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_539, 1);
7631         countingStream->write((uint64_t*)&cgen_var_539, 1 * 8);
7632         countingStream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
7633         countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7634         countingStream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
7635         countingStream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
7636         countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
7637     }
7638     uint32_t packetSize_vkCmdDrawIndexed = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7639     countingStream->rewind();
7640     uint32_t opcode_vkCmdDrawIndexed = OP_vkCmdDrawIndexed;
7641     stream->write(&opcode_vkCmdDrawIndexed, sizeof(uint32_t));
7642     stream->write(&packetSize_vkCmdDrawIndexed, sizeof(uint32_t));
7643     uint64_t cgen_var_540;
7644     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_540, 1);
7645     stream->write((uint64_t*)&cgen_var_540, 1 * 8);
7646     stream->write((uint32_t*)&local_indexCount, sizeof(uint32_t));
7647     stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t));
7648     stream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t));
7649     stream->write((int32_t*)&local_vertexOffset, sizeof(int32_t));
7650     stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t));
7651     AEMU_SCOPED_TRACE("vkCmdDrawIndexed readParams");
7652     AEMU_SCOPED_TRACE("vkCmdDrawIndexed returnUnmarshal");
7653     mImpl->log("finish vkCmdDrawIndexed");;
7654 }
7655 
vkCmdDrawIndirect(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)7656 void VkEncoder::vkCmdDrawIndirect(
7657     VkCommandBuffer commandBuffer,
7658     VkBuffer buffer,
7659     VkDeviceSize offset,
7660     uint32_t drawCount,
7661     uint32_t stride)
7662 {
7663     AEMU_SCOPED_TRACE("vkCmdDrawIndirect encode");
7664     mImpl->log("start vkCmdDrawIndirect");
7665     auto stream = mImpl->stream();
7666     auto countingStream = mImpl->countingStream();
7667     auto resources = mImpl->resources();
7668     auto pool = mImpl->pool();
7669     stream->setHandleMapping(resources->unwrapMapping());
7670     VkCommandBuffer local_commandBuffer;
7671     VkBuffer local_buffer;
7672     VkDeviceSize local_offset;
7673     uint32_t local_drawCount;
7674     uint32_t local_stride;
7675     local_commandBuffer = commandBuffer;
7676     local_buffer = buffer;
7677     local_offset = offset;
7678     local_drawCount = drawCount;
7679     local_stride = stride;
7680     countingStream->rewind();
7681     {
7682         uint64_t cgen_var_541;
7683         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_541, 1);
7684         countingStream->write((uint64_t*)&cgen_var_541, 1 * 8);
7685         uint64_t cgen_var_542;
7686         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_542, 1);
7687         countingStream->write((uint64_t*)&cgen_var_542, 1 * 8);
7688         countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7689         countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7690         countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
7691     }
7692     uint32_t packetSize_vkCmdDrawIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7693     countingStream->rewind();
7694     uint32_t opcode_vkCmdDrawIndirect = OP_vkCmdDrawIndirect;
7695     stream->write(&opcode_vkCmdDrawIndirect, sizeof(uint32_t));
7696     stream->write(&packetSize_vkCmdDrawIndirect, sizeof(uint32_t));
7697     uint64_t cgen_var_543;
7698     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_543, 1);
7699     stream->write((uint64_t*)&cgen_var_543, 1 * 8);
7700     uint64_t cgen_var_544;
7701     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_544, 1);
7702     stream->write((uint64_t*)&cgen_var_544, 1 * 8);
7703     stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7704     stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7705     stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
7706     AEMU_SCOPED_TRACE("vkCmdDrawIndirect readParams");
7707     AEMU_SCOPED_TRACE("vkCmdDrawIndirect returnUnmarshal");
7708     mImpl->log("finish vkCmdDrawIndirect");;
7709 }
7710 
vkCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)7711 void VkEncoder::vkCmdDrawIndexedIndirect(
7712     VkCommandBuffer commandBuffer,
7713     VkBuffer buffer,
7714     VkDeviceSize offset,
7715     uint32_t drawCount,
7716     uint32_t stride)
7717 {
7718     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect encode");
7719     mImpl->log("start vkCmdDrawIndexedIndirect");
7720     auto stream = mImpl->stream();
7721     auto countingStream = mImpl->countingStream();
7722     auto resources = mImpl->resources();
7723     auto pool = mImpl->pool();
7724     stream->setHandleMapping(resources->unwrapMapping());
7725     VkCommandBuffer local_commandBuffer;
7726     VkBuffer local_buffer;
7727     VkDeviceSize local_offset;
7728     uint32_t local_drawCount;
7729     uint32_t local_stride;
7730     local_commandBuffer = commandBuffer;
7731     local_buffer = buffer;
7732     local_offset = offset;
7733     local_drawCount = drawCount;
7734     local_stride = stride;
7735     countingStream->rewind();
7736     {
7737         uint64_t cgen_var_545;
7738         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_545, 1);
7739         countingStream->write((uint64_t*)&cgen_var_545, 1 * 8);
7740         uint64_t cgen_var_546;
7741         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_546, 1);
7742         countingStream->write((uint64_t*)&cgen_var_546, 1 * 8);
7743         countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7744         countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7745         countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
7746     }
7747     uint32_t packetSize_vkCmdDrawIndexedIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7748     countingStream->rewind();
7749     uint32_t opcode_vkCmdDrawIndexedIndirect = OP_vkCmdDrawIndexedIndirect;
7750     stream->write(&opcode_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
7751     stream->write(&packetSize_vkCmdDrawIndexedIndirect, sizeof(uint32_t));
7752     uint64_t cgen_var_547;
7753     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_547, 1);
7754     stream->write((uint64_t*)&cgen_var_547, 1 * 8);
7755     uint64_t cgen_var_548;
7756     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_548, 1);
7757     stream->write((uint64_t*)&cgen_var_548, 1 * 8);
7758     stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7759     stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t));
7760     stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
7761     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect readParams");
7762     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect returnUnmarshal");
7763     mImpl->log("finish vkCmdDrawIndexedIndirect");;
7764 }
7765 
vkCmdDispatch(VkCommandBuffer commandBuffer,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)7766 void VkEncoder::vkCmdDispatch(
7767     VkCommandBuffer commandBuffer,
7768     uint32_t groupCountX,
7769     uint32_t groupCountY,
7770     uint32_t groupCountZ)
7771 {
7772     AEMU_SCOPED_TRACE("vkCmdDispatch encode");
7773     mImpl->log("start vkCmdDispatch");
7774     auto stream = mImpl->stream();
7775     auto countingStream = mImpl->countingStream();
7776     auto resources = mImpl->resources();
7777     auto pool = mImpl->pool();
7778     stream->setHandleMapping(resources->unwrapMapping());
7779     VkCommandBuffer local_commandBuffer;
7780     uint32_t local_groupCountX;
7781     uint32_t local_groupCountY;
7782     uint32_t local_groupCountZ;
7783     local_commandBuffer = commandBuffer;
7784     local_groupCountX = groupCountX;
7785     local_groupCountY = groupCountY;
7786     local_groupCountZ = groupCountZ;
7787     countingStream->rewind();
7788     {
7789         uint64_t cgen_var_549;
7790         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_549, 1);
7791         countingStream->write((uint64_t*)&cgen_var_549, 1 * 8);
7792         countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
7793         countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
7794         countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
7795     }
7796     uint32_t packetSize_vkCmdDispatch = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7797     countingStream->rewind();
7798     uint32_t opcode_vkCmdDispatch = OP_vkCmdDispatch;
7799     stream->write(&opcode_vkCmdDispatch, sizeof(uint32_t));
7800     stream->write(&packetSize_vkCmdDispatch, sizeof(uint32_t));
7801     uint64_t cgen_var_550;
7802     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_550, 1);
7803     stream->write((uint64_t*)&cgen_var_550, 1 * 8);
7804     stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
7805     stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
7806     stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
7807     AEMU_SCOPED_TRACE("vkCmdDispatch readParams");
7808     AEMU_SCOPED_TRACE("vkCmdDispatch returnUnmarshal");
7809     mImpl->log("finish vkCmdDispatch");;
7810 }
7811 
vkCmdDispatchIndirect(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset)7812 void VkEncoder::vkCmdDispatchIndirect(
7813     VkCommandBuffer commandBuffer,
7814     VkBuffer buffer,
7815     VkDeviceSize offset)
7816 {
7817     AEMU_SCOPED_TRACE("vkCmdDispatchIndirect encode");
7818     mImpl->log("start vkCmdDispatchIndirect");
7819     auto stream = mImpl->stream();
7820     auto countingStream = mImpl->countingStream();
7821     auto resources = mImpl->resources();
7822     auto pool = mImpl->pool();
7823     stream->setHandleMapping(resources->unwrapMapping());
7824     VkCommandBuffer local_commandBuffer;
7825     VkBuffer local_buffer;
7826     VkDeviceSize local_offset;
7827     local_commandBuffer = commandBuffer;
7828     local_buffer = buffer;
7829     local_offset = offset;
7830     countingStream->rewind();
7831     {
7832         uint64_t cgen_var_551;
7833         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_551, 1);
7834         countingStream->write((uint64_t*)&cgen_var_551, 1 * 8);
7835         uint64_t cgen_var_552;
7836         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_552, 1);
7837         countingStream->write((uint64_t*)&cgen_var_552, 1 * 8);
7838         countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7839     }
7840     uint32_t packetSize_vkCmdDispatchIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7841     countingStream->rewind();
7842     uint32_t opcode_vkCmdDispatchIndirect = OP_vkCmdDispatchIndirect;
7843     stream->write(&opcode_vkCmdDispatchIndirect, sizeof(uint32_t));
7844     stream->write(&packetSize_vkCmdDispatchIndirect, sizeof(uint32_t));
7845     uint64_t cgen_var_553;
7846     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_553, 1);
7847     stream->write((uint64_t*)&cgen_var_553, 1 * 8);
7848     uint64_t cgen_var_554;
7849     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_554, 1);
7850     stream->write((uint64_t*)&cgen_var_554, 1 * 8);
7851     stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
7852     AEMU_SCOPED_TRACE("vkCmdDispatchIndirect readParams");
7853     AEMU_SCOPED_TRACE("vkCmdDispatchIndirect returnUnmarshal");
7854     mImpl->log("finish vkCmdDispatchIndirect");;
7855 }
7856 
vkCmdCopyBuffer(VkCommandBuffer commandBuffer,VkBuffer srcBuffer,VkBuffer dstBuffer,uint32_t regionCount,const VkBufferCopy * pRegions)7857 void VkEncoder::vkCmdCopyBuffer(
7858     VkCommandBuffer commandBuffer,
7859     VkBuffer srcBuffer,
7860     VkBuffer dstBuffer,
7861     uint32_t regionCount,
7862     const VkBufferCopy* pRegions)
7863 {
7864     AEMU_SCOPED_TRACE("vkCmdCopyBuffer encode");
7865     mImpl->log("start vkCmdCopyBuffer");
7866     auto stream = mImpl->stream();
7867     auto countingStream = mImpl->countingStream();
7868     auto resources = mImpl->resources();
7869     auto pool = mImpl->pool();
7870     stream->setHandleMapping(resources->unwrapMapping());
7871     VkCommandBuffer local_commandBuffer;
7872     VkBuffer local_srcBuffer;
7873     VkBuffer local_dstBuffer;
7874     uint32_t local_regionCount;
7875     VkBufferCopy* local_pRegions;
7876     local_commandBuffer = commandBuffer;
7877     local_srcBuffer = srcBuffer;
7878     local_dstBuffer = dstBuffer;
7879     local_regionCount = regionCount;
7880     local_pRegions = nullptr;
7881     if (pRegions)
7882     {
7883         local_pRegions = (VkBufferCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferCopy));
7884         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7885         {
7886             deepcopy_VkBufferCopy(pool, pRegions + i, (VkBufferCopy*)(local_pRegions + i));
7887         }
7888     }
7889     if (local_pRegions)
7890     {
7891         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7892         {
7893             transform_tohost_VkBufferCopy(mImpl->resources(), (VkBufferCopy*)(local_pRegions + i));
7894         }
7895     }
7896     countingStream->rewind();
7897     {
7898         uint64_t cgen_var_555;
7899         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_555, 1);
7900         countingStream->write((uint64_t*)&cgen_var_555, 1 * 8);
7901         uint64_t cgen_var_556;
7902         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_556, 1);
7903         countingStream->write((uint64_t*)&cgen_var_556, 1 * 8);
7904         uint64_t cgen_var_557;
7905         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_557, 1);
7906         countingStream->write((uint64_t*)&cgen_var_557, 1 * 8);
7907         countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7908         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7909         {
7910             marshal_VkBufferCopy(countingStream, (VkBufferCopy*)(local_pRegions + i));
7911         }
7912     }
7913     uint32_t packetSize_vkCmdCopyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
7914     countingStream->rewind();
7915     uint32_t opcode_vkCmdCopyBuffer = OP_vkCmdCopyBuffer;
7916     stream->write(&opcode_vkCmdCopyBuffer, sizeof(uint32_t));
7917     stream->write(&packetSize_vkCmdCopyBuffer, sizeof(uint32_t));
7918     uint64_t cgen_var_558;
7919     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_558, 1);
7920     stream->write((uint64_t*)&cgen_var_558, 1 * 8);
7921     uint64_t cgen_var_559;
7922     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_559, 1);
7923     stream->write((uint64_t*)&cgen_var_559, 1 * 8);
7924     uint64_t cgen_var_560;
7925     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_560, 1);
7926     stream->write((uint64_t*)&cgen_var_560, 1 * 8);
7927     stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7928     for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7929     {
7930         marshal_VkBufferCopy(stream, (VkBufferCopy*)(local_pRegions + i));
7931     }
7932     AEMU_SCOPED_TRACE("vkCmdCopyBuffer readParams");
7933     AEMU_SCOPED_TRACE("vkCmdCopyBuffer returnUnmarshal");
7934     mImpl->log("finish vkCmdCopyBuffer");;
7935 }
7936 
vkCmdCopyImage(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageCopy * pRegions)7937 void VkEncoder::vkCmdCopyImage(
7938     VkCommandBuffer commandBuffer,
7939     VkImage srcImage,
7940     VkImageLayout srcImageLayout,
7941     VkImage dstImage,
7942     VkImageLayout dstImageLayout,
7943     uint32_t regionCount,
7944     const VkImageCopy* pRegions)
7945 {
7946     AEMU_SCOPED_TRACE("vkCmdCopyImage encode");
7947     mImpl->log("start vkCmdCopyImage");
7948     auto stream = mImpl->stream();
7949     auto countingStream = mImpl->countingStream();
7950     auto resources = mImpl->resources();
7951     auto pool = mImpl->pool();
7952     stream->setHandleMapping(resources->unwrapMapping());
7953     VkCommandBuffer local_commandBuffer;
7954     VkImage local_srcImage;
7955     VkImageLayout local_srcImageLayout;
7956     VkImage local_dstImage;
7957     VkImageLayout local_dstImageLayout;
7958     uint32_t local_regionCount;
7959     VkImageCopy* local_pRegions;
7960     local_commandBuffer = commandBuffer;
7961     local_srcImage = srcImage;
7962     local_srcImageLayout = srcImageLayout;
7963     local_dstImage = dstImage;
7964     local_dstImageLayout = dstImageLayout;
7965     local_regionCount = regionCount;
7966     local_pRegions = nullptr;
7967     if (pRegions)
7968     {
7969         local_pRegions = (VkImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkImageCopy));
7970         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7971         {
7972             deepcopy_VkImageCopy(pool, pRegions + i, (VkImageCopy*)(local_pRegions + i));
7973         }
7974     }
7975     if (local_pRegions)
7976     {
7977         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7978         {
7979             transform_tohost_VkImageCopy(mImpl->resources(), (VkImageCopy*)(local_pRegions + i));
7980         }
7981     }
7982     countingStream->rewind();
7983     {
7984         uint64_t cgen_var_561;
7985         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_561, 1);
7986         countingStream->write((uint64_t*)&cgen_var_561, 1 * 8);
7987         uint64_t cgen_var_562;
7988         countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_562, 1);
7989         countingStream->write((uint64_t*)&cgen_var_562, 1 * 8);
7990         countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
7991         uint64_t cgen_var_563;
7992         countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_563, 1);
7993         countingStream->write((uint64_t*)&cgen_var_563, 1 * 8);
7994         countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
7995         countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
7996         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
7997         {
7998             marshal_VkImageCopy(countingStream, (VkImageCopy*)(local_pRegions + i));
7999         }
8000     }
8001     uint32_t packetSize_vkCmdCopyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8002     countingStream->rewind();
8003     uint32_t opcode_vkCmdCopyImage = OP_vkCmdCopyImage;
8004     stream->write(&opcode_vkCmdCopyImage, sizeof(uint32_t));
8005     stream->write(&packetSize_vkCmdCopyImage, sizeof(uint32_t));
8006     uint64_t cgen_var_564;
8007     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_564, 1);
8008     stream->write((uint64_t*)&cgen_var_564, 1 * 8);
8009     uint64_t cgen_var_565;
8010     stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_565, 1);
8011     stream->write((uint64_t*)&cgen_var_565, 1 * 8);
8012     stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
8013     uint64_t cgen_var_566;
8014     stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_566, 1);
8015     stream->write((uint64_t*)&cgen_var_566, 1 * 8);
8016     stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8017     stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8018     for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8019     {
8020         marshal_VkImageCopy(stream, (VkImageCopy*)(local_pRegions + i));
8021     }
8022     AEMU_SCOPED_TRACE("vkCmdCopyImage readParams");
8023     AEMU_SCOPED_TRACE("vkCmdCopyImage returnUnmarshal");
8024     mImpl->log("finish vkCmdCopyImage");;
8025 }
8026 
vkCmdBlitImage(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageBlit * pRegions,VkFilter filter)8027 void VkEncoder::vkCmdBlitImage(
8028     VkCommandBuffer commandBuffer,
8029     VkImage srcImage,
8030     VkImageLayout srcImageLayout,
8031     VkImage dstImage,
8032     VkImageLayout dstImageLayout,
8033     uint32_t regionCount,
8034     const VkImageBlit* pRegions,
8035     VkFilter filter)
8036 {
8037     AEMU_SCOPED_TRACE("vkCmdBlitImage encode");
8038     mImpl->log("start vkCmdBlitImage");
8039     auto stream = mImpl->stream();
8040     auto countingStream = mImpl->countingStream();
8041     auto resources = mImpl->resources();
8042     auto pool = mImpl->pool();
8043     stream->setHandleMapping(resources->unwrapMapping());
8044     VkCommandBuffer local_commandBuffer;
8045     VkImage local_srcImage;
8046     VkImageLayout local_srcImageLayout;
8047     VkImage local_dstImage;
8048     VkImageLayout local_dstImageLayout;
8049     uint32_t local_regionCount;
8050     VkImageBlit* local_pRegions;
8051     VkFilter local_filter;
8052     local_commandBuffer = commandBuffer;
8053     local_srcImage = srcImage;
8054     local_srcImageLayout = srcImageLayout;
8055     local_dstImage = dstImage;
8056     local_dstImageLayout = dstImageLayout;
8057     local_regionCount = regionCount;
8058     local_pRegions = nullptr;
8059     if (pRegions)
8060     {
8061         local_pRegions = (VkImageBlit*)pool->alloc(((regionCount)) * sizeof(const VkImageBlit));
8062         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8063         {
8064             deepcopy_VkImageBlit(pool, pRegions + i, (VkImageBlit*)(local_pRegions + i));
8065         }
8066     }
8067     local_filter = filter;
8068     if (local_pRegions)
8069     {
8070         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8071         {
8072             transform_tohost_VkImageBlit(mImpl->resources(), (VkImageBlit*)(local_pRegions + i));
8073         }
8074     }
8075     countingStream->rewind();
8076     {
8077         uint64_t cgen_var_567;
8078         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_567, 1);
8079         countingStream->write((uint64_t*)&cgen_var_567, 1 * 8);
8080         uint64_t cgen_var_568;
8081         countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_568, 1);
8082         countingStream->write((uint64_t*)&cgen_var_568, 1 * 8);
8083         countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
8084         uint64_t cgen_var_569;
8085         countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_569, 1);
8086         countingStream->write((uint64_t*)&cgen_var_569, 1 * 8);
8087         countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8088         countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8089         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8090         {
8091             marshal_VkImageBlit(countingStream, (VkImageBlit*)(local_pRegions + i));
8092         }
8093         countingStream->write((VkFilter*)&local_filter, sizeof(VkFilter));
8094     }
8095     uint32_t packetSize_vkCmdBlitImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8096     countingStream->rewind();
8097     uint32_t opcode_vkCmdBlitImage = OP_vkCmdBlitImage;
8098     stream->write(&opcode_vkCmdBlitImage, sizeof(uint32_t));
8099     stream->write(&packetSize_vkCmdBlitImage, sizeof(uint32_t));
8100     uint64_t cgen_var_570;
8101     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_570, 1);
8102     stream->write((uint64_t*)&cgen_var_570, 1 * 8);
8103     uint64_t cgen_var_571;
8104     stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_571, 1);
8105     stream->write((uint64_t*)&cgen_var_571, 1 * 8);
8106     stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
8107     uint64_t cgen_var_572;
8108     stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_572, 1);
8109     stream->write((uint64_t*)&cgen_var_572, 1 * 8);
8110     stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8111     stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8112     for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8113     {
8114         marshal_VkImageBlit(stream, (VkImageBlit*)(local_pRegions + i));
8115     }
8116     stream->write((VkFilter*)&local_filter, sizeof(VkFilter));
8117     AEMU_SCOPED_TRACE("vkCmdBlitImage readParams");
8118     AEMU_SCOPED_TRACE("vkCmdBlitImage returnUnmarshal");
8119     mImpl->log("finish vkCmdBlitImage");;
8120 }
8121 
vkCmdCopyBufferToImage(VkCommandBuffer commandBuffer,VkBuffer srcBuffer,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkBufferImageCopy * pRegions)8122 void VkEncoder::vkCmdCopyBufferToImage(
8123     VkCommandBuffer commandBuffer,
8124     VkBuffer srcBuffer,
8125     VkImage dstImage,
8126     VkImageLayout dstImageLayout,
8127     uint32_t regionCount,
8128     const VkBufferImageCopy* pRegions)
8129 {
8130     AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage encode");
8131     mImpl->log("start vkCmdCopyBufferToImage");
8132     auto stream = mImpl->stream();
8133     auto countingStream = mImpl->countingStream();
8134     auto resources = mImpl->resources();
8135     auto pool = mImpl->pool();
8136     stream->setHandleMapping(resources->unwrapMapping());
8137     VkCommandBuffer local_commandBuffer;
8138     VkBuffer local_srcBuffer;
8139     VkImage local_dstImage;
8140     VkImageLayout local_dstImageLayout;
8141     uint32_t local_regionCount;
8142     VkBufferImageCopy* local_pRegions;
8143     local_commandBuffer = commandBuffer;
8144     local_srcBuffer = srcBuffer;
8145     local_dstImage = dstImage;
8146     local_dstImageLayout = dstImageLayout;
8147     local_regionCount = regionCount;
8148     local_pRegions = nullptr;
8149     if (pRegions)
8150     {
8151         local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
8152         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8153         {
8154             deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
8155         }
8156     }
8157     if (local_pRegions)
8158     {
8159         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8160         {
8161             transform_tohost_VkBufferImageCopy(mImpl->resources(), (VkBufferImageCopy*)(local_pRegions + i));
8162         }
8163     }
8164     countingStream->rewind();
8165     {
8166         uint64_t cgen_var_573;
8167         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_573, 1);
8168         countingStream->write((uint64_t*)&cgen_var_573, 1 * 8);
8169         uint64_t cgen_var_574;
8170         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_574, 1);
8171         countingStream->write((uint64_t*)&cgen_var_574, 1 * 8);
8172         uint64_t cgen_var_575;
8173         countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_575, 1);
8174         countingStream->write((uint64_t*)&cgen_var_575, 1 * 8);
8175         countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8176         countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8177         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8178         {
8179             marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
8180         }
8181     }
8182     uint32_t packetSize_vkCmdCopyBufferToImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8183     countingStream->rewind();
8184     uint32_t opcode_vkCmdCopyBufferToImage = OP_vkCmdCopyBufferToImage;
8185     stream->write(&opcode_vkCmdCopyBufferToImage, sizeof(uint32_t));
8186     stream->write(&packetSize_vkCmdCopyBufferToImage, sizeof(uint32_t));
8187     uint64_t cgen_var_576;
8188     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_576, 1);
8189     stream->write((uint64_t*)&cgen_var_576, 1 * 8);
8190     uint64_t cgen_var_577;
8191     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_577, 1);
8192     stream->write((uint64_t*)&cgen_var_577, 1 * 8);
8193     uint64_t cgen_var_578;
8194     stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_578, 1);
8195     stream->write((uint64_t*)&cgen_var_578, 1 * 8);
8196     stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8197     stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8198     for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8199     {
8200         marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
8201     }
8202     AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage readParams");
8203     AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage returnUnmarshal");
8204     mImpl->log("finish vkCmdCopyBufferToImage");;
8205 }
8206 
vkCmdCopyImageToBuffer(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkBuffer dstBuffer,uint32_t regionCount,const VkBufferImageCopy * pRegions)8207 void VkEncoder::vkCmdCopyImageToBuffer(
8208     VkCommandBuffer commandBuffer,
8209     VkImage srcImage,
8210     VkImageLayout srcImageLayout,
8211     VkBuffer dstBuffer,
8212     uint32_t regionCount,
8213     const VkBufferImageCopy* pRegions)
8214 {
8215     AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer encode");
8216     mImpl->log("start vkCmdCopyImageToBuffer");
8217     auto stream = mImpl->stream();
8218     auto countingStream = mImpl->countingStream();
8219     auto resources = mImpl->resources();
8220     auto pool = mImpl->pool();
8221     stream->setHandleMapping(resources->unwrapMapping());
8222     VkCommandBuffer local_commandBuffer;
8223     VkImage local_srcImage;
8224     VkImageLayout local_srcImageLayout;
8225     VkBuffer local_dstBuffer;
8226     uint32_t local_regionCount;
8227     VkBufferImageCopy* local_pRegions;
8228     local_commandBuffer = commandBuffer;
8229     local_srcImage = srcImage;
8230     local_srcImageLayout = srcImageLayout;
8231     local_dstBuffer = dstBuffer;
8232     local_regionCount = regionCount;
8233     local_pRegions = nullptr;
8234     if (pRegions)
8235     {
8236         local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy));
8237         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8238         {
8239             deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i));
8240         }
8241     }
8242     if (local_pRegions)
8243     {
8244         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8245         {
8246             transform_tohost_VkBufferImageCopy(mImpl->resources(), (VkBufferImageCopy*)(local_pRegions + i));
8247         }
8248     }
8249     countingStream->rewind();
8250     {
8251         uint64_t cgen_var_579;
8252         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_579, 1);
8253         countingStream->write((uint64_t*)&cgen_var_579, 1 * 8);
8254         uint64_t cgen_var_580;
8255         countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_580, 1);
8256         countingStream->write((uint64_t*)&cgen_var_580, 1 * 8);
8257         countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
8258         uint64_t cgen_var_581;
8259         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_581, 1);
8260         countingStream->write((uint64_t*)&cgen_var_581, 1 * 8);
8261         countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8262         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8263         {
8264             marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i));
8265         }
8266     }
8267     uint32_t packetSize_vkCmdCopyImageToBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8268     countingStream->rewind();
8269     uint32_t opcode_vkCmdCopyImageToBuffer = OP_vkCmdCopyImageToBuffer;
8270     stream->write(&opcode_vkCmdCopyImageToBuffer, sizeof(uint32_t));
8271     stream->write(&packetSize_vkCmdCopyImageToBuffer, sizeof(uint32_t));
8272     uint64_t cgen_var_582;
8273     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_582, 1);
8274     stream->write((uint64_t*)&cgen_var_582, 1 * 8);
8275     uint64_t cgen_var_583;
8276     stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_583, 1);
8277     stream->write((uint64_t*)&cgen_var_583, 1 * 8);
8278     stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
8279     uint64_t cgen_var_584;
8280     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_584, 1);
8281     stream->write((uint64_t*)&cgen_var_584, 1 * 8);
8282     stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8283     for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8284     {
8285         marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i));
8286     }
8287     AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer readParams");
8288     AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer returnUnmarshal");
8289     mImpl->log("finish vkCmdCopyImageToBuffer");;
8290 }
8291 
vkCmdUpdateBuffer(VkCommandBuffer commandBuffer,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize dataSize,const void * pData)8292 void VkEncoder::vkCmdUpdateBuffer(
8293     VkCommandBuffer commandBuffer,
8294     VkBuffer dstBuffer,
8295     VkDeviceSize dstOffset,
8296     VkDeviceSize dataSize,
8297     const void* pData)
8298 {
8299     AEMU_SCOPED_TRACE("vkCmdUpdateBuffer encode");
8300     mImpl->log("start vkCmdUpdateBuffer");
8301     auto stream = mImpl->stream();
8302     auto countingStream = mImpl->countingStream();
8303     auto resources = mImpl->resources();
8304     auto pool = mImpl->pool();
8305     stream->setHandleMapping(resources->unwrapMapping());
8306     VkCommandBuffer local_commandBuffer;
8307     VkBuffer local_dstBuffer;
8308     VkDeviceSize local_dstOffset;
8309     VkDeviceSize local_dataSize;
8310     void* local_pData;
8311     local_commandBuffer = commandBuffer;
8312     local_dstBuffer = dstBuffer;
8313     local_dstOffset = dstOffset;
8314     local_dataSize = dataSize;
8315     local_pData = nullptr;
8316     if (pData)
8317     {
8318         local_pData = (void*)pool->dupArray(pData, ((dataSize)) * sizeof(const uint8_t));
8319     }
8320     countingStream->rewind();
8321     {
8322         uint64_t cgen_var_585;
8323         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_585, 1);
8324         countingStream->write((uint64_t*)&cgen_var_585, 1 * 8);
8325         uint64_t cgen_var_586;
8326         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_586, 1);
8327         countingStream->write((uint64_t*)&cgen_var_586, 1 * 8);
8328         countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8329         countingStream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
8330         countingStream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
8331     }
8332     uint32_t packetSize_vkCmdUpdateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8333     countingStream->rewind();
8334     uint32_t opcode_vkCmdUpdateBuffer = OP_vkCmdUpdateBuffer;
8335     stream->write(&opcode_vkCmdUpdateBuffer, sizeof(uint32_t));
8336     stream->write(&packetSize_vkCmdUpdateBuffer, sizeof(uint32_t));
8337     uint64_t cgen_var_587;
8338     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_587, 1);
8339     stream->write((uint64_t*)&cgen_var_587, 1 * 8);
8340     uint64_t cgen_var_588;
8341     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_588, 1);
8342     stream->write((uint64_t*)&cgen_var_588, 1 * 8);
8343     stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8344     stream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize));
8345     stream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t));
8346     AEMU_SCOPED_TRACE("vkCmdUpdateBuffer readParams");
8347     AEMU_SCOPED_TRACE("vkCmdUpdateBuffer returnUnmarshal");
8348     mImpl->log("finish vkCmdUpdateBuffer");;
8349 }
8350 
vkCmdFillBuffer(VkCommandBuffer commandBuffer,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize size,uint32_t data)8351 void VkEncoder::vkCmdFillBuffer(
8352     VkCommandBuffer commandBuffer,
8353     VkBuffer dstBuffer,
8354     VkDeviceSize dstOffset,
8355     VkDeviceSize size,
8356     uint32_t data)
8357 {
8358     AEMU_SCOPED_TRACE("vkCmdFillBuffer encode");
8359     mImpl->log("start vkCmdFillBuffer");
8360     auto stream = mImpl->stream();
8361     auto countingStream = mImpl->countingStream();
8362     auto resources = mImpl->resources();
8363     auto pool = mImpl->pool();
8364     stream->setHandleMapping(resources->unwrapMapping());
8365     VkCommandBuffer local_commandBuffer;
8366     VkBuffer local_dstBuffer;
8367     VkDeviceSize local_dstOffset;
8368     VkDeviceSize local_size;
8369     uint32_t local_data;
8370     local_commandBuffer = commandBuffer;
8371     local_dstBuffer = dstBuffer;
8372     local_dstOffset = dstOffset;
8373     local_size = size;
8374     local_data = data;
8375     countingStream->rewind();
8376     {
8377         uint64_t cgen_var_589;
8378         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_589, 1);
8379         countingStream->write((uint64_t*)&cgen_var_589, 1 * 8);
8380         uint64_t cgen_var_590;
8381         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_590, 1);
8382         countingStream->write((uint64_t*)&cgen_var_590, 1 * 8);
8383         countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8384         countingStream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
8385         countingStream->write((uint32_t*)&local_data, sizeof(uint32_t));
8386     }
8387     uint32_t packetSize_vkCmdFillBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8388     countingStream->rewind();
8389     uint32_t opcode_vkCmdFillBuffer = OP_vkCmdFillBuffer;
8390     stream->write(&opcode_vkCmdFillBuffer, sizeof(uint32_t));
8391     stream->write(&packetSize_vkCmdFillBuffer, sizeof(uint32_t));
8392     uint64_t cgen_var_591;
8393     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_591, 1);
8394     stream->write((uint64_t*)&cgen_var_591, 1 * 8);
8395     uint64_t cgen_var_592;
8396     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_592, 1);
8397     stream->write((uint64_t*)&cgen_var_592, 1 * 8);
8398     stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
8399     stream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize));
8400     stream->write((uint32_t*)&local_data, sizeof(uint32_t));
8401     AEMU_SCOPED_TRACE("vkCmdFillBuffer readParams");
8402     AEMU_SCOPED_TRACE("vkCmdFillBuffer returnUnmarshal");
8403     mImpl->log("finish vkCmdFillBuffer");;
8404 }
8405 
vkCmdClearColorImage(VkCommandBuffer commandBuffer,VkImage image,VkImageLayout imageLayout,const VkClearColorValue * pColor,uint32_t rangeCount,const VkImageSubresourceRange * pRanges)8406 void VkEncoder::vkCmdClearColorImage(
8407     VkCommandBuffer commandBuffer,
8408     VkImage image,
8409     VkImageLayout imageLayout,
8410     const VkClearColorValue* pColor,
8411     uint32_t rangeCount,
8412     const VkImageSubresourceRange* pRanges)
8413 {
8414     AEMU_SCOPED_TRACE("vkCmdClearColorImage encode");
8415     mImpl->log("start vkCmdClearColorImage");
8416     auto stream = mImpl->stream();
8417     auto countingStream = mImpl->countingStream();
8418     auto resources = mImpl->resources();
8419     auto pool = mImpl->pool();
8420     stream->setHandleMapping(resources->unwrapMapping());
8421     VkCommandBuffer local_commandBuffer;
8422     VkImage local_image;
8423     VkImageLayout local_imageLayout;
8424     VkClearColorValue* local_pColor;
8425     uint32_t local_rangeCount;
8426     VkImageSubresourceRange* local_pRanges;
8427     local_commandBuffer = commandBuffer;
8428     local_image = image;
8429     local_imageLayout = imageLayout;
8430     local_pColor = nullptr;
8431     if (pColor)
8432     {
8433         local_pColor = (VkClearColorValue*)pool->alloc(sizeof(const VkClearColorValue));
8434         deepcopy_VkClearColorValue(pool, pColor, (VkClearColorValue*)(local_pColor));
8435     }
8436     local_rangeCount = rangeCount;
8437     local_pRanges = nullptr;
8438     if (pRanges)
8439     {
8440         local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
8441         for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8442         {
8443             deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
8444         }
8445     }
8446     if (local_pColor)
8447     {
8448         transform_tohost_VkClearColorValue(mImpl->resources(), (VkClearColorValue*)(local_pColor));
8449     }
8450     if (local_pRanges)
8451     {
8452         for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8453         {
8454             transform_tohost_VkImageSubresourceRange(mImpl->resources(), (VkImageSubresourceRange*)(local_pRanges + i));
8455         }
8456     }
8457     countingStream->rewind();
8458     {
8459         uint64_t cgen_var_593;
8460         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_593, 1);
8461         countingStream->write((uint64_t*)&cgen_var_593, 1 * 8);
8462         uint64_t cgen_var_594;
8463         countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_594, 1);
8464         countingStream->write((uint64_t*)&cgen_var_594, 1 * 8);
8465         countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8466         marshal_VkClearColorValue(countingStream, (VkClearColorValue*)(local_pColor));
8467         countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
8468         for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8469         {
8470             marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
8471         }
8472     }
8473     uint32_t packetSize_vkCmdClearColorImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8474     countingStream->rewind();
8475     uint32_t opcode_vkCmdClearColorImage = OP_vkCmdClearColorImage;
8476     stream->write(&opcode_vkCmdClearColorImage, sizeof(uint32_t));
8477     stream->write(&packetSize_vkCmdClearColorImage, sizeof(uint32_t));
8478     uint64_t cgen_var_595;
8479     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_595, 1);
8480     stream->write((uint64_t*)&cgen_var_595, 1 * 8);
8481     uint64_t cgen_var_596;
8482     stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_596, 1);
8483     stream->write((uint64_t*)&cgen_var_596, 1 * 8);
8484     stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8485     marshal_VkClearColorValue(stream, (VkClearColorValue*)(local_pColor));
8486     stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
8487     for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8488     {
8489         marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
8490     }
8491     AEMU_SCOPED_TRACE("vkCmdClearColorImage readParams");
8492     AEMU_SCOPED_TRACE("vkCmdClearColorImage returnUnmarshal");
8493     mImpl->log("finish vkCmdClearColorImage");;
8494 }
8495 
vkCmdClearDepthStencilImage(VkCommandBuffer commandBuffer,VkImage image,VkImageLayout imageLayout,const VkClearDepthStencilValue * pDepthStencil,uint32_t rangeCount,const VkImageSubresourceRange * pRanges)8496 void VkEncoder::vkCmdClearDepthStencilImage(
8497     VkCommandBuffer commandBuffer,
8498     VkImage image,
8499     VkImageLayout imageLayout,
8500     const VkClearDepthStencilValue* pDepthStencil,
8501     uint32_t rangeCount,
8502     const VkImageSubresourceRange* pRanges)
8503 {
8504     AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage encode");
8505     mImpl->log("start vkCmdClearDepthStencilImage");
8506     auto stream = mImpl->stream();
8507     auto countingStream = mImpl->countingStream();
8508     auto resources = mImpl->resources();
8509     auto pool = mImpl->pool();
8510     stream->setHandleMapping(resources->unwrapMapping());
8511     VkCommandBuffer local_commandBuffer;
8512     VkImage local_image;
8513     VkImageLayout local_imageLayout;
8514     VkClearDepthStencilValue* local_pDepthStencil;
8515     uint32_t local_rangeCount;
8516     VkImageSubresourceRange* local_pRanges;
8517     local_commandBuffer = commandBuffer;
8518     local_image = image;
8519     local_imageLayout = imageLayout;
8520     local_pDepthStencil = nullptr;
8521     if (pDepthStencil)
8522     {
8523         local_pDepthStencil = (VkClearDepthStencilValue*)pool->alloc(sizeof(const VkClearDepthStencilValue));
8524         deepcopy_VkClearDepthStencilValue(pool, pDepthStencil, (VkClearDepthStencilValue*)(local_pDepthStencil));
8525     }
8526     local_rangeCount = rangeCount;
8527     local_pRanges = nullptr;
8528     if (pRanges)
8529     {
8530         local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange));
8531         for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8532         {
8533             deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i));
8534         }
8535     }
8536     if (local_pDepthStencil)
8537     {
8538         transform_tohost_VkClearDepthStencilValue(mImpl->resources(), (VkClearDepthStencilValue*)(local_pDepthStencil));
8539     }
8540     if (local_pRanges)
8541     {
8542         for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8543         {
8544             transform_tohost_VkImageSubresourceRange(mImpl->resources(), (VkImageSubresourceRange*)(local_pRanges + i));
8545         }
8546     }
8547     countingStream->rewind();
8548     {
8549         uint64_t cgen_var_597;
8550         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_597, 1);
8551         countingStream->write((uint64_t*)&cgen_var_597, 1 * 8);
8552         uint64_t cgen_var_598;
8553         countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_598, 1);
8554         countingStream->write((uint64_t*)&cgen_var_598, 1 * 8);
8555         countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8556         marshal_VkClearDepthStencilValue(countingStream, (VkClearDepthStencilValue*)(local_pDepthStencil));
8557         countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
8558         for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8559         {
8560             marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i));
8561         }
8562     }
8563     uint32_t packetSize_vkCmdClearDepthStencilImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8564     countingStream->rewind();
8565     uint32_t opcode_vkCmdClearDepthStencilImage = OP_vkCmdClearDepthStencilImage;
8566     stream->write(&opcode_vkCmdClearDepthStencilImage, sizeof(uint32_t));
8567     stream->write(&packetSize_vkCmdClearDepthStencilImage, sizeof(uint32_t));
8568     uint64_t cgen_var_599;
8569     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_599, 1);
8570     stream->write((uint64_t*)&cgen_var_599, 1 * 8);
8571     uint64_t cgen_var_600;
8572     stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_600, 1);
8573     stream->write((uint64_t*)&cgen_var_600, 1 * 8);
8574     stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout));
8575     marshal_VkClearDepthStencilValue(stream, (VkClearDepthStencilValue*)(local_pDepthStencil));
8576     stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t));
8577     for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i)
8578     {
8579         marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i));
8580     }
8581     AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage readParams");
8582     AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage returnUnmarshal");
8583     mImpl->log("finish vkCmdClearDepthStencilImage");;
8584 }
8585 
vkCmdClearAttachments(VkCommandBuffer commandBuffer,uint32_t attachmentCount,const VkClearAttachment * pAttachments,uint32_t rectCount,const VkClearRect * pRects)8586 void VkEncoder::vkCmdClearAttachments(
8587     VkCommandBuffer commandBuffer,
8588     uint32_t attachmentCount,
8589     const VkClearAttachment* pAttachments,
8590     uint32_t rectCount,
8591     const VkClearRect* pRects)
8592 {
8593     AEMU_SCOPED_TRACE("vkCmdClearAttachments encode");
8594     mImpl->log("start vkCmdClearAttachments");
8595     auto stream = mImpl->stream();
8596     auto countingStream = mImpl->countingStream();
8597     auto resources = mImpl->resources();
8598     auto pool = mImpl->pool();
8599     stream->setHandleMapping(resources->unwrapMapping());
8600     VkCommandBuffer local_commandBuffer;
8601     uint32_t local_attachmentCount;
8602     VkClearAttachment* local_pAttachments;
8603     uint32_t local_rectCount;
8604     VkClearRect* local_pRects;
8605     local_commandBuffer = commandBuffer;
8606     local_attachmentCount = attachmentCount;
8607     local_pAttachments = nullptr;
8608     if (pAttachments)
8609     {
8610         local_pAttachments = (VkClearAttachment*)pool->alloc(((attachmentCount)) * sizeof(const VkClearAttachment));
8611         for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8612         {
8613             deepcopy_VkClearAttachment(pool, pAttachments + i, (VkClearAttachment*)(local_pAttachments + i));
8614         }
8615     }
8616     local_rectCount = rectCount;
8617     local_pRects = nullptr;
8618     if (pRects)
8619     {
8620         local_pRects = (VkClearRect*)pool->alloc(((rectCount)) * sizeof(const VkClearRect));
8621         for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8622         {
8623             deepcopy_VkClearRect(pool, pRects + i, (VkClearRect*)(local_pRects + i));
8624         }
8625     }
8626     if (local_pAttachments)
8627     {
8628         for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8629         {
8630             transform_tohost_VkClearAttachment(mImpl->resources(), (VkClearAttachment*)(local_pAttachments + i));
8631         }
8632     }
8633     if (local_pRects)
8634     {
8635         for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8636         {
8637             transform_tohost_VkClearRect(mImpl->resources(), (VkClearRect*)(local_pRects + i));
8638         }
8639     }
8640     countingStream->rewind();
8641     {
8642         uint64_t cgen_var_601;
8643         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_601, 1);
8644         countingStream->write((uint64_t*)&cgen_var_601, 1 * 8);
8645         countingStream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
8646         for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8647         {
8648             marshal_VkClearAttachment(countingStream, (VkClearAttachment*)(local_pAttachments + i));
8649         }
8650         countingStream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
8651         for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8652         {
8653             marshal_VkClearRect(countingStream, (VkClearRect*)(local_pRects + i));
8654         }
8655     }
8656     uint32_t packetSize_vkCmdClearAttachments = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8657     countingStream->rewind();
8658     uint32_t opcode_vkCmdClearAttachments = OP_vkCmdClearAttachments;
8659     stream->write(&opcode_vkCmdClearAttachments, sizeof(uint32_t));
8660     stream->write(&packetSize_vkCmdClearAttachments, sizeof(uint32_t));
8661     uint64_t cgen_var_602;
8662     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_602, 1);
8663     stream->write((uint64_t*)&cgen_var_602, 1 * 8);
8664     stream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t));
8665     for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i)
8666     {
8667         marshal_VkClearAttachment(stream, (VkClearAttachment*)(local_pAttachments + i));
8668     }
8669     stream->write((uint32_t*)&local_rectCount, sizeof(uint32_t));
8670     for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i)
8671     {
8672         marshal_VkClearRect(stream, (VkClearRect*)(local_pRects + i));
8673     }
8674     AEMU_SCOPED_TRACE("vkCmdClearAttachments readParams");
8675     AEMU_SCOPED_TRACE("vkCmdClearAttachments returnUnmarshal");
8676     mImpl->log("finish vkCmdClearAttachments");;
8677 }
8678 
vkCmdResolveImage(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageResolve * pRegions)8679 void VkEncoder::vkCmdResolveImage(
8680     VkCommandBuffer commandBuffer,
8681     VkImage srcImage,
8682     VkImageLayout srcImageLayout,
8683     VkImage dstImage,
8684     VkImageLayout dstImageLayout,
8685     uint32_t regionCount,
8686     const VkImageResolve* pRegions)
8687 {
8688     AEMU_SCOPED_TRACE("vkCmdResolveImage encode");
8689     mImpl->log("start vkCmdResolveImage");
8690     auto stream = mImpl->stream();
8691     auto countingStream = mImpl->countingStream();
8692     auto resources = mImpl->resources();
8693     auto pool = mImpl->pool();
8694     stream->setHandleMapping(resources->unwrapMapping());
8695     VkCommandBuffer local_commandBuffer;
8696     VkImage local_srcImage;
8697     VkImageLayout local_srcImageLayout;
8698     VkImage local_dstImage;
8699     VkImageLayout local_dstImageLayout;
8700     uint32_t local_regionCount;
8701     VkImageResolve* local_pRegions;
8702     local_commandBuffer = commandBuffer;
8703     local_srcImage = srcImage;
8704     local_srcImageLayout = srcImageLayout;
8705     local_dstImage = dstImage;
8706     local_dstImageLayout = dstImageLayout;
8707     local_regionCount = regionCount;
8708     local_pRegions = nullptr;
8709     if (pRegions)
8710     {
8711         local_pRegions = (VkImageResolve*)pool->alloc(((regionCount)) * sizeof(const VkImageResolve));
8712         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8713         {
8714             deepcopy_VkImageResolve(pool, pRegions + i, (VkImageResolve*)(local_pRegions + i));
8715         }
8716     }
8717     if (local_pRegions)
8718     {
8719         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8720         {
8721             transform_tohost_VkImageResolve(mImpl->resources(), (VkImageResolve*)(local_pRegions + i));
8722         }
8723     }
8724     countingStream->rewind();
8725     {
8726         uint64_t cgen_var_603;
8727         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_603, 1);
8728         countingStream->write((uint64_t*)&cgen_var_603, 1 * 8);
8729         uint64_t cgen_var_604;
8730         countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_604, 1);
8731         countingStream->write((uint64_t*)&cgen_var_604, 1 * 8);
8732         countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
8733         uint64_t cgen_var_605;
8734         countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_605, 1);
8735         countingStream->write((uint64_t*)&cgen_var_605, 1 * 8);
8736         countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8737         countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8738         for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8739         {
8740             marshal_VkImageResolve(countingStream, (VkImageResolve*)(local_pRegions + i));
8741         }
8742     }
8743     uint32_t packetSize_vkCmdResolveImage = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8744     countingStream->rewind();
8745     uint32_t opcode_vkCmdResolveImage = OP_vkCmdResolveImage;
8746     stream->write(&opcode_vkCmdResolveImage, sizeof(uint32_t));
8747     stream->write(&packetSize_vkCmdResolveImage, sizeof(uint32_t));
8748     uint64_t cgen_var_606;
8749     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_606, 1);
8750     stream->write((uint64_t*)&cgen_var_606, 1 * 8);
8751     uint64_t cgen_var_607;
8752     stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_607, 1);
8753     stream->write((uint64_t*)&cgen_var_607, 1 * 8);
8754     stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout));
8755     uint64_t cgen_var_608;
8756     stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_608, 1);
8757     stream->write((uint64_t*)&cgen_var_608, 1 * 8);
8758     stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout));
8759     stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t));
8760     for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i)
8761     {
8762         marshal_VkImageResolve(stream, (VkImageResolve*)(local_pRegions + i));
8763     }
8764     AEMU_SCOPED_TRACE("vkCmdResolveImage readParams");
8765     AEMU_SCOPED_TRACE("vkCmdResolveImage returnUnmarshal");
8766     mImpl->log("finish vkCmdResolveImage");;
8767 }
8768 
vkCmdSetEvent(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags stageMask)8769 void VkEncoder::vkCmdSetEvent(
8770     VkCommandBuffer commandBuffer,
8771     VkEvent event,
8772     VkPipelineStageFlags stageMask)
8773 {
8774     AEMU_SCOPED_TRACE("vkCmdSetEvent encode");
8775     mImpl->log("start vkCmdSetEvent");
8776     auto stream = mImpl->stream();
8777     auto countingStream = mImpl->countingStream();
8778     auto resources = mImpl->resources();
8779     auto pool = mImpl->pool();
8780     stream->setHandleMapping(resources->unwrapMapping());
8781     VkCommandBuffer local_commandBuffer;
8782     VkEvent local_event;
8783     VkPipelineStageFlags local_stageMask;
8784     local_commandBuffer = commandBuffer;
8785     local_event = event;
8786     local_stageMask = stageMask;
8787     countingStream->rewind();
8788     {
8789         uint64_t cgen_var_609;
8790         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_609, 1);
8791         countingStream->write((uint64_t*)&cgen_var_609, 1 * 8);
8792         uint64_t cgen_var_610;
8793         countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_610, 1);
8794         countingStream->write((uint64_t*)&cgen_var_610, 1 * 8);
8795         countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
8796     }
8797     uint32_t packetSize_vkCmdSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8798     countingStream->rewind();
8799     uint32_t opcode_vkCmdSetEvent = OP_vkCmdSetEvent;
8800     stream->write(&opcode_vkCmdSetEvent, sizeof(uint32_t));
8801     stream->write(&packetSize_vkCmdSetEvent, sizeof(uint32_t));
8802     uint64_t cgen_var_611;
8803     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_611, 1);
8804     stream->write((uint64_t*)&cgen_var_611, 1 * 8);
8805     uint64_t cgen_var_612;
8806     stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_612, 1);
8807     stream->write((uint64_t*)&cgen_var_612, 1 * 8);
8808     stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
8809     AEMU_SCOPED_TRACE("vkCmdSetEvent readParams");
8810     AEMU_SCOPED_TRACE("vkCmdSetEvent returnUnmarshal");
8811     mImpl->log("finish vkCmdSetEvent");;
8812 }
8813 
vkCmdResetEvent(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags stageMask)8814 void VkEncoder::vkCmdResetEvent(
8815     VkCommandBuffer commandBuffer,
8816     VkEvent event,
8817     VkPipelineStageFlags stageMask)
8818 {
8819     AEMU_SCOPED_TRACE("vkCmdResetEvent encode");
8820     mImpl->log("start vkCmdResetEvent");
8821     auto stream = mImpl->stream();
8822     auto countingStream = mImpl->countingStream();
8823     auto resources = mImpl->resources();
8824     auto pool = mImpl->pool();
8825     stream->setHandleMapping(resources->unwrapMapping());
8826     VkCommandBuffer local_commandBuffer;
8827     VkEvent local_event;
8828     VkPipelineStageFlags local_stageMask;
8829     local_commandBuffer = commandBuffer;
8830     local_event = event;
8831     local_stageMask = stageMask;
8832     countingStream->rewind();
8833     {
8834         uint64_t cgen_var_613;
8835         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_613, 1);
8836         countingStream->write((uint64_t*)&cgen_var_613, 1 * 8);
8837         uint64_t cgen_var_614;
8838         countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_614, 1);
8839         countingStream->write((uint64_t*)&cgen_var_614, 1 * 8);
8840         countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
8841     }
8842     uint32_t packetSize_vkCmdResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8843     countingStream->rewind();
8844     uint32_t opcode_vkCmdResetEvent = OP_vkCmdResetEvent;
8845     stream->write(&opcode_vkCmdResetEvent, sizeof(uint32_t));
8846     stream->write(&packetSize_vkCmdResetEvent, sizeof(uint32_t));
8847     uint64_t cgen_var_615;
8848     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_615, 1);
8849     stream->write((uint64_t*)&cgen_var_615, 1 * 8);
8850     uint64_t cgen_var_616;
8851     stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_616, 1);
8852     stream->write((uint64_t*)&cgen_var_616, 1 * 8);
8853     stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags));
8854     AEMU_SCOPED_TRACE("vkCmdResetEvent readParams");
8855     AEMU_SCOPED_TRACE("vkCmdResetEvent returnUnmarshal");
8856     mImpl->log("finish vkCmdResetEvent");;
8857 }
8858 
vkCmdWaitEvents(VkCommandBuffer commandBuffer,uint32_t eventCount,const VkEvent * pEvents,VkPipelineStageFlags srcStageMask,VkPipelineStageFlags dstStageMask,uint32_t memoryBarrierCount,const VkMemoryBarrier * pMemoryBarriers,uint32_t bufferMemoryBarrierCount,const VkBufferMemoryBarrier * pBufferMemoryBarriers,uint32_t imageMemoryBarrierCount,const VkImageMemoryBarrier * pImageMemoryBarriers)8859 void VkEncoder::vkCmdWaitEvents(
8860     VkCommandBuffer commandBuffer,
8861     uint32_t eventCount,
8862     const VkEvent* pEvents,
8863     VkPipelineStageFlags srcStageMask,
8864     VkPipelineStageFlags dstStageMask,
8865     uint32_t memoryBarrierCount,
8866     const VkMemoryBarrier* pMemoryBarriers,
8867     uint32_t bufferMemoryBarrierCount,
8868     const VkBufferMemoryBarrier* pBufferMemoryBarriers,
8869     uint32_t imageMemoryBarrierCount,
8870     const VkImageMemoryBarrier* pImageMemoryBarriers)
8871 {
8872     AEMU_SCOPED_TRACE("vkCmdWaitEvents encode");
8873     mImpl->log("start vkCmdWaitEvents");
8874     auto stream = mImpl->stream();
8875     auto countingStream = mImpl->countingStream();
8876     auto resources = mImpl->resources();
8877     auto pool = mImpl->pool();
8878     stream->setHandleMapping(resources->unwrapMapping());
8879     VkCommandBuffer local_commandBuffer;
8880     uint32_t local_eventCount;
8881     VkEvent* local_pEvents;
8882     VkPipelineStageFlags local_srcStageMask;
8883     VkPipelineStageFlags local_dstStageMask;
8884     uint32_t local_memoryBarrierCount;
8885     VkMemoryBarrier* local_pMemoryBarriers;
8886     uint32_t local_bufferMemoryBarrierCount;
8887     VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
8888     uint32_t local_imageMemoryBarrierCount;
8889     VkImageMemoryBarrier* local_pImageMemoryBarriers;
8890     local_commandBuffer = commandBuffer;
8891     local_eventCount = eventCount;
8892     local_pEvents = nullptr;
8893     if (pEvents)
8894     {
8895         local_pEvents = (VkEvent*)pool->dupArray(pEvents, ((eventCount)) * sizeof(const VkEvent));
8896     }
8897     local_srcStageMask = srcStageMask;
8898     local_dstStageMask = dstStageMask;
8899     local_memoryBarrierCount = memoryBarrierCount;
8900     local_pMemoryBarriers = nullptr;
8901     if (pMemoryBarriers)
8902     {
8903         local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
8904         for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8905         {
8906             deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
8907         }
8908     }
8909     local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
8910     local_pBufferMemoryBarriers = nullptr;
8911     if (pBufferMemoryBarriers)
8912     {
8913         local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
8914         for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8915         {
8916             deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
8917         }
8918     }
8919     local_imageMemoryBarrierCount = imageMemoryBarrierCount;
8920     local_pImageMemoryBarriers = nullptr;
8921     if (pImageMemoryBarriers)
8922     {
8923         local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
8924         for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8925         {
8926             deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
8927         }
8928     }
8929     if (local_pMemoryBarriers)
8930     {
8931         for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8932         {
8933             transform_tohost_VkMemoryBarrier(mImpl->resources(), (VkMemoryBarrier*)(local_pMemoryBarriers + i));
8934         }
8935     }
8936     if (local_pBufferMemoryBarriers)
8937     {
8938         for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8939         {
8940             transform_tohost_VkBufferMemoryBarrier(mImpl->resources(), (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
8941         }
8942     }
8943     if (local_pImageMemoryBarriers)
8944     {
8945         for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8946         {
8947             transform_tohost_VkImageMemoryBarrier(mImpl->resources(), (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
8948         }
8949     }
8950     countingStream->rewind();
8951     {
8952         uint64_t cgen_var_617;
8953         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_617, 1);
8954         countingStream->write((uint64_t*)&cgen_var_617, 1 * 8);
8955         countingStream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
8956         if (((eventCount)))
8957         {
8958             uint64_t* cgen_var_618;
8959             countingStream->alloc((void**)&cgen_var_618, ((eventCount)) * 8);
8960             countingStream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_618, ((eventCount)));
8961             countingStream->write((uint64_t*)cgen_var_618, ((eventCount)) * 8);
8962         }
8963         countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8964         countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8965         countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
8966         for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
8967         {
8968             marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
8969         }
8970         countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
8971         for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
8972         {
8973             marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
8974         }
8975         countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
8976         for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
8977         {
8978             marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
8979         }
8980     }
8981     uint32_t packetSize_vkCmdWaitEvents = 4 + 4 + (uint32_t)countingStream->bytesWritten();
8982     countingStream->rewind();
8983     uint32_t opcode_vkCmdWaitEvents = OP_vkCmdWaitEvents;
8984     stream->write(&opcode_vkCmdWaitEvents, sizeof(uint32_t));
8985     stream->write(&packetSize_vkCmdWaitEvents, sizeof(uint32_t));
8986     uint64_t cgen_var_619;
8987     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_619, 1);
8988     stream->write((uint64_t*)&cgen_var_619, 1 * 8);
8989     stream->write((uint32_t*)&local_eventCount, sizeof(uint32_t));
8990     if (((eventCount)))
8991     {
8992         uint64_t* cgen_var_620;
8993         stream->alloc((void**)&cgen_var_620, ((eventCount)) * 8);
8994         stream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_620, ((eventCount)));
8995         stream->write((uint64_t*)cgen_var_620, ((eventCount)) * 8);
8996     }
8997     stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
8998     stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
8999     stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
9000     for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
9001     {
9002         marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
9003     }
9004     stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
9005     for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
9006     {
9007         marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
9008     }
9009     stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
9010     for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
9011     {
9012         marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
9013     }
9014     AEMU_SCOPED_TRACE("vkCmdWaitEvents readParams");
9015     AEMU_SCOPED_TRACE("vkCmdWaitEvents returnUnmarshal");
9016     mImpl->log("finish vkCmdWaitEvents");;
9017 }
9018 
vkCmdPipelineBarrier(VkCommandBuffer commandBuffer,VkPipelineStageFlags srcStageMask,VkPipelineStageFlags dstStageMask,VkDependencyFlags dependencyFlags,uint32_t memoryBarrierCount,const VkMemoryBarrier * pMemoryBarriers,uint32_t bufferMemoryBarrierCount,const VkBufferMemoryBarrier * pBufferMemoryBarriers,uint32_t imageMemoryBarrierCount,const VkImageMemoryBarrier * pImageMemoryBarriers)9019 void VkEncoder::vkCmdPipelineBarrier(
9020     VkCommandBuffer commandBuffer,
9021     VkPipelineStageFlags srcStageMask,
9022     VkPipelineStageFlags dstStageMask,
9023     VkDependencyFlags dependencyFlags,
9024     uint32_t memoryBarrierCount,
9025     const VkMemoryBarrier* pMemoryBarriers,
9026     uint32_t bufferMemoryBarrierCount,
9027     const VkBufferMemoryBarrier* pBufferMemoryBarriers,
9028     uint32_t imageMemoryBarrierCount,
9029     const VkImageMemoryBarrier* pImageMemoryBarriers)
9030 {
9031     AEMU_SCOPED_TRACE("vkCmdPipelineBarrier encode");
9032     mImpl->log("start vkCmdPipelineBarrier");
9033     auto stream = mImpl->stream();
9034     auto countingStream = mImpl->countingStream();
9035     auto resources = mImpl->resources();
9036     auto pool = mImpl->pool();
9037     stream->setHandleMapping(resources->unwrapMapping());
9038     VkCommandBuffer local_commandBuffer;
9039     VkPipelineStageFlags local_srcStageMask;
9040     VkPipelineStageFlags local_dstStageMask;
9041     VkDependencyFlags local_dependencyFlags;
9042     uint32_t local_memoryBarrierCount;
9043     VkMemoryBarrier* local_pMemoryBarriers;
9044     uint32_t local_bufferMemoryBarrierCount;
9045     VkBufferMemoryBarrier* local_pBufferMemoryBarriers;
9046     uint32_t local_imageMemoryBarrierCount;
9047     VkImageMemoryBarrier* local_pImageMemoryBarriers;
9048     local_commandBuffer = commandBuffer;
9049     local_srcStageMask = srcStageMask;
9050     local_dstStageMask = dstStageMask;
9051     local_dependencyFlags = dependencyFlags;
9052     local_memoryBarrierCount = memoryBarrierCount;
9053     local_pMemoryBarriers = nullptr;
9054     if (pMemoryBarriers)
9055     {
9056         local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier));
9057         for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
9058         {
9059             deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
9060         }
9061     }
9062     local_bufferMemoryBarrierCount = bufferMemoryBarrierCount;
9063     local_pBufferMemoryBarriers = nullptr;
9064     if (pBufferMemoryBarriers)
9065     {
9066         local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier));
9067         for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
9068         {
9069             deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
9070         }
9071     }
9072     local_imageMemoryBarrierCount = imageMemoryBarrierCount;
9073     local_pImageMemoryBarriers = nullptr;
9074     if (pImageMemoryBarriers)
9075     {
9076         local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier));
9077         for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
9078         {
9079             deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
9080         }
9081     }
9082     if (local_pMemoryBarriers)
9083     {
9084         for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
9085         {
9086             transform_tohost_VkMemoryBarrier(mImpl->resources(), (VkMemoryBarrier*)(local_pMemoryBarriers + i));
9087         }
9088     }
9089     if (local_pBufferMemoryBarriers)
9090     {
9091         for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
9092         {
9093             transform_tohost_VkBufferMemoryBarrier(mImpl->resources(), (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
9094         }
9095     }
9096     if (local_pImageMemoryBarriers)
9097     {
9098         for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
9099         {
9100             transform_tohost_VkImageMemoryBarrier(mImpl->resources(), (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
9101         }
9102     }
9103     countingStream->rewind();
9104     {
9105         uint64_t cgen_var_621;
9106         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_621, 1);
9107         countingStream->write((uint64_t*)&cgen_var_621, 1 * 8);
9108         countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
9109         countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
9110         countingStream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
9111         countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
9112         for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
9113         {
9114             marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
9115         }
9116         countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
9117         for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
9118         {
9119             marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
9120         }
9121         countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
9122         for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
9123         {
9124             marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
9125         }
9126     }
9127     uint32_t packetSize_vkCmdPipelineBarrier = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9128     countingStream->rewind();
9129     uint32_t opcode_vkCmdPipelineBarrier = OP_vkCmdPipelineBarrier;
9130     stream->write(&opcode_vkCmdPipelineBarrier, sizeof(uint32_t));
9131     stream->write(&packetSize_vkCmdPipelineBarrier, sizeof(uint32_t));
9132     uint64_t cgen_var_622;
9133     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_622, 1);
9134     stream->write((uint64_t*)&cgen_var_622, 1 * 8);
9135     stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags));
9136     stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags));
9137     stream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags));
9138     stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t));
9139     for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i)
9140     {
9141         marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i));
9142     }
9143     stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t));
9144     for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i)
9145     {
9146         marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i));
9147     }
9148     stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t));
9149     for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i)
9150     {
9151         marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i));
9152     }
9153     AEMU_SCOPED_TRACE("vkCmdPipelineBarrier readParams");
9154     AEMU_SCOPED_TRACE("vkCmdPipelineBarrier returnUnmarshal");
9155     mImpl->log("finish vkCmdPipelineBarrier");;
9156 }
9157 
vkCmdBeginQuery(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,VkQueryControlFlags flags)9158 void VkEncoder::vkCmdBeginQuery(
9159     VkCommandBuffer commandBuffer,
9160     VkQueryPool queryPool,
9161     uint32_t query,
9162     VkQueryControlFlags flags)
9163 {
9164     AEMU_SCOPED_TRACE("vkCmdBeginQuery encode");
9165     mImpl->log("start vkCmdBeginQuery");
9166     auto stream = mImpl->stream();
9167     auto countingStream = mImpl->countingStream();
9168     auto resources = mImpl->resources();
9169     auto pool = mImpl->pool();
9170     stream->setHandleMapping(resources->unwrapMapping());
9171     VkCommandBuffer local_commandBuffer;
9172     VkQueryPool local_queryPool;
9173     uint32_t local_query;
9174     VkQueryControlFlags local_flags;
9175     local_commandBuffer = commandBuffer;
9176     local_queryPool = queryPool;
9177     local_query = query;
9178     local_flags = flags;
9179     countingStream->rewind();
9180     {
9181         uint64_t cgen_var_623;
9182         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_623, 1);
9183         countingStream->write((uint64_t*)&cgen_var_623, 1 * 8);
9184         uint64_t cgen_var_624;
9185         countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_624, 1);
9186         countingStream->write((uint64_t*)&cgen_var_624, 1 * 8);
9187         countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
9188         countingStream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
9189     }
9190     uint32_t packetSize_vkCmdBeginQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9191     countingStream->rewind();
9192     uint32_t opcode_vkCmdBeginQuery = OP_vkCmdBeginQuery;
9193     stream->write(&opcode_vkCmdBeginQuery, sizeof(uint32_t));
9194     stream->write(&packetSize_vkCmdBeginQuery, sizeof(uint32_t));
9195     uint64_t cgen_var_625;
9196     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_625, 1);
9197     stream->write((uint64_t*)&cgen_var_625, 1 * 8);
9198     uint64_t cgen_var_626;
9199     stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_626, 1);
9200     stream->write((uint64_t*)&cgen_var_626, 1 * 8);
9201     stream->write((uint32_t*)&local_query, sizeof(uint32_t));
9202     stream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags));
9203     AEMU_SCOPED_TRACE("vkCmdBeginQuery readParams");
9204     AEMU_SCOPED_TRACE("vkCmdBeginQuery returnUnmarshal");
9205     mImpl->log("finish vkCmdBeginQuery");;
9206 }
9207 
vkCmdEndQuery(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query)9208 void VkEncoder::vkCmdEndQuery(
9209     VkCommandBuffer commandBuffer,
9210     VkQueryPool queryPool,
9211     uint32_t query)
9212 {
9213     AEMU_SCOPED_TRACE("vkCmdEndQuery encode");
9214     mImpl->log("start vkCmdEndQuery");
9215     auto stream = mImpl->stream();
9216     auto countingStream = mImpl->countingStream();
9217     auto resources = mImpl->resources();
9218     auto pool = mImpl->pool();
9219     stream->setHandleMapping(resources->unwrapMapping());
9220     VkCommandBuffer local_commandBuffer;
9221     VkQueryPool local_queryPool;
9222     uint32_t local_query;
9223     local_commandBuffer = commandBuffer;
9224     local_queryPool = queryPool;
9225     local_query = query;
9226     countingStream->rewind();
9227     {
9228         uint64_t cgen_var_627;
9229         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_627, 1);
9230         countingStream->write((uint64_t*)&cgen_var_627, 1 * 8);
9231         uint64_t cgen_var_628;
9232         countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_628, 1);
9233         countingStream->write((uint64_t*)&cgen_var_628, 1 * 8);
9234         countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
9235     }
9236     uint32_t packetSize_vkCmdEndQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9237     countingStream->rewind();
9238     uint32_t opcode_vkCmdEndQuery = OP_vkCmdEndQuery;
9239     stream->write(&opcode_vkCmdEndQuery, sizeof(uint32_t));
9240     stream->write(&packetSize_vkCmdEndQuery, sizeof(uint32_t));
9241     uint64_t cgen_var_629;
9242     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_629, 1);
9243     stream->write((uint64_t*)&cgen_var_629, 1 * 8);
9244     uint64_t cgen_var_630;
9245     stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_630, 1);
9246     stream->write((uint64_t*)&cgen_var_630, 1 * 8);
9247     stream->write((uint32_t*)&local_query, sizeof(uint32_t));
9248     AEMU_SCOPED_TRACE("vkCmdEndQuery readParams");
9249     AEMU_SCOPED_TRACE("vkCmdEndQuery returnUnmarshal");
9250     mImpl->log("finish vkCmdEndQuery");;
9251 }
9252 
vkCmdResetQueryPool(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)9253 void VkEncoder::vkCmdResetQueryPool(
9254     VkCommandBuffer commandBuffer,
9255     VkQueryPool queryPool,
9256     uint32_t firstQuery,
9257     uint32_t queryCount)
9258 {
9259     AEMU_SCOPED_TRACE("vkCmdResetQueryPool encode");
9260     mImpl->log("start vkCmdResetQueryPool");
9261     auto stream = mImpl->stream();
9262     auto countingStream = mImpl->countingStream();
9263     auto resources = mImpl->resources();
9264     auto pool = mImpl->pool();
9265     stream->setHandleMapping(resources->unwrapMapping());
9266     VkCommandBuffer local_commandBuffer;
9267     VkQueryPool local_queryPool;
9268     uint32_t local_firstQuery;
9269     uint32_t local_queryCount;
9270     local_commandBuffer = commandBuffer;
9271     local_queryPool = queryPool;
9272     local_firstQuery = firstQuery;
9273     local_queryCount = queryCount;
9274     countingStream->rewind();
9275     {
9276         uint64_t cgen_var_631;
9277         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_631, 1);
9278         countingStream->write((uint64_t*)&cgen_var_631, 1 * 8);
9279         uint64_t cgen_var_632;
9280         countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_632, 1);
9281         countingStream->write((uint64_t*)&cgen_var_632, 1 * 8);
9282         countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
9283         countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
9284     }
9285     uint32_t packetSize_vkCmdResetQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9286     countingStream->rewind();
9287     uint32_t opcode_vkCmdResetQueryPool = OP_vkCmdResetQueryPool;
9288     stream->write(&opcode_vkCmdResetQueryPool, sizeof(uint32_t));
9289     stream->write(&packetSize_vkCmdResetQueryPool, sizeof(uint32_t));
9290     uint64_t cgen_var_633;
9291     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_633, 1);
9292     stream->write((uint64_t*)&cgen_var_633, 1 * 8);
9293     uint64_t cgen_var_634;
9294     stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_634, 1);
9295     stream->write((uint64_t*)&cgen_var_634, 1 * 8);
9296     stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
9297     stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
9298     AEMU_SCOPED_TRACE("vkCmdResetQueryPool readParams");
9299     AEMU_SCOPED_TRACE("vkCmdResetQueryPool returnUnmarshal");
9300     mImpl->log("finish vkCmdResetQueryPool");;
9301 }
9302 
vkCmdWriteTimestamp(VkCommandBuffer commandBuffer,VkPipelineStageFlagBits pipelineStage,VkQueryPool queryPool,uint32_t query)9303 void VkEncoder::vkCmdWriteTimestamp(
9304     VkCommandBuffer commandBuffer,
9305     VkPipelineStageFlagBits pipelineStage,
9306     VkQueryPool queryPool,
9307     uint32_t query)
9308 {
9309     AEMU_SCOPED_TRACE("vkCmdWriteTimestamp encode");
9310     mImpl->log("start vkCmdWriteTimestamp");
9311     auto stream = mImpl->stream();
9312     auto countingStream = mImpl->countingStream();
9313     auto resources = mImpl->resources();
9314     auto pool = mImpl->pool();
9315     stream->setHandleMapping(resources->unwrapMapping());
9316     VkCommandBuffer local_commandBuffer;
9317     VkPipelineStageFlagBits local_pipelineStage;
9318     VkQueryPool local_queryPool;
9319     uint32_t local_query;
9320     local_commandBuffer = commandBuffer;
9321     local_pipelineStage = pipelineStage;
9322     local_queryPool = queryPool;
9323     local_query = query;
9324     countingStream->rewind();
9325     {
9326         uint64_t cgen_var_635;
9327         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_635, 1);
9328         countingStream->write((uint64_t*)&cgen_var_635, 1 * 8);
9329         countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
9330         uint64_t cgen_var_636;
9331         countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_636, 1);
9332         countingStream->write((uint64_t*)&cgen_var_636, 1 * 8);
9333         countingStream->write((uint32_t*)&local_query, sizeof(uint32_t));
9334     }
9335     uint32_t packetSize_vkCmdWriteTimestamp = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9336     countingStream->rewind();
9337     uint32_t opcode_vkCmdWriteTimestamp = OP_vkCmdWriteTimestamp;
9338     stream->write(&opcode_vkCmdWriteTimestamp, sizeof(uint32_t));
9339     stream->write(&packetSize_vkCmdWriteTimestamp, sizeof(uint32_t));
9340     uint64_t cgen_var_637;
9341     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_637, 1);
9342     stream->write((uint64_t*)&cgen_var_637, 1 * 8);
9343     stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
9344     uint64_t cgen_var_638;
9345     stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_638, 1);
9346     stream->write((uint64_t*)&cgen_var_638, 1 * 8);
9347     stream->write((uint32_t*)&local_query, sizeof(uint32_t));
9348     AEMU_SCOPED_TRACE("vkCmdWriteTimestamp readParams");
9349     AEMU_SCOPED_TRACE("vkCmdWriteTimestamp returnUnmarshal");
9350     mImpl->log("finish vkCmdWriteTimestamp");;
9351 }
9352 
vkCmdCopyQueryPoolResults(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize stride,VkQueryResultFlags flags)9353 void VkEncoder::vkCmdCopyQueryPoolResults(
9354     VkCommandBuffer commandBuffer,
9355     VkQueryPool queryPool,
9356     uint32_t firstQuery,
9357     uint32_t queryCount,
9358     VkBuffer dstBuffer,
9359     VkDeviceSize dstOffset,
9360     VkDeviceSize stride,
9361     VkQueryResultFlags flags)
9362 {
9363     AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults encode");
9364     mImpl->log("start vkCmdCopyQueryPoolResults");
9365     auto stream = mImpl->stream();
9366     auto countingStream = mImpl->countingStream();
9367     auto resources = mImpl->resources();
9368     auto pool = mImpl->pool();
9369     stream->setHandleMapping(resources->unwrapMapping());
9370     VkCommandBuffer local_commandBuffer;
9371     VkQueryPool local_queryPool;
9372     uint32_t local_firstQuery;
9373     uint32_t local_queryCount;
9374     VkBuffer local_dstBuffer;
9375     VkDeviceSize local_dstOffset;
9376     VkDeviceSize local_stride;
9377     VkQueryResultFlags local_flags;
9378     local_commandBuffer = commandBuffer;
9379     local_queryPool = queryPool;
9380     local_firstQuery = firstQuery;
9381     local_queryCount = queryCount;
9382     local_dstBuffer = dstBuffer;
9383     local_dstOffset = dstOffset;
9384     local_stride = stride;
9385     local_flags = flags;
9386     countingStream->rewind();
9387     {
9388         uint64_t cgen_var_639;
9389         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_639, 1);
9390         countingStream->write((uint64_t*)&cgen_var_639, 1 * 8);
9391         uint64_t cgen_var_640;
9392         countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_640, 1);
9393         countingStream->write((uint64_t*)&cgen_var_640, 1 * 8);
9394         countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
9395         countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
9396         uint64_t cgen_var_641;
9397         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_641, 1);
9398         countingStream->write((uint64_t*)&cgen_var_641, 1 * 8);
9399         countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
9400         countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
9401         countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
9402     }
9403     uint32_t packetSize_vkCmdCopyQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9404     countingStream->rewind();
9405     uint32_t opcode_vkCmdCopyQueryPoolResults = OP_vkCmdCopyQueryPoolResults;
9406     stream->write(&opcode_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
9407     stream->write(&packetSize_vkCmdCopyQueryPoolResults, sizeof(uint32_t));
9408     uint64_t cgen_var_642;
9409     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_642, 1);
9410     stream->write((uint64_t*)&cgen_var_642, 1 * 8);
9411     uint64_t cgen_var_643;
9412     stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_643, 1);
9413     stream->write((uint64_t*)&cgen_var_643, 1 * 8);
9414     stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t));
9415     stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t));
9416     uint64_t cgen_var_644;
9417     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_644, 1);
9418     stream->write((uint64_t*)&cgen_var_644, 1 * 8);
9419     stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
9420     stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize));
9421     stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags));
9422     AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults readParams");
9423     AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults returnUnmarshal");
9424     mImpl->log("finish vkCmdCopyQueryPoolResults");;
9425 }
9426 
vkCmdPushConstants(VkCommandBuffer commandBuffer,VkPipelineLayout layout,VkShaderStageFlags stageFlags,uint32_t offset,uint32_t size,const void * pValues)9427 void VkEncoder::vkCmdPushConstants(
9428     VkCommandBuffer commandBuffer,
9429     VkPipelineLayout layout,
9430     VkShaderStageFlags stageFlags,
9431     uint32_t offset,
9432     uint32_t size,
9433     const void* pValues)
9434 {
9435     AEMU_SCOPED_TRACE("vkCmdPushConstants encode");
9436     mImpl->log("start vkCmdPushConstants");
9437     auto stream = mImpl->stream();
9438     auto countingStream = mImpl->countingStream();
9439     auto resources = mImpl->resources();
9440     auto pool = mImpl->pool();
9441     stream->setHandleMapping(resources->unwrapMapping());
9442     VkCommandBuffer local_commandBuffer;
9443     VkPipelineLayout local_layout;
9444     VkShaderStageFlags local_stageFlags;
9445     uint32_t local_offset;
9446     uint32_t local_size;
9447     void* local_pValues;
9448     local_commandBuffer = commandBuffer;
9449     local_layout = layout;
9450     local_stageFlags = stageFlags;
9451     local_offset = offset;
9452     local_size = size;
9453     local_pValues = nullptr;
9454     if (pValues)
9455     {
9456         local_pValues = (void*)pool->dupArray(pValues, ((size)) * sizeof(const uint8_t));
9457     }
9458     countingStream->rewind();
9459     {
9460         uint64_t cgen_var_645;
9461         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_645, 1);
9462         countingStream->write((uint64_t*)&cgen_var_645, 1 * 8);
9463         uint64_t cgen_var_646;
9464         countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_646, 1);
9465         countingStream->write((uint64_t*)&cgen_var_646, 1 * 8);
9466         countingStream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
9467         countingStream->write((uint32_t*)&local_offset, sizeof(uint32_t));
9468         countingStream->write((uint32_t*)&local_size, sizeof(uint32_t));
9469         countingStream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
9470     }
9471     uint32_t packetSize_vkCmdPushConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9472     countingStream->rewind();
9473     uint32_t opcode_vkCmdPushConstants = OP_vkCmdPushConstants;
9474     stream->write(&opcode_vkCmdPushConstants, sizeof(uint32_t));
9475     stream->write(&packetSize_vkCmdPushConstants, sizeof(uint32_t));
9476     uint64_t cgen_var_647;
9477     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_647, 1);
9478     stream->write((uint64_t*)&cgen_var_647, 1 * 8);
9479     uint64_t cgen_var_648;
9480     stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_648, 1);
9481     stream->write((uint64_t*)&cgen_var_648, 1 * 8);
9482     stream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags));
9483     stream->write((uint32_t*)&local_offset, sizeof(uint32_t));
9484     stream->write((uint32_t*)&local_size, sizeof(uint32_t));
9485     stream->write((void*)local_pValues, ((size)) * sizeof(uint8_t));
9486     AEMU_SCOPED_TRACE("vkCmdPushConstants readParams");
9487     AEMU_SCOPED_TRACE("vkCmdPushConstants returnUnmarshal");
9488     mImpl->log("finish vkCmdPushConstants");;
9489 }
9490 
vkCmdBeginRenderPass(VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,VkSubpassContents contents)9491 void VkEncoder::vkCmdBeginRenderPass(
9492     VkCommandBuffer commandBuffer,
9493     const VkRenderPassBeginInfo* pRenderPassBegin,
9494     VkSubpassContents contents)
9495 {
9496     AEMU_SCOPED_TRACE("vkCmdBeginRenderPass encode");
9497     mImpl->log("start vkCmdBeginRenderPass");
9498     auto stream = mImpl->stream();
9499     auto countingStream = mImpl->countingStream();
9500     auto resources = mImpl->resources();
9501     auto pool = mImpl->pool();
9502     stream->setHandleMapping(resources->unwrapMapping());
9503     VkCommandBuffer local_commandBuffer;
9504     VkRenderPassBeginInfo* local_pRenderPassBegin;
9505     VkSubpassContents local_contents;
9506     local_commandBuffer = commandBuffer;
9507     local_pRenderPassBegin = nullptr;
9508     if (pRenderPassBegin)
9509     {
9510         local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
9511         deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
9512     }
9513     local_contents = contents;
9514     if (local_pRenderPassBegin)
9515     {
9516         transform_tohost_VkRenderPassBeginInfo(mImpl->resources(), (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
9517     }
9518     countingStream->rewind();
9519     {
9520         uint64_t cgen_var_649;
9521         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_649, 1);
9522         countingStream->write((uint64_t*)&cgen_var_649, 1 * 8);
9523         marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
9524         countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
9525     }
9526     uint32_t packetSize_vkCmdBeginRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9527     countingStream->rewind();
9528     uint32_t opcode_vkCmdBeginRenderPass = OP_vkCmdBeginRenderPass;
9529     stream->write(&opcode_vkCmdBeginRenderPass, sizeof(uint32_t));
9530     stream->write(&packetSize_vkCmdBeginRenderPass, sizeof(uint32_t));
9531     uint64_t cgen_var_650;
9532     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_650, 1);
9533     stream->write((uint64_t*)&cgen_var_650, 1 * 8);
9534     marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
9535     stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
9536     AEMU_SCOPED_TRACE("vkCmdBeginRenderPass readParams");
9537     AEMU_SCOPED_TRACE("vkCmdBeginRenderPass returnUnmarshal");
9538     mImpl->log("finish vkCmdBeginRenderPass");;
9539 }
9540 
vkCmdNextSubpass(VkCommandBuffer commandBuffer,VkSubpassContents contents)9541 void VkEncoder::vkCmdNextSubpass(
9542     VkCommandBuffer commandBuffer,
9543     VkSubpassContents contents)
9544 {
9545     AEMU_SCOPED_TRACE("vkCmdNextSubpass encode");
9546     mImpl->log("start vkCmdNextSubpass");
9547     auto stream = mImpl->stream();
9548     auto countingStream = mImpl->countingStream();
9549     auto resources = mImpl->resources();
9550     auto pool = mImpl->pool();
9551     stream->setHandleMapping(resources->unwrapMapping());
9552     VkCommandBuffer local_commandBuffer;
9553     VkSubpassContents local_contents;
9554     local_commandBuffer = commandBuffer;
9555     local_contents = contents;
9556     countingStream->rewind();
9557     {
9558         uint64_t cgen_var_651;
9559         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_651, 1);
9560         countingStream->write((uint64_t*)&cgen_var_651, 1 * 8);
9561         countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
9562     }
9563     uint32_t packetSize_vkCmdNextSubpass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9564     countingStream->rewind();
9565     uint32_t opcode_vkCmdNextSubpass = OP_vkCmdNextSubpass;
9566     stream->write(&opcode_vkCmdNextSubpass, sizeof(uint32_t));
9567     stream->write(&packetSize_vkCmdNextSubpass, sizeof(uint32_t));
9568     uint64_t cgen_var_652;
9569     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_652, 1);
9570     stream->write((uint64_t*)&cgen_var_652, 1 * 8);
9571     stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents));
9572     AEMU_SCOPED_TRACE("vkCmdNextSubpass readParams");
9573     AEMU_SCOPED_TRACE("vkCmdNextSubpass returnUnmarshal");
9574     mImpl->log("finish vkCmdNextSubpass");;
9575 }
9576 
vkCmdEndRenderPass(VkCommandBuffer commandBuffer)9577 void VkEncoder::vkCmdEndRenderPass(
9578     VkCommandBuffer commandBuffer)
9579 {
9580     AEMU_SCOPED_TRACE("vkCmdEndRenderPass encode");
9581     mImpl->log("start vkCmdEndRenderPass");
9582     auto stream = mImpl->stream();
9583     auto countingStream = mImpl->countingStream();
9584     auto resources = mImpl->resources();
9585     auto pool = mImpl->pool();
9586     stream->setHandleMapping(resources->unwrapMapping());
9587     VkCommandBuffer local_commandBuffer;
9588     local_commandBuffer = commandBuffer;
9589     countingStream->rewind();
9590     {
9591         uint64_t cgen_var_653;
9592         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_653, 1);
9593         countingStream->write((uint64_t*)&cgen_var_653, 1 * 8);
9594     }
9595     uint32_t packetSize_vkCmdEndRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9596     countingStream->rewind();
9597     uint32_t opcode_vkCmdEndRenderPass = OP_vkCmdEndRenderPass;
9598     stream->write(&opcode_vkCmdEndRenderPass, sizeof(uint32_t));
9599     stream->write(&packetSize_vkCmdEndRenderPass, sizeof(uint32_t));
9600     uint64_t cgen_var_654;
9601     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_654, 1);
9602     stream->write((uint64_t*)&cgen_var_654, 1 * 8);
9603     AEMU_SCOPED_TRACE("vkCmdEndRenderPass readParams");
9604     AEMU_SCOPED_TRACE("vkCmdEndRenderPass returnUnmarshal");
9605     mImpl->log("finish vkCmdEndRenderPass");;
9606 }
9607 
vkCmdExecuteCommands(VkCommandBuffer commandBuffer,uint32_t commandBufferCount,const VkCommandBuffer * pCommandBuffers)9608 void VkEncoder::vkCmdExecuteCommands(
9609     VkCommandBuffer commandBuffer,
9610     uint32_t commandBufferCount,
9611     const VkCommandBuffer* pCommandBuffers)
9612 {
9613     AEMU_SCOPED_TRACE("vkCmdExecuteCommands encode");
9614     mImpl->log("start vkCmdExecuteCommands");
9615     auto stream = mImpl->stream();
9616     auto countingStream = mImpl->countingStream();
9617     auto resources = mImpl->resources();
9618     auto pool = mImpl->pool();
9619     stream->setHandleMapping(resources->unwrapMapping());
9620     VkCommandBuffer local_commandBuffer;
9621     uint32_t local_commandBufferCount;
9622     VkCommandBuffer* local_pCommandBuffers;
9623     local_commandBuffer = commandBuffer;
9624     local_commandBufferCount = commandBufferCount;
9625     local_pCommandBuffers = nullptr;
9626     if (pCommandBuffers)
9627     {
9628         local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer));
9629     }
9630     countingStream->rewind();
9631     {
9632         uint64_t cgen_var_655;
9633         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_655, 1);
9634         countingStream->write((uint64_t*)&cgen_var_655, 1 * 8);
9635         countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
9636         if (((commandBufferCount)))
9637         {
9638             uint64_t* cgen_var_656;
9639             countingStream->alloc((void**)&cgen_var_656, ((commandBufferCount)) * 8);
9640             countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_656, ((commandBufferCount)));
9641             countingStream->write((uint64_t*)cgen_var_656, ((commandBufferCount)) * 8);
9642         }
9643     }
9644     uint32_t packetSize_vkCmdExecuteCommands = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9645     countingStream->rewind();
9646     uint32_t opcode_vkCmdExecuteCommands = OP_vkCmdExecuteCommands;
9647     stream->write(&opcode_vkCmdExecuteCommands, sizeof(uint32_t));
9648     stream->write(&packetSize_vkCmdExecuteCommands, sizeof(uint32_t));
9649     uint64_t cgen_var_657;
9650     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_657, 1);
9651     stream->write((uint64_t*)&cgen_var_657, 1 * 8);
9652     stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t));
9653     if (((commandBufferCount)))
9654     {
9655         uint64_t* cgen_var_658;
9656         stream->alloc((void**)&cgen_var_658, ((commandBufferCount)) * 8);
9657         stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_658, ((commandBufferCount)));
9658         stream->write((uint64_t*)cgen_var_658, ((commandBufferCount)) * 8);
9659     }
9660     AEMU_SCOPED_TRACE("vkCmdExecuteCommands readParams");
9661     AEMU_SCOPED_TRACE("vkCmdExecuteCommands returnUnmarshal");
9662     mImpl->log("finish vkCmdExecuteCommands");;
9663 }
9664 
9665 #endif
9666 #ifdef VK_VERSION_1_1
vkEnumerateInstanceVersion(uint32_t * pApiVersion)9667 VkResult VkEncoder::vkEnumerateInstanceVersion(
9668     uint32_t* pApiVersion)
9669 {
9670     AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion encode");
9671     mImpl->log("start vkEnumerateInstanceVersion");
9672     auto stream = mImpl->stream();
9673     auto countingStream = mImpl->countingStream();
9674     auto resources = mImpl->resources();
9675     auto pool = mImpl->pool();
9676     stream->setHandleMapping(resources->unwrapMapping());
9677     countingStream->rewind();
9678     {
9679         countingStream->write((uint32_t*)pApiVersion, sizeof(uint32_t));
9680     }
9681     uint32_t packetSize_vkEnumerateInstanceVersion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9682     countingStream->rewind();
9683     uint32_t opcode_vkEnumerateInstanceVersion = OP_vkEnumerateInstanceVersion;
9684     stream->write(&opcode_vkEnumerateInstanceVersion, sizeof(uint32_t));
9685     stream->write(&packetSize_vkEnumerateInstanceVersion, sizeof(uint32_t));
9686     stream->write((uint32_t*)pApiVersion, sizeof(uint32_t));
9687     AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion readParams");
9688     stream->read((uint32_t*)pApiVersion, sizeof(uint32_t));
9689     AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion returnUnmarshal");
9690     VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0;
9691     stream->read(&vkEnumerateInstanceVersion_VkResult_return, sizeof(VkResult));
9692     countingStream->clearPool();
9693     stream->clearPool();
9694     pool->freeAll();
9695     mImpl->log("finish vkEnumerateInstanceVersion");;
9696     return vkEnumerateInstanceVersion_VkResult_return;
9697 }
9698 
vkBindBufferMemory2(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)9699 VkResult VkEncoder::vkBindBufferMemory2(
9700     VkDevice device,
9701     uint32_t bindInfoCount,
9702     const VkBindBufferMemoryInfo* pBindInfos)
9703 {
9704     AEMU_SCOPED_TRACE("vkBindBufferMemory2 encode");
9705     mImpl->log("start vkBindBufferMemory2");
9706     auto stream = mImpl->stream();
9707     auto countingStream = mImpl->countingStream();
9708     auto resources = mImpl->resources();
9709     auto pool = mImpl->pool();
9710     stream->setHandleMapping(resources->unwrapMapping());
9711     VkDevice local_device;
9712     uint32_t local_bindInfoCount;
9713     VkBindBufferMemoryInfo* local_pBindInfos;
9714     local_device = device;
9715     local_bindInfoCount = bindInfoCount;
9716     local_pBindInfos = nullptr;
9717     if (pBindInfos)
9718     {
9719         local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
9720         for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9721         {
9722             deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
9723         }
9724     }
9725     if (local_pBindInfos)
9726     {
9727         for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9728         {
9729             transform_tohost_VkBindBufferMemoryInfo(mImpl->resources(), (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
9730         }
9731     }
9732     countingStream->rewind();
9733     {
9734         uint64_t cgen_var_659;
9735         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_659, 1);
9736         countingStream->write((uint64_t*)&cgen_var_659, 1 * 8);
9737         countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
9738         for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9739         {
9740             marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
9741         }
9742     }
9743     uint32_t packetSize_vkBindBufferMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9744     countingStream->rewind();
9745     uint32_t opcode_vkBindBufferMemory2 = OP_vkBindBufferMemory2;
9746     stream->write(&opcode_vkBindBufferMemory2, sizeof(uint32_t));
9747     stream->write(&packetSize_vkBindBufferMemory2, sizeof(uint32_t));
9748     uint64_t cgen_var_660;
9749     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_660, 1);
9750     stream->write((uint64_t*)&cgen_var_660, 1 * 8);
9751     stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
9752     for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9753     {
9754         marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
9755     }
9756     AEMU_SCOPED_TRACE("vkBindBufferMemory2 readParams");
9757     AEMU_SCOPED_TRACE("vkBindBufferMemory2 returnUnmarshal");
9758     VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
9759     stream->read(&vkBindBufferMemory2_VkResult_return, sizeof(VkResult));
9760     countingStream->clearPool();
9761     stream->clearPool();
9762     pool->freeAll();
9763     mImpl->log("finish vkBindBufferMemory2");;
9764     return vkBindBufferMemory2_VkResult_return;
9765 }
9766 
vkBindImageMemory2(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)9767 VkResult VkEncoder::vkBindImageMemory2(
9768     VkDevice device,
9769     uint32_t bindInfoCount,
9770     const VkBindImageMemoryInfo* pBindInfos)
9771 {
9772     AEMU_SCOPED_TRACE("vkBindImageMemory2 encode");
9773     mImpl->log("start vkBindImageMemory2");
9774     auto stream = mImpl->stream();
9775     auto countingStream = mImpl->countingStream();
9776     auto resources = mImpl->resources();
9777     auto pool = mImpl->pool();
9778     stream->setHandleMapping(resources->unwrapMapping());
9779     VkDevice local_device;
9780     uint32_t local_bindInfoCount;
9781     VkBindImageMemoryInfo* local_pBindInfos;
9782     local_device = device;
9783     local_bindInfoCount = bindInfoCount;
9784     local_pBindInfos = nullptr;
9785     if (pBindInfos)
9786     {
9787         local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
9788         for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9789         {
9790             deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
9791         }
9792     }
9793     if (local_pBindInfos)
9794     {
9795         for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9796         {
9797             transform_tohost_VkBindImageMemoryInfo(mImpl->resources(), (VkBindImageMemoryInfo*)(local_pBindInfos + i));
9798         }
9799     }
9800     countingStream->rewind();
9801     {
9802         uint64_t cgen_var_661;
9803         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_661, 1);
9804         countingStream->write((uint64_t*)&cgen_var_661, 1 * 8);
9805         countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
9806         for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9807         {
9808             marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
9809         }
9810     }
9811     uint32_t packetSize_vkBindImageMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9812     countingStream->rewind();
9813     uint32_t opcode_vkBindImageMemory2 = OP_vkBindImageMemory2;
9814     stream->write(&opcode_vkBindImageMemory2, sizeof(uint32_t));
9815     stream->write(&packetSize_vkBindImageMemory2, sizeof(uint32_t));
9816     uint64_t cgen_var_662;
9817     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_662, 1);
9818     stream->write((uint64_t*)&cgen_var_662, 1 * 8);
9819     stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
9820     for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
9821     {
9822         marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
9823     }
9824     AEMU_SCOPED_TRACE("vkBindImageMemory2 readParams");
9825     AEMU_SCOPED_TRACE("vkBindImageMemory2 returnUnmarshal");
9826     VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
9827     stream->read(&vkBindImageMemory2_VkResult_return, sizeof(VkResult));
9828     countingStream->clearPool();
9829     stream->clearPool();
9830     pool->freeAll();
9831     mImpl->log("finish vkBindImageMemory2");;
9832     return vkBindImageMemory2_VkResult_return;
9833 }
9834 
vkGetDeviceGroupPeerMemoryFeatures(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)9835 void VkEncoder::vkGetDeviceGroupPeerMemoryFeatures(
9836     VkDevice device,
9837     uint32_t heapIndex,
9838     uint32_t localDeviceIndex,
9839     uint32_t remoteDeviceIndex,
9840     VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
9841 {
9842     AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures encode");
9843     mImpl->log("start vkGetDeviceGroupPeerMemoryFeatures");
9844     auto stream = mImpl->stream();
9845     auto countingStream = mImpl->countingStream();
9846     auto resources = mImpl->resources();
9847     auto pool = mImpl->pool();
9848     stream->setHandleMapping(resources->unwrapMapping());
9849     VkDevice local_device;
9850     uint32_t local_heapIndex;
9851     uint32_t local_localDeviceIndex;
9852     uint32_t local_remoteDeviceIndex;
9853     local_device = device;
9854     local_heapIndex = heapIndex;
9855     local_localDeviceIndex = localDeviceIndex;
9856     local_remoteDeviceIndex = remoteDeviceIndex;
9857     countingStream->rewind();
9858     {
9859         uint64_t cgen_var_663;
9860         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_663, 1);
9861         countingStream->write((uint64_t*)&cgen_var_663, 1 * 8);
9862         countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
9863         countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
9864         countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
9865         countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
9866     }
9867     uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9868     countingStream->rewind();
9869     uint32_t opcode_vkGetDeviceGroupPeerMemoryFeatures = OP_vkGetDeviceGroupPeerMemoryFeatures;
9870     stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
9871     stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t));
9872     uint64_t cgen_var_664;
9873     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_664, 1);
9874     stream->write((uint64_t*)&cgen_var_664, 1 * 8);
9875     stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
9876     stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
9877     stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
9878     stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
9879     AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures readParams");
9880     stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
9881     AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures returnUnmarshal");
9882     mImpl->log("finish vkGetDeviceGroupPeerMemoryFeatures");;
9883 }
9884 
vkCmdSetDeviceMask(VkCommandBuffer commandBuffer,uint32_t deviceMask)9885 void VkEncoder::vkCmdSetDeviceMask(
9886     VkCommandBuffer commandBuffer,
9887     uint32_t deviceMask)
9888 {
9889     AEMU_SCOPED_TRACE("vkCmdSetDeviceMask encode");
9890     mImpl->log("start vkCmdSetDeviceMask");
9891     auto stream = mImpl->stream();
9892     auto countingStream = mImpl->countingStream();
9893     auto resources = mImpl->resources();
9894     auto pool = mImpl->pool();
9895     stream->setHandleMapping(resources->unwrapMapping());
9896     VkCommandBuffer local_commandBuffer;
9897     uint32_t local_deviceMask;
9898     local_commandBuffer = commandBuffer;
9899     local_deviceMask = deviceMask;
9900     countingStream->rewind();
9901     {
9902         uint64_t cgen_var_665;
9903         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_665, 1);
9904         countingStream->write((uint64_t*)&cgen_var_665, 1 * 8);
9905         countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
9906     }
9907     uint32_t packetSize_vkCmdSetDeviceMask = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9908     countingStream->rewind();
9909     uint32_t opcode_vkCmdSetDeviceMask = OP_vkCmdSetDeviceMask;
9910     stream->write(&opcode_vkCmdSetDeviceMask, sizeof(uint32_t));
9911     stream->write(&packetSize_vkCmdSetDeviceMask, sizeof(uint32_t));
9912     uint64_t cgen_var_666;
9913     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_666, 1);
9914     stream->write((uint64_t*)&cgen_var_666, 1 * 8);
9915     stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
9916     AEMU_SCOPED_TRACE("vkCmdSetDeviceMask readParams");
9917     AEMU_SCOPED_TRACE("vkCmdSetDeviceMask returnUnmarshal");
9918     mImpl->log("finish vkCmdSetDeviceMask");;
9919 }
9920 
vkCmdDispatchBase(VkCommandBuffer commandBuffer,uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)9921 void VkEncoder::vkCmdDispatchBase(
9922     VkCommandBuffer commandBuffer,
9923     uint32_t baseGroupX,
9924     uint32_t baseGroupY,
9925     uint32_t baseGroupZ,
9926     uint32_t groupCountX,
9927     uint32_t groupCountY,
9928     uint32_t groupCountZ)
9929 {
9930     AEMU_SCOPED_TRACE("vkCmdDispatchBase encode");
9931     mImpl->log("start vkCmdDispatchBase");
9932     auto stream = mImpl->stream();
9933     auto countingStream = mImpl->countingStream();
9934     auto resources = mImpl->resources();
9935     auto pool = mImpl->pool();
9936     stream->setHandleMapping(resources->unwrapMapping());
9937     VkCommandBuffer local_commandBuffer;
9938     uint32_t local_baseGroupX;
9939     uint32_t local_baseGroupY;
9940     uint32_t local_baseGroupZ;
9941     uint32_t local_groupCountX;
9942     uint32_t local_groupCountY;
9943     uint32_t local_groupCountZ;
9944     local_commandBuffer = commandBuffer;
9945     local_baseGroupX = baseGroupX;
9946     local_baseGroupY = baseGroupY;
9947     local_baseGroupZ = baseGroupZ;
9948     local_groupCountX = groupCountX;
9949     local_groupCountY = groupCountY;
9950     local_groupCountZ = groupCountZ;
9951     countingStream->rewind();
9952     {
9953         uint64_t cgen_var_667;
9954         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_667, 1);
9955         countingStream->write((uint64_t*)&cgen_var_667, 1 * 8);
9956         countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
9957         countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
9958         countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
9959         countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
9960         countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
9961         countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
9962     }
9963     uint32_t packetSize_vkCmdDispatchBase = 4 + 4 + (uint32_t)countingStream->bytesWritten();
9964     countingStream->rewind();
9965     uint32_t opcode_vkCmdDispatchBase = OP_vkCmdDispatchBase;
9966     stream->write(&opcode_vkCmdDispatchBase, sizeof(uint32_t));
9967     stream->write(&packetSize_vkCmdDispatchBase, sizeof(uint32_t));
9968     uint64_t cgen_var_668;
9969     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_668, 1);
9970     stream->write((uint64_t*)&cgen_var_668, 1 * 8);
9971     stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
9972     stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
9973     stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
9974     stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
9975     stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
9976     stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
9977     AEMU_SCOPED_TRACE("vkCmdDispatchBase readParams");
9978     AEMU_SCOPED_TRACE("vkCmdDispatchBase returnUnmarshal");
9979     mImpl->log("finish vkCmdDispatchBase");;
9980 }
9981 
vkEnumeratePhysicalDeviceGroups(VkInstance instance,uint32_t * pPhysicalDeviceGroupCount,VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties)9982 VkResult VkEncoder::vkEnumeratePhysicalDeviceGroups(
9983     VkInstance instance,
9984     uint32_t* pPhysicalDeviceGroupCount,
9985     VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
9986 {
9987     AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups encode");
9988     mImpl->log("start vkEnumeratePhysicalDeviceGroups");
9989     auto stream = mImpl->stream();
9990     auto countingStream = mImpl->countingStream();
9991     auto resources = mImpl->resources();
9992     auto pool = mImpl->pool();
9993     stream->setHandleMapping(resources->unwrapMapping());
9994     VkInstance local_instance;
9995     local_instance = instance;
9996     countingStream->rewind();
9997     {
9998         uint64_t cgen_var_669;
9999         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_669, 1);
10000         countingStream->write((uint64_t*)&cgen_var_669, 1 * 8);
10001         // WARNING PTR CHECK
10002         uint64_t cgen_var_670 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
10003         countingStream->putBe64(cgen_var_670);
10004         if (pPhysicalDeviceGroupCount)
10005         {
10006             countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
10007         }
10008         // WARNING PTR CHECK
10009         uint64_t cgen_var_671 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
10010         countingStream->putBe64(cgen_var_671);
10011         if (pPhysicalDeviceGroupProperties)
10012         {
10013             for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
10014             {
10015                 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
10016             }
10017         }
10018     }
10019     uint32_t packetSize_vkEnumeratePhysicalDeviceGroups = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10020     countingStream->rewind();
10021     uint32_t opcode_vkEnumeratePhysicalDeviceGroups = OP_vkEnumeratePhysicalDeviceGroups;
10022     stream->write(&opcode_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
10023     stream->write(&packetSize_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t));
10024     uint64_t cgen_var_672;
10025     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_672, 1);
10026     stream->write((uint64_t*)&cgen_var_672, 1 * 8);
10027     // WARNING PTR CHECK
10028     uint64_t cgen_var_673 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
10029     stream->putBe64(cgen_var_673);
10030     if (pPhysicalDeviceGroupCount)
10031     {
10032         stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
10033     }
10034     // WARNING PTR CHECK
10035     uint64_t cgen_var_674 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
10036     stream->putBe64(cgen_var_674);
10037     if (pPhysicalDeviceGroupProperties)
10038     {
10039         for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
10040         {
10041             marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
10042         }
10043     }
10044     AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups readParams");
10045     // WARNING PTR CHECK
10046     uint32_t* check_pPhysicalDeviceGroupCount;
10047     check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
10048     if (pPhysicalDeviceGroupCount)
10049     {
10050         if (!(check_pPhysicalDeviceGroupCount))
10051         {
10052             fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
10053         }
10054         stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
10055     }
10056     // WARNING PTR CHECK
10057     VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
10058     check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
10059     if (pPhysicalDeviceGroupProperties)
10060     {
10061         if (!(check_pPhysicalDeviceGroupProperties))
10062         {
10063             fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
10064         }
10065         for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
10066         {
10067             unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
10068         }
10069     }
10070     if (pPhysicalDeviceGroupProperties)
10071     {
10072         for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
10073         {
10074             transform_fromhost_VkPhysicalDeviceGroupProperties(mImpl->resources(), (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
10075         }
10076     }
10077     AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups returnUnmarshal");
10078     VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0;
10079     stream->read(&vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult));
10080     countingStream->clearPool();
10081     stream->clearPool();
10082     pool->freeAll();
10083     mImpl->log("finish vkEnumeratePhysicalDeviceGroups");;
10084     return vkEnumeratePhysicalDeviceGroups_VkResult_return;
10085 }
10086 
vkGetImageMemoryRequirements2(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)10087 void VkEncoder::vkGetImageMemoryRequirements2(
10088     VkDevice device,
10089     const VkImageMemoryRequirementsInfo2* pInfo,
10090     VkMemoryRequirements2* pMemoryRequirements)
10091 {
10092     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2 encode");
10093     mImpl->log("start vkGetImageMemoryRequirements2");
10094     auto stream = mImpl->stream();
10095     auto countingStream = mImpl->countingStream();
10096     auto resources = mImpl->resources();
10097     auto pool = mImpl->pool();
10098     stream->setHandleMapping(resources->unwrapMapping());
10099     VkDevice local_device;
10100     VkImageMemoryRequirementsInfo2* local_pInfo;
10101     local_device = device;
10102     local_pInfo = nullptr;
10103     if (pInfo)
10104     {
10105         local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
10106         deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
10107     }
10108     if (local_pInfo)
10109     {
10110         transform_tohost_VkImageMemoryRequirementsInfo2(mImpl->resources(), (VkImageMemoryRequirementsInfo2*)(local_pInfo));
10111     }
10112     countingStream->rewind();
10113     {
10114         uint64_t cgen_var_677;
10115         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_677, 1);
10116         countingStream->write((uint64_t*)&cgen_var_677, 1 * 8);
10117         marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
10118         marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
10119     }
10120     uint32_t packetSize_vkGetImageMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10121     countingStream->rewind();
10122     uint32_t opcode_vkGetImageMemoryRequirements2 = OP_vkGetImageMemoryRequirements2;
10123     stream->write(&opcode_vkGetImageMemoryRequirements2, sizeof(uint32_t));
10124     stream->write(&packetSize_vkGetImageMemoryRequirements2, sizeof(uint32_t));
10125     uint64_t cgen_var_678;
10126     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_678, 1);
10127     stream->write((uint64_t*)&cgen_var_678, 1 * 8);
10128     marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
10129     marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
10130     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2 readParams");
10131     unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
10132     if (pMemoryRequirements)
10133     {
10134         transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
10135     }
10136     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2 returnUnmarshal");
10137     mImpl->log("finish vkGetImageMemoryRequirements2");;
10138 }
10139 
vkGetBufferMemoryRequirements2(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)10140 void VkEncoder::vkGetBufferMemoryRequirements2(
10141     VkDevice device,
10142     const VkBufferMemoryRequirementsInfo2* pInfo,
10143     VkMemoryRequirements2* pMemoryRequirements)
10144 {
10145     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2 encode");
10146     mImpl->log("start vkGetBufferMemoryRequirements2");
10147     auto stream = mImpl->stream();
10148     auto countingStream = mImpl->countingStream();
10149     auto resources = mImpl->resources();
10150     auto pool = mImpl->pool();
10151     stream->setHandleMapping(resources->unwrapMapping());
10152     VkDevice local_device;
10153     VkBufferMemoryRequirementsInfo2* local_pInfo;
10154     local_device = device;
10155     local_pInfo = nullptr;
10156     if (pInfo)
10157     {
10158         local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
10159         deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
10160     }
10161     if (local_pInfo)
10162     {
10163         transform_tohost_VkBufferMemoryRequirementsInfo2(mImpl->resources(), (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
10164     }
10165     countingStream->rewind();
10166     {
10167         uint64_t cgen_var_679;
10168         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_679, 1);
10169         countingStream->write((uint64_t*)&cgen_var_679, 1 * 8);
10170         marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
10171         marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
10172     }
10173     uint32_t packetSize_vkGetBufferMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10174     countingStream->rewind();
10175     uint32_t opcode_vkGetBufferMemoryRequirements2 = OP_vkGetBufferMemoryRequirements2;
10176     stream->write(&opcode_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
10177     stream->write(&packetSize_vkGetBufferMemoryRequirements2, sizeof(uint32_t));
10178     uint64_t cgen_var_680;
10179     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_680, 1);
10180     stream->write((uint64_t*)&cgen_var_680, 1 * 8);
10181     marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
10182     marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
10183     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2 readParams");
10184     unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
10185     if (pMemoryRequirements)
10186     {
10187         transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
10188     }
10189     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2 returnUnmarshal");
10190     mImpl->log("finish vkGetBufferMemoryRequirements2");;
10191 }
10192 
vkGetImageSparseMemoryRequirements2(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)10193 void VkEncoder::vkGetImageSparseMemoryRequirements2(
10194     VkDevice device,
10195     const VkImageSparseMemoryRequirementsInfo2* pInfo,
10196     uint32_t* pSparseMemoryRequirementCount,
10197     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
10198 {
10199     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2 encode");
10200     mImpl->log("start vkGetImageSparseMemoryRequirements2");
10201     auto stream = mImpl->stream();
10202     auto countingStream = mImpl->countingStream();
10203     auto resources = mImpl->resources();
10204     auto pool = mImpl->pool();
10205     stream->setHandleMapping(resources->unwrapMapping());
10206     VkDevice local_device;
10207     VkImageSparseMemoryRequirementsInfo2* local_pInfo;
10208     local_device = device;
10209     local_pInfo = nullptr;
10210     if (pInfo)
10211     {
10212         local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
10213         deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
10214     }
10215     if (local_pInfo)
10216     {
10217         transform_tohost_VkImageSparseMemoryRequirementsInfo2(mImpl->resources(), (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
10218     }
10219     countingStream->rewind();
10220     {
10221         uint64_t cgen_var_681;
10222         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_681, 1);
10223         countingStream->write((uint64_t*)&cgen_var_681, 1 * 8);
10224         marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
10225         // WARNING PTR CHECK
10226         uint64_t cgen_var_682 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
10227         countingStream->putBe64(cgen_var_682);
10228         if (pSparseMemoryRequirementCount)
10229         {
10230             countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
10231         }
10232         // WARNING PTR CHECK
10233         uint64_t cgen_var_683 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
10234         countingStream->putBe64(cgen_var_683);
10235         if (pSparseMemoryRequirements)
10236         {
10237             for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
10238             {
10239                 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
10240             }
10241         }
10242     }
10243     uint32_t packetSize_vkGetImageSparseMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10244     countingStream->rewind();
10245     uint32_t opcode_vkGetImageSparseMemoryRequirements2 = OP_vkGetImageSparseMemoryRequirements2;
10246     stream->write(&opcode_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
10247     stream->write(&packetSize_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t));
10248     uint64_t cgen_var_684;
10249     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_684, 1);
10250     stream->write((uint64_t*)&cgen_var_684, 1 * 8);
10251     marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
10252     // WARNING PTR CHECK
10253     uint64_t cgen_var_685 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
10254     stream->putBe64(cgen_var_685);
10255     if (pSparseMemoryRequirementCount)
10256     {
10257         stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
10258     }
10259     // WARNING PTR CHECK
10260     uint64_t cgen_var_686 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
10261     stream->putBe64(cgen_var_686);
10262     if (pSparseMemoryRequirements)
10263     {
10264         for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
10265         {
10266             marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
10267         }
10268     }
10269     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2 readParams");
10270     // WARNING PTR CHECK
10271     uint32_t* check_pSparseMemoryRequirementCount;
10272     check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
10273     if (pSparseMemoryRequirementCount)
10274     {
10275         if (!(check_pSparseMemoryRequirementCount))
10276         {
10277             fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
10278         }
10279         stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
10280     }
10281     // WARNING PTR CHECK
10282     VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
10283     check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
10284     if (pSparseMemoryRequirements)
10285     {
10286         if (!(check_pSparseMemoryRequirements))
10287         {
10288             fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
10289         }
10290         for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
10291         {
10292             unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
10293         }
10294     }
10295     if (pSparseMemoryRequirements)
10296     {
10297         for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
10298         {
10299             transform_fromhost_VkSparseImageMemoryRequirements2(mImpl->resources(), (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
10300         }
10301     }
10302     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2 returnUnmarshal");
10303     mImpl->log("finish vkGetImageSparseMemoryRequirements2");;
10304 }
10305 
vkGetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures2 * pFeatures)10306 void VkEncoder::vkGetPhysicalDeviceFeatures2(
10307     VkPhysicalDevice physicalDevice,
10308     VkPhysicalDeviceFeatures2* pFeatures)
10309 {
10310     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2 encode");
10311     mImpl->log("start vkGetPhysicalDeviceFeatures2");
10312     auto stream = mImpl->stream();
10313     auto countingStream = mImpl->countingStream();
10314     auto resources = mImpl->resources();
10315     auto pool = mImpl->pool();
10316     stream->setHandleMapping(resources->unwrapMapping());
10317     VkPhysicalDevice local_physicalDevice;
10318     local_physicalDevice = physicalDevice;
10319     countingStream->rewind();
10320     {
10321         uint64_t cgen_var_689;
10322         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_689, 1);
10323         countingStream->write((uint64_t*)&cgen_var_689, 1 * 8);
10324         marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
10325     }
10326     uint32_t packetSize_vkGetPhysicalDeviceFeatures2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10327     countingStream->rewind();
10328     uint32_t opcode_vkGetPhysicalDeviceFeatures2 = OP_vkGetPhysicalDeviceFeatures2;
10329     stream->write(&opcode_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
10330     stream->write(&packetSize_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t));
10331     uint64_t cgen_var_690;
10332     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_690, 1);
10333     stream->write((uint64_t*)&cgen_var_690, 1 * 8);
10334     marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
10335     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2 readParams");
10336     unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
10337     if (pFeatures)
10338     {
10339         transform_fromhost_VkPhysicalDeviceFeatures2(mImpl->resources(), (VkPhysicalDeviceFeatures2*)(pFeatures));
10340     }
10341     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2 returnUnmarshal");
10342     mImpl->log("finish vkGetPhysicalDeviceFeatures2");;
10343 }
10344 
vkGetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties2 * pProperties)10345 void VkEncoder::vkGetPhysicalDeviceProperties2(
10346     VkPhysicalDevice physicalDevice,
10347     VkPhysicalDeviceProperties2* pProperties)
10348 {
10349     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2 encode");
10350     mImpl->log("start vkGetPhysicalDeviceProperties2");
10351     auto stream = mImpl->stream();
10352     auto countingStream = mImpl->countingStream();
10353     auto resources = mImpl->resources();
10354     auto pool = mImpl->pool();
10355     stream->setHandleMapping(resources->unwrapMapping());
10356     VkPhysicalDevice local_physicalDevice;
10357     local_physicalDevice = physicalDevice;
10358     countingStream->rewind();
10359     {
10360         uint64_t cgen_var_691;
10361         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_691, 1);
10362         countingStream->write((uint64_t*)&cgen_var_691, 1 * 8);
10363         marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
10364     }
10365     uint32_t packetSize_vkGetPhysicalDeviceProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10366     countingStream->rewind();
10367     uint32_t opcode_vkGetPhysicalDeviceProperties2 = OP_vkGetPhysicalDeviceProperties2;
10368     stream->write(&opcode_vkGetPhysicalDeviceProperties2, sizeof(uint32_t));
10369     stream->write(&packetSize_vkGetPhysicalDeviceProperties2, sizeof(uint32_t));
10370     uint64_t cgen_var_692;
10371     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_692, 1);
10372     stream->write((uint64_t*)&cgen_var_692, 1 * 8);
10373     marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
10374     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2 readParams");
10375     unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
10376     if (pProperties)
10377     {
10378         transform_fromhost_VkPhysicalDeviceProperties2(mImpl->resources(), (VkPhysicalDeviceProperties2*)(pProperties));
10379     }
10380     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2 returnUnmarshal");
10381     mImpl->log("finish vkGetPhysicalDeviceProperties2");;
10382 }
10383 
vkGetPhysicalDeviceFormatProperties2(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties2 * pFormatProperties)10384 void VkEncoder::vkGetPhysicalDeviceFormatProperties2(
10385     VkPhysicalDevice physicalDevice,
10386     VkFormat format,
10387     VkFormatProperties2* pFormatProperties)
10388 {
10389     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2 encode");
10390     mImpl->log("start vkGetPhysicalDeviceFormatProperties2");
10391     auto stream = mImpl->stream();
10392     auto countingStream = mImpl->countingStream();
10393     auto resources = mImpl->resources();
10394     auto pool = mImpl->pool();
10395     stream->setHandleMapping(resources->unwrapMapping());
10396     VkPhysicalDevice local_physicalDevice;
10397     VkFormat local_format;
10398     local_physicalDevice = physicalDevice;
10399     local_format = format;
10400     countingStream->rewind();
10401     {
10402         uint64_t cgen_var_693;
10403         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_693, 1);
10404         countingStream->write((uint64_t*)&cgen_var_693, 1 * 8);
10405         countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
10406         marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
10407     }
10408     uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10409     countingStream->rewind();
10410     uint32_t opcode_vkGetPhysicalDeviceFormatProperties2 = OP_vkGetPhysicalDeviceFormatProperties2;
10411     stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
10412     stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t));
10413     uint64_t cgen_var_694;
10414     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_694, 1);
10415     stream->write((uint64_t*)&cgen_var_694, 1 * 8);
10416     stream->write((VkFormat*)&local_format, sizeof(VkFormat));
10417     marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
10418     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2 readParams");
10419     unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
10420     if (pFormatProperties)
10421     {
10422         transform_fromhost_VkFormatProperties2(mImpl->resources(), (VkFormatProperties2*)(pFormatProperties));
10423     }
10424     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2 returnUnmarshal");
10425     mImpl->log("finish vkGetPhysicalDeviceFormatProperties2");;
10426 }
10427 
vkGetPhysicalDeviceImageFormatProperties2(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo,VkImageFormatProperties2 * pImageFormatProperties)10428 VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2(
10429     VkPhysicalDevice physicalDevice,
10430     const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
10431     VkImageFormatProperties2* pImageFormatProperties)
10432 {
10433     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2 encode");
10434     mImpl->log("start vkGetPhysicalDeviceImageFormatProperties2");
10435     auto stream = mImpl->stream();
10436     auto countingStream = mImpl->countingStream();
10437     auto resources = mImpl->resources();
10438     auto pool = mImpl->pool();
10439     stream->setHandleMapping(resources->unwrapMapping());
10440     VkPhysicalDevice local_physicalDevice;
10441     VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
10442     local_physicalDevice = physicalDevice;
10443     local_pImageFormatInfo = nullptr;
10444     if (pImageFormatInfo)
10445     {
10446         local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
10447         deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
10448     }
10449     if (local_pImageFormatInfo)
10450     {
10451         transform_tohost_VkPhysicalDeviceImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
10452     }
10453     countingStream->rewind();
10454     {
10455         uint64_t cgen_var_695;
10456         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_695, 1);
10457         countingStream->write((uint64_t*)&cgen_var_695, 1 * 8);
10458         marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
10459         marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
10460     }
10461     uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10462     countingStream->rewind();
10463     uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2 = OP_vkGetPhysicalDeviceImageFormatProperties2;
10464     stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
10465     stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t));
10466     uint64_t cgen_var_696;
10467     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_696, 1);
10468     stream->write((uint64_t*)&cgen_var_696, 1 * 8);
10469     marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
10470     marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
10471     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2 readParams");
10472     unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
10473     if (pImageFormatProperties)
10474     {
10475         transform_fromhost_VkImageFormatProperties2(mImpl->resources(), (VkImageFormatProperties2*)(pImageFormatProperties));
10476     }
10477     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2 returnUnmarshal");
10478     VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
10479     stream->read(&vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult));
10480     countingStream->clearPool();
10481     stream->clearPool();
10482     pool->freeAll();
10483     mImpl->log("finish vkGetPhysicalDeviceImageFormatProperties2");;
10484     return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
10485 }
10486 
vkGetPhysicalDeviceQueueFamilyProperties2(VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties2 * pQueueFamilyProperties)10487 void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2(
10488     VkPhysicalDevice physicalDevice,
10489     uint32_t* pQueueFamilyPropertyCount,
10490     VkQueueFamilyProperties2* pQueueFamilyProperties)
10491 {
10492     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2 encode");
10493     mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties2");
10494     auto stream = mImpl->stream();
10495     auto countingStream = mImpl->countingStream();
10496     auto resources = mImpl->resources();
10497     auto pool = mImpl->pool();
10498     stream->setHandleMapping(resources->unwrapMapping());
10499     VkPhysicalDevice local_physicalDevice;
10500     local_physicalDevice = physicalDevice;
10501     countingStream->rewind();
10502     {
10503         uint64_t cgen_var_697;
10504         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_697, 1);
10505         countingStream->write((uint64_t*)&cgen_var_697, 1 * 8);
10506         // WARNING PTR CHECK
10507         uint64_t cgen_var_698 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
10508         countingStream->putBe64(cgen_var_698);
10509         if (pQueueFamilyPropertyCount)
10510         {
10511             countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
10512         }
10513         // WARNING PTR CHECK
10514         uint64_t cgen_var_699 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
10515         countingStream->putBe64(cgen_var_699);
10516         if (pQueueFamilyProperties)
10517         {
10518             for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
10519             {
10520                 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
10521             }
10522         }
10523     }
10524     uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10525     countingStream->rewind();
10526     uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2 = OP_vkGetPhysicalDeviceQueueFamilyProperties2;
10527     stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
10528     stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t));
10529     uint64_t cgen_var_700;
10530     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_700, 1);
10531     stream->write((uint64_t*)&cgen_var_700, 1 * 8);
10532     // WARNING PTR CHECK
10533     uint64_t cgen_var_701 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
10534     stream->putBe64(cgen_var_701);
10535     if (pQueueFamilyPropertyCount)
10536     {
10537         stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
10538     }
10539     // WARNING PTR CHECK
10540     uint64_t cgen_var_702 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
10541     stream->putBe64(cgen_var_702);
10542     if (pQueueFamilyProperties)
10543     {
10544         for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
10545         {
10546             marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
10547         }
10548     }
10549     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2 readParams");
10550     // WARNING PTR CHECK
10551     uint32_t* check_pQueueFamilyPropertyCount;
10552     check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
10553     if (pQueueFamilyPropertyCount)
10554     {
10555         if (!(check_pQueueFamilyPropertyCount))
10556         {
10557             fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
10558         }
10559         stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
10560     }
10561     // WARNING PTR CHECK
10562     VkQueueFamilyProperties2* check_pQueueFamilyProperties;
10563     check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
10564     if (pQueueFamilyProperties)
10565     {
10566         if (!(check_pQueueFamilyProperties))
10567         {
10568             fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
10569         }
10570         for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
10571         {
10572             unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
10573         }
10574     }
10575     if (pQueueFamilyProperties)
10576     {
10577         for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
10578         {
10579             transform_fromhost_VkQueueFamilyProperties2(mImpl->resources(), (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
10580         }
10581     }
10582     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2 returnUnmarshal");
10583     mImpl->log("finish vkGetPhysicalDeviceQueueFamilyProperties2");;
10584 }
10585 
vkGetPhysicalDeviceMemoryProperties2(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties2 * pMemoryProperties)10586 void VkEncoder::vkGetPhysicalDeviceMemoryProperties2(
10587     VkPhysicalDevice physicalDevice,
10588     VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
10589 {
10590     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2 encode");
10591     mImpl->log("start vkGetPhysicalDeviceMemoryProperties2");
10592     auto stream = mImpl->stream();
10593     auto countingStream = mImpl->countingStream();
10594     auto resources = mImpl->resources();
10595     auto pool = mImpl->pool();
10596     stream->setHandleMapping(resources->unwrapMapping());
10597     VkPhysicalDevice local_physicalDevice;
10598     local_physicalDevice = physicalDevice;
10599     countingStream->rewind();
10600     {
10601         uint64_t cgen_var_705;
10602         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_705, 1);
10603         countingStream->write((uint64_t*)&cgen_var_705, 1 * 8);
10604         marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
10605     }
10606     uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10607     countingStream->rewind();
10608     uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2 = OP_vkGetPhysicalDeviceMemoryProperties2;
10609     stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
10610     stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t));
10611     uint64_t cgen_var_706;
10612     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_706, 1);
10613     stream->write((uint64_t*)&cgen_var_706, 1 * 8);
10614     marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
10615     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2 readParams");
10616     unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
10617     if (pMemoryProperties)
10618     {
10619         transform_fromhost_VkPhysicalDeviceMemoryProperties2(mImpl->resources(), (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
10620     }
10621     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2 returnUnmarshal");
10622     mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties2(this, physicalDevice, pMemoryProperties);
10623     mImpl->log("finish vkGetPhysicalDeviceMemoryProperties2");;
10624 }
10625 
vkGetPhysicalDeviceSparseImageFormatProperties2(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo,uint32_t * pPropertyCount,VkSparseImageFormatProperties2 * pProperties)10626 void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2(
10627     VkPhysicalDevice physicalDevice,
10628     const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
10629     uint32_t* pPropertyCount,
10630     VkSparseImageFormatProperties2* pProperties)
10631 {
10632     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2 encode");
10633     mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties2");
10634     auto stream = mImpl->stream();
10635     auto countingStream = mImpl->countingStream();
10636     auto resources = mImpl->resources();
10637     auto pool = mImpl->pool();
10638     stream->setHandleMapping(resources->unwrapMapping());
10639     VkPhysicalDevice local_physicalDevice;
10640     VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
10641     local_physicalDevice = physicalDevice;
10642     local_pFormatInfo = nullptr;
10643     if (pFormatInfo)
10644     {
10645         local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
10646         deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
10647     }
10648     if (local_pFormatInfo)
10649     {
10650         transform_tohost_VkPhysicalDeviceSparseImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
10651     }
10652     countingStream->rewind();
10653     {
10654         uint64_t cgen_var_707;
10655         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_707, 1);
10656         countingStream->write((uint64_t*)&cgen_var_707, 1 * 8);
10657         marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
10658         // WARNING PTR CHECK
10659         uint64_t cgen_var_708 = (uint64_t)(uintptr_t)pPropertyCount;
10660         countingStream->putBe64(cgen_var_708);
10661         if (pPropertyCount)
10662         {
10663             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10664         }
10665         // WARNING PTR CHECK
10666         uint64_t cgen_var_709 = (uint64_t)(uintptr_t)pProperties;
10667         countingStream->putBe64(cgen_var_709);
10668         if (pProperties)
10669         {
10670             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10671             {
10672                 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
10673             }
10674         }
10675     }
10676     uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10677     countingStream->rewind();
10678     uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2 = OP_vkGetPhysicalDeviceSparseImageFormatProperties2;
10679     stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
10680     stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t));
10681     uint64_t cgen_var_710;
10682     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_710, 1);
10683     stream->write((uint64_t*)&cgen_var_710, 1 * 8);
10684     marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
10685     // WARNING PTR CHECK
10686     uint64_t cgen_var_711 = (uint64_t)(uintptr_t)pPropertyCount;
10687     stream->putBe64(cgen_var_711);
10688     if (pPropertyCount)
10689     {
10690         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
10691     }
10692     // WARNING PTR CHECK
10693     uint64_t cgen_var_712 = (uint64_t)(uintptr_t)pProperties;
10694     stream->putBe64(cgen_var_712);
10695     if (pProperties)
10696     {
10697         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10698         {
10699             marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
10700         }
10701     }
10702     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2 readParams");
10703     // WARNING PTR CHECK
10704     uint32_t* check_pPropertyCount;
10705     check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
10706     if (pPropertyCount)
10707     {
10708         if (!(check_pPropertyCount))
10709         {
10710             fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
10711         }
10712         stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
10713     }
10714     // WARNING PTR CHECK
10715     VkSparseImageFormatProperties2* check_pProperties;
10716     check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
10717     if (pProperties)
10718     {
10719         if (!(check_pProperties))
10720         {
10721             fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
10722         }
10723         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10724         {
10725             unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
10726         }
10727     }
10728     if (pProperties)
10729     {
10730         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
10731         {
10732             transform_fromhost_VkSparseImageFormatProperties2(mImpl->resources(), (VkSparseImageFormatProperties2*)(pProperties + i));
10733         }
10734     }
10735     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2 returnUnmarshal");
10736     mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties2");;
10737 }
10738 
vkTrimCommandPool(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)10739 void VkEncoder::vkTrimCommandPool(
10740     VkDevice device,
10741     VkCommandPool commandPool,
10742     VkCommandPoolTrimFlags flags)
10743 {
10744     AEMU_SCOPED_TRACE("vkTrimCommandPool encode");
10745     mImpl->log("start vkTrimCommandPool");
10746     auto stream = mImpl->stream();
10747     auto countingStream = mImpl->countingStream();
10748     auto resources = mImpl->resources();
10749     auto pool = mImpl->pool();
10750     stream->setHandleMapping(resources->unwrapMapping());
10751     VkDevice local_device;
10752     VkCommandPool local_commandPool;
10753     VkCommandPoolTrimFlags local_flags;
10754     local_device = device;
10755     local_commandPool = commandPool;
10756     local_flags = flags;
10757     countingStream->rewind();
10758     {
10759         uint64_t cgen_var_715;
10760         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_715, 1);
10761         countingStream->write((uint64_t*)&cgen_var_715, 1 * 8);
10762         uint64_t cgen_var_716;
10763         countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_716, 1);
10764         countingStream->write((uint64_t*)&cgen_var_716, 1 * 8);
10765         countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
10766     }
10767     uint32_t packetSize_vkTrimCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10768     countingStream->rewind();
10769     uint32_t opcode_vkTrimCommandPool = OP_vkTrimCommandPool;
10770     stream->write(&opcode_vkTrimCommandPool, sizeof(uint32_t));
10771     stream->write(&packetSize_vkTrimCommandPool, sizeof(uint32_t));
10772     uint64_t cgen_var_717;
10773     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_717, 1);
10774     stream->write((uint64_t*)&cgen_var_717, 1 * 8);
10775     uint64_t cgen_var_718;
10776     stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_718, 1);
10777     stream->write((uint64_t*)&cgen_var_718, 1 * 8);
10778     stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
10779     AEMU_SCOPED_TRACE("vkTrimCommandPool readParams");
10780     AEMU_SCOPED_TRACE("vkTrimCommandPool returnUnmarshal");
10781     mImpl->log("finish vkTrimCommandPool");;
10782 }
10783 
vkGetDeviceQueue2(VkDevice device,const VkDeviceQueueInfo2 * pQueueInfo,VkQueue * pQueue)10784 void VkEncoder::vkGetDeviceQueue2(
10785     VkDevice device,
10786     const VkDeviceQueueInfo2* pQueueInfo,
10787     VkQueue* pQueue)
10788 {
10789     AEMU_SCOPED_TRACE("vkGetDeviceQueue2 encode");
10790     mImpl->log("start vkGetDeviceQueue2");
10791     auto stream = mImpl->stream();
10792     auto countingStream = mImpl->countingStream();
10793     auto resources = mImpl->resources();
10794     auto pool = mImpl->pool();
10795     stream->setHandleMapping(resources->unwrapMapping());
10796     VkDevice local_device;
10797     VkDeviceQueueInfo2* local_pQueueInfo;
10798     local_device = device;
10799     local_pQueueInfo = nullptr;
10800     if (pQueueInfo)
10801     {
10802         local_pQueueInfo = (VkDeviceQueueInfo2*)pool->alloc(sizeof(const VkDeviceQueueInfo2));
10803         deepcopy_VkDeviceQueueInfo2(pool, pQueueInfo, (VkDeviceQueueInfo2*)(local_pQueueInfo));
10804     }
10805     if (local_pQueueInfo)
10806     {
10807         transform_tohost_VkDeviceQueueInfo2(mImpl->resources(), (VkDeviceQueueInfo2*)(local_pQueueInfo));
10808     }
10809     countingStream->rewind();
10810     {
10811         uint64_t cgen_var_719;
10812         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_719, 1);
10813         countingStream->write((uint64_t*)&cgen_var_719, 1 * 8);
10814         marshal_VkDeviceQueueInfo2(countingStream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
10815         uint64_t cgen_var_720;
10816         countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_720, 1);
10817         countingStream->write((uint64_t*)&cgen_var_720, 8);
10818     }
10819     uint32_t packetSize_vkGetDeviceQueue2 = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10820     countingStream->rewind();
10821     uint32_t opcode_vkGetDeviceQueue2 = OP_vkGetDeviceQueue2;
10822     stream->write(&opcode_vkGetDeviceQueue2, sizeof(uint32_t));
10823     stream->write(&packetSize_vkGetDeviceQueue2, sizeof(uint32_t));
10824     uint64_t cgen_var_721;
10825     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_721, 1);
10826     stream->write((uint64_t*)&cgen_var_721, 1 * 8);
10827     marshal_VkDeviceQueueInfo2(stream, (VkDeviceQueueInfo2*)(local_pQueueInfo));
10828     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
10829     uint64_t cgen_var_722;
10830     stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_722, 1);
10831     stream->write((uint64_t*)&cgen_var_722, 8);
10832     stream->setHandleMapping(resources->unwrapMapping());
10833     AEMU_SCOPED_TRACE("vkGetDeviceQueue2 readParams");
10834     uint64_t cgen_var_723;
10835     stream->read((uint64_t*)&cgen_var_723, 8);
10836     stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_723, (VkQueue*)pQueue, 1);
10837     AEMU_SCOPED_TRACE("vkGetDeviceQueue2 returnUnmarshal");
10838     mImpl->log("finish vkGetDeviceQueue2");;
10839 }
10840 
vkCreateSamplerYcbcrConversion(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)10841 VkResult VkEncoder::vkCreateSamplerYcbcrConversion(
10842     VkDevice device,
10843     const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
10844     const VkAllocationCallbacks* pAllocator,
10845     VkSamplerYcbcrConversion* pYcbcrConversion)
10846 {
10847     AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion encode");
10848     mImpl->log("start vkCreateSamplerYcbcrConversion");
10849     auto stream = mImpl->stream();
10850     auto countingStream = mImpl->countingStream();
10851     auto resources = mImpl->resources();
10852     auto pool = mImpl->pool();
10853     stream->setHandleMapping(resources->unwrapMapping());
10854     VkDevice local_device;
10855     VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
10856     VkAllocationCallbacks* local_pAllocator;
10857     local_device = device;
10858     local_pCreateInfo = nullptr;
10859     if (pCreateInfo)
10860     {
10861         local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
10862         deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
10863     }
10864     local_pAllocator = nullptr;
10865     if (pAllocator)
10866     {
10867         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10868         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10869     }
10870     local_pAllocator = nullptr;
10871     if (local_pCreateInfo)
10872     {
10873         transform_tohost_VkSamplerYcbcrConversionCreateInfo(mImpl->resources(), (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
10874     }
10875     if (local_pAllocator)
10876     {
10877         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
10878     }
10879     countingStream->rewind();
10880     {
10881         uint64_t cgen_var_724;
10882         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_724, 1);
10883         countingStream->write((uint64_t*)&cgen_var_724, 1 * 8);
10884         marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
10885         // WARNING PTR CHECK
10886         uint64_t cgen_var_725 = (uint64_t)(uintptr_t)local_pAllocator;
10887         countingStream->putBe64(cgen_var_725);
10888         if (local_pAllocator)
10889         {
10890             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
10891         }
10892         uint64_t cgen_var_726;
10893         countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_726, 1);
10894         countingStream->write((uint64_t*)&cgen_var_726, 8);
10895     }
10896     uint32_t packetSize_vkCreateSamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10897     countingStream->rewind();
10898     uint32_t opcode_vkCreateSamplerYcbcrConversion = OP_vkCreateSamplerYcbcrConversion;
10899     stream->write(&opcode_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
10900     stream->write(&packetSize_vkCreateSamplerYcbcrConversion, sizeof(uint32_t));
10901     uint64_t cgen_var_727;
10902     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_727, 1);
10903     stream->write((uint64_t*)&cgen_var_727, 1 * 8);
10904     marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
10905     // WARNING PTR CHECK
10906     uint64_t cgen_var_728 = (uint64_t)(uintptr_t)local_pAllocator;
10907     stream->putBe64(cgen_var_728);
10908     if (local_pAllocator)
10909     {
10910         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
10911     }
10912     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
10913     uint64_t cgen_var_729;
10914     stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_729, 1);
10915     stream->write((uint64_t*)&cgen_var_729, 8);
10916     stream->setHandleMapping(resources->unwrapMapping());
10917     AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion readParams");
10918     stream->setHandleMapping(resources->createMapping());
10919     uint64_t cgen_var_730;
10920     stream->read((uint64_t*)&cgen_var_730, 8);
10921     stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_730, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
10922     stream->unsetHandleMapping();
10923     AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion returnUnmarshal");
10924     VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
10925     stream->read(&vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult));
10926     countingStream->clearPool();
10927     stream->clearPool();
10928     pool->freeAll();
10929     mImpl->log("finish vkCreateSamplerYcbcrConversion");;
10930     return vkCreateSamplerYcbcrConversion_VkResult_return;
10931 }
10932 
vkDestroySamplerYcbcrConversion(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)10933 void VkEncoder::vkDestroySamplerYcbcrConversion(
10934     VkDevice device,
10935     VkSamplerYcbcrConversion ycbcrConversion,
10936     const VkAllocationCallbacks* pAllocator)
10937 {
10938     AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion encode");
10939     mImpl->log("start vkDestroySamplerYcbcrConversion");
10940     auto stream = mImpl->stream();
10941     auto countingStream = mImpl->countingStream();
10942     auto resources = mImpl->resources();
10943     auto pool = mImpl->pool();
10944     stream->setHandleMapping(resources->unwrapMapping());
10945     VkDevice local_device;
10946     VkSamplerYcbcrConversion local_ycbcrConversion;
10947     VkAllocationCallbacks* local_pAllocator;
10948     local_device = device;
10949     local_ycbcrConversion = ycbcrConversion;
10950     local_pAllocator = nullptr;
10951     if (pAllocator)
10952     {
10953         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
10954         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
10955     }
10956     local_pAllocator = nullptr;
10957     if (local_pAllocator)
10958     {
10959         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
10960     }
10961     countingStream->rewind();
10962     {
10963         uint64_t cgen_var_731;
10964         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_731, 1);
10965         countingStream->write((uint64_t*)&cgen_var_731, 1 * 8);
10966         uint64_t cgen_var_732;
10967         countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_732, 1);
10968         countingStream->write((uint64_t*)&cgen_var_732, 1 * 8);
10969         // WARNING PTR CHECK
10970         uint64_t cgen_var_733 = (uint64_t)(uintptr_t)local_pAllocator;
10971         countingStream->putBe64(cgen_var_733);
10972         if (local_pAllocator)
10973         {
10974             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
10975         }
10976     }
10977     uint32_t packetSize_vkDestroySamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten();
10978     countingStream->rewind();
10979     uint32_t opcode_vkDestroySamplerYcbcrConversion = OP_vkDestroySamplerYcbcrConversion;
10980     stream->write(&opcode_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
10981     stream->write(&packetSize_vkDestroySamplerYcbcrConversion, sizeof(uint32_t));
10982     uint64_t cgen_var_734;
10983     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_734, 1);
10984     stream->write((uint64_t*)&cgen_var_734, 1 * 8);
10985     uint64_t cgen_var_735;
10986     stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_735, 1);
10987     stream->write((uint64_t*)&cgen_var_735, 1 * 8);
10988     // WARNING PTR CHECK
10989     uint64_t cgen_var_736 = (uint64_t)(uintptr_t)local_pAllocator;
10990     stream->putBe64(cgen_var_736);
10991     if (local_pAllocator)
10992     {
10993         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
10994     }
10995     AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion readParams");
10996     AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion returnUnmarshal");
10997     resources->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion);
10998     mImpl->log("finish vkDestroySamplerYcbcrConversion");;
10999 }
11000 
vkCreateDescriptorUpdateTemplate(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)11001 VkResult VkEncoder::vkCreateDescriptorUpdateTemplate(
11002     VkDevice device,
11003     const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
11004     const VkAllocationCallbacks* pAllocator,
11005     VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
11006 {
11007     AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate encode");
11008     mImpl->log("start vkCreateDescriptorUpdateTemplate");
11009     auto stream = mImpl->stream();
11010     auto countingStream = mImpl->countingStream();
11011     auto resources = mImpl->resources();
11012     auto pool = mImpl->pool();
11013     stream->setHandleMapping(resources->unwrapMapping());
11014     VkDevice local_device;
11015     VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
11016     VkAllocationCallbacks* local_pAllocator;
11017     local_device = device;
11018     local_pCreateInfo = nullptr;
11019     if (pCreateInfo)
11020     {
11021         local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
11022         deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
11023     }
11024     local_pAllocator = nullptr;
11025     if (pAllocator)
11026     {
11027         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11028         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11029     }
11030     local_pAllocator = nullptr;
11031     if (local_pCreateInfo)
11032     {
11033         transform_tohost_VkDescriptorUpdateTemplateCreateInfo(mImpl->resources(), (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
11034     }
11035     if (local_pAllocator)
11036     {
11037         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
11038     }
11039     countingStream->rewind();
11040     {
11041         uint64_t cgen_var_737;
11042         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_737, 1);
11043         countingStream->write((uint64_t*)&cgen_var_737, 1 * 8);
11044         marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
11045         // WARNING PTR CHECK
11046         uint64_t cgen_var_738 = (uint64_t)(uintptr_t)local_pAllocator;
11047         countingStream->putBe64(cgen_var_738);
11048         if (local_pAllocator)
11049         {
11050             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
11051         }
11052         uint64_t cgen_var_739;
11053         countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_739, 1);
11054         countingStream->write((uint64_t*)&cgen_var_739, 8);
11055     }
11056     uint32_t packetSize_vkCreateDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11057     countingStream->rewind();
11058     uint32_t opcode_vkCreateDescriptorUpdateTemplate = OP_vkCreateDescriptorUpdateTemplate;
11059     stream->write(&opcode_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
11060     stream->write(&packetSize_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t));
11061     uint64_t cgen_var_740;
11062     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_740, 1);
11063     stream->write((uint64_t*)&cgen_var_740, 1 * 8);
11064     marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
11065     // WARNING PTR CHECK
11066     uint64_t cgen_var_741 = (uint64_t)(uintptr_t)local_pAllocator;
11067     stream->putBe64(cgen_var_741);
11068     if (local_pAllocator)
11069     {
11070         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
11071     }
11072     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
11073     uint64_t cgen_var_742;
11074     stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_742, 1);
11075     stream->write((uint64_t*)&cgen_var_742, 8);
11076     stream->setHandleMapping(resources->unwrapMapping());
11077     AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate readParams");
11078     stream->setHandleMapping(resources->createMapping());
11079     uint64_t cgen_var_743;
11080     stream->read((uint64_t*)&cgen_var_743, 8);
11081     stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_743, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
11082     stream->unsetHandleMapping();
11083     AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate returnUnmarshal");
11084     VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
11085     stream->read(&vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult));
11086     countingStream->clearPool();
11087     stream->clearPool();
11088     pool->freeAll();
11089     mImpl->resources()->on_vkCreateDescriptorUpdateTemplate(this, vkCreateDescriptorUpdateTemplate_VkResult_return, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
11090     mImpl->log("finish vkCreateDescriptorUpdateTemplate");;
11091     return vkCreateDescriptorUpdateTemplate_VkResult_return;
11092 }
11093 
vkDestroyDescriptorUpdateTemplate(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)11094 void VkEncoder::vkDestroyDescriptorUpdateTemplate(
11095     VkDevice device,
11096     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
11097     const VkAllocationCallbacks* pAllocator)
11098 {
11099     AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate encode");
11100     mImpl->log("start vkDestroyDescriptorUpdateTemplate");
11101     auto stream = mImpl->stream();
11102     auto countingStream = mImpl->countingStream();
11103     auto resources = mImpl->resources();
11104     auto pool = mImpl->pool();
11105     stream->setHandleMapping(resources->unwrapMapping());
11106     VkDevice local_device;
11107     VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
11108     VkAllocationCallbacks* local_pAllocator;
11109     local_device = device;
11110     local_descriptorUpdateTemplate = descriptorUpdateTemplate;
11111     local_pAllocator = nullptr;
11112     if (pAllocator)
11113     {
11114         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11115         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11116     }
11117     local_pAllocator = nullptr;
11118     if (local_pAllocator)
11119     {
11120         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
11121     }
11122     countingStream->rewind();
11123     {
11124         uint64_t cgen_var_744;
11125         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_744, 1);
11126         countingStream->write((uint64_t*)&cgen_var_744, 1 * 8);
11127         uint64_t cgen_var_745;
11128         countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_745, 1);
11129         countingStream->write((uint64_t*)&cgen_var_745, 1 * 8);
11130         // WARNING PTR CHECK
11131         uint64_t cgen_var_746 = (uint64_t)(uintptr_t)local_pAllocator;
11132         countingStream->putBe64(cgen_var_746);
11133         if (local_pAllocator)
11134         {
11135             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
11136         }
11137     }
11138     uint32_t packetSize_vkDestroyDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11139     countingStream->rewind();
11140     uint32_t opcode_vkDestroyDescriptorUpdateTemplate = OP_vkDestroyDescriptorUpdateTemplate;
11141     stream->write(&opcode_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
11142     stream->write(&packetSize_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t));
11143     uint64_t cgen_var_747;
11144     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_747, 1);
11145     stream->write((uint64_t*)&cgen_var_747, 1 * 8);
11146     uint64_t cgen_var_748;
11147     stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_748, 1);
11148     stream->write((uint64_t*)&cgen_var_748, 1 * 8);
11149     // WARNING PTR CHECK
11150     uint64_t cgen_var_749 = (uint64_t)(uintptr_t)local_pAllocator;
11151     stream->putBe64(cgen_var_749);
11152     if (local_pAllocator)
11153     {
11154         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
11155     }
11156     AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate readParams");
11157     AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate returnUnmarshal");
11158     resources->destroyMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate);
11159     mImpl->log("finish vkDestroyDescriptorUpdateTemplate");;
11160 }
11161 
vkUpdateDescriptorSetWithTemplate(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)11162 void VkEncoder::vkUpdateDescriptorSetWithTemplate(
11163     VkDevice device,
11164     VkDescriptorSet descriptorSet,
11165     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
11166     const void* pData)
11167 {
11168     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate encode");
11169     mImpl->log("start vkUpdateDescriptorSetWithTemplate");
11170     auto stream = mImpl->stream();
11171     auto countingStream = mImpl->countingStream();
11172     auto resources = mImpl->resources();
11173     auto pool = mImpl->pool();
11174     stream->setHandleMapping(resources->unwrapMapping());
11175     VkDevice local_device;
11176     VkDescriptorSet local_descriptorSet;
11177     VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
11178     void* local_pData;
11179     local_device = device;
11180     local_descriptorSet = descriptorSet;
11181     local_descriptorUpdateTemplate = descriptorUpdateTemplate;
11182     local_pData = nullptr;
11183     if (pData)
11184     {
11185         local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
11186     }
11187     countingStream->rewind();
11188     {
11189         uint64_t cgen_var_750;
11190         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_750, 1);
11191         countingStream->write((uint64_t*)&cgen_var_750, 1 * 8);
11192         uint64_t cgen_var_751;
11193         countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_751, 1);
11194         countingStream->write((uint64_t*)&cgen_var_751, 1 * 8);
11195         uint64_t cgen_var_752;
11196         countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_752, 1);
11197         countingStream->write((uint64_t*)&cgen_var_752, 1 * 8);
11198         // WARNING PTR CHECK
11199         uint64_t cgen_var_753 = (uint64_t)(uintptr_t)local_pData;
11200         countingStream->putBe64(cgen_var_753);
11201         if (local_pData)
11202         {
11203             countingStream->write((void*)local_pData, sizeof(uint8_t));
11204         }
11205     }
11206     uint32_t packetSize_vkUpdateDescriptorSetWithTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11207     countingStream->rewind();
11208     uint32_t opcode_vkUpdateDescriptorSetWithTemplate = OP_vkUpdateDescriptorSetWithTemplate;
11209     stream->write(&opcode_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
11210     stream->write(&packetSize_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t));
11211     uint64_t cgen_var_754;
11212     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_754, 1);
11213     stream->write((uint64_t*)&cgen_var_754, 1 * 8);
11214     uint64_t cgen_var_755;
11215     stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_755, 1);
11216     stream->write((uint64_t*)&cgen_var_755, 1 * 8);
11217     uint64_t cgen_var_756;
11218     stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_756, 1);
11219     stream->write((uint64_t*)&cgen_var_756, 1 * 8);
11220     // WARNING PTR CHECK
11221     uint64_t cgen_var_757 = (uint64_t)(uintptr_t)local_pData;
11222     stream->putBe64(cgen_var_757);
11223     if (local_pData)
11224     {
11225         stream->write((void*)local_pData, sizeof(uint8_t));
11226     }
11227     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate readParams");
11228     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate returnUnmarshal");
11229     mImpl->log("finish vkUpdateDescriptorSetWithTemplate");;
11230 }
11231 
vkGetPhysicalDeviceExternalBufferProperties(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo,VkExternalBufferProperties * pExternalBufferProperties)11232 void VkEncoder::vkGetPhysicalDeviceExternalBufferProperties(
11233     VkPhysicalDevice physicalDevice,
11234     const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
11235     VkExternalBufferProperties* pExternalBufferProperties)
11236 {
11237     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties encode");
11238     mImpl->log("start vkGetPhysicalDeviceExternalBufferProperties");
11239     auto stream = mImpl->stream();
11240     auto countingStream = mImpl->countingStream();
11241     auto resources = mImpl->resources();
11242     auto pool = mImpl->pool();
11243     stream->setHandleMapping(resources->unwrapMapping());
11244     VkPhysicalDevice local_physicalDevice;
11245     VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
11246     local_physicalDevice = physicalDevice;
11247     local_pExternalBufferInfo = nullptr;
11248     if (pExternalBufferInfo)
11249     {
11250         local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
11251         deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
11252     }
11253     if (local_pExternalBufferInfo)
11254     {
11255         mImpl->resources()->transformImpl_VkPhysicalDeviceExternalBufferInfo_tohost(local_pExternalBufferInfo, 1);
11256         transform_tohost_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
11257     }
11258     countingStream->rewind();
11259     {
11260         uint64_t cgen_var_758;
11261         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_758, 1);
11262         countingStream->write((uint64_t*)&cgen_var_758, 1 * 8);
11263         marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
11264         marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
11265     }
11266     uint32_t packetSize_vkGetPhysicalDeviceExternalBufferProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11267     countingStream->rewind();
11268     uint32_t opcode_vkGetPhysicalDeviceExternalBufferProperties = OP_vkGetPhysicalDeviceExternalBufferProperties;
11269     stream->write(&opcode_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
11270     stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t));
11271     uint64_t cgen_var_759;
11272     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_759, 1);
11273     stream->write((uint64_t*)&cgen_var_759, 1 * 8);
11274     marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
11275     marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
11276     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties readParams");
11277     unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
11278     if (pExternalBufferProperties)
11279     {
11280         mImpl->resources()->transformImpl_VkExternalBufferProperties_fromhost(pExternalBufferProperties, 1);
11281         transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties));
11282     }
11283     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties returnUnmarshal");
11284     mImpl->log("finish vkGetPhysicalDeviceExternalBufferProperties");;
11285 }
11286 
vkGetPhysicalDeviceExternalFenceProperties(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo,VkExternalFenceProperties * pExternalFenceProperties)11287 void VkEncoder::vkGetPhysicalDeviceExternalFenceProperties(
11288     VkPhysicalDevice physicalDevice,
11289     const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
11290     VkExternalFenceProperties* pExternalFenceProperties)
11291 {
11292     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties encode");
11293     mImpl->log("start vkGetPhysicalDeviceExternalFenceProperties");
11294     auto stream = mImpl->stream();
11295     auto countingStream = mImpl->countingStream();
11296     auto resources = mImpl->resources();
11297     auto pool = mImpl->pool();
11298     stream->setHandleMapping(resources->unwrapMapping());
11299     VkPhysicalDevice local_physicalDevice;
11300     VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
11301     local_physicalDevice = physicalDevice;
11302     local_pExternalFenceInfo = nullptr;
11303     if (pExternalFenceInfo)
11304     {
11305         local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
11306         deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
11307     }
11308     if (local_pExternalFenceInfo)
11309     {
11310         transform_tohost_VkPhysicalDeviceExternalFenceInfo(mImpl->resources(), (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
11311     }
11312     countingStream->rewind();
11313     {
11314         uint64_t cgen_var_760;
11315         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_760, 1);
11316         countingStream->write((uint64_t*)&cgen_var_760, 1 * 8);
11317         marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
11318         marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
11319     }
11320     uint32_t packetSize_vkGetPhysicalDeviceExternalFenceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11321     countingStream->rewind();
11322     uint32_t opcode_vkGetPhysicalDeviceExternalFenceProperties = OP_vkGetPhysicalDeviceExternalFenceProperties;
11323     stream->write(&opcode_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
11324     stream->write(&packetSize_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t));
11325     uint64_t cgen_var_761;
11326     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_761, 1);
11327     stream->write((uint64_t*)&cgen_var_761, 1 * 8);
11328     marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
11329     marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
11330     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties readParams");
11331     unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
11332     if (pExternalFenceProperties)
11333     {
11334         transform_fromhost_VkExternalFenceProperties(mImpl->resources(), (VkExternalFenceProperties*)(pExternalFenceProperties));
11335     }
11336     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties returnUnmarshal");
11337     mImpl->log("finish vkGetPhysicalDeviceExternalFenceProperties");;
11338 }
11339 
vkGetPhysicalDeviceExternalSemaphoreProperties(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo,VkExternalSemaphoreProperties * pExternalSemaphoreProperties)11340 void VkEncoder::vkGetPhysicalDeviceExternalSemaphoreProperties(
11341     VkPhysicalDevice physicalDevice,
11342     const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
11343     VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
11344 {
11345     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties encode");
11346     mImpl->log("start vkGetPhysicalDeviceExternalSemaphoreProperties");
11347     auto stream = mImpl->stream();
11348     auto countingStream = mImpl->countingStream();
11349     auto resources = mImpl->resources();
11350     auto pool = mImpl->pool();
11351     stream->setHandleMapping(resources->unwrapMapping());
11352     VkPhysicalDevice local_physicalDevice;
11353     VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
11354     local_physicalDevice = physicalDevice;
11355     local_pExternalSemaphoreInfo = nullptr;
11356     if (pExternalSemaphoreInfo)
11357     {
11358         local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
11359         deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
11360     }
11361     if (local_pExternalSemaphoreInfo)
11362     {
11363         transform_tohost_VkPhysicalDeviceExternalSemaphoreInfo(mImpl->resources(), (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
11364     }
11365     countingStream->rewind();
11366     {
11367         uint64_t cgen_var_762;
11368         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_762, 1);
11369         countingStream->write((uint64_t*)&cgen_var_762, 1 * 8);
11370         marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
11371         marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
11372     }
11373     uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11374     countingStream->rewind();
11375     uint32_t opcode_vkGetPhysicalDeviceExternalSemaphoreProperties = OP_vkGetPhysicalDeviceExternalSemaphoreProperties;
11376     stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
11377     stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t));
11378     uint64_t cgen_var_763;
11379     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_763, 1);
11380     stream->write((uint64_t*)&cgen_var_763, 1 * 8);
11381     marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
11382     marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
11383     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties readParams");
11384     unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
11385     if (pExternalSemaphoreProperties)
11386     {
11387         transform_fromhost_VkExternalSemaphoreProperties(mImpl->resources(), (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
11388     }
11389     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties returnUnmarshal");
11390     mImpl->log("finish vkGetPhysicalDeviceExternalSemaphoreProperties");;
11391 }
11392 
vkGetDescriptorSetLayoutSupport(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)11393 void VkEncoder::vkGetDescriptorSetLayoutSupport(
11394     VkDevice device,
11395     const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
11396     VkDescriptorSetLayoutSupport* pSupport)
11397 {
11398     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport encode");
11399     mImpl->log("start vkGetDescriptorSetLayoutSupport");
11400     auto stream = mImpl->stream();
11401     auto countingStream = mImpl->countingStream();
11402     auto resources = mImpl->resources();
11403     auto pool = mImpl->pool();
11404     stream->setHandleMapping(resources->unwrapMapping());
11405     VkDevice local_device;
11406     VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
11407     local_device = device;
11408     local_pCreateInfo = nullptr;
11409     if (pCreateInfo)
11410     {
11411         local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
11412         deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
11413     }
11414     if (local_pCreateInfo)
11415     {
11416         transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
11417     }
11418     countingStream->rewind();
11419     {
11420         uint64_t cgen_var_764;
11421         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_764, 1);
11422         countingStream->write((uint64_t*)&cgen_var_764, 1 * 8);
11423         marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
11424         marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
11425     }
11426     uint32_t packetSize_vkGetDescriptorSetLayoutSupport = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11427     countingStream->rewind();
11428     uint32_t opcode_vkGetDescriptorSetLayoutSupport = OP_vkGetDescriptorSetLayoutSupport;
11429     stream->write(&opcode_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
11430     stream->write(&packetSize_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t));
11431     uint64_t cgen_var_765;
11432     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_765, 1);
11433     stream->write((uint64_t*)&cgen_var_765, 1 * 8);
11434     marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
11435     marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
11436     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport readParams");
11437     unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
11438     if (pSupport)
11439     {
11440         transform_fromhost_VkDescriptorSetLayoutSupport(mImpl->resources(), (VkDescriptorSetLayoutSupport*)(pSupport));
11441     }
11442     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport returnUnmarshal");
11443     mImpl->log("finish vkGetDescriptorSetLayoutSupport");;
11444 }
11445 
11446 #endif
11447 #ifdef VK_KHR_surface
vkDestroySurfaceKHR(VkInstance instance,VkSurfaceKHR surface,const VkAllocationCallbacks * pAllocator)11448 void VkEncoder::vkDestroySurfaceKHR(
11449     VkInstance instance,
11450     VkSurfaceKHR surface,
11451     const VkAllocationCallbacks* pAllocator)
11452 {
11453     AEMU_SCOPED_TRACE("vkDestroySurfaceKHR encode");
11454     mImpl->log("start vkDestroySurfaceKHR");
11455     auto stream = mImpl->stream();
11456     auto countingStream = mImpl->countingStream();
11457     auto resources = mImpl->resources();
11458     auto pool = mImpl->pool();
11459     stream->setHandleMapping(resources->unwrapMapping());
11460     VkInstance local_instance;
11461     VkSurfaceKHR local_surface;
11462     VkAllocationCallbacks* local_pAllocator;
11463     local_instance = instance;
11464     local_surface = surface;
11465     local_pAllocator = nullptr;
11466     if (pAllocator)
11467     {
11468         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11469         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11470     }
11471     local_pAllocator = nullptr;
11472     if (local_pAllocator)
11473     {
11474         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
11475     }
11476     countingStream->rewind();
11477     {
11478         uint64_t cgen_var_766;
11479         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_766, 1);
11480         countingStream->write((uint64_t*)&cgen_var_766, 1 * 8);
11481         uint64_t cgen_var_767;
11482         countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_767, 1);
11483         countingStream->write((uint64_t*)&cgen_var_767, 1 * 8);
11484         // WARNING PTR CHECK
11485         uint64_t cgen_var_768 = (uint64_t)(uintptr_t)local_pAllocator;
11486         countingStream->putBe64(cgen_var_768);
11487         if (local_pAllocator)
11488         {
11489             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
11490         }
11491     }
11492     uint32_t packetSize_vkDestroySurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11493     countingStream->rewind();
11494     uint32_t opcode_vkDestroySurfaceKHR = OP_vkDestroySurfaceKHR;
11495     stream->write(&opcode_vkDestroySurfaceKHR, sizeof(uint32_t));
11496     stream->write(&packetSize_vkDestroySurfaceKHR, sizeof(uint32_t));
11497     uint64_t cgen_var_769;
11498     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_769, 1);
11499     stream->write((uint64_t*)&cgen_var_769, 1 * 8);
11500     uint64_t cgen_var_770;
11501     stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_770, 1);
11502     stream->write((uint64_t*)&cgen_var_770, 1 * 8);
11503     // WARNING PTR CHECK
11504     uint64_t cgen_var_771 = (uint64_t)(uintptr_t)local_pAllocator;
11505     stream->putBe64(cgen_var_771);
11506     if (local_pAllocator)
11507     {
11508         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
11509     }
11510     AEMU_SCOPED_TRACE("vkDestroySurfaceKHR readParams");
11511     AEMU_SCOPED_TRACE("vkDestroySurfaceKHR returnUnmarshal");
11512     resources->destroyMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&surface);
11513     mImpl->log("finish vkDestroySurfaceKHR");;
11514 }
11515 
vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,VkSurfaceKHR surface,VkBool32 * pSupported)11516 VkResult VkEncoder::vkGetPhysicalDeviceSurfaceSupportKHR(
11517     VkPhysicalDevice physicalDevice,
11518     uint32_t queueFamilyIndex,
11519     VkSurfaceKHR surface,
11520     VkBool32* pSupported)
11521 {
11522     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR encode");
11523     mImpl->log("start vkGetPhysicalDeviceSurfaceSupportKHR");
11524     auto stream = mImpl->stream();
11525     auto countingStream = mImpl->countingStream();
11526     auto resources = mImpl->resources();
11527     auto pool = mImpl->pool();
11528     stream->setHandleMapping(resources->unwrapMapping());
11529     VkPhysicalDevice local_physicalDevice;
11530     uint32_t local_queueFamilyIndex;
11531     VkSurfaceKHR local_surface;
11532     local_physicalDevice = physicalDevice;
11533     local_queueFamilyIndex = queueFamilyIndex;
11534     local_surface = surface;
11535     countingStream->rewind();
11536     {
11537         uint64_t cgen_var_772;
11538         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_772, 1);
11539         countingStream->write((uint64_t*)&cgen_var_772, 1 * 8);
11540         countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
11541         uint64_t cgen_var_773;
11542         countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_773, 1);
11543         countingStream->write((uint64_t*)&cgen_var_773, 1 * 8);
11544         countingStream->write((VkBool32*)pSupported, sizeof(VkBool32));
11545     }
11546     uint32_t packetSize_vkGetPhysicalDeviceSurfaceSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11547     countingStream->rewind();
11548     uint32_t opcode_vkGetPhysicalDeviceSurfaceSupportKHR = OP_vkGetPhysicalDeviceSurfaceSupportKHR;
11549     stream->write(&opcode_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
11550     stream->write(&packetSize_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t));
11551     uint64_t cgen_var_774;
11552     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_774, 1);
11553     stream->write((uint64_t*)&cgen_var_774, 1 * 8);
11554     stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
11555     uint64_t cgen_var_775;
11556     stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_775, 1);
11557     stream->write((uint64_t*)&cgen_var_775, 1 * 8);
11558     stream->write((VkBool32*)pSupported, sizeof(VkBool32));
11559     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR readParams");
11560     stream->read((VkBool32*)pSupported, sizeof(VkBool32));
11561     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR returnUnmarshal");
11562     VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0;
11563     stream->read(&vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult));
11564     countingStream->clearPool();
11565     stream->clearPool();
11566     pool->freeAll();
11567     mImpl->log("finish vkGetPhysicalDeviceSurfaceSupportKHR");;
11568     return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return;
11569 }
11570 
vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,VkSurfaceCapabilitiesKHR * pSurfaceCapabilities)11571 VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
11572     VkPhysicalDevice physicalDevice,
11573     VkSurfaceKHR surface,
11574     VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
11575 {
11576     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR encode");
11577     mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
11578     auto stream = mImpl->stream();
11579     auto countingStream = mImpl->countingStream();
11580     auto resources = mImpl->resources();
11581     auto pool = mImpl->pool();
11582     stream->setHandleMapping(resources->unwrapMapping());
11583     VkPhysicalDevice local_physicalDevice;
11584     VkSurfaceKHR local_surface;
11585     local_physicalDevice = physicalDevice;
11586     local_surface = surface;
11587     countingStream->rewind();
11588     {
11589         uint64_t cgen_var_776;
11590         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_776, 1);
11591         countingStream->write((uint64_t*)&cgen_var_776, 1 * 8);
11592         uint64_t cgen_var_777;
11593         countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_777, 1);
11594         countingStream->write((uint64_t*)&cgen_var_777, 1 * 8);
11595         marshal_VkSurfaceCapabilitiesKHR(countingStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
11596     }
11597     uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11598     countingStream->rewind();
11599     uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR;
11600     stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
11601     stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t));
11602     uint64_t cgen_var_778;
11603     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_778, 1);
11604     stream->write((uint64_t*)&cgen_var_778, 1 * 8);
11605     uint64_t cgen_var_779;
11606     stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_779, 1);
11607     stream->write((uint64_t*)&cgen_var_779, 1 * 8);
11608     marshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
11609     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR readParams");
11610     unmarshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
11611     if (pSurfaceCapabilities)
11612     {
11613         transform_fromhost_VkSurfaceCapabilitiesKHR(mImpl->resources(), (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities));
11614     }
11615     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR returnUnmarshal");
11616     VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0;
11617     stream->read(&vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult));
11618     countingStream->clearPool();
11619     stream->clearPool();
11620     pool->freeAll();
11621     mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilitiesKHR");;
11622     return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return;
11623 }
11624 
vkGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,uint32_t * pSurfaceFormatCount,VkSurfaceFormatKHR * pSurfaceFormats)11625 VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormatsKHR(
11626     VkPhysicalDevice physicalDevice,
11627     VkSurfaceKHR surface,
11628     uint32_t* pSurfaceFormatCount,
11629     VkSurfaceFormatKHR* pSurfaceFormats)
11630 {
11631     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR encode");
11632     mImpl->log("start vkGetPhysicalDeviceSurfaceFormatsKHR");
11633     auto stream = mImpl->stream();
11634     auto countingStream = mImpl->countingStream();
11635     auto resources = mImpl->resources();
11636     auto pool = mImpl->pool();
11637     stream->setHandleMapping(resources->unwrapMapping());
11638     VkPhysicalDevice local_physicalDevice;
11639     VkSurfaceKHR local_surface;
11640     local_physicalDevice = physicalDevice;
11641     local_surface = surface;
11642     countingStream->rewind();
11643     {
11644         uint64_t cgen_var_780;
11645         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_780, 1);
11646         countingStream->write((uint64_t*)&cgen_var_780, 1 * 8);
11647         uint64_t cgen_var_781;
11648         countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_781, 1);
11649         countingStream->write((uint64_t*)&cgen_var_781, 1 * 8);
11650         // WARNING PTR CHECK
11651         uint64_t cgen_var_782 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
11652         countingStream->putBe64(cgen_var_782);
11653         if (pSurfaceFormatCount)
11654         {
11655             countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
11656         }
11657         // WARNING PTR CHECK
11658         uint64_t cgen_var_783 = (uint64_t)(uintptr_t)pSurfaceFormats;
11659         countingStream->putBe64(cgen_var_783);
11660         if (pSurfaceFormats)
11661         {
11662             for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11663             {
11664                 marshal_VkSurfaceFormatKHR(countingStream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11665             }
11666         }
11667     }
11668     uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11669     countingStream->rewind();
11670     uint32_t opcode_vkGetPhysicalDeviceSurfaceFormatsKHR = OP_vkGetPhysicalDeviceSurfaceFormatsKHR;
11671     stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
11672     stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t));
11673     uint64_t cgen_var_784;
11674     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_784, 1);
11675     stream->write((uint64_t*)&cgen_var_784, 1 * 8);
11676     uint64_t cgen_var_785;
11677     stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_785, 1);
11678     stream->write((uint64_t*)&cgen_var_785, 1 * 8);
11679     // WARNING PTR CHECK
11680     uint64_t cgen_var_786 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
11681     stream->putBe64(cgen_var_786);
11682     if (pSurfaceFormatCount)
11683     {
11684         stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
11685     }
11686     // WARNING PTR CHECK
11687     uint64_t cgen_var_787 = (uint64_t)(uintptr_t)pSurfaceFormats;
11688     stream->putBe64(cgen_var_787);
11689     if (pSurfaceFormats)
11690     {
11691         for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11692         {
11693             marshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11694         }
11695     }
11696     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR readParams");
11697     // WARNING PTR CHECK
11698     uint32_t* check_pSurfaceFormatCount;
11699     check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
11700     if (pSurfaceFormatCount)
11701     {
11702         if (!(check_pSurfaceFormatCount))
11703         {
11704             fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
11705         }
11706         stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
11707     }
11708     // WARNING PTR CHECK
11709     VkSurfaceFormatKHR* check_pSurfaceFormats;
11710     check_pSurfaceFormats = (VkSurfaceFormatKHR*)(uintptr_t)stream->getBe64();
11711     if (pSurfaceFormats)
11712     {
11713         if (!(check_pSurfaceFormats))
11714         {
11715             fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
11716         }
11717         for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11718         {
11719             unmarshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11720         }
11721     }
11722     if (pSurfaceFormats)
11723     {
11724         for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
11725         {
11726             transform_fromhost_VkSurfaceFormatKHR(mImpl->resources(), (VkSurfaceFormatKHR*)(pSurfaceFormats + i));
11727         }
11728     }
11729     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR returnUnmarshal");
11730     VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0;
11731     stream->read(&vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult));
11732     countingStream->clearPool();
11733     stream->clearPool();
11734     pool->freeAll();
11735     mImpl->log("finish vkGetPhysicalDeviceSurfaceFormatsKHR");;
11736     return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return;
11737 }
11738 
vkGetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,uint32_t * pPresentModeCount,VkPresentModeKHR * pPresentModes)11739 VkResult VkEncoder::vkGetPhysicalDeviceSurfacePresentModesKHR(
11740     VkPhysicalDevice physicalDevice,
11741     VkSurfaceKHR surface,
11742     uint32_t* pPresentModeCount,
11743     VkPresentModeKHR* pPresentModes)
11744 {
11745     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR encode");
11746     mImpl->log("start vkGetPhysicalDeviceSurfacePresentModesKHR");
11747     auto stream = mImpl->stream();
11748     auto countingStream = mImpl->countingStream();
11749     auto resources = mImpl->resources();
11750     auto pool = mImpl->pool();
11751     stream->setHandleMapping(resources->unwrapMapping());
11752     VkPhysicalDevice local_physicalDevice;
11753     VkSurfaceKHR local_surface;
11754     local_physicalDevice = physicalDevice;
11755     local_surface = surface;
11756     countingStream->rewind();
11757     {
11758         uint64_t cgen_var_790;
11759         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_790, 1);
11760         countingStream->write((uint64_t*)&cgen_var_790, 1 * 8);
11761         uint64_t cgen_var_791;
11762         countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_791, 1);
11763         countingStream->write((uint64_t*)&cgen_var_791, 1 * 8);
11764         // WARNING PTR CHECK
11765         uint64_t cgen_var_792 = (uint64_t)(uintptr_t)pPresentModeCount;
11766         countingStream->putBe64(cgen_var_792);
11767         if (pPresentModeCount)
11768         {
11769             countingStream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
11770         }
11771         // WARNING PTR CHECK
11772         uint64_t cgen_var_793 = (uint64_t)(uintptr_t)pPresentModes;
11773         countingStream->putBe64(cgen_var_793);
11774         if (pPresentModes)
11775         {
11776             countingStream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
11777         }
11778     }
11779     uint32_t packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11780     countingStream->rewind();
11781     uint32_t opcode_vkGetPhysicalDeviceSurfacePresentModesKHR = OP_vkGetPhysicalDeviceSurfacePresentModesKHR;
11782     stream->write(&opcode_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
11783     stream->write(&packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t));
11784     uint64_t cgen_var_794;
11785     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_794, 1);
11786     stream->write((uint64_t*)&cgen_var_794, 1 * 8);
11787     uint64_t cgen_var_795;
11788     stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_795, 1);
11789     stream->write((uint64_t*)&cgen_var_795, 1 * 8);
11790     // WARNING PTR CHECK
11791     uint64_t cgen_var_796 = (uint64_t)(uintptr_t)pPresentModeCount;
11792     stream->putBe64(cgen_var_796);
11793     if (pPresentModeCount)
11794     {
11795         stream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t));
11796     }
11797     // WARNING PTR CHECK
11798     uint64_t cgen_var_797 = (uint64_t)(uintptr_t)pPresentModes;
11799     stream->putBe64(cgen_var_797);
11800     if (pPresentModes)
11801     {
11802         stream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
11803     }
11804     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR readParams");
11805     // WARNING PTR CHECK
11806     uint32_t* check_pPresentModeCount;
11807     check_pPresentModeCount = (uint32_t*)(uintptr_t)stream->getBe64();
11808     if (pPresentModeCount)
11809     {
11810         if (!(check_pPresentModeCount))
11811         {
11812             fprintf(stderr, "fatal: pPresentModeCount inconsistent between guest and host\n");
11813         }
11814         stream->read((uint32_t*)pPresentModeCount, sizeof(uint32_t));
11815     }
11816     // WARNING PTR CHECK
11817     VkPresentModeKHR* check_pPresentModes;
11818     check_pPresentModes = (VkPresentModeKHR*)(uintptr_t)stream->getBe64();
11819     if (pPresentModes)
11820     {
11821         if (!(check_pPresentModes))
11822         {
11823             fprintf(stderr, "fatal: pPresentModes inconsistent between guest and host\n");
11824         }
11825         stream->read((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR));
11826     }
11827     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR returnUnmarshal");
11828     VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0;
11829     stream->read(&vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
11830     countingStream->clearPool();
11831     stream->clearPool();
11832     pool->freeAll();
11833     mImpl->log("finish vkGetPhysicalDeviceSurfacePresentModesKHR");;
11834     return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return;
11835 }
11836 
11837 #endif
11838 #ifdef VK_KHR_swapchain
vkCreateSwapchainKHR(VkDevice device,const VkSwapchainCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSwapchainKHR * pSwapchain)11839 VkResult VkEncoder::vkCreateSwapchainKHR(
11840     VkDevice device,
11841     const VkSwapchainCreateInfoKHR* pCreateInfo,
11842     const VkAllocationCallbacks* pAllocator,
11843     VkSwapchainKHR* pSwapchain)
11844 {
11845     AEMU_SCOPED_TRACE("vkCreateSwapchainKHR encode");
11846     mImpl->log("start vkCreateSwapchainKHR");
11847     auto stream = mImpl->stream();
11848     auto countingStream = mImpl->countingStream();
11849     auto resources = mImpl->resources();
11850     auto pool = mImpl->pool();
11851     stream->setHandleMapping(resources->unwrapMapping());
11852     VkDevice local_device;
11853     VkSwapchainCreateInfoKHR* local_pCreateInfo;
11854     VkAllocationCallbacks* local_pAllocator;
11855     local_device = device;
11856     local_pCreateInfo = nullptr;
11857     if (pCreateInfo)
11858     {
11859         local_pCreateInfo = (VkSwapchainCreateInfoKHR*)pool->alloc(sizeof(const VkSwapchainCreateInfoKHR));
11860         deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfo, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
11861     }
11862     local_pAllocator = nullptr;
11863     if (pAllocator)
11864     {
11865         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11866         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11867     }
11868     local_pAllocator = nullptr;
11869     if (local_pCreateInfo)
11870     {
11871         transform_tohost_VkSwapchainCreateInfoKHR(mImpl->resources(), (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
11872     }
11873     if (local_pAllocator)
11874     {
11875         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
11876     }
11877     countingStream->rewind();
11878     {
11879         uint64_t cgen_var_800;
11880         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_800, 1);
11881         countingStream->write((uint64_t*)&cgen_var_800, 1 * 8);
11882         marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
11883         // WARNING PTR CHECK
11884         uint64_t cgen_var_801 = (uint64_t)(uintptr_t)local_pAllocator;
11885         countingStream->putBe64(cgen_var_801);
11886         if (local_pAllocator)
11887         {
11888             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
11889         }
11890         uint64_t cgen_var_802;
11891         countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_802, 1);
11892         countingStream->write((uint64_t*)&cgen_var_802, 8);
11893     }
11894     uint32_t packetSize_vkCreateSwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11895     countingStream->rewind();
11896     uint32_t opcode_vkCreateSwapchainKHR = OP_vkCreateSwapchainKHR;
11897     stream->write(&opcode_vkCreateSwapchainKHR, sizeof(uint32_t));
11898     stream->write(&packetSize_vkCreateSwapchainKHR, sizeof(uint32_t));
11899     uint64_t cgen_var_803;
11900     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_803, 1);
11901     stream->write((uint64_t*)&cgen_var_803, 1 * 8);
11902     marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo));
11903     // WARNING PTR CHECK
11904     uint64_t cgen_var_804 = (uint64_t)(uintptr_t)local_pAllocator;
11905     stream->putBe64(cgen_var_804);
11906     if (local_pAllocator)
11907     {
11908         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
11909     }
11910     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
11911     uint64_t cgen_var_805;
11912     stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_805, 1);
11913     stream->write((uint64_t*)&cgen_var_805, 8);
11914     stream->setHandleMapping(resources->unwrapMapping());
11915     AEMU_SCOPED_TRACE("vkCreateSwapchainKHR readParams");
11916     stream->setHandleMapping(resources->createMapping());
11917     uint64_t cgen_var_806;
11918     stream->read((uint64_t*)&cgen_var_806, 8);
11919     stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_806, (VkSwapchainKHR*)pSwapchain, 1);
11920     stream->unsetHandleMapping();
11921     AEMU_SCOPED_TRACE("vkCreateSwapchainKHR returnUnmarshal");
11922     VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0;
11923     stream->read(&vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult));
11924     countingStream->clearPool();
11925     stream->clearPool();
11926     pool->freeAll();
11927     mImpl->log("finish vkCreateSwapchainKHR");;
11928     return vkCreateSwapchainKHR_VkResult_return;
11929 }
11930 
vkDestroySwapchainKHR(VkDevice device,VkSwapchainKHR swapchain,const VkAllocationCallbacks * pAllocator)11931 void VkEncoder::vkDestroySwapchainKHR(
11932     VkDevice device,
11933     VkSwapchainKHR swapchain,
11934     const VkAllocationCallbacks* pAllocator)
11935 {
11936     AEMU_SCOPED_TRACE("vkDestroySwapchainKHR encode");
11937     mImpl->log("start vkDestroySwapchainKHR");
11938     auto stream = mImpl->stream();
11939     auto countingStream = mImpl->countingStream();
11940     auto resources = mImpl->resources();
11941     auto pool = mImpl->pool();
11942     stream->setHandleMapping(resources->unwrapMapping());
11943     VkDevice local_device;
11944     VkSwapchainKHR local_swapchain;
11945     VkAllocationCallbacks* local_pAllocator;
11946     local_device = device;
11947     local_swapchain = swapchain;
11948     local_pAllocator = nullptr;
11949     if (pAllocator)
11950     {
11951         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
11952         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
11953     }
11954     local_pAllocator = nullptr;
11955     if (local_pAllocator)
11956     {
11957         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
11958     }
11959     countingStream->rewind();
11960     {
11961         uint64_t cgen_var_807;
11962         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_807, 1);
11963         countingStream->write((uint64_t*)&cgen_var_807, 1 * 8);
11964         uint64_t cgen_var_808;
11965         countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_808, 1);
11966         countingStream->write((uint64_t*)&cgen_var_808, 1 * 8);
11967         // WARNING PTR CHECK
11968         uint64_t cgen_var_809 = (uint64_t)(uintptr_t)local_pAllocator;
11969         countingStream->putBe64(cgen_var_809);
11970         if (local_pAllocator)
11971         {
11972             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
11973         }
11974     }
11975     uint32_t packetSize_vkDestroySwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
11976     countingStream->rewind();
11977     uint32_t opcode_vkDestroySwapchainKHR = OP_vkDestroySwapchainKHR;
11978     stream->write(&opcode_vkDestroySwapchainKHR, sizeof(uint32_t));
11979     stream->write(&packetSize_vkDestroySwapchainKHR, sizeof(uint32_t));
11980     uint64_t cgen_var_810;
11981     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_810, 1);
11982     stream->write((uint64_t*)&cgen_var_810, 1 * 8);
11983     uint64_t cgen_var_811;
11984     stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_811, 1);
11985     stream->write((uint64_t*)&cgen_var_811, 1 * 8);
11986     // WARNING PTR CHECK
11987     uint64_t cgen_var_812 = (uint64_t)(uintptr_t)local_pAllocator;
11988     stream->putBe64(cgen_var_812);
11989     if (local_pAllocator)
11990     {
11991         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
11992     }
11993     AEMU_SCOPED_TRACE("vkDestroySwapchainKHR readParams");
11994     AEMU_SCOPED_TRACE("vkDestroySwapchainKHR returnUnmarshal");
11995     resources->destroyMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&swapchain);
11996     mImpl->log("finish vkDestroySwapchainKHR");;
11997 }
11998 
vkGetSwapchainImagesKHR(VkDevice device,VkSwapchainKHR swapchain,uint32_t * pSwapchainImageCount,VkImage * pSwapchainImages)11999 VkResult VkEncoder::vkGetSwapchainImagesKHR(
12000     VkDevice device,
12001     VkSwapchainKHR swapchain,
12002     uint32_t* pSwapchainImageCount,
12003     VkImage* pSwapchainImages)
12004 {
12005     AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR encode");
12006     mImpl->log("start vkGetSwapchainImagesKHR");
12007     auto stream = mImpl->stream();
12008     auto countingStream = mImpl->countingStream();
12009     auto resources = mImpl->resources();
12010     auto pool = mImpl->pool();
12011     stream->setHandleMapping(resources->unwrapMapping());
12012     VkDevice local_device;
12013     VkSwapchainKHR local_swapchain;
12014     local_device = device;
12015     local_swapchain = swapchain;
12016     countingStream->rewind();
12017     {
12018         uint64_t cgen_var_813;
12019         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_813, 1);
12020         countingStream->write((uint64_t*)&cgen_var_813, 1 * 8);
12021         uint64_t cgen_var_814;
12022         countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_814, 1);
12023         countingStream->write((uint64_t*)&cgen_var_814, 1 * 8);
12024         // WARNING PTR CHECK
12025         uint64_t cgen_var_815 = (uint64_t)(uintptr_t)pSwapchainImageCount;
12026         countingStream->putBe64(cgen_var_815);
12027         if (pSwapchainImageCount)
12028         {
12029             countingStream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
12030         }
12031         // WARNING PTR CHECK
12032         uint64_t cgen_var_816 = (uint64_t)(uintptr_t)pSwapchainImages;
12033         countingStream->putBe64(cgen_var_816);
12034         if (pSwapchainImages)
12035         {
12036             if ((*(pSwapchainImageCount)))
12037             {
12038                 uint64_t* cgen_var_817;
12039                 countingStream->alloc((void**)&cgen_var_817, (*(pSwapchainImageCount)) * 8);
12040                 countingStream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_817, (*(pSwapchainImageCount)));
12041                 countingStream->write((uint64_t*)cgen_var_817, (*(pSwapchainImageCount)) * 8);
12042             }
12043         }
12044     }
12045     uint32_t packetSize_vkGetSwapchainImagesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12046     countingStream->rewind();
12047     uint32_t opcode_vkGetSwapchainImagesKHR = OP_vkGetSwapchainImagesKHR;
12048     stream->write(&opcode_vkGetSwapchainImagesKHR, sizeof(uint32_t));
12049     stream->write(&packetSize_vkGetSwapchainImagesKHR, sizeof(uint32_t));
12050     uint64_t cgen_var_818;
12051     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_818, 1);
12052     stream->write((uint64_t*)&cgen_var_818, 1 * 8);
12053     uint64_t cgen_var_819;
12054     stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_819, 1);
12055     stream->write((uint64_t*)&cgen_var_819, 1 * 8);
12056     // WARNING PTR CHECK
12057     uint64_t cgen_var_820 = (uint64_t)(uintptr_t)pSwapchainImageCount;
12058     stream->putBe64(cgen_var_820);
12059     if (pSwapchainImageCount)
12060     {
12061         stream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
12062     }
12063     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
12064     // WARNING PTR CHECK
12065     uint64_t cgen_var_821 = (uint64_t)(uintptr_t)pSwapchainImages;
12066     stream->putBe64(cgen_var_821);
12067     if (pSwapchainImages)
12068     {
12069         if ((*(pSwapchainImageCount)))
12070         {
12071             uint64_t* cgen_var_822;
12072             stream->alloc((void**)&cgen_var_822, (*(pSwapchainImageCount)) * 8);
12073             stream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_822, (*(pSwapchainImageCount)));
12074             stream->write((uint64_t*)cgen_var_822, (*(pSwapchainImageCount)) * 8);
12075         }
12076     }
12077     stream->setHandleMapping(resources->unwrapMapping());
12078     AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR readParams");
12079     // WARNING PTR CHECK
12080     uint32_t* check_pSwapchainImageCount;
12081     check_pSwapchainImageCount = (uint32_t*)(uintptr_t)stream->getBe64();
12082     if (pSwapchainImageCount)
12083     {
12084         if (!(check_pSwapchainImageCount))
12085         {
12086             fprintf(stderr, "fatal: pSwapchainImageCount inconsistent between guest and host\n");
12087         }
12088         stream->read((uint32_t*)pSwapchainImageCount, sizeof(uint32_t));
12089     }
12090     // WARNING PTR CHECK
12091     VkImage* check_pSwapchainImages;
12092     check_pSwapchainImages = (VkImage*)(uintptr_t)stream->getBe64();
12093     if (pSwapchainImages)
12094     {
12095         if (!(check_pSwapchainImages))
12096         {
12097             fprintf(stderr, "fatal: pSwapchainImages inconsistent between guest and host\n");
12098         }
12099         if ((*(pSwapchainImageCount)))
12100         {
12101             uint64_t* cgen_var_825;
12102             stream->alloc((void**)&cgen_var_825, (*(pSwapchainImageCount)) * 8);
12103             stream->read((uint64_t*)cgen_var_825, (*(pSwapchainImageCount)) * 8);
12104             stream->handleMapping()->mapHandles_u64_VkImage(cgen_var_825, (VkImage*)pSwapchainImages, (*(pSwapchainImageCount)));
12105         }
12106     }
12107     AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR returnUnmarshal");
12108     VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0;
12109     stream->read(&vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult));
12110     countingStream->clearPool();
12111     stream->clearPool();
12112     pool->freeAll();
12113     mImpl->log("finish vkGetSwapchainImagesKHR");;
12114     return vkGetSwapchainImagesKHR_VkResult_return;
12115 }
12116 
vkAcquireNextImageKHR(VkDevice device,VkSwapchainKHR swapchain,uint64_t timeout,VkSemaphore semaphore,VkFence fence,uint32_t * pImageIndex)12117 VkResult VkEncoder::vkAcquireNextImageKHR(
12118     VkDevice device,
12119     VkSwapchainKHR swapchain,
12120     uint64_t timeout,
12121     VkSemaphore semaphore,
12122     VkFence fence,
12123     uint32_t* pImageIndex)
12124 {
12125     AEMU_SCOPED_TRACE("vkAcquireNextImageKHR encode");
12126     mImpl->log("start vkAcquireNextImageKHR");
12127     auto stream = mImpl->stream();
12128     auto countingStream = mImpl->countingStream();
12129     auto resources = mImpl->resources();
12130     auto pool = mImpl->pool();
12131     stream->setHandleMapping(resources->unwrapMapping());
12132     VkDevice local_device;
12133     VkSwapchainKHR local_swapchain;
12134     uint64_t local_timeout;
12135     VkSemaphore local_semaphore;
12136     VkFence local_fence;
12137     local_device = device;
12138     local_swapchain = swapchain;
12139     local_timeout = timeout;
12140     local_semaphore = semaphore;
12141     local_fence = fence;
12142     countingStream->rewind();
12143     {
12144         uint64_t cgen_var_826;
12145         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_826, 1);
12146         countingStream->write((uint64_t*)&cgen_var_826, 1 * 8);
12147         uint64_t cgen_var_827;
12148         countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_827, 1);
12149         countingStream->write((uint64_t*)&cgen_var_827, 1 * 8);
12150         countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
12151         uint64_t cgen_var_828;
12152         countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_828, 1);
12153         countingStream->write((uint64_t*)&cgen_var_828, 1 * 8);
12154         uint64_t cgen_var_829;
12155         countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_829, 1);
12156         countingStream->write((uint64_t*)&cgen_var_829, 1 * 8);
12157         countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
12158     }
12159     uint32_t packetSize_vkAcquireNextImageKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12160     countingStream->rewind();
12161     uint32_t opcode_vkAcquireNextImageKHR = OP_vkAcquireNextImageKHR;
12162     stream->write(&opcode_vkAcquireNextImageKHR, sizeof(uint32_t));
12163     stream->write(&packetSize_vkAcquireNextImageKHR, sizeof(uint32_t));
12164     uint64_t cgen_var_830;
12165     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_830, 1);
12166     stream->write((uint64_t*)&cgen_var_830, 1 * 8);
12167     uint64_t cgen_var_831;
12168     stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_831, 1);
12169     stream->write((uint64_t*)&cgen_var_831, 1 * 8);
12170     stream->write((uint64_t*)&local_timeout, sizeof(uint64_t));
12171     uint64_t cgen_var_832;
12172     stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_832, 1);
12173     stream->write((uint64_t*)&cgen_var_832, 1 * 8);
12174     uint64_t cgen_var_833;
12175     stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_833, 1);
12176     stream->write((uint64_t*)&cgen_var_833, 1 * 8);
12177     stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
12178     AEMU_SCOPED_TRACE("vkAcquireNextImageKHR readParams");
12179     stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
12180     AEMU_SCOPED_TRACE("vkAcquireNextImageKHR returnUnmarshal");
12181     VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0;
12182     stream->read(&vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult));
12183     countingStream->clearPool();
12184     stream->clearPool();
12185     pool->freeAll();
12186     mImpl->log("finish vkAcquireNextImageKHR");;
12187     return vkAcquireNextImageKHR_VkResult_return;
12188 }
12189 
vkQueuePresentKHR(VkQueue queue,const VkPresentInfoKHR * pPresentInfo)12190 VkResult VkEncoder::vkQueuePresentKHR(
12191     VkQueue queue,
12192     const VkPresentInfoKHR* pPresentInfo)
12193 {
12194     AEMU_SCOPED_TRACE("vkQueuePresentKHR encode");
12195     mImpl->log("start vkQueuePresentKHR");
12196     auto stream = mImpl->stream();
12197     auto countingStream = mImpl->countingStream();
12198     auto resources = mImpl->resources();
12199     auto pool = mImpl->pool();
12200     stream->setHandleMapping(resources->unwrapMapping());
12201     VkQueue local_queue;
12202     VkPresentInfoKHR* local_pPresentInfo;
12203     local_queue = queue;
12204     local_pPresentInfo = nullptr;
12205     if (pPresentInfo)
12206     {
12207         local_pPresentInfo = (VkPresentInfoKHR*)pool->alloc(sizeof(const VkPresentInfoKHR));
12208         deepcopy_VkPresentInfoKHR(pool, pPresentInfo, (VkPresentInfoKHR*)(local_pPresentInfo));
12209     }
12210     if (local_pPresentInfo)
12211     {
12212         transform_tohost_VkPresentInfoKHR(mImpl->resources(), (VkPresentInfoKHR*)(local_pPresentInfo));
12213     }
12214     countingStream->rewind();
12215     {
12216         uint64_t cgen_var_834;
12217         countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_834, 1);
12218         countingStream->write((uint64_t*)&cgen_var_834, 1 * 8);
12219         marshal_VkPresentInfoKHR(countingStream, (VkPresentInfoKHR*)(local_pPresentInfo));
12220     }
12221     uint32_t packetSize_vkQueuePresentKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12222     countingStream->rewind();
12223     uint32_t opcode_vkQueuePresentKHR = OP_vkQueuePresentKHR;
12224     stream->write(&opcode_vkQueuePresentKHR, sizeof(uint32_t));
12225     stream->write(&packetSize_vkQueuePresentKHR, sizeof(uint32_t));
12226     uint64_t cgen_var_835;
12227     stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_835, 1);
12228     stream->write((uint64_t*)&cgen_var_835, 1 * 8);
12229     marshal_VkPresentInfoKHR(stream, (VkPresentInfoKHR*)(local_pPresentInfo));
12230     AEMU_SCOPED_TRACE("vkQueuePresentKHR readParams");
12231     AEMU_SCOPED_TRACE("vkQueuePresentKHR returnUnmarshal");
12232     VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0;
12233     stream->read(&vkQueuePresentKHR_VkResult_return, sizeof(VkResult));
12234     countingStream->clearPool();
12235     stream->clearPool();
12236     pool->freeAll();
12237     mImpl->log("finish vkQueuePresentKHR");;
12238     return vkQueuePresentKHR_VkResult_return;
12239 }
12240 
vkGetDeviceGroupPresentCapabilitiesKHR(VkDevice device,VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities)12241 VkResult VkEncoder::vkGetDeviceGroupPresentCapabilitiesKHR(
12242     VkDevice device,
12243     VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
12244 {
12245     AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR encode");
12246     mImpl->log("start vkGetDeviceGroupPresentCapabilitiesKHR");
12247     auto stream = mImpl->stream();
12248     auto countingStream = mImpl->countingStream();
12249     auto resources = mImpl->resources();
12250     auto pool = mImpl->pool();
12251     stream->setHandleMapping(resources->unwrapMapping());
12252     VkDevice local_device;
12253     local_device = device;
12254     countingStream->rewind();
12255     {
12256         uint64_t cgen_var_836;
12257         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_836, 1);
12258         countingStream->write((uint64_t*)&cgen_var_836, 1 * 8);
12259         marshal_VkDeviceGroupPresentCapabilitiesKHR(countingStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
12260     }
12261     uint32_t packetSize_vkGetDeviceGroupPresentCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12262     countingStream->rewind();
12263     uint32_t opcode_vkGetDeviceGroupPresentCapabilitiesKHR = OP_vkGetDeviceGroupPresentCapabilitiesKHR;
12264     stream->write(&opcode_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
12265     stream->write(&packetSize_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t));
12266     uint64_t cgen_var_837;
12267     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_837, 1);
12268     stream->write((uint64_t*)&cgen_var_837, 1 * 8);
12269     marshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
12270     AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR readParams");
12271     unmarshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
12272     if (pDeviceGroupPresentCapabilities)
12273     {
12274         transform_fromhost_VkDeviceGroupPresentCapabilitiesKHR(mImpl->resources(), (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities));
12275     }
12276     AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR returnUnmarshal");
12277     VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0;
12278     stream->read(&vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult));
12279     countingStream->clearPool();
12280     stream->clearPool();
12281     pool->freeAll();
12282     mImpl->log("finish vkGetDeviceGroupPresentCapabilitiesKHR");;
12283     return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return;
12284 }
12285 
vkGetDeviceGroupSurfacePresentModesKHR(VkDevice device,VkSurfaceKHR surface,VkDeviceGroupPresentModeFlagsKHR * pModes)12286 VkResult VkEncoder::vkGetDeviceGroupSurfacePresentModesKHR(
12287     VkDevice device,
12288     VkSurfaceKHR surface,
12289     VkDeviceGroupPresentModeFlagsKHR* pModes)
12290 {
12291     AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR encode");
12292     mImpl->log("start vkGetDeviceGroupSurfacePresentModesKHR");
12293     auto stream = mImpl->stream();
12294     auto countingStream = mImpl->countingStream();
12295     auto resources = mImpl->resources();
12296     auto pool = mImpl->pool();
12297     stream->setHandleMapping(resources->unwrapMapping());
12298     VkDevice local_device;
12299     VkSurfaceKHR local_surface;
12300     local_device = device;
12301     local_surface = surface;
12302     countingStream->rewind();
12303     {
12304         uint64_t cgen_var_838;
12305         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_838, 1);
12306         countingStream->write((uint64_t*)&cgen_var_838, 1 * 8);
12307         uint64_t cgen_var_839;
12308         countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_839, 1);
12309         countingStream->write((uint64_t*)&cgen_var_839, 1 * 8);
12310         // WARNING PTR CHECK
12311         uint64_t cgen_var_840 = (uint64_t)(uintptr_t)pModes;
12312         countingStream->putBe64(cgen_var_840);
12313         if (pModes)
12314         {
12315             countingStream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
12316         }
12317     }
12318     uint32_t packetSize_vkGetDeviceGroupSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12319     countingStream->rewind();
12320     uint32_t opcode_vkGetDeviceGroupSurfacePresentModesKHR = OP_vkGetDeviceGroupSurfacePresentModesKHR;
12321     stream->write(&opcode_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
12322     stream->write(&packetSize_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t));
12323     uint64_t cgen_var_841;
12324     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_841, 1);
12325     stream->write((uint64_t*)&cgen_var_841, 1 * 8);
12326     uint64_t cgen_var_842;
12327     stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_842, 1);
12328     stream->write((uint64_t*)&cgen_var_842, 1 * 8);
12329     // WARNING PTR CHECK
12330     uint64_t cgen_var_843 = (uint64_t)(uintptr_t)pModes;
12331     stream->putBe64(cgen_var_843);
12332     if (pModes)
12333     {
12334         stream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
12335     }
12336     AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR readParams");
12337     // WARNING PTR CHECK
12338     VkDeviceGroupPresentModeFlagsKHR* check_pModes;
12339     check_pModes = (VkDeviceGroupPresentModeFlagsKHR*)(uintptr_t)stream->getBe64();
12340     if (pModes)
12341     {
12342         if (!(check_pModes))
12343         {
12344             fprintf(stderr, "fatal: pModes inconsistent between guest and host\n");
12345         }
12346         stream->read((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR));
12347     }
12348     AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR returnUnmarshal");
12349     VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0;
12350     stream->read(&vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult));
12351     countingStream->clearPool();
12352     stream->clearPool();
12353     pool->freeAll();
12354     mImpl->log("finish vkGetDeviceGroupSurfacePresentModesKHR");;
12355     return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return;
12356 }
12357 
vkGetPhysicalDevicePresentRectanglesKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,uint32_t * pRectCount,VkRect2D * pRects)12358 VkResult VkEncoder::vkGetPhysicalDevicePresentRectanglesKHR(
12359     VkPhysicalDevice physicalDevice,
12360     VkSurfaceKHR surface,
12361     uint32_t* pRectCount,
12362     VkRect2D* pRects)
12363 {
12364     AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR encode");
12365     mImpl->log("start vkGetPhysicalDevicePresentRectanglesKHR");
12366     auto stream = mImpl->stream();
12367     auto countingStream = mImpl->countingStream();
12368     auto resources = mImpl->resources();
12369     auto pool = mImpl->pool();
12370     stream->setHandleMapping(resources->unwrapMapping());
12371     VkPhysicalDevice local_physicalDevice;
12372     VkSurfaceKHR local_surface;
12373     local_physicalDevice = physicalDevice;
12374     local_surface = surface;
12375     countingStream->rewind();
12376     {
12377         uint64_t cgen_var_845;
12378         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_845, 1);
12379         countingStream->write((uint64_t*)&cgen_var_845, 1 * 8);
12380         uint64_t cgen_var_846;
12381         countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_846, 1);
12382         countingStream->write((uint64_t*)&cgen_var_846, 1 * 8);
12383         // WARNING PTR CHECK
12384         uint64_t cgen_var_847 = (uint64_t)(uintptr_t)pRectCount;
12385         countingStream->putBe64(cgen_var_847);
12386         if (pRectCount)
12387         {
12388             countingStream->write((uint32_t*)pRectCount, sizeof(uint32_t));
12389         }
12390         // WARNING PTR CHECK
12391         uint64_t cgen_var_848 = (uint64_t)(uintptr_t)pRects;
12392         countingStream->putBe64(cgen_var_848);
12393         if (pRects)
12394         {
12395             for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
12396             {
12397                 marshal_VkRect2D(countingStream, (VkRect2D*)(pRects + i));
12398             }
12399         }
12400     }
12401     uint32_t packetSize_vkGetPhysicalDevicePresentRectanglesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12402     countingStream->rewind();
12403     uint32_t opcode_vkGetPhysicalDevicePresentRectanglesKHR = OP_vkGetPhysicalDevicePresentRectanglesKHR;
12404     stream->write(&opcode_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
12405     stream->write(&packetSize_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t));
12406     uint64_t cgen_var_849;
12407     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_849, 1);
12408     stream->write((uint64_t*)&cgen_var_849, 1 * 8);
12409     uint64_t cgen_var_850;
12410     stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_850, 1);
12411     stream->write((uint64_t*)&cgen_var_850, 1 * 8);
12412     // WARNING PTR CHECK
12413     uint64_t cgen_var_851 = (uint64_t)(uintptr_t)pRectCount;
12414     stream->putBe64(cgen_var_851);
12415     if (pRectCount)
12416     {
12417         stream->write((uint32_t*)pRectCount, sizeof(uint32_t));
12418     }
12419     // WARNING PTR CHECK
12420     uint64_t cgen_var_852 = (uint64_t)(uintptr_t)pRects;
12421     stream->putBe64(cgen_var_852);
12422     if (pRects)
12423     {
12424         for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
12425         {
12426             marshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
12427         }
12428     }
12429     AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR readParams");
12430     // WARNING PTR CHECK
12431     uint32_t* check_pRectCount;
12432     check_pRectCount = (uint32_t*)(uintptr_t)stream->getBe64();
12433     if (pRectCount)
12434     {
12435         if (!(check_pRectCount))
12436         {
12437             fprintf(stderr, "fatal: pRectCount inconsistent between guest and host\n");
12438         }
12439         stream->read((uint32_t*)pRectCount, sizeof(uint32_t));
12440     }
12441     // WARNING PTR CHECK
12442     VkRect2D* check_pRects;
12443     check_pRects = (VkRect2D*)(uintptr_t)stream->getBe64();
12444     if (pRects)
12445     {
12446         if (!(check_pRects))
12447         {
12448             fprintf(stderr, "fatal: pRects inconsistent between guest and host\n");
12449         }
12450         for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
12451         {
12452             unmarshal_VkRect2D(stream, (VkRect2D*)(pRects + i));
12453         }
12454     }
12455     if (pRects)
12456     {
12457         for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i)
12458         {
12459             transform_fromhost_VkRect2D(mImpl->resources(), (VkRect2D*)(pRects + i));
12460         }
12461     }
12462     AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR returnUnmarshal");
12463     VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0;
12464     stream->read(&vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult));
12465     countingStream->clearPool();
12466     stream->clearPool();
12467     pool->freeAll();
12468     mImpl->log("finish vkGetPhysicalDevicePresentRectanglesKHR");;
12469     return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return;
12470 }
12471 
vkAcquireNextImage2KHR(VkDevice device,const VkAcquireNextImageInfoKHR * pAcquireInfo,uint32_t * pImageIndex)12472 VkResult VkEncoder::vkAcquireNextImage2KHR(
12473     VkDevice device,
12474     const VkAcquireNextImageInfoKHR* pAcquireInfo,
12475     uint32_t* pImageIndex)
12476 {
12477     AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR encode");
12478     mImpl->log("start vkAcquireNextImage2KHR");
12479     auto stream = mImpl->stream();
12480     auto countingStream = mImpl->countingStream();
12481     auto resources = mImpl->resources();
12482     auto pool = mImpl->pool();
12483     stream->setHandleMapping(resources->unwrapMapping());
12484     VkDevice local_device;
12485     VkAcquireNextImageInfoKHR* local_pAcquireInfo;
12486     local_device = device;
12487     local_pAcquireInfo = nullptr;
12488     if (pAcquireInfo)
12489     {
12490         local_pAcquireInfo = (VkAcquireNextImageInfoKHR*)pool->alloc(sizeof(const VkAcquireNextImageInfoKHR));
12491         deepcopy_VkAcquireNextImageInfoKHR(pool, pAcquireInfo, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
12492     }
12493     if (local_pAcquireInfo)
12494     {
12495         transform_tohost_VkAcquireNextImageInfoKHR(mImpl->resources(), (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
12496     }
12497     countingStream->rewind();
12498     {
12499         uint64_t cgen_var_855;
12500         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_855, 1);
12501         countingStream->write((uint64_t*)&cgen_var_855, 1 * 8);
12502         marshal_VkAcquireNextImageInfoKHR(countingStream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
12503         countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
12504     }
12505     uint32_t packetSize_vkAcquireNextImage2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12506     countingStream->rewind();
12507     uint32_t opcode_vkAcquireNextImage2KHR = OP_vkAcquireNextImage2KHR;
12508     stream->write(&opcode_vkAcquireNextImage2KHR, sizeof(uint32_t));
12509     stream->write(&packetSize_vkAcquireNextImage2KHR, sizeof(uint32_t));
12510     uint64_t cgen_var_856;
12511     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_856, 1);
12512     stream->write((uint64_t*)&cgen_var_856, 1 * 8);
12513     marshal_VkAcquireNextImageInfoKHR(stream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo));
12514     stream->write((uint32_t*)pImageIndex, sizeof(uint32_t));
12515     AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR readParams");
12516     stream->read((uint32_t*)pImageIndex, sizeof(uint32_t));
12517     AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR returnUnmarshal");
12518     VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0;
12519     stream->read(&vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult));
12520     countingStream->clearPool();
12521     stream->clearPool();
12522     pool->freeAll();
12523     mImpl->log("finish vkAcquireNextImage2KHR");;
12524     return vkAcquireNextImage2KHR_VkResult_return;
12525 }
12526 
12527 #endif
12528 #ifdef VK_KHR_display
vkGetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayPropertiesKHR * pProperties)12529 VkResult VkEncoder::vkGetPhysicalDeviceDisplayPropertiesKHR(
12530     VkPhysicalDevice physicalDevice,
12531     uint32_t* pPropertyCount,
12532     VkDisplayPropertiesKHR* pProperties)
12533 {
12534     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR encode");
12535     mImpl->log("start vkGetPhysicalDeviceDisplayPropertiesKHR");
12536     auto stream = mImpl->stream();
12537     auto countingStream = mImpl->countingStream();
12538     auto resources = mImpl->resources();
12539     auto pool = mImpl->pool();
12540     stream->setHandleMapping(resources->unwrapMapping());
12541     VkPhysicalDevice local_physicalDevice;
12542     local_physicalDevice = physicalDevice;
12543     countingStream->rewind();
12544     {
12545         uint64_t cgen_var_857;
12546         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_857, 1);
12547         countingStream->write((uint64_t*)&cgen_var_857, 1 * 8);
12548         // WARNING PTR CHECK
12549         uint64_t cgen_var_858 = (uint64_t)(uintptr_t)pPropertyCount;
12550         countingStream->putBe64(cgen_var_858);
12551         if (pPropertyCount)
12552         {
12553             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12554         }
12555         // WARNING PTR CHECK
12556         uint64_t cgen_var_859 = (uint64_t)(uintptr_t)pProperties;
12557         countingStream->putBe64(cgen_var_859);
12558         if (pProperties)
12559         {
12560             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12561             {
12562                 marshal_VkDisplayPropertiesKHR(countingStream, (VkDisplayPropertiesKHR*)(pProperties + i));
12563             }
12564         }
12565     }
12566     uint32_t packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12567     countingStream->rewind();
12568     uint32_t opcode_vkGetPhysicalDeviceDisplayPropertiesKHR = OP_vkGetPhysicalDeviceDisplayPropertiesKHR;
12569     stream->write(&opcode_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
12570     stream->write(&packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t));
12571     uint64_t cgen_var_860;
12572     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_860, 1);
12573     stream->write((uint64_t*)&cgen_var_860, 1 * 8);
12574     // WARNING PTR CHECK
12575     uint64_t cgen_var_861 = (uint64_t)(uintptr_t)pPropertyCount;
12576     stream->putBe64(cgen_var_861);
12577     if (pPropertyCount)
12578     {
12579         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12580     }
12581     // WARNING PTR CHECK
12582     uint64_t cgen_var_862 = (uint64_t)(uintptr_t)pProperties;
12583     stream->putBe64(cgen_var_862);
12584     if (pProperties)
12585     {
12586         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12587         {
12588             marshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
12589         }
12590     }
12591     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR readParams");
12592     // WARNING PTR CHECK
12593     uint32_t* check_pPropertyCount;
12594     check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
12595     if (pPropertyCount)
12596     {
12597         if (!(check_pPropertyCount))
12598         {
12599             fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12600         }
12601         stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12602     }
12603     // WARNING PTR CHECK
12604     VkDisplayPropertiesKHR* check_pProperties;
12605     check_pProperties = (VkDisplayPropertiesKHR*)(uintptr_t)stream->getBe64();
12606     if (pProperties)
12607     {
12608         if (!(check_pProperties))
12609         {
12610             fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12611         }
12612         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12613         {
12614             unmarshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i));
12615         }
12616     }
12617     if (pProperties)
12618     {
12619         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12620         {
12621             transform_fromhost_VkDisplayPropertiesKHR(mImpl->resources(), (VkDisplayPropertiesKHR*)(pProperties + i));
12622         }
12623     }
12624     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR returnUnmarshal");
12625     VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0;
12626     stream->read(&vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult));
12627     countingStream->clearPool();
12628     stream->clearPool();
12629     pool->freeAll();
12630     mImpl->log("finish vkGetPhysicalDeviceDisplayPropertiesKHR");;
12631     return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return;
12632 }
12633 
vkGetPhysicalDeviceDisplayPlanePropertiesKHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayPlanePropertiesKHR * pProperties)12634 VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
12635     VkPhysicalDevice physicalDevice,
12636     uint32_t* pPropertyCount,
12637     VkDisplayPlanePropertiesKHR* pProperties)
12638 {
12639     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR encode");
12640     mImpl->log("start vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
12641     auto stream = mImpl->stream();
12642     auto countingStream = mImpl->countingStream();
12643     auto resources = mImpl->resources();
12644     auto pool = mImpl->pool();
12645     stream->setHandleMapping(resources->unwrapMapping());
12646     VkPhysicalDevice local_physicalDevice;
12647     local_physicalDevice = physicalDevice;
12648     countingStream->rewind();
12649     {
12650         uint64_t cgen_var_865;
12651         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_865, 1);
12652         countingStream->write((uint64_t*)&cgen_var_865, 1 * 8);
12653         // WARNING PTR CHECK
12654         uint64_t cgen_var_866 = (uint64_t)(uintptr_t)pPropertyCount;
12655         countingStream->putBe64(cgen_var_866);
12656         if (pPropertyCount)
12657         {
12658             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12659         }
12660         // WARNING PTR CHECK
12661         uint64_t cgen_var_867 = (uint64_t)(uintptr_t)pProperties;
12662         countingStream->putBe64(cgen_var_867);
12663         if (pProperties)
12664         {
12665             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12666             {
12667                 marshal_VkDisplayPlanePropertiesKHR(countingStream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12668             }
12669         }
12670     }
12671     uint32_t packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12672     countingStream->rewind();
12673     uint32_t opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR;
12674     stream->write(&opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
12675     stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t));
12676     uint64_t cgen_var_868;
12677     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_868, 1);
12678     stream->write((uint64_t*)&cgen_var_868, 1 * 8);
12679     // WARNING PTR CHECK
12680     uint64_t cgen_var_869 = (uint64_t)(uintptr_t)pPropertyCount;
12681     stream->putBe64(cgen_var_869);
12682     if (pPropertyCount)
12683     {
12684         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12685     }
12686     // WARNING PTR CHECK
12687     uint64_t cgen_var_870 = (uint64_t)(uintptr_t)pProperties;
12688     stream->putBe64(cgen_var_870);
12689     if (pProperties)
12690     {
12691         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12692         {
12693             marshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12694         }
12695     }
12696     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR readParams");
12697     // WARNING PTR CHECK
12698     uint32_t* check_pPropertyCount;
12699     check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
12700     if (pPropertyCount)
12701     {
12702         if (!(check_pPropertyCount))
12703         {
12704             fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12705         }
12706         stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12707     }
12708     // WARNING PTR CHECK
12709     VkDisplayPlanePropertiesKHR* check_pProperties;
12710     check_pProperties = (VkDisplayPlanePropertiesKHR*)(uintptr_t)stream->getBe64();
12711     if (pProperties)
12712     {
12713         if (!(check_pProperties))
12714         {
12715             fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12716         }
12717         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12718         {
12719             unmarshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12720         }
12721     }
12722     if (pProperties)
12723     {
12724         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12725         {
12726             transform_fromhost_VkDisplayPlanePropertiesKHR(mImpl->resources(), (VkDisplayPlanePropertiesKHR*)(pProperties + i));
12727         }
12728     }
12729     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR returnUnmarshal");
12730     VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0;
12731     stream->read(&vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult));
12732     countingStream->clearPool();
12733     stream->clearPool();
12734     pool->freeAll();
12735     mImpl->log("finish vkGetPhysicalDeviceDisplayPlanePropertiesKHR");;
12736     return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return;
12737 }
12738 
vkGetDisplayPlaneSupportedDisplaysKHR(VkPhysicalDevice physicalDevice,uint32_t planeIndex,uint32_t * pDisplayCount,VkDisplayKHR * pDisplays)12739 VkResult VkEncoder::vkGetDisplayPlaneSupportedDisplaysKHR(
12740     VkPhysicalDevice physicalDevice,
12741     uint32_t planeIndex,
12742     uint32_t* pDisplayCount,
12743     VkDisplayKHR* pDisplays)
12744 {
12745     AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR encode");
12746     mImpl->log("start vkGetDisplayPlaneSupportedDisplaysKHR");
12747     auto stream = mImpl->stream();
12748     auto countingStream = mImpl->countingStream();
12749     auto resources = mImpl->resources();
12750     auto pool = mImpl->pool();
12751     stream->setHandleMapping(resources->unwrapMapping());
12752     VkPhysicalDevice local_physicalDevice;
12753     uint32_t local_planeIndex;
12754     local_physicalDevice = physicalDevice;
12755     local_planeIndex = planeIndex;
12756     countingStream->rewind();
12757     {
12758         uint64_t cgen_var_873;
12759         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_873, 1);
12760         countingStream->write((uint64_t*)&cgen_var_873, 1 * 8);
12761         countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
12762         // WARNING PTR CHECK
12763         uint64_t cgen_var_874 = (uint64_t)(uintptr_t)pDisplayCount;
12764         countingStream->putBe64(cgen_var_874);
12765         if (pDisplayCount)
12766         {
12767             countingStream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
12768         }
12769         // WARNING PTR CHECK
12770         uint64_t cgen_var_875 = (uint64_t)(uintptr_t)pDisplays;
12771         countingStream->putBe64(cgen_var_875);
12772         if (pDisplays)
12773         {
12774             if ((*(pDisplayCount)))
12775             {
12776                 uint64_t* cgen_var_876;
12777                 countingStream->alloc((void**)&cgen_var_876, (*(pDisplayCount)) * 8);
12778                 countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_876, (*(pDisplayCount)));
12779                 countingStream->write((uint64_t*)cgen_var_876, (*(pDisplayCount)) * 8);
12780             }
12781         }
12782     }
12783     uint32_t packetSize_vkGetDisplayPlaneSupportedDisplaysKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12784     countingStream->rewind();
12785     uint32_t opcode_vkGetDisplayPlaneSupportedDisplaysKHR = OP_vkGetDisplayPlaneSupportedDisplaysKHR;
12786     stream->write(&opcode_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
12787     stream->write(&packetSize_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t));
12788     uint64_t cgen_var_877;
12789     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_877, 1);
12790     stream->write((uint64_t*)&cgen_var_877, 1 * 8);
12791     stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
12792     // WARNING PTR CHECK
12793     uint64_t cgen_var_878 = (uint64_t)(uintptr_t)pDisplayCount;
12794     stream->putBe64(cgen_var_878);
12795     if (pDisplayCount)
12796     {
12797         stream->write((uint32_t*)pDisplayCount, sizeof(uint32_t));
12798     }
12799     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
12800     // WARNING PTR CHECK
12801     uint64_t cgen_var_879 = (uint64_t)(uintptr_t)pDisplays;
12802     stream->putBe64(cgen_var_879);
12803     if (pDisplays)
12804     {
12805         if ((*(pDisplayCount)))
12806         {
12807             uint64_t* cgen_var_880;
12808             stream->alloc((void**)&cgen_var_880, (*(pDisplayCount)) * 8);
12809             stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_880, (*(pDisplayCount)));
12810             stream->write((uint64_t*)cgen_var_880, (*(pDisplayCount)) * 8);
12811         }
12812     }
12813     stream->setHandleMapping(resources->unwrapMapping());
12814     AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR readParams");
12815     // WARNING PTR CHECK
12816     uint32_t* check_pDisplayCount;
12817     check_pDisplayCount = (uint32_t*)(uintptr_t)stream->getBe64();
12818     if (pDisplayCount)
12819     {
12820         if (!(check_pDisplayCount))
12821         {
12822             fprintf(stderr, "fatal: pDisplayCount inconsistent between guest and host\n");
12823         }
12824         stream->read((uint32_t*)pDisplayCount, sizeof(uint32_t));
12825     }
12826     // WARNING PTR CHECK
12827     VkDisplayKHR* check_pDisplays;
12828     check_pDisplays = (VkDisplayKHR*)(uintptr_t)stream->getBe64();
12829     if (pDisplays)
12830     {
12831         if (!(check_pDisplays))
12832         {
12833             fprintf(stderr, "fatal: pDisplays inconsistent between guest and host\n");
12834         }
12835         if ((*(pDisplayCount)))
12836         {
12837             uint64_t* cgen_var_883;
12838             stream->alloc((void**)&cgen_var_883, (*(pDisplayCount)) * 8);
12839             stream->read((uint64_t*)cgen_var_883, (*(pDisplayCount)) * 8);
12840             stream->handleMapping()->mapHandles_u64_VkDisplayKHR(cgen_var_883, (VkDisplayKHR*)pDisplays, (*(pDisplayCount)));
12841         }
12842     }
12843     AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR returnUnmarshal");
12844     VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0;
12845     stream->read(&vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult));
12846     countingStream->clearPool();
12847     stream->clearPool();
12848     pool->freeAll();
12849     mImpl->log("finish vkGetDisplayPlaneSupportedDisplaysKHR");;
12850     return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return;
12851 }
12852 
vkGetDisplayModePropertiesKHR(VkPhysicalDevice physicalDevice,VkDisplayKHR display,uint32_t * pPropertyCount,VkDisplayModePropertiesKHR * pProperties)12853 VkResult VkEncoder::vkGetDisplayModePropertiesKHR(
12854     VkPhysicalDevice physicalDevice,
12855     VkDisplayKHR display,
12856     uint32_t* pPropertyCount,
12857     VkDisplayModePropertiesKHR* pProperties)
12858 {
12859     AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR encode");
12860     mImpl->log("start vkGetDisplayModePropertiesKHR");
12861     auto stream = mImpl->stream();
12862     auto countingStream = mImpl->countingStream();
12863     auto resources = mImpl->resources();
12864     auto pool = mImpl->pool();
12865     stream->setHandleMapping(resources->unwrapMapping());
12866     VkPhysicalDevice local_physicalDevice;
12867     VkDisplayKHR local_display;
12868     local_physicalDevice = physicalDevice;
12869     local_display = display;
12870     countingStream->rewind();
12871     {
12872         uint64_t cgen_var_884;
12873         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_884, 1);
12874         countingStream->write((uint64_t*)&cgen_var_884, 1 * 8);
12875         uint64_t cgen_var_885;
12876         countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_885, 1);
12877         countingStream->write((uint64_t*)&cgen_var_885, 1 * 8);
12878         // WARNING PTR CHECK
12879         uint64_t cgen_var_886 = (uint64_t)(uintptr_t)pPropertyCount;
12880         countingStream->putBe64(cgen_var_886);
12881         if (pPropertyCount)
12882         {
12883             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12884         }
12885         // WARNING PTR CHECK
12886         uint64_t cgen_var_887 = (uint64_t)(uintptr_t)pProperties;
12887         countingStream->putBe64(cgen_var_887);
12888         if (pProperties)
12889         {
12890             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12891             {
12892                 marshal_VkDisplayModePropertiesKHR(countingStream, (VkDisplayModePropertiesKHR*)(pProperties + i));
12893             }
12894         }
12895     }
12896     uint32_t packetSize_vkGetDisplayModePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
12897     countingStream->rewind();
12898     uint32_t opcode_vkGetDisplayModePropertiesKHR = OP_vkGetDisplayModePropertiesKHR;
12899     stream->write(&opcode_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
12900     stream->write(&packetSize_vkGetDisplayModePropertiesKHR, sizeof(uint32_t));
12901     uint64_t cgen_var_888;
12902     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_888, 1);
12903     stream->write((uint64_t*)&cgen_var_888, 1 * 8);
12904     uint64_t cgen_var_889;
12905     stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_889, 1);
12906     stream->write((uint64_t*)&cgen_var_889, 1 * 8);
12907     // WARNING PTR CHECK
12908     uint64_t cgen_var_890 = (uint64_t)(uintptr_t)pPropertyCount;
12909     stream->putBe64(cgen_var_890);
12910     if (pPropertyCount)
12911     {
12912         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
12913     }
12914     // WARNING PTR CHECK
12915     uint64_t cgen_var_891 = (uint64_t)(uintptr_t)pProperties;
12916     stream->putBe64(cgen_var_891);
12917     if (pProperties)
12918     {
12919         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12920         {
12921             marshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
12922         }
12923     }
12924     AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR readParams");
12925     // WARNING PTR CHECK
12926     uint32_t* check_pPropertyCount;
12927     check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
12928     if (pPropertyCount)
12929     {
12930         if (!(check_pPropertyCount))
12931         {
12932             fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
12933         }
12934         stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
12935     }
12936     // WARNING PTR CHECK
12937     VkDisplayModePropertiesKHR* check_pProperties;
12938     check_pProperties = (VkDisplayModePropertiesKHR*)(uintptr_t)stream->getBe64();
12939     if (pProperties)
12940     {
12941         if (!(check_pProperties))
12942         {
12943             fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
12944         }
12945         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12946         {
12947             unmarshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i));
12948         }
12949     }
12950     if (pProperties)
12951     {
12952         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
12953         {
12954             transform_fromhost_VkDisplayModePropertiesKHR(mImpl->resources(), (VkDisplayModePropertiesKHR*)(pProperties + i));
12955         }
12956     }
12957     AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR returnUnmarshal");
12958     VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0;
12959     stream->read(&vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult));
12960     countingStream->clearPool();
12961     stream->clearPool();
12962     pool->freeAll();
12963     mImpl->log("finish vkGetDisplayModePropertiesKHR");;
12964     return vkGetDisplayModePropertiesKHR_VkResult_return;
12965 }
12966 
vkCreateDisplayModeKHR(VkPhysicalDevice physicalDevice,VkDisplayKHR display,const VkDisplayModeCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDisplayModeKHR * pMode)12967 VkResult VkEncoder::vkCreateDisplayModeKHR(
12968     VkPhysicalDevice physicalDevice,
12969     VkDisplayKHR display,
12970     const VkDisplayModeCreateInfoKHR* pCreateInfo,
12971     const VkAllocationCallbacks* pAllocator,
12972     VkDisplayModeKHR* pMode)
12973 {
12974     AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR encode");
12975     mImpl->log("start vkCreateDisplayModeKHR");
12976     auto stream = mImpl->stream();
12977     auto countingStream = mImpl->countingStream();
12978     auto resources = mImpl->resources();
12979     auto pool = mImpl->pool();
12980     stream->setHandleMapping(resources->unwrapMapping());
12981     VkPhysicalDevice local_physicalDevice;
12982     VkDisplayKHR local_display;
12983     VkDisplayModeCreateInfoKHR* local_pCreateInfo;
12984     VkAllocationCallbacks* local_pAllocator;
12985     local_physicalDevice = physicalDevice;
12986     local_display = display;
12987     local_pCreateInfo = nullptr;
12988     if (pCreateInfo)
12989     {
12990         local_pCreateInfo = (VkDisplayModeCreateInfoKHR*)pool->alloc(sizeof(const VkDisplayModeCreateInfoKHR));
12991         deepcopy_VkDisplayModeCreateInfoKHR(pool, pCreateInfo, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
12992     }
12993     local_pAllocator = nullptr;
12994     if (pAllocator)
12995     {
12996         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
12997         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
12998     }
12999     local_pAllocator = nullptr;
13000     if (local_pCreateInfo)
13001     {
13002         transform_tohost_VkDisplayModeCreateInfoKHR(mImpl->resources(), (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
13003     }
13004     if (local_pAllocator)
13005     {
13006         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
13007     }
13008     countingStream->rewind();
13009     {
13010         uint64_t cgen_var_894;
13011         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_894, 1);
13012         countingStream->write((uint64_t*)&cgen_var_894, 1 * 8);
13013         uint64_t cgen_var_895;
13014         countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_895, 1);
13015         countingStream->write((uint64_t*)&cgen_var_895, 1 * 8);
13016         marshal_VkDisplayModeCreateInfoKHR(countingStream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
13017         // WARNING PTR CHECK
13018         uint64_t cgen_var_896 = (uint64_t)(uintptr_t)local_pAllocator;
13019         countingStream->putBe64(cgen_var_896);
13020         if (local_pAllocator)
13021         {
13022             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
13023         }
13024         uint64_t cgen_var_897;
13025         countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_897, 1);
13026         countingStream->write((uint64_t*)&cgen_var_897, 8);
13027     }
13028     uint32_t packetSize_vkCreateDisplayModeKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13029     countingStream->rewind();
13030     uint32_t opcode_vkCreateDisplayModeKHR = OP_vkCreateDisplayModeKHR;
13031     stream->write(&opcode_vkCreateDisplayModeKHR, sizeof(uint32_t));
13032     stream->write(&packetSize_vkCreateDisplayModeKHR, sizeof(uint32_t));
13033     uint64_t cgen_var_898;
13034     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_898, 1);
13035     stream->write((uint64_t*)&cgen_var_898, 1 * 8);
13036     uint64_t cgen_var_899;
13037     stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_899, 1);
13038     stream->write((uint64_t*)&cgen_var_899, 1 * 8);
13039     marshal_VkDisplayModeCreateInfoKHR(stream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo));
13040     // WARNING PTR CHECK
13041     uint64_t cgen_var_900 = (uint64_t)(uintptr_t)local_pAllocator;
13042     stream->putBe64(cgen_var_900);
13043     if (local_pAllocator)
13044     {
13045         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
13046     }
13047     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
13048     uint64_t cgen_var_901;
13049     stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_901, 1);
13050     stream->write((uint64_t*)&cgen_var_901, 8);
13051     stream->setHandleMapping(resources->unwrapMapping());
13052     AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR readParams");
13053     stream->setHandleMapping(resources->createMapping());
13054     uint64_t cgen_var_902;
13055     stream->read((uint64_t*)&cgen_var_902, 8);
13056     stream->handleMapping()->mapHandles_u64_VkDisplayModeKHR(&cgen_var_902, (VkDisplayModeKHR*)pMode, 1);
13057     stream->unsetHandleMapping();
13058     AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR returnUnmarshal");
13059     VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0;
13060     stream->read(&vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult));
13061     countingStream->clearPool();
13062     stream->clearPool();
13063     pool->freeAll();
13064     mImpl->log("finish vkCreateDisplayModeKHR");;
13065     return vkCreateDisplayModeKHR_VkResult_return;
13066 }
13067 
vkGetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice physicalDevice,VkDisplayModeKHR mode,uint32_t planeIndex,VkDisplayPlaneCapabilitiesKHR * pCapabilities)13068 VkResult VkEncoder::vkGetDisplayPlaneCapabilitiesKHR(
13069     VkPhysicalDevice physicalDevice,
13070     VkDisplayModeKHR mode,
13071     uint32_t planeIndex,
13072     VkDisplayPlaneCapabilitiesKHR* pCapabilities)
13073 {
13074     AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR encode");
13075     mImpl->log("start vkGetDisplayPlaneCapabilitiesKHR");
13076     auto stream = mImpl->stream();
13077     auto countingStream = mImpl->countingStream();
13078     auto resources = mImpl->resources();
13079     auto pool = mImpl->pool();
13080     stream->setHandleMapping(resources->unwrapMapping());
13081     VkPhysicalDevice local_physicalDevice;
13082     VkDisplayModeKHR local_mode;
13083     uint32_t local_planeIndex;
13084     local_physicalDevice = physicalDevice;
13085     local_mode = mode;
13086     local_planeIndex = planeIndex;
13087     countingStream->rewind();
13088     {
13089         uint64_t cgen_var_903;
13090         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_903, 1);
13091         countingStream->write((uint64_t*)&cgen_var_903, 1 * 8);
13092         uint64_t cgen_var_904;
13093         countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_904, 1);
13094         countingStream->write((uint64_t*)&cgen_var_904, 1 * 8);
13095         countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
13096         marshal_VkDisplayPlaneCapabilitiesKHR(countingStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
13097     }
13098     uint32_t packetSize_vkGetDisplayPlaneCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13099     countingStream->rewind();
13100     uint32_t opcode_vkGetDisplayPlaneCapabilitiesKHR = OP_vkGetDisplayPlaneCapabilitiesKHR;
13101     stream->write(&opcode_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
13102     stream->write(&packetSize_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t));
13103     uint64_t cgen_var_905;
13104     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_905, 1);
13105     stream->write((uint64_t*)&cgen_var_905, 1 * 8);
13106     uint64_t cgen_var_906;
13107     stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_906, 1);
13108     stream->write((uint64_t*)&cgen_var_906, 1 * 8);
13109     stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t));
13110     marshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
13111     AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR readParams");
13112     unmarshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
13113     if (pCapabilities)
13114     {
13115         transform_fromhost_VkDisplayPlaneCapabilitiesKHR(mImpl->resources(), (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities));
13116     }
13117     AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR returnUnmarshal");
13118     VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0;
13119     stream->read(&vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult));
13120     countingStream->clearPool();
13121     stream->clearPool();
13122     pool->freeAll();
13123     mImpl->log("finish vkGetDisplayPlaneCapabilitiesKHR");;
13124     return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return;
13125 }
13126 
vkCreateDisplayPlaneSurfaceKHR(VkInstance instance,const VkDisplaySurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)13127 VkResult VkEncoder::vkCreateDisplayPlaneSurfaceKHR(
13128     VkInstance instance,
13129     const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
13130     const VkAllocationCallbacks* pAllocator,
13131     VkSurfaceKHR* pSurface)
13132 {
13133     AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR encode");
13134     mImpl->log("start vkCreateDisplayPlaneSurfaceKHR");
13135     auto stream = mImpl->stream();
13136     auto countingStream = mImpl->countingStream();
13137     auto resources = mImpl->resources();
13138     auto pool = mImpl->pool();
13139     stream->setHandleMapping(resources->unwrapMapping());
13140     VkInstance local_instance;
13141     VkDisplaySurfaceCreateInfoKHR* local_pCreateInfo;
13142     VkAllocationCallbacks* local_pAllocator;
13143     local_instance = instance;
13144     local_pCreateInfo = nullptr;
13145     if (pCreateInfo)
13146     {
13147         local_pCreateInfo = (VkDisplaySurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkDisplaySurfaceCreateInfoKHR));
13148         deepcopy_VkDisplaySurfaceCreateInfoKHR(pool, pCreateInfo, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
13149     }
13150     local_pAllocator = nullptr;
13151     if (pAllocator)
13152     {
13153         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13154         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13155     }
13156     local_pAllocator = nullptr;
13157     if (local_pCreateInfo)
13158     {
13159         transform_tohost_VkDisplaySurfaceCreateInfoKHR(mImpl->resources(), (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
13160     }
13161     if (local_pAllocator)
13162     {
13163         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
13164     }
13165     countingStream->rewind();
13166     {
13167         uint64_t cgen_var_907;
13168         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_907, 1);
13169         countingStream->write((uint64_t*)&cgen_var_907, 1 * 8);
13170         marshal_VkDisplaySurfaceCreateInfoKHR(countingStream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
13171         // WARNING PTR CHECK
13172         uint64_t cgen_var_908 = (uint64_t)(uintptr_t)local_pAllocator;
13173         countingStream->putBe64(cgen_var_908);
13174         if (local_pAllocator)
13175         {
13176             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
13177         }
13178         uint64_t cgen_var_909;
13179         countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_909, 1);
13180         countingStream->write((uint64_t*)&cgen_var_909, 8);
13181     }
13182     uint32_t packetSize_vkCreateDisplayPlaneSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13183     countingStream->rewind();
13184     uint32_t opcode_vkCreateDisplayPlaneSurfaceKHR = OP_vkCreateDisplayPlaneSurfaceKHR;
13185     stream->write(&opcode_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
13186     stream->write(&packetSize_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t));
13187     uint64_t cgen_var_910;
13188     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_910, 1);
13189     stream->write((uint64_t*)&cgen_var_910, 1 * 8);
13190     marshal_VkDisplaySurfaceCreateInfoKHR(stream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo));
13191     // WARNING PTR CHECK
13192     uint64_t cgen_var_911 = (uint64_t)(uintptr_t)local_pAllocator;
13193     stream->putBe64(cgen_var_911);
13194     if (local_pAllocator)
13195     {
13196         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
13197     }
13198     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
13199     uint64_t cgen_var_912;
13200     stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_912, 1);
13201     stream->write((uint64_t*)&cgen_var_912, 8);
13202     stream->setHandleMapping(resources->unwrapMapping());
13203     AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR readParams");
13204     uint64_t cgen_var_913;
13205     stream->read((uint64_t*)&cgen_var_913, 8);
13206     stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_913, (VkSurfaceKHR*)pSurface, 1);
13207     AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR returnUnmarshal");
13208     VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0;
13209     stream->read(&vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult));
13210     countingStream->clearPool();
13211     stream->clearPool();
13212     pool->freeAll();
13213     mImpl->log("finish vkCreateDisplayPlaneSurfaceKHR");;
13214     return vkCreateDisplayPlaneSurfaceKHR_VkResult_return;
13215 }
13216 
13217 #endif
13218 #ifdef VK_KHR_display_swapchain
vkCreateSharedSwapchainsKHR(VkDevice device,uint32_t swapchainCount,const VkSwapchainCreateInfoKHR * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkSwapchainKHR * pSwapchains)13219 VkResult VkEncoder::vkCreateSharedSwapchainsKHR(
13220     VkDevice device,
13221     uint32_t swapchainCount,
13222     const VkSwapchainCreateInfoKHR* pCreateInfos,
13223     const VkAllocationCallbacks* pAllocator,
13224     VkSwapchainKHR* pSwapchains)
13225 {
13226     AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR encode");
13227     mImpl->log("start vkCreateSharedSwapchainsKHR");
13228     auto stream = mImpl->stream();
13229     auto countingStream = mImpl->countingStream();
13230     auto resources = mImpl->resources();
13231     auto pool = mImpl->pool();
13232     stream->setHandleMapping(resources->unwrapMapping());
13233     VkDevice local_device;
13234     uint32_t local_swapchainCount;
13235     VkSwapchainCreateInfoKHR* local_pCreateInfos;
13236     VkAllocationCallbacks* local_pAllocator;
13237     local_device = device;
13238     local_swapchainCount = swapchainCount;
13239     local_pCreateInfos = nullptr;
13240     if (pCreateInfos)
13241     {
13242         local_pCreateInfos = (VkSwapchainCreateInfoKHR*)pool->alloc(((swapchainCount)) * sizeof(const VkSwapchainCreateInfoKHR));
13243         for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
13244         {
13245             deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfos + i, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
13246         }
13247     }
13248     local_pAllocator = nullptr;
13249     if (pAllocator)
13250     {
13251         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13252         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13253     }
13254     local_pAllocator = nullptr;
13255     if (local_pCreateInfos)
13256     {
13257         for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
13258         {
13259             transform_tohost_VkSwapchainCreateInfoKHR(mImpl->resources(), (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
13260         }
13261     }
13262     if (local_pAllocator)
13263     {
13264         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
13265     }
13266     countingStream->rewind();
13267     {
13268         uint64_t cgen_var_914;
13269         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_914, 1);
13270         countingStream->write((uint64_t*)&cgen_var_914, 1 * 8);
13271         countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
13272         for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
13273         {
13274             marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
13275         }
13276         // WARNING PTR CHECK
13277         uint64_t cgen_var_915 = (uint64_t)(uintptr_t)local_pAllocator;
13278         countingStream->putBe64(cgen_var_915);
13279         if (local_pAllocator)
13280         {
13281             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
13282         }
13283         if (((swapchainCount)))
13284         {
13285             uint64_t* cgen_var_916;
13286             countingStream->alloc((void**)&cgen_var_916, ((swapchainCount)) * 8);
13287             countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_916, ((swapchainCount)));
13288             countingStream->write((uint64_t*)cgen_var_916, ((swapchainCount)) * 8);
13289         }
13290     }
13291     uint32_t packetSize_vkCreateSharedSwapchainsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13292     countingStream->rewind();
13293     uint32_t opcode_vkCreateSharedSwapchainsKHR = OP_vkCreateSharedSwapchainsKHR;
13294     stream->write(&opcode_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
13295     stream->write(&packetSize_vkCreateSharedSwapchainsKHR, sizeof(uint32_t));
13296     uint64_t cgen_var_917;
13297     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_917, 1);
13298     stream->write((uint64_t*)&cgen_var_917, 1 * 8);
13299     stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
13300     for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
13301     {
13302         marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i));
13303     }
13304     // WARNING PTR CHECK
13305     uint64_t cgen_var_918 = (uint64_t)(uintptr_t)local_pAllocator;
13306     stream->putBe64(cgen_var_918);
13307     if (local_pAllocator)
13308     {
13309         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
13310     }
13311     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
13312     if (((swapchainCount)))
13313     {
13314         uint64_t* cgen_var_919;
13315         stream->alloc((void**)&cgen_var_919, ((swapchainCount)) * 8);
13316         stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_919, ((swapchainCount)));
13317         stream->write((uint64_t*)cgen_var_919, ((swapchainCount)) * 8);
13318     }
13319     stream->setHandleMapping(resources->unwrapMapping());
13320     AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR readParams");
13321     if (((swapchainCount)))
13322     {
13323         uint64_t* cgen_var_920;
13324         stream->alloc((void**)&cgen_var_920, ((swapchainCount)) * 8);
13325         stream->read((uint64_t*)cgen_var_920, ((swapchainCount)) * 8);
13326         stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(cgen_var_920, (VkSwapchainKHR*)pSwapchains, ((swapchainCount)));
13327     }
13328     AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR returnUnmarshal");
13329     VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0;
13330     stream->read(&vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult));
13331     countingStream->clearPool();
13332     stream->clearPool();
13333     pool->freeAll();
13334     mImpl->log("finish vkCreateSharedSwapchainsKHR");;
13335     return vkCreateSharedSwapchainsKHR_VkResult_return;
13336 }
13337 
13338 #endif
13339 #ifdef VK_KHR_xlib_surface
vkCreateXlibSurfaceKHR(VkInstance instance,const VkXlibSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)13340 VkResult VkEncoder::vkCreateXlibSurfaceKHR(
13341     VkInstance instance,
13342     const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
13343     const VkAllocationCallbacks* pAllocator,
13344     VkSurfaceKHR* pSurface)
13345 {
13346     AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR encode");
13347     mImpl->log("start vkCreateXlibSurfaceKHR");
13348     auto stream = mImpl->stream();
13349     auto countingStream = mImpl->countingStream();
13350     auto resources = mImpl->resources();
13351     auto pool = mImpl->pool();
13352     stream->setHandleMapping(resources->unwrapMapping());
13353     VkInstance local_instance;
13354     VkXlibSurfaceCreateInfoKHR* local_pCreateInfo;
13355     VkAllocationCallbacks* local_pAllocator;
13356     local_instance = instance;
13357     local_pCreateInfo = nullptr;
13358     if (pCreateInfo)
13359     {
13360         local_pCreateInfo = (VkXlibSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXlibSurfaceCreateInfoKHR));
13361         deepcopy_VkXlibSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
13362     }
13363     local_pAllocator = nullptr;
13364     if (pAllocator)
13365     {
13366         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13367         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13368     }
13369     local_pAllocator = nullptr;
13370     if (local_pCreateInfo)
13371     {
13372         transform_tohost_VkXlibSurfaceCreateInfoKHR(mImpl->resources(), (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
13373     }
13374     if (local_pAllocator)
13375     {
13376         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
13377     }
13378     countingStream->rewind();
13379     {
13380         uint64_t cgen_var_921;
13381         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_921, 1);
13382         countingStream->write((uint64_t*)&cgen_var_921, 1 * 8);
13383         marshal_VkXlibSurfaceCreateInfoKHR(countingStream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
13384         // WARNING PTR CHECK
13385         uint64_t cgen_var_922 = (uint64_t)(uintptr_t)local_pAllocator;
13386         countingStream->putBe64(cgen_var_922);
13387         if (local_pAllocator)
13388         {
13389             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
13390         }
13391         uint64_t cgen_var_923;
13392         countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_923, 1);
13393         countingStream->write((uint64_t*)&cgen_var_923, 8);
13394     }
13395     uint32_t packetSize_vkCreateXlibSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13396     countingStream->rewind();
13397     uint32_t opcode_vkCreateXlibSurfaceKHR = OP_vkCreateXlibSurfaceKHR;
13398     stream->write(&opcode_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
13399     stream->write(&packetSize_vkCreateXlibSurfaceKHR, sizeof(uint32_t));
13400     uint64_t cgen_var_924;
13401     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_924, 1);
13402     stream->write((uint64_t*)&cgen_var_924, 1 * 8);
13403     marshal_VkXlibSurfaceCreateInfoKHR(stream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo));
13404     // WARNING PTR CHECK
13405     uint64_t cgen_var_925 = (uint64_t)(uintptr_t)local_pAllocator;
13406     stream->putBe64(cgen_var_925);
13407     if (local_pAllocator)
13408     {
13409         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
13410     }
13411     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
13412     uint64_t cgen_var_926;
13413     stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_926, 1);
13414     stream->write((uint64_t*)&cgen_var_926, 8);
13415     stream->setHandleMapping(resources->unwrapMapping());
13416     AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR readParams");
13417     uint64_t cgen_var_927;
13418     stream->read((uint64_t*)&cgen_var_927, 8);
13419     stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_927, (VkSurfaceKHR*)pSurface, 1);
13420     AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR returnUnmarshal");
13421     VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0;
13422     stream->read(&vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult));
13423     countingStream->clearPool();
13424     stream->clearPool();
13425     pool->freeAll();
13426     mImpl->log("finish vkCreateXlibSurfaceKHR");;
13427     return vkCreateXlibSurfaceKHR_VkResult_return;
13428 }
13429 
vkGetPhysicalDeviceXlibPresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,Display * dpy,VisualID visualID)13430 VkBool32 VkEncoder::vkGetPhysicalDeviceXlibPresentationSupportKHR(
13431     VkPhysicalDevice physicalDevice,
13432     uint32_t queueFamilyIndex,
13433     Display* dpy,
13434     VisualID visualID)
13435 {
13436     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR encode");
13437     mImpl->log("start vkGetPhysicalDeviceXlibPresentationSupportKHR");
13438     auto stream = mImpl->stream();
13439     auto countingStream = mImpl->countingStream();
13440     auto resources = mImpl->resources();
13441     auto pool = mImpl->pool();
13442     stream->setHandleMapping(resources->unwrapMapping());
13443     VkPhysicalDevice local_physicalDevice;
13444     uint32_t local_queueFamilyIndex;
13445     VisualID local_visualID;
13446     local_physicalDevice = physicalDevice;
13447     local_queueFamilyIndex = queueFamilyIndex;
13448     local_visualID = visualID;
13449     countingStream->rewind();
13450     {
13451         uint64_t cgen_var_928;
13452         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_928, 1);
13453         countingStream->write((uint64_t*)&cgen_var_928, 1 * 8);
13454         countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
13455         countingStream->write((Display*)dpy, sizeof(Display));
13456         countingStream->write((VisualID*)&local_visualID, sizeof(VisualID));
13457     }
13458     uint32_t packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13459     countingStream->rewind();
13460     uint32_t opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR = OP_vkGetPhysicalDeviceXlibPresentationSupportKHR;
13461     stream->write(&opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
13462     stream->write(&packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t));
13463     uint64_t cgen_var_929;
13464     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_929, 1);
13465     stream->write((uint64_t*)&cgen_var_929, 1 * 8);
13466     stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
13467     stream->write((Display*)dpy, sizeof(Display));
13468     stream->write((VisualID*)&local_visualID, sizeof(VisualID));
13469     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR readParams");
13470     stream->read((Display*)dpy, sizeof(Display));
13471     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR returnUnmarshal");
13472     VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13473     stream->read(&vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
13474     countingStream->clearPool();
13475     stream->clearPool();
13476     pool->freeAll();
13477     mImpl->log("finish vkGetPhysicalDeviceXlibPresentationSupportKHR");;
13478     return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return;
13479 }
13480 
13481 #endif
13482 #ifdef VK_KHR_xcb_surface
vkCreateXcbSurfaceKHR(VkInstance instance,const VkXcbSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)13483 VkResult VkEncoder::vkCreateXcbSurfaceKHR(
13484     VkInstance instance,
13485     const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
13486     const VkAllocationCallbacks* pAllocator,
13487     VkSurfaceKHR* pSurface)
13488 {
13489     AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR encode");
13490     mImpl->log("start vkCreateXcbSurfaceKHR");
13491     auto stream = mImpl->stream();
13492     auto countingStream = mImpl->countingStream();
13493     auto resources = mImpl->resources();
13494     auto pool = mImpl->pool();
13495     stream->setHandleMapping(resources->unwrapMapping());
13496     VkInstance local_instance;
13497     VkXcbSurfaceCreateInfoKHR* local_pCreateInfo;
13498     VkAllocationCallbacks* local_pAllocator;
13499     local_instance = instance;
13500     local_pCreateInfo = nullptr;
13501     if (pCreateInfo)
13502     {
13503         local_pCreateInfo = (VkXcbSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXcbSurfaceCreateInfoKHR));
13504         deepcopy_VkXcbSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
13505     }
13506     local_pAllocator = nullptr;
13507     if (pAllocator)
13508     {
13509         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13510         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13511     }
13512     local_pAllocator = nullptr;
13513     if (local_pCreateInfo)
13514     {
13515         transform_tohost_VkXcbSurfaceCreateInfoKHR(mImpl->resources(), (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
13516     }
13517     if (local_pAllocator)
13518     {
13519         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
13520     }
13521     countingStream->rewind();
13522     {
13523         uint64_t cgen_var_930;
13524         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_930, 1);
13525         countingStream->write((uint64_t*)&cgen_var_930, 1 * 8);
13526         marshal_VkXcbSurfaceCreateInfoKHR(countingStream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
13527         // WARNING PTR CHECK
13528         uint64_t cgen_var_931 = (uint64_t)(uintptr_t)local_pAllocator;
13529         countingStream->putBe64(cgen_var_931);
13530         if (local_pAllocator)
13531         {
13532             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
13533         }
13534         uint64_t cgen_var_932;
13535         countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_932, 1);
13536         countingStream->write((uint64_t*)&cgen_var_932, 8);
13537     }
13538     uint32_t packetSize_vkCreateXcbSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13539     countingStream->rewind();
13540     uint32_t opcode_vkCreateXcbSurfaceKHR = OP_vkCreateXcbSurfaceKHR;
13541     stream->write(&opcode_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
13542     stream->write(&packetSize_vkCreateXcbSurfaceKHR, sizeof(uint32_t));
13543     uint64_t cgen_var_933;
13544     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_933, 1);
13545     stream->write((uint64_t*)&cgen_var_933, 1 * 8);
13546     marshal_VkXcbSurfaceCreateInfoKHR(stream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo));
13547     // WARNING PTR CHECK
13548     uint64_t cgen_var_934 = (uint64_t)(uintptr_t)local_pAllocator;
13549     stream->putBe64(cgen_var_934);
13550     if (local_pAllocator)
13551     {
13552         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
13553     }
13554     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
13555     uint64_t cgen_var_935;
13556     stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_935, 1);
13557     stream->write((uint64_t*)&cgen_var_935, 8);
13558     stream->setHandleMapping(resources->unwrapMapping());
13559     AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR readParams");
13560     uint64_t cgen_var_936;
13561     stream->read((uint64_t*)&cgen_var_936, 8);
13562     stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_936, (VkSurfaceKHR*)pSurface, 1);
13563     AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR returnUnmarshal");
13564     VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0;
13565     stream->read(&vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult));
13566     countingStream->clearPool();
13567     stream->clearPool();
13568     pool->freeAll();
13569     mImpl->log("finish vkCreateXcbSurfaceKHR");;
13570     return vkCreateXcbSurfaceKHR_VkResult_return;
13571 }
13572 
vkGetPhysicalDeviceXcbPresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,xcb_connection_t * connection,xcb_visualid_t visual_id)13573 VkBool32 VkEncoder::vkGetPhysicalDeviceXcbPresentationSupportKHR(
13574     VkPhysicalDevice physicalDevice,
13575     uint32_t queueFamilyIndex,
13576     xcb_connection_t* connection,
13577     xcb_visualid_t visual_id)
13578 {
13579     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR encode");
13580     mImpl->log("start vkGetPhysicalDeviceXcbPresentationSupportKHR");
13581     auto stream = mImpl->stream();
13582     auto countingStream = mImpl->countingStream();
13583     auto resources = mImpl->resources();
13584     auto pool = mImpl->pool();
13585     stream->setHandleMapping(resources->unwrapMapping());
13586     VkPhysicalDevice local_physicalDevice;
13587     uint32_t local_queueFamilyIndex;
13588     xcb_visualid_t local_visual_id;
13589     local_physicalDevice = physicalDevice;
13590     local_queueFamilyIndex = queueFamilyIndex;
13591     local_visual_id = visual_id;
13592     countingStream->rewind();
13593     {
13594         uint64_t cgen_var_937;
13595         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_937, 1);
13596         countingStream->write((uint64_t*)&cgen_var_937, 1 * 8);
13597         countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
13598         countingStream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
13599         countingStream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
13600     }
13601     uint32_t packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13602     countingStream->rewind();
13603     uint32_t opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR = OP_vkGetPhysicalDeviceXcbPresentationSupportKHR;
13604     stream->write(&opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
13605     stream->write(&packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t));
13606     uint64_t cgen_var_938;
13607     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_938, 1);
13608     stream->write((uint64_t*)&cgen_var_938, 1 * 8);
13609     stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
13610     stream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t));
13611     stream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t));
13612     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR readParams");
13613     stream->read((xcb_connection_t*)connection, sizeof(xcb_connection_t));
13614     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR returnUnmarshal");
13615     VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13616     stream->read(&vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
13617     countingStream->clearPool();
13618     stream->clearPool();
13619     pool->freeAll();
13620     mImpl->log("finish vkGetPhysicalDeviceXcbPresentationSupportKHR");;
13621     return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return;
13622 }
13623 
13624 #endif
13625 #ifdef VK_KHR_wayland_surface
vkCreateWaylandSurfaceKHR(VkInstance instance,const VkWaylandSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)13626 VkResult VkEncoder::vkCreateWaylandSurfaceKHR(
13627     VkInstance instance,
13628     const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
13629     const VkAllocationCallbacks* pAllocator,
13630     VkSurfaceKHR* pSurface)
13631 {
13632     AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR encode");
13633     mImpl->log("start vkCreateWaylandSurfaceKHR");
13634     auto stream = mImpl->stream();
13635     auto countingStream = mImpl->countingStream();
13636     auto resources = mImpl->resources();
13637     auto pool = mImpl->pool();
13638     stream->setHandleMapping(resources->unwrapMapping());
13639     VkInstance local_instance;
13640     VkWaylandSurfaceCreateInfoKHR* local_pCreateInfo;
13641     VkAllocationCallbacks* local_pAllocator;
13642     local_instance = instance;
13643     local_pCreateInfo = nullptr;
13644     if (pCreateInfo)
13645     {
13646         local_pCreateInfo = (VkWaylandSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWaylandSurfaceCreateInfoKHR));
13647         deepcopy_VkWaylandSurfaceCreateInfoKHR(pool, pCreateInfo, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
13648     }
13649     local_pAllocator = nullptr;
13650     if (pAllocator)
13651     {
13652         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13653         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13654     }
13655     local_pAllocator = nullptr;
13656     if (local_pCreateInfo)
13657     {
13658         transform_tohost_VkWaylandSurfaceCreateInfoKHR(mImpl->resources(), (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
13659     }
13660     if (local_pAllocator)
13661     {
13662         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
13663     }
13664     countingStream->rewind();
13665     {
13666         uint64_t cgen_var_939;
13667         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_939, 1);
13668         countingStream->write((uint64_t*)&cgen_var_939, 1 * 8);
13669         marshal_VkWaylandSurfaceCreateInfoKHR(countingStream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
13670         // WARNING PTR CHECK
13671         uint64_t cgen_var_940 = (uint64_t)(uintptr_t)local_pAllocator;
13672         countingStream->putBe64(cgen_var_940);
13673         if (local_pAllocator)
13674         {
13675             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
13676         }
13677         uint64_t cgen_var_941;
13678         countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_941, 1);
13679         countingStream->write((uint64_t*)&cgen_var_941, 8);
13680     }
13681     uint32_t packetSize_vkCreateWaylandSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13682     countingStream->rewind();
13683     uint32_t opcode_vkCreateWaylandSurfaceKHR = OP_vkCreateWaylandSurfaceKHR;
13684     stream->write(&opcode_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
13685     stream->write(&packetSize_vkCreateWaylandSurfaceKHR, sizeof(uint32_t));
13686     uint64_t cgen_var_942;
13687     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_942, 1);
13688     stream->write((uint64_t*)&cgen_var_942, 1 * 8);
13689     marshal_VkWaylandSurfaceCreateInfoKHR(stream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo));
13690     // WARNING PTR CHECK
13691     uint64_t cgen_var_943 = (uint64_t)(uintptr_t)local_pAllocator;
13692     stream->putBe64(cgen_var_943);
13693     if (local_pAllocator)
13694     {
13695         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
13696     }
13697     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
13698     uint64_t cgen_var_944;
13699     stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_944, 1);
13700     stream->write((uint64_t*)&cgen_var_944, 8);
13701     stream->setHandleMapping(resources->unwrapMapping());
13702     AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR readParams");
13703     uint64_t cgen_var_945;
13704     stream->read((uint64_t*)&cgen_var_945, 8);
13705     stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_945, (VkSurfaceKHR*)pSurface, 1);
13706     AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR returnUnmarshal");
13707     VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0;
13708     stream->read(&vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult));
13709     countingStream->clearPool();
13710     stream->clearPool();
13711     pool->freeAll();
13712     mImpl->log("finish vkCreateWaylandSurfaceKHR");;
13713     return vkCreateWaylandSurfaceKHR_VkResult_return;
13714 }
13715 
vkGetPhysicalDeviceWaylandPresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,wl_display * display)13716 VkBool32 VkEncoder::vkGetPhysicalDeviceWaylandPresentationSupportKHR(
13717     VkPhysicalDevice physicalDevice,
13718     uint32_t queueFamilyIndex,
13719     wl_display* display)
13720 {
13721     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR encode");
13722     mImpl->log("start vkGetPhysicalDeviceWaylandPresentationSupportKHR");
13723     auto stream = mImpl->stream();
13724     auto countingStream = mImpl->countingStream();
13725     auto resources = mImpl->resources();
13726     auto pool = mImpl->pool();
13727     stream->setHandleMapping(resources->unwrapMapping());
13728     VkPhysicalDevice local_physicalDevice;
13729     uint32_t local_queueFamilyIndex;
13730     local_physicalDevice = physicalDevice;
13731     local_queueFamilyIndex = queueFamilyIndex;
13732     countingStream->rewind();
13733     {
13734         uint64_t cgen_var_946;
13735         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_946, 1);
13736         countingStream->write((uint64_t*)&cgen_var_946, 1 * 8);
13737         countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
13738         countingStream->write((wl_display*)display, sizeof(wl_display));
13739     }
13740     uint32_t packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13741     countingStream->rewind();
13742     uint32_t opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR = OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR;
13743     stream->write(&opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
13744     stream->write(&packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t));
13745     uint64_t cgen_var_947;
13746     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_947, 1);
13747     stream->write((uint64_t*)&cgen_var_947, 1 * 8);
13748     stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
13749     stream->write((wl_display*)display, sizeof(wl_display));
13750     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR readParams");
13751     stream->read((wl_display*)display, sizeof(wl_display));
13752     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR returnUnmarshal");
13753     VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13754     stream->read(&vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
13755     countingStream->clearPool();
13756     stream->clearPool();
13757     pool->freeAll();
13758     mImpl->log("finish vkGetPhysicalDeviceWaylandPresentationSupportKHR");;
13759     return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return;
13760 }
13761 
13762 #endif
13763 #ifdef VK_KHR_mir_surface
vkCreateMirSurfaceKHR(VkInstance instance,const VkMirSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)13764 VkResult VkEncoder::vkCreateMirSurfaceKHR(
13765     VkInstance instance,
13766     const VkMirSurfaceCreateInfoKHR* pCreateInfo,
13767     const VkAllocationCallbacks* pAllocator,
13768     VkSurfaceKHR* pSurface)
13769 {
13770     AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR encode");
13771     mImpl->log("start vkCreateMirSurfaceKHR");
13772     auto stream = mImpl->stream();
13773     auto countingStream = mImpl->countingStream();
13774     auto resources = mImpl->resources();
13775     auto pool = mImpl->pool();
13776     stream->setHandleMapping(resources->unwrapMapping());
13777     VkInstance local_instance;
13778     VkMirSurfaceCreateInfoKHR* local_pCreateInfo;
13779     VkAllocationCallbacks* local_pAllocator;
13780     local_instance = instance;
13781     local_pCreateInfo = nullptr;
13782     if (pCreateInfo)
13783     {
13784         local_pCreateInfo = (VkMirSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkMirSurfaceCreateInfoKHR));
13785         deepcopy_VkMirSurfaceCreateInfoKHR(pool, pCreateInfo, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
13786     }
13787     local_pAllocator = nullptr;
13788     if (pAllocator)
13789     {
13790         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13791         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13792     }
13793     local_pAllocator = nullptr;
13794     if (local_pCreateInfo)
13795     {
13796         transform_tohost_VkMirSurfaceCreateInfoKHR(mImpl->resources(), (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
13797     }
13798     if (local_pAllocator)
13799     {
13800         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
13801     }
13802     countingStream->rewind();
13803     {
13804         uint64_t cgen_var_948;
13805         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_948, 1);
13806         countingStream->write((uint64_t*)&cgen_var_948, 1 * 8);
13807         marshal_VkMirSurfaceCreateInfoKHR(countingStream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
13808         // WARNING PTR CHECK
13809         uint64_t cgen_var_949 = (uint64_t)(uintptr_t)local_pAllocator;
13810         countingStream->putBe64(cgen_var_949);
13811         if (local_pAllocator)
13812         {
13813             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
13814         }
13815         uint64_t cgen_var_950;
13816         countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_950, 1);
13817         countingStream->write((uint64_t*)&cgen_var_950, 8);
13818     }
13819     uint32_t packetSize_vkCreateMirSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13820     countingStream->rewind();
13821     uint32_t opcode_vkCreateMirSurfaceKHR = OP_vkCreateMirSurfaceKHR;
13822     stream->write(&opcode_vkCreateMirSurfaceKHR, sizeof(uint32_t));
13823     stream->write(&packetSize_vkCreateMirSurfaceKHR, sizeof(uint32_t));
13824     uint64_t cgen_var_951;
13825     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_951, 1);
13826     stream->write((uint64_t*)&cgen_var_951, 1 * 8);
13827     marshal_VkMirSurfaceCreateInfoKHR(stream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo));
13828     // WARNING PTR CHECK
13829     uint64_t cgen_var_952 = (uint64_t)(uintptr_t)local_pAllocator;
13830     stream->putBe64(cgen_var_952);
13831     if (local_pAllocator)
13832     {
13833         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
13834     }
13835     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
13836     uint64_t cgen_var_953;
13837     stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_953, 1);
13838     stream->write((uint64_t*)&cgen_var_953, 8);
13839     stream->setHandleMapping(resources->unwrapMapping());
13840     AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR readParams");
13841     uint64_t cgen_var_954;
13842     stream->read((uint64_t*)&cgen_var_954, 8);
13843     stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_954, (VkSurfaceKHR*)pSurface, 1);
13844     AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR returnUnmarshal");
13845     VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0;
13846     stream->read(&vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult));
13847     countingStream->clearPool();
13848     stream->clearPool();
13849     pool->freeAll();
13850     mImpl->log("finish vkCreateMirSurfaceKHR");;
13851     return vkCreateMirSurfaceKHR_VkResult_return;
13852 }
13853 
vkGetPhysicalDeviceMirPresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,MirConnection * connection)13854 VkBool32 VkEncoder::vkGetPhysicalDeviceMirPresentationSupportKHR(
13855     VkPhysicalDevice physicalDevice,
13856     uint32_t queueFamilyIndex,
13857     MirConnection* connection)
13858 {
13859     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR encode");
13860     mImpl->log("start vkGetPhysicalDeviceMirPresentationSupportKHR");
13861     auto stream = mImpl->stream();
13862     auto countingStream = mImpl->countingStream();
13863     auto resources = mImpl->resources();
13864     auto pool = mImpl->pool();
13865     stream->setHandleMapping(resources->unwrapMapping());
13866     VkPhysicalDevice local_physicalDevice;
13867     uint32_t local_queueFamilyIndex;
13868     local_physicalDevice = physicalDevice;
13869     local_queueFamilyIndex = queueFamilyIndex;
13870     countingStream->rewind();
13871     {
13872         uint64_t cgen_var_955;
13873         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_955, 1);
13874         countingStream->write((uint64_t*)&cgen_var_955, 1 * 8);
13875         countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
13876         countingStream->write((MirConnection*)connection, sizeof(MirConnection));
13877     }
13878     uint32_t packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13879     countingStream->rewind();
13880     uint32_t opcode_vkGetPhysicalDeviceMirPresentationSupportKHR = OP_vkGetPhysicalDeviceMirPresentationSupportKHR;
13881     stream->write(&opcode_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
13882     stream->write(&packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t));
13883     uint64_t cgen_var_956;
13884     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_956, 1);
13885     stream->write((uint64_t*)&cgen_var_956, 1 * 8);
13886     stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
13887     stream->write((MirConnection*)connection, sizeof(MirConnection));
13888     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR readParams");
13889     stream->read((MirConnection*)connection, sizeof(MirConnection));
13890     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR returnUnmarshal");
13891     VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0;
13892     stream->read(&vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
13893     countingStream->clearPool();
13894     stream->clearPool();
13895     pool->freeAll();
13896     mImpl->log("finish vkGetPhysicalDeviceMirPresentationSupportKHR");;
13897     return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return;
13898 }
13899 
13900 #endif
13901 #ifdef VK_KHR_android_surface
vkCreateAndroidSurfaceKHR(VkInstance instance,const VkAndroidSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)13902 VkResult VkEncoder::vkCreateAndroidSurfaceKHR(
13903     VkInstance instance,
13904     const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
13905     const VkAllocationCallbacks* pAllocator,
13906     VkSurfaceKHR* pSurface)
13907 {
13908     AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR encode");
13909     mImpl->log("start vkCreateAndroidSurfaceKHR");
13910     auto stream = mImpl->stream();
13911     auto countingStream = mImpl->countingStream();
13912     auto resources = mImpl->resources();
13913     auto pool = mImpl->pool();
13914     stream->setHandleMapping(resources->unwrapMapping());
13915     VkInstance local_instance;
13916     VkAndroidSurfaceCreateInfoKHR* local_pCreateInfo;
13917     VkAllocationCallbacks* local_pAllocator;
13918     local_instance = instance;
13919     local_pCreateInfo = nullptr;
13920     if (pCreateInfo)
13921     {
13922         local_pCreateInfo = (VkAndroidSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkAndroidSurfaceCreateInfoKHR));
13923         deepcopy_VkAndroidSurfaceCreateInfoKHR(pool, pCreateInfo, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
13924     }
13925     local_pAllocator = nullptr;
13926     if (pAllocator)
13927     {
13928         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
13929         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
13930     }
13931     local_pAllocator = nullptr;
13932     if (local_pCreateInfo)
13933     {
13934         transform_tohost_VkAndroidSurfaceCreateInfoKHR(mImpl->resources(), (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
13935     }
13936     if (local_pAllocator)
13937     {
13938         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
13939     }
13940     countingStream->rewind();
13941     {
13942         uint64_t cgen_var_957;
13943         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_957, 1);
13944         countingStream->write((uint64_t*)&cgen_var_957, 1 * 8);
13945         marshal_VkAndroidSurfaceCreateInfoKHR(countingStream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
13946         // WARNING PTR CHECK
13947         uint64_t cgen_var_958 = (uint64_t)(uintptr_t)local_pAllocator;
13948         countingStream->putBe64(cgen_var_958);
13949         if (local_pAllocator)
13950         {
13951             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
13952         }
13953         uint64_t cgen_var_959;
13954         countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_959, 1);
13955         countingStream->write((uint64_t*)&cgen_var_959, 8);
13956     }
13957     uint32_t packetSize_vkCreateAndroidSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
13958     countingStream->rewind();
13959     uint32_t opcode_vkCreateAndroidSurfaceKHR = OP_vkCreateAndroidSurfaceKHR;
13960     stream->write(&opcode_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
13961     stream->write(&packetSize_vkCreateAndroidSurfaceKHR, sizeof(uint32_t));
13962     uint64_t cgen_var_960;
13963     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_960, 1);
13964     stream->write((uint64_t*)&cgen_var_960, 1 * 8);
13965     marshal_VkAndroidSurfaceCreateInfoKHR(stream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo));
13966     // WARNING PTR CHECK
13967     uint64_t cgen_var_961 = (uint64_t)(uintptr_t)local_pAllocator;
13968     stream->putBe64(cgen_var_961);
13969     if (local_pAllocator)
13970     {
13971         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
13972     }
13973     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
13974     uint64_t cgen_var_962;
13975     stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_962, 1);
13976     stream->write((uint64_t*)&cgen_var_962, 8);
13977     stream->setHandleMapping(resources->unwrapMapping());
13978     AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR readParams");
13979     uint64_t cgen_var_963;
13980     stream->read((uint64_t*)&cgen_var_963, 8);
13981     stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_963, (VkSurfaceKHR*)pSurface, 1);
13982     AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR returnUnmarshal");
13983     VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
13984     stream->read(&vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult));
13985     countingStream->clearPool();
13986     stream->clearPool();
13987     pool->freeAll();
13988     mImpl->log("finish vkCreateAndroidSurfaceKHR");;
13989     return vkCreateAndroidSurfaceKHR_VkResult_return;
13990 }
13991 
13992 #endif
13993 #ifdef VK_KHR_win32_surface
vkCreateWin32SurfaceKHR(VkInstance instance,const VkWin32SurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)13994 VkResult VkEncoder::vkCreateWin32SurfaceKHR(
13995     VkInstance instance,
13996     const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
13997     const VkAllocationCallbacks* pAllocator,
13998     VkSurfaceKHR* pSurface)
13999 {
14000     AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR encode");
14001     mImpl->log("start vkCreateWin32SurfaceKHR");
14002     auto stream = mImpl->stream();
14003     auto countingStream = mImpl->countingStream();
14004     auto resources = mImpl->resources();
14005     auto pool = mImpl->pool();
14006     stream->setHandleMapping(resources->unwrapMapping());
14007     VkInstance local_instance;
14008     VkWin32SurfaceCreateInfoKHR* local_pCreateInfo;
14009     VkAllocationCallbacks* local_pAllocator;
14010     local_instance = instance;
14011     local_pCreateInfo = nullptr;
14012     if (pCreateInfo)
14013     {
14014         local_pCreateInfo = (VkWin32SurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWin32SurfaceCreateInfoKHR));
14015         deepcopy_VkWin32SurfaceCreateInfoKHR(pool, pCreateInfo, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
14016     }
14017     local_pAllocator = nullptr;
14018     if (pAllocator)
14019     {
14020         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
14021         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
14022     }
14023     local_pAllocator = nullptr;
14024     if (local_pCreateInfo)
14025     {
14026         transform_tohost_VkWin32SurfaceCreateInfoKHR(mImpl->resources(), (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
14027     }
14028     if (local_pAllocator)
14029     {
14030         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
14031     }
14032     countingStream->rewind();
14033     {
14034         uint64_t cgen_var_964;
14035         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_964, 1);
14036         countingStream->write((uint64_t*)&cgen_var_964, 1 * 8);
14037         marshal_VkWin32SurfaceCreateInfoKHR(countingStream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
14038         // WARNING PTR CHECK
14039         uint64_t cgen_var_965 = (uint64_t)(uintptr_t)local_pAllocator;
14040         countingStream->putBe64(cgen_var_965);
14041         if (local_pAllocator)
14042         {
14043             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
14044         }
14045         uint64_t cgen_var_966;
14046         countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_966, 1);
14047         countingStream->write((uint64_t*)&cgen_var_966, 8);
14048     }
14049     uint32_t packetSize_vkCreateWin32SurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14050     countingStream->rewind();
14051     uint32_t opcode_vkCreateWin32SurfaceKHR = OP_vkCreateWin32SurfaceKHR;
14052     stream->write(&opcode_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
14053     stream->write(&packetSize_vkCreateWin32SurfaceKHR, sizeof(uint32_t));
14054     uint64_t cgen_var_967;
14055     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_967, 1);
14056     stream->write((uint64_t*)&cgen_var_967, 1 * 8);
14057     marshal_VkWin32SurfaceCreateInfoKHR(stream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo));
14058     // WARNING PTR CHECK
14059     uint64_t cgen_var_968 = (uint64_t)(uintptr_t)local_pAllocator;
14060     stream->putBe64(cgen_var_968);
14061     if (local_pAllocator)
14062     {
14063         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
14064     }
14065     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
14066     uint64_t cgen_var_969;
14067     stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_969, 1);
14068     stream->write((uint64_t*)&cgen_var_969, 8);
14069     stream->setHandleMapping(resources->unwrapMapping());
14070     AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR readParams");
14071     uint64_t cgen_var_970;
14072     stream->read((uint64_t*)&cgen_var_970, 8);
14073     stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_970, (VkSurfaceKHR*)pSurface, 1);
14074     AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR returnUnmarshal");
14075     VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0;
14076     stream->read(&vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult));
14077     countingStream->clearPool();
14078     stream->clearPool();
14079     pool->freeAll();
14080     mImpl->log("finish vkCreateWin32SurfaceKHR");;
14081     return vkCreateWin32SurfaceKHR_VkResult_return;
14082 }
14083 
vkGetPhysicalDeviceWin32PresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex)14084 VkBool32 VkEncoder::vkGetPhysicalDeviceWin32PresentationSupportKHR(
14085     VkPhysicalDevice physicalDevice,
14086     uint32_t queueFamilyIndex)
14087 {
14088     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR encode");
14089     mImpl->log("start vkGetPhysicalDeviceWin32PresentationSupportKHR");
14090     auto stream = mImpl->stream();
14091     auto countingStream = mImpl->countingStream();
14092     auto resources = mImpl->resources();
14093     auto pool = mImpl->pool();
14094     stream->setHandleMapping(resources->unwrapMapping());
14095     VkPhysicalDevice local_physicalDevice;
14096     uint32_t local_queueFamilyIndex;
14097     local_physicalDevice = physicalDevice;
14098     local_queueFamilyIndex = queueFamilyIndex;
14099     countingStream->rewind();
14100     {
14101         uint64_t cgen_var_971;
14102         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_971, 1);
14103         countingStream->write((uint64_t*)&cgen_var_971, 1 * 8);
14104         countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
14105     }
14106     uint32_t packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14107     countingStream->rewind();
14108     uint32_t opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR = OP_vkGetPhysicalDeviceWin32PresentationSupportKHR;
14109     stream->write(&opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
14110     stream->write(&packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t));
14111     uint64_t cgen_var_972;
14112     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_972, 1);
14113     stream->write((uint64_t*)&cgen_var_972, 1 * 8);
14114     stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t));
14115     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR readParams");
14116     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR returnUnmarshal");
14117     VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0;
14118     stream->read(&vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32));
14119     countingStream->clearPool();
14120     stream->clearPool();
14121     pool->freeAll();
14122     mImpl->log("finish vkGetPhysicalDeviceWin32PresentationSupportKHR");;
14123     return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return;
14124 }
14125 
14126 #endif
14127 #ifdef VK_KHR_sampler_mirror_clamp_to_edge
14128 #endif
14129 #ifdef VK_KHR_multiview
14130 #endif
14131 #ifdef VK_KHR_get_physical_device_properties2
vkGetPhysicalDeviceFeatures2KHR(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures2 * pFeatures)14132 void VkEncoder::vkGetPhysicalDeviceFeatures2KHR(
14133     VkPhysicalDevice physicalDevice,
14134     VkPhysicalDeviceFeatures2* pFeatures)
14135 {
14136     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR encode");
14137     mImpl->log("start vkGetPhysicalDeviceFeatures2KHR");
14138     auto stream = mImpl->stream();
14139     auto countingStream = mImpl->countingStream();
14140     auto resources = mImpl->resources();
14141     auto pool = mImpl->pool();
14142     stream->setHandleMapping(resources->unwrapMapping());
14143     VkPhysicalDevice local_physicalDevice;
14144     local_physicalDevice = physicalDevice;
14145     countingStream->rewind();
14146     {
14147         uint64_t cgen_var_973;
14148         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_973, 1);
14149         countingStream->write((uint64_t*)&cgen_var_973, 1 * 8);
14150         marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures));
14151     }
14152     uint32_t packetSize_vkGetPhysicalDeviceFeatures2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14153     countingStream->rewind();
14154     uint32_t opcode_vkGetPhysicalDeviceFeatures2KHR = OP_vkGetPhysicalDeviceFeatures2KHR;
14155     stream->write(&opcode_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
14156     stream->write(&packetSize_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t));
14157     uint64_t cgen_var_974;
14158     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_974, 1);
14159     stream->write((uint64_t*)&cgen_var_974, 1 * 8);
14160     marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
14161     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR readParams");
14162     unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures));
14163     if (pFeatures)
14164     {
14165         transform_fromhost_VkPhysicalDeviceFeatures2(mImpl->resources(), (VkPhysicalDeviceFeatures2*)(pFeatures));
14166     }
14167     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR returnUnmarshal");
14168     mImpl->log("finish vkGetPhysicalDeviceFeatures2KHR");;
14169 }
14170 
vkGetPhysicalDeviceProperties2KHR(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties2 * pProperties)14171 void VkEncoder::vkGetPhysicalDeviceProperties2KHR(
14172     VkPhysicalDevice physicalDevice,
14173     VkPhysicalDeviceProperties2* pProperties)
14174 {
14175     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR encode");
14176     mImpl->log("start vkGetPhysicalDeviceProperties2KHR");
14177     auto stream = mImpl->stream();
14178     auto countingStream = mImpl->countingStream();
14179     auto resources = mImpl->resources();
14180     auto pool = mImpl->pool();
14181     stream->setHandleMapping(resources->unwrapMapping());
14182     VkPhysicalDevice local_physicalDevice;
14183     local_physicalDevice = physicalDevice;
14184     countingStream->rewind();
14185     {
14186         uint64_t cgen_var_975;
14187         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_975, 1);
14188         countingStream->write((uint64_t*)&cgen_var_975, 1 * 8);
14189         marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties));
14190     }
14191     uint32_t packetSize_vkGetPhysicalDeviceProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14192     countingStream->rewind();
14193     uint32_t opcode_vkGetPhysicalDeviceProperties2KHR = OP_vkGetPhysicalDeviceProperties2KHR;
14194     stream->write(&opcode_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
14195     stream->write(&packetSize_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t));
14196     uint64_t cgen_var_976;
14197     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_976, 1);
14198     stream->write((uint64_t*)&cgen_var_976, 1 * 8);
14199     marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
14200     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR readParams");
14201     unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties));
14202     if (pProperties)
14203     {
14204         transform_fromhost_VkPhysicalDeviceProperties2(mImpl->resources(), (VkPhysicalDeviceProperties2*)(pProperties));
14205     }
14206     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR returnUnmarshal");
14207     mImpl->log("finish vkGetPhysicalDeviceProperties2KHR");;
14208 }
14209 
vkGetPhysicalDeviceFormatProperties2KHR(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties2 * pFormatProperties)14210 void VkEncoder::vkGetPhysicalDeviceFormatProperties2KHR(
14211     VkPhysicalDevice physicalDevice,
14212     VkFormat format,
14213     VkFormatProperties2* pFormatProperties)
14214 {
14215     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR encode");
14216     mImpl->log("start vkGetPhysicalDeviceFormatProperties2KHR");
14217     auto stream = mImpl->stream();
14218     auto countingStream = mImpl->countingStream();
14219     auto resources = mImpl->resources();
14220     auto pool = mImpl->pool();
14221     stream->setHandleMapping(resources->unwrapMapping());
14222     VkPhysicalDevice local_physicalDevice;
14223     VkFormat local_format;
14224     local_physicalDevice = physicalDevice;
14225     local_format = format;
14226     countingStream->rewind();
14227     {
14228         uint64_t cgen_var_977;
14229         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_977, 1);
14230         countingStream->write((uint64_t*)&cgen_var_977, 1 * 8);
14231         countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
14232         marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties));
14233     }
14234     uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14235     countingStream->rewind();
14236     uint32_t opcode_vkGetPhysicalDeviceFormatProperties2KHR = OP_vkGetPhysicalDeviceFormatProperties2KHR;
14237     stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
14238     stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t));
14239     uint64_t cgen_var_978;
14240     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_978, 1);
14241     stream->write((uint64_t*)&cgen_var_978, 1 * 8);
14242     stream->write((VkFormat*)&local_format, sizeof(VkFormat));
14243     marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
14244     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR readParams");
14245     unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties));
14246     if (pFormatProperties)
14247     {
14248         transform_fromhost_VkFormatProperties2(mImpl->resources(), (VkFormatProperties2*)(pFormatProperties));
14249     }
14250     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR returnUnmarshal");
14251     mImpl->log("finish vkGetPhysicalDeviceFormatProperties2KHR");;
14252 }
14253 
vkGetPhysicalDeviceImageFormatProperties2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo,VkImageFormatProperties2 * pImageFormatProperties)14254 VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2KHR(
14255     VkPhysicalDevice physicalDevice,
14256     const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
14257     VkImageFormatProperties2* pImageFormatProperties)
14258 {
14259     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR encode");
14260     mImpl->log("start vkGetPhysicalDeviceImageFormatProperties2KHR");
14261     auto stream = mImpl->stream();
14262     auto countingStream = mImpl->countingStream();
14263     auto resources = mImpl->resources();
14264     auto pool = mImpl->pool();
14265     stream->setHandleMapping(resources->unwrapMapping());
14266     VkPhysicalDevice local_physicalDevice;
14267     VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo;
14268     local_physicalDevice = physicalDevice;
14269     local_pImageFormatInfo = nullptr;
14270     if (pImageFormatInfo)
14271     {
14272         local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2));
14273         deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
14274     }
14275     if (local_pImageFormatInfo)
14276     {
14277         transform_tohost_VkPhysicalDeviceImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
14278     }
14279     countingStream->rewind();
14280     {
14281         uint64_t cgen_var_979;
14282         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_979, 1);
14283         countingStream->write((uint64_t*)&cgen_var_979, 1 * 8);
14284         marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
14285         marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties));
14286     }
14287     uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14288     countingStream->rewind();
14289     uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2KHR = OP_vkGetPhysicalDeviceImageFormatProperties2KHR;
14290     stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
14291     stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t));
14292     uint64_t cgen_var_980;
14293     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_980, 1);
14294     stream->write((uint64_t*)&cgen_var_980, 1 * 8);
14295     marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo));
14296     marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
14297     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR readParams");
14298     unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties));
14299     if (pImageFormatProperties)
14300     {
14301         transform_fromhost_VkImageFormatProperties2(mImpl->resources(), (VkImageFormatProperties2*)(pImageFormatProperties));
14302     }
14303     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR returnUnmarshal");
14304     VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
14305     stream->read(&vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult));
14306     countingStream->clearPool();
14307     stream->clearPool();
14308     pool->freeAll();
14309     mImpl->log("finish vkGetPhysicalDeviceImageFormatProperties2KHR");;
14310     return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
14311 }
14312 
vkGetPhysicalDeviceQueueFamilyProperties2KHR(VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties2 * pQueueFamilyProperties)14313 void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2KHR(
14314     VkPhysicalDevice physicalDevice,
14315     uint32_t* pQueueFamilyPropertyCount,
14316     VkQueueFamilyProperties2* pQueueFamilyProperties)
14317 {
14318     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR encode");
14319     mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties2KHR");
14320     auto stream = mImpl->stream();
14321     auto countingStream = mImpl->countingStream();
14322     auto resources = mImpl->resources();
14323     auto pool = mImpl->pool();
14324     stream->setHandleMapping(resources->unwrapMapping());
14325     VkPhysicalDevice local_physicalDevice;
14326     local_physicalDevice = physicalDevice;
14327     countingStream->rewind();
14328     {
14329         uint64_t cgen_var_981;
14330         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_981, 1);
14331         countingStream->write((uint64_t*)&cgen_var_981, 1 * 8);
14332         // WARNING PTR CHECK
14333         uint64_t cgen_var_982 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
14334         countingStream->putBe64(cgen_var_982);
14335         if (pQueueFamilyPropertyCount)
14336         {
14337             countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
14338         }
14339         // WARNING PTR CHECK
14340         uint64_t cgen_var_983 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
14341         countingStream->putBe64(cgen_var_983);
14342         if (pQueueFamilyProperties)
14343         {
14344             for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
14345             {
14346                 marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
14347             }
14348         }
14349     }
14350     uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14351     countingStream->rewind();
14352     uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR = OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR;
14353     stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
14354     stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t));
14355     uint64_t cgen_var_984;
14356     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_984, 1);
14357     stream->write((uint64_t*)&cgen_var_984, 1 * 8);
14358     // WARNING PTR CHECK
14359     uint64_t cgen_var_985 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount;
14360     stream->putBe64(cgen_var_985);
14361     if (pQueueFamilyPropertyCount)
14362     {
14363         stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
14364     }
14365     // WARNING PTR CHECK
14366     uint64_t cgen_var_986 = (uint64_t)(uintptr_t)pQueueFamilyProperties;
14367     stream->putBe64(cgen_var_986);
14368     if (pQueueFamilyProperties)
14369     {
14370         for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
14371         {
14372             marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
14373         }
14374     }
14375     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR readParams");
14376     // WARNING PTR CHECK
14377     uint32_t* check_pQueueFamilyPropertyCount;
14378     check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
14379     if (pQueueFamilyPropertyCount)
14380     {
14381         if (!(check_pQueueFamilyPropertyCount))
14382         {
14383             fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n");
14384         }
14385         stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t));
14386     }
14387     // WARNING PTR CHECK
14388     VkQueueFamilyProperties2* check_pQueueFamilyProperties;
14389     check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64();
14390     if (pQueueFamilyProperties)
14391     {
14392         if (!(check_pQueueFamilyProperties))
14393         {
14394             fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n");
14395         }
14396         for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
14397         {
14398             unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
14399         }
14400     }
14401     if (pQueueFamilyProperties)
14402     {
14403         for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i)
14404         {
14405             transform_fromhost_VkQueueFamilyProperties2(mImpl->resources(), (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i));
14406         }
14407     }
14408     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR returnUnmarshal");
14409     mImpl->log("finish vkGetPhysicalDeviceQueueFamilyProperties2KHR");;
14410 }
14411 
vkGetPhysicalDeviceMemoryProperties2KHR(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties2 * pMemoryProperties)14412 void VkEncoder::vkGetPhysicalDeviceMemoryProperties2KHR(
14413     VkPhysicalDevice physicalDevice,
14414     VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
14415 {
14416     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR encode");
14417     mImpl->log("start vkGetPhysicalDeviceMemoryProperties2KHR");
14418     auto stream = mImpl->stream();
14419     auto countingStream = mImpl->countingStream();
14420     auto resources = mImpl->resources();
14421     auto pool = mImpl->pool();
14422     stream->setHandleMapping(resources->unwrapMapping());
14423     VkPhysicalDevice local_physicalDevice;
14424     local_physicalDevice = physicalDevice;
14425     countingStream->rewind();
14426     {
14427         uint64_t cgen_var_989;
14428         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_989, 1);
14429         countingStream->write((uint64_t*)&cgen_var_989, 1 * 8);
14430         marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
14431     }
14432     uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14433     countingStream->rewind();
14434     uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2KHR = OP_vkGetPhysicalDeviceMemoryProperties2KHR;
14435     stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
14436     stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t));
14437     uint64_t cgen_var_990;
14438     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_990, 1);
14439     stream->write((uint64_t*)&cgen_var_990, 1 * 8);
14440     marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
14441     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR readParams");
14442     unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
14443     if (pMemoryProperties)
14444     {
14445         transform_fromhost_VkPhysicalDeviceMemoryProperties2(mImpl->resources(), (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties));
14446     }
14447     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR returnUnmarshal");
14448     mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties2KHR(this, physicalDevice, pMemoryProperties);
14449     mImpl->log("finish vkGetPhysicalDeviceMemoryProperties2KHR");;
14450 }
14451 
vkGetPhysicalDeviceSparseImageFormatProperties2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo,uint32_t * pPropertyCount,VkSparseImageFormatProperties2 * pProperties)14452 void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
14453     VkPhysicalDevice physicalDevice,
14454     const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
14455     uint32_t* pPropertyCount,
14456     VkSparseImageFormatProperties2* pProperties)
14457 {
14458     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR encode");
14459     mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
14460     auto stream = mImpl->stream();
14461     auto countingStream = mImpl->countingStream();
14462     auto resources = mImpl->resources();
14463     auto pool = mImpl->pool();
14464     stream->setHandleMapping(resources->unwrapMapping());
14465     VkPhysicalDevice local_physicalDevice;
14466     VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo;
14467     local_physicalDevice = physicalDevice;
14468     local_pFormatInfo = nullptr;
14469     if (pFormatInfo)
14470     {
14471         local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2));
14472         deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
14473     }
14474     if (local_pFormatInfo)
14475     {
14476         transform_tohost_VkPhysicalDeviceSparseImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
14477     }
14478     countingStream->rewind();
14479     {
14480         uint64_t cgen_var_991;
14481         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_991, 1);
14482         countingStream->write((uint64_t*)&cgen_var_991, 1 * 8);
14483         marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
14484         // WARNING PTR CHECK
14485         uint64_t cgen_var_992 = (uint64_t)(uintptr_t)pPropertyCount;
14486         countingStream->putBe64(cgen_var_992);
14487         if (pPropertyCount)
14488         {
14489             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14490         }
14491         // WARNING PTR CHECK
14492         uint64_t cgen_var_993 = (uint64_t)(uintptr_t)pProperties;
14493         countingStream->putBe64(cgen_var_993);
14494         if (pProperties)
14495         {
14496             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14497             {
14498                 marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i));
14499             }
14500         }
14501     }
14502     uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14503     countingStream->rewind();
14504     uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
14505     stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
14506     stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t));
14507     uint64_t cgen_var_994;
14508     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_994, 1);
14509     stream->write((uint64_t*)&cgen_var_994, 1 * 8);
14510     marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo));
14511     // WARNING PTR CHECK
14512     uint64_t cgen_var_995 = (uint64_t)(uintptr_t)pPropertyCount;
14513     stream->putBe64(cgen_var_995);
14514     if (pPropertyCount)
14515     {
14516         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
14517     }
14518     // WARNING PTR CHECK
14519     uint64_t cgen_var_996 = (uint64_t)(uintptr_t)pProperties;
14520     stream->putBe64(cgen_var_996);
14521     if (pProperties)
14522     {
14523         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14524         {
14525             marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
14526         }
14527     }
14528     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR readParams");
14529     // WARNING PTR CHECK
14530     uint32_t* check_pPropertyCount;
14531     check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
14532     if (pPropertyCount)
14533     {
14534         if (!(check_pPropertyCount))
14535         {
14536             fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
14537         }
14538         stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
14539     }
14540     // WARNING PTR CHECK
14541     VkSparseImageFormatProperties2* check_pProperties;
14542     check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64();
14543     if (pProperties)
14544     {
14545         if (!(check_pProperties))
14546         {
14547             fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
14548         }
14549         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14550         {
14551             unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i));
14552         }
14553     }
14554     if (pProperties)
14555     {
14556         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
14557         {
14558             transform_fromhost_VkSparseImageFormatProperties2(mImpl->resources(), (VkSparseImageFormatProperties2*)(pProperties + i));
14559         }
14560     }
14561     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR returnUnmarshal");
14562     mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties2KHR");;
14563 }
14564 
14565 #endif
14566 #ifdef VK_KHR_device_group
vkGetDeviceGroupPeerMemoryFeaturesKHR(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)14567 void VkEncoder::vkGetDeviceGroupPeerMemoryFeaturesKHR(
14568     VkDevice device,
14569     uint32_t heapIndex,
14570     uint32_t localDeviceIndex,
14571     uint32_t remoteDeviceIndex,
14572     VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
14573 {
14574     AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR encode");
14575     mImpl->log("start vkGetDeviceGroupPeerMemoryFeaturesKHR");
14576     auto stream = mImpl->stream();
14577     auto countingStream = mImpl->countingStream();
14578     auto resources = mImpl->resources();
14579     auto pool = mImpl->pool();
14580     stream->setHandleMapping(resources->unwrapMapping());
14581     VkDevice local_device;
14582     uint32_t local_heapIndex;
14583     uint32_t local_localDeviceIndex;
14584     uint32_t local_remoteDeviceIndex;
14585     local_device = device;
14586     local_heapIndex = heapIndex;
14587     local_localDeviceIndex = localDeviceIndex;
14588     local_remoteDeviceIndex = remoteDeviceIndex;
14589     countingStream->rewind();
14590     {
14591         uint64_t cgen_var_999;
14592         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_999, 1);
14593         countingStream->write((uint64_t*)&cgen_var_999, 1 * 8);
14594         countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
14595         countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
14596         countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
14597         countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
14598     }
14599     uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14600     countingStream->rewind();
14601     uint32_t opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR = OP_vkGetDeviceGroupPeerMemoryFeaturesKHR;
14602     stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
14603     stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t));
14604     uint64_t cgen_var_1000;
14605     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1000, 1);
14606     stream->write((uint64_t*)&cgen_var_1000, 1 * 8);
14607     stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t));
14608     stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t));
14609     stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t));
14610     stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
14611     AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR readParams");
14612     stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags));
14613     AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR returnUnmarshal");
14614     mImpl->log("finish vkGetDeviceGroupPeerMemoryFeaturesKHR");;
14615 }
14616 
vkCmdSetDeviceMaskKHR(VkCommandBuffer commandBuffer,uint32_t deviceMask)14617 void VkEncoder::vkCmdSetDeviceMaskKHR(
14618     VkCommandBuffer commandBuffer,
14619     uint32_t deviceMask)
14620 {
14621     AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR encode");
14622     mImpl->log("start vkCmdSetDeviceMaskKHR");
14623     auto stream = mImpl->stream();
14624     auto countingStream = mImpl->countingStream();
14625     auto resources = mImpl->resources();
14626     auto pool = mImpl->pool();
14627     stream->setHandleMapping(resources->unwrapMapping());
14628     VkCommandBuffer local_commandBuffer;
14629     uint32_t local_deviceMask;
14630     local_commandBuffer = commandBuffer;
14631     local_deviceMask = deviceMask;
14632     countingStream->rewind();
14633     {
14634         uint64_t cgen_var_1001;
14635         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1001, 1);
14636         countingStream->write((uint64_t*)&cgen_var_1001, 1 * 8);
14637         countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
14638     }
14639     uint32_t packetSize_vkCmdSetDeviceMaskKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14640     countingStream->rewind();
14641     uint32_t opcode_vkCmdSetDeviceMaskKHR = OP_vkCmdSetDeviceMaskKHR;
14642     stream->write(&opcode_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
14643     stream->write(&packetSize_vkCmdSetDeviceMaskKHR, sizeof(uint32_t));
14644     uint64_t cgen_var_1002;
14645     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1002, 1);
14646     stream->write((uint64_t*)&cgen_var_1002, 1 * 8);
14647     stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t));
14648     AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR readParams");
14649     AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR returnUnmarshal");
14650     mImpl->log("finish vkCmdSetDeviceMaskKHR");;
14651 }
14652 
vkCmdDispatchBaseKHR(VkCommandBuffer commandBuffer,uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)14653 void VkEncoder::vkCmdDispatchBaseKHR(
14654     VkCommandBuffer commandBuffer,
14655     uint32_t baseGroupX,
14656     uint32_t baseGroupY,
14657     uint32_t baseGroupZ,
14658     uint32_t groupCountX,
14659     uint32_t groupCountY,
14660     uint32_t groupCountZ)
14661 {
14662     AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR encode");
14663     mImpl->log("start vkCmdDispatchBaseKHR");
14664     auto stream = mImpl->stream();
14665     auto countingStream = mImpl->countingStream();
14666     auto resources = mImpl->resources();
14667     auto pool = mImpl->pool();
14668     stream->setHandleMapping(resources->unwrapMapping());
14669     VkCommandBuffer local_commandBuffer;
14670     uint32_t local_baseGroupX;
14671     uint32_t local_baseGroupY;
14672     uint32_t local_baseGroupZ;
14673     uint32_t local_groupCountX;
14674     uint32_t local_groupCountY;
14675     uint32_t local_groupCountZ;
14676     local_commandBuffer = commandBuffer;
14677     local_baseGroupX = baseGroupX;
14678     local_baseGroupY = baseGroupY;
14679     local_baseGroupZ = baseGroupZ;
14680     local_groupCountX = groupCountX;
14681     local_groupCountY = groupCountY;
14682     local_groupCountZ = groupCountZ;
14683     countingStream->rewind();
14684     {
14685         uint64_t cgen_var_1003;
14686         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1003, 1);
14687         countingStream->write((uint64_t*)&cgen_var_1003, 1 * 8);
14688         countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
14689         countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
14690         countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
14691         countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
14692         countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
14693         countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
14694     }
14695     uint32_t packetSize_vkCmdDispatchBaseKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14696     countingStream->rewind();
14697     uint32_t opcode_vkCmdDispatchBaseKHR = OP_vkCmdDispatchBaseKHR;
14698     stream->write(&opcode_vkCmdDispatchBaseKHR, sizeof(uint32_t));
14699     stream->write(&packetSize_vkCmdDispatchBaseKHR, sizeof(uint32_t));
14700     uint64_t cgen_var_1004;
14701     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1004, 1);
14702     stream->write((uint64_t*)&cgen_var_1004, 1 * 8);
14703     stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t));
14704     stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t));
14705     stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t));
14706     stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t));
14707     stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t));
14708     stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t));
14709     AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR readParams");
14710     AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR returnUnmarshal");
14711     mImpl->log("finish vkCmdDispatchBaseKHR");;
14712 }
14713 
14714 #endif
14715 #ifdef VK_KHR_shader_draw_parameters
14716 #endif
14717 #ifdef VK_KHR_maintenance1
vkTrimCommandPoolKHR(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)14718 void VkEncoder::vkTrimCommandPoolKHR(
14719     VkDevice device,
14720     VkCommandPool commandPool,
14721     VkCommandPoolTrimFlags flags)
14722 {
14723     AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR encode");
14724     mImpl->log("start vkTrimCommandPoolKHR");
14725     auto stream = mImpl->stream();
14726     auto countingStream = mImpl->countingStream();
14727     auto resources = mImpl->resources();
14728     auto pool = mImpl->pool();
14729     stream->setHandleMapping(resources->unwrapMapping());
14730     VkDevice local_device;
14731     VkCommandPool local_commandPool;
14732     VkCommandPoolTrimFlags local_flags;
14733     local_device = device;
14734     local_commandPool = commandPool;
14735     local_flags = flags;
14736     countingStream->rewind();
14737     {
14738         uint64_t cgen_var_1005;
14739         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1005, 1);
14740         countingStream->write((uint64_t*)&cgen_var_1005, 1 * 8);
14741         uint64_t cgen_var_1006;
14742         countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_1006, 1);
14743         countingStream->write((uint64_t*)&cgen_var_1006, 1 * 8);
14744         countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
14745     }
14746     uint32_t packetSize_vkTrimCommandPoolKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14747     countingStream->rewind();
14748     uint32_t opcode_vkTrimCommandPoolKHR = OP_vkTrimCommandPoolKHR;
14749     stream->write(&opcode_vkTrimCommandPoolKHR, sizeof(uint32_t));
14750     stream->write(&packetSize_vkTrimCommandPoolKHR, sizeof(uint32_t));
14751     uint64_t cgen_var_1007;
14752     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1007, 1);
14753     stream->write((uint64_t*)&cgen_var_1007, 1 * 8);
14754     uint64_t cgen_var_1008;
14755     stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_1008, 1);
14756     stream->write((uint64_t*)&cgen_var_1008, 1 * 8);
14757     stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags));
14758     AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR readParams");
14759     AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR returnUnmarshal");
14760     mImpl->log("finish vkTrimCommandPoolKHR");;
14761 }
14762 
14763 #endif
14764 #ifdef VK_KHR_device_group_creation
vkEnumeratePhysicalDeviceGroupsKHR(VkInstance instance,uint32_t * pPhysicalDeviceGroupCount,VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties)14765 VkResult VkEncoder::vkEnumeratePhysicalDeviceGroupsKHR(
14766     VkInstance instance,
14767     uint32_t* pPhysicalDeviceGroupCount,
14768     VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
14769 {
14770     AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR encode");
14771     mImpl->log("start vkEnumeratePhysicalDeviceGroupsKHR");
14772     auto stream = mImpl->stream();
14773     auto countingStream = mImpl->countingStream();
14774     auto resources = mImpl->resources();
14775     auto pool = mImpl->pool();
14776     stream->setHandleMapping(resources->unwrapMapping());
14777     VkInstance local_instance;
14778     local_instance = instance;
14779     countingStream->rewind();
14780     {
14781         uint64_t cgen_var_1009;
14782         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1009, 1);
14783         countingStream->write((uint64_t*)&cgen_var_1009, 1 * 8);
14784         // WARNING PTR CHECK
14785         uint64_t cgen_var_1010 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
14786         countingStream->putBe64(cgen_var_1010);
14787         if (pPhysicalDeviceGroupCount)
14788         {
14789             countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
14790         }
14791         // WARNING PTR CHECK
14792         uint64_t cgen_var_1011 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
14793         countingStream->putBe64(cgen_var_1011);
14794         if (pPhysicalDeviceGroupProperties)
14795         {
14796             for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14797             {
14798                 marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14799             }
14800         }
14801     }
14802     uint32_t packetSize_vkEnumeratePhysicalDeviceGroupsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14803     countingStream->rewind();
14804     uint32_t opcode_vkEnumeratePhysicalDeviceGroupsKHR = OP_vkEnumeratePhysicalDeviceGroupsKHR;
14805     stream->write(&opcode_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
14806     stream->write(&packetSize_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t));
14807     uint64_t cgen_var_1012;
14808     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1012, 1);
14809     stream->write((uint64_t*)&cgen_var_1012, 1 * 8);
14810     // WARNING PTR CHECK
14811     uint64_t cgen_var_1013 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount;
14812     stream->putBe64(cgen_var_1013);
14813     if (pPhysicalDeviceGroupCount)
14814     {
14815         stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
14816     }
14817     // WARNING PTR CHECK
14818     uint64_t cgen_var_1014 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties;
14819     stream->putBe64(cgen_var_1014);
14820     if (pPhysicalDeviceGroupProperties)
14821     {
14822         for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14823         {
14824             marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14825         }
14826     }
14827     AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR readParams");
14828     // WARNING PTR CHECK
14829     uint32_t* check_pPhysicalDeviceGroupCount;
14830     check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64();
14831     if (pPhysicalDeviceGroupCount)
14832     {
14833         if (!(check_pPhysicalDeviceGroupCount))
14834         {
14835             fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n");
14836         }
14837         stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t));
14838     }
14839     // WARNING PTR CHECK
14840     VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties;
14841     check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64();
14842     if (pPhysicalDeviceGroupProperties)
14843     {
14844         if (!(check_pPhysicalDeviceGroupProperties))
14845         {
14846             fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n");
14847         }
14848         for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14849         {
14850             unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14851         }
14852     }
14853     if (pPhysicalDeviceGroupProperties)
14854     {
14855         for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i)
14856         {
14857             transform_fromhost_VkPhysicalDeviceGroupProperties(mImpl->resources(), (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i));
14858         }
14859     }
14860     AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR returnUnmarshal");
14861     VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0;
14862     stream->read(&vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult));
14863     countingStream->clearPool();
14864     stream->clearPool();
14865     pool->freeAll();
14866     mImpl->log("finish vkEnumeratePhysicalDeviceGroupsKHR");;
14867     return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return;
14868 }
14869 
14870 #endif
14871 #ifdef VK_KHR_external_memory_capabilities
vkGetPhysicalDeviceExternalBufferPropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo,VkExternalBufferProperties * pExternalBufferProperties)14872 void VkEncoder::vkGetPhysicalDeviceExternalBufferPropertiesKHR(
14873     VkPhysicalDevice physicalDevice,
14874     const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
14875     VkExternalBufferProperties* pExternalBufferProperties)
14876 {
14877     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR encode");
14878     mImpl->log("start vkGetPhysicalDeviceExternalBufferPropertiesKHR");
14879     auto stream = mImpl->stream();
14880     auto countingStream = mImpl->countingStream();
14881     auto resources = mImpl->resources();
14882     auto pool = mImpl->pool();
14883     stream->setHandleMapping(resources->unwrapMapping());
14884     VkPhysicalDevice local_physicalDevice;
14885     VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo;
14886     local_physicalDevice = physicalDevice;
14887     local_pExternalBufferInfo = nullptr;
14888     if (pExternalBufferInfo)
14889     {
14890         local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo));
14891         deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
14892     }
14893     if (local_pExternalBufferInfo)
14894     {
14895         mImpl->resources()->transformImpl_VkPhysicalDeviceExternalBufferInfo_tohost(local_pExternalBufferInfo, 1);
14896         transform_tohost_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
14897     }
14898     countingStream->rewind();
14899     {
14900         uint64_t cgen_var_1017;
14901         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1017, 1);
14902         countingStream->write((uint64_t*)&cgen_var_1017, 1 * 8);
14903         marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
14904         marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties));
14905     }
14906     uint32_t packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14907     countingStream->rewind();
14908     uint32_t opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR = OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR;
14909     stream->write(&opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
14910     stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t));
14911     uint64_t cgen_var_1018;
14912     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1018, 1);
14913     stream->write((uint64_t*)&cgen_var_1018, 1 * 8);
14914     marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo));
14915     marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
14916     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR readParams");
14917     unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties));
14918     if (pExternalBufferProperties)
14919     {
14920         mImpl->resources()->transformImpl_VkExternalBufferProperties_fromhost(pExternalBufferProperties, 1);
14921         transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties));
14922     }
14923     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR returnUnmarshal");
14924     mImpl->log("finish vkGetPhysicalDeviceExternalBufferPropertiesKHR");;
14925 }
14926 
14927 #endif
14928 #ifdef VK_KHR_external_memory
14929 #endif
14930 #ifdef VK_KHR_external_memory_win32
vkGetMemoryWin32HandleKHR(VkDevice device,const VkMemoryGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)14931 VkResult VkEncoder::vkGetMemoryWin32HandleKHR(
14932     VkDevice device,
14933     const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
14934     HANDLE* pHandle)
14935 {
14936     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR encode");
14937     mImpl->log("start vkGetMemoryWin32HandleKHR");
14938     auto stream = mImpl->stream();
14939     auto countingStream = mImpl->countingStream();
14940     auto resources = mImpl->resources();
14941     auto pool = mImpl->pool();
14942     stream->setHandleMapping(resources->unwrapMapping());
14943     VkDevice local_device;
14944     VkMemoryGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
14945     local_device = device;
14946     local_pGetWin32HandleInfo = nullptr;
14947     if (pGetWin32HandleInfo)
14948     {
14949         local_pGetWin32HandleInfo = (VkMemoryGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkMemoryGetWin32HandleInfoKHR));
14950         deepcopy_VkMemoryGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
14951     }
14952     if (local_pGetWin32HandleInfo)
14953     {
14954         transform_tohost_VkMemoryGetWin32HandleInfoKHR(mImpl->resources(), (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
14955     }
14956     countingStream->rewind();
14957     {
14958         uint64_t cgen_var_1019;
14959         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1019, 1);
14960         countingStream->write((uint64_t*)&cgen_var_1019, 1 * 8);
14961         marshal_VkMemoryGetWin32HandleInfoKHR(countingStream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
14962         countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
14963     }
14964     uint32_t packetSize_vkGetMemoryWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
14965     countingStream->rewind();
14966     uint32_t opcode_vkGetMemoryWin32HandleKHR = OP_vkGetMemoryWin32HandleKHR;
14967     stream->write(&opcode_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
14968     stream->write(&packetSize_vkGetMemoryWin32HandleKHR, sizeof(uint32_t));
14969     uint64_t cgen_var_1020;
14970     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1020, 1);
14971     stream->write((uint64_t*)&cgen_var_1020, 1 * 8);
14972     marshal_VkMemoryGetWin32HandleInfoKHR(stream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
14973     stream->write((HANDLE*)pHandle, sizeof(HANDLE));
14974     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR readParams");
14975     stream->read((HANDLE*)pHandle, sizeof(HANDLE));
14976     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR returnUnmarshal");
14977     VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0;
14978     stream->read(&vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult));
14979     countingStream->clearPool();
14980     stream->clearPool();
14981     pool->freeAll();
14982     mImpl->log("finish vkGetMemoryWin32HandleKHR");;
14983     return vkGetMemoryWin32HandleKHR_VkResult_return;
14984 }
14985 
vkGetMemoryWin32HandlePropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,HANDLE handle,VkMemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties)14986 VkResult VkEncoder::vkGetMemoryWin32HandlePropertiesKHR(
14987     VkDevice device,
14988     VkExternalMemoryHandleTypeFlagBits handleType,
14989     HANDLE handle,
14990     VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
14991 {
14992     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR encode");
14993     mImpl->log("start vkGetMemoryWin32HandlePropertiesKHR");
14994     auto stream = mImpl->stream();
14995     auto countingStream = mImpl->countingStream();
14996     auto resources = mImpl->resources();
14997     auto pool = mImpl->pool();
14998     stream->setHandleMapping(resources->unwrapMapping());
14999     VkDevice local_device;
15000     VkExternalMemoryHandleTypeFlagBits local_handleType;
15001     HANDLE local_handle;
15002     local_device = device;
15003     local_handleType = handleType;
15004     local_handle = handle;
15005     countingStream->rewind();
15006     {
15007         uint64_t cgen_var_1021;
15008         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1021, 1);
15009         countingStream->write((uint64_t*)&cgen_var_1021, 1 * 8);
15010         countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
15011         countingStream->write((HANDLE*)&local_handle, sizeof(HANDLE));
15012         marshal_VkMemoryWin32HandlePropertiesKHR(countingStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
15013     }
15014     uint32_t packetSize_vkGetMemoryWin32HandlePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15015     countingStream->rewind();
15016     uint32_t opcode_vkGetMemoryWin32HandlePropertiesKHR = OP_vkGetMemoryWin32HandlePropertiesKHR;
15017     stream->write(&opcode_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
15018     stream->write(&packetSize_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t));
15019     uint64_t cgen_var_1022;
15020     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1022, 1);
15021     stream->write((uint64_t*)&cgen_var_1022, 1 * 8);
15022     stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
15023     stream->write((HANDLE*)&local_handle, sizeof(HANDLE));
15024     marshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
15025     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR readParams");
15026     unmarshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
15027     if (pMemoryWin32HandleProperties)
15028     {
15029         transform_fromhost_VkMemoryWin32HandlePropertiesKHR(mImpl->resources(), (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties));
15030     }
15031     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR returnUnmarshal");
15032     VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0;
15033     stream->read(&vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult));
15034     countingStream->clearPool();
15035     stream->clearPool();
15036     pool->freeAll();
15037     mImpl->log("finish vkGetMemoryWin32HandlePropertiesKHR");;
15038     return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return;
15039 }
15040 
15041 #endif
15042 #ifdef VK_KHR_external_memory_fd
vkGetMemoryFdKHR(VkDevice device,const VkMemoryGetFdInfoKHR * pGetFdInfo,int * pFd)15043 VkResult VkEncoder::vkGetMemoryFdKHR(
15044     VkDevice device,
15045     const VkMemoryGetFdInfoKHR* pGetFdInfo,
15046     int* pFd)
15047 {
15048     AEMU_SCOPED_TRACE("vkGetMemoryFdKHR encode");
15049     mImpl->log("start vkGetMemoryFdKHR");
15050     auto stream = mImpl->stream();
15051     auto countingStream = mImpl->countingStream();
15052     auto resources = mImpl->resources();
15053     auto pool = mImpl->pool();
15054     stream->setHandleMapping(resources->unwrapMapping());
15055     VkDevice local_device;
15056     VkMemoryGetFdInfoKHR* local_pGetFdInfo;
15057     local_device = device;
15058     local_pGetFdInfo = nullptr;
15059     if (pGetFdInfo)
15060     {
15061         local_pGetFdInfo = (VkMemoryGetFdInfoKHR*)pool->alloc(sizeof(const VkMemoryGetFdInfoKHR));
15062         deepcopy_VkMemoryGetFdInfoKHR(pool, pGetFdInfo, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
15063     }
15064     if (local_pGetFdInfo)
15065     {
15066         transform_tohost_VkMemoryGetFdInfoKHR(mImpl->resources(), (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
15067     }
15068     countingStream->rewind();
15069     {
15070         uint64_t cgen_var_1023;
15071         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1023, 1);
15072         countingStream->write((uint64_t*)&cgen_var_1023, 1 * 8);
15073         marshal_VkMemoryGetFdInfoKHR(countingStream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
15074         countingStream->write((int*)pFd, sizeof(int));
15075     }
15076     uint32_t packetSize_vkGetMemoryFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15077     countingStream->rewind();
15078     uint32_t opcode_vkGetMemoryFdKHR = OP_vkGetMemoryFdKHR;
15079     stream->write(&opcode_vkGetMemoryFdKHR, sizeof(uint32_t));
15080     stream->write(&packetSize_vkGetMemoryFdKHR, sizeof(uint32_t));
15081     uint64_t cgen_var_1024;
15082     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1024, 1);
15083     stream->write((uint64_t*)&cgen_var_1024, 1 * 8);
15084     marshal_VkMemoryGetFdInfoKHR(stream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo));
15085     stream->write((int*)pFd, sizeof(int));
15086     AEMU_SCOPED_TRACE("vkGetMemoryFdKHR readParams");
15087     stream->read((int*)pFd, sizeof(int));
15088     AEMU_SCOPED_TRACE("vkGetMemoryFdKHR returnUnmarshal");
15089     VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
15090     stream->read(&vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult));
15091     countingStream->clearPool();
15092     stream->clearPool();
15093     pool->freeAll();
15094     mImpl->log("finish vkGetMemoryFdKHR");;
15095     return vkGetMemoryFdKHR_VkResult_return;
15096 }
15097 
vkGetMemoryFdPropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,int fd,VkMemoryFdPropertiesKHR * pMemoryFdProperties)15098 VkResult VkEncoder::vkGetMemoryFdPropertiesKHR(
15099     VkDevice device,
15100     VkExternalMemoryHandleTypeFlagBits handleType,
15101     int fd,
15102     VkMemoryFdPropertiesKHR* pMemoryFdProperties)
15103 {
15104     AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR encode");
15105     mImpl->log("start vkGetMemoryFdPropertiesKHR");
15106     auto stream = mImpl->stream();
15107     auto countingStream = mImpl->countingStream();
15108     auto resources = mImpl->resources();
15109     auto pool = mImpl->pool();
15110     stream->setHandleMapping(resources->unwrapMapping());
15111     VkDevice local_device;
15112     VkExternalMemoryHandleTypeFlagBits local_handleType;
15113     int local_fd;
15114     local_device = device;
15115     local_handleType = handleType;
15116     local_fd = fd;
15117     countingStream->rewind();
15118     {
15119         uint64_t cgen_var_1025;
15120         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1025, 1);
15121         countingStream->write((uint64_t*)&cgen_var_1025, 1 * 8);
15122         countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
15123         countingStream->write((int*)&local_fd, sizeof(int));
15124         marshal_VkMemoryFdPropertiesKHR(countingStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
15125     }
15126     uint32_t packetSize_vkGetMemoryFdPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15127     countingStream->rewind();
15128     uint32_t opcode_vkGetMemoryFdPropertiesKHR = OP_vkGetMemoryFdPropertiesKHR;
15129     stream->write(&opcode_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
15130     stream->write(&packetSize_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t));
15131     uint64_t cgen_var_1026;
15132     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1026, 1);
15133     stream->write((uint64_t*)&cgen_var_1026, 1 * 8);
15134     stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
15135     stream->write((int*)&local_fd, sizeof(int));
15136     marshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
15137     AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR readParams");
15138     unmarshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
15139     if (pMemoryFdProperties)
15140     {
15141         transform_fromhost_VkMemoryFdPropertiesKHR(mImpl->resources(), (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties));
15142     }
15143     AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR returnUnmarshal");
15144     VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
15145     stream->read(&vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult));
15146     countingStream->clearPool();
15147     stream->clearPool();
15148     pool->freeAll();
15149     mImpl->log("finish vkGetMemoryFdPropertiesKHR");;
15150     return vkGetMemoryFdPropertiesKHR_VkResult_return;
15151 }
15152 
15153 #endif
15154 #ifdef VK_KHR_win32_keyed_mutex
15155 #endif
15156 #ifdef VK_KHR_external_semaphore_capabilities
vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo,VkExternalSemaphoreProperties * pExternalSemaphoreProperties)15157 void VkEncoder::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
15158     VkPhysicalDevice physicalDevice,
15159     const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
15160     VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
15161 {
15162     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR encode");
15163     mImpl->log("start vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
15164     auto stream = mImpl->stream();
15165     auto countingStream = mImpl->countingStream();
15166     auto resources = mImpl->resources();
15167     auto pool = mImpl->pool();
15168     stream->setHandleMapping(resources->unwrapMapping());
15169     VkPhysicalDevice local_physicalDevice;
15170     VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo;
15171     local_physicalDevice = physicalDevice;
15172     local_pExternalSemaphoreInfo = nullptr;
15173     if (pExternalSemaphoreInfo)
15174     {
15175         local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo));
15176         deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
15177     }
15178     if (local_pExternalSemaphoreInfo)
15179     {
15180         transform_tohost_VkPhysicalDeviceExternalSemaphoreInfo(mImpl->resources(), (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
15181     }
15182     countingStream->rewind();
15183     {
15184         uint64_t cgen_var_1027;
15185         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1027, 1);
15186         countingStream->write((uint64_t*)&cgen_var_1027, 1 * 8);
15187         marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
15188         marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
15189     }
15190     uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15191     countingStream->rewind();
15192     uint32_t opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
15193     stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
15194     stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t));
15195     uint64_t cgen_var_1028;
15196     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1028, 1);
15197     stream->write((uint64_t*)&cgen_var_1028, 1 * 8);
15198     marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo));
15199     marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
15200     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR readParams");
15201     unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
15202     if (pExternalSemaphoreProperties)
15203     {
15204         transform_fromhost_VkExternalSemaphoreProperties(mImpl->resources(), (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties));
15205     }
15206     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR returnUnmarshal");
15207     mImpl->log("finish vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");;
15208 }
15209 
15210 #endif
15211 #ifdef VK_KHR_external_semaphore
15212 #endif
15213 #ifdef VK_KHR_external_semaphore_win32
vkImportSemaphoreWin32HandleKHR(VkDevice device,const VkImportSemaphoreWin32HandleInfoKHR * pImportSemaphoreWin32HandleInfo)15214 VkResult VkEncoder::vkImportSemaphoreWin32HandleKHR(
15215     VkDevice device,
15216     const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
15217 {
15218     AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR encode");
15219     mImpl->log("start vkImportSemaphoreWin32HandleKHR");
15220     auto stream = mImpl->stream();
15221     auto countingStream = mImpl->countingStream();
15222     auto resources = mImpl->resources();
15223     auto pool = mImpl->pool();
15224     stream->setHandleMapping(resources->unwrapMapping());
15225     VkDevice local_device;
15226     VkImportSemaphoreWin32HandleInfoKHR* local_pImportSemaphoreWin32HandleInfo;
15227     local_device = device;
15228     local_pImportSemaphoreWin32HandleInfo = nullptr;
15229     if (pImportSemaphoreWin32HandleInfo)
15230     {
15231         local_pImportSemaphoreWin32HandleInfo = (VkImportSemaphoreWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreWin32HandleInfoKHR));
15232         deepcopy_VkImportSemaphoreWin32HandleInfoKHR(pool, pImportSemaphoreWin32HandleInfo, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
15233     }
15234     if (local_pImportSemaphoreWin32HandleInfo)
15235     {
15236         transform_tohost_VkImportSemaphoreWin32HandleInfoKHR(mImpl->resources(), (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
15237     }
15238     countingStream->rewind();
15239     {
15240         uint64_t cgen_var_1029;
15241         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1029, 1);
15242         countingStream->write((uint64_t*)&cgen_var_1029, 1 * 8);
15243         marshal_VkImportSemaphoreWin32HandleInfoKHR(countingStream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
15244     }
15245     uint32_t packetSize_vkImportSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15246     countingStream->rewind();
15247     uint32_t opcode_vkImportSemaphoreWin32HandleKHR = OP_vkImportSemaphoreWin32HandleKHR;
15248     stream->write(&opcode_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
15249     stream->write(&packetSize_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t));
15250     uint64_t cgen_var_1030;
15251     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1030, 1);
15252     stream->write((uint64_t*)&cgen_var_1030, 1 * 8);
15253     marshal_VkImportSemaphoreWin32HandleInfoKHR(stream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo));
15254     AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR readParams");
15255     AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR returnUnmarshal");
15256     VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
15257     stream->read(&vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
15258     countingStream->clearPool();
15259     stream->clearPool();
15260     pool->freeAll();
15261     mImpl->log("finish vkImportSemaphoreWin32HandleKHR");;
15262     return vkImportSemaphoreWin32HandleKHR_VkResult_return;
15263 }
15264 
vkGetSemaphoreWin32HandleKHR(VkDevice device,const VkSemaphoreGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)15265 VkResult VkEncoder::vkGetSemaphoreWin32HandleKHR(
15266     VkDevice device,
15267     const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
15268     HANDLE* pHandle)
15269 {
15270     AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR encode");
15271     mImpl->log("start vkGetSemaphoreWin32HandleKHR");
15272     auto stream = mImpl->stream();
15273     auto countingStream = mImpl->countingStream();
15274     auto resources = mImpl->resources();
15275     auto pool = mImpl->pool();
15276     stream->setHandleMapping(resources->unwrapMapping());
15277     VkDevice local_device;
15278     VkSemaphoreGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
15279     local_device = device;
15280     local_pGetWin32HandleInfo = nullptr;
15281     if (pGetWin32HandleInfo)
15282     {
15283         local_pGetWin32HandleInfo = (VkSemaphoreGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetWin32HandleInfoKHR));
15284         deepcopy_VkSemaphoreGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
15285     }
15286     if (local_pGetWin32HandleInfo)
15287     {
15288         transform_tohost_VkSemaphoreGetWin32HandleInfoKHR(mImpl->resources(), (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
15289     }
15290     countingStream->rewind();
15291     {
15292         uint64_t cgen_var_1031;
15293         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1031, 1);
15294         countingStream->write((uint64_t*)&cgen_var_1031, 1 * 8);
15295         marshal_VkSemaphoreGetWin32HandleInfoKHR(countingStream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
15296         countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
15297     }
15298     uint32_t packetSize_vkGetSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15299     countingStream->rewind();
15300     uint32_t opcode_vkGetSemaphoreWin32HandleKHR = OP_vkGetSemaphoreWin32HandleKHR;
15301     stream->write(&opcode_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
15302     stream->write(&packetSize_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t));
15303     uint64_t cgen_var_1032;
15304     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1032, 1);
15305     stream->write((uint64_t*)&cgen_var_1032, 1 * 8);
15306     marshal_VkSemaphoreGetWin32HandleInfoKHR(stream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
15307     stream->write((HANDLE*)pHandle, sizeof(HANDLE));
15308     AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR readParams");
15309     stream->read((HANDLE*)pHandle, sizeof(HANDLE));
15310     AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR returnUnmarshal");
15311     VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0;
15312     stream->read(&vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult));
15313     countingStream->clearPool();
15314     stream->clearPool();
15315     pool->freeAll();
15316     mImpl->log("finish vkGetSemaphoreWin32HandleKHR");;
15317     return vkGetSemaphoreWin32HandleKHR_VkResult_return;
15318 }
15319 
15320 #endif
15321 #ifdef VK_KHR_external_semaphore_fd
vkImportSemaphoreFdKHR(VkDevice device,const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo)15322 VkResult VkEncoder::vkImportSemaphoreFdKHR(
15323     VkDevice device,
15324     const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
15325 {
15326     AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR encode");
15327     mImpl->log("start vkImportSemaphoreFdKHR");
15328     auto stream = mImpl->stream();
15329     auto countingStream = mImpl->countingStream();
15330     auto resources = mImpl->resources();
15331     auto pool = mImpl->pool();
15332     stream->setHandleMapping(resources->unwrapMapping());
15333     VkDevice local_device;
15334     VkImportSemaphoreFdInfoKHR* local_pImportSemaphoreFdInfo;
15335     local_device = device;
15336     local_pImportSemaphoreFdInfo = nullptr;
15337     if (pImportSemaphoreFdInfo)
15338     {
15339         local_pImportSemaphoreFdInfo = (VkImportSemaphoreFdInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreFdInfoKHR));
15340         deepcopy_VkImportSemaphoreFdInfoKHR(pool, pImportSemaphoreFdInfo, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
15341     }
15342     if (local_pImportSemaphoreFdInfo)
15343     {
15344         transform_tohost_VkImportSemaphoreFdInfoKHR(mImpl->resources(), (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
15345     }
15346     countingStream->rewind();
15347     {
15348         uint64_t cgen_var_1033;
15349         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1033, 1);
15350         countingStream->write((uint64_t*)&cgen_var_1033, 1 * 8);
15351         marshal_VkImportSemaphoreFdInfoKHR(countingStream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
15352     }
15353     uint32_t packetSize_vkImportSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15354     countingStream->rewind();
15355     uint32_t opcode_vkImportSemaphoreFdKHR = OP_vkImportSemaphoreFdKHR;
15356     stream->write(&opcode_vkImportSemaphoreFdKHR, sizeof(uint32_t));
15357     stream->write(&packetSize_vkImportSemaphoreFdKHR, sizeof(uint32_t));
15358     uint64_t cgen_var_1034;
15359     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1034, 1);
15360     stream->write((uint64_t*)&cgen_var_1034, 1 * 8);
15361     marshal_VkImportSemaphoreFdInfoKHR(stream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo));
15362     AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR readParams");
15363     AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR returnUnmarshal");
15364     VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
15365     stream->read(&vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
15366     countingStream->clearPool();
15367     stream->clearPool();
15368     pool->freeAll();
15369     mImpl->log("finish vkImportSemaphoreFdKHR");;
15370     return vkImportSemaphoreFdKHR_VkResult_return;
15371 }
15372 
vkGetSemaphoreFdKHR(VkDevice device,const VkSemaphoreGetFdInfoKHR * pGetFdInfo,int * pFd)15373 VkResult VkEncoder::vkGetSemaphoreFdKHR(
15374     VkDevice device,
15375     const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
15376     int* pFd)
15377 {
15378     AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR encode");
15379     mImpl->log("start vkGetSemaphoreFdKHR");
15380     auto stream = mImpl->stream();
15381     auto countingStream = mImpl->countingStream();
15382     auto resources = mImpl->resources();
15383     auto pool = mImpl->pool();
15384     stream->setHandleMapping(resources->unwrapMapping());
15385     VkDevice local_device;
15386     VkSemaphoreGetFdInfoKHR* local_pGetFdInfo;
15387     local_device = device;
15388     local_pGetFdInfo = nullptr;
15389     if (pGetFdInfo)
15390     {
15391         local_pGetFdInfo = (VkSemaphoreGetFdInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetFdInfoKHR));
15392         deepcopy_VkSemaphoreGetFdInfoKHR(pool, pGetFdInfo, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
15393     }
15394     if (local_pGetFdInfo)
15395     {
15396         transform_tohost_VkSemaphoreGetFdInfoKHR(mImpl->resources(), (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
15397     }
15398     countingStream->rewind();
15399     {
15400         uint64_t cgen_var_1035;
15401         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1035, 1);
15402         countingStream->write((uint64_t*)&cgen_var_1035, 1 * 8);
15403         marshal_VkSemaphoreGetFdInfoKHR(countingStream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
15404         countingStream->write((int*)pFd, sizeof(int));
15405     }
15406     uint32_t packetSize_vkGetSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15407     countingStream->rewind();
15408     uint32_t opcode_vkGetSemaphoreFdKHR = OP_vkGetSemaphoreFdKHR;
15409     stream->write(&opcode_vkGetSemaphoreFdKHR, sizeof(uint32_t));
15410     stream->write(&packetSize_vkGetSemaphoreFdKHR, sizeof(uint32_t));
15411     uint64_t cgen_var_1036;
15412     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1036, 1);
15413     stream->write((uint64_t*)&cgen_var_1036, 1 * 8);
15414     marshal_VkSemaphoreGetFdInfoKHR(stream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo));
15415     stream->write((int*)pFd, sizeof(int));
15416     AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR readParams");
15417     stream->read((int*)pFd, sizeof(int));
15418     AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR returnUnmarshal");
15419     VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
15420     stream->read(&vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult));
15421     countingStream->clearPool();
15422     stream->clearPool();
15423     pool->freeAll();
15424     mImpl->log("finish vkGetSemaphoreFdKHR");;
15425     return vkGetSemaphoreFdKHR_VkResult_return;
15426 }
15427 
15428 #endif
15429 #ifdef VK_KHR_push_descriptor
vkCmdPushDescriptorSetKHR(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t set,uint32_t descriptorWriteCount,const VkWriteDescriptorSet * pDescriptorWrites)15430 void VkEncoder::vkCmdPushDescriptorSetKHR(
15431     VkCommandBuffer commandBuffer,
15432     VkPipelineBindPoint pipelineBindPoint,
15433     VkPipelineLayout layout,
15434     uint32_t set,
15435     uint32_t descriptorWriteCount,
15436     const VkWriteDescriptorSet* pDescriptorWrites)
15437 {
15438     AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR encode");
15439     mImpl->log("start vkCmdPushDescriptorSetKHR");
15440     auto stream = mImpl->stream();
15441     auto countingStream = mImpl->countingStream();
15442     auto resources = mImpl->resources();
15443     auto pool = mImpl->pool();
15444     stream->setHandleMapping(resources->unwrapMapping());
15445     VkCommandBuffer local_commandBuffer;
15446     VkPipelineBindPoint local_pipelineBindPoint;
15447     VkPipelineLayout local_layout;
15448     uint32_t local_set;
15449     uint32_t local_descriptorWriteCount;
15450     VkWriteDescriptorSet* local_pDescriptorWrites;
15451     local_commandBuffer = commandBuffer;
15452     local_pipelineBindPoint = pipelineBindPoint;
15453     local_layout = layout;
15454     local_set = set;
15455     local_descriptorWriteCount = descriptorWriteCount;
15456     local_pDescriptorWrites = nullptr;
15457     if (pDescriptorWrites)
15458     {
15459         local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet));
15460         for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
15461         {
15462             deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
15463         }
15464     }
15465     if (local_pDescriptorWrites)
15466     {
15467         for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
15468         {
15469             transform_tohost_VkWriteDescriptorSet(mImpl->resources(), (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
15470         }
15471     }
15472     countingStream->rewind();
15473     {
15474         uint64_t cgen_var_1037;
15475         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1037, 1);
15476         countingStream->write((uint64_t*)&cgen_var_1037, 1 * 8);
15477         countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
15478         uint64_t cgen_var_1038;
15479         countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1038, 1);
15480         countingStream->write((uint64_t*)&cgen_var_1038, 1 * 8);
15481         countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
15482         countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
15483         for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
15484         {
15485             marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
15486         }
15487     }
15488     uint32_t packetSize_vkCmdPushDescriptorSetKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15489     countingStream->rewind();
15490     uint32_t opcode_vkCmdPushDescriptorSetKHR = OP_vkCmdPushDescriptorSetKHR;
15491     stream->write(&opcode_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
15492     stream->write(&packetSize_vkCmdPushDescriptorSetKHR, sizeof(uint32_t));
15493     uint64_t cgen_var_1039;
15494     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1039, 1);
15495     stream->write((uint64_t*)&cgen_var_1039, 1 * 8);
15496     stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint));
15497     uint64_t cgen_var_1040;
15498     stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1040, 1);
15499     stream->write((uint64_t*)&cgen_var_1040, 1 * 8);
15500     stream->write((uint32_t*)&local_set, sizeof(uint32_t));
15501     stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t));
15502     for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i)
15503     {
15504         marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i));
15505     }
15506     AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR readParams");
15507     AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR returnUnmarshal");
15508     mImpl->log("finish vkCmdPushDescriptorSetKHR");;
15509 }
15510 
vkCmdPushDescriptorSetWithTemplateKHR(VkCommandBuffer commandBuffer,VkDescriptorUpdateTemplate descriptorUpdateTemplate,VkPipelineLayout layout,uint32_t set,const void * pData)15511 void VkEncoder::vkCmdPushDescriptorSetWithTemplateKHR(
15512     VkCommandBuffer commandBuffer,
15513     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
15514     VkPipelineLayout layout,
15515     uint32_t set,
15516     const void* pData)
15517 {
15518     AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR encode");
15519     mImpl->log("start vkCmdPushDescriptorSetWithTemplateKHR");
15520     auto stream = mImpl->stream();
15521     auto countingStream = mImpl->countingStream();
15522     auto resources = mImpl->resources();
15523     auto pool = mImpl->pool();
15524     stream->setHandleMapping(resources->unwrapMapping());
15525     VkCommandBuffer local_commandBuffer;
15526     VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
15527     VkPipelineLayout local_layout;
15528     uint32_t local_set;
15529     void* local_pData;
15530     local_commandBuffer = commandBuffer;
15531     local_descriptorUpdateTemplate = descriptorUpdateTemplate;
15532     local_layout = layout;
15533     local_set = set;
15534     local_pData = nullptr;
15535     if (pData)
15536     {
15537         local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
15538     }
15539     countingStream->rewind();
15540     {
15541         uint64_t cgen_var_1041;
15542         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1041, 1);
15543         countingStream->write((uint64_t*)&cgen_var_1041, 1 * 8);
15544         uint64_t cgen_var_1042;
15545         countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1042, 1);
15546         countingStream->write((uint64_t*)&cgen_var_1042, 1 * 8);
15547         uint64_t cgen_var_1043;
15548         countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1043, 1);
15549         countingStream->write((uint64_t*)&cgen_var_1043, 1 * 8);
15550         countingStream->write((uint32_t*)&local_set, sizeof(uint32_t));
15551         // WARNING PTR CHECK
15552         uint64_t cgen_var_1044 = (uint64_t)(uintptr_t)local_pData;
15553         countingStream->putBe64(cgen_var_1044);
15554         if (local_pData)
15555         {
15556             countingStream->write((void*)local_pData, sizeof(uint8_t));
15557         }
15558     }
15559     uint32_t packetSize_vkCmdPushDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15560     countingStream->rewind();
15561     uint32_t opcode_vkCmdPushDescriptorSetWithTemplateKHR = OP_vkCmdPushDescriptorSetWithTemplateKHR;
15562     stream->write(&opcode_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
15563     stream->write(&packetSize_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t));
15564     uint64_t cgen_var_1045;
15565     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1045, 1);
15566     stream->write((uint64_t*)&cgen_var_1045, 1 * 8);
15567     uint64_t cgen_var_1046;
15568     stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1046, 1);
15569     stream->write((uint64_t*)&cgen_var_1046, 1 * 8);
15570     uint64_t cgen_var_1047;
15571     stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1047, 1);
15572     stream->write((uint64_t*)&cgen_var_1047, 1 * 8);
15573     stream->write((uint32_t*)&local_set, sizeof(uint32_t));
15574     // WARNING PTR CHECK
15575     uint64_t cgen_var_1048 = (uint64_t)(uintptr_t)local_pData;
15576     stream->putBe64(cgen_var_1048);
15577     if (local_pData)
15578     {
15579         stream->write((void*)local_pData, sizeof(uint8_t));
15580     }
15581     AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR readParams");
15582     AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR returnUnmarshal");
15583     mImpl->log("finish vkCmdPushDescriptorSetWithTemplateKHR");;
15584 }
15585 
15586 #endif
15587 #ifdef VK_KHR_16bit_storage
15588 #endif
15589 #ifdef VK_KHR_incremental_present
15590 #endif
15591 #ifdef VK_KHR_descriptor_update_template
vkCreateDescriptorUpdateTemplateKHR(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)15592 VkResult VkEncoder::vkCreateDescriptorUpdateTemplateKHR(
15593     VkDevice device,
15594     const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
15595     const VkAllocationCallbacks* pAllocator,
15596     VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
15597 {
15598     AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR encode");
15599     mImpl->log("start vkCreateDescriptorUpdateTemplateKHR");
15600     auto stream = mImpl->stream();
15601     auto countingStream = mImpl->countingStream();
15602     auto resources = mImpl->resources();
15603     auto pool = mImpl->pool();
15604     stream->setHandleMapping(resources->unwrapMapping());
15605     VkDevice local_device;
15606     VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo;
15607     VkAllocationCallbacks* local_pAllocator;
15608     local_device = device;
15609     local_pCreateInfo = nullptr;
15610     if (pCreateInfo)
15611     {
15612         local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo));
15613         deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
15614     }
15615     local_pAllocator = nullptr;
15616     if (pAllocator)
15617     {
15618         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15619         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15620     }
15621     local_pAllocator = nullptr;
15622     if (local_pCreateInfo)
15623     {
15624         transform_tohost_VkDescriptorUpdateTemplateCreateInfo(mImpl->resources(), (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
15625     }
15626     if (local_pAllocator)
15627     {
15628         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
15629     }
15630     countingStream->rewind();
15631     {
15632         uint64_t cgen_var_1049;
15633         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1049, 1);
15634         countingStream->write((uint64_t*)&cgen_var_1049, 1 * 8);
15635         marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
15636         // WARNING PTR CHECK
15637         uint64_t cgen_var_1050 = (uint64_t)(uintptr_t)local_pAllocator;
15638         countingStream->putBe64(cgen_var_1050);
15639         if (local_pAllocator)
15640         {
15641             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
15642         }
15643         uint64_t cgen_var_1051;
15644         countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1051, 1);
15645         countingStream->write((uint64_t*)&cgen_var_1051, 8);
15646     }
15647     uint32_t packetSize_vkCreateDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15648     countingStream->rewind();
15649     uint32_t opcode_vkCreateDescriptorUpdateTemplateKHR = OP_vkCreateDescriptorUpdateTemplateKHR;
15650     stream->write(&opcode_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
15651     stream->write(&packetSize_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t));
15652     uint64_t cgen_var_1052;
15653     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1052, 1);
15654     stream->write((uint64_t*)&cgen_var_1052, 1 * 8);
15655     marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo));
15656     // WARNING PTR CHECK
15657     uint64_t cgen_var_1053 = (uint64_t)(uintptr_t)local_pAllocator;
15658     stream->putBe64(cgen_var_1053);
15659     if (local_pAllocator)
15660     {
15661         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
15662     }
15663     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
15664     uint64_t cgen_var_1054;
15665     stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1054, 1);
15666     stream->write((uint64_t*)&cgen_var_1054, 8);
15667     stream->setHandleMapping(resources->unwrapMapping());
15668     AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR readParams");
15669     stream->setHandleMapping(resources->createMapping());
15670     uint64_t cgen_var_1055;
15671     stream->read((uint64_t*)&cgen_var_1055, 8);
15672     stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_1055, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1);
15673     stream->unsetHandleMapping();
15674     AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR returnUnmarshal");
15675     VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
15676     stream->read(&vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult));
15677     countingStream->clearPool();
15678     stream->clearPool();
15679     pool->freeAll();
15680     mImpl->resources()->on_vkCreateDescriptorUpdateTemplateKHR(this, vkCreateDescriptorUpdateTemplateKHR_VkResult_return, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
15681     mImpl->log("finish vkCreateDescriptorUpdateTemplateKHR");;
15682     return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
15683 }
15684 
vkDestroyDescriptorUpdateTemplateKHR(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)15685 void VkEncoder::vkDestroyDescriptorUpdateTemplateKHR(
15686     VkDevice device,
15687     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
15688     const VkAllocationCallbacks* pAllocator)
15689 {
15690     AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR encode");
15691     mImpl->log("start vkDestroyDescriptorUpdateTemplateKHR");
15692     auto stream = mImpl->stream();
15693     auto countingStream = mImpl->countingStream();
15694     auto resources = mImpl->resources();
15695     auto pool = mImpl->pool();
15696     stream->setHandleMapping(resources->unwrapMapping());
15697     VkDevice local_device;
15698     VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
15699     VkAllocationCallbacks* local_pAllocator;
15700     local_device = device;
15701     local_descriptorUpdateTemplate = descriptorUpdateTemplate;
15702     local_pAllocator = nullptr;
15703     if (pAllocator)
15704     {
15705         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15706         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15707     }
15708     local_pAllocator = nullptr;
15709     if (local_pAllocator)
15710     {
15711         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
15712     }
15713     countingStream->rewind();
15714     {
15715         uint64_t cgen_var_1056;
15716         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1056, 1);
15717         countingStream->write((uint64_t*)&cgen_var_1056, 1 * 8);
15718         uint64_t cgen_var_1057;
15719         countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1057, 1);
15720         countingStream->write((uint64_t*)&cgen_var_1057, 1 * 8);
15721         // WARNING PTR CHECK
15722         uint64_t cgen_var_1058 = (uint64_t)(uintptr_t)local_pAllocator;
15723         countingStream->putBe64(cgen_var_1058);
15724         if (local_pAllocator)
15725         {
15726             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
15727         }
15728     }
15729     uint32_t packetSize_vkDestroyDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15730     countingStream->rewind();
15731     uint32_t opcode_vkDestroyDescriptorUpdateTemplateKHR = OP_vkDestroyDescriptorUpdateTemplateKHR;
15732     stream->write(&opcode_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
15733     stream->write(&packetSize_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t));
15734     uint64_t cgen_var_1059;
15735     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1059, 1);
15736     stream->write((uint64_t*)&cgen_var_1059, 1 * 8);
15737     uint64_t cgen_var_1060;
15738     stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1060, 1);
15739     stream->write((uint64_t*)&cgen_var_1060, 1 * 8);
15740     // WARNING PTR CHECK
15741     uint64_t cgen_var_1061 = (uint64_t)(uintptr_t)local_pAllocator;
15742     stream->putBe64(cgen_var_1061);
15743     if (local_pAllocator)
15744     {
15745         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
15746     }
15747     AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR readParams");
15748     AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR returnUnmarshal");
15749     resources->destroyMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate);
15750     mImpl->log("finish vkDestroyDescriptorUpdateTemplateKHR");;
15751 }
15752 
vkUpdateDescriptorSetWithTemplateKHR(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)15753 void VkEncoder::vkUpdateDescriptorSetWithTemplateKHR(
15754     VkDevice device,
15755     VkDescriptorSet descriptorSet,
15756     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
15757     const void* pData)
15758 {
15759     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR encode");
15760     mImpl->log("start vkUpdateDescriptorSetWithTemplateKHR");
15761     auto stream = mImpl->stream();
15762     auto countingStream = mImpl->countingStream();
15763     auto resources = mImpl->resources();
15764     auto pool = mImpl->pool();
15765     stream->setHandleMapping(resources->unwrapMapping());
15766     VkDevice local_device;
15767     VkDescriptorSet local_descriptorSet;
15768     VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
15769     void* local_pData;
15770     local_device = device;
15771     local_descriptorSet = descriptorSet;
15772     local_descriptorUpdateTemplate = descriptorUpdateTemplate;
15773     local_pData = nullptr;
15774     if (pData)
15775     {
15776         local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t));
15777     }
15778     countingStream->rewind();
15779     {
15780         uint64_t cgen_var_1062;
15781         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1062, 1);
15782         countingStream->write((uint64_t*)&cgen_var_1062, 1 * 8);
15783         uint64_t cgen_var_1063;
15784         countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1063, 1);
15785         countingStream->write((uint64_t*)&cgen_var_1063, 1 * 8);
15786         uint64_t cgen_var_1064;
15787         countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1064, 1);
15788         countingStream->write((uint64_t*)&cgen_var_1064, 1 * 8);
15789         // WARNING PTR CHECK
15790         uint64_t cgen_var_1065 = (uint64_t)(uintptr_t)local_pData;
15791         countingStream->putBe64(cgen_var_1065);
15792         if (local_pData)
15793         {
15794             countingStream->write((void*)local_pData, sizeof(uint8_t));
15795         }
15796     }
15797     uint32_t packetSize_vkUpdateDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15798     countingStream->rewind();
15799     uint32_t opcode_vkUpdateDescriptorSetWithTemplateKHR = OP_vkUpdateDescriptorSetWithTemplateKHR;
15800     stream->write(&opcode_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
15801     stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t));
15802     uint64_t cgen_var_1066;
15803     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1066, 1);
15804     stream->write((uint64_t*)&cgen_var_1066, 1 * 8);
15805     uint64_t cgen_var_1067;
15806     stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1067, 1);
15807     stream->write((uint64_t*)&cgen_var_1067, 1 * 8);
15808     uint64_t cgen_var_1068;
15809     stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1068, 1);
15810     stream->write((uint64_t*)&cgen_var_1068, 1 * 8);
15811     // WARNING PTR CHECK
15812     uint64_t cgen_var_1069 = (uint64_t)(uintptr_t)local_pData;
15813     stream->putBe64(cgen_var_1069);
15814     if (local_pData)
15815     {
15816         stream->write((void*)local_pData, sizeof(uint8_t));
15817     }
15818     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR readParams");
15819     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR returnUnmarshal");
15820     mImpl->log("finish vkUpdateDescriptorSetWithTemplateKHR");;
15821 }
15822 
15823 #endif
15824 #ifdef VK_KHR_create_renderpass2
vkCreateRenderPass2KHR(VkDevice device,const VkRenderPassCreateInfo2KHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)15825 VkResult VkEncoder::vkCreateRenderPass2KHR(
15826     VkDevice device,
15827     const VkRenderPassCreateInfo2KHR* pCreateInfo,
15828     const VkAllocationCallbacks* pAllocator,
15829     VkRenderPass* pRenderPass)
15830 {
15831     AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR encode");
15832     mImpl->log("start vkCreateRenderPass2KHR");
15833     auto stream = mImpl->stream();
15834     auto countingStream = mImpl->countingStream();
15835     auto resources = mImpl->resources();
15836     auto pool = mImpl->pool();
15837     stream->setHandleMapping(resources->unwrapMapping());
15838     VkDevice local_device;
15839     VkRenderPassCreateInfo2KHR* local_pCreateInfo;
15840     VkAllocationCallbacks* local_pAllocator;
15841     local_device = device;
15842     local_pCreateInfo = nullptr;
15843     if (pCreateInfo)
15844     {
15845         local_pCreateInfo = (VkRenderPassCreateInfo2KHR*)pool->alloc(sizeof(const VkRenderPassCreateInfo2KHR));
15846         deepcopy_VkRenderPassCreateInfo2KHR(pool, pCreateInfo, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
15847     }
15848     local_pAllocator = nullptr;
15849     if (pAllocator)
15850     {
15851         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
15852         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
15853     }
15854     local_pAllocator = nullptr;
15855     if (local_pCreateInfo)
15856     {
15857         transform_tohost_VkRenderPassCreateInfo2KHR(mImpl->resources(), (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
15858     }
15859     if (local_pAllocator)
15860     {
15861         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
15862     }
15863     countingStream->rewind();
15864     {
15865         uint64_t cgen_var_1070;
15866         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1070, 1);
15867         countingStream->write((uint64_t*)&cgen_var_1070, 1 * 8);
15868         marshal_VkRenderPassCreateInfo2KHR(countingStream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
15869         // WARNING PTR CHECK
15870         uint64_t cgen_var_1071 = (uint64_t)(uintptr_t)local_pAllocator;
15871         countingStream->putBe64(cgen_var_1071);
15872         if (local_pAllocator)
15873         {
15874             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
15875         }
15876         uint64_t cgen_var_1072;
15877         countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1072, 1);
15878         countingStream->write((uint64_t*)&cgen_var_1072, 8);
15879     }
15880     uint32_t packetSize_vkCreateRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15881     countingStream->rewind();
15882     uint32_t opcode_vkCreateRenderPass2KHR = OP_vkCreateRenderPass2KHR;
15883     stream->write(&opcode_vkCreateRenderPass2KHR, sizeof(uint32_t));
15884     stream->write(&packetSize_vkCreateRenderPass2KHR, sizeof(uint32_t));
15885     uint64_t cgen_var_1073;
15886     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1073, 1);
15887     stream->write((uint64_t*)&cgen_var_1073, 1 * 8);
15888     marshal_VkRenderPassCreateInfo2KHR(stream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo));
15889     // WARNING PTR CHECK
15890     uint64_t cgen_var_1074 = (uint64_t)(uintptr_t)local_pAllocator;
15891     stream->putBe64(cgen_var_1074);
15892     if (local_pAllocator)
15893     {
15894         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
15895     }
15896     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
15897     uint64_t cgen_var_1075;
15898     stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1075, 1);
15899     stream->write((uint64_t*)&cgen_var_1075, 8);
15900     stream->setHandleMapping(resources->unwrapMapping());
15901     AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR readParams");
15902     uint64_t cgen_var_1076;
15903     stream->read((uint64_t*)&cgen_var_1076, 8);
15904     stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_1076, (VkRenderPass*)pRenderPass, 1);
15905     AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR returnUnmarshal");
15906     VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
15907     stream->read(&vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult));
15908     countingStream->clearPool();
15909     stream->clearPool();
15910     pool->freeAll();
15911     mImpl->log("finish vkCreateRenderPass2KHR");;
15912     return vkCreateRenderPass2KHR_VkResult_return;
15913 }
15914 
vkCmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,const VkSubpassBeginInfoKHR * pSubpassBeginInfo)15915 void VkEncoder::vkCmdBeginRenderPass2KHR(
15916     VkCommandBuffer commandBuffer,
15917     const VkRenderPassBeginInfo* pRenderPassBegin,
15918     const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
15919 {
15920     AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR encode");
15921     mImpl->log("start vkCmdBeginRenderPass2KHR");
15922     auto stream = mImpl->stream();
15923     auto countingStream = mImpl->countingStream();
15924     auto resources = mImpl->resources();
15925     auto pool = mImpl->pool();
15926     stream->setHandleMapping(resources->unwrapMapping());
15927     VkCommandBuffer local_commandBuffer;
15928     VkRenderPassBeginInfo* local_pRenderPassBegin;
15929     VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
15930     local_commandBuffer = commandBuffer;
15931     local_pRenderPassBegin = nullptr;
15932     if (pRenderPassBegin)
15933     {
15934         local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo));
15935         deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15936     }
15937     local_pSubpassBeginInfo = nullptr;
15938     if (pSubpassBeginInfo)
15939     {
15940         local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
15941         deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15942     }
15943     if (local_pRenderPassBegin)
15944     {
15945         transform_tohost_VkRenderPassBeginInfo(mImpl->resources(), (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15946     }
15947     if (local_pSubpassBeginInfo)
15948     {
15949         transform_tohost_VkSubpassBeginInfoKHR(mImpl->resources(), (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15950     }
15951     countingStream->rewind();
15952     {
15953         uint64_t cgen_var_1077;
15954         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1077, 1);
15955         countingStream->write((uint64_t*)&cgen_var_1077, 1 * 8);
15956         marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15957         marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15958     }
15959     uint32_t packetSize_vkCmdBeginRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
15960     countingStream->rewind();
15961     uint32_t opcode_vkCmdBeginRenderPass2KHR = OP_vkCmdBeginRenderPass2KHR;
15962     stream->write(&opcode_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
15963     stream->write(&packetSize_vkCmdBeginRenderPass2KHR, sizeof(uint32_t));
15964     uint64_t cgen_var_1078;
15965     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1078, 1);
15966     stream->write((uint64_t*)&cgen_var_1078, 1 * 8);
15967     marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin));
15968     marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15969     AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR readParams");
15970     AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR returnUnmarshal");
15971     mImpl->log("finish vkCmdBeginRenderPass2KHR");;
15972 }
15973 
vkCmdNextSubpass2KHR(VkCommandBuffer commandBuffer,const VkSubpassBeginInfoKHR * pSubpassBeginInfo,const VkSubpassEndInfoKHR * pSubpassEndInfo)15974 void VkEncoder::vkCmdNextSubpass2KHR(
15975     VkCommandBuffer commandBuffer,
15976     const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
15977     const VkSubpassEndInfoKHR* pSubpassEndInfo)
15978 {
15979     AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR encode");
15980     mImpl->log("start vkCmdNextSubpass2KHR");
15981     auto stream = mImpl->stream();
15982     auto countingStream = mImpl->countingStream();
15983     auto resources = mImpl->resources();
15984     auto pool = mImpl->pool();
15985     stream->setHandleMapping(resources->unwrapMapping());
15986     VkCommandBuffer local_commandBuffer;
15987     VkSubpassBeginInfoKHR* local_pSubpassBeginInfo;
15988     VkSubpassEndInfoKHR* local_pSubpassEndInfo;
15989     local_commandBuffer = commandBuffer;
15990     local_pSubpassBeginInfo = nullptr;
15991     if (pSubpassBeginInfo)
15992     {
15993         local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR));
15994         deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
15995     }
15996     local_pSubpassEndInfo = nullptr;
15997     if (pSubpassEndInfo)
15998     {
15999         local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
16000         deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
16001     }
16002     if (local_pSubpassBeginInfo)
16003     {
16004         transform_tohost_VkSubpassBeginInfoKHR(mImpl->resources(), (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
16005     }
16006     if (local_pSubpassEndInfo)
16007     {
16008         transform_tohost_VkSubpassEndInfoKHR(mImpl->resources(), (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
16009     }
16010     countingStream->rewind();
16011     {
16012         uint64_t cgen_var_1079;
16013         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1079, 1);
16014         countingStream->write((uint64_t*)&cgen_var_1079, 1 * 8);
16015         marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
16016         marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
16017     }
16018     uint32_t packetSize_vkCmdNextSubpass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16019     countingStream->rewind();
16020     uint32_t opcode_vkCmdNextSubpass2KHR = OP_vkCmdNextSubpass2KHR;
16021     stream->write(&opcode_vkCmdNextSubpass2KHR, sizeof(uint32_t));
16022     stream->write(&packetSize_vkCmdNextSubpass2KHR, sizeof(uint32_t));
16023     uint64_t cgen_var_1080;
16024     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1080, 1);
16025     stream->write((uint64_t*)&cgen_var_1080, 1 * 8);
16026     marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo));
16027     marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
16028     AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR readParams");
16029     AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR returnUnmarshal");
16030     mImpl->log("finish vkCmdNextSubpass2KHR");;
16031 }
16032 
vkCmdEndRenderPass2KHR(VkCommandBuffer commandBuffer,const VkSubpassEndInfoKHR * pSubpassEndInfo)16033 void VkEncoder::vkCmdEndRenderPass2KHR(
16034     VkCommandBuffer commandBuffer,
16035     const VkSubpassEndInfoKHR* pSubpassEndInfo)
16036 {
16037     AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR encode");
16038     mImpl->log("start vkCmdEndRenderPass2KHR");
16039     auto stream = mImpl->stream();
16040     auto countingStream = mImpl->countingStream();
16041     auto resources = mImpl->resources();
16042     auto pool = mImpl->pool();
16043     stream->setHandleMapping(resources->unwrapMapping());
16044     VkCommandBuffer local_commandBuffer;
16045     VkSubpassEndInfoKHR* local_pSubpassEndInfo;
16046     local_commandBuffer = commandBuffer;
16047     local_pSubpassEndInfo = nullptr;
16048     if (pSubpassEndInfo)
16049     {
16050         local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR));
16051         deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
16052     }
16053     if (local_pSubpassEndInfo)
16054     {
16055         transform_tohost_VkSubpassEndInfoKHR(mImpl->resources(), (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
16056     }
16057     countingStream->rewind();
16058     {
16059         uint64_t cgen_var_1081;
16060         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1081, 1);
16061         countingStream->write((uint64_t*)&cgen_var_1081, 1 * 8);
16062         marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
16063     }
16064     uint32_t packetSize_vkCmdEndRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16065     countingStream->rewind();
16066     uint32_t opcode_vkCmdEndRenderPass2KHR = OP_vkCmdEndRenderPass2KHR;
16067     stream->write(&opcode_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
16068     stream->write(&packetSize_vkCmdEndRenderPass2KHR, sizeof(uint32_t));
16069     uint64_t cgen_var_1082;
16070     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1082, 1);
16071     stream->write((uint64_t*)&cgen_var_1082, 1 * 8);
16072     marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo));
16073     AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR readParams");
16074     AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR returnUnmarshal");
16075     mImpl->log("finish vkCmdEndRenderPass2KHR");;
16076 }
16077 
16078 #endif
16079 #ifdef VK_KHR_shared_presentable_image
vkGetSwapchainStatusKHR(VkDevice device,VkSwapchainKHR swapchain)16080 VkResult VkEncoder::vkGetSwapchainStatusKHR(
16081     VkDevice device,
16082     VkSwapchainKHR swapchain)
16083 {
16084     AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR encode");
16085     mImpl->log("start vkGetSwapchainStatusKHR");
16086     auto stream = mImpl->stream();
16087     auto countingStream = mImpl->countingStream();
16088     auto resources = mImpl->resources();
16089     auto pool = mImpl->pool();
16090     stream->setHandleMapping(resources->unwrapMapping());
16091     VkDevice local_device;
16092     VkSwapchainKHR local_swapchain;
16093     local_device = device;
16094     local_swapchain = swapchain;
16095     countingStream->rewind();
16096     {
16097         uint64_t cgen_var_1083;
16098         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1083, 1);
16099         countingStream->write((uint64_t*)&cgen_var_1083, 1 * 8);
16100         uint64_t cgen_var_1084;
16101         countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1084, 1);
16102         countingStream->write((uint64_t*)&cgen_var_1084, 1 * 8);
16103     }
16104     uint32_t packetSize_vkGetSwapchainStatusKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16105     countingStream->rewind();
16106     uint32_t opcode_vkGetSwapchainStatusKHR = OP_vkGetSwapchainStatusKHR;
16107     stream->write(&opcode_vkGetSwapchainStatusKHR, sizeof(uint32_t));
16108     stream->write(&packetSize_vkGetSwapchainStatusKHR, sizeof(uint32_t));
16109     uint64_t cgen_var_1085;
16110     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1085, 1);
16111     stream->write((uint64_t*)&cgen_var_1085, 1 * 8);
16112     uint64_t cgen_var_1086;
16113     stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1086, 1);
16114     stream->write((uint64_t*)&cgen_var_1086, 1 * 8);
16115     AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR readParams");
16116     AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR returnUnmarshal");
16117     VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0;
16118     stream->read(&vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult));
16119     countingStream->clearPool();
16120     stream->clearPool();
16121     pool->freeAll();
16122     mImpl->log("finish vkGetSwapchainStatusKHR");;
16123     return vkGetSwapchainStatusKHR_VkResult_return;
16124 }
16125 
16126 #endif
16127 #ifdef VK_KHR_external_fence_capabilities
vkGetPhysicalDeviceExternalFencePropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo,VkExternalFenceProperties * pExternalFenceProperties)16128 void VkEncoder::vkGetPhysicalDeviceExternalFencePropertiesKHR(
16129     VkPhysicalDevice physicalDevice,
16130     const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
16131     VkExternalFenceProperties* pExternalFenceProperties)
16132 {
16133     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR encode");
16134     mImpl->log("start vkGetPhysicalDeviceExternalFencePropertiesKHR");
16135     auto stream = mImpl->stream();
16136     auto countingStream = mImpl->countingStream();
16137     auto resources = mImpl->resources();
16138     auto pool = mImpl->pool();
16139     stream->setHandleMapping(resources->unwrapMapping());
16140     VkPhysicalDevice local_physicalDevice;
16141     VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo;
16142     local_physicalDevice = physicalDevice;
16143     local_pExternalFenceInfo = nullptr;
16144     if (pExternalFenceInfo)
16145     {
16146         local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo));
16147         deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
16148     }
16149     if (local_pExternalFenceInfo)
16150     {
16151         transform_tohost_VkPhysicalDeviceExternalFenceInfo(mImpl->resources(), (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
16152     }
16153     countingStream->rewind();
16154     {
16155         uint64_t cgen_var_1087;
16156         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1087, 1);
16157         countingStream->write((uint64_t*)&cgen_var_1087, 1 * 8);
16158         marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
16159         marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties));
16160     }
16161     uint32_t packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16162     countingStream->rewind();
16163     uint32_t opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR = OP_vkGetPhysicalDeviceExternalFencePropertiesKHR;
16164     stream->write(&opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
16165     stream->write(&packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t));
16166     uint64_t cgen_var_1088;
16167     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1088, 1);
16168     stream->write((uint64_t*)&cgen_var_1088, 1 * 8);
16169     marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo));
16170     marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
16171     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR readParams");
16172     unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties));
16173     if (pExternalFenceProperties)
16174     {
16175         transform_fromhost_VkExternalFenceProperties(mImpl->resources(), (VkExternalFenceProperties*)(pExternalFenceProperties));
16176     }
16177     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR returnUnmarshal");
16178     mImpl->log("finish vkGetPhysicalDeviceExternalFencePropertiesKHR");;
16179 }
16180 
16181 #endif
16182 #ifdef VK_KHR_external_fence
16183 #endif
16184 #ifdef VK_KHR_external_fence_win32
vkImportFenceWin32HandleKHR(VkDevice device,const VkImportFenceWin32HandleInfoKHR * pImportFenceWin32HandleInfo)16185 VkResult VkEncoder::vkImportFenceWin32HandleKHR(
16186     VkDevice device,
16187     const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
16188 {
16189     AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR encode");
16190     mImpl->log("start vkImportFenceWin32HandleKHR");
16191     auto stream = mImpl->stream();
16192     auto countingStream = mImpl->countingStream();
16193     auto resources = mImpl->resources();
16194     auto pool = mImpl->pool();
16195     stream->setHandleMapping(resources->unwrapMapping());
16196     VkDevice local_device;
16197     VkImportFenceWin32HandleInfoKHR* local_pImportFenceWin32HandleInfo;
16198     local_device = device;
16199     local_pImportFenceWin32HandleInfo = nullptr;
16200     if (pImportFenceWin32HandleInfo)
16201     {
16202         local_pImportFenceWin32HandleInfo = (VkImportFenceWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportFenceWin32HandleInfoKHR));
16203         deepcopy_VkImportFenceWin32HandleInfoKHR(pool, pImportFenceWin32HandleInfo, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
16204     }
16205     if (local_pImportFenceWin32HandleInfo)
16206     {
16207         transform_tohost_VkImportFenceWin32HandleInfoKHR(mImpl->resources(), (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
16208     }
16209     countingStream->rewind();
16210     {
16211         uint64_t cgen_var_1089;
16212         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1089, 1);
16213         countingStream->write((uint64_t*)&cgen_var_1089, 1 * 8);
16214         marshal_VkImportFenceWin32HandleInfoKHR(countingStream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
16215     }
16216     uint32_t packetSize_vkImportFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16217     countingStream->rewind();
16218     uint32_t opcode_vkImportFenceWin32HandleKHR = OP_vkImportFenceWin32HandleKHR;
16219     stream->write(&opcode_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
16220     stream->write(&packetSize_vkImportFenceWin32HandleKHR, sizeof(uint32_t));
16221     uint64_t cgen_var_1090;
16222     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1090, 1);
16223     stream->write((uint64_t*)&cgen_var_1090, 1 * 8);
16224     marshal_VkImportFenceWin32HandleInfoKHR(stream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo));
16225     AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR readParams");
16226     AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR returnUnmarshal");
16227     VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0;
16228     stream->read(&vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
16229     countingStream->clearPool();
16230     stream->clearPool();
16231     pool->freeAll();
16232     mImpl->log("finish vkImportFenceWin32HandleKHR");;
16233     return vkImportFenceWin32HandleKHR_VkResult_return;
16234 }
16235 
vkGetFenceWin32HandleKHR(VkDevice device,const VkFenceGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)16236 VkResult VkEncoder::vkGetFenceWin32HandleKHR(
16237     VkDevice device,
16238     const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
16239     HANDLE* pHandle)
16240 {
16241     AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR encode");
16242     mImpl->log("start vkGetFenceWin32HandleKHR");
16243     auto stream = mImpl->stream();
16244     auto countingStream = mImpl->countingStream();
16245     auto resources = mImpl->resources();
16246     auto pool = mImpl->pool();
16247     stream->setHandleMapping(resources->unwrapMapping());
16248     VkDevice local_device;
16249     VkFenceGetWin32HandleInfoKHR* local_pGetWin32HandleInfo;
16250     local_device = device;
16251     local_pGetWin32HandleInfo = nullptr;
16252     if (pGetWin32HandleInfo)
16253     {
16254         local_pGetWin32HandleInfo = (VkFenceGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkFenceGetWin32HandleInfoKHR));
16255         deepcopy_VkFenceGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
16256     }
16257     if (local_pGetWin32HandleInfo)
16258     {
16259         transform_tohost_VkFenceGetWin32HandleInfoKHR(mImpl->resources(), (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
16260     }
16261     countingStream->rewind();
16262     {
16263         uint64_t cgen_var_1091;
16264         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1091, 1);
16265         countingStream->write((uint64_t*)&cgen_var_1091, 1 * 8);
16266         marshal_VkFenceGetWin32HandleInfoKHR(countingStream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
16267         countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
16268     }
16269     uint32_t packetSize_vkGetFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16270     countingStream->rewind();
16271     uint32_t opcode_vkGetFenceWin32HandleKHR = OP_vkGetFenceWin32HandleKHR;
16272     stream->write(&opcode_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
16273     stream->write(&packetSize_vkGetFenceWin32HandleKHR, sizeof(uint32_t));
16274     uint64_t cgen_var_1092;
16275     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1092, 1);
16276     stream->write((uint64_t*)&cgen_var_1092, 1 * 8);
16277     marshal_VkFenceGetWin32HandleInfoKHR(stream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo));
16278     stream->write((HANDLE*)pHandle, sizeof(HANDLE));
16279     AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR readParams");
16280     stream->read((HANDLE*)pHandle, sizeof(HANDLE));
16281     AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR returnUnmarshal");
16282     VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0;
16283     stream->read(&vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult));
16284     countingStream->clearPool();
16285     stream->clearPool();
16286     pool->freeAll();
16287     mImpl->log("finish vkGetFenceWin32HandleKHR");;
16288     return vkGetFenceWin32HandleKHR_VkResult_return;
16289 }
16290 
16291 #endif
16292 #ifdef VK_KHR_external_fence_fd
vkImportFenceFdKHR(VkDevice device,const VkImportFenceFdInfoKHR * pImportFenceFdInfo)16293 VkResult VkEncoder::vkImportFenceFdKHR(
16294     VkDevice device,
16295     const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
16296 {
16297     AEMU_SCOPED_TRACE("vkImportFenceFdKHR encode");
16298     mImpl->log("start vkImportFenceFdKHR");
16299     auto stream = mImpl->stream();
16300     auto countingStream = mImpl->countingStream();
16301     auto resources = mImpl->resources();
16302     auto pool = mImpl->pool();
16303     stream->setHandleMapping(resources->unwrapMapping());
16304     VkDevice local_device;
16305     VkImportFenceFdInfoKHR* local_pImportFenceFdInfo;
16306     local_device = device;
16307     local_pImportFenceFdInfo = nullptr;
16308     if (pImportFenceFdInfo)
16309     {
16310         local_pImportFenceFdInfo = (VkImportFenceFdInfoKHR*)pool->alloc(sizeof(const VkImportFenceFdInfoKHR));
16311         deepcopy_VkImportFenceFdInfoKHR(pool, pImportFenceFdInfo, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
16312     }
16313     if (local_pImportFenceFdInfo)
16314     {
16315         transform_tohost_VkImportFenceFdInfoKHR(mImpl->resources(), (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
16316     }
16317     countingStream->rewind();
16318     {
16319         uint64_t cgen_var_1093;
16320         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1093, 1);
16321         countingStream->write((uint64_t*)&cgen_var_1093, 1 * 8);
16322         marshal_VkImportFenceFdInfoKHR(countingStream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
16323     }
16324     uint32_t packetSize_vkImportFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16325     countingStream->rewind();
16326     uint32_t opcode_vkImportFenceFdKHR = OP_vkImportFenceFdKHR;
16327     stream->write(&opcode_vkImportFenceFdKHR, sizeof(uint32_t));
16328     stream->write(&packetSize_vkImportFenceFdKHR, sizeof(uint32_t));
16329     uint64_t cgen_var_1094;
16330     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1094, 1);
16331     stream->write((uint64_t*)&cgen_var_1094, 1 * 8);
16332     marshal_VkImportFenceFdInfoKHR(stream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo));
16333     AEMU_SCOPED_TRACE("vkImportFenceFdKHR readParams");
16334     AEMU_SCOPED_TRACE("vkImportFenceFdKHR returnUnmarshal");
16335     VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
16336     stream->read(&vkImportFenceFdKHR_VkResult_return, sizeof(VkResult));
16337     countingStream->clearPool();
16338     stream->clearPool();
16339     pool->freeAll();
16340     mImpl->log("finish vkImportFenceFdKHR");;
16341     return vkImportFenceFdKHR_VkResult_return;
16342 }
16343 
vkGetFenceFdKHR(VkDevice device,const VkFenceGetFdInfoKHR * pGetFdInfo,int * pFd)16344 VkResult VkEncoder::vkGetFenceFdKHR(
16345     VkDevice device,
16346     const VkFenceGetFdInfoKHR* pGetFdInfo,
16347     int* pFd)
16348 {
16349     AEMU_SCOPED_TRACE("vkGetFenceFdKHR encode");
16350     mImpl->log("start vkGetFenceFdKHR");
16351     auto stream = mImpl->stream();
16352     auto countingStream = mImpl->countingStream();
16353     auto resources = mImpl->resources();
16354     auto pool = mImpl->pool();
16355     stream->setHandleMapping(resources->unwrapMapping());
16356     VkDevice local_device;
16357     VkFenceGetFdInfoKHR* local_pGetFdInfo;
16358     local_device = device;
16359     local_pGetFdInfo = nullptr;
16360     if (pGetFdInfo)
16361     {
16362         local_pGetFdInfo = (VkFenceGetFdInfoKHR*)pool->alloc(sizeof(const VkFenceGetFdInfoKHR));
16363         deepcopy_VkFenceGetFdInfoKHR(pool, pGetFdInfo, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
16364     }
16365     if (local_pGetFdInfo)
16366     {
16367         transform_tohost_VkFenceGetFdInfoKHR(mImpl->resources(), (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
16368     }
16369     countingStream->rewind();
16370     {
16371         uint64_t cgen_var_1095;
16372         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1095, 1);
16373         countingStream->write((uint64_t*)&cgen_var_1095, 1 * 8);
16374         marshal_VkFenceGetFdInfoKHR(countingStream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
16375         countingStream->write((int*)pFd, sizeof(int));
16376     }
16377     uint32_t packetSize_vkGetFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16378     countingStream->rewind();
16379     uint32_t opcode_vkGetFenceFdKHR = OP_vkGetFenceFdKHR;
16380     stream->write(&opcode_vkGetFenceFdKHR, sizeof(uint32_t));
16381     stream->write(&packetSize_vkGetFenceFdKHR, sizeof(uint32_t));
16382     uint64_t cgen_var_1096;
16383     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1096, 1);
16384     stream->write((uint64_t*)&cgen_var_1096, 1 * 8);
16385     marshal_VkFenceGetFdInfoKHR(stream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo));
16386     stream->write((int*)pFd, sizeof(int));
16387     AEMU_SCOPED_TRACE("vkGetFenceFdKHR readParams");
16388     stream->read((int*)pFd, sizeof(int));
16389     AEMU_SCOPED_TRACE("vkGetFenceFdKHR returnUnmarshal");
16390     VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
16391     stream->read(&vkGetFenceFdKHR_VkResult_return, sizeof(VkResult));
16392     countingStream->clearPool();
16393     stream->clearPool();
16394     pool->freeAll();
16395     mImpl->log("finish vkGetFenceFdKHR");;
16396     return vkGetFenceFdKHR_VkResult_return;
16397 }
16398 
16399 #endif
16400 #ifdef VK_KHR_maintenance2
16401 #endif
16402 #ifdef VK_KHR_get_surface_capabilities2
vkGetPhysicalDeviceSurfaceCapabilities2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,VkSurfaceCapabilities2KHR * pSurfaceCapabilities)16403 VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2KHR(
16404     VkPhysicalDevice physicalDevice,
16405     const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
16406     VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
16407 {
16408     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR encode");
16409     mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilities2KHR");
16410     auto stream = mImpl->stream();
16411     auto countingStream = mImpl->countingStream();
16412     auto resources = mImpl->resources();
16413     auto pool = mImpl->pool();
16414     stream->setHandleMapping(resources->unwrapMapping());
16415     VkPhysicalDevice local_physicalDevice;
16416     VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
16417     local_physicalDevice = physicalDevice;
16418     local_pSurfaceInfo = nullptr;
16419     if (pSurfaceInfo)
16420     {
16421         local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
16422         deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
16423     }
16424     if (local_pSurfaceInfo)
16425     {
16426         transform_tohost_VkPhysicalDeviceSurfaceInfo2KHR(mImpl->resources(), (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
16427     }
16428     countingStream->rewind();
16429     {
16430         uint64_t cgen_var_1097;
16431         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1097, 1);
16432         countingStream->write((uint64_t*)&cgen_var_1097, 1 * 8);
16433         marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
16434         marshal_VkSurfaceCapabilities2KHR(countingStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
16435     }
16436     uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16437     countingStream->rewind();
16438     uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR = OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR;
16439     stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
16440     stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t));
16441     uint64_t cgen_var_1098;
16442     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1098, 1);
16443     stream->write((uint64_t*)&cgen_var_1098, 1 * 8);
16444     marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
16445     marshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
16446     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR readParams");
16447     unmarshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
16448     if (pSurfaceCapabilities)
16449     {
16450         transform_fromhost_VkSurfaceCapabilities2KHR(mImpl->resources(), (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities));
16451     }
16452     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR returnUnmarshal");
16453     VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0;
16454     stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult));
16455     countingStream->clearPool();
16456     stream->clearPool();
16457     pool->freeAll();
16458     mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilities2KHR");;
16459     return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return;
16460 }
16461 
vkGetPhysicalDeviceSurfaceFormats2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,uint32_t * pSurfaceFormatCount,VkSurfaceFormat2KHR * pSurfaceFormats)16462 VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormats2KHR(
16463     VkPhysicalDevice physicalDevice,
16464     const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
16465     uint32_t* pSurfaceFormatCount,
16466     VkSurfaceFormat2KHR* pSurfaceFormats)
16467 {
16468     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR encode");
16469     mImpl->log("start vkGetPhysicalDeviceSurfaceFormats2KHR");
16470     auto stream = mImpl->stream();
16471     auto countingStream = mImpl->countingStream();
16472     auto resources = mImpl->resources();
16473     auto pool = mImpl->pool();
16474     stream->setHandleMapping(resources->unwrapMapping());
16475     VkPhysicalDevice local_physicalDevice;
16476     VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo;
16477     local_physicalDevice = physicalDevice;
16478     local_pSurfaceInfo = nullptr;
16479     if (pSurfaceInfo)
16480     {
16481         local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR));
16482         deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
16483     }
16484     if (local_pSurfaceInfo)
16485     {
16486         transform_tohost_VkPhysicalDeviceSurfaceInfo2KHR(mImpl->resources(), (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
16487     }
16488     countingStream->rewind();
16489     {
16490         uint64_t cgen_var_1099;
16491         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1099, 1);
16492         countingStream->write((uint64_t*)&cgen_var_1099, 1 * 8);
16493         marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
16494         // WARNING PTR CHECK
16495         uint64_t cgen_var_1100 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
16496         countingStream->putBe64(cgen_var_1100);
16497         if (pSurfaceFormatCount)
16498         {
16499             countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
16500         }
16501         // WARNING PTR CHECK
16502         uint64_t cgen_var_1101 = (uint64_t)(uintptr_t)pSurfaceFormats;
16503         countingStream->putBe64(cgen_var_1101);
16504         if (pSurfaceFormats)
16505         {
16506             for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
16507             {
16508                 marshal_VkSurfaceFormat2KHR(countingStream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
16509             }
16510         }
16511     }
16512     uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16513     countingStream->rewind();
16514     uint32_t opcode_vkGetPhysicalDeviceSurfaceFormats2KHR = OP_vkGetPhysicalDeviceSurfaceFormats2KHR;
16515     stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
16516     stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t));
16517     uint64_t cgen_var_1102;
16518     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1102, 1);
16519     stream->write((uint64_t*)&cgen_var_1102, 1 * 8);
16520     marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo));
16521     // WARNING PTR CHECK
16522     uint64_t cgen_var_1103 = (uint64_t)(uintptr_t)pSurfaceFormatCount;
16523     stream->putBe64(cgen_var_1103);
16524     if (pSurfaceFormatCount)
16525     {
16526         stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
16527     }
16528     // WARNING PTR CHECK
16529     uint64_t cgen_var_1104 = (uint64_t)(uintptr_t)pSurfaceFormats;
16530     stream->putBe64(cgen_var_1104);
16531     if (pSurfaceFormats)
16532     {
16533         for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
16534         {
16535             marshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
16536         }
16537     }
16538     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR readParams");
16539     // WARNING PTR CHECK
16540     uint32_t* check_pSurfaceFormatCount;
16541     check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64();
16542     if (pSurfaceFormatCount)
16543     {
16544         if (!(check_pSurfaceFormatCount))
16545         {
16546             fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n");
16547         }
16548         stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t));
16549     }
16550     // WARNING PTR CHECK
16551     VkSurfaceFormat2KHR* check_pSurfaceFormats;
16552     check_pSurfaceFormats = (VkSurfaceFormat2KHR*)(uintptr_t)stream->getBe64();
16553     if (pSurfaceFormats)
16554     {
16555         if (!(check_pSurfaceFormats))
16556         {
16557             fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n");
16558         }
16559         for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
16560         {
16561             unmarshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
16562         }
16563     }
16564     if (pSurfaceFormats)
16565     {
16566         for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i)
16567         {
16568             transform_fromhost_VkSurfaceFormat2KHR(mImpl->resources(), (VkSurfaceFormat2KHR*)(pSurfaceFormats + i));
16569         }
16570     }
16571     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR returnUnmarshal");
16572     VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0;
16573     stream->read(&vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult));
16574     countingStream->clearPool();
16575     stream->clearPool();
16576     pool->freeAll();
16577     mImpl->log("finish vkGetPhysicalDeviceSurfaceFormats2KHR");;
16578     return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return;
16579 }
16580 
16581 #endif
16582 #ifdef VK_KHR_variable_pointers
16583 #endif
16584 #ifdef VK_KHR_get_display_properties2
vkGetPhysicalDeviceDisplayProperties2KHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayProperties2KHR * pProperties)16585 VkResult VkEncoder::vkGetPhysicalDeviceDisplayProperties2KHR(
16586     VkPhysicalDevice physicalDevice,
16587     uint32_t* pPropertyCount,
16588     VkDisplayProperties2KHR* pProperties)
16589 {
16590     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR encode");
16591     mImpl->log("start vkGetPhysicalDeviceDisplayProperties2KHR");
16592     auto stream = mImpl->stream();
16593     auto countingStream = mImpl->countingStream();
16594     auto resources = mImpl->resources();
16595     auto pool = mImpl->pool();
16596     stream->setHandleMapping(resources->unwrapMapping());
16597     VkPhysicalDevice local_physicalDevice;
16598     local_physicalDevice = physicalDevice;
16599     countingStream->rewind();
16600     {
16601         uint64_t cgen_var_1107;
16602         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1107, 1);
16603         countingStream->write((uint64_t*)&cgen_var_1107, 1 * 8);
16604         // WARNING PTR CHECK
16605         uint64_t cgen_var_1108 = (uint64_t)(uintptr_t)pPropertyCount;
16606         countingStream->putBe64(cgen_var_1108);
16607         if (pPropertyCount)
16608         {
16609             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16610         }
16611         // WARNING PTR CHECK
16612         uint64_t cgen_var_1109 = (uint64_t)(uintptr_t)pProperties;
16613         countingStream->putBe64(cgen_var_1109);
16614         if (pProperties)
16615         {
16616             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16617             {
16618                 marshal_VkDisplayProperties2KHR(countingStream, (VkDisplayProperties2KHR*)(pProperties + i));
16619             }
16620         }
16621     }
16622     uint32_t packetSize_vkGetPhysicalDeviceDisplayProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16623     countingStream->rewind();
16624     uint32_t opcode_vkGetPhysicalDeviceDisplayProperties2KHR = OP_vkGetPhysicalDeviceDisplayProperties2KHR;
16625     stream->write(&opcode_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
16626     stream->write(&packetSize_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t));
16627     uint64_t cgen_var_1110;
16628     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1110, 1);
16629     stream->write((uint64_t*)&cgen_var_1110, 1 * 8);
16630     // WARNING PTR CHECK
16631     uint64_t cgen_var_1111 = (uint64_t)(uintptr_t)pPropertyCount;
16632     stream->putBe64(cgen_var_1111);
16633     if (pPropertyCount)
16634     {
16635         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16636     }
16637     // WARNING PTR CHECK
16638     uint64_t cgen_var_1112 = (uint64_t)(uintptr_t)pProperties;
16639     stream->putBe64(cgen_var_1112);
16640     if (pProperties)
16641     {
16642         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16643         {
16644             marshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
16645         }
16646     }
16647     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR readParams");
16648     // WARNING PTR CHECK
16649     uint32_t* check_pPropertyCount;
16650     check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
16651     if (pPropertyCount)
16652     {
16653         if (!(check_pPropertyCount))
16654         {
16655             fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
16656         }
16657         stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
16658     }
16659     // WARNING PTR CHECK
16660     VkDisplayProperties2KHR* check_pProperties;
16661     check_pProperties = (VkDisplayProperties2KHR*)(uintptr_t)stream->getBe64();
16662     if (pProperties)
16663     {
16664         if (!(check_pProperties))
16665         {
16666             fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
16667         }
16668         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16669         {
16670             unmarshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i));
16671         }
16672     }
16673     if (pProperties)
16674     {
16675         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16676         {
16677             transform_fromhost_VkDisplayProperties2KHR(mImpl->resources(), (VkDisplayProperties2KHR*)(pProperties + i));
16678         }
16679     }
16680     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR returnUnmarshal");
16681     VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0;
16682     stream->read(&vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult));
16683     countingStream->clearPool();
16684     stream->clearPool();
16685     pool->freeAll();
16686     mImpl->log("finish vkGetPhysicalDeviceDisplayProperties2KHR");;
16687     return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return;
16688 }
16689 
vkGetPhysicalDeviceDisplayPlaneProperties2KHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayPlaneProperties2KHR * pProperties)16690 VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
16691     VkPhysicalDevice physicalDevice,
16692     uint32_t* pPropertyCount,
16693     VkDisplayPlaneProperties2KHR* pProperties)
16694 {
16695     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR encode");
16696     mImpl->log("start vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
16697     auto stream = mImpl->stream();
16698     auto countingStream = mImpl->countingStream();
16699     auto resources = mImpl->resources();
16700     auto pool = mImpl->pool();
16701     stream->setHandleMapping(resources->unwrapMapping());
16702     VkPhysicalDevice local_physicalDevice;
16703     local_physicalDevice = physicalDevice;
16704     countingStream->rewind();
16705     {
16706         uint64_t cgen_var_1115;
16707         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1115, 1);
16708         countingStream->write((uint64_t*)&cgen_var_1115, 1 * 8);
16709         // WARNING PTR CHECK
16710         uint64_t cgen_var_1116 = (uint64_t)(uintptr_t)pPropertyCount;
16711         countingStream->putBe64(cgen_var_1116);
16712         if (pPropertyCount)
16713         {
16714             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16715         }
16716         // WARNING PTR CHECK
16717         uint64_t cgen_var_1117 = (uint64_t)(uintptr_t)pProperties;
16718         countingStream->putBe64(cgen_var_1117);
16719         if (pProperties)
16720         {
16721             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16722             {
16723                 marshal_VkDisplayPlaneProperties2KHR(countingStream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
16724             }
16725         }
16726     }
16727     uint32_t packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16728     countingStream->rewind();
16729     uint32_t opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR;
16730     stream->write(&opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
16731     stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t));
16732     uint64_t cgen_var_1118;
16733     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1118, 1);
16734     stream->write((uint64_t*)&cgen_var_1118, 1 * 8);
16735     // WARNING PTR CHECK
16736     uint64_t cgen_var_1119 = (uint64_t)(uintptr_t)pPropertyCount;
16737     stream->putBe64(cgen_var_1119);
16738     if (pPropertyCount)
16739     {
16740         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16741     }
16742     // WARNING PTR CHECK
16743     uint64_t cgen_var_1120 = (uint64_t)(uintptr_t)pProperties;
16744     stream->putBe64(cgen_var_1120);
16745     if (pProperties)
16746     {
16747         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16748         {
16749             marshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
16750         }
16751     }
16752     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR readParams");
16753     // WARNING PTR CHECK
16754     uint32_t* check_pPropertyCount;
16755     check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
16756     if (pPropertyCount)
16757     {
16758         if (!(check_pPropertyCount))
16759         {
16760             fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
16761         }
16762         stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
16763     }
16764     // WARNING PTR CHECK
16765     VkDisplayPlaneProperties2KHR* check_pProperties;
16766     check_pProperties = (VkDisplayPlaneProperties2KHR*)(uintptr_t)stream->getBe64();
16767     if (pProperties)
16768     {
16769         if (!(check_pProperties))
16770         {
16771             fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
16772         }
16773         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16774         {
16775             unmarshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i));
16776         }
16777     }
16778     if (pProperties)
16779     {
16780         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16781         {
16782             transform_fromhost_VkDisplayPlaneProperties2KHR(mImpl->resources(), (VkDisplayPlaneProperties2KHR*)(pProperties + i));
16783         }
16784     }
16785     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR returnUnmarshal");
16786     VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0;
16787     stream->read(&vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult));
16788     countingStream->clearPool();
16789     stream->clearPool();
16790     pool->freeAll();
16791     mImpl->log("finish vkGetPhysicalDeviceDisplayPlaneProperties2KHR");;
16792     return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return;
16793 }
16794 
vkGetDisplayModeProperties2KHR(VkPhysicalDevice physicalDevice,VkDisplayKHR display,uint32_t * pPropertyCount,VkDisplayModeProperties2KHR * pProperties)16795 VkResult VkEncoder::vkGetDisplayModeProperties2KHR(
16796     VkPhysicalDevice physicalDevice,
16797     VkDisplayKHR display,
16798     uint32_t* pPropertyCount,
16799     VkDisplayModeProperties2KHR* pProperties)
16800 {
16801     AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR encode");
16802     mImpl->log("start vkGetDisplayModeProperties2KHR");
16803     auto stream = mImpl->stream();
16804     auto countingStream = mImpl->countingStream();
16805     auto resources = mImpl->resources();
16806     auto pool = mImpl->pool();
16807     stream->setHandleMapping(resources->unwrapMapping());
16808     VkPhysicalDevice local_physicalDevice;
16809     VkDisplayKHR local_display;
16810     local_physicalDevice = physicalDevice;
16811     local_display = display;
16812     countingStream->rewind();
16813     {
16814         uint64_t cgen_var_1123;
16815         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1123, 1);
16816         countingStream->write((uint64_t*)&cgen_var_1123, 1 * 8);
16817         uint64_t cgen_var_1124;
16818         countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1124, 1);
16819         countingStream->write((uint64_t*)&cgen_var_1124, 1 * 8);
16820         // WARNING PTR CHECK
16821         uint64_t cgen_var_1125 = (uint64_t)(uintptr_t)pPropertyCount;
16822         countingStream->putBe64(cgen_var_1125);
16823         if (pPropertyCount)
16824         {
16825             countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16826         }
16827         // WARNING PTR CHECK
16828         uint64_t cgen_var_1126 = (uint64_t)(uintptr_t)pProperties;
16829         countingStream->putBe64(cgen_var_1126);
16830         if (pProperties)
16831         {
16832             for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16833             {
16834                 marshal_VkDisplayModeProperties2KHR(countingStream, (VkDisplayModeProperties2KHR*)(pProperties + i));
16835             }
16836         }
16837     }
16838     uint32_t packetSize_vkGetDisplayModeProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16839     countingStream->rewind();
16840     uint32_t opcode_vkGetDisplayModeProperties2KHR = OP_vkGetDisplayModeProperties2KHR;
16841     stream->write(&opcode_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
16842     stream->write(&packetSize_vkGetDisplayModeProperties2KHR, sizeof(uint32_t));
16843     uint64_t cgen_var_1127;
16844     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1127, 1);
16845     stream->write((uint64_t*)&cgen_var_1127, 1 * 8);
16846     uint64_t cgen_var_1128;
16847     stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1128, 1);
16848     stream->write((uint64_t*)&cgen_var_1128, 1 * 8);
16849     // WARNING PTR CHECK
16850     uint64_t cgen_var_1129 = (uint64_t)(uintptr_t)pPropertyCount;
16851     stream->putBe64(cgen_var_1129);
16852     if (pPropertyCount)
16853     {
16854         stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t));
16855     }
16856     // WARNING PTR CHECK
16857     uint64_t cgen_var_1130 = (uint64_t)(uintptr_t)pProperties;
16858     stream->putBe64(cgen_var_1130);
16859     if (pProperties)
16860     {
16861         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16862         {
16863             marshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
16864         }
16865     }
16866     AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR readParams");
16867     // WARNING PTR CHECK
16868     uint32_t* check_pPropertyCount;
16869     check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64();
16870     if (pPropertyCount)
16871     {
16872         if (!(check_pPropertyCount))
16873         {
16874             fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n");
16875         }
16876         stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t));
16877     }
16878     // WARNING PTR CHECK
16879     VkDisplayModeProperties2KHR* check_pProperties;
16880     check_pProperties = (VkDisplayModeProperties2KHR*)(uintptr_t)stream->getBe64();
16881     if (pProperties)
16882     {
16883         if (!(check_pProperties))
16884         {
16885             fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n");
16886         }
16887         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16888         {
16889             unmarshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i));
16890         }
16891     }
16892     if (pProperties)
16893     {
16894         for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i)
16895         {
16896             transform_fromhost_VkDisplayModeProperties2KHR(mImpl->resources(), (VkDisplayModeProperties2KHR*)(pProperties + i));
16897         }
16898     }
16899     AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR returnUnmarshal");
16900     VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0;
16901     stream->read(&vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult));
16902     countingStream->clearPool();
16903     stream->clearPool();
16904     pool->freeAll();
16905     mImpl->log("finish vkGetDisplayModeProperties2KHR");;
16906     return vkGetDisplayModeProperties2KHR_VkResult_return;
16907 }
16908 
vkGetDisplayPlaneCapabilities2KHR(VkPhysicalDevice physicalDevice,const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo,VkDisplayPlaneCapabilities2KHR * pCapabilities)16909 VkResult VkEncoder::vkGetDisplayPlaneCapabilities2KHR(
16910     VkPhysicalDevice physicalDevice,
16911     const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
16912     VkDisplayPlaneCapabilities2KHR* pCapabilities)
16913 {
16914     AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR encode");
16915     mImpl->log("start vkGetDisplayPlaneCapabilities2KHR");
16916     auto stream = mImpl->stream();
16917     auto countingStream = mImpl->countingStream();
16918     auto resources = mImpl->resources();
16919     auto pool = mImpl->pool();
16920     stream->setHandleMapping(resources->unwrapMapping());
16921     VkPhysicalDevice local_physicalDevice;
16922     VkDisplayPlaneInfo2KHR* local_pDisplayPlaneInfo;
16923     local_physicalDevice = physicalDevice;
16924     local_pDisplayPlaneInfo = nullptr;
16925     if (pDisplayPlaneInfo)
16926     {
16927         local_pDisplayPlaneInfo = (VkDisplayPlaneInfo2KHR*)pool->alloc(sizeof(const VkDisplayPlaneInfo2KHR));
16928         deepcopy_VkDisplayPlaneInfo2KHR(pool, pDisplayPlaneInfo, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
16929     }
16930     if (local_pDisplayPlaneInfo)
16931     {
16932         transform_tohost_VkDisplayPlaneInfo2KHR(mImpl->resources(), (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
16933     }
16934     countingStream->rewind();
16935     {
16936         uint64_t cgen_var_1133;
16937         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1133, 1);
16938         countingStream->write((uint64_t*)&cgen_var_1133, 1 * 8);
16939         marshal_VkDisplayPlaneInfo2KHR(countingStream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
16940         marshal_VkDisplayPlaneCapabilities2KHR(countingStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
16941     }
16942     uint32_t packetSize_vkGetDisplayPlaneCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
16943     countingStream->rewind();
16944     uint32_t opcode_vkGetDisplayPlaneCapabilities2KHR = OP_vkGetDisplayPlaneCapabilities2KHR;
16945     stream->write(&opcode_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
16946     stream->write(&packetSize_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t));
16947     uint64_t cgen_var_1134;
16948     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1134, 1);
16949     stream->write((uint64_t*)&cgen_var_1134, 1 * 8);
16950     marshal_VkDisplayPlaneInfo2KHR(stream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo));
16951     marshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
16952     AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR readParams");
16953     unmarshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
16954     if (pCapabilities)
16955     {
16956         transform_fromhost_VkDisplayPlaneCapabilities2KHR(mImpl->resources(), (VkDisplayPlaneCapabilities2KHR*)(pCapabilities));
16957     }
16958     AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR returnUnmarshal");
16959     VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0;
16960     stream->read(&vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult));
16961     countingStream->clearPool();
16962     stream->clearPool();
16963     pool->freeAll();
16964     mImpl->log("finish vkGetDisplayPlaneCapabilities2KHR");;
16965     return vkGetDisplayPlaneCapabilities2KHR_VkResult_return;
16966 }
16967 
16968 #endif
16969 #ifdef VK_KHR_dedicated_allocation
16970 #endif
16971 #ifdef VK_KHR_storage_buffer_storage_class
16972 #endif
16973 #ifdef VK_KHR_relaxed_block_layout
16974 #endif
16975 #ifdef VK_KHR_get_memory_requirements2
vkGetImageMemoryRequirements2KHR(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)16976 void VkEncoder::vkGetImageMemoryRequirements2KHR(
16977     VkDevice device,
16978     const VkImageMemoryRequirementsInfo2* pInfo,
16979     VkMemoryRequirements2* pMemoryRequirements)
16980 {
16981     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR encode");
16982     mImpl->log("start vkGetImageMemoryRequirements2KHR");
16983     auto stream = mImpl->stream();
16984     auto countingStream = mImpl->countingStream();
16985     auto resources = mImpl->resources();
16986     auto pool = mImpl->pool();
16987     stream->setHandleMapping(resources->unwrapMapping());
16988     VkDevice local_device;
16989     VkImageMemoryRequirementsInfo2* local_pInfo;
16990     local_device = device;
16991     local_pInfo = nullptr;
16992     if (pInfo)
16993     {
16994         local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2));
16995         deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
16996     }
16997     if (local_pInfo)
16998     {
16999         transform_tohost_VkImageMemoryRequirementsInfo2(mImpl->resources(), (VkImageMemoryRequirementsInfo2*)(local_pInfo));
17000     }
17001     countingStream->rewind();
17002     {
17003         uint64_t cgen_var_1135;
17004         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1135, 1);
17005         countingStream->write((uint64_t*)&cgen_var_1135, 1 * 8);
17006         marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
17007         marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
17008     }
17009     uint32_t packetSize_vkGetImageMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17010     countingStream->rewind();
17011     uint32_t opcode_vkGetImageMemoryRequirements2KHR = OP_vkGetImageMemoryRequirements2KHR;
17012     stream->write(&opcode_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
17013     stream->write(&packetSize_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t));
17014     uint64_t cgen_var_1136;
17015     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1136, 1);
17016     stream->write((uint64_t*)&cgen_var_1136, 1 * 8);
17017     marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo));
17018     marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
17019     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR readParams");
17020     unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
17021     if (pMemoryRequirements)
17022     {
17023         transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
17024     }
17025     AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR returnUnmarshal");
17026     mImpl->log("finish vkGetImageMemoryRequirements2KHR");;
17027 }
17028 
vkGetBufferMemoryRequirements2KHR(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)17029 void VkEncoder::vkGetBufferMemoryRequirements2KHR(
17030     VkDevice device,
17031     const VkBufferMemoryRequirementsInfo2* pInfo,
17032     VkMemoryRequirements2* pMemoryRequirements)
17033 {
17034     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR encode");
17035     mImpl->log("start vkGetBufferMemoryRequirements2KHR");
17036     auto stream = mImpl->stream();
17037     auto countingStream = mImpl->countingStream();
17038     auto resources = mImpl->resources();
17039     auto pool = mImpl->pool();
17040     stream->setHandleMapping(resources->unwrapMapping());
17041     VkDevice local_device;
17042     VkBufferMemoryRequirementsInfo2* local_pInfo;
17043     local_device = device;
17044     local_pInfo = nullptr;
17045     if (pInfo)
17046     {
17047         local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2));
17048         deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
17049     }
17050     if (local_pInfo)
17051     {
17052         transform_tohost_VkBufferMemoryRequirementsInfo2(mImpl->resources(), (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
17053     }
17054     countingStream->rewind();
17055     {
17056         uint64_t cgen_var_1137;
17057         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1137, 1);
17058         countingStream->write((uint64_t*)&cgen_var_1137, 1 * 8);
17059         marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
17060         marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements));
17061     }
17062     uint32_t packetSize_vkGetBufferMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17063     countingStream->rewind();
17064     uint32_t opcode_vkGetBufferMemoryRequirements2KHR = OP_vkGetBufferMemoryRequirements2KHR;
17065     stream->write(&opcode_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
17066     stream->write(&packetSize_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t));
17067     uint64_t cgen_var_1138;
17068     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1138, 1);
17069     stream->write((uint64_t*)&cgen_var_1138, 1 * 8);
17070     marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo));
17071     marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
17072     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR readParams");
17073     unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements));
17074     if (pMemoryRequirements)
17075     {
17076         transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements));
17077     }
17078     AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR returnUnmarshal");
17079     mImpl->log("finish vkGetBufferMemoryRequirements2KHR");;
17080 }
17081 
vkGetImageSparseMemoryRequirements2KHR(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)17082 void VkEncoder::vkGetImageSparseMemoryRequirements2KHR(
17083     VkDevice device,
17084     const VkImageSparseMemoryRequirementsInfo2* pInfo,
17085     uint32_t* pSparseMemoryRequirementCount,
17086     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
17087 {
17088     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR encode");
17089     mImpl->log("start vkGetImageSparseMemoryRequirements2KHR");
17090     auto stream = mImpl->stream();
17091     auto countingStream = mImpl->countingStream();
17092     auto resources = mImpl->resources();
17093     auto pool = mImpl->pool();
17094     stream->setHandleMapping(resources->unwrapMapping());
17095     VkDevice local_device;
17096     VkImageSparseMemoryRequirementsInfo2* local_pInfo;
17097     local_device = device;
17098     local_pInfo = nullptr;
17099     if (pInfo)
17100     {
17101         local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2));
17102         deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
17103     }
17104     if (local_pInfo)
17105     {
17106         transform_tohost_VkImageSparseMemoryRequirementsInfo2(mImpl->resources(), (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
17107     }
17108     countingStream->rewind();
17109     {
17110         uint64_t cgen_var_1139;
17111         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1139, 1);
17112         countingStream->write((uint64_t*)&cgen_var_1139, 1 * 8);
17113         marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
17114         // WARNING PTR CHECK
17115         uint64_t cgen_var_1140 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
17116         countingStream->putBe64(cgen_var_1140);
17117         if (pSparseMemoryRequirementCount)
17118         {
17119             countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
17120         }
17121         // WARNING PTR CHECK
17122         uint64_t cgen_var_1141 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
17123         countingStream->putBe64(cgen_var_1141);
17124         if (pSparseMemoryRequirements)
17125         {
17126             for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
17127             {
17128                 marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
17129             }
17130         }
17131     }
17132     uint32_t packetSize_vkGetImageSparseMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17133     countingStream->rewind();
17134     uint32_t opcode_vkGetImageSparseMemoryRequirements2KHR = OP_vkGetImageSparseMemoryRequirements2KHR;
17135     stream->write(&opcode_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
17136     stream->write(&packetSize_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t));
17137     uint64_t cgen_var_1142;
17138     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1142, 1);
17139     stream->write((uint64_t*)&cgen_var_1142, 1 * 8);
17140     marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo));
17141     // WARNING PTR CHECK
17142     uint64_t cgen_var_1143 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount;
17143     stream->putBe64(cgen_var_1143);
17144     if (pSparseMemoryRequirementCount)
17145     {
17146         stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
17147     }
17148     // WARNING PTR CHECK
17149     uint64_t cgen_var_1144 = (uint64_t)(uintptr_t)pSparseMemoryRequirements;
17150     stream->putBe64(cgen_var_1144);
17151     if (pSparseMemoryRequirements)
17152     {
17153         for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
17154         {
17155             marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
17156         }
17157     }
17158     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR readParams");
17159     // WARNING PTR CHECK
17160     uint32_t* check_pSparseMemoryRequirementCount;
17161     check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64();
17162     if (pSparseMemoryRequirementCount)
17163     {
17164         if (!(check_pSparseMemoryRequirementCount))
17165         {
17166             fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n");
17167         }
17168         stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t));
17169     }
17170     // WARNING PTR CHECK
17171     VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements;
17172     check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64();
17173     if (pSparseMemoryRequirements)
17174     {
17175         if (!(check_pSparseMemoryRequirements))
17176         {
17177             fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n");
17178         }
17179         for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
17180         {
17181             unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
17182         }
17183     }
17184     if (pSparseMemoryRequirements)
17185     {
17186         for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i)
17187         {
17188             transform_fromhost_VkSparseImageMemoryRequirements2(mImpl->resources(), (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i));
17189         }
17190     }
17191     AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR returnUnmarshal");
17192     mImpl->log("finish vkGetImageSparseMemoryRequirements2KHR");;
17193 }
17194 
17195 #endif
17196 #ifdef VK_KHR_image_format_list
17197 #endif
17198 #ifdef VK_KHR_sampler_ycbcr_conversion
vkCreateSamplerYcbcrConversionKHR(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)17199 VkResult VkEncoder::vkCreateSamplerYcbcrConversionKHR(
17200     VkDevice device,
17201     const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
17202     const VkAllocationCallbacks* pAllocator,
17203     VkSamplerYcbcrConversion* pYcbcrConversion)
17204 {
17205     AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR encode");
17206     mImpl->log("start vkCreateSamplerYcbcrConversionKHR");
17207     auto stream = mImpl->stream();
17208     auto countingStream = mImpl->countingStream();
17209     auto resources = mImpl->resources();
17210     auto pool = mImpl->pool();
17211     stream->setHandleMapping(resources->unwrapMapping());
17212     VkDevice local_device;
17213     VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo;
17214     VkAllocationCallbacks* local_pAllocator;
17215     local_device = device;
17216     local_pCreateInfo = nullptr;
17217     if (pCreateInfo)
17218     {
17219         local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo));
17220         deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
17221     }
17222     local_pAllocator = nullptr;
17223     if (pAllocator)
17224     {
17225         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17226         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17227     }
17228     local_pAllocator = nullptr;
17229     if (local_pCreateInfo)
17230     {
17231         transform_tohost_VkSamplerYcbcrConversionCreateInfo(mImpl->resources(), (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
17232     }
17233     if (local_pAllocator)
17234     {
17235         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
17236     }
17237     countingStream->rewind();
17238     {
17239         uint64_t cgen_var_1147;
17240         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1147, 1);
17241         countingStream->write((uint64_t*)&cgen_var_1147, 1 * 8);
17242         marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
17243         // WARNING PTR CHECK
17244         uint64_t cgen_var_1148 = (uint64_t)(uintptr_t)local_pAllocator;
17245         countingStream->putBe64(cgen_var_1148);
17246         if (local_pAllocator)
17247         {
17248             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
17249         }
17250         uint64_t cgen_var_1149;
17251         countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1149, 1);
17252         countingStream->write((uint64_t*)&cgen_var_1149, 8);
17253     }
17254     uint32_t packetSize_vkCreateSamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17255     countingStream->rewind();
17256     uint32_t opcode_vkCreateSamplerYcbcrConversionKHR = OP_vkCreateSamplerYcbcrConversionKHR;
17257     stream->write(&opcode_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
17258     stream->write(&packetSize_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t));
17259     uint64_t cgen_var_1150;
17260     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1150, 1);
17261     stream->write((uint64_t*)&cgen_var_1150, 1 * 8);
17262     marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo));
17263     // WARNING PTR CHECK
17264     uint64_t cgen_var_1151 = (uint64_t)(uintptr_t)local_pAllocator;
17265     stream->putBe64(cgen_var_1151);
17266     if (local_pAllocator)
17267     {
17268         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
17269     }
17270     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
17271     uint64_t cgen_var_1152;
17272     stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1152, 1);
17273     stream->write((uint64_t*)&cgen_var_1152, 8);
17274     stream->setHandleMapping(resources->unwrapMapping());
17275     AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR readParams");
17276     stream->setHandleMapping(resources->createMapping());
17277     uint64_t cgen_var_1153;
17278     stream->read((uint64_t*)&cgen_var_1153, 8);
17279     stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_1153, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1);
17280     stream->unsetHandleMapping();
17281     AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR returnUnmarshal");
17282     VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
17283     stream->read(&vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult));
17284     countingStream->clearPool();
17285     stream->clearPool();
17286     pool->freeAll();
17287     mImpl->log("finish vkCreateSamplerYcbcrConversionKHR");;
17288     return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
17289 }
17290 
vkDestroySamplerYcbcrConversionKHR(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)17291 void VkEncoder::vkDestroySamplerYcbcrConversionKHR(
17292     VkDevice device,
17293     VkSamplerYcbcrConversion ycbcrConversion,
17294     const VkAllocationCallbacks* pAllocator)
17295 {
17296     AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR encode");
17297     mImpl->log("start vkDestroySamplerYcbcrConversionKHR");
17298     auto stream = mImpl->stream();
17299     auto countingStream = mImpl->countingStream();
17300     auto resources = mImpl->resources();
17301     auto pool = mImpl->pool();
17302     stream->setHandleMapping(resources->unwrapMapping());
17303     VkDevice local_device;
17304     VkSamplerYcbcrConversion local_ycbcrConversion;
17305     VkAllocationCallbacks* local_pAllocator;
17306     local_device = device;
17307     local_ycbcrConversion = ycbcrConversion;
17308     local_pAllocator = nullptr;
17309     if (pAllocator)
17310     {
17311         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17312         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17313     }
17314     local_pAllocator = nullptr;
17315     if (local_pAllocator)
17316     {
17317         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
17318     }
17319     countingStream->rewind();
17320     {
17321         uint64_t cgen_var_1154;
17322         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1154, 1);
17323         countingStream->write((uint64_t*)&cgen_var_1154, 1 * 8);
17324         uint64_t cgen_var_1155;
17325         countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1155, 1);
17326         countingStream->write((uint64_t*)&cgen_var_1155, 1 * 8);
17327         // WARNING PTR CHECK
17328         uint64_t cgen_var_1156 = (uint64_t)(uintptr_t)local_pAllocator;
17329         countingStream->putBe64(cgen_var_1156);
17330         if (local_pAllocator)
17331         {
17332             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
17333         }
17334     }
17335     uint32_t packetSize_vkDestroySamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17336     countingStream->rewind();
17337     uint32_t opcode_vkDestroySamplerYcbcrConversionKHR = OP_vkDestroySamplerYcbcrConversionKHR;
17338     stream->write(&opcode_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
17339     stream->write(&packetSize_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t));
17340     uint64_t cgen_var_1157;
17341     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1157, 1);
17342     stream->write((uint64_t*)&cgen_var_1157, 1 * 8);
17343     uint64_t cgen_var_1158;
17344     stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1158, 1);
17345     stream->write((uint64_t*)&cgen_var_1158, 1 * 8);
17346     // WARNING PTR CHECK
17347     uint64_t cgen_var_1159 = (uint64_t)(uintptr_t)local_pAllocator;
17348     stream->putBe64(cgen_var_1159);
17349     if (local_pAllocator)
17350     {
17351         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
17352     }
17353     AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR readParams");
17354     AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR returnUnmarshal");
17355     resources->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion);
17356     mImpl->log("finish vkDestroySamplerYcbcrConversionKHR");;
17357 }
17358 
17359 #endif
17360 #ifdef VK_KHR_bind_memory2
vkBindBufferMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)17361 VkResult VkEncoder::vkBindBufferMemory2KHR(
17362     VkDevice device,
17363     uint32_t bindInfoCount,
17364     const VkBindBufferMemoryInfo* pBindInfos)
17365 {
17366     AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR encode");
17367     mImpl->log("start vkBindBufferMemory2KHR");
17368     auto stream = mImpl->stream();
17369     auto countingStream = mImpl->countingStream();
17370     auto resources = mImpl->resources();
17371     auto pool = mImpl->pool();
17372     stream->setHandleMapping(resources->unwrapMapping());
17373     VkDevice local_device;
17374     uint32_t local_bindInfoCount;
17375     VkBindBufferMemoryInfo* local_pBindInfos;
17376     local_device = device;
17377     local_bindInfoCount = bindInfoCount;
17378     local_pBindInfos = nullptr;
17379     if (pBindInfos)
17380     {
17381         local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo));
17382         for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17383         {
17384             deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
17385         }
17386     }
17387     if (local_pBindInfos)
17388     {
17389         for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17390         {
17391             transform_tohost_VkBindBufferMemoryInfo(mImpl->resources(), (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
17392         }
17393     }
17394     countingStream->rewind();
17395     {
17396         uint64_t cgen_var_1160;
17397         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1160, 1);
17398         countingStream->write((uint64_t*)&cgen_var_1160, 1 * 8);
17399         countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
17400         for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17401         {
17402             marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
17403         }
17404     }
17405     uint32_t packetSize_vkBindBufferMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17406     countingStream->rewind();
17407     uint32_t opcode_vkBindBufferMemory2KHR = OP_vkBindBufferMemory2KHR;
17408     stream->write(&opcode_vkBindBufferMemory2KHR, sizeof(uint32_t));
17409     stream->write(&packetSize_vkBindBufferMemory2KHR, sizeof(uint32_t));
17410     uint64_t cgen_var_1161;
17411     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1161, 1);
17412     stream->write((uint64_t*)&cgen_var_1161, 1 * 8);
17413     stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
17414     for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17415     {
17416         marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i));
17417     }
17418     AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR readParams");
17419     AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR returnUnmarshal");
17420     VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
17421     stream->read(&vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult));
17422     countingStream->clearPool();
17423     stream->clearPool();
17424     pool->freeAll();
17425     mImpl->log("finish vkBindBufferMemory2KHR");;
17426     return vkBindBufferMemory2KHR_VkResult_return;
17427 }
17428 
vkBindImageMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)17429 VkResult VkEncoder::vkBindImageMemory2KHR(
17430     VkDevice device,
17431     uint32_t bindInfoCount,
17432     const VkBindImageMemoryInfo* pBindInfos)
17433 {
17434     AEMU_SCOPED_TRACE("vkBindImageMemory2KHR encode");
17435     mImpl->log("start vkBindImageMemory2KHR");
17436     auto stream = mImpl->stream();
17437     auto countingStream = mImpl->countingStream();
17438     auto resources = mImpl->resources();
17439     auto pool = mImpl->pool();
17440     stream->setHandleMapping(resources->unwrapMapping());
17441     VkDevice local_device;
17442     uint32_t local_bindInfoCount;
17443     VkBindImageMemoryInfo* local_pBindInfos;
17444     local_device = device;
17445     local_bindInfoCount = bindInfoCount;
17446     local_pBindInfos = nullptr;
17447     if (pBindInfos)
17448     {
17449         local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo));
17450         for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17451         {
17452             deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
17453         }
17454     }
17455     if (local_pBindInfos)
17456     {
17457         for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17458         {
17459             transform_tohost_VkBindImageMemoryInfo(mImpl->resources(), (VkBindImageMemoryInfo*)(local_pBindInfos + i));
17460         }
17461     }
17462     countingStream->rewind();
17463     {
17464         uint64_t cgen_var_1162;
17465         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1162, 1);
17466         countingStream->write((uint64_t*)&cgen_var_1162, 1 * 8);
17467         countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
17468         for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17469         {
17470             marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
17471         }
17472     }
17473     uint32_t packetSize_vkBindImageMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17474     countingStream->rewind();
17475     uint32_t opcode_vkBindImageMemory2KHR = OP_vkBindImageMemory2KHR;
17476     stream->write(&opcode_vkBindImageMemory2KHR, sizeof(uint32_t));
17477     stream->write(&packetSize_vkBindImageMemory2KHR, sizeof(uint32_t));
17478     uint64_t cgen_var_1163;
17479     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1163, 1);
17480     stream->write((uint64_t*)&cgen_var_1163, 1 * 8);
17481     stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t));
17482     for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i)
17483     {
17484         marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i));
17485     }
17486     AEMU_SCOPED_TRACE("vkBindImageMemory2KHR readParams");
17487     AEMU_SCOPED_TRACE("vkBindImageMemory2KHR returnUnmarshal");
17488     VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
17489     stream->read(&vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult));
17490     countingStream->clearPool();
17491     stream->clearPool();
17492     pool->freeAll();
17493     mImpl->log("finish vkBindImageMemory2KHR");;
17494     return vkBindImageMemory2KHR_VkResult_return;
17495 }
17496 
17497 #endif
17498 #ifdef VK_KHR_maintenance3
vkGetDescriptorSetLayoutSupportKHR(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)17499 void VkEncoder::vkGetDescriptorSetLayoutSupportKHR(
17500     VkDevice device,
17501     const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
17502     VkDescriptorSetLayoutSupport* pSupport)
17503 {
17504     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR encode");
17505     mImpl->log("start vkGetDescriptorSetLayoutSupportKHR");
17506     auto stream = mImpl->stream();
17507     auto countingStream = mImpl->countingStream();
17508     auto resources = mImpl->resources();
17509     auto pool = mImpl->pool();
17510     stream->setHandleMapping(resources->unwrapMapping());
17511     VkDevice local_device;
17512     VkDescriptorSetLayoutCreateInfo* local_pCreateInfo;
17513     local_device = device;
17514     local_pCreateInfo = nullptr;
17515     if (pCreateInfo)
17516     {
17517         local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo));
17518         deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
17519     }
17520     if (local_pCreateInfo)
17521     {
17522         transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
17523     }
17524     countingStream->rewind();
17525     {
17526         uint64_t cgen_var_1164;
17527         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1164, 1);
17528         countingStream->write((uint64_t*)&cgen_var_1164, 1 * 8);
17529         marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
17530         marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport));
17531     }
17532     uint32_t packetSize_vkGetDescriptorSetLayoutSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17533     countingStream->rewind();
17534     uint32_t opcode_vkGetDescriptorSetLayoutSupportKHR = OP_vkGetDescriptorSetLayoutSupportKHR;
17535     stream->write(&opcode_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
17536     stream->write(&packetSize_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t));
17537     uint64_t cgen_var_1165;
17538     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1165, 1);
17539     stream->write((uint64_t*)&cgen_var_1165, 1 * 8);
17540     marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo));
17541     marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
17542     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR readParams");
17543     unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport));
17544     if (pSupport)
17545     {
17546         transform_fromhost_VkDescriptorSetLayoutSupport(mImpl->resources(), (VkDescriptorSetLayoutSupport*)(pSupport));
17547     }
17548     AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR returnUnmarshal");
17549     mImpl->log("finish vkGetDescriptorSetLayoutSupportKHR");;
17550 }
17551 
17552 #endif
17553 #ifdef VK_KHR_draw_indirect_count
vkCmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)17554 void VkEncoder::vkCmdDrawIndirectCountKHR(
17555     VkCommandBuffer commandBuffer,
17556     VkBuffer buffer,
17557     VkDeviceSize offset,
17558     VkBuffer countBuffer,
17559     VkDeviceSize countBufferOffset,
17560     uint32_t maxDrawCount,
17561     uint32_t stride)
17562 {
17563     AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR encode");
17564     mImpl->log("start vkCmdDrawIndirectCountKHR");
17565     auto stream = mImpl->stream();
17566     auto countingStream = mImpl->countingStream();
17567     auto resources = mImpl->resources();
17568     auto pool = mImpl->pool();
17569     stream->setHandleMapping(resources->unwrapMapping());
17570     VkCommandBuffer local_commandBuffer;
17571     VkBuffer local_buffer;
17572     VkDeviceSize local_offset;
17573     VkBuffer local_countBuffer;
17574     VkDeviceSize local_countBufferOffset;
17575     uint32_t local_maxDrawCount;
17576     uint32_t local_stride;
17577     local_commandBuffer = commandBuffer;
17578     local_buffer = buffer;
17579     local_offset = offset;
17580     local_countBuffer = countBuffer;
17581     local_countBufferOffset = countBufferOffset;
17582     local_maxDrawCount = maxDrawCount;
17583     local_stride = stride;
17584     countingStream->rewind();
17585     {
17586         uint64_t cgen_var_1166;
17587         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1166, 1);
17588         countingStream->write((uint64_t*)&cgen_var_1166, 1 * 8);
17589         uint64_t cgen_var_1167;
17590         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1167, 1);
17591         countingStream->write((uint64_t*)&cgen_var_1167, 1 * 8);
17592         countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
17593         uint64_t cgen_var_1168;
17594         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1168, 1);
17595         countingStream->write((uint64_t*)&cgen_var_1168, 1 * 8);
17596         countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17597         countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17598         countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
17599     }
17600     uint32_t packetSize_vkCmdDrawIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17601     countingStream->rewind();
17602     uint32_t opcode_vkCmdDrawIndirectCountKHR = OP_vkCmdDrawIndirectCountKHR;
17603     stream->write(&opcode_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
17604     stream->write(&packetSize_vkCmdDrawIndirectCountKHR, sizeof(uint32_t));
17605     uint64_t cgen_var_1169;
17606     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1169, 1);
17607     stream->write((uint64_t*)&cgen_var_1169, 1 * 8);
17608     uint64_t cgen_var_1170;
17609     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1170, 1);
17610     stream->write((uint64_t*)&cgen_var_1170, 1 * 8);
17611     stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
17612     uint64_t cgen_var_1171;
17613     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1171, 1);
17614     stream->write((uint64_t*)&cgen_var_1171, 1 * 8);
17615     stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17616     stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17617     stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
17618     AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR readParams");
17619     AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR returnUnmarshal");
17620     mImpl->log("finish vkCmdDrawIndirectCountKHR");;
17621 }
17622 
vkCmdDrawIndexedIndirectCountKHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)17623 void VkEncoder::vkCmdDrawIndexedIndirectCountKHR(
17624     VkCommandBuffer commandBuffer,
17625     VkBuffer buffer,
17626     VkDeviceSize offset,
17627     VkBuffer countBuffer,
17628     VkDeviceSize countBufferOffset,
17629     uint32_t maxDrawCount,
17630     uint32_t stride)
17631 {
17632     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR encode");
17633     mImpl->log("start vkCmdDrawIndexedIndirectCountKHR");
17634     auto stream = mImpl->stream();
17635     auto countingStream = mImpl->countingStream();
17636     auto resources = mImpl->resources();
17637     auto pool = mImpl->pool();
17638     stream->setHandleMapping(resources->unwrapMapping());
17639     VkCommandBuffer local_commandBuffer;
17640     VkBuffer local_buffer;
17641     VkDeviceSize local_offset;
17642     VkBuffer local_countBuffer;
17643     VkDeviceSize local_countBufferOffset;
17644     uint32_t local_maxDrawCount;
17645     uint32_t local_stride;
17646     local_commandBuffer = commandBuffer;
17647     local_buffer = buffer;
17648     local_offset = offset;
17649     local_countBuffer = countBuffer;
17650     local_countBufferOffset = countBufferOffset;
17651     local_maxDrawCount = maxDrawCount;
17652     local_stride = stride;
17653     countingStream->rewind();
17654     {
17655         uint64_t cgen_var_1172;
17656         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1172, 1);
17657         countingStream->write((uint64_t*)&cgen_var_1172, 1 * 8);
17658         uint64_t cgen_var_1173;
17659         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1173, 1);
17660         countingStream->write((uint64_t*)&cgen_var_1173, 1 * 8);
17661         countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
17662         uint64_t cgen_var_1174;
17663         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1174, 1);
17664         countingStream->write((uint64_t*)&cgen_var_1174, 1 * 8);
17665         countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17666         countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17667         countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
17668     }
17669     uint32_t packetSize_vkCmdDrawIndexedIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17670     countingStream->rewind();
17671     uint32_t opcode_vkCmdDrawIndexedIndirectCountKHR = OP_vkCmdDrawIndexedIndirectCountKHR;
17672     stream->write(&opcode_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
17673     stream->write(&packetSize_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t));
17674     uint64_t cgen_var_1175;
17675     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1175, 1);
17676     stream->write((uint64_t*)&cgen_var_1175, 1 * 8);
17677     uint64_t cgen_var_1176;
17678     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1176, 1);
17679     stream->write((uint64_t*)&cgen_var_1176, 1 * 8);
17680     stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
17681     uint64_t cgen_var_1177;
17682     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1177, 1);
17683     stream->write((uint64_t*)&cgen_var_1177, 1 * 8);
17684     stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
17685     stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
17686     stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
17687     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR readParams");
17688     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR returnUnmarshal");
17689     mImpl->log("finish vkCmdDrawIndexedIndirectCountKHR");;
17690 }
17691 
17692 #endif
17693 #ifdef VK_KHR_8bit_storage
17694 #endif
17695 #ifdef VK_ANDROID_native_buffer
vkGetSwapchainGrallocUsageANDROID(VkDevice device,VkFormat format,VkImageUsageFlags imageUsage,int * grallocUsage)17696 VkResult VkEncoder::vkGetSwapchainGrallocUsageANDROID(
17697     VkDevice device,
17698     VkFormat format,
17699     VkImageUsageFlags imageUsage,
17700     int* grallocUsage)
17701 {
17702     AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID encode");
17703     mImpl->log("start vkGetSwapchainGrallocUsageANDROID");
17704     auto stream = mImpl->stream();
17705     auto countingStream = mImpl->countingStream();
17706     auto resources = mImpl->resources();
17707     auto pool = mImpl->pool();
17708     stream->setHandleMapping(resources->unwrapMapping());
17709     VkDevice local_device;
17710     VkFormat local_format;
17711     VkImageUsageFlags local_imageUsage;
17712     local_device = device;
17713     local_format = format;
17714     local_imageUsage = imageUsage;
17715     countingStream->rewind();
17716     {
17717         uint64_t cgen_var_1178;
17718         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1178, 1);
17719         countingStream->write((uint64_t*)&cgen_var_1178, 1 * 8);
17720         countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
17721         countingStream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
17722         countingStream->write((int*)grallocUsage, sizeof(int));
17723     }
17724     uint32_t packetSize_vkGetSwapchainGrallocUsageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17725     countingStream->rewind();
17726     uint32_t opcode_vkGetSwapchainGrallocUsageANDROID = OP_vkGetSwapchainGrallocUsageANDROID;
17727     stream->write(&opcode_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
17728     stream->write(&packetSize_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t));
17729     uint64_t cgen_var_1179;
17730     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1179, 1);
17731     stream->write((uint64_t*)&cgen_var_1179, 1 * 8);
17732     stream->write((VkFormat*)&local_format, sizeof(VkFormat));
17733     stream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags));
17734     stream->write((int*)grallocUsage, sizeof(int));
17735     AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID readParams");
17736     stream->read((int*)grallocUsage, sizeof(int));
17737     AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID returnUnmarshal");
17738     VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
17739     stream->read(&vkGetSwapchainGrallocUsageANDROID_VkResult_return, sizeof(VkResult));
17740     countingStream->clearPool();
17741     stream->clearPool();
17742     pool->freeAll();
17743     mImpl->log("finish vkGetSwapchainGrallocUsageANDROID");;
17744     return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
17745 }
17746 
vkAcquireImageANDROID(VkDevice device,VkImage image,int nativeFenceFd,VkSemaphore semaphore,VkFence fence)17747 VkResult VkEncoder::vkAcquireImageANDROID(
17748     VkDevice device,
17749     VkImage image,
17750     int nativeFenceFd,
17751     VkSemaphore semaphore,
17752     VkFence fence)
17753 {
17754     AEMU_SCOPED_TRACE("vkAcquireImageANDROID encode");
17755     mImpl->log("start vkAcquireImageANDROID");
17756     auto stream = mImpl->stream();
17757     auto countingStream = mImpl->countingStream();
17758     auto resources = mImpl->resources();
17759     auto pool = mImpl->pool();
17760     stream->setHandleMapping(resources->unwrapMapping());
17761     VkDevice local_device;
17762     VkImage local_image;
17763     int local_nativeFenceFd;
17764     VkSemaphore local_semaphore;
17765     VkFence local_fence;
17766     local_device = device;
17767     local_image = image;
17768     local_nativeFenceFd = nativeFenceFd;
17769     local_semaphore = semaphore;
17770     local_fence = fence;
17771     mImpl->resources()->unwrap_vkAcquireImageANDROID_nativeFenceFd(nativeFenceFd, &local_nativeFenceFd);
17772     countingStream->rewind();
17773     {
17774         uint64_t cgen_var_1180;
17775         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1180, 1);
17776         countingStream->write((uint64_t*)&cgen_var_1180, 1 * 8);
17777         uint64_t cgen_var_1181;
17778         countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1181, 1);
17779         countingStream->write((uint64_t*)&cgen_var_1181, 1 * 8);
17780         countingStream->write((int*)&local_nativeFenceFd, sizeof(int));
17781         uint64_t cgen_var_1182;
17782         countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1182, 1);
17783         countingStream->write((uint64_t*)&cgen_var_1182, 1 * 8);
17784         uint64_t cgen_var_1183;
17785         countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1183, 1);
17786         countingStream->write((uint64_t*)&cgen_var_1183, 1 * 8);
17787     }
17788     uint32_t packetSize_vkAcquireImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17789     countingStream->rewind();
17790     uint32_t opcode_vkAcquireImageANDROID = OP_vkAcquireImageANDROID;
17791     stream->write(&opcode_vkAcquireImageANDROID, sizeof(uint32_t));
17792     stream->write(&packetSize_vkAcquireImageANDROID, sizeof(uint32_t));
17793     uint64_t cgen_var_1184;
17794     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1184, 1);
17795     stream->write((uint64_t*)&cgen_var_1184, 1 * 8);
17796     uint64_t cgen_var_1185;
17797     stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1185, 1);
17798     stream->write((uint64_t*)&cgen_var_1185, 1 * 8);
17799     stream->write((int*)&local_nativeFenceFd, sizeof(int));
17800     uint64_t cgen_var_1186;
17801     stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1186, 1);
17802     stream->write((uint64_t*)&cgen_var_1186, 1 * 8);
17803     uint64_t cgen_var_1187;
17804     stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1187, 1);
17805     stream->write((uint64_t*)&cgen_var_1187, 1 * 8);
17806     AEMU_SCOPED_TRACE("vkAcquireImageANDROID readParams");
17807     AEMU_SCOPED_TRACE("vkAcquireImageANDROID returnUnmarshal");
17808     VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
17809     stream->read(&vkAcquireImageANDROID_VkResult_return, sizeof(VkResult));
17810     countingStream->clearPool();
17811     stream->clearPool();
17812     pool->freeAll();
17813     mImpl->log("finish vkAcquireImageANDROID");;
17814     return vkAcquireImageANDROID_VkResult_return;
17815 }
17816 
vkQueueSignalReleaseImageANDROID(VkQueue queue,uint32_t waitSemaphoreCount,const VkSemaphore * pWaitSemaphores,VkImage image,int * pNativeFenceFd)17817 VkResult VkEncoder::vkQueueSignalReleaseImageANDROID(
17818     VkQueue queue,
17819     uint32_t waitSemaphoreCount,
17820     const VkSemaphore* pWaitSemaphores,
17821     VkImage image,
17822     int* pNativeFenceFd)
17823 {
17824     AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID encode");
17825     mImpl->log("start vkQueueSignalReleaseImageANDROID");
17826     auto stream = mImpl->stream();
17827     auto countingStream = mImpl->countingStream();
17828     auto resources = mImpl->resources();
17829     auto pool = mImpl->pool();
17830     stream->setHandleMapping(resources->unwrapMapping());
17831     VkQueue local_queue;
17832     uint32_t local_waitSemaphoreCount;
17833     VkSemaphore* local_pWaitSemaphores;
17834     VkImage local_image;
17835     local_queue = queue;
17836     local_waitSemaphoreCount = waitSemaphoreCount;
17837     local_pWaitSemaphores = nullptr;
17838     if (pWaitSemaphores)
17839     {
17840         local_pWaitSemaphores = (VkSemaphore*)pool->dupArray(pWaitSemaphores, ((waitSemaphoreCount)) * sizeof(const VkSemaphore));
17841     }
17842     local_image = image;
17843     countingStream->rewind();
17844     {
17845         uint64_t cgen_var_1188;
17846         countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1188, 1);
17847         countingStream->write((uint64_t*)&cgen_var_1188, 1 * 8);
17848         countingStream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
17849         // WARNING PTR CHECK
17850         uint64_t cgen_var_1189 = (uint64_t)(uintptr_t)local_pWaitSemaphores;
17851         countingStream->putBe64(cgen_var_1189);
17852         if (local_pWaitSemaphores)
17853         {
17854             if (((waitSemaphoreCount)))
17855             {
17856                 uint64_t* cgen_var_1190;
17857                 countingStream->alloc((void**)&cgen_var_1190, ((waitSemaphoreCount)) * 8);
17858                 countingStream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, cgen_var_1190, ((waitSemaphoreCount)));
17859                 countingStream->write((uint64_t*)cgen_var_1190, ((waitSemaphoreCount)) * 8);
17860             }
17861         }
17862         uint64_t cgen_var_1191;
17863         countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1191, 1);
17864         countingStream->write((uint64_t*)&cgen_var_1191, 1 * 8);
17865         countingStream->write((int*)pNativeFenceFd, sizeof(int));
17866     }
17867     uint32_t packetSize_vkQueueSignalReleaseImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17868     countingStream->rewind();
17869     uint32_t opcode_vkQueueSignalReleaseImageANDROID = OP_vkQueueSignalReleaseImageANDROID;
17870     stream->write(&opcode_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
17871     stream->write(&packetSize_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t));
17872     uint64_t cgen_var_1192;
17873     stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1192, 1);
17874     stream->write((uint64_t*)&cgen_var_1192, 1 * 8);
17875     stream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t));
17876     // WARNING PTR CHECK
17877     uint64_t cgen_var_1193 = (uint64_t)(uintptr_t)local_pWaitSemaphores;
17878     stream->putBe64(cgen_var_1193);
17879     if (local_pWaitSemaphores)
17880     {
17881         if (((waitSemaphoreCount)))
17882         {
17883             uint64_t* cgen_var_1194;
17884             stream->alloc((void**)&cgen_var_1194, ((waitSemaphoreCount)) * 8);
17885             stream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, cgen_var_1194, ((waitSemaphoreCount)));
17886             stream->write((uint64_t*)cgen_var_1194, ((waitSemaphoreCount)) * 8);
17887         }
17888     }
17889     uint64_t cgen_var_1195;
17890     stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1195, 1);
17891     stream->write((uint64_t*)&cgen_var_1195, 1 * 8);
17892     stream->write((int*)pNativeFenceFd, sizeof(int));
17893     AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID readParams");
17894     stream->read((int*)pNativeFenceFd, sizeof(int));
17895     AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID returnUnmarshal");
17896     VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
17897     stream->read(&vkQueueSignalReleaseImageANDROID_VkResult_return, sizeof(VkResult));
17898     countingStream->clearPool();
17899     stream->clearPool();
17900     pool->freeAll();
17901     mImpl->log("finish vkQueueSignalReleaseImageANDROID");;
17902     return vkQueueSignalReleaseImageANDROID_VkResult_return;
17903 }
17904 
17905 #endif
17906 #ifdef VK_EXT_debug_report
vkCreateDebugReportCallbackEXT(VkInstance instance,const VkDebugReportCallbackCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDebugReportCallbackEXT * pCallback)17907 VkResult VkEncoder::vkCreateDebugReportCallbackEXT(
17908     VkInstance instance,
17909     const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
17910     const VkAllocationCallbacks* pAllocator,
17911     VkDebugReportCallbackEXT* pCallback)
17912 {
17913     AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT encode");
17914     mImpl->log("start vkCreateDebugReportCallbackEXT");
17915     auto stream = mImpl->stream();
17916     auto countingStream = mImpl->countingStream();
17917     auto resources = mImpl->resources();
17918     auto pool = mImpl->pool();
17919     stream->setHandleMapping(resources->unwrapMapping());
17920     VkInstance local_instance;
17921     VkDebugReportCallbackCreateInfoEXT* local_pCreateInfo;
17922     VkAllocationCallbacks* local_pAllocator;
17923     local_instance = instance;
17924     local_pCreateInfo = nullptr;
17925     if (pCreateInfo)
17926     {
17927         local_pCreateInfo = (VkDebugReportCallbackCreateInfoEXT*)pool->alloc(sizeof(const VkDebugReportCallbackCreateInfoEXT));
17928         deepcopy_VkDebugReportCallbackCreateInfoEXT(pool, pCreateInfo, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
17929     }
17930     local_pAllocator = nullptr;
17931     if (pAllocator)
17932     {
17933         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
17934         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
17935     }
17936     local_pAllocator = nullptr;
17937     if (local_pCreateInfo)
17938     {
17939         transform_tohost_VkDebugReportCallbackCreateInfoEXT(mImpl->resources(), (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
17940     }
17941     if (local_pAllocator)
17942     {
17943         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
17944     }
17945     countingStream->rewind();
17946     {
17947         uint64_t cgen_var_1196;
17948         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1196, 1);
17949         countingStream->write((uint64_t*)&cgen_var_1196, 1 * 8);
17950         marshal_VkDebugReportCallbackCreateInfoEXT(countingStream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
17951         // WARNING PTR CHECK
17952         uint64_t cgen_var_1197 = (uint64_t)(uintptr_t)local_pAllocator;
17953         countingStream->putBe64(cgen_var_1197);
17954         if (local_pAllocator)
17955         {
17956             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
17957         }
17958         uint64_t cgen_var_1198;
17959         countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1198, 1);
17960         countingStream->write((uint64_t*)&cgen_var_1198, 8);
17961     }
17962     uint32_t packetSize_vkCreateDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
17963     countingStream->rewind();
17964     uint32_t opcode_vkCreateDebugReportCallbackEXT = OP_vkCreateDebugReportCallbackEXT;
17965     stream->write(&opcode_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
17966     stream->write(&packetSize_vkCreateDebugReportCallbackEXT, sizeof(uint32_t));
17967     uint64_t cgen_var_1199;
17968     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1199, 1);
17969     stream->write((uint64_t*)&cgen_var_1199, 1 * 8);
17970     marshal_VkDebugReportCallbackCreateInfoEXT(stream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo));
17971     // WARNING PTR CHECK
17972     uint64_t cgen_var_1200 = (uint64_t)(uintptr_t)local_pAllocator;
17973     stream->putBe64(cgen_var_1200);
17974     if (local_pAllocator)
17975     {
17976         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
17977     }
17978     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
17979     uint64_t cgen_var_1201;
17980     stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1201, 1);
17981     stream->write((uint64_t*)&cgen_var_1201, 8);
17982     stream->setHandleMapping(resources->unwrapMapping());
17983     AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT readParams");
17984     stream->setHandleMapping(resources->createMapping());
17985     uint64_t cgen_var_1202;
17986     stream->read((uint64_t*)&cgen_var_1202, 8);
17987     stream->handleMapping()->mapHandles_u64_VkDebugReportCallbackEXT(&cgen_var_1202, (VkDebugReportCallbackEXT*)pCallback, 1);
17988     stream->unsetHandleMapping();
17989     AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT returnUnmarshal");
17990     VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0;
17991     stream->read(&vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult));
17992     countingStream->clearPool();
17993     stream->clearPool();
17994     pool->freeAll();
17995     mImpl->log("finish vkCreateDebugReportCallbackEXT");;
17996     return vkCreateDebugReportCallbackEXT_VkResult_return;
17997 }
17998 
vkDestroyDebugReportCallbackEXT(VkInstance instance,VkDebugReportCallbackEXT callback,const VkAllocationCallbacks * pAllocator)17999 void VkEncoder::vkDestroyDebugReportCallbackEXT(
18000     VkInstance instance,
18001     VkDebugReportCallbackEXT callback,
18002     const VkAllocationCallbacks* pAllocator)
18003 {
18004     AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT encode");
18005     mImpl->log("start vkDestroyDebugReportCallbackEXT");
18006     auto stream = mImpl->stream();
18007     auto countingStream = mImpl->countingStream();
18008     auto resources = mImpl->resources();
18009     auto pool = mImpl->pool();
18010     stream->setHandleMapping(resources->unwrapMapping());
18011     VkInstance local_instance;
18012     VkDebugReportCallbackEXT local_callback;
18013     VkAllocationCallbacks* local_pAllocator;
18014     local_instance = instance;
18015     local_callback = callback;
18016     local_pAllocator = nullptr;
18017     if (pAllocator)
18018     {
18019         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18020         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18021     }
18022     local_pAllocator = nullptr;
18023     if (local_pAllocator)
18024     {
18025         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
18026     }
18027     countingStream->rewind();
18028     {
18029         uint64_t cgen_var_1203;
18030         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1203, 1);
18031         countingStream->write((uint64_t*)&cgen_var_1203, 1 * 8);
18032         uint64_t cgen_var_1204;
18033         countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1204, 1);
18034         countingStream->write((uint64_t*)&cgen_var_1204, 1 * 8);
18035         // WARNING PTR CHECK
18036         uint64_t cgen_var_1205 = (uint64_t)(uintptr_t)local_pAllocator;
18037         countingStream->putBe64(cgen_var_1205);
18038         if (local_pAllocator)
18039         {
18040             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
18041         }
18042     }
18043     uint32_t packetSize_vkDestroyDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18044     countingStream->rewind();
18045     uint32_t opcode_vkDestroyDebugReportCallbackEXT = OP_vkDestroyDebugReportCallbackEXT;
18046     stream->write(&opcode_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
18047     stream->write(&packetSize_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t));
18048     uint64_t cgen_var_1206;
18049     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1206, 1);
18050     stream->write((uint64_t*)&cgen_var_1206, 1 * 8);
18051     uint64_t cgen_var_1207;
18052     stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1207, 1);
18053     stream->write((uint64_t*)&cgen_var_1207, 1 * 8);
18054     // WARNING PTR CHECK
18055     uint64_t cgen_var_1208 = (uint64_t)(uintptr_t)local_pAllocator;
18056     stream->putBe64(cgen_var_1208);
18057     if (local_pAllocator)
18058     {
18059         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
18060     }
18061     AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT readParams");
18062     AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT returnUnmarshal");
18063     resources->destroyMapping()->mapHandles_VkDebugReportCallbackEXT((VkDebugReportCallbackEXT*)&callback);
18064     mImpl->log("finish vkDestroyDebugReportCallbackEXT");;
18065 }
18066 
vkDebugReportMessageEXT(VkInstance instance,VkDebugReportFlagsEXT flags,VkDebugReportObjectTypeEXT objectType,uint64_t object,size_t location,int32_t messageCode,const char * pLayerPrefix,const char * pMessage)18067 void VkEncoder::vkDebugReportMessageEXT(
18068     VkInstance instance,
18069     VkDebugReportFlagsEXT flags,
18070     VkDebugReportObjectTypeEXT objectType,
18071     uint64_t object,
18072     size_t location,
18073     int32_t messageCode,
18074     const char* pLayerPrefix,
18075     const char* pMessage)
18076 {
18077     AEMU_SCOPED_TRACE("vkDebugReportMessageEXT encode");
18078     mImpl->log("start vkDebugReportMessageEXT");
18079     auto stream = mImpl->stream();
18080     auto countingStream = mImpl->countingStream();
18081     auto resources = mImpl->resources();
18082     auto pool = mImpl->pool();
18083     stream->setHandleMapping(resources->unwrapMapping());
18084     VkInstance local_instance;
18085     VkDebugReportFlagsEXT local_flags;
18086     VkDebugReportObjectTypeEXT local_objectType;
18087     uint64_t local_object;
18088     size_t local_location;
18089     int32_t local_messageCode;
18090     char* local_pLayerPrefix;
18091     char* local_pMessage;
18092     local_instance = instance;
18093     local_flags = flags;
18094     local_objectType = objectType;
18095     local_object = object;
18096     local_location = location;
18097     local_messageCode = messageCode;
18098     local_pLayerPrefix = nullptr;
18099     if (pLayerPrefix)
18100     {
18101         local_pLayerPrefix = pool->strDup(pLayerPrefix);
18102     }
18103     local_pMessage = nullptr;
18104     if (pMessage)
18105     {
18106         local_pMessage = pool->strDup(pMessage);
18107     }
18108     countingStream->rewind();
18109     {
18110         uint64_t cgen_var_1209;
18111         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1209, 1);
18112         countingStream->write((uint64_t*)&cgen_var_1209, 1 * 8);
18113         countingStream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
18114         countingStream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
18115         countingStream->write((uint64_t*)&local_object, sizeof(uint64_t));
18116         uint64_t cgen_var_1210 = (uint64_t)local_location;
18117         countingStream->putBe64(cgen_var_1210);
18118         countingStream->write((int32_t*)&local_messageCode, sizeof(int32_t));
18119         countingStream->putString(local_pLayerPrefix);
18120         countingStream->putString(local_pMessage);
18121     }
18122     uint32_t packetSize_vkDebugReportMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18123     countingStream->rewind();
18124     uint32_t opcode_vkDebugReportMessageEXT = OP_vkDebugReportMessageEXT;
18125     stream->write(&opcode_vkDebugReportMessageEXT, sizeof(uint32_t));
18126     stream->write(&packetSize_vkDebugReportMessageEXT, sizeof(uint32_t));
18127     uint64_t cgen_var_1211;
18128     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1211, 1);
18129     stream->write((uint64_t*)&cgen_var_1211, 1 * 8);
18130     stream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT));
18131     stream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT));
18132     stream->write((uint64_t*)&local_object, sizeof(uint64_t));
18133     uint64_t cgen_var_1212 = (uint64_t)local_location;
18134     stream->putBe64(cgen_var_1212);
18135     stream->write((int32_t*)&local_messageCode, sizeof(int32_t));
18136     stream->putString(local_pLayerPrefix);
18137     stream->putString(local_pMessage);
18138     AEMU_SCOPED_TRACE("vkDebugReportMessageEXT readParams");
18139     AEMU_SCOPED_TRACE("vkDebugReportMessageEXT returnUnmarshal");
18140     mImpl->log("finish vkDebugReportMessageEXT");;
18141 }
18142 
18143 #endif
18144 #ifdef VK_NV_glsl_shader
18145 #endif
18146 #ifdef VK_EXT_depth_range_unrestricted
18147 #endif
18148 #ifdef VK_IMG_filter_cubic
18149 #endif
18150 #ifdef VK_AMD_rasterization_order
18151 #endif
18152 #ifdef VK_AMD_shader_trinary_minmax
18153 #endif
18154 #ifdef VK_AMD_shader_explicit_vertex_parameter
18155 #endif
18156 #ifdef VK_EXT_debug_marker
vkDebugMarkerSetObjectTagEXT(VkDevice device,const VkDebugMarkerObjectTagInfoEXT * pTagInfo)18157 VkResult VkEncoder::vkDebugMarkerSetObjectTagEXT(
18158     VkDevice device,
18159     const VkDebugMarkerObjectTagInfoEXT* pTagInfo)
18160 {
18161     AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT encode");
18162     mImpl->log("start vkDebugMarkerSetObjectTagEXT");
18163     auto stream = mImpl->stream();
18164     auto countingStream = mImpl->countingStream();
18165     auto resources = mImpl->resources();
18166     auto pool = mImpl->pool();
18167     stream->setHandleMapping(resources->unwrapMapping());
18168     VkDevice local_device;
18169     VkDebugMarkerObjectTagInfoEXT* local_pTagInfo;
18170     local_device = device;
18171     local_pTagInfo = nullptr;
18172     if (pTagInfo)
18173     {
18174         local_pTagInfo = (VkDebugMarkerObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectTagInfoEXT));
18175         deepcopy_VkDebugMarkerObjectTagInfoEXT(pool, pTagInfo, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
18176     }
18177     if (local_pTagInfo)
18178     {
18179         transform_tohost_VkDebugMarkerObjectTagInfoEXT(mImpl->resources(), (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
18180     }
18181     countingStream->rewind();
18182     {
18183         uint64_t cgen_var_1213;
18184         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1213, 1);
18185         countingStream->write((uint64_t*)&cgen_var_1213, 1 * 8);
18186         marshal_VkDebugMarkerObjectTagInfoEXT(countingStream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
18187     }
18188     uint32_t packetSize_vkDebugMarkerSetObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18189     countingStream->rewind();
18190     uint32_t opcode_vkDebugMarkerSetObjectTagEXT = OP_vkDebugMarkerSetObjectTagEXT;
18191     stream->write(&opcode_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
18192     stream->write(&packetSize_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t));
18193     uint64_t cgen_var_1214;
18194     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1214, 1);
18195     stream->write((uint64_t*)&cgen_var_1214, 1 * 8);
18196     marshal_VkDebugMarkerObjectTagInfoEXT(stream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo));
18197     AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT readParams");
18198     AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT returnUnmarshal");
18199     VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0;
18200     stream->read(&vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult));
18201     countingStream->clearPool();
18202     stream->clearPool();
18203     pool->freeAll();
18204     mImpl->log("finish vkDebugMarkerSetObjectTagEXT");;
18205     return vkDebugMarkerSetObjectTagEXT_VkResult_return;
18206 }
18207 
vkDebugMarkerSetObjectNameEXT(VkDevice device,const VkDebugMarkerObjectNameInfoEXT * pNameInfo)18208 VkResult VkEncoder::vkDebugMarkerSetObjectNameEXT(
18209     VkDevice device,
18210     const VkDebugMarkerObjectNameInfoEXT* pNameInfo)
18211 {
18212     AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT encode");
18213     mImpl->log("start vkDebugMarkerSetObjectNameEXT");
18214     auto stream = mImpl->stream();
18215     auto countingStream = mImpl->countingStream();
18216     auto resources = mImpl->resources();
18217     auto pool = mImpl->pool();
18218     stream->setHandleMapping(resources->unwrapMapping());
18219     VkDevice local_device;
18220     VkDebugMarkerObjectNameInfoEXT* local_pNameInfo;
18221     local_device = device;
18222     local_pNameInfo = nullptr;
18223     if (pNameInfo)
18224     {
18225         local_pNameInfo = (VkDebugMarkerObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectNameInfoEXT));
18226         deepcopy_VkDebugMarkerObjectNameInfoEXT(pool, pNameInfo, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
18227     }
18228     if (local_pNameInfo)
18229     {
18230         transform_tohost_VkDebugMarkerObjectNameInfoEXT(mImpl->resources(), (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
18231     }
18232     countingStream->rewind();
18233     {
18234         uint64_t cgen_var_1215;
18235         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1215, 1);
18236         countingStream->write((uint64_t*)&cgen_var_1215, 1 * 8);
18237         marshal_VkDebugMarkerObjectNameInfoEXT(countingStream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
18238     }
18239     uint32_t packetSize_vkDebugMarkerSetObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18240     countingStream->rewind();
18241     uint32_t opcode_vkDebugMarkerSetObjectNameEXT = OP_vkDebugMarkerSetObjectNameEXT;
18242     stream->write(&opcode_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
18243     stream->write(&packetSize_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t));
18244     uint64_t cgen_var_1216;
18245     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1216, 1);
18246     stream->write((uint64_t*)&cgen_var_1216, 1 * 8);
18247     marshal_VkDebugMarkerObjectNameInfoEXT(stream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo));
18248     AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT readParams");
18249     AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT returnUnmarshal");
18250     VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0;
18251     stream->read(&vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult));
18252     countingStream->clearPool();
18253     stream->clearPool();
18254     pool->freeAll();
18255     mImpl->log("finish vkDebugMarkerSetObjectNameEXT");;
18256     return vkDebugMarkerSetObjectNameEXT_VkResult_return;
18257 }
18258 
vkCmdDebugMarkerBeginEXT(VkCommandBuffer commandBuffer,const VkDebugMarkerMarkerInfoEXT * pMarkerInfo)18259 void VkEncoder::vkCmdDebugMarkerBeginEXT(
18260     VkCommandBuffer commandBuffer,
18261     const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
18262 {
18263     AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT encode");
18264     mImpl->log("start vkCmdDebugMarkerBeginEXT");
18265     auto stream = mImpl->stream();
18266     auto countingStream = mImpl->countingStream();
18267     auto resources = mImpl->resources();
18268     auto pool = mImpl->pool();
18269     stream->setHandleMapping(resources->unwrapMapping());
18270     VkCommandBuffer local_commandBuffer;
18271     VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
18272     local_commandBuffer = commandBuffer;
18273     local_pMarkerInfo = nullptr;
18274     if (pMarkerInfo)
18275     {
18276         local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
18277         deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
18278     }
18279     if (local_pMarkerInfo)
18280     {
18281         transform_tohost_VkDebugMarkerMarkerInfoEXT(mImpl->resources(), (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
18282     }
18283     countingStream->rewind();
18284     {
18285         uint64_t cgen_var_1217;
18286         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1217, 1);
18287         countingStream->write((uint64_t*)&cgen_var_1217, 1 * 8);
18288         marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
18289     }
18290     uint32_t packetSize_vkCmdDebugMarkerBeginEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18291     countingStream->rewind();
18292     uint32_t opcode_vkCmdDebugMarkerBeginEXT = OP_vkCmdDebugMarkerBeginEXT;
18293     stream->write(&opcode_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
18294     stream->write(&packetSize_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t));
18295     uint64_t cgen_var_1218;
18296     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1218, 1);
18297     stream->write((uint64_t*)&cgen_var_1218, 1 * 8);
18298     marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
18299     AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT readParams");
18300     AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT returnUnmarshal");
18301     mImpl->log("finish vkCmdDebugMarkerBeginEXT");;
18302 }
18303 
vkCmdDebugMarkerEndEXT(VkCommandBuffer commandBuffer)18304 void VkEncoder::vkCmdDebugMarkerEndEXT(
18305     VkCommandBuffer commandBuffer)
18306 {
18307     AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT encode");
18308     mImpl->log("start vkCmdDebugMarkerEndEXT");
18309     auto stream = mImpl->stream();
18310     auto countingStream = mImpl->countingStream();
18311     auto resources = mImpl->resources();
18312     auto pool = mImpl->pool();
18313     stream->setHandleMapping(resources->unwrapMapping());
18314     VkCommandBuffer local_commandBuffer;
18315     local_commandBuffer = commandBuffer;
18316     countingStream->rewind();
18317     {
18318         uint64_t cgen_var_1219;
18319         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1219, 1);
18320         countingStream->write((uint64_t*)&cgen_var_1219, 1 * 8);
18321     }
18322     uint32_t packetSize_vkCmdDebugMarkerEndEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18323     countingStream->rewind();
18324     uint32_t opcode_vkCmdDebugMarkerEndEXT = OP_vkCmdDebugMarkerEndEXT;
18325     stream->write(&opcode_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
18326     stream->write(&packetSize_vkCmdDebugMarkerEndEXT, sizeof(uint32_t));
18327     uint64_t cgen_var_1220;
18328     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1220, 1);
18329     stream->write((uint64_t*)&cgen_var_1220, 1 * 8);
18330     AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT readParams");
18331     AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT returnUnmarshal");
18332     mImpl->log("finish vkCmdDebugMarkerEndEXT");;
18333 }
18334 
vkCmdDebugMarkerInsertEXT(VkCommandBuffer commandBuffer,const VkDebugMarkerMarkerInfoEXT * pMarkerInfo)18335 void VkEncoder::vkCmdDebugMarkerInsertEXT(
18336     VkCommandBuffer commandBuffer,
18337     const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
18338 {
18339     AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT encode");
18340     mImpl->log("start vkCmdDebugMarkerInsertEXT");
18341     auto stream = mImpl->stream();
18342     auto countingStream = mImpl->countingStream();
18343     auto resources = mImpl->resources();
18344     auto pool = mImpl->pool();
18345     stream->setHandleMapping(resources->unwrapMapping());
18346     VkCommandBuffer local_commandBuffer;
18347     VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo;
18348     local_commandBuffer = commandBuffer;
18349     local_pMarkerInfo = nullptr;
18350     if (pMarkerInfo)
18351     {
18352         local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT));
18353         deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
18354     }
18355     if (local_pMarkerInfo)
18356     {
18357         transform_tohost_VkDebugMarkerMarkerInfoEXT(mImpl->resources(), (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
18358     }
18359     countingStream->rewind();
18360     {
18361         uint64_t cgen_var_1221;
18362         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1221, 1);
18363         countingStream->write((uint64_t*)&cgen_var_1221, 1 * 8);
18364         marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
18365     }
18366     uint32_t packetSize_vkCmdDebugMarkerInsertEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18367     countingStream->rewind();
18368     uint32_t opcode_vkCmdDebugMarkerInsertEXT = OP_vkCmdDebugMarkerInsertEXT;
18369     stream->write(&opcode_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
18370     stream->write(&packetSize_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t));
18371     uint64_t cgen_var_1222;
18372     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1222, 1);
18373     stream->write((uint64_t*)&cgen_var_1222, 1 * 8);
18374     marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo));
18375     AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT readParams");
18376     AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT returnUnmarshal");
18377     mImpl->log("finish vkCmdDebugMarkerInsertEXT");;
18378 }
18379 
18380 #endif
18381 #ifdef VK_AMD_gcn_shader
18382 #endif
18383 #ifdef VK_NV_dedicated_allocation
18384 #endif
18385 #ifdef VK_AMD_draw_indirect_count
vkCmdDrawIndirectCountAMD(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)18386 void VkEncoder::vkCmdDrawIndirectCountAMD(
18387     VkCommandBuffer commandBuffer,
18388     VkBuffer buffer,
18389     VkDeviceSize offset,
18390     VkBuffer countBuffer,
18391     VkDeviceSize countBufferOffset,
18392     uint32_t maxDrawCount,
18393     uint32_t stride)
18394 {
18395     AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD encode");
18396     mImpl->log("start vkCmdDrawIndirectCountAMD");
18397     auto stream = mImpl->stream();
18398     auto countingStream = mImpl->countingStream();
18399     auto resources = mImpl->resources();
18400     auto pool = mImpl->pool();
18401     stream->setHandleMapping(resources->unwrapMapping());
18402     VkCommandBuffer local_commandBuffer;
18403     VkBuffer local_buffer;
18404     VkDeviceSize local_offset;
18405     VkBuffer local_countBuffer;
18406     VkDeviceSize local_countBufferOffset;
18407     uint32_t local_maxDrawCount;
18408     uint32_t local_stride;
18409     local_commandBuffer = commandBuffer;
18410     local_buffer = buffer;
18411     local_offset = offset;
18412     local_countBuffer = countBuffer;
18413     local_countBufferOffset = countBufferOffset;
18414     local_maxDrawCount = maxDrawCount;
18415     local_stride = stride;
18416     countingStream->rewind();
18417     {
18418         uint64_t cgen_var_1223;
18419         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1223, 1);
18420         countingStream->write((uint64_t*)&cgen_var_1223, 1 * 8);
18421         uint64_t cgen_var_1224;
18422         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1224, 1);
18423         countingStream->write((uint64_t*)&cgen_var_1224, 1 * 8);
18424         countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
18425         uint64_t cgen_var_1225;
18426         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1225, 1);
18427         countingStream->write((uint64_t*)&cgen_var_1225, 1 * 8);
18428         countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
18429         countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
18430         countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
18431     }
18432     uint32_t packetSize_vkCmdDrawIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18433     countingStream->rewind();
18434     uint32_t opcode_vkCmdDrawIndirectCountAMD = OP_vkCmdDrawIndirectCountAMD;
18435     stream->write(&opcode_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
18436     stream->write(&packetSize_vkCmdDrawIndirectCountAMD, sizeof(uint32_t));
18437     uint64_t cgen_var_1226;
18438     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1226, 1);
18439     stream->write((uint64_t*)&cgen_var_1226, 1 * 8);
18440     uint64_t cgen_var_1227;
18441     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1227, 1);
18442     stream->write((uint64_t*)&cgen_var_1227, 1 * 8);
18443     stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
18444     uint64_t cgen_var_1228;
18445     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1228, 1);
18446     stream->write((uint64_t*)&cgen_var_1228, 1 * 8);
18447     stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
18448     stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
18449     stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
18450     AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD readParams");
18451     AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD returnUnmarshal");
18452     mImpl->log("finish vkCmdDrawIndirectCountAMD");;
18453 }
18454 
vkCmdDrawIndexedIndirectCountAMD(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)18455 void VkEncoder::vkCmdDrawIndexedIndirectCountAMD(
18456     VkCommandBuffer commandBuffer,
18457     VkBuffer buffer,
18458     VkDeviceSize offset,
18459     VkBuffer countBuffer,
18460     VkDeviceSize countBufferOffset,
18461     uint32_t maxDrawCount,
18462     uint32_t stride)
18463 {
18464     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD encode");
18465     mImpl->log("start vkCmdDrawIndexedIndirectCountAMD");
18466     auto stream = mImpl->stream();
18467     auto countingStream = mImpl->countingStream();
18468     auto resources = mImpl->resources();
18469     auto pool = mImpl->pool();
18470     stream->setHandleMapping(resources->unwrapMapping());
18471     VkCommandBuffer local_commandBuffer;
18472     VkBuffer local_buffer;
18473     VkDeviceSize local_offset;
18474     VkBuffer local_countBuffer;
18475     VkDeviceSize local_countBufferOffset;
18476     uint32_t local_maxDrawCount;
18477     uint32_t local_stride;
18478     local_commandBuffer = commandBuffer;
18479     local_buffer = buffer;
18480     local_offset = offset;
18481     local_countBuffer = countBuffer;
18482     local_countBufferOffset = countBufferOffset;
18483     local_maxDrawCount = maxDrawCount;
18484     local_stride = stride;
18485     countingStream->rewind();
18486     {
18487         uint64_t cgen_var_1229;
18488         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1229, 1);
18489         countingStream->write((uint64_t*)&cgen_var_1229, 1 * 8);
18490         uint64_t cgen_var_1230;
18491         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1230, 1);
18492         countingStream->write((uint64_t*)&cgen_var_1230, 1 * 8);
18493         countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
18494         uint64_t cgen_var_1231;
18495         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1231, 1);
18496         countingStream->write((uint64_t*)&cgen_var_1231, 1 * 8);
18497         countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
18498         countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
18499         countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t));
18500     }
18501     uint32_t packetSize_vkCmdDrawIndexedIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18502     countingStream->rewind();
18503     uint32_t opcode_vkCmdDrawIndexedIndirectCountAMD = OP_vkCmdDrawIndexedIndirectCountAMD;
18504     stream->write(&opcode_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
18505     stream->write(&packetSize_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t));
18506     uint64_t cgen_var_1232;
18507     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1232, 1);
18508     stream->write((uint64_t*)&cgen_var_1232, 1 * 8);
18509     uint64_t cgen_var_1233;
18510     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1233, 1);
18511     stream->write((uint64_t*)&cgen_var_1233, 1 * 8);
18512     stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize));
18513     uint64_t cgen_var_1234;
18514     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1234, 1);
18515     stream->write((uint64_t*)&cgen_var_1234, 1 * 8);
18516     stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize));
18517     stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t));
18518     stream->write((uint32_t*)&local_stride, sizeof(uint32_t));
18519     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD readParams");
18520     AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD returnUnmarshal");
18521     mImpl->log("finish vkCmdDrawIndexedIndirectCountAMD");;
18522 }
18523 
18524 #endif
18525 #ifdef VK_AMD_negative_viewport_height
18526 #endif
18527 #ifdef VK_AMD_gpu_shader_half_float
18528 #endif
18529 #ifdef VK_AMD_shader_ballot
18530 #endif
18531 #ifdef VK_AMD_texture_gather_bias_lod
18532 #endif
18533 #ifdef VK_AMD_shader_info
vkGetShaderInfoAMD(VkDevice device,VkPipeline pipeline,VkShaderStageFlagBits shaderStage,VkShaderInfoTypeAMD infoType,size_t * pInfoSize,void * pInfo)18534 VkResult VkEncoder::vkGetShaderInfoAMD(
18535     VkDevice device,
18536     VkPipeline pipeline,
18537     VkShaderStageFlagBits shaderStage,
18538     VkShaderInfoTypeAMD infoType,
18539     size_t* pInfoSize,
18540     void* pInfo)
18541 {
18542     AEMU_SCOPED_TRACE("vkGetShaderInfoAMD encode");
18543     mImpl->log("start vkGetShaderInfoAMD");
18544     auto stream = mImpl->stream();
18545     auto countingStream = mImpl->countingStream();
18546     auto resources = mImpl->resources();
18547     auto pool = mImpl->pool();
18548     stream->setHandleMapping(resources->unwrapMapping());
18549     VkDevice local_device;
18550     VkPipeline local_pipeline;
18551     VkShaderStageFlagBits local_shaderStage;
18552     VkShaderInfoTypeAMD local_infoType;
18553     local_device = device;
18554     local_pipeline = pipeline;
18555     local_shaderStage = shaderStage;
18556     local_infoType = infoType;
18557     countingStream->rewind();
18558     {
18559         uint64_t cgen_var_1235;
18560         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1235, 1);
18561         countingStream->write((uint64_t*)&cgen_var_1235, 1 * 8);
18562         uint64_t cgen_var_1236;
18563         countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1236, 1);
18564         countingStream->write((uint64_t*)&cgen_var_1236, 1 * 8);
18565         countingStream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
18566         countingStream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
18567         // WARNING PTR CHECK
18568         uint64_t cgen_var_1237 = (uint64_t)(uintptr_t)pInfoSize;
18569         countingStream->putBe64(cgen_var_1237);
18570         if (pInfoSize)
18571         {
18572             uint64_t cgen_var_1238 = (uint64_t)(*pInfoSize);
18573             countingStream->putBe64(cgen_var_1238);
18574         }
18575         // WARNING PTR CHECK
18576         uint64_t cgen_var_1239 = (uint64_t)(uintptr_t)pInfo;
18577         countingStream->putBe64(cgen_var_1239);
18578         if (pInfo)
18579         {
18580             countingStream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
18581         }
18582     }
18583     uint32_t packetSize_vkGetShaderInfoAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18584     countingStream->rewind();
18585     uint32_t opcode_vkGetShaderInfoAMD = OP_vkGetShaderInfoAMD;
18586     stream->write(&opcode_vkGetShaderInfoAMD, sizeof(uint32_t));
18587     stream->write(&packetSize_vkGetShaderInfoAMD, sizeof(uint32_t));
18588     uint64_t cgen_var_1240;
18589     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1240, 1);
18590     stream->write((uint64_t*)&cgen_var_1240, 1 * 8);
18591     uint64_t cgen_var_1241;
18592     stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1241, 1);
18593     stream->write((uint64_t*)&cgen_var_1241, 1 * 8);
18594     stream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits));
18595     stream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD));
18596     // WARNING PTR CHECK
18597     uint64_t cgen_var_1242 = (uint64_t)(uintptr_t)pInfoSize;
18598     stream->putBe64(cgen_var_1242);
18599     if (pInfoSize)
18600     {
18601         uint64_t cgen_var_1243 = (uint64_t)(*pInfoSize);
18602         stream->putBe64(cgen_var_1243);
18603     }
18604     // WARNING PTR CHECK
18605     uint64_t cgen_var_1244 = (uint64_t)(uintptr_t)pInfo;
18606     stream->putBe64(cgen_var_1244);
18607     if (pInfo)
18608     {
18609         stream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
18610     }
18611     AEMU_SCOPED_TRACE("vkGetShaderInfoAMD readParams");
18612     // WARNING PTR CHECK
18613     size_t* check_pInfoSize;
18614     check_pInfoSize = (size_t*)(uintptr_t)stream->getBe64();
18615     if (pInfoSize)
18616     {
18617         if (!(check_pInfoSize))
18618         {
18619             fprintf(stderr, "fatal: pInfoSize inconsistent between guest and host\n");
18620         }
18621         (*pInfoSize) = (size_t)stream->getBe64();
18622     }
18623     // WARNING PTR CHECK
18624     void* check_pInfo;
18625     check_pInfo = (void*)(uintptr_t)stream->getBe64();
18626     if (pInfo)
18627     {
18628         if (!(check_pInfo))
18629         {
18630             fprintf(stderr, "fatal: pInfo inconsistent between guest and host\n");
18631         }
18632         stream->read((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t));
18633     }
18634     AEMU_SCOPED_TRACE("vkGetShaderInfoAMD returnUnmarshal");
18635     VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0;
18636     stream->read(&vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult));
18637     countingStream->clearPool();
18638     stream->clearPool();
18639     pool->freeAll();
18640     mImpl->log("finish vkGetShaderInfoAMD");;
18641     return vkGetShaderInfoAMD_VkResult_return;
18642 }
18643 
18644 #endif
18645 #ifdef VK_AMD_shader_image_load_store_lod
18646 #endif
18647 #ifdef VK_IMG_format_pvrtc
18648 #endif
18649 #ifdef VK_NV_external_memory_capabilities
vkGetPhysicalDeviceExternalImageFormatPropertiesNV(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkImageTiling tiling,VkImageUsageFlags usage,VkImageCreateFlags flags,VkExternalMemoryHandleTypeFlagsNV externalHandleType,VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties)18650 VkResult VkEncoder::vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
18651     VkPhysicalDevice physicalDevice,
18652     VkFormat format,
18653     VkImageType type,
18654     VkImageTiling tiling,
18655     VkImageUsageFlags usage,
18656     VkImageCreateFlags flags,
18657     VkExternalMemoryHandleTypeFlagsNV externalHandleType,
18658     VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
18659 {
18660     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV encode");
18661     mImpl->log("start vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
18662     auto stream = mImpl->stream();
18663     auto countingStream = mImpl->countingStream();
18664     auto resources = mImpl->resources();
18665     auto pool = mImpl->pool();
18666     stream->setHandleMapping(resources->unwrapMapping());
18667     VkPhysicalDevice local_physicalDevice;
18668     VkFormat local_format;
18669     VkImageType local_type;
18670     VkImageTiling local_tiling;
18671     VkImageUsageFlags local_usage;
18672     VkImageCreateFlags local_flags;
18673     VkExternalMemoryHandleTypeFlagsNV local_externalHandleType;
18674     local_physicalDevice = physicalDevice;
18675     local_format = format;
18676     local_type = type;
18677     local_tiling = tiling;
18678     local_usage = usage;
18679     local_flags = flags;
18680     local_externalHandleType = externalHandleType;
18681     countingStream->rewind();
18682     {
18683         uint64_t cgen_var_1248;
18684         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1248, 1);
18685         countingStream->write((uint64_t*)&cgen_var_1248, 1 * 8);
18686         countingStream->write((VkFormat*)&local_format, sizeof(VkFormat));
18687         countingStream->write((VkImageType*)&local_type, sizeof(VkImageType));
18688         countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
18689         countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
18690         countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
18691         countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
18692         marshal_VkExternalImageFormatPropertiesNV(countingStream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
18693     }
18694     uint32_t packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18695     countingStream->rewind();
18696     uint32_t opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
18697     stream->write(&opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
18698     stream->write(&packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t));
18699     uint64_t cgen_var_1249;
18700     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1249, 1);
18701     stream->write((uint64_t*)&cgen_var_1249, 1 * 8);
18702     stream->write((VkFormat*)&local_format, sizeof(VkFormat));
18703     stream->write((VkImageType*)&local_type, sizeof(VkImageType));
18704     stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling));
18705     stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags));
18706     stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags));
18707     stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
18708     marshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
18709     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV readParams");
18710     unmarshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
18711     if (pExternalImageFormatProperties)
18712     {
18713         transform_fromhost_VkExternalImageFormatPropertiesNV(mImpl->resources(), (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties));
18714     }
18715     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV returnUnmarshal");
18716     VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0;
18717     stream->read(&vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult));
18718     countingStream->clearPool();
18719     stream->clearPool();
18720     pool->freeAll();
18721     mImpl->log("finish vkGetPhysicalDeviceExternalImageFormatPropertiesNV");;
18722     return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return;
18723 }
18724 
18725 #endif
18726 #ifdef VK_NV_external_memory
18727 #endif
18728 #ifdef VK_NV_external_memory_win32
vkGetMemoryWin32HandleNV(VkDevice device,VkDeviceMemory memory,VkExternalMemoryHandleTypeFlagsNV handleType,HANDLE * pHandle)18729 VkResult VkEncoder::vkGetMemoryWin32HandleNV(
18730     VkDevice device,
18731     VkDeviceMemory memory,
18732     VkExternalMemoryHandleTypeFlagsNV handleType,
18733     HANDLE* pHandle)
18734 {
18735     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV encode");
18736     mImpl->log("start vkGetMemoryWin32HandleNV");
18737     auto stream = mImpl->stream();
18738     auto countingStream = mImpl->countingStream();
18739     auto resources = mImpl->resources();
18740     auto pool = mImpl->pool();
18741     stream->setHandleMapping(resources->unwrapMapping());
18742     VkDevice local_device;
18743     VkDeviceMemory local_memory;
18744     VkExternalMemoryHandleTypeFlagsNV local_handleType;
18745     local_device = device;
18746     local_memory = memory;
18747     local_handleType = handleType;
18748     mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
18749     countingStream->rewind();
18750     {
18751         uint64_t cgen_var_1250;
18752         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1250, 1);
18753         countingStream->write((uint64_t*)&cgen_var_1250, 1 * 8);
18754         uint64_t cgen_var_1251;
18755         countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1251, 1);
18756         countingStream->write((uint64_t*)&cgen_var_1251, 1 * 8);
18757         countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
18758         countingStream->write((HANDLE*)pHandle, sizeof(HANDLE));
18759     }
18760     uint32_t packetSize_vkGetMemoryWin32HandleNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18761     countingStream->rewind();
18762     uint32_t opcode_vkGetMemoryWin32HandleNV = OP_vkGetMemoryWin32HandleNV;
18763     stream->write(&opcode_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
18764     stream->write(&packetSize_vkGetMemoryWin32HandleNV, sizeof(uint32_t));
18765     uint64_t cgen_var_1252;
18766     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1252, 1);
18767     stream->write((uint64_t*)&cgen_var_1252, 1 * 8);
18768     uint64_t cgen_var_1253;
18769     stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1253, 1);
18770     stream->write((uint64_t*)&cgen_var_1253, 1 * 8);
18771     stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV));
18772     stream->write((HANDLE*)pHandle, sizeof(HANDLE));
18773     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV readParams");
18774     stream->read((HANDLE*)pHandle, sizeof(HANDLE));
18775     AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV returnUnmarshal");
18776     VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0;
18777     stream->read(&vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult));
18778     countingStream->clearPool();
18779     stream->clearPool();
18780     pool->freeAll();
18781     mImpl->log("finish vkGetMemoryWin32HandleNV");;
18782     return vkGetMemoryWin32HandleNV_VkResult_return;
18783 }
18784 
18785 #endif
18786 #ifdef VK_NV_win32_keyed_mutex
18787 #endif
18788 #ifdef VK_EXT_validation_flags
18789 #endif
18790 #ifdef VK_NN_vi_surface
vkCreateViSurfaceNN(VkInstance instance,const VkViSurfaceCreateInfoNN * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)18791 VkResult VkEncoder::vkCreateViSurfaceNN(
18792     VkInstance instance,
18793     const VkViSurfaceCreateInfoNN* pCreateInfo,
18794     const VkAllocationCallbacks* pAllocator,
18795     VkSurfaceKHR* pSurface)
18796 {
18797     AEMU_SCOPED_TRACE("vkCreateViSurfaceNN encode");
18798     mImpl->log("start vkCreateViSurfaceNN");
18799     auto stream = mImpl->stream();
18800     auto countingStream = mImpl->countingStream();
18801     auto resources = mImpl->resources();
18802     auto pool = mImpl->pool();
18803     stream->setHandleMapping(resources->unwrapMapping());
18804     VkInstance local_instance;
18805     VkViSurfaceCreateInfoNN* local_pCreateInfo;
18806     VkAllocationCallbacks* local_pAllocator;
18807     local_instance = instance;
18808     local_pCreateInfo = nullptr;
18809     if (pCreateInfo)
18810     {
18811         local_pCreateInfo = (VkViSurfaceCreateInfoNN*)pool->alloc(sizeof(const VkViSurfaceCreateInfoNN));
18812         deepcopy_VkViSurfaceCreateInfoNN(pool, pCreateInfo, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
18813     }
18814     local_pAllocator = nullptr;
18815     if (pAllocator)
18816     {
18817         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
18818         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
18819     }
18820     local_pAllocator = nullptr;
18821     if (local_pCreateInfo)
18822     {
18823         transform_tohost_VkViSurfaceCreateInfoNN(mImpl->resources(), (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
18824     }
18825     if (local_pAllocator)
18826     {
18827         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
18828     }
18829     countingStream->rewind();
18830     {
18831         uint64_t cgen_var_1254;
18832         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1254, 1);
18833         countingStream->write((uint64_t*)&cgen_var_1254, 1 * 8);
18834         marshal_VkViSurfaceCreateInfoNN(countingStream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
18835         // WARNING PTR CHECK
18836         uint64_t cgen_var_1255 = (uint64_t)(uintptr_t)local_pAllocator;
18837         countingStream->putBe64(cgen_var_1255);
18838         if (local_pAllocator)
18839         {
18840             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
18841         }
18842         uint64_t cgen_var_1256;
18843         countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1256, 1);
18844         countingStream->write((uint64_t*)&cgen_var_1256, 8);
18845     }
18846     uint32_t packetSize_vkCreateViSurfaceNN = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18847     countingStream->rewind();
18848     uint32_t opcode_vkCreateViSurfaceNN = OP_vkCreateViSurfaceNN;
18849     stream->write(&opcode_vkCreateViSurfaceNN, sizeof(uint32_t));
18850     stream->write(&packetSize_vkCreateViSurfaceNN, sizeof(uint32_t));
18851     uint64_t cgen_var_1257;
18852     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1257, 1);
18853     stream->write((uint64_t*)&cgen_var_1257, 1 * 8);
18854     marshal_VkViSurfaceCreateInfoNN(stream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo));
18855     // WARNING PTR CHECK
18856     uint64_t cgen_var_1258 = (uint64_t)(uintptr_t)local_pAllocator;
18857     stream->putBe64(cgen_var_1258);
18858     if (local_pAllocator)
18859     {
18860         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
18861     }
18862     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
18863     uint64_t cgen_var_1259;
18864     stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1259, 1);
18865     stream->write((uint64_t*)&cgen_var_1259, 8);
18866     stream->setHandleMapping(resources->unwrapMapping());
18867     AEMU_SCOPED_TRACE("vkCreateViSurfaceNN readParams");
18868     uint64_t cgen_var_1260;
18869     stream->read((uint64_t*)&cgen_var_1260, 8);
18870     stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1260, (VkSurfaceKHR*)pSurface, 1);
18871     AEMU_SCOPED_TRACE("vkCreateViSurfaceNN returnUnmarshal");
18872     VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0;
18873     stream->read(&vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult));
18874     countingStream->clearPool();
18875     stream->clearPool();
18876     pool->freeAll();
18877     mImpl->log("finish vkCreateViSurfaceNN");;
18878     return vkCreateViSurfaceNN_VkResult_return;
18879 }
18880 
18881 #endif
18882 #ifdef VK_EXT_shader_subgroup_ballot
18883 #endif
18884 #ifdef VK_EXT_shader_subgroup_vote
18885 #endif
18886 #ifdef VK_EXT_conditional_rendering
vkCmdBeginConditionalRenderingEXT(VkCommandBuffer commandBuffer,const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin)18887 void VkEncoder::vkCmdBeginConditionalRenderingEXT(
18888     VkCommandBuffer commandBuffer,
18889     const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
18890 {
18891     AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT encode");
18892     mImpl->log("start vkCmdBeginConditionalRenderingEXT");
18893     auto stream = mImpl->stream();
18894     auto countingStream = mImpl->countingStream();
18895     auto resources = mImpl->resources();
18896     auto pool = mImpl->pool();
18897     stream->setHandleMapping(resources->unwrapMapping());
18898     VkCommandBuffer local_commandBuffer;
18899     VkConditionalRenderingBeginInfoEXT* local_pConditionalRenderingBegin;
18900     local_commandBuffer = commandBuffer;
18901     local_pConditionalRenderingBegin = nullptr;
18902     if (pConditionalRenderingBegin)
18903     {
18904         local_pConditionalRenderingBegin = (VkConditionalRenderingBeginInfoEXT*)pool->alloc(sizeof(const VkConditionalRenderingBeginInfoEXT));
18905         deepcopy_VkConditionalRenderingBeginInfoEXT(pool, pConditionalRenderingBegin, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
18906     }
18907     if (local_pConditionalRenderingBegin)
18908     {
18909         transform_tohost_VkConditionalRenderingBeginInfoEXT(mImpl->resources(), (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
18910     }
18911     countingStream->rewind();
18912     {
18913         uint64_t cgen_var_1261;
18914         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1261, 1);
18915         countingStream->write((uint64_t*)&cgen_var_1261, 1 * 8);
18916         marshal_VkConditionalRenderingBeginInfoEXT(countingStream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
18917     }
18918     uint32_t packetSize_vkCmdBeginConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18919     countingStream->rewind();
18920     uint32_t opcode_vkCmdBeginConditionalRenderingEXT = OP_vkCmdBeginConditionalRenderingEXT;
18921     stream->write(&opcode_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
18922     stream->write(&packetSize_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t));
18923     uint64_t cgen_var_1262;
18924     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1262, 1);
18925     stream->write((uint64_t*)&cgen_var_1262, 1 * 8);
18926     marshal_VkConditionalRenderingBeginInfoEXT(stream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin));
18927     AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT readParams");
18928     AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT returnUnmarshal");
18929     mImpl->log("finish vkCmdBeginConditionalRenderingEXT");;
18930 }
18931 
vkCmdEndConditionalRenderingEXT(VkCommandBuffer commandBuffer)18932 void VkEncoder::vkCmdEndConditionalRenderingEXT(
18933     VkCommandBuffer commandBuffer)
18934 {
18935     AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT encode");
18936     mImpl->log("start vkCmdEndConditionalRenderingEXT");
18937     auto stream = mImpl->stream();
18938     auto countingStream = mImpl->countingStream();
18939     auto resources = mImpl->resources();
18940     auto pool = mImpl->pool();
18941     stream->setHandleMapping(resources->unwrapMapping());
18942     VkCommandBuffer local_commandBuffer;
18943     local_commandBuffer = commandBuffer;
18944     countingStream->rewind();
18945     {
18946         uint64_t cgen_var_1263;
18947         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1263, 1);
18948         countingStream->write((uint64_t*)&cgen_var_1263, 1 * 8);
18949     }
18950     uint32_t packetSize_vkCmdEndConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18951     countingStream->rewind();
18952     uint32_t opcode_vkCmdEndConditionalRenderingEXT = OP_vkCmdEndConditionalRenderingEXT;
18953     stream->write(&opcode_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
18954     stream->write(&packetSize_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t));
18955     uint64_t cgen_var_1264;
18956     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1264, 1);
18957     stream->write((uint64_t*)&cgen_var_1264, 1 * 8);
18958     AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT readParams");
18959     AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT returnUnmarshal");
18960     mImpl->log("finish vkCmdEndConditionalRenderingEXT");;
18961 }
18962 
18963 #endif
18964 #ifdef VK_NVX_device_generated_commands
vkCmdProcessCommandsNVX(VkCommandBuffer commandBuffer,const VkCmdProcessCommandsInfoNVX * pProcessCommandsInfo)18965 void VkEncoder::vkCmdProcessCommandsNVX(
18966     VkCommandBuffer commandBuffer,
18967     const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
18968 {
18969     AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX encode");
18970     mImpl->log("start vkCmdProcessCommandsNVX");
18971     auto stream = mImpl->stream();
18972     auto countingStream = mImpl->countingStream();
18973     auto resources = mImpl->resources();
18974     auto pool = mImpl->pool();
18975     stream->setHandleMapping(resources->unwrapMapping());
18976     VkCommandBuffer local_commandBuffer;
18977     VkCmdProcessCommandsInfoNVX* local_pProcessCommandsInfo;
18978     local_commandBuffer = commandBuffer;
18979     local_pProcessCommandsInfo = nullptr;
18980     if (pProcessCommandsInfo)
18981     {
18982         local_pProcessCommandsInfo = (VkCmdProcessCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdProcessCommandsInfoNVX));
18983         deepcopy_VkCmdProcessCommandsInfoNVX(pool, pProcessCommandsInfo, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
18984     }
18985     if (local_pProcessCommandsInfo)
18986     {
18987         transform_tohost_VkCmdProcessCommandsInfoNVX(mImpl->resources(), (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
18988     }
18989     countingStream->rewind();
18990     {
18991         uint64_t cgen_var_1265;
18992         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1265, 1);
18993         countingStream->write((uint64_t*)&cgen_var_1265, 1 * 8);
18994         marshal_VkCmdProcessCommandsInfoNVX(countingStream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
18995     }
18996     uint32_t packetSize_vkCmdProcessCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
18997     countingStream->rewind();
18998     uint32_t opcode_vkCmdProcessCommandsNVX = OP_vkCmdProcessCommandsNVX;
18999     stream->write(&opcode_vkCmdProcessCommandsNVX, sizeof(uint32_t));
19000     stream->write(&packetSize_vkCmdProcessCommandsNVX, sizeof(uint32_t));
19001     uint64_t cgen_var_1266;
19002     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1266, 1);
19003     stream->write((uint64_t*)&cgen_var_1266, 1 * 8);
19004     marshal_VkCmdProcessCommandsInfoNVX(stream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo));
19005     AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX readParams");
19006     AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX returnUnmarshal");
19007     mImpl->log("finish vkCmdProcessCommandsNVX");;
19008 }
19009 
vkCmdReserveSpaceForCommandsNVX(VkCommandBuffer commandBuffer,const VkCmdReserveSpaceForCommandsInfoNVX * pReserveSpaceInfo)19010 void VkEncoder::vkCmdReserveSpaceForCommandsNVX(
19011     VkCommandBuffer commandBuffer,
19012     const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
19013 {
19014     AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX encode");
19015     mImpl->log("start vkCmdReserveSpaceForCommandsNVX");
19016     auto stream = mImpl->stream();
19017     auto countingStream = mImpl->countingStream();
19018     auto resources = mImpl->resources();
19019     auto pool = mImpl->pool();
19020     stream->setHandleMapping(resources->unwrapMapping());
19021     VkCommandBuffer local_commandBuffer;
19022     VkCmdReserveSpaceForCommandsInfoNVX* local_pReserveSpaceInfo;
19023     local_commandBuffer = commandBuffer;
19024     local_pReserveSpaceInfo = nullptr;
19025     if (pReserveSpaceInfo)
19026     {
19027         local_pReserveSpaceInfo = (VkCmdReserveSpaceForCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdReserveSpaceForCommandsInfoNVX));
19028         deepcopy_VkCmdReserveSpaceForCommandsInfoNVX(pool, pReserveSpaceInfo, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
19029     }
19030     if (local_pReserveSpaceInfo)
19031     {
19032         transform_tohost_VkCmdReserveSpaceForCommandsInfoNVX(mImpl->resources(), (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
19033     }
19034     countingStream->rewind();
19035     {
19036         uint64_t cgen_var_1267;
19037         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1267, 1);
19038         countingStream->write((uint64_t*)&cgen_var_1267, 1 * 8);
19039         marshal_VkCmdReserveSpaceForCommandsInfoNVX(countingStream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
19040     }
19041     uint32_t packetSize_vkCmdReserveSpaceForCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19042     countingStream->rewind();
19043     uint32_t opcode_vkCmdReserveSpaceForCommandsNVX = OP_vkCmdReserveSpaceForCommandsNVX;
19044     stream->write(&opcode_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
19045     stream->write(&packetSize_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t));
19046     uint64_t cgen_var_1268;
19047     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1268, 1);
19048     stream->write((uint64_t*)&cgen_var_1268, 1 * 8);
19049     marshal_VkCmdReserveSpaceForCommandsInfoNVX(stream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo));
19050     AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX readParams");
19051     AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX returnUnmarshal");
19052     mImpl->log("finish vkCmdReserveSpaceForCommandsNVX");;
19053 }
19054 
vkCreateIndirectCommandsLayoutNVX(VkDevice device,const VkIndirectCommandsLayoutCreateInfoNVX * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkIndirectCommandsLayoutNVX * pIndirectCommandsLayout)19055 VkResult VkEncoder::vkCreateIndirectCommandsLayoutNVX(
19056     VkDevice device,
19057     const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
19058     const VkAllocationCallbacks* pAllocator,
19059     VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
19060 {
19061     AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX encode");
19062     mImpl->log("start vkCreateIndirectCommandsLayoutNVX");
19063     auto stream = mImpl->stream();
19064     auto countingStream = mImpl->countingStream();
19065     auto resources = mImpl->resources();
19066     auto pool = mImpl->pool();
19067     stream->setHandleMapping(resources->unwrapMapping());
19068     VkDevice local_device;
19069     VkIndirectCommandsLayoutCreateInfoNVX* local_pCreateInfo;
19070     VkAllocationCallbacks* local_pAllocator;
19071     local_device = device;
19072     local_pCreateInfo = nullptr;
19073     if (pCreateInfo)
19074     {
19075         local_pCreateInfo = (VkIndirectCommandsLayoutCreateInfoNVX*)pool->alloc(sizeof(const VkIndirectCommandsLayoutCreateInfoNVX));
19076         deepcopy_VkIndirectCommandsLayoutCreateInfoNVX(pool, pCreateInfo, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
19077     }
19078     local_pAllocator = nullptr;
19079     if (pAllocator)
19080     {
19081         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19082         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19083     }
19084     local_pAllocator = nullptr;
19085     if (local_pCreateInfo)
19086     {
19087         transform_tohost_VkIndirectCommandsLayoutCreateInfoNVX(mImpl->resources(), (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
19088     }
19089     if (local_pAllocator)
19090     {
19091         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
19092     }
19093     countingStream->rewind();
19094     {
19095         uint64_t cgen_var_1269;
19096         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1269, 1);
19097         countingStream->write((uint64_t*)&cgen_var_1269, 1 * 8);
19098         marshal_VkIndirectCommandsLayoutCreateInfoNVX(countingStream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
19099         // WARNING PTR CHECK
19100         uint64_t cgen_var_1270 = (uint64_t)(uintptr_t)local_pAllocator;
19101         countingStream->putBe64(cgen_var_1270);
19102         if (local_pAllocator)
19103         {
19104             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
19105         }
19106         uint64_t cgen_var_1271;
19107         countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1271, 1);
19108         countingStream->write((uint64_t*)&cgen_var_1271, 8);
19109     }
19110     uint32_t packetSize_vkCreateIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19111     countingStream->rewind();
19112     uint32_t opcode_vkCreateIndirectCommandsLayoutNVX = OP_vkCreateIndirectCommandsLayoutNVX;
19113     stream->write(&opcode_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
19114     stream->write(&packetSize_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t));
19115     uint64_t cgen_var_1272;
19116     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1272, 1);
19117     stream->write((uint64_t*)&cgen_var_1272, 1 * 8);
19118     marshal_VkIndirectCommandsLayoutCreateInfoNVX(stream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo));
19119     // WARNING PTR CHECK
19120     uint64_t cgen_var_1273 = (uint64_t)(uintptr_t)local_pAllocator;
19121     stream->putBe64(cgen_var_1273);
19122     if (local_pAllocator)
19123     {
19124         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
19125     }
19126     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
19127     uint64_t cgen_var_1274;
19128     stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1274, 1);
19129     stream->write((uint64_t*)&cgen_var_1274, 8);
19130     stream->setHandleMapping(resources->unwrapMapping());
19131     AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX readParams");
19132     stream->setHandleMapping(resources->createMapping());
19133     uint64_t cgen_var_1275;
19134     stream->read((uint64_t*)&cgen_var_1275, 8);
19135     stream->handleMapping()->mapHandles_u64_VkIndirectCommandsLayoutNVX(&cgen_var_1275, (VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, 1);
19136     stream->unsetHandleMapping();
19137     AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX returnUnmarshal");
19138     VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0;
19139     stream->read(&vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult));
19140     countingStream->clearPool();
19141     stream->clearPool();
19142     pool->freeAll();
19143     mImpl->log("finish vkCreateIndirectCommandsLayoutNVX");;
19144     return vkCreateIndirectCommandsLayoutNVX_VkResult_return;
19145 }
19146 
vkDestroyIndirectCommandsLayoutNVX(VkDevice device,VkIndirectCommandsLayoutNVX indirectCommandsLayout,const VkAllocationCallbacks * pAllocator)19147 void VkEncoder::vkDestroyIndirectCommandsLayoutNVX(
19148     VkDevice device,
19149     VkIndirectCommandsLayoutNVX indirectCommandsLayout,
19150     const VkAllocationCallbacks* pAllocator)
19151 {
19152     AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX encode");
19153     mImpl->log("start vkDestroyIndirectCommandsLayoutNVX");
19154     auto stream = mImpl->stream();
19155     auto countingStream = mImpl->countingStream();
19156     auto resources = mImpl->resources();
19157     auto pool = mImpl->pool();
19158     stream->setHandleMapping(resources->unwrapMapping());
19159     VkDevice local_device;
19160     VkIndirectCommandsLayoutNVX local_indirectCommandsLayout;
19161     VkAllocationCallbacks* local_pAllocator;
19162     local_device = device;
19163     local_indirectCommandsLayout = indirectCommandsLayout;
19164     local_pAllocator = nullptr;
19165     if (pAllocator)
19166     {
19167         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19168         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19169     }
19170     local_pAllocator = nullptr;
19171     if (local_pAllocator)
19172     {
19173         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
19174     }
19175     countingStream->rewind();
19176     {
19177         uint64_t cgen_var_1276;
19178         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1276, 1);
19179         countingStream->write((uint64_t*)&cgen_var_1276, 1 * 8);
19180         uint64_t cgen_var_1277;
19181         countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1277, 1);
19182         countingStream->write((uint64_t*)&cgen_var_1277, 1 * 8);
19183         // WARNING PTR CHECK
19184         uint64_t cgen_var_1278 = (uint64_t)(uintptr_t)local_pAllocator;
19185         countingStream->putBe64(cgen_var_1278);
19186         if (local_pAllocator)
19187         {
19188             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
19189         }
19190     }
19191     uint32_t packetSize_vkDestroyIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19192     countingStream->rewind();
19193     uint32_t opcode_vkDestroyIndirectCommandsLayoutNVX = OP_vkDestroyIndirectCommandsLayoutNVX;
19194     stream->write(&opcode_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
19195     stream->write(&packetSize_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t));
19196     uint64_t cgen_var_1279;
19197     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1279, 1);
19198     stream->write((uint64_t*)&cgen_var_1279, 1 * 8);
19199     uint64_t cgen_var_1280;
19200     stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1280, 1);
19201     stream->write((uint64_t*)&cgen_var_1280, 1 * 8);
19202     // WARNING PTR CHECK
19203     uint64_t cgen_var_1281 = (uint64_t)(uintptr_t)local_pAllocator;
19204     stream->putBe64(cgen_var_1281);
19205     if (local_pAllocator)
19206     {
19207         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
19208     }
19209     AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX readParams");
19210     AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX returnUnmarshal");
19211     resources->destroyMapping()->mapHandles_VkIndirectCommandsLayoutNVX((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout);
19212     mImpl->log("finish vkDestroyIndirectCommandsLayoutNVX");;
19213 }
19214 
vkCreateObjectTableNVX(VkDevice device,const VkObjectTableCreateInfoNVX * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkObjectTableNVX * pObjectTable)19215 VkResult VkEncoder::vkCreateObjectTableNVX(
19216     VkDevice device,
19217     const VkObjectTableCreateInfoNVX* pCreateInfo,
19218     const VkAllocationCallbacks* pAllocator,
19219     VkObjectTableNVX* pObjectTable)
19220 {
19221     AEMU_SCOPED_TRACE("vkCreateObjectTableNVX encode");
19222     mImpl->log("start vkCreateObjectTableNVX");
19223     auto stream = mImpl->stream();
19224     auto countingStream = mImpl->countingStream();
19225     auto resources = mImpl->resources();
19226     auto pool = mImpl->pool();
19227     stream->setHandleMapping(resources->unwrapMapping());
19228     VkDevice local_device;
19229     VkObjectTableCreateInfoNVX* local_pCreateInfo;
19230     VkAllocationCallbacks* local_pAllocator;
19231     local_device = device;
19232     local_pCreateInfo = nullptr;
19233     if (pCreateInfo)
19234     {
19235         local_pCreateInfo = (VkObjectTableCreateInfoNVX*)pool->alloc(sizeof(const VkObjectTableCreateInfoNVX));
19236         deepcopy_VkObjectTableCreateInfoNVX(pool, pCreateInfo, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
19237     }
19238     local_pAllocator = nullptr;
19239     if (pAllocator)
19240     {
19241         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19242         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19243     }
19244     local_pAllocator = nullptr;
19245     if (local_pCreateInfo)
19246     {
19247         transform_tohost_VkObjectTableCreateInfoNVX(mImpl->resources(), (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
19248     }
19249     if (local_pAllocator)
19250     {
19251         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
19252     }
19253     countingStream->rewind();
19254     {
19255         uint64_t cgen_var_1282;
19256         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1282, 1);
19257         countingStream->write((uint64_t*)&cgen_var_1282, 1 * 8);
19258         marshal_VkObjectTableCreateInfoNVX(countingStream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
19259         // WARNING PTR CHECK
19260         uint64_t cgen_var_1283 = (uint64_t)(uintptr_t)local_pAllocator;
19261         countingStream->putBe64(cgen_var_1283);
19262         if (local_pAllocator)
19263         {
19264             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
19265         }
19266         uint64_t cgen_var_1284;
19267         countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1284, 1);
19268         countingStream->write((uint64_t*)&cgen_var_1284, 8);
19269     }
19270     uint32_t packetSize_vkCreateObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19271     countingStream->rewind();
19272     uint32_t opcode_vkCreateObjectTableNVX = OP_vkCreateObjectTableNVX;
19273     stream->write(&opcode_vkCreateObjectTableNVX, sizeof(uint32_t));
19274     stream->write(&packetSize_vkCreateObjectTableNVX, sizeof(uint32_t));
19275     uint64_t cgen_var_1285;
19276     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1285, 1);
19277     stream->write((uint64_t*)&cgen_var_1285, 1 * 8);
19278     marshal_VkObjectTableCreateInfoNVX(stream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo));
19279     // WARNING PTR CHECK
19280     uint64_t cgen_var_1286 = (uint64_t)(uintptr_t)local_pAllocator;
19281     stream->putBe64(cgen_var_1286);
19282     if (local_pAllocator)
19283     {
19284         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
19285     }
19286     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
19287     uint64_t cgen_var_1287;
19288     stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1287, 1);
19289     stream->write((uint64_t*)&cgen_var_1287, 8);
19290     stream->setHandleMapping(resources->unwrapMapping());
19291     AEMU_SCOPED_TRACE("vkCreateObjectTableNVX readParams");
19292     stream->setHandleMapping(resources->createMapping());
19293     uint64_t cgen_var_1288;
19294     stream->read((uint64_t*)&cgen_var_1288, 8);
19295     stream->handleMapping()->mapHandles_u64_VkObjectTableNVX(&cgen_var_1288, (VkObjectTableNVX*)pObjectTable, 1);
19296     stream->unsetHandleMapping();
19297     AEMU_SCOPED_TRACE("vkCreateObjectTableNVX returnUnmarshal");
19298     VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0;
19299     stream->read(&vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult));
19300     countingStream->clearPool();
19301     stream->clearPool();
19302     pool->freeAll();
19303     mImpl->log("finish vkCreateObjectTableNVX");;
19304     return vkCreateObjectTableNVX_VkResult_return;
19305 }
19306 
vkDestroyObjectTableNVX(VkDevice device,VkObjectTableNVX objectTable,const VkAllocationCallbacks * pAllocator)19307 void VkEncoder::vkDestroyObjectTableNVX(
19308     VkDevice device,
19309     VkObjectTableNVX objectTable,
19310     const VkAllocationCallbacks* pAllocator)
19311 {
19312     AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX encode");
19313     mImpl->log("start vkDestroyObjectTableNVX");
19314     auto stream = mImpl->stream();
19315     auto countingStream = mImpl->countingStream();
19316     auto resources = mImpl->resources();
19317     auto pool = mImpl->pool();
19318     stream->setHandleMapping(resources->unwrapMapping());
19319     VkDevice local_device;
19320     VkObjectTableNVX local_objectTable;
19321     VkAllocationCallbacks* local_pAllocator;
19322     local_device = device;
19323     local_objectTable = objectTable;
19324     local_pAllocator = nullptr;
19325     if (pAllocator)
19326     {
19327         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19328         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19329     }
19330     local_pAllocator = nullptr;
19331     if (local_pAllocator)
19332     {
19333         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
19334     }
19335     countingStream->rewind();
19336     {
19337         uint64_t cgen_var_1289;
19338         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1289, 1);
19339         countingStream->write((uint64_t*)&cgen_var_1289, 1 * 8);
19340         uint64_t cgen_var_1290;
19341         countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1290, 1);
19342         countingStream->write((uint64_t*)&cgen_var_1290, 1 * 8);
19343         // WARNING PTR CHECK
19344         uint64_t cgen_var_1291 = (uint64_t)(uintptr_t)local_pAllocator;
19345         countingStream->putBe64(cgen_var_1291);
19346         if (local_pAllocator)
19347         {
19348             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
19349         }
19350     }
19351     uint32_t packetSize_vkDestroyObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19352     countingStream->rewind();
19353     uint32_t opcode_vkDestroyObjectTableNVX = OP_vkDestroyObjectTableNVX;
19354     stream->write(&opcode_vkDestroyObjectTableNVX, sizeof(uint32_t));
19355     stream->write(&packetSize_vkDestroyObjectTableNVX, sizeof(uint32_t));
19356     uint64_t cgen_var_1292;
19357     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1292, 1);
19358     stream->write((uint64_t*)&cgen_var_1292, 1 * 8);
19359     uint64_t cgen_var_1293;
19360     stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1293, 1);
19361     stream->write((uint64_t*)&cgen_var_1293, 1 * 8);
19362     // WARNING PTR CHECK
19363     uint64_t cgen_var_1294 = (uint64_t)(uintptr_t)local_pAllocator;
19364     stream->putBe64(cgen_var_1294);
19365     if (local_pAllocator)
19366     {
19367         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
19368     }
19369     AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX readParams");
19370     AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX returnUnmarshal");
19371     resources->destroyMapping()->mapHandles_VkObjectTableNVX((VkObjectTableNVX*)&objectTable);
19372     mImpl->log("finish vkDestroyObjectTableNVX");;
19373 }
19374 
vkRegisterObjectsNVX(VkDevice device,VkObjectTableNVX objectTable,uint32_t objectCount,const VkObjectTableEntryNVX * const * ppObjectTableEntries,const uint32_t * pObjectIndices)19375 VkResult VkEncoder::vkRegisterObjectsNVX(
19376     VkDevice device,
19377     VkObjectTableNVX objectTable,
19378     uint32_t objectCount,
19379     const VkObjectTableEntryNVX* const* ppObjectTableEntries,
19380     const uint32_t* pObjectIndices)
19381 {
19382     AEMU_SCOPED_TRACE("vkRegisterObjectsNVX encode");
19383     mImpl->log("start vkRegisterObjectsNVX");
19384     auto stream = mImpl->stream();
19385     auto countingStream = mImpl->countingStream();
19386     auto resources = mImpl->resources();
19387     auto pool = mImpl->pool();
19388     stream->setHandleMapping(resources->unwrapMapping());
19389     VkDevice local_device;
19390     VkObjectTableNVX local_objectTable;
19391     uint32_t local_objectCount;
19392     VkObjectTableEntryNVX** local_ppObjectTableEntries;
19393     uint32_t* local_pObjectIndices;
19394     local_device = device;
19395     local_objectTable = objectTable;
19396     local_objectCount = objectCount;
19397     (void)ppObjectTableEntries;
19398     local_pObjectIndices = nullptr;
19399     if (pObjectIndices)
19400     {
19401         local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
19402     }
19403     (void)local_ppObjectTableEntries;
19404     countingStream->rewind();
19405     {
19406         uint64_t cgen_var_1295;
19407         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1295, 1);
19408         countingStream->write((uint64_t*)&cgen_var_1295, 1 * 8);
19409         uint64_t cgen_var_1296;
19410         countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1296, 1);
19411         countingStream->write((uint64_t*)&cgen_var_1296, 1 * 8);
19412         countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
19413         (void)local_ppObjectTableEntries;
19414         countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
19415     }
19416     uint32_t packetSize_vkRegisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19417     countingStream->rewind();
19418     uint32_t opcode_vkRegisterObjectsNVX = OP_vkRegisterObjectsNVX;
19419     stream->write(&opcode_vkRegisterObjectsNVX, sizeof(uint32_t));
19420     stream->write(&packetSize_vkRegisterObjectsNVX, sizeof(uint32_t));
19421     uint64_t cgen_var_1297;
19422     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1297, 1);
19423     stream->write((uint64_t*)&cgen_var_1297, 1 * 8);
19424     uint64_t cgen_var_1298;
19425     stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1298, 1);
19426     stream->write((uint64_t*)&cgen_var_1298, 1 * 8);
19427     stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
19428     (void)local_ppObjectTableEntries;
19429     stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
19430     AEMU_SCOPED_TRACE("vkRegisterObjectsNVX readParams");
19431     AEMU_SCOPED_TRACE("vkRegisterObjectsNVX returnUnmarshal");
19432     VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0;
19433     stream->read(&vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult));
19434     countingStream->clearPool();
19435     stream->clearPool();
19436     pool->freeAll();
19437     mImpl->log("finish vkRegisterObjectsNVX");;
19438     return vkRegisterObjectsNVX_VkResult_return;
19439 }
19440 
vkUnregisterObjectsNVX(VkDevice device,VkObjectTableNVX objectTable,uint32_t objectCount,const VkObjectEntryTypeNVX * pObjectEntryTypes,const uint32_t * pObjectIndices)19441 VkResult VkEncoder::vkUnregisterObjectsNVX(
19442     VkDevice device,
19443     VkObjectTableNVX objectTable,
19444     uint32_t objectCount,
19445     const VkObjectEntryTypeNVX* pObjectEntryTypes,
19446     const uint32_t* pObjectIndices)
19447 {
19448     AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX encode");
19449     mImpl->log("start vkUnregisterObjectsNVX");
19450     auto stream = mImpl->stream();
19451     auto countingStream = mImpl->countingStream();
19452     auto resources = mImpl->resources();
19453     auto pool = mImpl->pool();
19454     stream->setHandleMapping(resources->unwrapMapping());
19455     VkDevice local_device;
19456     VkObjectTableNVX local_objectTable;
19457     uint32_t local_objectCount;
19458     VkObjectEntryTypeNVX* local_pObjectEntryTypes;
19459     uint32_t* local_pObjectIndices;
19460     local_device = device;
19461     local_objectTable = objectTable;
19462     local_objectCount = objectCount;
19463     local_pObjectEntryTypes = nullptr;
19464     if (pObjectEntryTypes)
19465     {
19466         local_pObjectEntryTypes = (VkObjectEntryTypeNVX*)pool->dupArray(pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX));
19467     }
19468     local_pObjectIndices = nullptr;
19469     if (pObjectIndices)
19470     {
19471         local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t));
19472     }
19473     countingStream->rewind();
19474     {
19475         uint64_t cgen_var_1299;
19476         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1299, 1);
19477         countingStream->write((uint64_t*)&cgen_var_1299, 1 * 8);
19478         uint64_t cgen_var_1300;
19479         countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1300, 1);
19480         countingStream->write((uint64_t*)&cgen_var_1300, 1 * 8);
19481         countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
19482         countingStream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
19483         countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
19484     }
19485     uint32_t packetSize_vkUnregisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19486     countingStream->rewind();
19487     uint32_t opcode_vkUnregisterObjectsNVX = OP_vkUnregisterObjectsNVX;
19488     stream->write(&opcode_vkUnregisterObjectsNVX, sizeof(uint32_t));
19489     stream->write(&packetSize_vkUnregisterObjectsNVX, sizeof(uint32_t));
19490     uint64_t cgen_var_1301;
19491     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1301, 1);
19492     stream->write((uint64_t*)&cgen_var_1301, 1 * 8);
19493     uint64_t cgen_var_1302;
19494     stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1302, 1);
19495     stream->write((uint64_t*)&cgen_var_1302, 1 * 8);
19496     stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t));
19497     stream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX));
19498     stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t));
19499     AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX readParams");
19500     AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX returnUnmarshal");
19501     VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0;
19502     stream->read(&vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult));
19503     countingStream->clearPool();
19504     stream->clearPool();
19505     pool->freeAll();
19506     mImpl->log("finish vkUnregisterObjectsNVX");;
19507     return vkUnregisterObjectsNVX_VkResult_return;
19508 }
19509 
vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(VkPhysicalDevice physicalDevice,VkDeviceGeneratedCommandsFeaturesNVX * pFeatures,VkDeviceGeneratedCommandsLimitsNVX * pLimits)19510 void VkEncoder::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
19511     VkPhysicalDevice physicalDevice,
19512     VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
19513     VkDeviceGeneratedCommandsLimitsNVX* pLimits)
19514 {
19515     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX encode");
19516     mImpl->log("start vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");
19517     auto stream = mImpl->stream();
19518     auto countingStream = mImpl->countingStream();
19519     auto resources = mImpl->resources();
19520     auto pool = mImpl->pool();
19521     stream->setHandleMapping(resources->unwrapMapping());
19522     VkPhysicalDevice local_physicalDevice;
19523     local_physicalDevice = physicalDevice;
19524     countingStream->rewind();
19525     {
19526         uint64_t cgen_var_1303;
19527         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1303, 1);
19528         countingStream->write((uint64_t*)&cgen_var_1303, 1 * 8);
19529         marshal_VkDeviceGeneratedCommandsFeaturesNVX(countingStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
19530         marshal_VkDeviceGeneratedCommandsLimitsNVX(countingStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
19531     }
19532     uint32_t packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19533     countingStream->rewind();
19534     uint32_t opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = OP_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX;
19535     stream->write(&opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
19536     stream->write(&packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t));
19537     uint64_t cgen_var_1304;
19538     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1304, 1);
19539     stream->write((uint64_t*)&cgen_var_1304, 1 * 8);
19540     marshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
19541     marshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
19542     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX readParams");
19543     unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
19544     if (pFeatures)
19545     {
19546         transform_fromhost_VkDeviceGeneratedCommandsFeaturesNVX(mImpl->resources(), (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures));
19547     }
19548     unmarshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
19549     if (pLimits)
19550     {
19551         transform_fromhost_VkDeviceGeneratedCommandsLimitsNVX(mImpl->resources(), (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits));
19552     }
19553     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX returnUnmarshal");
19554     mImpl->log("finish vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");;
19555 }
19556 
19557 #endif
19558 #ifdef VK_NV_clip_space_w_scaling
vkCmdSetViewportWScalingNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewportWScalingNV * pViewportWScalings)19559 void VkEncoder::vkCmdSetViewportWScalingNV(
19560     VkCommandBuffer commandBuffer,
19561     uint32_t firstViewport,
19562     uint32_t viewportCount,
19563     const VkViewportWScalingNV* pViewportWScalings)
19564 {
19565     AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV encode");
19566     mImpl->log("start vkCmdSetViewportWScalingNV");
19567     auto stream = mImpl->stream();
19568     auto countingStream = mImpl->countingStream();
19569     auto resources = mImpl->resources();
19570     auto pool = mImpl->pool();
19571     stream->setHandleMapping(resources->unwrapMapping());
19572     VkCommandBuffer local_commandBuffer;
19573     uint32_t local_firstViewport;
19574     uint32_t local_viewportCount;
19575     VkViewportWScalingNV* local_pViewportWScalings;
19576     local_commandBuffer = commandBuffer;
19577     local_firstViewport = firstViewport;
19578     local_viewportCount = viewportCount;
19579     local_pViewportWScalings = nullptr;
19580     if (pViewportWScalings)
19581     {
19582         local_pViewportWScalings = (VkViewportWScalingNV*)pool->alloc(((viewportCount)) * sizeof(const VkViewportWScalingNV));
19583         for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
19584         {
19585             deepcopy_VkViewportWScalingNV(pool, pViewportWScalings + i, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
19586         }
19587     }
19588     if (local_pViewportWScalings)
19589     {
19590         for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
19591         {
19592             transform_tohost_VkViewportWScalingNV(mImpl->resources(), (VkViewportWScalingNV*)(local_pViewportWScalings + i));
19593         }
19594     }
19595     countingStream->rewind();
19596     {
19597         uint64_t cgen_var_1305;
19598         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1305, 1);
19599         countingStream->write((uint64_t*)&cgen_var_1305, 1 * 8);
19600         countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
19601         countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
19602         for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
19603         {
19604             marshal_VkViewportWScalingNV(countingStream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
19605         }
19606     }
19607     uint32_t packetSize_vkCmdSetViewportWScalingNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19608     countingStream->rewind();
19609     uint32_t opcode_vkCmdSetViewportWScalingNV = OP_vkCmdSetViewportWScalingNV;
19610     stream->write(&opcode_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
19611     stream->write(&packetSize_vkCmdSetViewportWScalingNV, sizeof(uint32_t));
19612     uint64_t cgen_var_1306;
19613     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1306, 1);
19614     stream->write((uint64_t*)&cgen_var_1306, 1 * 8);
19615     stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t));
19616     stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t));
19617     for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i)
19618     {
19619         marshal_VkViewportWScalingNV(stream, (VkViewportWScalingNV*)(local_pViewportWScalings + i));
19620     }
19621     AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV readParams");
19622     AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV returnUnmarshal");
19623     mImpl->log("finish vkCmdSetViewportWScalingNV");;
19624 }
19625 
19626 #endif
19627 #ifdef VK_EXT_direct_mode_display
vkReleaseDisplayEXT(VkPhysicalDevice physicalDevice,VkDisplayKHR display)19628 VkResult VkEncoder::vkReleaseDisplayEXT(
19629     VkPhysicalDevice physicalDevice,
19630     VkDisplayKHR display)
19631 {
19632     AEMU_SCOPED_TRACE("vkReleaseDisplayEXT encode");
19633     mImpl->log("start vkReleaseDisplayEXT");
19634     auto stream = mImpl->stream();
19635     auto countingStream = mImpl->countingStream();
19636     auto resources = mImpl->resources();
19637     auto pool = mImpl->pool();
19638     stream->setHandleMapping(resources->unwrapMapping());
19639     VkPhysicalDevice local_physicalDevice;
19640     VkDisplayKHR local_display;
19641     local_physicalDevice = physicalDevice;
19642     local_display = display;
19643     countingStream->rewind();
19644     {
19645         uint64_t cgen_var_1307;
19646         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1307, 1);
19647         countingStream->write((uint64_t*)&cgen_var_1307, 1 * 8);
19648         uint64_t cgen_var_1308;
19649         countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1308, 1);
19650         countingStream->write((uint64_t*)&cgen_var_1308, 1 * 8);
19651     }
19652     uint32_t packetSize_vkReleaseDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19653     countingStream->rewind();
19654     uint32_t opcode_vkReleaseDisplayEXT = OP_vkReleaseDisplayEXT;
19655     stream->write(&opcode_vkReleaseDisplayEXT, sizeof(uint32_t));
19656     stream->write(&packetSize_vkReleaseDisplayEXT, sizeof(uint32_t));
19657     uint64_t cgen_var_1309;
19658     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1309, 1);
19659     stream->write((uint64_t*)&cgen_var_1309, 1 * 8);
19660     uint64_t cgen_var_1310;
19661     stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1310, 1);
19662     stream->write((uint64_t*)&cgen_var_1310, 1 * 8);
19663     AEMU_SCOPED_TRACE("vkReleaseDisplayEXT readParams");
19664     AEMU_SCOPED_TRACE("vkReleaseDisplayEXT returnUnmarshal");
19665     VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0;
19666     stream->read(&vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult));
19667     countingStream->clearPool();
19668     stream->clearPool();
19669     pool->freeAll();
19670     mImpl->log("finish vkReleaseDisplayEXT");;
19671     return vkReleaseDisplayEXT_VkResult_return;
19672 }
19673 
19674 #endif
19675 #ifdef VK_EXT_acquire_xlib_display
vkAcquireXlibDisplayEXT(VkPhysicalDevice physicalDevice,Display * dpy,VkDisplayKHR display)19676 VkResult VkEncoder::vkAcquireXlibDisplayEXT(
19677     VkPhysicalDevice physicalDevice,
19678     Display* dpy,
19679     VkDisplayKHR display)
19680 {
19681     AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT encode");
19682     mImpl->log("start vkAcquireXlibDisplayEXT");
19683     auto stream = mImpl->stream();
19684     auto countingStream = mImpl->countingStream();
19685     auto resources = mImpl->resources();
19686     auto pool = mImpl->pool();
19687     stream->setHandleMapping(resources->unwrapMapping());
19688     VkPhysicalDevice local_physicalDevice;
19689     VkDisplayKHR local_display;
19690     local_physicalDevice = physicalDevice;
19691     local_display = display;
19692     countingStream->rewind();
19693     {
19694         uint64_t cgen_var_1311;
19695         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1311, 1);
19696         countingStream->write((uint64_t*)&cgen_var_1311, 1 * 8);
19697         countingStream->write((Display*)dpy, sizeof(Display));
19698         uint64_t cgen_var_1312;
19699         countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1312, 1);
19700         countingStream->write((uint64_t*)&cgen_var_1312, 1 * 8);
19701     }
19702     uint32_t packetSize_vkAcquireXlibDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19703     countingStream->rewind();
19704     uint32_t opcode_vkAcquireXlibDisplayEXT = OP_vkAcquireXlibDisplayEXT;
19705     stream->write(&opcode_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
19706     stream->write(&packetSize_vkAcquireXlibDisplayEXT, sizeof(uint32_t));
19707     uint64_t cgen_var_1313;
19708     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1313, 1);
19709     stream->write((uint64_t*)&cgen_var_1313, 1 * 8);
19710     stream->write((Display*)dpy, sizeof(Display));
19711     uint64_t cgen_var_1314;
19712     stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1314, 1);
19713     stream->write((uint64_t*)&cgen_var_1314, 1 * 8);
19714     AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT readParams");
19715     stream->read((Display*)dpy, sizeof(Display));
19716     AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT returnUnmarshal");
19717     VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0;
19718     stream->read(&vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult));
19719     countingStream->clearPool();
19720     stream->clearPool();
19721     pool->freeAll();
19722     mImpl->log("finish vkAcquireXlibDisplayEXT");;
19723     return vkAcquireXlibDisplayEXT_VkResult_return;
19724 }
19725 
vkGetRandROutputDisplayEXT(VkPhysicalDevice physicalDevice,Display * dpy,RROutput rrOutput,VkDisplayKHR * pDisplay)19726 VkResult VkEncoder::vkGetRandROutputDisplayEXT(
19727     VkPhysicalDevice physicalDevice,
19728     Display* dpy,
19729     RROutput rrOutput,
19730     VkDisplayKHR* pDisplay)
19731 {
19732     AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT encode");
19733     mImpl->log("start vkGetRandROutputDisplayEXT");
19734     auto stream = mImpl->stream();
19735     auto countingStream = mImpl->countingStream();
19736     auto resources = mImpl->resources();
19737     auto pool = mImpl->pool();
19738     stream->setHandleMapping(resources->unwrapMapping());
19739     VkPhysicalDevice local_physicalDevice;
19740     RROutput local_rrOutput;
19741     local_physicalDevice = physicalDevice;
19742     local_rrOutput = rrOutput;
19743     countingStream->rewind();
19744     {
19745         uint64_t cgen_var_1315;
19746         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1315, 1);
19747         countingStream->write((uint64_t*)&cgen_var_1315, 1 * 8);
19748         countingStream->write((Display*)dpy, sizeof(Display));
19749         countingStream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
19750         uint64_t cgen_var_1316;
19751         countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1316, 1);
19752         countingStream->write((uint64_t*)&cgen_var_1316, 8);
19753     }
19754     uint32_t packetSize_vkGetRandROutputDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19755     countingStream->rewind();
19756     uint32_t opcode_vkGetRandROutputDisplayEXT = OP_vkGetRandROutputDisplayEXT;
19757     stream->write(&opcode_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
19758     stream->write(&packetSize_vkGetRandROutputDisplayEXT, sizeof(uint32_t));
19759     uint64_t cgen_var_1317;
19760     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1317, 1);
19761     stream->write((uint64_t*)&cgen_var_1317, 1 * 8);
19762     stream->write((Display*)dpy, sizeof(Display));
19763     stream->write((RROutput*)&local_rrOutput, sizeof(RROutput));
19764     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
19765     uint64_t cgen_var_1318;
19766     stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1318, 1);
19767     stream->write((uint64_t*)&cgen_var_1318, 8);
19768     stream->setHandleMapping(resources->unwrapMapping());
19769     AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT readParams");
19770     stream->read((Display*)dpy, sizeof(Display));
19771     uint64_t cgen_var_1319;
19772     stream->read((uint64_t*)&cgen_var_1319, 8);
19773     stream->handleMapping()->mapHandles_u64_VkDisplayKHR(&cgen_var_1319, (VkDisplayKHR*)pDisplay, 1);
19774     AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT returnUnmarshal");
19775     VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0;
19776     stream->read(&vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult));
19777     countingStream->clearPool();
19778     stream->clearPool();
19779     pool->freeAll();
19780     mImpl->log("finish vkGetRandROutputDisplayEXT");;
19781     return vkGetRandROutputDisplayEXT_VkResult_return;
19782 }
19783 
19784 #endif
19785 #ifdef VK_EXT_display_surface_counter
vkGetPhysicalDeviceSurfaceCapabilities2EXT(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,VkSurfaceCapabilities2EXT * pSurfaceCapabilities)19786 VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2EXT(
19787     VkPhysicalDevice physicalDevice,
19788     VkSurfaceKHR surface,
19789     VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
19790 {
19791     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT encode");
19792     mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilities2EXT");
19793     auto stream = mImpl->stream();
19794     auto countingStream = mImpl->countingStream();
19795     auto resources = mImpl->resources();
19796     auto pool = mImpl->pool();
19797     stream->setHandleMapping(resources->unwrapMapping());
19798     VkPhysicalDevice local_physicalDevice;
19799     VkSurfaceKHR local_surface;
19800     local_physicalDevice = physicalDevice;
19801     local_surface = surface;
19802     countingStream->rewind();
19803     {
19804         uint64_t cgen_var_1320;
19805         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1320, 1);
19806         countingStream->write((uint64_t*)&cgen_var_1320, 1 * 8);
19807         uint64_t cgen_var_1321;
19808         countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1321, 1);
19809         countingStream->write((uint64_t*)&cgen_var_1321, 1 * 8);
19810         marshal_VkSurfaceCapabilities2EXT(countingStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
19811     }
19812     uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19813     countingStream->rewind();
19814     uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT = OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT;
19815     stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
19816     stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t));
19817     uint64_t cgen_var_1322;
19818     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1322, 1);
19819     stream->write((uint64_t*)&cgen_var_1322, 1 * 8);
19820     uint64_t cgen_var_1323;
19821     stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1323, 1);
19822     stream->write((uint64_t*)&cgen_var_1323, 1 * 8);
19823     marshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
19824     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT readParams");
19825     unmarshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
19826     if (pSurfaceCapabilities)
19827     {
19828         transform_fromhost_VkSurfaceCapabilities2EXT(mImpl->resources(), (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities));
19829     }
19830     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT returnUnmarshal");
19831     VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0;
19832     stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult));
19833     countingStream->clearPool();
19834     stream->clearPool();
19835     pool->freeAll();
19836     mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilities2EXT");;
19837     return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return;
19838 }
19839 
19840 #endif
19841 #ifdef VK_EXT_display_control
vkDisplayPowerControlEXT(VkDevice device,VkDisplayKHR display,const VkDisplayPowerInfoEXT * pDisplayPowerInfo)19842 VkResult VkEncoder::vkDisplayPowerControlEXT(
19843     VkDevice device,
19844     VkDisplayKHR display,
19845     const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
19846 {
19847     AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT encode");
19848     mImpl->log("start vkDisplayPowerControlEXT");
19849     auto stream = mImpl->stream();
19850     auto countingStream = mImpl->countingStream();
19851     auto resources = mImpl->resources();
19852     auto pool = mImpl->pool();
19853     stream->setHandleMapping(resources->unwrapMapping());
19854     VkDevice local_device;
19855     VkDisplayKHR local_display;
19856     VkDisplayPowerInfoEXT* local_pDisplayPowerInfo;
19857     local_device = device;
19858     local_display = display;
19859     local_pDisplayPowerInfo = nullptr;
19860     if (pDisplayPowerInfo)
19861     {
19862         local_pDisplayPowerInfo = (VkDisplayPowerInfoEXT*)pool->alloc(sizeof(const VkDisplayPowerInfoEXT));
19863         deepcopy_VkDisplayPowerInfoEXT(pool, pDisplayPowerInfo, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
19864     }
19865     if (local_pDisplayPowerInfo)
19866     {
19867         transform_tohost_VkDisplayPowerInfoEXT(mImpl->resources(), (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
19868     }
19869     countingStream->rewind();
19870     {
19871         uint64_t cgen_var_1324;
19872         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1324, 1);
19873         countingStream->write((uint64_t*)&cgen_var_1324, 1 * 8);
19874         uint64_t cgen_var_1325;
19875         countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1325, 1);
19876         countingStream->write((uint64_t*)&cgen_var_1325, 1 * 8);
19877         marshal_VkDisplayPowerInfoEXT(countingStream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
19878     }
19879     uint32_t packetSize_vkDisplayPowerControlEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19880     countingStream->rewind();
19881     uint32_t opcode_vkDisplayPowerControlEXT = OP_vkDisplayPowerControlEXT;
19882     stream->write(&opcode_vkDisplayPowerControlEXT, sizeof(uint32_t));
19883     stream->write(&packetSize_vkDisplayPowerControlEXT, sizeof(uint32_t));
19884     uint64_t cgen_var_1326;
19885     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1326, 1);
19886     stream->write((uint64_t*)&cgen_var_1326, 1 * 8);
19887     uint64_t cgen_var_1327;
19888     stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1327, 1);
19889     stream->write((uint64_t*)&cgen_var_1327, 1 * 8);
19890     marshal_VkDisplayPowerInfoEXT(stream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo));
19891     AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT readParams");
19892     AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT returnUnmarshal");
19893     VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0;
19894     stream->read(&vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult));
19895     countingStream->clearPool();
19896     stream->clearPool();
19897     pool->freeAll();
19898     mImpl->log("finish vkDisplayPowerControlEXT");;
19899     return vkDisplayPowerControlEXT_VkResult_return;
19900 }
19901 
vkRegisterDeviceEventEXT(VkDevice device,const VkDeviceEventInfoEXT * pDeviceEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)19902 VkResult VkEncoder::vkRegisterDeviceEventEXT(
19903     VkDevice device,
19904     const VkDeviceEventInfoEXT* pDeviceEventInfo,
19905     const VkAllocationCallbacks* pAllocator,
19906     VkFence* pFence)
19907 {
19908     AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT encode");
19909     mImpl->log("start vkRegisterDeviceEventEXT");
19910     auto stream = mImpl->stream();
19911     auto countingStream = mImpl->countingStream();
19912     auto resources = mImpl->resources();
19913     auto pool = mImpl->pool();
19914     stream->setHandleMapping(resources->unwrapMapping());
19915     VkDevice local_device;
19916     VkDeviceEventInfoEXT* local_pDeviceEventInfo;
19917     VkAllocationCallbacks* local_pAllocator;
19918     local_device = device;
19919     local_pDeviceEventInfo = nullptr;
19920     if (pDeviceEventInfo)
19921     {
19922         local_pDeviceEventInfo = (VkDeviceEventInfoEXT*)pool->alloc(sizeof(const VkDeviceEventInfoEXT));
19923         deepcopy_VkDeviceEventInfoEXT(pool, pDeviceEventInfo, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
19924     }
19925     local_pAllocator = nullptr;
19926     if (pAllocator)
19927     {
19928         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
19929         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
19930     }
19931     local_pAllocator = nullptr;
19932     if (local_pDeviceEventInfo)
19933     {
19934         transform_tohost_VkDeviceEventInfoEXT(mImpl->resources(), (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
19935     }
19936     if (local_pAllocator)
19937     {
19938         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
19939     }
19940     countingStream->rewind();
19941     {
19942         uint64_t cgen_var_1328;
19943         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1328, 1);
19944         countingStream->write((uint64_t*)&cgen_var_1328, 1 * 8);
19945         marshal_VkDeviceEventInfoEXT(countingStream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
19946         // WARNING PTR CHECK
19947         uint64_t cgen_var_1329 = (uint64_t)(uintptr_t)local_pAllocator;
19948         countingStream->putBe64(cgen_var_1329);
19949         if (local_pAllocator)
19950         {
19951             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
19952         }
19953         uint64_t cgen_var_1330;
19954         countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1330, 1);
19955         countingStream->write((uint64_t*)&cgen_var_1330, 8);
19956     }
19957     uint32_t packetSize_vkRegisterDeviceEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
19958     countingStream->rewind();
19959     uint32_t opcode_vkRegisterDeviceEventEXT = OP_vkRegisterDeviceEventEXT;
19960     stream->write(&opcode_vkRegisterDeviceEventEXT, sizeof(uint32_t));
19961     stream->write(&packetSize_vkRegisterDeviceEventEXT, sizeof(uint32_t));
19962     uint64_t cgen_var_1331;
19963     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1331, 1);
19964     stream->write((uint64_t*)&cgen_var_1331, 1 * 8);
19965     marshal_VkDeviceEventInfoEXT(stream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo));
19966     // WARNING PTR CHECK
19967     uint64_t cgen_var_1332 = (uint64_t)(uintptr_t)local_pAllocator;
19968     stream->putBe64(cgen_var_1332);
19969     if (local_pAllocator)
19970     {
19971         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
19972     }
19973     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
19974     uint64_t cgen_var_1333;
19975     stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1333, 1);
19976     stream->write((uint64_t*)&cgen_var_1333, 8);
19977     stream->setHandleMapping(resources->unwrapMapping());
19978     AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT readParams");
19979     uint64_t cgen_var_1334;
19980     stream->read((uint64_t*)&cgen_var_1334, 8);
19981     stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1334, (VkFence*)pFence, 1);
19982     AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT returnUnmarshal");
19983     VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0;
19984     stream->read(&vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult));
19985     countingStream->clearPool();
19986     stream->clearPool();
19987     pool->freeAll();
19988     mImpl->log("finish vkRegisterDeviceEventEXT");;
19989     return vkRegisterDeviceEventEXT_VkResult_return;
19990 }
19991 
vkRegisterDisplayEventEXT(VkDevice device,VkDisplayKHR display,const VkDisplayEventInfoEXT * pDisplayEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)19992 VkResult VkEncoder::vkRegisterDisplayEventEXT(
19993     VkDevice device,
19994     VkDisplayKHR display,
19995     const VkDisplayEventInfoEXT* pDisplayEventInfo,
19996     const VkAllocationCallbacks* pAllocator,
19997     VkFence* pFence)
19998 {
19999     AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT encode");
20000     mImpl->log("start vkRegisterDisplayEventEXT");
20001     auto stream = mImpl->stream();
20002     auto countingStream = mImpl->countingStream();
20003     auto resources = mImpl->resources();
20004     auto pool = mImpl->pool();
20005     stream->setHandleMapping(resources->unwrapMapping());
20006     VkDevice local_device;
20007     VkDisplayKHR local_display;
20008     VkDisplayEventInfoEXT* local_pDisplayEventInfo;
20009     VkAllocationCallbacks* local_pAllocator;
20010     local_device = device;
20011     local_display = display;
20012     local_pDisplayEventInfo = nullptr;
20013     if (pDisplayEventInfo)
20014     {
20015         local_pDisplayEventInfo = (VkDisplayEventInfoEXT*)pool->alloc(sizeof(const VkDisplayEventInfoEXT));
20016         deepcopy_VkDisplayEventInfoEXT(pool, pDisplayEventInfo, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
20017     }
20018     local_pAllocator = nullptr;
20019     if (pAllocator)
20020     {
20021         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20022         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20023     }
20024     local_pAllocator = nullptr;
20025     if (local_pDisplayEventInfo)
20026     {
20027         transform_tohost_VkDisplayEventInfoEXT(mImpl->resources(), (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
20028     }
20029     if (local_pAllocator)
20030     {
20031         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
20032     }
20033     countingStream->rewind();
20034     {
20035         uint64_t cgen_var_1335;
20036         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1335, 1);
20037         countingStream->write((uint64_t*)&cgen_var_1335, 1 * 8);
20038         uint64_t cgen_var_1336;
20039         countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1336, 1);
20040         countingStream->write((uint64_t*)&cgen_var_1336, 1 * 8);
20041         marshal_VkDisplayEventInfoEXT(countingStream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
20042         // WARNING PTR CHECK
20043         uint64_t cgen_var_1337 = (uint64_t)(uintptr_t)local_pAllocator;
20044         countingStream->putBe64(cgen_var_1337);
20045         if (local_pAllocator)
20046         {
20047             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
20048         }
20049         uint64_t cgen_var_1338;
20050         countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1338, 1);
20051         countingStream->write((uint64_t*)&cgen_var_1338, 8);
20052     }
20053     uint32_t packetSize_vkRegisterDisplayEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20054     countingStream->rewind();
20055     uint32_t opcode_vkRegisterDisplayEventEXT = OP_vkRegisterDisplayEventEXT;
20056     stream->write(&opcode_vkRegisterDisplayEventEXT, sizeof(uint32_t));
20057     stream->write(&packetSize_vkRegisterDisplayEventEXT, sizeof(uint32_t));
20058     uint64_t cgen_var_1339;
20059     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1339, 1);
20060     stream->write((uint64_t*)&cgen_var_1339, 1 * 8);
20061     uint64_t cgen_var_1340;
20062     stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1340, 1);
20063     stream->write((uint64_t*)&cgen_var_1340, 1 * 8);
20064     marshal_VkDisplayEventInfoEXT(stream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo));
20065     // WARNING PTR CHECK
20066     uint64_t cgen_var_1341 = (uint64_t)(uintptr_t)local_pAllocator;
20067     stream->putBe64(cgen_var_1341);
20068     if (local_pAllocator)
20069     {
20070         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
20071     }
20072     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
20073     uint64_t cgen_var_1342;
20074     stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1342, 1);
20075     stream->write((uint64_t*)&cgen_var_1342, 8);
20076     stream->setHandleMapping(resources->unwrapMapping());
20077     AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT readParams");
20078     uint64_t cgen_var_1343;
20079     stream->read((uint64_t*)&cgen_var_1343, 8);
20080     stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1343, (VkFence*)pFence, 1);
20081     AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT returnUnmarshal");
20082     VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0;
20083     stream->read(&vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult));
20084     countingStream->clearPool();
20085     stream->clearPool();
20086     pool->freeAll();
20087     mImpl->log("finish vkRegisterDisplayEventEXT");;
20088     return vkRegisterDisplayEventEXT_VkResult_return;
20089 }
20090 
vkGetSwapchainCounterEXT(VkDevice device,VkSwapchainKHR swapchain,VkSurfaceCounterFlagBitsEXT counter,uint64_t * pCounterValue)20091 VkResult VkEncoder::vkGetSwapchainCounterEXT(
20092     VkDevice device,
20093     VkSwapchainKHR swapchain,
20094     VkSurfaceCounterFlagBitsEXT counter,
20095     uint64_t* pCounterValue)
20096 {
20097     AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT encode");
20098     mImpl->log("start vkGetSwapchainCounterEXT");
20099     auto stream = mImpl->stream();
20100     auto countingStream = mImpl->countingStream();
20101     auto resources = mImpl->resources();
20102     auto pool = mImpl->pool();
20103     stream->setHandleMapping(resources->unwrapMapping());
20104     VkDevice local_device;
20105     VkSwapchainKHR local_swapchain;
20106     VkSurfaceCounterFlagBitsEXT local_counter;
20107     local_device = device;
20108     local_swapchain = swapchain;
20109     local_counter = counter;
20110     countingStream->rewind();
20111     {
20112         uint64_t cgen_var_1344;
20113         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1344, 1);
20114         countingStream->write((uint64_t*)&cgen_var_1344, 1 * 8);
20115         uint64_t cgen_var_1345;
20116         countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1345, 1);
20117         countingStream->write((uint64_t*)&cgen_var_1345, 1 * 8);
20118         countingStream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
20119         countingStream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
20120     }
20121     uint32_t packetSize_vkGetSwapchainCounterEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20122     countingStream->rewind();
20123     uint32_t opcode_vkGetSwapchainCounterEXT = OP_vkGetSwapchainCounterEXT;
20124     stream->write(&opcode_vkGetSwapchainCounterEXT, sizeof(uint32_t));
20125     stream->write(&packetSize_vkGetSwapchainCounterEXT, sizeof(uint32_t));
20126     uint64_t cgen_var_1346;
20127     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1346, 1);
20128     stream->write((uint64_t*)&cgen_var_1346, 1 * 8);
20129     uint64_t cgen_var_1347;
20130     stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1347, 1);
20131     stream->write((uint64_t*)&cgen_var_1347, 1 * 8);
20132     stream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT));
20133     stream->write((uint64_t*)pCounterValue, sizeof(uint64_t));
20134     AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT readParams");
20135     stream->read((uint64_t*)pCounterValue, sizeof(uint64_t));
20136     AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT returnUnmarshal");
20137     VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0;
20138     stream->read(&vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult));
20139     countingStream->clearPool();
20140     stream->clearPool();
20141     pool->freeAll();
20142     mImpl->log("finish vkGetSwapchainCounterEXT");;
20143     return vkGetSwapchainCounterEXT_VkResult_return;
20144 }
20145 
20146 #endif
20147 #ifdef VK_GOOGLE_display_timing
vkGetRefreshCycleDurationGOOGLE(VkDevice device,VkSwapchainKHR swapchain,VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties)20148 VkResult VkEncoder::vkGetRefreshCycleDurationGOOGLE(
20149     VkDevice device,
20150     VkSwapchainKHR swapchain,
20151     VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
20152 {
20153     AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE encode");
20154     mImpl->log("start vkGetRefreshCycleDurationGOOGLE");
20155     auto stream = mImpl->stream();
20156     auto countingStream = mImpl->countingStream();
20157     auto resources = mImpl->resources();
20158     auto pool = mImpl->pool();
20159     stream->setHandleMapping(resources->unwrapMapping());
20160     VkDevice local_device;
20161     VkSwapchainKHR local_swapchain;
20162     local_device = device;
20163     local_swapchain = swapchain;
20164     countingStream->rewind();
20165     {
20166         uint64_t cgen_var_1348;
20167         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1348, 1);
20168         countingStream->write((uint64_t*)&cgen_var_1348, 1 * 8);
20169         uint64_t cgen_var_1349;
20170         countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1349, 1);
20171         countingStream->write((uint64_t*)&cgen_var_1349, 1 * 8);
20172         marshal_VkRefreshCycleDurationGOOGLE(countingStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
20173     }
20174     uint32_t packetSize_vkGetRefreshCycleDurationGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20175     countingStream->rewind();
20176     uint32_t opcode_vkGetRefreshCycleDurationGOOGLE = OP_vkGetRefreshCycleDurationGOOGLE;
20177     stream->write(&opcode_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
20178     stream->write(&packetSize_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t));
20179     uint64_t cgen_var_1350;
20180     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1350, 1);
20181     stream->write((uint64_t*)&cgen_var_1350, 1 * 8);
20182     uint64_t cgen_var_1351;
20183     stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1351, 1);
20184     stream->write((uint64_t*)&cgen_var_1351, 1 * 8);
20185     marshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
20186     AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE readParams");
20187     unmarshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
20188     if (pDisplayTimingProperties)
20189     {
20190         transform_fromhost_VkRefreshCycleDurationGOOGLE(mImpl->resources(), (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties));
20191     }
20192     AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE returnUnmarshal");
20193     VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0;
20194     stream->read(&vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult));
20195     countingStream->clearPool();
20196     stream->clearPool();
20197     pool->freeAll();
20198     mImpl->log("finish vkGetRefreshCycleDurationGOOGLE");;
20199     return vkGetRefreshCycleDurationGOOGLE_VkResult_return;
20200 }
20201 
vkGetPastPresentationTimingGOOGLE(VkDevice device,VkSwapchainKHR swapchain,uint32_t * pPresentationTimingCount,VkPastPresentationTimingGOOGLE * pPresentationTimings)20202 VkResult VkEncoder::vkGetPastPresentationTimingGOOGLE(
20203     VkDevice device,
20204     VkSwapchainKHR swapchain,
20205     uint32_t* pPresentationTimingCount,
20206     VkPastPresentationTimingGOOGLE* pPresentationTimings)
20207 {
20208     AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE encode");
20209     mImpl->log("start vkGetPastPresentationTimingGOOGLE");
20210     auto stream = mImpl->stream();
20211     auto countingStream = mImpl->countingStream();
20212     auto resources = mImpl->resources();
20213     auto pool = mImpl->pool();
20214     stream->setHandleMapping(resources->unwrapMapping());
20215     VkDevice local_device;
20216     VkSwapchainKHR local_swapchain;
20217     local_device = device;
20218     local_swapchain = swapchain;
20219     countingStream->rewind();
20220     {
20221         uint64_t cgen_var_1352;
20222         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1352, 1);
20223         countingStream->write((uint64_t*)&cgen_var_1352, 1 * 8);
20224         uint64_t cgen_var_1353;
20225         countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1353, 1);
20226         countingStream->write((uint64_t*)&cgen_var_1353, 1 * 8);
20227         // WARNING PTR CHECK
20228         uint64_t cgen_var_1354 = (uint64_t)(uintptr_t)pPresentationTimingCount;
20229         countingStream->putBe64(cgen_var_1354);
20230         if (pPresentationTimingCount)
20231         {
20232             countingStream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
20233         }
20234         // WARNING PTR CHECK
20235         uint64_t cgen_var_1355 = (uint64_t)(uintptr_t)pPresentationTimings;
20236         countingStream->putBe64(cgen_var_1355);
20237         if (pPresentationTimings)
20238         {
20239             for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
20240             {
20241                 marshal_VkPastPresentationTimingGOOGLE(countingStream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
20242             }
20243         }
20244     }
20245     uint32_t packetSize_vkGetPastPresentationTimingGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20246     countingStream->rewind();
20247     uint32_t opcode_vkGetPastPresentationTimingGOOGLE = OP_vkGetPastPresentationTimingGOOGLE;
20248     stream->write(&opcode_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
20249     stream->write(&packetSize_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t));
20250     uint64_t cgen_var_1356;
20251     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1356, 1);
20252     stream->write((uint64_t*)&cgen_var_1356, 1 * 8);
20253     uint64_t cgen_var_1357;
20254     stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1357, 1);
20255     stream->write((uint64_t*)&cgen_var_1357, 1 * 8);
20256     // WARNING PTR CHECK
20257     uint64_t cgen_var_1358 = (uint64_t)(uintptr_t)pPresentationTimingCount;
20258     stream->putBe64(cgen_var_1358);
20259     if (pPresentationTimingCount)
20260     {
20261         stream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
20262     }
20263     // WARNING PTR CHECK
20264     uint64_t cgen_var_1359 = (uint64_t)(uintptr_t)pPresentationTimings;
20265     stream->putBe64(cgen_var_1359);
20266     if (pPresentationTimings)
20267     {
20268         for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
20269         {
20270             marshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
20271         }
20272     }
20273     AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE readParams");
20274     // WARNING PTR CHECK
20275     uint32_t* check_pPresentationTimingCount;
20276     check_pPresentationTimingCount = (uint32_t*)(uintptr_t)stream->getBe64();
20277     if (pPresentationTimingCount)
20278     {
20279         if (!(check_pPresentationTimingCount))
20280         {
20281             fprintf(stderr, "fatal: pPresentationTimingCount inconsistent between guest and host\n");
20282         }
20283         stream->read((uint32_t*)pPresentationTimingCount, sizeof(uint32_t));
20284     }
20285     // WARNING PTR CHECK
20286     VkPastPresentationTimingGOOGLE* check_pPresentationTimings;
20287     check_pPresentationTimings = (VkPastPresentationTimingGOOGLE*)(uintptr_t)stream->getBe64();
20288     if (pPresentationTimings)
20289     {
20290         if (!(check_pPresentationTimings))
20291         {
20292             fprintf(stderr, "fatal: pPresentationTimings inconsistent between guest and host\n");
20293         }
20294         for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
20295         {
20296             unmarshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
20297         }
20298     }
20299     if (pPresentationTimings)
20300     {
20301         for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i)
20302         {
20303             transform_fromhost_VkPastPresentationTimingGOOGLE(mImpl->resources(), (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i));
20304         }
20305     }
20306     AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE returnUnmarshal");
20307     VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0;
20308     stream->read(&vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult));
20309     countingStream->clearPool();
20310     stream->clearPool();
20311     pool->freeAll();
20312     mImpl->log("finish vkGetPastPresentationTimingGOOGLE");;
20313     return vkGetPastPresentationTimingGOOGLE_VkResult_return;
20314 }
20315 
20316 #endif
20317 #ifdef VK_NV_sample_mask_override_coverage
20318 #endif
20319 #ifdef VK_NV_geometry_shader_passthrough
20320 #endif
20321 #ifdef VK_NV_viewport_array2
20322 #endif
20323 #ifdef VK_NVX_multiview_per_view_attributes
20324 #endif
20325 #ifdef VK_NV_viewport_swizzle
20326 #endif
20327 #ifdef VK_EXT_discard_rectangles
vkCmdSetDiscardRectangleEXT(VkCommandBuffer commandBuffer,uint32_t firstDiscardRectangle,uint32_t discardRectangleCount,const VkRect2D * pDiscardRectangles)20328 void VkEncoder::vkCmdSetDiscardRectangleEXT(
20329     VkCommandBuffer commandBuffer,
20330     uint32_t firstDiscardRectangle,
20331     uint32_t discardRectangleCount,
20332     const VkRect2D* pDiscardRectangles)
20333 {
20334     AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT encode");
20335     mImpl->log("start vkCmdSetDiscardRectangleEXT");
20336     auto stream = mImpl->stream();
20337     auto countingStream = mImpl->countingStream();
20338     auto resources = mImpl->resources();
20339     auto pool = mImpl->pool();
20340     stream->setHandleMapping(resources->unwrapMapping());
20341     VkCommandBuffer local_commandBuffer;
20342     uint32_t local_firstDiscardRectangle;
20343     uint32_t local_discardRectangleCount;
20344     VkRect2D* local_pDiscardRectangles;
20345     local_commandBuffer = commandBuffer;
20346     local_firstDiscardRectangle = firstDiscardRectangle;
20347     local_discardRectangleCount = discardRectangleCount;
20348     local_pDiscardRectangles = nullptr;
20349     if (pDiscardRectangles)
20350     {
20351         local_pDiscardRectangles = (VkRect2D*)pool->alloc(((discardRectangleCount)) * sizeof(const VkRect2D));
20352         for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
20353         {
20354             deepcopy_VkRect2D(pool, pDiscardRectangles + i, (VkRect2D*)(local_pDiscardRectangles + i));
20355         }
20356     }
20357     if (local_pDiscardRectangles)
20358     {
20359         for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
20360         {
20361             transform_tohost_VkRect2D(mImpl->resources(), (VkRect2D*)(local_pDiscardRectangles + i));
20362         }
20363     }
20364     countingStream->rewind();
20365     {
20366         uint64_t cgen_var_1362;
20367         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1362, 1);
20368         countingStream->write((uint64_t*)&cgen_var_1362, 1 * 8);
20369         countingStream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
20370         countingStream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
20371         for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
20372         {
20373             marshal_VkRect2D(countingStream, (VkRect2D*)(local_pDiscardRectangles + i));
20374         }
20375     }
20376     uint32_t packetSize_vkCmdSetDiscardRectangleEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20377     countingStream->rewind();
20378     uint32_t opcode_vkCmdSetDiscardRectangleEXT = OP_vkCmdSetDiscardRectangleEXT;
20379     stream->write(&opcode_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
20380     stream->write(&packetSize_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t));
20381     uint64_t cgen_var_1363;
20382     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1363, 1);
20383     stream->write((uint64_t*)&cgen_var_1363, 1 * 8);
20384     stream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t));
20385     stream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t));
20386     for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i)
20387     {
20388         marshal_VkRect2D(stream, (VkRect2D*)(local_pDiscardRectangles + i));
20389     }
20390     AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT readParams");
20391     AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT returnUnmarshal");
20392     mImpl->log("finish vkCmdSetDiscardRectangleEXT");;
20393 }
20394 
20395 #endif
20396 #ifdef VK_EXT_conservative_rasterization
20397 #endif
20398 #ifdef VK_EXT_swapchain_colorspace
20399 #endif
20400 #ifdef VK_EXT_hdr_metadata
vkSetHdrMetadataEXT(VkDevice device,uint32_t swapchainCount,const VkSwapchainKHR * pSwapchains,const VkHdrMetadataEXT * pMetadata)20401 void VkEncoder::vkSetHdrMetadataEXT(
20402     VkDevice device,
20403     uint32_t swapchainCount,
20404     const VkSwapchainKHR* pSwapchains,
20405     const VkHdrMetadataEXT* pMetadata)
20406 {
20407     AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT encode");
20408     mImpl->log("start vkSetHdrMetadataEXT");
20409     auto stream = mImpl->stream();
20410     auto countingStream = mImpl->countingStream();
20411     auto resources = mImpl->resources();
20412     auto pool = mImpl->pool();
20413     stream->setHandleMapping(resources->unwrapMapping());
20414     VkDevice local_device;
20415     uint32_t local_swapchainCount;
20416     VkSwapchainKHR* local_pSwapchains;
20417     VkHdrMetadataEXT* local_pMetadata;
20418     local_device = device;
20419     local_swapchainCount = swapchainCount;
20420     local_pSwapchains = nullptr;
20421     if (pSwapchains)
20422     {
20423         local_pSwapchains = (VkSwapchainKHR*)pool->dupArray(pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR));
20424     }
20425     local_pMetadata = nullptr;
20426     if (pMetadata)
20427     {
20428         local_pMetadata = (VkHdrMetadataEXT*)pool->alloc(((swapchainCount)) * sizeof(const VkHdrMetadataEXT));
20429         for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
20430         {
20431             deepcopy_VkHdrMetadataEXT(pool, pMetadata + i, (VkHdrMetadataEXT*)(local_pMetadata + i));
20432         }
20433     }
20434     if (local_pMetadata)
20435     {
20436         for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
20437         {
20438             transform_tohost_VkHdrMetadataEXT(mImpl->resources(), (VkHdrMetadataEXT*)(local_pMetadata + i));
20439         }
20440     }
20441     countingStream->rewind();
20442     {
20443         uint64_t cgen_var_1364;
20444         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1364, 1);
20445         countingStream->write((uint64_t*)&cgen_var_1364, 1 * 8);
20446         countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
20447         if (((swapchainCount)))
20448         {
20449             uint64_t* cgen_var_1365;
20450             countingStream->alloc((void**)&cgen_var_1365, ((swapchainCount)) * 8);
20451             countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1365, ((swapchainCount)));
20452             countingStream->write((uint64_t*)cgen_var_1365, ((swapchainCount)) * 8);
20453         }
20454         for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
20455         {
20456             marshal_VkHdrMetadataEXT(countingStream, (VkHdrMetadataEXT*)(local_pMetadata + i));
20457         }
20458     }
20459     uint32_t packetSize_vkSetHdrMetadataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20460     countingStream->rewind();
20461     uint32_t opcode_vkSetHdrMetadataEXT = OP_vkSetHdrMetadataEXT;
20462     stream->write(&opcode_vkSetHdrMetadataEXT, sizeof(uint32_t));
20463     stream->write(&packetSize_vkSetHdrMetadataEXT, sizeof(uint32_t));
20464     uint64_t cgen_var_1366;
20465     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1366, 1);
20466     stream->write((uint64_t*)&cgen_var_1366, 1 * 8);
20467     stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t));
20468     if (((swapchainCount)))
20469     {
20470         uint64_t* cgen_var_1367;
20471         stream->alloc((void**)&cgen_var_1367, ((swapchainCount)) * 8);
20472         stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1367, ((swapchainCount)));
20473         stream->write((uint64_t*)cgen_var_1367, ((swapchainCount)) * 8);
20474     }
20475     for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i)
20476     {
20477         marshal_VkHdrMetadataEXT(stream, (VkHdrMetadataEXT*)(local_pMetadata + i));
20478     }
20479     AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT readParams");
20480     AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT returnUnmarshal");
20481     mImpl->log("finish vkSetHdrMetadataEXT");;
20482 }
20483 
20484 #endif
20485 #ifdef VK_MVK_ios_surface
vkCreateIOSSurfaceMVK(VkInstance instance,const VkIOSSurfaceCreateInfoMVK * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)20486 VkResult VkEncoder::vkCreateIOSSurfaceMVK(
20487     VkInstance instance,
20488     const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
20489     const VkAllocationCallbacks* pAllocator,
20490     VkSurfaceKHR* pSurface)
20491 {
20492     AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK encode");
20493     mImpl->log("start vkCreateIOSSurfaceMVK");
20494     auto stream = mImpl->stream();
20495     auto countingStream = mImpl->countingStream();
20496     auto resources = mImpl->resources();
20497     auto pool = mImpl->pool();
20498     stream->setHandleMapping(resources->unwrapMapping());
20499     VkInstance local_instance;
20500     VkIOSSurfaceCreateInfoMVK* local_pCreateInfo;
20501     VkAllocationCallbacks* local_pAllocator;
20502     local_instance = instance;
20503     local_pCreateInfo = nullptr;
20504     if (pCreateInfo)
20505     {
20506         local_pCreateInfo = (VkIOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkIOSSurfaceCreateInfoMVK));
20507         deepcopy_VkIOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
20508     }
20509     local_pAllocator = nullptr;
20510     if (pAllocator)
20511     {
20512         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20513         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20514     }
20515     local_pAllocator = nullptr;
20516     if (local_pCreateInfo)
20517     {
20518         transform_tohost_VkIOSSurfaceCreateInfoMVK(mImpl->resources(), (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
20519     }
20520     if (local_pAllocator)
20521     {
20522         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
20523     }
20524     countingStream->rewind();
20525     {
20526         uint64_t cgen_var_1368;
20527         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1368, 1);
20528         countingStream->write((uint64_t*)&cgen_var_1368, 1 * 8);
20529         marshal_VkIOSSurfaceCreateInfoMVK(countingStream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
20530         // WARNING PTR CHECK
20531         uint64_t cgen_var_1369 = (uint64_t)(uintptr_t)local_pAllocator;
20532         countingStream->putBe64(cgen_var_1369);
20533         if (local_pAllocator)
20534         {
20535             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
20536         }
20537         uint64_t cgen_var_1370;
20538         countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1370, 1);
20539         countingStream->write((uint64_t*)&cgen_var_1370, 8);
20540     }
20541     uint32_t packetSize_vkCreateIOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20542     countingStream->rewind();
20543     uint32_t opcode_vkCreateIOSSurfaceMVK = OP_vkCreateIOSSurfaceMVK;
20544     stream->write(&opcode_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
20545     stream->write(&packetSize_vkCreateIOSSurfaceMVK, sizeof(uint32_t));
20546     uint64_t cgen_var_1371;
20547     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1371, 1);
20548     stream->write((uint64_t*)&cgen_var_1371, 1 * 8);
20549     marshal_VkIOSSurfaceCreateInfoMVK(stream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
20550     // WARNING PTR CHECK
20551     uint64_t cgen_var_1372 = (uint64_t)(uintptr_t)local_pAllocator;
20552     stream->putBe64(cgen_var_1372);
20553     if (local_pAllocator)
20554     {
20555         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
20556     }
20557     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
20558     uint64_t cgen_var_1373;
20559     stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1373, 1);
20560     stream->write((uint64_t*)&cgen_var_1373, 8);
20561     stream->setHandleMapping(resources->unwrapMapping());
20562     AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK readParams");
20563     uint64_t cgen_var_1374;
20564     stream->read((uint64_t*)&cgen_var_1374, 8);
20565     stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1374, (VkSurfaceKHR*)pSurface, 1);
20566     AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK returnUnmarshal");
20567     VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0;
20568     stream->read(&vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult));
20569     countingStream->clearPool();
20570     stream->clearPool();
20571     pool->freeAll();
20572     mImpl->log("finish vkCreateIOSSurfaceMVK");;
20573     return vkCreateIOSSurfaceMVK_VkResult_return;
20574 }
20575 
20576 #endif
20577 #ifdef VK_MVK_macos_surface
vkCreateMacOSSurfaceMVK(VkInstance instance,const VkMacOSSurfaceCreateInfoMVK * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)20578 VkResult VkEncoder::vkCreateMacOSSurfaceMVK(
20579     VkInstance instance,
20580     const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
20581     const VkAllocationCallbacks* pAllocator,
20582     VkSurfaceKHR* pSurface)
20583 {
20584     AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK encode");
20585     mImpl->log("start vkCreateMacOSSurfaceMVK");
20586     auto stream = mImpl->stream();
20587     auto countingStream = mImpl->countingStream();
20588     auto resources = mImpl->resources();
20589     auto pool = mImpl->pool();
20590     stream->setHandleMapping(resources->unwrapMapping());
20591     VkInstance local_instance;
20592     VkMacOSSurfaceCreateInfoMVK* local_pCreateInfo;
20593     VkAllocationCallbacks* local_pAllocator;
20594     local_instance = instance;
20595     local_pCreateInfo = nullptr;
20596     if (pCreateInfo)
20597     {
20598         local_pCreateInfo = (VkMacOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkMacOSSurfaceCreateInfoMVK));
20599         deepcopy_VkMacOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
20600     }
20601     local_pAllocator = nullptr;
20602     if (pAllocator)
20603     {
20604         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
20605         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
20606     }
20607     local_pAllocator = nullptr;
20608     if (local_pCreateInfo)
20609     {
20610         transform_tohost_VkMacOSSurfaceCreateInfoMVK(mImpl->resources(), (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
20611     }
20612     if (local_pAllocator)
20613     {
20614         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
20615     }
20616     countingStream->rewind();
20617     {
20618         uint64_t cgen_var_1375;
20619         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1375, 1);
20620         countingStream->write((uint64_t*)&cgen_var_1375, 1 * 8);
20621         marshal_VkMacOSSurfaceCreateInfoMVK(countingStream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
20622         // WARNING PTR CHECK
20623         uint64_t cgen_var_1376 = (uint64_t)(uintptr_t)local_pAllocator;
20624         countingStream->putBe64(cgen_var_1376);
20625         if (local_pAllocator)
20626         {
20627             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
20628         }
20629         uint64_t cgen_var_1377;
20630         countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1377, 1);
20631         countingStream->write((uint64_t*)&cgen_var_1377, 8);
20632     }
20633     uint32_t packetSize_vkCreateMacOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20634     countingStream->rewind();
20635     uint32_t opcode_vkCreateMacOSSurfaceMVK = OP_vkCreateMacOSSurfaceMVK;
20636     stream->write(&opcode_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
20637     stream->write(&packetSize_vkCreateMacOSSurfaceMVK, sizeof(uint32_t));
20638     uint64_t cgen_var_1378;
20639     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1378, 1);
20640     stream->write((uint64_t*)&cgen_var_1378, 1 * 8);
20641     marshal_VkMacOSSurfaceCreateInfoMVK(stream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo));
20642     // WARNING PTR CHECK
20643     uint64_t cgen_var_1379 = (uint64_t)(uintptr_t)local_pAllocator;
20644     stream->putBe64(cgen_var_1379);
20645     if (local_pAllocator)
20646     {
20647         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
20648     }
20649     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
20650     uint64_t cgen_var_1380;
20651     stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1380, 1);
20652     stream->write((uint64_t*)&cgen_var_1380, 8);
20653     stream->setHandleMapping(resources->unwrapMapping());
20654     AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK readParams");
20655     uint64_t cgen_var_1381;
20656     stream->read((uint64_t*)&cgen_var_1381, 8);
20657     stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1381, (VkSurfaceKHR*)pSurface, 1);
20658     AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK returnUnmarshal");
20659     VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0;
20660     stream->read(&vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult));
20661     countingStream->clearPool();
20662     stream->clearPool();
20663     pool->freeAll();
20664     mImpl->log("finish vkCreateMacOSSurfaceMVK");;
20665     return vkCreateMacOSSurfaceMVK_VkResult_return;
20666 }
20667 
20668 #endif
20669 #ifdef VK_EXT_external_memory_dma_buf
20670 #endif
20671 #ifdef VK_EXT_queue_family_foreign
20672 #endif
20673 #ifdef VK_EXT_debug_utils
vkSetDebugUtilsObjectNameEXT(VkDevice device,const VkDebugUtilsObjectNameInfoEXT * pNameInfo)20674 VkResult VkEncoder::vkSetDebugUtilsObjectNameEXT(
20675     VkDevice device,
20676     const VkDebugUtilsObjectNameInfoEXT* pNameInfo)
20677 {
20678     AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT encode");
20679     mImpl->log("start vkSetDebugUtilsObjectNameEXT");
20680     auto stream = mImpl->stream();
20681     auto countingStream = mImpl->countingStream();
20682     auto resources = mImpl->resources();
20683     auto pool = mImpl->pool();
20684     stream->setHandleMapping(resources->unwrapMapping());
20685     VkDevice local_device;
20686     VkDebugUtilsObjectNameInfoEXT* local_pNameInfo;
20687     local_device = device;
20688     local_pNameInfo = nullptr;
20689     if (pNameInfo)
20690     {
20691         local_pNameInfo = (VkDebugUtilsObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectNameInfoEXT));
20692         deepcopy_VkDebugUtilsObjectNameInfoEXT(pool, pNameInfo, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
20693     }
20694     if (local_pNameInfo)
20695     {
20696         transform_tohost_VkDebugUtilsObjectNameInfoEXT(mImpl->resources(), (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
20697     }
20698     countingStream->rewind();
20699     {
20700         uint64_t cgen_var_1382;
20701         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1382, 1);
20702         countingStream->write((uint64_t*)&cgen_var_1382, 1 * 8);
20703         marshal_VkDebugUtilsObjectNameInfoEXT(countingStream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
20704     }
20705     uint32_t packetSize_vkSetDebugUtilsObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20706     countingStream->rewind();
20707     uint32_t opcode_vkSetDebugUtilsObjectNameEXT = OP_vkSetDebugUtilsObjectNameEXT;
20708     stream->write(&opcode_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
20709     stream->write(&packetSize_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t));
20710     uint64_t cgen_var_1383;
20711     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1383, 1);
20712     stream->write((uint64_t*)&cgen_var_1383, 1 * 8);
20713     marshal_VkDebugUtilsObjectNameInfoEXT(stream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo));
20714     AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT readParams");
20715     AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT returnUnmarshal");
20716     VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0;
20717     stream->read(&vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult));
20718     countingStream->clearPool();
20719     stream->clearPool();
20720     pool->freeAll();
20721     mImpl->log("finish vkSetDebugUtilsObjectNameEXT");;
20722     return vkSetDebugUtilsObjectNameEXT_VkResult_return;
20723 }
20724 
vkSetDebugUtilsObjectTagEXT(VkDevice device,const VkDebugUtilsObjectTagInfoEXT * pTagInfo)20725 VkResult VkEncoder::vkSetDebugUtilsObjectTagEXT(
20726     VkDevice device,
20727     const VkDebugUtilsObjectTagInfoEXT* pTagInfo)
20728 {
20729     AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT encode");
20730     mImpl->log("start vkSetDebugUtilsObjectTagEXT");
20731     auto stream = mImpl->stream();
20732     auto countingStream = mImpl->countingStream();
20733     auto resources = mImpl->resources();
20734     auto pool = mImpl->pool();
20735     stream->setHandleMapping(resources->unwrapMapping());
20736     VkDevice local_device;
20737     VkDebugUtilsObjectTagInfoEXT* local_pTagInfo;
20738     local_device = device;
20739     local_pTagInfo = nullptr;
20740     if (pTagInfo)
20741     {
20742         local_pTagInfo = (VkDebugUtilsObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectTagInfoEXT));
20743         deepcopy_VkDebugUtilsObjectTagInfoEXT(pool, pTagInfo, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
20744     }
20745     if (local_pTagInfo)
20746     {
20747         transform_tohost_VkDebugUtilsObjectTagInfoEXT(mImpl->resources(), (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
20748     }
20749     countingStream->rewind();
20750     {
20751         uint64_t cgen_var_1384;
20752         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1384, 1);
20753         countingStream->write((uint64_t*)&cgen_var_1384, 1 * 8);
20754         marshal_VkDebugUtilsObjectTagInfoEXT(countingStream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
20755     }
20756     uint32_t packetSize_vkSetDebugUtilsObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20757     countingStream->rewind();
20758     uint32_t opcode_vkSetDebugUtilsObjectTagEXT = OP_vkSetDebugUtilsObjectTagEXT;
20759     stream->write(&opcode_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
20760     stream->write(&packetSize_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t));
20761     uint64_t cgen_var_1385;
20762     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1385, 1);
20763     stream->write((uint64_t*)&cgen_var_1385, 1 * 8);
20764     marshal_VkDebugUtilsObjectTagInfoEXT(stream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo));
20765     AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT readParams");
20766     AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT returnUnmarshal");
20767     VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0;
20768     stream->read(&vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult));
20769     countingStream->clearPool();
20770     stream->clearPool();
20771     pool->freeAll();
20772     mImpl->log("finish vkSetDebugUtilsObjectTagEXT");;
20773     return vkSetDebugUtilsObjectTagEXT_VkResult_return;
20774 }
20775 
vkQueueBeginDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)20776 void VkEncoder::vkQueueBeginDebugUtilsLabelEXT(
20777     VkQueue queue,
20778     const VkDebugUtilsLabelEXT* pLabelInfo)
20779 {
20780     AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT encode");
20781     mImpl->log("start vkQueueBeginDebugUtilsLabelEXT");
20782     auto stream = mImpl->stream();
20783     auto countingStream = mImpl->countingStream();
20784     auto resources = mImpl->resources();
20785     auto pool = mImpl->pool();
20786     stream->setHandleMapping(resources->unwrapMapping());
20787     VkQueue local_queue;
20788     VkDebugUtilsLabelEXT* local_pLabelInfo;
20789     local_queue = queue;
20790     local_pLabelInfo = nullptr;
20791     if (pLabelInfo)
20792     {
20793         local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
20794         deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20795     }
20796     if (local_pLabelInfo)
20797     {
20798         transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20799     }
20800     countingStream->rewind();
20801     {
20802         uint64_t cgen_var_1386;
20803         countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1386, 1);
20804         countingStream->write((uint64_t*)&cgen_var_1386, 1 * 8);
20805         marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20806     }
20807     uint32_t packetSize_vkQueueBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20808     countingStream->rewind();
20809     uint32_t opcode_vkQueueBeginDebugUtilsLabelEXT = OP_vkQueueBeginDebugUtilsLabelEXT;
20810     stream->write(&opcode_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
20811     stream->write(&packetSize_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t));
20812     uint64_t cgen_var_1387;
20813     stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1387, 1);
20814     stream->write((uint64_t*)&cgen_var_1387, 1 * 8);
20815     marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20816     AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT readParams");
20817     AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT returnUnmarshal");
20818     mImpl->log("finish vkQueueBeginDebugUtilsLabelEXT");;
20819 }
20820 
vkQueueEndDebugUtilsLabelEXT(VkQueue queue)20821 void VkEncoder::vkQueueEndDebugUtilsLabelEXT(
20822     VkQueue queue)
20823 {
20824     AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT encode");
20825     mImpl->log("start vkQueueEndDebugUtilsLabelEXT");
20826     auto stream = mImpl->stream();
20827     auto countingStream = mImpl->countingStream();
20828     auto resources = mImpl->resources();
20829     auto pool = mImpl->pool();
20830     stream->setHandleMapping(resources->unwrapMapping());
20831     VkQueue local_queue;
20832     local_queue = queue;
20833     countingStream->rewind();
20834     {
20835         uint64_t cgen_var_1388;
20836         countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1388, 1);
20837         countingStream->write((uint64_t*)&cgen_var_1388, 1 * 8);
20838     }
20839     uint32_t packetSize_vkQueueEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20840     countingStream->rewind();
20841     uint32_t opcode_vkQueueEndDebugUtilsLabelEXT = OP_vkQueueEndDebugUtilsLabelEXT;
20842     stream->write(&opcode_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
20843     stream->write(&packetSize_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t));
20844     uint64_t cgen_var_1389;
20845     stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1389, 1);
20846     stream->write((uint64_t*)&cgen_var_1389, 1 * 8);
20847     AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT readParams");
20848     AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT returnUnmarshal");
20849     mImpl->log("finish vkQueueEndDebugUtilsLabelEXT");;
20850 }
20851 
vkQueueInsertDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)20852 void VkEncoder::vkQueueInsertDebugUtilsLabelEXT(
20853     VkQueue queue,
20854     const VkDebugUtilsLabelEXT* pLabelInfo)
20855 {
20856     AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT encode");
20857     mImpl->log("start vkQueueInsertDebugUtilsLabelEXT");
20858     auto stream = mImpl->stream();
20859     auto countingStream = mImpl->countingStream();
20860     auto resources = mImpl->resources();
20861     auto pool = mImpl->pool();
20862     stream->setHandleMapping(resources->unwrapMapping());
20863     VkQueue local_queue;
20864     VkDebugUtilsLabelEXT* local_pLabelInfo;
20865     local_queue = queue;
20866     local_pLabelInfo = nullptr;
20867     if (pLabelInfo)
20868     {
20869         local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
20870         deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20871     }
20872     if (local_pLabelInfo)
20873     {
20874         transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20875     }
20876     countingStream->rewind();
20877     {
20878         uint64_t cgen_var_1390;
20879         countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1390, 1);
20880         countingStream->write((uint64_t*)&cgen_var_1390, 1 * 8);
20881         marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20882     }
20883     uint32_t packetSize_vkQueueInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20884     countingStream->rewind();
20885     uint32_t opcode_vkQueueInsertDebugUtilsLabelEXT = OP_vkQueueInsertDebugUtilsLabelEXT;
20886     stream->write(&opcode_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
20887     stream->write(&packetSize_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t));
20888     uint64_t cgen_var_1391;
20889     stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1391, 1);
20890     stream->write((uint64_t*)&cgen_var_1391, 1 * 8);
20891     marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20892     AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT readParams");
20893     AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT returnUnmarshal");
20894     mImpl->log("finish vkQueueInsertDebugUtilsLabelEXT");;
20895 }
20896 
vkCmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)20897 void VkEncoder::vkCmdBeginDebugUtilsLabelEXT(
20898     VkCommandBuffer commandBuffer,
20899     const VkDebugUtilsLabelEXT* pLabelInfo)
20900 {
20901     AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT encode");
20902     mImpl->log("start vkCmdBeginDebugUtilsLabelEXT");
20903     auto stream = mImpl->stream();
20904     auto countingStream = mImpl->countingStream();
20905     auto resources = mImpl->resources();
20906     auto pool = mImpl->pool();
20907     stream->setHandleMapping(resources->unwrapMapping());
20908     VkCommandBuffer local_commandBuffer;
20909     VkDebugUtilsLabelEXT* local_pLabelInfo;
20910     local_commandBuffer = commandBuffer;
20911     local_pLabelInfo = nullptr;
20912     if (pLabelInfo)
20913     {
20914         local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
20915         deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20916     }
20917     if (local_pLabelInfo)
20918     {
20919         transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20920     }
20921     countingStream->rewind();
20922     {
20923         uint64_t cgen_var_1392;
20924         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1392, 1);
20925         countingStream->write((uint64_t*)&cgen_var_1392, 1 * 8);
20926         marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20927     }
20928     uint32_t packetSize_vkCmdBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20929     countingStream->rewind();
20930     uint32_t opcode_vkCmdBeginDebugUtilsLabelEXT = OP_vkCmdBeginDebugUtilsLabelEXT;
20931     stream->write(&opcode_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
20932     stream->write(&packetSize_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t));
20933     uint64_t cgen_var_1393;
20934     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1393, 1);
20935     stream->write((uint64_t*)&cgen_var_1393, 1 * 8);
20936     marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20937     AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT readParams");
20938     AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT returnUnmarshal");
20939     mImpl->log("finish vkCmdBeginDebugUtilsLabelEXT");;
20940 }
20941 
vkCmdEndDebugUtilsLabelEXT(VkCommandBuffer commandBuffer)20942 void VkEncoder::vkCmdEndDebugUtilsLabelEXT(
20943     VkCommandBuffer commandBuffer)
20944 {
20945     AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT encode");
20946     mImpl->log("start vkCmdEndDebugUtilsLabelEXT");
20947     auto stream = mImpl->stream();
20948     auto countingStream = mImpl->countingStream();
20949     auto resources = mImpl->resources();
20950     auto pool = mImpl->pool();
20951     stream->setHandleMapping(resources->unwrapMapping());
20952     VkCommandBuffer local_commandBuffer;
20953     local_commandBuffer = commandBuffer;
20954     countingStream->rewind();
20955     {
20956         uint64_t cgen_var_1394;
20957         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1394, 1);
20958         countingStream->write((uint64_t*)&cgen_var_1394, 1 * 8);
20959     }
20960     uint32_t packetSize_vkCmdEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
20961     countingStream->rewind();
20962     uint32_t opcode_vkCmdEndDebugUtilsLabelEXT = OP_vkCmdEndDebugUtilsLabelEXT;
20963     stream->write(&opcode_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
20964     stream->write(&packetSize_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t));
20965     uint64_t cgen_var_1395;
20966     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1395, 1);
20967     stream->write((uint64_t*)&cgen_var_1395, 1 * 8);
20968     AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT readParams");
20969     AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT returnUnmarshal");
20970     mImpl->log("finish vkCmdEndDebugUtilsLabelEXT");;
20971 }
20972 
vkCmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)20973 void VkEncoder::vkCmdInsertDebugUtilsLabelEXT(
20974     VkCommandBuffer commandBuffer,
20975     const VkDebugUtilsLabelEXT* pLabelInfo)
20976 {
20977     AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT encode");
20978     mImpl->log("start vkCmdInsertDebugUtilsLabelEXT");
20979     auto stream = mImpl->stream();
20980     auto countingStream = mImpl->countingStream();
20981     auto resources = mImpl->resources();
20982     auto pool = mImpl->pool();
20983     stream->setHandleMapping(resources->unwrapMapping());
20984     VkCommandBuffer local_commandBuffer;
20985     VkDebugUtilsLabelEXT* local_pLabelInfo;
20986     local_commandBuffer = commandBuffer;
20987     local_pLabelInfo = nullptr;
20988     if (pLabelInfo)
20989     {
20990         local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT));
20991         deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20992     }
20993     if (local_pLabelInfo)
20994     {
20995         transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
20996     }
20997     countingStream->rewind();
20998     {
20999         uint64_t cgen_var_1396;
21000         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1396, 1);
21001         countingStream->write((uint64_t*)&cgen_var_1396, 1 * 8);
21002         marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
21003     }
21004     uint32_t packetSize_vkCmdInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21005     countingStream->rewind();
21006     uint32_t opcode_vkCmdInsertDebugUtilsLabelEXT = OP_vkCmdInsertDebugUtilsLabelEXT;
21007     stream->write(&opcode_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
21008     stream->write(&packetSize_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t));
21009     uint64_t cgen_var_1397;
21010     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1397, 1);
21011     stream->write((uint64_t*)&cgen_var_1397, 1 * 8);
21012     marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo));
21013     AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT readParams");
21014     AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT returnUnmarshal");
21015     mImpl->log("finish vkCmdInsertDebugUtilsLabelEXT");;
21016 }
21017 
vkCreateDebugUtilsMessengerEXT(VkInstance instance,const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDebugUtilsMessengerEXT * pMessenger)21018 VkResult VkEncoder::vkCreateDebugUtilsMessengerEXT(
21019     VkInstance instance,
21020     const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
21021     const VkAllocationCallbacks* pAllocator,
21022     VkDebugUtilsMessengerEXT* pMessenger)
21023 {
21024     AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT encode");
21025     mImpl->log("start vkCreateDebugUtilsMessengerEXT");
21026     auto stream = mImpl->stream();
21027     auto countingStream = mImpl->countingStream();
21028     auto resources = mImpl->resources();
21029     auto pool = mImpl->pool();
21030     stream->setHandleMapping(resources->unwrapMapping());
21031     VkInstance local_instance;
21032     VkDebugUtilsMessengerCreateInfoEXT* local_pCreateInfo;
21033     VkAllocationCallbacks* local_pAllocator;
21034     local_instance = instance;
21035     local_pCreateInfo = nullptr;
21036     if (pCreateInfo)
21037     {
21038         local_pCreateInfo = (VkDebugUtilsMessengerCreateInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCreateInfoEXT));
21039         deepcopy_VkDebugUtilsMessengerCreateInfoEXT(pool, pCreateInfo, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
21040     }
21041     local_pAllocator = nullptr;
21042     if (pAllocator)
21043     {
21044         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
21045         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
21046     }
21047     local_pAllocator = nullptr;
21048     if (local_pCreateInfo)
21049     {
21050         transform_tohost_VkDebugUtilsMessengerCreateInfoEXT(mImpl->resources(), (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
21051     }
21052     if (local_pAllocator)
21053     {
21054         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
21055     }
21056     countingStream->rewind();
21057     {
21058         uint64_t cgen_var_1398;
21059         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1398, 1);
21060         countingStream->write((uint64_t*)&cgen_var_1398, 1 * 8);
21061         marshal_VkDebugUtilsMessengerCreateInfoEXT(countingStream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
21062         // WARNING PTR CHECK
21063         uint64_t cgen_var_1399 = (uint64_t)(uintptr_t)local_pAllocator;
21064         countingStream->putBe64(cgen_var_1399);
21065         if (local_pAllocator)
21066         {
21067             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
21068         }
21069         uint64_t cgen_var_1400;
21070         countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1400, 1);
21071         countingStream->write((uint64_t*)&cgen_var_1400, 8);
21072     }
21073     uint32_t packetSize_vkCreateDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21074     countingStream->rewind();
21075     uint32_t opcode_vkCreateDebugUtilsMessengerEXT = OP_vkCreateDebugUtilsMessengerEXT;
21076     stream->write(&opcode_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
21077     stream->write(&packetSize_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t));
21078     uint64_t cgen_var_1401;
21079     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1401, 1);
21080     stream->write((uint64_t*)&cgen_var_1401, 1 * 8);
21081     marshal_VkDebugUtilsMessengerCreateInfoEXT(stream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo));
21082     // WARNING PTR CHECK
21083     uint64_t cgen_var_1402 = (uint64_t)(uintptr_t)local_pAllocator;
21084     stream->putBe64(cgen_var_1402);
21085     if (local_pAllocator)
21086     {
21087         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
21088     }
21089     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
21090     uint64_t cgen_var_1403;
21091     stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1403, 1);
21092     stream->write((uint64_t*)&cgen_var_1403, 8);
21093     stream->setHandleMapping(resources->unwrapMapping());
21094     AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT readParams");
21095     stream->setHandleMapping(resources->createMapping());
21096     uint64_t cgen_var_1404;
21097     stream->read((uint64_t*)&cgen_var_1404, 8);
21098     stream->handleMapping()->mapHandles_u64_VkDebugUtilsMessengerEXT(&cgen_var_1404, (VkDebugUtilsMessengerEXT*)pMessenger, 1);
21099     stream->unsetHandleMapping();
21100     AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT returnUnmarshal");
21101     VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0;
21102     stream->read(&vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult));
21103     countingStream->clearPool();
21104     stream->clearPool();
21105     pool->freeAll();
21106     mImpl->log("finish vkCreateDebugUtilsMessengerEXT");;
21107     return vkCreateDebugUtilsMessengerEXT_VkResult_return;
21108 }
21109 
vkDestroyDebugUtilsMessengerEXT(VkInstance instance,VkDebugUtilsMessengerEXT messenger,const VkAllocationCallbacks * pAllocator)21110 void VkEncoder::vkDestroyDebugUtilsMessengerEXT(
21111     VkInstance instance,
21112     VkDebugUtilsMessengerEXT messenger,
21113     const VkAllocationCallbacks* pAllocator)
21114 {
21115     AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT encode");
21116     mImpl->log("start vkDestroyDebugUtilsMessengerEXT");
21117     auto stream = mImpl->stream();
21118     auto countingStream = mImpl->countingStream();
21119     auto resources = mImpl->resources();
21120     auto pool = mImpl->pool();
21121     stream->setHandleMapping(resources->unwrapMapping());
21122     VkInstance local_instance;
21123     VkDebugUtilsMessengerEXT local_messenger;
21124     VkAllocationCallbacks* local_pAllocator;
21125     local_instance = instance;
21126     local_messenger = messenger;
21127     local_pAllocator = nullptr;
21128     if (pAllocator)
21129     {
21130         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
21131         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
21132     }
21133     local_pAllocator = nullptr;
21134     if (local_pAllocator)
21135     {
21136         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
21137     }
21138     countingStream->rewind();
21139     {
21140         uint64_t cgen_var_1405;
21141         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1405, 1);
21142         countingStream->write((uint64_t*)&cgen_var_1405, 1 * 8);
21143         uint64_t cgen_var_1406;
21144         countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1406, 1);
21145         countingStream->write((uint64_t*)&cgen_var_1406, 1 * 8);
21146         // WARNING PTR CHECK
21147         uint64_t cgen_var_1407 = (uint64_t)(uintptr_t)local_pAllocator;
21148         countingStream->putBe64(cgen_var_1407);
21149         if (local_pAllocator)
21150         {
21151             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
21152         }
21153     }
21154     uint32_t packetSize_vkDestroyDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21155     countingStream->rewind();
21156     uint32_t opcode_vkDestroyDebugUtilsMessengerEXT = OP_vkDestroyDebugUtilsMessengerEXT;
21157     stream->write(&opcode_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
21158     stream->write(&packetSize_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t));
21159     uint64_t cgen_var_1408;
21160     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1408, 1);
21161     stream->write((uint64_t*)&cgen_var_1408, 1 * 8);
21162     uint64_t cgen_var_1409;
21163     stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1409, 1);
21164     stream->write((uint64_t*)&cgen_var_1409, 1 * 8);
21165     // WARNING PTR CHECK
21166     uint64_t cgen_var_1410 = (uint64_t)(uintptr_t)local_pAllocator;
21167     stream->putBe64(cgen_var_1410);
21168     if (local_pAllocator)
21169     {
21170         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
21171     }
21172     AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT readParams");
21173     AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT returnUnmarshal");
21174     resources->destroyMapping()->mapHandles_VkDebugUtilsMessengerEXT((VkDebugUtilsMessengerEXT*)&messenger);
21175     mImpl->log("finish vkDestroyDebugUtilsMessengerEXT");;
21176 }
21177 
vkSubmitDebugUtilsMessageEXT(VkInstance instance,VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,VkDebugUtilsMessageTypeFlagsEXT messageTypes,const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData)21178 void VkEncoder::vkSubmitDebugUtilsMessageEXT(
21179     VkInstance instance,
21180     VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
21181     VkDebugUtilsMessageTypeFlagsEXT messageTypes,
21182     const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
21183 {
21184     AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT encode");
21185     mImpl->log("start vkSubmitDebugUtilsMessageEXT");
21186     auto stream = mImpl->stream();
21187     auto countingStream = mImpl->countingStream();
21188     auto resources = mImpl->resources();
21189     auto pool = mImpl->pool();
21190     stream->setHandleMapping(resources->unwrapMapping());
21191     VkInstance local_instance;
21192     VkDebugUtilsMessageSeverityFlagBitsEXT local_messageSeverity;
21193     VkDebugUtilsMessageTypeFlagsEXT local_messageTypes;
21194     VkDebugUtilsMessengerCallbackDataEXT* local_pCallbackData;
21195     local_instance = instance;
21196     local_messageSeverity = messageSeverity;
21197     local_messageTypes = messageTypes;
21198     local_pCallbackData = nullptr;
21199     if (pCallbackData)
21200     {
21201         local_pCallbackData = (VkDebugUtilsMessengerCallbackDataEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCallbackDataEXT));
21202         deepcopy_VkDebugUtilsMessengerCallbackDataEXT(pool, pCallbackData, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
21203     }
21204     if (local_pCallbackData)
21205     {
21206         transform_tohost_VkDebugUtilsMessengerCallbackDataEXT(mImpl->resources(), (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
21207     }
21208     countingStream->rewind();
21209     {
21210         uint64_t cgen_var_1411;
21211         countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1411, 1);
21212         countingStream->write((uint64_t*)&cgen_var_1411, 1 * 8);
21213         countingStream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
21214         countingStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
21215         marshal_VkDebugUtilsMessengerCallbackDataEXT(countingStream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
21216     }
21217     uint32_t packetSize_vkSubmitDebugUtilsMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21218     countingStream->rewind();
21219     uint32_t opcode_vkSubmitDebugUtilsMessageEXT = OP_vkSubmitDebugUtilsMessageEXT;
21220     stream->write(&opcode_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
21221     stream->write(&packetSize_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t));
21222     uint64_t cgen_var_1412;
21223     stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1412, 1);
21224     stream->write((uint64_t*)&cgen_var_1412, 1 * 8);
21225     stream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT));
21226     stream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT));
21227     marshal_VkDebugUtilsMessengerCallbackDataEXT(stream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData));
21228     AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT readParams");
21229     AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT returnUnmarshal");
21230     mImpl->log("finish vkSubmitDebugUtilsMessageEXT");;
21231 }
21232 
21233 #endif
21234 #ifdef VK_ANDROID_external_memory_android_hardware_buffer
vkGetAndroidHardwareBufferPropertiesANDROID(VkDevice device,const AHardwareBuffer * buffer,VkAndroidHardwareBufferPropertiesANDROID * pProperties)21235 VkResult VkEncoder::vkGetAndroidHardwareBufferPropertiesANDROID(
21236     VkDevice device,
21237     const AHardwareBuffer* buffer,
21238     VkAndroidHardwareBufferPropertiesANDROID* pProperties)
21239 {
21240     AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID encode");
21241     mImpl->log("start vkGetAndroidHardwareBufferPropertiesANDROID");
21242     auto stream = mImpl->stream();
21243     auto countingStream = mImpl->countingStream();
21244     auto resources = mImpl->resources();
21245     auto pool = mImpl->pool();
21246     stream->setHandleMapping(resources->unwrapMapping());
21247     VkDevice local_device;
21248     AHardwareBuffer* local_buffer;
21249     local_device = device;
21250     local_buffer = nullptr;
21251     if (buffer)
21252     {
21253         local_buffer = (AHardwareBuffer*)pool->dupArray(buffer, sizeof(const AHardwareBuffer));
21254     }
21255     countingStream->rewind();
21256     {
21257         uint64_t cgen_var_1413;
21258         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1413, 1);
21259         countingStream->write((uint64_t*)&cgen_var_1413, 1 * 8);
21260         countingStream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
21261         marshal_VkAndroidHardwareBufferPropertiesANDROID(countingStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
21262     }
21263     uint32_t packetSize_vkGetAndroidHardwareBufferPropertiesANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21264     countingStream->rewind();
21265     uint32_t opcode_vkGetAndroidHardwareBufferPropertiesANDROID = OP_vkGetAndroidHardwareBufferPropertiesANDROID;
21266     stream->write(&opcode_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
21267     stream->write(&packetSize_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t));
21268     uint64_t cgen_var_1414;
21269     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1414, 1);
21270     stream->write((uint64_t*)&cgen_var_1414, 1 * 8);
21271     stream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer));
21272     marshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
21273     AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID readParams");
21274     unmarshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
21275     if (pProperties)
21276     {
21277         transform_fromhost_VkAndroidHardwareBufferPropertiesANDROID(mImpl->resources(), (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties));
21278     }
21279     AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID returnUnmarshal");
21280     VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
21281     stream->read(&vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult));
21282     countingStream->clearPool();
21283     stream->clearPool();
21284     pool->freeAll();
21285     mImpl->log("finish vkGetAndroidHardwareBufferPropertiesANDROID");;
21286     return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
21287 }
21288 
vkGetMemoryAndroidHardwareBufferANDROID(VkDevice device,const VkMemoryGetAndroidHardwareBufferInfoANDROID * pInfo,AHardwareBuffer ** pBuffer)21289 VkResult VkEncoder::vkGetMemoryAndroidHardwareBufferANDROID(
21290     VkDevice device,
21291     const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
21292     AHardwareBuffer** pBuffer)
21293 {
21294     AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID encode");
21295     mImpl->log("start vkGetMemoryAndroidHardwareBufferANDROID");
21296     auto stream = mImpl->stream();
21297     auto countingStream = mImpl->countingStream();
21298     auto resources = mImpl->resources();
21299     auto pool = mImpl->pool();
21300     stream->setHandleMapping(resources->unwrapMapping());
21301     VkDevice local_device;
21302     VkMemoryGetAndroidHardwareBufferInfoANDROID* local_pInfo;
21303     local_device = device;
21304     local_pInfo = nullptr;
21305     if (pInfo)
21306     {
21307         local_pInfo = (VkMemoryGetAndroidHardwareBufferInfoANDROID*)pool->alloc(sizeof(const VkMemoryGetAndroidHardwareBufferInfoANDROID));
21308         deepcopy_VkMemoryGetAndroidHardwareBufferInfoANDROID(pool, pInfo, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
21309     }
21310     if (local_pInfo)
21311     {
21312         transform_tohost_VkMemoryGetAndroidHardwareBufferInfoANDROID(mImpl->resources(), (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
21313     }
21314     countingStream->rewind();
21315     {
21316         uint64_t cgen_var_1415;
21317         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1415, 1);
21318         countingStream->write((uint64_t*)&cgen_var_1415, 1 * 8);
21319         marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(countingStream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
21320         countingStream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
21321     }
21322     uint32_t packetSize_vkGetMemoryAndroidHardwareBufferANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21323     countingStream->rewind();
21324     uint32_t opcode_vkGetMemoryAndroidHardwareBufferANDROID = OP_vkGetMemoryAndroidHardwareBufferANDROID;
21325     stream->write(&opcode_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
21326     stream->write(&packetSize_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t));
21327     uint64_t cgen_var_1416;
21328     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1416, 1);
21329     stream->write((uint64_t*)&cgen_var_1416, 1 * 8);
21330     marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(stream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo));
21331     stream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
21332     AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID readParams");
21333     stream->read((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*));
21334     AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID returnUnmarshal");
21335     VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
21336     stream->read(&vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult));
21337     countingStream->clearPool();
21338     stream->clearPool();
21339     pool->freeAll();
21340     mImpl->log("finish vkGetMemoryAndroidHardwareBufferANDROID");;
21341     return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
21342 }
21343 
21344 #endif
21345 #ifdef VK_EXT_sampler_filter_minmax
21346 #endif
21347 #ifdef VK_AMD_gpu_shader_int16
21348 #endif
21349 #ifdef VK_AMD_mixed_attachment_samples
21350 #endif
21351 #ifdef VK_AMD_shader_fragment_mask
21352 #endif
21353 #ifdef VK_EXT_shader_stencil_export
21354 #endif
21355 #ifdef VK_EXT_sample_locations
vkCmdSetSampleLocationsEXT(VkCommandBuffer commandBuffer,const VkSampleLocationsInfoEXT * pSampleLocationsInfo)21356 void VkEncoder::vkCmdSetSampleLocationsEXT(
21357     VkCommandBuffer commandBuffer,
21358     const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
21359 {
21360     AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT encode");
21361     mImpl->log("start vkCmdSetSampleLocationsEXT");
21362     auto stream = mImpl->stream();
21363     auto countingStream = mImpl->countingStream();
21364     auto resources = mImpl->resources();
21365     auto pool = mImpl->pool();
21366     stream->setHandleMapping(resources->unwrapMapping());
21367     VkCommandBuffer local_commandBuffer;
21368     VkSampleLocationsInfoEXT* local_pSampleLocationsInfo;
21369     local_commandBuffer = commandBuffer;
21370     local_pSampleLocationsInfo = nullptr;
21371     if (pSampleLocationsInfo)
21372     {
21373         local_pSampleLocationsInfo = (VkSampleLocationsInfoEXT*)pool->alloc(sizeof(const VkSampleLocationsInfoEXT));
21374         deepcopy_VkSampleLocationsInfoEXT(pool, pSampleLocationsInfo, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
21375     }
21376     if (local_pSampleLocationsInfo)
21377     {
21378         transform_tohost_VkSampleLocationsInfoEXT(mImpl->resources(), (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
21379     }
21380     countingStream->rewind();
21381     {
21382         uint64_t cgen_var_1417;
21383         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1417, 1);
21384         countingStream->write((uint64_t*)&cgen_var_1417, 1 * 8);
21385         marshal_VkSampleLocationsInfoEXT(countingStream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
21386     }
21387     uint32_t packetSize_vkCmdSetSampleLocationsEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21388     countingStream->rewind();
21389     uint32_t opcode_vkCmdSetSampleLocationsEXT = OP_vkCmdSetSampleLocationsEXT;
21390     stream->write(&opcode_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
21391     stream->write(&packetSize_vkCmdSetSampleLocationsEXT, sizeof(uint32_t));
21392     uint64_t cgen_var_1418;
21393     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1418, 1);
21394     stream->write((uint64_t*)&cgen_var_1418, 1 * 8);
21395     marshal_VkSampleLocationsInfoEXT(stream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo));
21396     AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT readParams");
21397     AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT returnUnmarshal");
21398     mImpl->log("finish vkCmdSetSampleLocationsEXT");;
21399 }
21400 
vkGetPhysicalDeviceMultisamplePropertiesEXT(VkPhysicalDevice physicalDevice,VkSampleCountFlagBits samples,VkMultisamplePropertiesEXT * pMultisampleProperties)21401 void VkEncoder::vkGetPhysicalDeviceMultisamplePropertiesEXT(
21402     VkPhysicalDevice physicalDevice,
21403     VkSampleCountFlagBits samples,
21404     VkMultisamplePropertiesEXT* pMultisampleProperties)
21405 {
21406     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT encode");
21407     mImpl->log("start vkGetPhysicalDeviceMultisamplePropertiesEXT");
21408     auto stream = mImpl->stream();
21409     auto countingStream = mImpl->countingStream();
21410     auto resources = mImpl->resources();
21411     auto pool = mImpl->pool();
21412     stream->setHandleMapping(resources->unwrapMapping());
21413     VkPhysicalDevice local_physicalDevice;
21414     VkSampleCountFlagBits local_samples;
21415     local_physicalDevice = physicalDevice;
21416     local_samples = samples;
21417     countingStream->rewind();
21418     {
21419         uint64_t cgen_var_1419;
21420         countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1419, 1);
21421         countingStream->write((uint64_t*)&cgen_var_1419, 1 * 8);
21422         countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
21423         marshal_VkMultisamplePropertiesEXT(countingStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
21424     }
21425     uint32_t packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21426     countingStream->rewind();
21427     uint32_t opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT = OP_vkGetPhysicalDeviceMultisamplePropertiesEXT;
21428     stream->write(&opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
21429     stream->write(&packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t));
21430     uint64_t cgen_var_1420;
21431     stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1420, 1);
21432     stream->write((uint64_t*)&cgen_var_1420, 1 * 8);
21433     stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits));
21434     marshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
21435     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT readParams");
21436     unmarshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
21437     if (pMultisampleProperties)
21438     {
21439         transform_fromhost_VkMultisamplePropertiesEXT(mImpl->resources(), (VkMultisamplePropertiesEXT*)(pMultisampleProperties));
21440     }
21441     AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT returnUnmarshal");
21442     mImpl->log("finish vkGetPhysicalDeviceMultisamplePropertiesEXT");;
21443 }
21444 
21445 #endif
21446 #ifdef VK_EXT_blend_operation_advanced
21447 #endif
21448 #ifdef VK_NV_fragment_coverage_to_color
21449 #endif
21450 #ifdef VK_NV_framebuffer_mixed_samples
21451 #endif
21452 #ifdef VK_NV_fill_rectangle
21453 #endif
21454 #ifdef VK_EXT_post_depth_coverage
21455 #endif
21456 #ifdef VK_EXT_validation_cache
vkCreateValidationCacheEXT(VkDevice device,const VkValidationCacheCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkValidationCacheEXT * pValidationCache)21457 VkResult VkEncoder::vkCreateValidationCacheEXT(
21458     VkDevice device,
21459     const VkValidationCacheCreateInfoEXT* pCreateInfo,
21460     const VkAllocationCallbacks* pAllocator,
21461     VkValidationCacheEXT* pValidationCache)
21462 {
21463     AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT encode");
21464     mImpl->log("start vkCreateValidationCacheEXT");
21465     auto stream = mImpl->stream();
21466     auto countingStream = mImpl->countingStream();
21467     auto resources = mImpl->resources();
21468     auto pool = mImpl->pool();
21469     stream->setHandleMapping(resources->unwrapMapping());
21470     VkDevice local_device;
21471     VkValidationCacheCreateInfoEXT* local_pCreateInfo;
21472     VkAllocationCallbacks* local_pAllocator;
21473     local_device = device;
21474     local_pCreateInfo = nullptr;
21475     if (pCreateInfo)
21476     {
21477         local_pCreateInfo = (VkValidationCacheCreateInfoEXT*)pool->alloc(sizeof(const VkValidationCacheCreateInfoEXT));
21478         deepcopy_VkValidationCacheCreateInfoEXT(pool, pCreateInfo, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
21479     }
21480     local_pAllocator = nullptr;
21481     if (pAllocator)
21482     {
21483         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
21484         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
21485     }
21486     local_pAllocator = nullptr;
21487     if (local_pCreateInfo)
21488     {
21489         transform_tohost_VkValidationCacheCreateInfoEXT(mImpl->resources(), (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
21490     }
21491     if (local_pAllocator)
21492     {
21493         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
21494     }
21495     countingStream->rewind();
21496     {
21497         uint64_t cgen_var_1421;
21498         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1421, 1);
21499         countingStream->write((uint64_t*)&cgen_var_1421, 1 * 8);
21500         marshal_VkValidationCacheCreateInfoEXT(countingStream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
21501         // WARNING PTR CHECK
21502         uint64_t cgen_var_1422 = (uint64_t)(uintptr_t)local_pAllocator;
21503         countingStream->putBe64(cgen_var_1422);
21504         if (local_pAllocator)
21505         {
21506             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
21507         }
21508         uint64_t cgen_var_1423;
21509         countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1423, 1);
21510         countingStream->write((uint64_t*)&cgen_var_1423, 8);
21511     }
21512     uint32_t packetSize_vkCreateValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21513     countingStream->rewind();
21514     uint32_t opcode_vkCreateValidationCacheEXT = OP_vkCreateValidationCacheEXT;
21515     stream->write(&opcode_vkCreateValidationCacheEXT, sizeof(uint32_t));
21516     stream->write(&packetSize_vkCreateValidationCacheEXT, sizeof(uint32_t));
21517     uint64_t cgen_var_1424;
21518     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1424, 1);
21519     stream->write((uint64_t*)&cgen_var_1424, 1 * 8);
21520     marshal_VkValidationCacheCreateInfoEXT(stream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo));
21521     // WARNING PTR CHECK
21522     uint64_t cgen_var_1425 = (uint64_t)(uintptr_t)local_pAllocator;
21523     stream->putBe64(cgen_var_1425);
21524     if (local_pAllocator)
21525     {
21526         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
21527     }
21528     stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */;
21529     uint64_t cgen_var_1426;
21530     stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1426, 1);
21531     stream->write((uint64_t*)&cgen_var_1426, 8);
21532     stream->setHandleMapping(resources->unwrapMapping());
21533     AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT readParams");
21534     stream->setHandleMapping(resources->createMapping());
21535     uint64_t cgen_var_1427;
21536     stream->read((uint64_t*)&cgen_var_1427, 8);
21537     stream->handleMapping()->mapHandles_u64_VkValidationCacheEXT(&cgen_var_1427, (VkValidationCacheEXT*)pValidationCache, 1);
21538     stream->unsetHandleMapping();
21539     AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT returnUnmarshal");
21540     VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0;
21541     stream->read(&vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult));
21542     countingStream->clearPool();
21543     stream->clearPool();
21544     pool->freeAll();
21545     mImpl->log("finish vkCreateValidationCacheEXT");;
21546     return vkCreateValidationCacheEXT_VkResult_return;
21547 }
21548 
vkDestroyValidationCacheEXT(VkDevice device,VkValidationCacheEXT validationCache,const VkAllocationCallbacks * pAllocator)21549 void VkEncoder::vkDestroyValidationCacheEXT(
21550     VkDevice device,
21551     VkValidationCacheEXT validationCache,
21552     const VkAllocationCallbacks* pAllocator)
21553 {
21554     AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT encode");
21555     mImpl->log("start vkDestroyValidationCacheEXT");
21556     auto stream = mImpl->stream();
21557     auto countingStream = mImpl->countingStream();
21558     auto resources = mImpl->resources();
21559     auto pool = mImpl->pool();
21560     stream->setHandleMapping(resources->unwrapMapping());
21561     VkDevice local_device;
21562     VkValidationCacheEXT local_validationCache;
21563     VkAllocationCallbacks* local_pAllocator;
21564     local_device = device;
21565     local_validationCache = validationCache;
21566     local_pAllocator = nullptr;
21567     if (pAllocator)
21568     {
21569         local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks));
21570         deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator));
21571     }
21572     local_pAllocator = nullptr;
21573     if (local_pAllocator)
21574     {
21575         transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator));
21576     }
21577     countingStream->rewind();
21578     {
21579         uint64_t cgen_var_1428;
21580         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1428, 1);
21581         countingStream->write((uint64_t*)&cgen_var_1428, 1 * 8);
21582         uint64_t cgen_var_1429;
21583         countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1429, 1);
21584         countingStream->write((uint64_t*)&cgen_var_1429, 1 * 8);
21585         // WARNING PTR CHECK
21586         uint64_t cgen_var_1430 = (uint64_t)(uintptr_t)local_pAllocator;
21587         countingStream->putBe64(cgen_var_1430);
21588         if (local_pAllocator)
21589         {
21590             marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator));
21591         }
21592     }
21593     uint32_t packetSize_vkDestroyValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21594     countingStream->rewind();
21595     uint32_t opcode_vkDestroyValidationCacheEXT = OP_vkDestroyValidationCacheEXT;
21596     stream->write(&opcode_vkDestroyValidationCacheEXT, sizeof(uint32_t));
21597     stream->write(&packetSize_vkDestroyValidationCacheEXT, sizeof(uint32_t));
21598     uint64_t cgen_var_1431;
21599     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1431, 1);
21600     stream->write((uint64_t*)&cgen_var_1431, 1 * 8);
21601     uint64_t cgen_var_1432;
21602     stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1432, 1);
21603     stream->write((uint64_t*)&cgen_var_1432, 1 * 8);
21604     // WARNING PTR CHECK
21605     uint64_t cgen_var_1433 = (uint64_t)(uintptr_t)local_pAllocator;
21606     stream->putBe64(cgen_var_1433);
21607     if (local_pAllocator)
21608     {
21609         marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator));
21610     }
21611     AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT readParams");
21612     AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT returnUnmarshal");
21613     resources->destroyMapping()->mapHandles_VkValidationCacheEXT((VkValidationCacheEXT*)&validationCache);
21614     mImpl->log("finish vkDestroyValidationCacheEXT");;
21615 }
21616 
vkMergeValidationCachesEXT(VkDevice device,VkValidationCacheEXT dstCache,uint32_t srcCacheCount,const VkValidationCacheEXT * pSrcCaches)21617 VkResult VkEncoder::vkMergeValidationCachesEXT(
21618     VkDevice device,
21619     VkValidationCacheEXT dstCache,
21620     uint32_t srcCacheCount,
21621     const VkValidationCacheEXT* pSrcCaches)
21622 {
21623     AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT encode");
21624     mImpl->log("start vkMergeValidationCachesEXT");
21625     auto stream = mImpl->stream();
21626     auto countingStream = mImpl->countingStream();
21627     auto resources = mImpl->resources();
21628     auto pool = mImpl->pool();
21629     stream->setHandleMapping(resources->unwrapMapping());
21630     VkDevice local_device;
21631     VkValidationCacheEXT local_dstCache;
21632     uint32_t local_srcCacheCount;
21633     VkValidationCacheEXT* local_pSrcCaches;
21634     local_device = device;
21635     local_dstCache = dstCache;
21636     local_srcCacheCount = srcCacheCount;
21637     local_pSrcCaches = nullptr;
21638     if (pSrcCaches)
21639     {
21640         local_pSrcCaches = (VkValidationCacheEXT*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT));
21641     }
21642     countingStream->rewind();
21643     {
21644         uint64_t cgen_var_1434;
21645         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1434, 1);
21646         countingStream->write((uint64_t*)&cgen_var_1434, 1 * 8);
21647         uint64_t cgen_var_1435;
21648         countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1435, 1);
21649         countingStream->write((uint64_t*)&cgen_var_1435, 1 * 8);
21650         countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
21651         if (((srcCacheCount)))
21652         {
21653             uint64_t* cgen_var_1436;
21654             countingStream->alloc((void**)&cgen_var_1436, ((srcCacheCount)) * 8);
21655             countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1436, ((srcCacheCount)));
21656             countingStream->write((uint64_t*)cgen_var_1436, ((srcCacheCount)) * 8);
21657         }
21658     }
21659     uint32_t packetSize_vkMergeValidationCachesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21660     countingStream->rewind();
21661     uint32_t opcode_vkMergeValidationCachesEXT = OP_vkMergeValidationCachesEXT;
21662     stream->write(&opcode_vkMergeValidationCachesEXT, sizeof(uint32_t));
21663     stream->write(&packetSize_vkMergeValidationCachesEXT, sizeof(uint32_t));
21664     uint64_t cgen_var_1437;
21665     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1437, 1);
21666     stream->write((uint64_t*)&cgen_var_1437, 1 * 8);
21667     uint64_t cgen_var_1438;
21668     stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1438, 1);
21669     stream->write((uint64_t*)&cgen_var_1438, 1 * 8);
21670     stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t));
21671     if (((srcCacheCount)))
21672     {
21673         uint64_t* cgen_var_1439;
21674         stream->alloc((void**)&cgen_var_1439, ((srcCacheCount)) * 8);
21675         stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1439, ((srcCacheCount)));
21676         stream->write((uint64_t*)cgen_var_1439, ((srcCacheCount)) * 8);
21677     }
21678     AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT readParams");
21679     AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT returnUnmarshal");
21680     VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0;
21681     stream->read(&vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult));
21682     countingStream->clearPool();
21683     stream->clearPool();
21684     pool->freeAll();
21685     mImpl->log("finish vkMergeValidationCachesEXT");;
21686     return vkMergeValidationCachesEXT_VkResult_return;
21687 }
21688 
vkGetValidationCacheDataEXT(VkDevice device,VkValidationCacheEXT validationCache,size_t * pDataSize,void * pData)21689 VkResult VkEncoder::vkGetValidationCacheDataEXT(
21690     VkDevice device,
21691     VkValidationCacheEXT validationCache,
21692     size_t* pDataSize,
21693     void* pData)
21694 {
21695     AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT encode");
21696     mImpl->log("start vkGetValidationCacheDataEXT");
21697     auto stream = mImpl->stream();
21698     auto countingStream = mImpl->countingStream();
21699     auto resources = mImpl->resources();
21700     auto pool = mImpl->pool();
21701     stream->setHandleMapping(resources->unwrapMapping());
21702     VkDevice local_device;
21703     VkValidationCacheEXT local_validationCache;
21704     local_device = device;
21705     local_validationCache = validationCache;
21706     countingStream->rewind();
21707     {
21708         uint64_t cgen_var_1440;
21709         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1440, 1);
21710         countingStream->write((uint64_t*)&cgen_var_1440, 1 * 8);
21711         uint64_t cgen_var_1441;
21712         countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1441, 1);
21713         countingStream->write((uint64_t*)&cgen_var_1441, 1 * 8);
21714         // WARNING PTR CHECK
21715         uint64_t cgen_var_1442 = (uint64_t)(uintptr_t)pDataSize;
21716         countingStream->putBe64(cgen_var_1442);
21717         if (pDataSize)
21718         {
21719             uint64_t cgen_var_1443 = (uint64_t)(*pDataSize);
21720             countingStream->putBe64(cgen_var_1443);
21721         }
21722         // WARNING PTR CHECK
21723         uint64_t cgen_var_1444 = (uint64_t)(uintptr_t)pData;
21724         countingStream->putBe64(cgen_var_1444);
21725         if (pData)
21726         {
21727             countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
21728         }
21729     }
21730     uint32_t packetSize_vkGetValidationCacheDataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21731     countingStream->rewind();
21732     uint32_t opcode_vkGetValidationCacheDataEXT = OP_vkGetValidationCacheDataEXT;
21733     stream->write(&opcode_vkGetValidationCacheDataEXT, sizeof(uint32_t));
21734     stream->write(&packetSize_vkGetValidationCacheDataEXT, sizeof(uint32_t));
21735     uint64_t cgen_var_1445;
21736     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1445, 1);
21737     stream->write((uint64_t*)&cgen_var_1445, 1 * 8);
21738     uint64_t cgen_var_1446;
21739     stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1446, 1);
21740     stream->write((uint64_t*)&cgen_var_1446, 1 * 8);
21741     // WARNING PTR CHECK
21742     uint64_t cgen_var_1447 = (uint64_t)(uintptr_t)pDataSize;
21743     stream->putBe64(cgen_var_1447);
21744     if (pDataSize)
21745     {
21746         uint64_t cgen_var_1448 = (uint64_t)(*pDataSize);
21747         stream->putBe64(cgen_var_1448);
21748     }
21749     // WARNING PTR CHECK
21750     uint64_t cgen_var_1449 = (uint64_t)(uintptr_t)pData;
21751     stream->putBe64(cgen_var_1449);
21752     if (pData)
21753     {
21754         stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
21755     }
21756     AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT readParams");
21757     // WARNING PTR CHECK
21758     size_t* check_pDataSize;
21759     check_pDataSize = (size_t*)(uintptr_t)stream->getBe64();
21760     if (pDataSize)
21761     {
21762         if (!(check_pDataSize))
21763         {
21764             fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n");
21765         }
21766         (*pDataSize) = (size_t)stream->getBe64();
21767     }
21768     // WARNING PTR CHECK
21769     void* check_pData;
21770     check_pData = (void*)(uintptr_t)stream->getBe64();
21771     if (pData)
21772     {
21773         if (!(check_pData))
21774         {
21775             fprintf(stderr, "fatal: pData inconsistent between guest and host\n");
21776         }
21777         stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t));
21778     }
21779     AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT returnUnmarshal");
21780     VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0;
21781     stream->read(&vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult));
21782     countingStream->clearPool();
21783     stream->clearPool();
21784     pool->freeAll();
21785     mImpl->log("finish vkGetValidationCacheDataEXT");;
21786     return vkGetValidationCacheDataEXT_VkResult_return;
21787 }
21788 
21789 #endif
21790 #ifdef VK_EXT_descriptor_indexing
21791 #endif
21792 #ifdef VK_EXT_shader_viewport_index_layer
21793 #endif
21794 #ifdef VK_EXT_global_priority
21795 #endif
21796 #ifdef VK_EXT_external_memory_host
vkGetMemoryHostPointerPropertiesEXT(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,const void * pHostPointer,VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties)21797 VkResult VkEncoder::vkGetMemoryHostPointerPropertiesEXT(
21798     VkDevice device,
21799     VkExternalMemoryHandleTypeFlagBits handleType,
21800     const void* pHostPointer,
21801     VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
21802 {
21803     AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT encode");
21804     mImpl->log("start vkGetMemoryHostPointerPropertiesEXT");
21805     auto stream = mImpl->stream();
21806     auto countingStream = mImpl->countingStream();
21807     auto resources = mImpl->resources();
21808     auto pool = mImpl->pool();
21809     stream->setHandleMapping(resources->unwrapMapping());
21810     VkDevice local_device;
21811     VkExternalMemoryHandleTypeFlagBits local_handleType;
21812     void* local_pHostPointer;
21813     local_device = device;
21814     local_handleType = handleType;
21815     local_pHostPointer = nullptr;
21816     if (pHostPointer)
21817     {
21818         local_pHostPointer = (void*)pool->dupArray(pHostPointer, sizeof(const uint8_t));
21819     }
21820     countingStream->rewind();
21821     {
21822         uint64_t cgen_var_1453;
21823         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1453, 1);
21824         countingStream->write((uint64_t*)&cgen_var_1453, 1 * 8);
21825         countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
21826         // WARNING PTR CHECK
21827         uint64_t cgen_var_1454 = (uint64_t)(uintptr_t)local_pHostPointer;
21828         countingStream->putBe64(cgen_var_1454);
21829         if (local_pHostPointer)
21830         {
21831             countingStream->write((void*)local_pHostPointer, sizeof(uint8_t));
21832         }
21833         marshal_VkMemoryHostPointerPropertiesEXT(countingStream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
21834     }
21835     uint32_t packetSize_vkGetMemoryHostPointerPropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21836     countingStream->rewind();
21837     uint32_t opcode_vkGetMemoryHostPointerPropertiesEXT = OP_vkGetMemoryHostPointerPropertiesEXT;
21838     stream->write(&opcode_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
21839     stream->write(&packetSize_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t));
21840     uint64_t cgen_var_1455;
21841     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1455, 1);
21842     stream->write((uint64_t*)&cgen_var_1455, 1 * 8);
21843     stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits));
21844     // WARNING PTR CHECK
21845     uint64_t cgen_var_1456 = (uint64_t)(uintptr_t)local_pHostPointer;
21846     stream->putBe64(cgen_var_1456);
21847     if (local_pHostPointer)
21848     {
21849         stream->write((void*)local_pHostPointer, sizeof(uint8_t));
21850     }
21851     marshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
21852     AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT readParams");
21853     unmarshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
21854     if (pMemoryHostPointerProperties)
21855     {
21856         transform_fromhost_VkMemoryHostPointerPropertiesEXT(mImpl->resources(), (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties));
21857     }
21858     AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT returnUnmarshal");
21859     VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0;
21860     stream->read(&vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult));
21861     countingStream->clearPool();
21862     stream->clearPool();
21863     pool->freeAll();
21864     mImpl->log("finish vkGetMemoryHostPointerPropertiesEXT");;
21865     return vkGetMemoryHostPointerPropertiesEXT_VkResult_return;
21866 }
21867 
21868 #endif
21869 #ifdef VK_AMD_buffer_marker
vkCmdWriteBufferMarkerAMD(VkCommandBuffer commandBuffer,VkPipelineStageFlagBits pipelineStage,VkBuffer dstBuffer,VkDeviceSize dstOffset,uint32_t marker)21870 void VkEncoder::vkCmdWriteBufferMarkerAMD(
21871     VkCommandBuffer commandBuffer,
21872     VkPipelineStageFlagBits pipelineStage,
21873     VkBuffer dstBuffer,
21874     VkDeviceSize dstOffset,
21875     uint32_t marker)
21876 {
21877     AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD encode");
21878     mImpl->log("start vkCmdWriteBufferMarkerAMD");
21879     auto stream = mImpl->stream();
21880     auto countingStream = mImpl->countingStream();
21881     auto resources = mImpl->resources();
21882     auto pool = mImpl->pool();
21883     stream->setHandleMapping(resources->unwrapMapping());
21884     VkCommandBuffer local_commandBuffer;
21885     VkPipelineStageFlagBits local_pipelineStage;
21886     VkBuffer local_dstBuffer;
21887     VkDeviceSize local_dstOffset;
21888     uint32_t local_marker;
21889     local_commandBuffer = commandBuffer;
21890     local_pipelineStage = pipelineStage;
21891     local_dstBuffer = dstBuffer;
21892     local_dstOffset = dstOffset;
21893     local_marker = marker;
21894     countingStream->rewind();
21895     {
21896         uint64_t cgen_var_1457;
21897         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1457, 1);
21898         countingStream->write((uint64_t*)&cgen_var_1457, 1 * 8);
21899         countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
21900         uint64_t cgen_var_1458;
21901         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1458, 1);
21902         countingStream->write((uint64_t*)&cgen_var_1458, 1 * 8);
21903         countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
21904         countingStream->write((uint32_t*)&local_marker, sizeof(uint32_t));
21905     }
21906     uint32_t packetSize_vkCmdWriteBufferMarkerAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21907     countingStream->rewind();
21908     uint32_t opcode_vkCmdWriteBufferMarkerAMD = OP_vkCmdWriteBufferMarkerAMD;
21909     stream->write(&opcode_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
21910     stream->write(&packetSize_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t));
21911     uint64_t cgen_var_1459;
21912     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1459, 1);
21913     stream->write((uint64_t*)&cgen_var_1459, 1 * 8);
21914     stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits));
21915     uint64_t cgen_var_1460;
21916     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1460, 1);
21917     stream->write((uint64_t*)&cgen_var_1460, 1 * 8);
21918     stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize));
21919     stream->write((uint32_t*)&local_marker, sizeof(uint32_t));
21920     AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD readParams");
21921     AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD returnUnmarshal");
21922     mImpl->log("finish vkCmdWriteBufferMarkerAMD");;
21923 }
21924 
21925 #endif
21926 #ifdef VK_AMD_shader_core_properties
21927 #endif
21928 #ifdef VK_EXT_vertex_attribute_divisor
21929 #endif
21930 #ifdef VK_NV_shader_subgroup_partitioned
21931 #endif
21932 #ifdef VK_NV_device_diagnostic_checkpoints
vkCmdSetCheckpointNV(VkCommandBuffer commandBuffer,const void * pCheckpointMarker)21933 void VkEncoder::vkCmdSetCheckpointNV(
21934     VkCommandBuffer commandBuffer,
21935     const void* pCheckpointMarker)
21936 {
21937     AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV encode");
21938     mImpl->log("start vkCmdSetCheckpointNV");
21939     auto stream = mImpl->stream();
21940     auto countingStream = mImpl->countingStream();
21941     auto resources = mImpl->resources();
21942     auto pool = mImpl->pool();
21943     stream->setHandleMapping(resources->unwrapMapping());
21944     VkCommandBuffer local_commandBuffer;
21945     void* local_pCheckpointMarker;
21946     local_commandBuffer = commandBuffer;
21947     local_pCheckpointMarker = nullptr;
21948     if (pCheckpointMarker)
21949     {
21950         local_pCheckpointMarker = (void*)pool->dupArray(pCheckpointMarker, sizeof(const uint8_t));
21951     }
21952     countingStream->rewind();
21953     {
21954         uint64_t cgen_var_1461;
21955         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1461, 1);
21956         countingStream->write((uint64_t*)&cgen_var_1461, 1 * 8);
21957         // WARNING PTR CHECK
21958         uint64_t cgen_var_1462 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
21959         countingStream->putBe64(cgen_var_1462);
21960         if (local_pCheckpointMarker)
21961         {
21962             countingStream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
21963         }
21964     }
21965     uint32_t packetSize_vkCmdSetCheckpointNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
21966     countingStream->rewind();
21967     uint32_t opcode_vkCmdSetCheckpointNV = OP_vkCmdSetCheckpointNV;
21968     stream->write(&opcode_vkCmdSetCheckpointNV, sizeof(uint32_t));
21969     stream->write(&packetSize_vkCmdSetCheckpointNV, sizeof(uint32_t));
21970     uint64_t cgen_var_1463;
21971     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1463, 1);
21972     stream->write((uint64_t*)&cgen_var_1463, 1 * 8);
21973     // WARNING PTR CHECK
21974     uint64_t cgen_var_1464 = (uint64_t)(uintptr_t)local_pCheckpointMarker;
21975     stream->putBe64(cgen_var_1464);
21976     if (local_pCheckpointMarker)
21977     {
21978         stream->write((void*)local_pCheckpointMarker, sizeof(uint8_t));
21979     }
21980     AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV readParams");
21981     AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV returnUnmarshal");
21982     mImpl->log("finish vkCmdSetCheckpointNV");;
21983 }
21984 
vkGetQueueCheckpointDataNV(VkQueue queue,uint32_t * pCheckpointDataCount,VkCheckpointDataNV * pCheckpointData)21985 void VkEncoder::vkGetQueueCheckpointDataNV(
21986     VkQueue queue,
21987     uint32_t* pCheckpointDataCount,
21988     VkCheckpointDataNV* pCheckpointData)
21989 {
21990     AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV encode");
21991     mImpl->log("start vkGetQueueCheckpointDataNV");
21992     auto stream = mImpl->stream();
21993     auto countingStream = mImpl->countingStream();
21994     auto resources = mImpl->resources();
21995     auto pool = mImpl->pool();
21996     stream->setHandleMapping(resources->unwrapMapping());
21997     VkQueue local_queue;
21998     local_queue = queue;
21999     countingStream->rewind();
22000     {
22001         uint64_t cgen_var_1465;
22002         countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1465, 1);
22003         countingStream->write((uint64_t*)&cgen_var_1465, 1 * 8);
22004         // WARNING PTR CHECK
22005         uint64_t cgen_var_1466 = (uint64_t)(uintptr_t)pCheckpointDataCount;
22006         countingStream->putBe64(cgen_var_1466);
22007         if (pCheckpointDataCount)
22008         {
22009             countingStream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
22010         }
22011         // WARNING PTR CHECK
22012         uint64_t cgen_var_1467 = (uint64_t)(uintptr_t)pCheckpointData;
22013         countingStream->putBe64(cgen_var_1467);
22014         if (pCheckpointData)
22015         {
22016             for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
22017             {
22018                 marshal_VkCheckpointDataNV(countingStream, (VkCheckpointDataNV*)(pCheckpointData + i));
22019             }
22020         }
22021     }
22022     uint32_t packetSize_vkGetQueueCheckpointDataNV = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22023     countingStream->rewind();
22024     uint32_t opcode_vkGetQueueCheckpointDataNV = OP_vkGetQueueCheckpointDataNV;
22025     stream->write(&opcode_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
22026     stream->write(&packetSize_vkGetQueueCheckpointDataNV, sizeof(uint32_t));
22027     uint64_t cgen_var_1468;
22028     stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1468, 1);
22029     stream->write((uint64_t*)&cgen_var_1468, 1 * 8);
22030     // WARNING PTR CHECK
22031     uint64_t cgen_var_1469 = (uint64_t)(uintptr_t)pCheckpointDataCount;
22032     stream->putBe64(cgen_var_1469);
22033     if (pCheckpointDataCount)
22034     {
22035         stream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
22036     }
22037     // WARNING PTR CHECK
22038     uint64_t cgen_var_1470 = (uint64_t)(uintptr_t)pCheckpointData;
22039     stream->putBe64(cgen_var_1470);
22040     if (pCheckpointData)
22041     {
22042         for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
22043         {
22044             marshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
22045         }
22046     }
22047     AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV readParams");
22048     // WARNING PTR CHECK
22049     uint32_t* check_pCheckpointDataCount;
22050     check_pCheckpointDataCount = (uint32_t*)(uintptr_t)stream->getBe64();
22051     if (pCheckpointDataCount)
22052     {
22053         if (!(check_pCheckpointDataCount))
22054         {
22055             fprintf(stderr, "fatal: pCheckpointDataCount inconsistent between guest and host\n");
22056         }
22057         stream->read((uint32_t*)pCheckpointDataCount, sizeof(uint32_t));
22058     }
22059     // WARNING PTR CHECK
22060     VkCheckpointDataNV* check_pCheckpointData;
22061     check_pCheckpointData = (VkCheckpointDataNV*)(uintptr_t)stream->getBe64();
22062     if (pCheckpointData)
22063     {
22064         if (!(check_pCheckpointData))
22065         {
22066             fprintf(stderr, "fatal: pCheckpointData inconsistent between guest and host\n");
22067         }
22068         for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
22069         {
22070             unmarshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i));
22071         }
22072     }
22073     if (pCheckpointData)
22074     {
22075         for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i)
22076         {
22077             transform_fromhost_VkCheckpointDataNV(mImpl->resources(), (VkCheckpointDataNV*)(pCheckpointData + i));
22078         }
22079     }
22080     AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV returnUnmarshal");
22081     mImpl->log("finish vkGetQueueCheckpointDataNV");;
22082 }
22083 
22084 #endif
22085 #ifdef VK_GOOGLE_address_space
vkMapMemoryIntoAddressSpaceGOOGLE(VkDevice device,VkDeviceMemory memory,uint64_t * pAddress)22086 VkResult VkEncoder::vkMapMemoryIntoAddressSpaceGOOGLE(
22087     VkDevice device,
22088     VkDeviceMemory memory,
22089     uint64_t* pAddress)
22090 {
22091     AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE encode");
22092     mImpl->log("start vkMapMemoryIntoAddressSpaceGOOGLE");
22093     mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE_pre(this, VK_SUCCESS, device, memory, pAddress);
22094     auto stream = mImpl->stream();
22095     auto countingStream = mImpl->countingStream();
22096     auto resources = mImpl->resources();
22097     auto pool = mImpl->pool();
22098     stream->setHandleMapping(resources->unwrapMapping());
22099     VkDevice local_device;
22100     VkDeviceMemory local_memory;
22101     local_device = device;
22102     local_memory = memory;
22103     mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0);
22104     countingStream->rewind();
22105     {
22106         uint64_t cgen_var_1473;
22107         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1473, 1);
22108         countingStream->write((uint64_t*)&cgen_var_1473, 1 * 8);
22109         uint64_t cgen_var_1474;
22110         countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1474, 1);
22111         countingStream->write((uint64_t*)&cgen_var_1474, 1 * 8);
22112         // WARNING PTR CHECK
22113         uint64_t cgen_var_1475 = (uint64_t)(uintptr_t)pAddress;
22114         countingStream->putBe64(cgen_var_1475);
22115         if (pAddress)
22116         {
22117             countingStream->write((uint64_t*)pAddress, sizeof(uint64_t));
22118         }
22119     }
22120     uint32_t packetSize_vkMapMemoryIntoAddressSpaceGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22121     countingStream->rewind();
22122     uint32_t opcode_vkMapMemoryIntoAddressSpaceGOOGLE = OP_vkMapMemoryIntoAddressSpaceGOOGLE;
22123     stream->write(&opcode_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t));
22124     stream->write(&packetSize_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t));
22125     uint64_t cgen_var_1476;
22126     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1476, 1);
22127     stream->write((uint64_t*)&cgen_var_1476, 1 * 8);
22128     uint64_t cgen_var_1477;
22129     stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1477, 1);
22130     stream->write((uint64_t*)&cgen_var_1477, 1 * 8);
22131     // WARNING PTR CHECK
22132     uint64_t cgen_var_1478 = (uint64_t)(uintptr_t)pAddress;
22133     stream->putBe64(cgen_var_1478);
22134     if (pAddress)
22135     {
22136         stream->write((uint64_t*)pAddress, sizeof(uint64_t));
22137     }
22138     AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE readParams");
22139     // WARNING PTR CHECK
22140     uint64_t* check_pAddress;
22141     check_pAddress = (uint64_t*)(uintptr_t)stream->getBe64();
22142     if (pAddress)
22143     {
22144         if (!(check_pAddress))
22145         {
22146             fprintf(stderr, "fatal: pAddress inconsistent between guest and host\n");
22147         }
22148         stream->read((uint64_t*)pAddress, sizeof(uint64_t));
22149     }
22150     AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE returnUnmarshal");
22151     VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
22152     stream->read(&vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, sizeof(VkResult));
22153     countingStream->clearPool();
22154     stream->clearPool();
22155     pool->freeAll();
22156     mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE(this, vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, device, memory, pAddress);
22157     mImpl->log("finish vkMapMemoryIntoAddressSpaceGOOGLE");;
22158     return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
22159 }
22160 
22161 #endif
22162 #ifdef VK_GOOGLE_color_buffer
vkRegisterImageColorBufferGOOGLE(VkDevice device,VkImage image,uint32_t colorBuffer)22163 VkResult VkEncoder::vkRegisterImageColorBufferGOOGLE(
22164     VkDevice device,
22165     VkImage image,
22166     uint32_t colorBuffer)
22167 {
22168     AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE encode");
22169     mImpl->log("start vkRegisterImageColorBufferGOOGLE");
22170     auto stream = mImpl->stream();
22171     auto countingStream = mImpl->countingStream();
22172     auto resources = mImpl->resources();
22173     auto pool = mImpl->pool();
22174     stream->setHandleMapping(resources->unwrapMapping());
22175     VkDevice local_device;
22176     VkImage local_image;
22177     uint32_t local_colorBuffer;
22178     local_device = device;
22179     local_image = image;
22180     local_colorBuffer = colorBuffer;
22181     countingStream->rewind();
22182     {
22183         uint64_t cgen_var_1480;
22184         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1480, 1);
22185         countingStream->write((uint64_t*)&cgen_var_1480, 1 * 8);
22186         uint64_t cgen_var_1481;
22187         countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1481, 1);
22188         countingStream->write((uint64_t*)&cgen_var_1481, 1 * 8);
22189         countingStream->write((uint32_t*)&local_colorBuffer, sizeof(uint32_t));
22190     }
22191     uint32_t packetSize_vkRegisterImageColorBufferGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22192     countingStream->rewind();
22193     uint32_t opcode_vkRegisterImageColorBufferGOOGLE = OP_vkRegisterImageColorBufferGOOGLE;
22194     stream->write(&opcode_vkRegisterImageColorBufferGOOGLE, sizeof(uint32_t));
22195     stream->write(&packetSize_vkRegisterImageColorBufferGOOGLE, sizeof(uint32_t));
22196     uint64_t cgen_var_1482;
22197     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1482, 1);
22198     stream->write((uint64_t*)&cgen_var_1482, 1 * 8);
22199     uint64_t cgen_var_1483;
22200     stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1483, 1);
22201     stream->write((uint64_t*)&cgen_var_1483, 1 * 8);
22202     stream->write((uint32_t*)&local_colorBuffer, sizeof(uint32_t));
22203     AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE readParams");
22204     AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE returnUnmarshal");
22205     VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0;
22206     stream->read(&vkRegisterImageColorBufferGOOGLE_VkResult_return, sizeof(VkResult));
22207     countingStream->clearPool();
22208     stream->clearPool();
22209     pool->freeAll();
22210     mImpl->log("finish vkRegisterImageColorBufferGOOGLE");;
22211     return vkRegisterImageColorBufferGOOGLE_VkResult_return;
22212 }
22213 
vkRegisterBufferColorBufferGOOGLE(VkDevice device,VkBuffer buffer,uint32_t colorBuffer)22214 VkResult VkEncoder::vkRegisterBufferColorBufferGOOGLE(
22215     VkDevice device,
22216     VkBuffer buffer,
22217     uint32_t colorBuffer)
22218 {
22219     AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE encode");
22220     mImpl->log("start vkRegisterBufferColorBufferGOOGLE");
22221     auto stream = mImpl->stream();
22222     auto countingStream = mImpl->countingStream();
22223     auto resources = mImpl->resources();
22224     auto pool = mImpl->pool();
22225     stream->setHandleMapping(resources->unwrapMapping());
22226     VkDevice local_device;
22227     VkBuffer local_buffer;
22228     uint32_t local_colorBuffer;
22229     local_device = device;
22230     local_buffer = buffer;
22231     local_colorBuffer = colorBuffer;
22232     countingStream->rewind();
22233     {
22234         uint64_t cgen_var_1484;
22235         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1484, 1);
22236         countingStream->write((uint64_t*)&cgen_var_1484, 1 * 8);
22237         uint64_t cgen_var_1485;
22238         countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1485, 1);
22239         countingStream->write((uint64_t*)&cgen_var_1485, 1 * 8);
22240         countingStream->write((uint32_t*)&local_colorBuffer, sizeof(uint32_t));
22241     }
22242     uint32_t packetSize_vkRegisterBufferColorBufferGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22243     countingStream->rewind();
22244     uint32_t opcode_vkRegisterBufferColorBufferGOOGLE = OP_vkRegisterBufferColorBufferGOOGLE;
22245     stream->write(&opcode_vkRegisterBufferColorBufferGOOGLE, sizeof(uint32_t));
22246     stream->write(&packetSize_vkRegisterBufferColorBufferGOOGLE, sizeof(uint32_t));
22247     uint64_t cgen_var_1486;
22248     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1486, 1);
22249     stream->write((uint64_t*)&cgen_var_1486, 1 * 8);
22250     uint64_t cgen_var_1487;
22251     stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1487, 1);
22252     stream->write((uint64_t*)&cgen_var_1487, 1 * 8);
22253     stream->write((uint32_t*)&local_colorBuffer, sizeof(uint32_t));
22254     AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE readParams");
22255     AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE returnUnmarshal");
22256     VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0;
22257     stream->read(&vkRegisterBufferColorBufferGOOGLE_VkResult_return, sizeof(VkResult));
22258     countingStream->clearPool();
22259     stream->clearPool();
22260     pool->freeAll();
22261     mImpl->log("finish vkRegisterBufferColorBufferGOOGLE");;
22262     return vkRegisterBufferColorBufferGOOGLE_VkResult_return;
22263 }
22264 
22265 #endif
22266 #ifdef VK_GOOGLE_sized_descriptor_update_template
vkUpdateDescriptorSetWithTemplateSizedGOOGLE(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,uint32_t imageInfoCount,uint32_t bufferInfoCount,uint32_t bufferViewCount,const uint32_t * pImageInfoEntryIndices,const uint32_t * pBufferInfoEntryIndices,const uint32_t * pBufferViewEntryIndices,const VkDescriptorImageInfo * pImageInfos,const VkDescriptorBufferInfo * pBufferInfos,const VkBufferView * pBufferViews)22267 void VkEncoder::vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
22268     VkDevice device,
22269     VkDescriptorSet descriptorSet,
22270     VkDescriptorUpdateTemplate descriptorUpdateTemplate,
22271     uint32_t imageInfoCount,
22272     uint32_t bufferInfoCount,
22273     uint32_t bufferViewCount,
22274     const uint32_t* pImageInfoEntryIndices,
22275     const uint32_t* pBufferInfoEntryIndices,
22276     const uint32_t* pBufferViewEntryIndices,
22277     const VkDescriptorImageInfo* pImageInfos,
22278     const VkDescriptorBufferInfo* pBufferInfos,
22279     const VkBufferView* pBufferViews)
22280 {
22281     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE encode");
22282     mImpl->log("start vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
22283     auto stream = mImpl->stream();
22284     auto countingStream = mImpl->countingStream();
22285     auto resources = mImpl->resources();
22286     auto pool = mImpl->pool();
22287     stream->setHandleMapping(resources->unwrapMapping());
22288     VkDevice local_device;
22289     VkDescriptorSet local_descriptorSet;
22290     VkDescriptorUpdateTemplate local_descriptorUpdateTemplate;
22291     uint32_t local_imageInfoCount;
22292     uint32_t local_bufferInfoCount;
22293     uint32_t local_bufferViewCount;
22294     uint32_t* local_pImageInfoEntryIndices;
22295     uint32_t* local_pBufferInfoEntryIndices;
22296     uint32_t* local_pBufferViewEntryIndices;
22297     VkDescriptorImageInfo* local_pImageInfos;
22298     VkDescriptorBufferInfo* local_pBufferInfos;
22299     VkBufferView* local_pBufferViews;
22300     local_device = device;
22301     local_descriptorSet = descriptorSet;
22302     local_descriptorUpdateTemplate = descriptorUpdateTemplate;
22303     local_imageInfoCount = imageInfoCount;
22304     local_bufferInfoCount = bufferInfoCount;
22305     local_bufferViewCount = bufferViewCount;
22306     local_pImageInfoEntryIndices = nullptr;
22307     if (pImageInfoEntryIndices)
22308     {
22309         local_pImageInfoEntryIndices = (uint32_t*)pool->dupArray(pImageInfoEntryIndices, ((imageInfoCount)) * sizeof(const uint32_t));
22310     }
22311     local_pBufferInfoEntryIndices = nullptr;
22312     if (pBufferInfoEntryIndices)
22313     {
22314         local_pBufferInfoEntryIndices = (uint32_t*)pool->dupArray(pBufferInfoEntryIndices, ((bufferInfoCount)) * sizeof(const uint32_t));
22315     }
22316     local_pBufferViewEntryIndices = nullptr;
22317     if (pBufferViewEntryIndices)
22318     {
22319         local_pBufferViewEntryIndices = (uint32_t*)pool->dupArray(pBufferViewEntryIndices, ((bufferViewCount)) * sizeof(const uint32_t));
22320     }
22321     local_pImageInfos = nullptr;
22322     if (pImageInfos)
22323     {
22324         local_pImageInfos = (VkDescriptorImageInfo*)pool->alloc(((imageInfoCount)) * sizeof(const VkDescriptorImageInfo));
22325         for (uint32_t i = 0; i < (uint32_t)((imageInfoCount)); ++i)
22326         {
22327             deepcopy_VkDescriptorImageInfo(pool, pImageInfos + i, (VkDescriptorImageInfo*)(local_pImageInfos + i));
22328         }
22329     }
22330     local_pBufferInfos = nullptr;
22331     if (pBufferInfos)
22332     {
22333         local_pBufferInfos = (VkDescriptorBufferInfo*)pool->alloc(((bufferInfoCount)) * sizeof(const VkDescriptorBufferInfo));
22334         for (uint32_t i = 0; i < (uint32_t)((bufferInfoCount)); ++i)
22335         {
22336             deepcopy_VkDescriptorBufferInfo(pool, pBufferInfos + i, (VkDescriptorBufferInfo*)(local_pBufferInfos + i));
22337         }
22338     }
22339     local_pBufferViews = nullptr;
22340     if (pBufferViews)
22341     {
22342         local_pBufferViews = (VkBufferView*)pool->dupArray(pBufferViews, ((bufferViewCount)) * sizeof(const VkBufferView));
22343     }
22344     if (local_pImageInfos)
22345     {
22346         for (uint32_t i = 0; i < (uint32_t)((imageInfoCount)); ++i)
22347         {
22348             transform_tohost_VkDescriptorImageInfo(mImpl->resources(), (VkDescriptorImageInfo*)(local_pImageInfos + i));
22349         }
22350     }
22351     if (local_pBufferInfos)
22352     {
22353         for (uint32_t i = 0; i < (uint32_t)((bufferInfoCount)); ++i)
22354         {
22355             transform_tohost_VkDescriptorBufferInfo(mImpl->resources(), (VkDescriptorBufferInfo*)(local_pBufferInfos + i));
22356         }
22357     }
22358     countingStream->rewind();
22359     {
22360         uint64_t cgen_var_1488;
22361         countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1488, 1);
22362         countingStream->write((uint64_t*)&cgen_var_1488, 1 * 8);
22363         uint64_t cgen_var_1489;
22364         countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1489, 1);
22365         countingStream->write((uint64_t*)&cgen_var_1489, 1 * 8);
22366         uint64_t cgen_var_1490;
22367         countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1490, 1);
22368         countingStream->write((uint64_t*)&cgen_var_1490, 1 * 8);
22369         countingStream->write((uint32_t*)&local_imageInfoCount, sizeof(uint32_t));
22370         countingStream->write((uint32_t*)&local_bufferInfoCount, sizeof(uint32_t));
22371         countingStream->write((uint32_t*)&local_bufferViewCount, sizeof(uint32_t));
22372         // WARNING PTR CHECK
22373         uint64_t cgen_var_1491 = (uint64_t)(uintptr_t)local_pImageInfoEntryIndices;
22374         countingStream->putBe64(cgen_var_1491);
22375         if (local_pImageInfoEntryIndices)
22376         {
22377             countingStream->write((uint32_t*)local_pImageInfoEntryIndices, ((imageInfoCount)) * sizeof(uint32_t));
22378         }
22379         // WARNING PTR CHECK
22380         uint64_t cgen_var_1492 = (uint64_t)(uintptr_t)local_pBufferInfoEntryIndices;
22381         countingStream->putBe64(cgen_var_1492);
22382         if (local_pBufferInfoEntryIndices)
22383         {
22384             countingStream->write((uint32_t*)local_pBufferInfoEntryIndices, ((bufferInfoCount)) * sizeof(uint32_t));
22385         }
22386         // WARNING PTR CHECK
22387         uint64_t cgen_var_1493 = (uint64_t)(uintptr_t)local_pBufferViewEntryIndices;
22388         countingStream->putBe64(cgen_var_1493);
22389         if (local_pBufferViewEntryIndices)
22390         {
22391             countingStream->write((uint32_t*)local_pBufferViewEntryIndices, ((bufferViewCount)) * sizeof(uint32_t));
22392         }
22393         // WARNING PTR CHECK
22394         uint64_t cgen_var_1494 = (uint64_t)(uintptr_t)local_pImageInfos;
22395         countingStream->putBe64(cgen_var_1494);
22396         if (local_pImageInfos)
22397         {
22398             for (uint32_t i = 0; i < (uint32_t)((imageInfoCount)); ++i)
22399             {
22400                 marshal_VkDescriptorImageInfo(countingStream, (VkDescriptorImageInfo*)(local_pImageInfos + i));
22401             }
22402         }
22403         // WARNING PTR CHECK
22404         uint64_t cgen_var_1495 = (uint64_t)(uintptr_t)local_pBufferInfos;
22405         countingStream->putBe64(cgen_var_1495);
22406         if (local_pBufferInfos)
22407         {
22408             for (uint32_t i = 0; i < (uint32_t)((bufferInfoCount)); ++i)
22409             {
22410                 marshal_VkDescriptorBufferInfo(countingStream, (VkDescriptorBufferInfo*)(local_pBufferInfos + i));
22411             }
22412         }
22413         // WARNING PTR CHECK
22414         uint64_t cgen_var_1496 = (uint64_t)(uintptr_t)local_pBufferViews;
22415         countingStream->putBe64(cgen_var_1496);
22416         if (local_pBufferViews)
22417         {
22418             if (((bufferViewCount)))
22419             {
22420                 uint64_t* cgen_var_1497;
22421                 countingStream->alloc((void**)&cgen_var_1497, ((bufferViewCount)) * 8);
22422                 countingStream->handleMapping()->mapHandles_VkBufferView_u64(local_pBufferViews, cgen_var_1497, ((bufferViewCount)));
22423                 countingStream->write((uint64_t*)cgen_var_1497, ((bufferViewCount)) * 8);
22424             }
22425         }
22426     }
22427     uint32_t packetSize_vkUpdateDescriptorSetWithTemplateSizedGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22428     countingStream->rewind();
22429     uint32_t opcode_vkUpdateDescriptorSetWithTemplateSizedGOOGLE = OP_vkUpdateDescriptorSetWithTemplateSizedGOOGLE;
22430     stream->write(&opcode_vkUpdateDescriptorSetWithTemplateSizedGOOGLE, sizeof(uint32_t));
22431     stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateSizedGOOGLE, sizeof(uint32_t));
22432     uint64_t cgen_var_1498;
22433     stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1498, 1);
22434     stream->write((uint64_t*)&cgen_var_1498, 1 * 8);
22435     uint64_t cgen_var_1499;
22436     stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1499, 1);
22437     stream->write((uint64_t*)&cgen_var_1499, 1 * 8);
22438     uint64_t cgen_var_1500;
22439     stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1500, 1);
22440     stream->write((uint64_t*)&cgen_var_1500, 1 * 8);
22441     stream->write((uint32_t*)&local_imageInfoCount, sizeof(uint32_t));
22442     stream->write((uint32_t*)&local_bufferInfoCount, sizeof(uint32_t));
22443     stream->write((uint32_t*)&local_bufferViewCount, sizeof(uint32_t));
22444     // WARNING PTR CHECK
22445     uint64_t cgen_var_1501 = (uint64_t)(uintptr_t)local_pImageInfoEntryIndices;
22446     stream->putBe64(cgen_var_1501);
22447     if (local_pImageInfoEntryIndices)
22448     {
22449         stream->write((uint32_t*)local_pImageInfoEntryIndices, ((imageInfoCount)) * sizeof(uint32_t));
22450     }
22451     // WARNING PTR CHECK
22452     uint64_t cgen_var_1502 = (uint64_t)(uintptr_t)local_pBufferInfoEntryIndices;
22453     stream->putBe64(cgen_var_1502);
22454     if (local_pBufferInfoEntryIndices)
22455     {
22456         stream->write((uint32_t*)local_pBufferInfoEntryIndices, ((bufferInfoCount)) * sizeof(uint32_t));
22457     }
22458     // WARNING PTR CHECK
22459     uint64_t cgen_var_1503 = (uint64_t)(uintptr_t)local_pBufferViewEntryIndices;
22460     stream->putBe64(cgen_var_1503);
22461     if (local_pBufferViewEntryIndices)
22462     {
22463         stream->write((uint32_t*)local_pBufferViewEntryIndices, ((bufferViewCount)) * sizeof(uint32_t));
22464     }
22465     // WARNING PTR CHECK
22466     uint64_t cgen_var_1504 = (uint64_t)(uintptr_t)local_pImageInfos;
22467     stream->putBe64(cgen_var_1504);
22468     if (local_pImageInfos)
22469     {
22470         for (uint32_t i = 0; i < (uint32_t)((imageInfoCount)); ++i)
22471         {
22472             marshal_VkDescriptorImageInfo(stream, (VkDescriptorImageInfo*)(local_pImageInfos + i));
22473         }
22474     }
22475     // WARNING PTR CHECK
22476     uint64_t cgen_var_1505 = (uint64_t)(uintptr_t)local_pBufferInfos;
22477     stream->putBe64(cgen_var_1505);
22478     if (local_pBufferInfos)
22479     {
22480         for (uint32_t i = 0; i < (uint32_t)((bufferInfoCount)); ++i)
22481         {
22482             marshal_VkDescriptorBufferInfo(stream, (VkDescriptorBufferInfo*)(local_pBufferInfos + i));
22483         }
22484     }
22485     // WARNING PTR CHECK
22486     uint64_t cgen_var_1506 = (uint64_t)(uintptr_t)local_pBufferViews;
22487     stream->putBe64(cgen_var_1506);
22488     if (local_pBufferViews)
22489     {
22490         if (((bufferViewCount)))
22491         {
22492             uint64_t* cgen_var_1507;
22493             stream->alloc((void**)&cgen_var_1507, ((bufferViewCount)) * 8);
22494             stream->handleMapping()->mapHandles_VkBufferView_u64(local_pBufferViews, cgen_var_1507, ((bufferViewCount)));
22495             stream->write((uint64_t*)cgen_var_1507, ((bufferViewCount)) * 8);
22496         }
22497     }
22498     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE readParams");
22499     AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE returnUnmarshal");
22500     mImpl->log("finish vkUpdateDescriptorSetWithTemplateSizedGOOGLE");;
22501 }
22502 
22503 #endif
22504 #ifdef VK_GOOGLE_async_command_buffers
vkBeginCommandBufferAsyncGOOGLE(VkCommandBuffer commandBuffer,const VkCommandBufferBeginInfo * pBeginInfo)22505 void VkEncoder::vkBeginCommandBufferAsyncGOOGLE(
22506     VkCommandBuffer commandBuffer,
22507     const VkCommandBufferBeginInfo* pBeginInfo)
22508 {
22509     AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE encode");
22510     mImpl->log("start vkBeginCommandBufferAsyncGOOGLE");
22511     auto stream = mImpl->stream();
22512     auto countingStream = mImpl->countingStream();
22513     auto resources = mImpl->resources();
22514     auto pool = mImpl->pool();
22515     stream->setHandleMapping(resources->unwrapMapping());
22516     VkCommandBuffer local_commandBuffer;
22517     VkCommandBufferBeginInfo* local_pBeginInfo;
22518     local_commandBuffer = commandBuffer;
22519     local_pBeginInfo = nullptr;
22520     if (pBeginInfo)
22521     {
22522         local_pBeginInfo = (VkCommandBufferBeginInfo*)pool->alloc(sizeof(const VkCommandBufferBeginInfo));
22523         deepcopy_VkCommandBufferBeginInfo(pool, pBeginInfo, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
22524     }
22525     if (local_pBeginInfo)
22526     {
22527         transform_tohost_VkCommandBufferBeginInfo(mImpl->resources(), (VkCommandBufferBeginInfo*)(local_pBeginInfo));
22528     }
22529     countingStream->rewind();
22530     {
22531         uint64_t cgen_var_1508;
22532         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1508, 1);
22533         countingStream->write((uint64_t*)&cgen_var_1508, 1 * 8);
22534         marshal_VkCommandBufferBeginInfo(countingStream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
22535     }
22536     uint32_t packetSize_vkBeginCommandBufferAsyncGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22537     countingStream->rewind();
22538     uint32_t opcode_vkBeginCommandBufferAsyncGOOGLE = OP_vkBeginCommandBufferAsyncGOOGLE;
22539     stream->write(&opcode_vkBeginCommandBufferAsyncGOOGLE, sizeof(uint32_t));
22540     stream->write(&packetSize_vkBeginCommandBufferAsyncGOOGLE, sizeof(uint32_t));
22541     uint64_t cgen_var_1509;
22542     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1509, 1);
22543     stream->write((uint64_t*)&cgen_var_1509, 1 * 8);
22544     marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo));
22545     AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE readParams");
22546     AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE returnUnmarshal");
22547     mImpl->log("finish vkBeginCommandBufferAsyncGOOGLE");;
22548 }
22549 
vkEndCommandBufferAsyncGOOGLE(VkCommandBuffer commandBuffer)22550 void VkEncoder::vkEndCommandBufferAsyncGOOGLE(
22551     VkCommandBuffer commandBuffer)
22552 {
22553     AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE encode");
22554     mImpl->log("start vkEndCommandBufferAsyncGOOGLE");
22555     auto stream = mImpl->stream();
22556     auto countingStream = mImpl->countingStream();
22557     auto resources = mImpl->resources();
22558     auto pool = mImpl->pool();
22559     stream->setHandleMapping(resources->unwrapMapping());
22560     VkCommandBuffer local_commandBuffer;
22561     local_commandBuffer = commandBuffer;
22562     countingStream->rewind();
22563     {
22564         uint64_t cgen_var_1510;
22565         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1510, 1);
22566         countingStream->write((uint64_t*)&cgen_var_1510, 1 * 8);
22567     }
22568     uint32_t packetSize_vkEndCommandBufferAsyncGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22569     countingStream->rewind();
22570     uint32_t opcode_vkEndCommandBufferAsyncGOOGLE = OP_vkEndCommandBufferAsyncGOOGLE;
22571     stream->write(&opcode_vkEndCommandBufferAsyncGOOGLE, sizeof(uint32_t));
22572     stream->write(&packetSize_vkEndCommandBufferAsyncGOOGLE, sizeof(uint32_t));
22573     uint64_t cgen_var_1511;
22574     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1511, 1);
22575     stream->write((uint64_t*)&cgen_var_1511, 1 * 8);
22576     AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE readParams");
22577     AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE returnUnmarshal");
22578     mImpl->log("finish vkEndCommandBufferAsyncGOOGLE");;
22579 }
22580 
vkResetCommandBufferAsyncGOOGLE(VkCommandBuffer commandBuffer,VkCommandBufferResetFlags flags)22581 void VkEncoder::vkResetCommandBufferAsyncGOOGLE(
22582     VkCommandBuffer commandBuffer,
22583     VkCommandBufferResetFlags flags)
22584 {
22585     AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE encode");
22586     mImpl->log("start vkResetCommandBufferAsyncGOOGLE");
22587     auto stream = mImpl->stream();
22588     auto countingStream = mImpl->countingStream();
22589     auto resources = mImpl->resources();
22590     auto pool = mImpl->pool();
22591     stream->setHandleMapping(resources->unwrapMapping());
22592     VkCommandBuffer local_commandBuffer;
22593     VkCommandBufferResetFlags local_flags;
22594     local_commandBuffer = commandBuffer;
22595     local_flags = flags;
22596     countingStream->rewind();
22597     {
22598         uint64_t cgen_var_1512;
22599         countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1512, 1);
22600         countingStream->write((uint64_t*)&cgen_var_1512, 1 * 8);
22601         countingStream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
22602     }
22603     uint32_t packetSize_vkResetCommandBufferAsyncGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten();
22604     countingStream->rewind();
22605     uint32_t opcode_vkResetCommandBufferAsyncGOOGLE = OP_vkResetCommandBufferAsyncGOOGLE;
22606     stream->write(&opcode_vkResetCommandBufferAsyncGOOGLE, sizeof(uint32_t));
22607     stream->write(&packetSize_vkResetCommandBufferAsyncGOOGLE, sizeof(uint32_t));
22608     uint64_t cgen_var_1513;
22609     stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1513, 1);
22610     stream->write((uint64_t*)&cgen_var_1513, 1 * 8);
22611     stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags));
22612     AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE readParams");
22613     AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE returnUnmarshal");
22614     mImpl->log("finish vkResetCommandBufferAsyncGOOGLE");;
22615 }
22616 
22617 #endif
22618 
22619 } // namespace goldfish_vk
22620