|  | // Copyright (C) 2018 The Android Open Source Project | 
|  | // Copyright (C) 2018 Google Inc. | 
|  | // | 
|  | // Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | // you may not use this file except in compliance with the License. | 
|  | // You may obtain a copy of the License at | 
|  | // | 
|  | // http://www.apache.org/licenses/LICENSE-2.0 | 
|  | // | 
|  | // Unless required by applicable law or agreed to in writing, software | 
|  | // distributed under the License is distributed on an "AS IS" BASIS, | 
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | // See the License for the specific language governing permissions and | 
|  | // limitations under the License. | 
|  |  | 
|  | // Autogenerated module VkEncoder | 
|  | // (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 | 
|  | // Please do not modify directly; | 
|  | // re-run android/scripts/generate-vulkan-sources.sh, | 
|  | // or directly from Python by defining: | 
|  | // VULKAN_REGISTRY_XML_DIR : Directory containing genvk.py and vk.xml | 
|  | // CEREAL_OUTPUT_DIR: Where to put the generated sources. | 
|  | // python3 $VULKAN_REGISTRY_XML_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o $CEREAL_OUTPUT_DIR | 
|  |  | 
|  | #include "VkEncoder.h" | 
|  |  | 
|  |  | 
|  | #include "IOStream.h" | 
|  | #include "Resources.h" | 
|  | #include "ResourceTracker.h" | 
|  | #include "Validation.h" | 
|  | #include "VulkanStreamGuest.h" | 
|  |  | 
|  | #include "android/base/AlignedBuf.h" | 
|  | #include "android/base/Pool.h" | 
|  | #include "android/base/synchronization/AndroidLock.h" | 
|  |  | 
|  | #include <cutils/properties.h> | 
|  |  | 
|  | #include "goldfish_vk_marshaling_guest.h" | 
|  | #include "goldfish_vk_deepcopy_guest.h" | 
|  | #include "goldfish_vk_handlemap_guest.h" | 
|  | #include "goldfish_vk_private_defs.h" | 
|  | #include "goldfish_vk_transform_guest.h" | 
|  |  | 
|  | #include <unordered_map> | 
|  |  | 
|  |  | 
|  |  | 
|  | namespace goldfish_vk { | 
|  |  | 
|  |  | 
|  |  | 
|  | using namespace goldfish_vk; | 
|  |  | 
|  | using android::aligned_buf_alloc; | 
|  | using android::aligned_buf_free; | 
|  | using android::base::guest::AutoLock; | 
|  | using android::base::guest::Lock; | 
|  | using android::base::Pool; | 
|  |  | 
|  | class VkEncoder::Impl { | 
|  | public: | 
|  | Impl(IOStream* stream) : m_stream(stream), m_logEncodes(false) { | 
|  | const char* emuVkLogEncodesPropName = "qemu.vk.log"; | 
|  | char encodeProp[PROPERTY_VALUE_MAX]; | 
|  | if (property_get(emuVkLogEncodesPropName, encodeProp, nullptr) > 0) { | 
|  | m_logEncodes = atoi(encodeProp) > 0; | 
|  | } | 
|  | } | 
|  |  | 
|  | ~Impl() { | 
|  | for (auto it : mCleanupCallbacks) { | 
|  | fprintf(stderr, "%s: run cleanup callback for %p\n", __func__, it.first); | 
|  | it.second(); | 
|  | } | 
|  | } | 
|  |  | 
|  | VulkanCountingStream* countingStream() { return &m_countingStream; } | 
|  | VulkanStreamGuest* stream() { return &m_stream; } | 
|  | Pool* pool() { return &m_pool; } | 
|  | ResourceTracker* resources() { return ResourceTracker::get(); } | 
|  | Validation* validation() { return &m_validation; } | 
|  |  | 
|  | void log(const char* text) { | 
|  | if (!m_logEncodes) return; | 
|  | ALOGD("encoder log: %s", text); | 
|  | } | 
|  |  | 
|  | void flush() { | 
|  | AutoLock encoderLock(lock); | 
|  | m_stream.flush(); | 
|  | } | 
|  |  | 
|  | // Assume the lock for the current encoder is held. | 
|  | void registerCleanupCallback(void* handle, VkEncoder::CleanupCallback cb) { | 
|  | if (mCleanupCallbacks.end() == mCleanupCallbacks.find(handle)) { | 
|  | mCleanupCallbacks[handle] = cb; | 
|  | } else { | 
|  | return; | 
|  | } | 
|  | } | 
|  |  | 
|  | void unregisterCleanupCallback(void* handle) { | 
|  | mCleanupCallbacks.erase(handle); | 
|  | } | 
|  |  | 
|  | Lock lock; | 
|  |  | 
|  | private: | 
|  | VulkanCountingStream m_countingStream; | 
|  | VulkanStreamGuest m_stream; | 
|  | Pool m_pool { 8, 4096, 64 }; | 
|  |  | 
|  | Validation m_validation; | 
|  | bool m_logEncodes; | 
|  |  | 
|  | std::unordered_map<void*, VkEncoder::CleanupCallback> mCleanupCallbacks; | 
|  | }; | 
|  |  | 
|  | VkEncoder::VkEncoder(IOStream *stream) : | 
|  | mImpl(new VkEncoder::Impl(stream)) { } | 
|  |  | 
|  | void VkEncoder::flush() { | 
|  | mImpl->flush(); | 
|  | } | 
|  |  | 
|  | void VkEncoder::registerCleanupCallback(void* handle, VkEncoder::CleanupCallback cb) { | 
|  | mImpl->registerCleanupCallback(handle, cb); | 
|  | } | 
|  |  | 
|  | void VkEncoder::unregisterCleanupCallback(void* handle) { | 
|  | mImpl->unregisterCleanupCallback(handle); | 
|  | } | 
|  |  | 
|  | #define VALIDATE_RET(retType, success, validate) \ | 
|  | retType goldfish_vk_validateResult = validate; \ | 
|  | if (goldfish_vk_validateResult != success) return goldfish_vk_validateResult; \ | 
|  |  | 
|  | #define VALIDATE_VOID(validate) \ | 
|  | VkResult goldfish_vk_validateResult = validate; \ | 
|  | if (goldfish_vk_validateResult != VK_SUCCESS) return; \ | 
|  |  | 
|  | #ifdef VK_VERSION_1_0 | 
|  | VkResult VkEncoder::vkCreateInstance( | 
|  | const VkInstanceCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkInstance* pInstance) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateInstance encode"); | 
|  | mImpl->log("start vkCreateInstance"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstanceCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkInstanceCreateInfo*)pool->alloc(sizeof(const VkInstanceCreateInfo)); | 
|  | deepcopy_VkInstanceCreateInfo(pool, pCreateInfo, (VkInstanceCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkInstanceCreateInfo(mImpl->resources(), (VkInstanceCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | marshal_VkInstanceCreateInfo(countingStream, (VkInstanceCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_0 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_0); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_1; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_1, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateInstance = OP_vkCreateInstance; | 
|  | stream->write(&opcode_vkCreateInstance, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateInstance, sizeof(uint32_t)); | 
|  | marshal_VkInstanceCreateInfo(stream, (VkInstanceCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_2); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_3; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(pInstance, &cgen_var_3, 1); | 
|  | stream->write((uint64_t*)&cgen_var_3, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateInstance readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_4; | 
|  | stream->read((uint64_t*)&cgen_var_4, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkInstance(&cgen_var_4, (VkInstance*)pInstance, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateInstance returnUnmarshal"); | 
|  | VkResult vkCreateInstance_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateInstance_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | encoderLock.unlock(); | 
|  | mImpl->resources()->on_vkCreateInstance(this, vkCreateInstance_VkResult_return, pCreateInfo, pAllocator, pInstance); | 
|  | encoderLock.lock(); | 
|  | mImpl->log("finish vkCreateInstance");; | 
|  | return vkCreateInstance_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyInstance( | 
|  | VkInstance instance, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyInstance encode"); | 
|  | mImpl->log("start vkDestroyInstance"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_instance = instance; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_5; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_5, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_5, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_6 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_6); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyInstance = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyInstance = OP_vkDestroyInstance; | 
|  | stream->write(&opcode_vkDestroyInstance, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyInstance, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_7; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_7, 1); | 
|  | stream->write((uint64_t*)&cgen_var_7, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_8 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_8); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyInstance readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyInstance returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkInstance((VkInstance*)&instance); | 
|  | mImpl->log("finish vkDestroyInstance");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkEnumeratePhysicalDevices( | 
|  | VkInstance instance, | 
|  | uint32_t* pPhysicalDeviceCount, | 
|  | VkPhysicalDevice* pPhysicalDevices) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices encode"); | 
|  | mImpl->log("start vkEnumeratePhysicalDevices"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | local_instance = instance; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_9; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_9, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_9, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_10 = (uint64_t)(uintptr_t)pPhysicalDeviceCount; | 
|  | countingStream->putBe64(cgen_var_10); | 
|  | if (pPhysicalDeviceCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_11 = (uint64_t)(uintptr_t)pPhysicalDevices; | 
|  | countingStream->putBe64(cgen_var_11); | 
|  | if (pPhysicalDevices) | 
|  | { | 
|  | if ((*(pPhysicalDeviceCount))) | 
|  | { | 
|  | uint64_t* cgen_var_12; | 
|  | countingStream->alloc((void**)&cgen_var_12, (*(pPhysicalDeviceCount)) * 8); | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_12, (*(pPhysicalDeviceCount))); | 
|  | countingStream->write((uint64_t*)cgen_var_12, (*(pPhysicalDeviceCount)) * 8); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkEnumeratePhysicalDevices = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkEnumeratePhysicalDevices = OP_vkEnumeratePhysicalDevices; | 
|  | stream->write(&opcode_vkEnumeratePhysicalDevices, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkEnumeratePhysicalDevices, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_13; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_13, 1); | 
|  | stream->write((uint64_t*)&cgen_var_13, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_14 = (uint64_t)(uintptr_t)pPhysicalDeviceCount; | 
|  | stream->putBe64(cgen_var_14); | 
|  | if (pPhysicalDeviceCount) | 
|  | { | 
|  | stream->write((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_15 = (uint64_t)(uintptr_t)pPhysicalDevices; | 
|  | stream->putBe64(cgen_var_15); | 
|  | if (pPhysicalDevices) | 
|  | { | 
|  | if ((*(pPhysicalDeviceCount))) | 
|  | { | 
|  | uint64_t* cgen_var_16; | 
|  | stream->alloc((void**)&cgen_var_16, (*(pPhysicalDeviceCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(pPhysicalDevices, cgen_var_16, (*(pPhysicalDeviceCount))); | 
|  | stream->write((uint64_t*)cgen_var_16, (*(pPhysicalDeviceCount)) * 8); | 
|  | } | 
|  | } | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pPhysicalDeviceCount; | 
|  | check_pPhysicalDeviceCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pPhysicalDeviceCount) | 
|  | { | 
|  | if (!(check_pPhysicalDeviceCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPhysicalDeviceCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t)); | 
|  | } | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | // WARNING PTR CHECK | 
|  | VkPhysicalDevice* check_pPhysicalDevices; | 
|  | check_pPhysicalDevices = (VkPhysicalDevice*)(uintptr_t)stream->getBe64(); | 
|  | if (pPhysicalDevices) | 
|  | { | 
|  | if (!(check_pPhysicalDevices)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPhysicalDevices inconsistent between guest and host\n"); | 
|  | } | 
|  | if ((*(pPhysicalDeviceCount))) | 
|  | { | 
|  | uint64_t* cgen_var_19; | 
|  | stream->alloc((void**)&cgen_var_19, (*(pPhysicalDeviceCount)) * 8); | 
|  | stream->read((uint64_t*)cgen_var_19, (*(pPhysicalDeviceCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkPhysicalDevice(cgen_var_19, (VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount))); | 
|  | } | 
|  | } | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkEnumeratePhysicalDevices returnUnmarshal"); | 
|  | VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkEnumeratePhysicalDevices_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkEnumeratePhysicalDevices");; | 
|  | return vkEnumeratePhysicalDevices_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceFeatures( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkPhysicalDeviceFeatures* pFeatures) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceFeatures"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | local_physicalDevice = physicalDevice; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_20; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_20, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_20, 1 * 8); | 
|  | marshal_VkPhysicalDeviceFeatures(countingStream, (VkPhysicalDeviceFeatures*)(pFeatures)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceFeatures = OP_vkGetPhysicalDeviceFeatures; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceFeatures, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceFeatures, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_21; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_21, 1); | 
|  | stream->write((uint64_t*)&cgen_var_21, 1 * 8); | 
|  | marshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures readParams"); | 
|  | unmarshal_VkPhysicalDeviceFeatures(stream, (VkPhysicalDeviceFeatures*)(pFeatures)); | 
|  | if (pFeatures) | 
|  | { | 
|  | transform_fromhost_VkPhysicalDeviceFeatures(mImpl->resources(), (VkPhysicalDeviceFeatures*)(pFeatures)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceFeatures");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceFormatProperties( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkFormat format, | 
|  | VkFormatProperties* pFormatProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceFormatProperties"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkFormat local_format; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_format = format; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_22; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_22, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_22, 1 * 8); | 
|  | countingStream->write((VkFormat*)&local_format, sizeof(VkFormat)); | 
|  | marshal_VkFormatProperties(countingStream, (VkFormatProperties*)(pFormatProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceFormatProperties = OP_vkGetPhysicalDeviceFormatProperties; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_23; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_23, 1); | 
|  | stream->write((uint64_t*)&cgen_var_23, 1 * 8); | 
|  | stream->write((VkFormat*)&local_format, sizeof(VkFormat)); | 
|  | marshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties readParams"); | 
|  | unmarshal_VkFormatProperties(stream, (VkFormatProperties*)(pFormatProperties)); | 
|  | if (pFormatProperties) | 
|  | { | 
|  | transform_fromhost_VkFormatProperties(mImpl->resources(), (VkFormatProperties*)(pFormatProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceFormatProperties");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkFormat format, | 
|  | VkImageType type, | 
|  | VkImageTiling tiling, | 
|  | VkImageUsageFlags usage, | 
|  | VkImageCreateFlags flags, | 
|  | VkImageFormatProperties* pImageFormatProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceImageFormatProperties"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkFormat local_format; | 
|  | VkImageType local_type; | 
|  | VkImageTiling local_tiling; | 
|  | VkImageUsageFlags local_usage; | 
|  | VkImageCreateFlags local_flags; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_format = format; | 
|  | local_type = type; | 
|  | local_tiling = tiling; | 
|  | local_usage = usage; | 
|  | local_flags = flags; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_24; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_24, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_24, 1 * 8); | 
|  | countingStream->write((VkFormat*)&local_format, sizeof(VkFormat)); | 
|  | countingStream->write((VkImageType*)&local_type, sizeof(VkImageType)); | 
|  | countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling)); | 
|  | countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags)); | 
|  | countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags)); | 
|  | marshal_VkImageFormatProperties(countingStream, (VkImageFormatProperties*)(pImageFormatProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties = OP_vkGetPhysicalDeviceImageFormatProperties; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_25; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_25, 1); | 
|  | stream->write((uint64_t*)&cgen_var_25, 1 * 8); | 
|  | stream->write((VkFormat*)&local_format, sizeof(VkFormat)); | 
|  | stream->write((VkImageType*)&local_type, sizeof(VkImageType)); | 
|  | stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling)); | 
|  | stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags)); | 
|  | stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags)); | 
|  | marshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties readParams"); | 
|  | unmarshal_VkImageFormatProperties(stream, (VkImageFormatProperties*)(pImageFormatProperties)); | 
|  | if (pImageFormatProperties) | 
|  | { | 
|  | transform_fromhost_VkImageFormatProperties(mImpl->resources(), (VkImageFormatProperties*)(pImageFormatProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties returnUnmarshal"); | 
|  | VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetPhysicalDeviceImageFormatProperties_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceImageFormatProperties");; | 
|  | return vkGetPhysicalDeviceImageFormatProperties_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceProperties( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkPhysicalDeviceProperties* pProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceProperties"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | local_physicalDevice = physicalDevice; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_26; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_26, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_26, 1 * 8); | 
|  | marshal_VkPhysicalDeviceProperties(countingStream, (VkPhysicalDeviceProperties*)(pProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceProperties = OP_vkGetPhysicalDeviceProperties; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceProperties, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceProperties, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_27; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_27, 1); | 
|  | stream->write((uint64_t*)&cgen_var_27, 1 * 8); | 
|  | marshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties readParams"); | 
|  | unmarshal_VkPhysicalDeviceProperties(stream, (VkPhysicalDeviceProperties*)(pProperties)); | 
|  | if (pProperties) | 
|  | { | 
|  | transform_fromhost_VkPhysicalDeviceProperties(mImpl->resources(), (VkPhysicalDeviceProperties*)(pProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceProperties");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | uint32_t* pQueueFamilyPropertyCount, | 
|  | VkQueueFamilyProperties* pQueueFamilyProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | local_physicalDevice = physicalDevice; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_28; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_28, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_28, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_29 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount; | 
|  | countingStream->putBe64(cgen_var_29); | 
|  | if (pQueueFamilyPropertyCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_30 = (uint64_t)(uintptr_t)pQueueFamilyProperties; | 
|  | countingStream->putBe64(cgen_var_30); | 
|  | if (pQueueFamilyProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkQueueFamilyProperties(countingStream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties = OP_vkGetPhysicalDeviceQueueFamilyProperties; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_31; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_31, 1); | 
|  | stream->write((uint64_t*)&cgen_var_31, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_32 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount; | 
|  | stream->putBe64(cgen_var_32); | 
|  | if (pQueueFamilyPropertyCount) | 
|  | { | 
|  | stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_33 = (uint64_t)(uintptr_t)pQueueFamilyProperties; | 
|  | stream->putBe64(cgen_var_33); | 
|  | if (pQueueFamilyProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pQueueFamilyPropertyCount; | 
|  | check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pQueueFamilyPropertyCount) | 
|  | { | 
|  | if (!(check_pQueueFamilyPropertyCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkQueueFamilyProperties* check_pQueueFamilyProperties; | 
|  | check_pQueueFamilyProperties = (VkQueueFamilyProperties*)(uintptr_t)stream->getBe64(); | 
|  | if (pQueueFamilyProperties) | 
|  | { | 
|  | if (!(check_pQueueFamilyProperties)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i) | 
|  | { | 
|  | unmarshal_VkQueueFamilyProperties(stream, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i)); | 
|  | } | 
|  | } | 
|  | if (pQueueFamilyProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkQueueFamilyProperties(mImpl->resources(), (VkQueueFamilyProperties*)(pQueueFamilyProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceQueueFamilyProperties");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceMemoryProperties( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkPhysicalDeviceMemoryProperties* pMemoryProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceMemoryProperties"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | local_physicalDevice = physicalDevice; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_36; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_36, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_36, 1 * 8); | 
|  | marshal_VkPhysicalDeviceMemoryProperties(countingStream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceMemoryProperties = OP_vkGetPhysicalDeviceMemoryProperties; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_37; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_37, 1); | 
|  | stream->write((uint64_t*)&cgen_var_37, 1 * 8); | 
|  | marshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties readParams"); | 
|  | unmarshal_VkPhysicalDeviceMemoryProperties(stream, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties)); | 
|  | if (pMemoryProperties) | 
|  | { | 
|  | transform_fromhost_VkPhysicalDeviceMemoryProperties(mImpl->resources(), (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties returnUnmarshal"); | 
|  | encoderLock.unlock(); | 
|  | mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties(this, physicalDevice, pMemoryProperties); | 
|  | encoderLock.lock(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceMemoryProperties");; | 
|  | } | 
|  |  | 
|  | PFN_vkVoidFunction VkEncoder::vkGetInstanceProcAddr( | 
|  | VkInstance instance, | 
|  | const char* pName) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetInstanceProcAddr encode"); | 
|  | mImpl->log("start vkGetInstanceProcAddr"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | char* local_pName; | 
|  | local_instance = instance; | 
|  | local_pName = nullptr; | 
|  | if (pName) | 
|  | { | 
|  | local_pName = pool->strDup(pName); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_38; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_38, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_38, 1 * 8); | 
|  | countingStream->putString(local_pName); | 
|  | } | 
|  | uint32_t packetSize_vkGetInstanceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetInstanceProcAddr = OP_vkGetInstanceProcAddr; | 
|  | stream->write(&opcode_vkGetInstanceProcAddr, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetInstanceProcAddr, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_39; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_39, 1); | 
|  | stream->write((uint64_t*)&cgen_var_39, 1 * 8); | 
|  | stream->putString(local_pName); | 
|  | AEMU_SCOPED_TRACE("vkGetInstanceProcAddr readParams"); | 
|  | AEMU_SCOPED_TRACE("vkGetInstanceProcAddr returnUnmarshal"); | 
|  | PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0; | 
|  | stream->read(&vkGetInstanceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetInstanceProcAddr");; | 
|  | return vkGetInstanceProcAddr_PFN_vkVoidFunction_return; | 
|  | } | 
|  |  | 
|  | PFN_vkVoidFunction VkEncoder::vkGetDeviceProcAddr( | 
|  | VkDevice device, | 
|  | const char* pName) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceProcAddr encode"); | 
|  | mImpl->log("start vkGetDeviceProcAddr"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | char* local_pName; | 
|  | local_device = device; | 
|  | local_pName = nullptr; | 
|  | if (pName) | 
|  | { | 
|  | local_pName = pool->strDup(pName); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_40; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_40, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_40, 1 * 8); | 
|  | countingStream->putString(local_pName); | 
|  | } | 
|  | uint32_t packetSize_vkGetDeviceProcAddr = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetDeviceProcAddr = OP_vkGetDeviceProcAddr; | 
|  | stream->write(&opcode_vkGetDeviceProcAddr, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetDeviceProcAddr, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_41; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_41, 1); | 
|  | stream->write((uint64_t*)&cgen_var_41, 1 * 8); | 
|  | stream->putString(local_pName); | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceProcAddr readParams"); | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceProcAddr returnUnmarshal"); | 
|  | PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0; | 
|  | stream->read(&vkGetDeviceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetDeviceProcAddr");; | 
|  | return vkGetDeviceProcAddr_PFN_vkVoidFunction_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateDevice( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | const VkDeviceCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkDevice* pDevice) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateDevice encode"); | 
|  | mImpl->log("start vkCreateDevice"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkDeviceCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkDeviceCreateInfo*)pool->alloc(sizeof(const VkDeviceCreateInfo)); | 
|  | deepcopy_VkDeviceCreateInfo(pool, pCreateInfo, (VkDeviceCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkDeviceCreateInfo(mImpl->resources(), (VkDeviceCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_42; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_42, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_42, 1 * 8); | 
|  | marshal_VkDeviceCreateInfo(countingStream, (VkDeviceCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_43 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_43); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_44; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_44, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_44, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateDevice = OP_vkCreateDevice; | 
|  | stream->write(&opcode_vkCreateDevice, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateDevice, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_45; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_45, 1); | 
|  | stream->write((uint64_t*)&cgen_var_45, 1 * 8); | 
|  | marshal_VkDeviceCreateInfo(stream, (VkDeviceCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_46 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_46); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_47; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(pDevice, &cgen_var_47, 1); | 
|  | stream->write((uint64_t*)&cgen_var_47, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateDevice readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_48; | 
|  | stream->read((uint64_t*)&cgen_var_48, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkDevice(&cgen_var_48, (VkDevice*)pDevice, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateDevice returnUnmarshal"); | 
|  | VkResult vkCreateDevice_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateDevice_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | encoderLock.unlock(); | 
|  | mImpl->resources()->on_vkCreateDevice(this, vkCreateDevice_VkResult_return, physicalDevice, pCreateInfo, pAllocator, pDevice); | 
|  | encoderLock.lock(); | 
|  | mImpl->log("finish vkCreateDevice");; | 
|  | return vkCreateDevice_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyDevice( | 
|  | VkDevice device, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyDevice encode"); | 
|  | mImpl->log("start vkDestroyDevice"); | 
|  | encoderLock.unlock(); | 
|  | mImpl->resources()->on_vkDestroyDevice_pre(this, device, pAllocator); | 
|  | encoderLock.lock(); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_49; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_49, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_49, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_50 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_50); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyDevice = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyDevice = OP_vkDestroyDevice; | 
|  | stream->write(&opcode_vkDestroyDevice, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyDevice, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_51; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_51, 1); | 
|  | stream->write((uint64_t*)&cgen_var_51, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_52 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_52); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyDevice readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyDevice returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkDevice((VkDevice*)&device); | 
|  | stream->flush(); | 
|  | mImpl->log("finish vkDestroyDevice");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkEnumerateInstanceExtensionProperties( | 
|  | const char* pLayerName, | 
|  | uint32_t* pPropertyCount, | 
|  | VkExtensionProperties* pProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties encode"); | 
|  | mImpl->log("start vkEnumerateInstanceExtensionProperties"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | char* local_pLayerName; | 
|  | local_pLayerName = nullptr; | 
|  | if (pLayerName) | 
|  | { | 
|  | local_pLayerName = pool->strDup(pLayerName); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | if (countingStream->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT) | 
|  | { | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_53 = (uint64_t)(uintptr_t)local_pLayerName; | 
|  | countingStream->putBe64(cgen_var_53); | 
|  | if (local_pLayerName) | 
|  | { | 
|  | countingStream->putString(local_pLayerName); | 
|  | } | 
|  | } | 
|  | else | 
|  | { | 
|  | countingStream->putString(local_pLayerName); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_54 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | countingStream->putBe64(cgen_var_54); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_55 = (uint64_t)(uintptr_t)pProperties; | 
|  | countingStream->putBe64(cgen_var_55); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkExtensionProperties(countingStream, (VkExtensionProperties*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkEnumerateInstanceExtensionProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkEnumerateInstanceExtensionProperties = OP_vkEnumerateInstanceExtensionProperties; | 
|  | stream->write(&opcode_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t)); | 
|  | if (stream->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT) | 
|  | { | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_56 = (uint64_t)(uintptr_t)local_pLayerName; | 
|  | stream->putBe64(cgen_var_56); | 
|  | if (local_pLayerName) | 
|  | { | 
|  | stream->putString(local_pLayerName); | 
|  | } | 
|  | } | 
|  | else | 
|  | { | 
|  | stream->putString(local_pLayerName); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_57 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | stream->putBe64(cgen_var_57); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_58 = (uint64_t)(uintptr_t)pProperties; | 
|  | stream->putBe64(cgen_var_58); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pPropertyCount; | 
|  | check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | if (!(check_pPropertyCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkExtensionProperties* check_pProperties; | 
|  | check_pProperties = (VkExtensionProperties*)(uintptr_t)stream->getBe64(); | 
|  | if (pProperties) | 
|  | { | 
|  | if (!(check_pProperties)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | unmarshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkExtensionProperties(mImpl->resources(), (VkExtensionProperties*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkEnumerateInstanceExtensionProperties returnUnmarshal"); | 
|  | VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkEnumerateInstanceExtensionProperties_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkEnumerateInstanceExtensionProperties");; | 
|  | return vkEnumerateInstanceExtensionProperties_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkEnumerateDeviceExtensionProperties( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | const char* pLayerName, | 
|  | uint32_t* pPropertyCount, | 
|  | VkExtensionProperties* pProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties encode"); | 
|  | mImpl->log("start vkEnumerateDeviceExtensionProperties"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | char* local_pLayerName; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_pLayerName = nullptr; | 
|  | if (pLayerName) | 
|  | { | 
|  | local_pLayerName = pool->strDup(pLayerName); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_61; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_61, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_61, 1 * 8); | 
|  | if (countingStream->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT) | 
|  | { | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_62 = (uint64_t)(uintptr_t)local_pLayerName; | 
|  | countingStream->putBe64(cgen_var_62); | 
|  | if (local_pLayerName) | 
|  | { | 
|  | countingStream->putString(local_pLayerName); | 
|  | } | 
|  | } | 
|  | else | 
|  | { | 
|  | countingStream->putString(local_pLayerName); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_63 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | countingStream->putBe64(cgen_var_63); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_64 = (uint64_t)(uintptr_t)pProperties; | 
|  | countingStream->putBe64(cgen_var_64); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkExtensionProperties(countingStream, (VkExtensionProperties*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkEnumerateDeviceExtensionProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkEnumerateDeviceExtensionProperties = OP_vkEnumerateDeviceExtensionProperties; | 
|  | stream->write(&opcode_vkEnumerateDeviceExtensionProperties, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkEnumerateDeviceExtensionProperties, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_65; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_65, 1); | 
|  | stream->write((uint64_t*)&cgen_var_65, 1 * 8); | 
|  | if (stream->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT) | 
|  | { | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_66 = (uint64_t)(uintptr_t)local_pLayerName; | 
|  | stream->putBe64(cgen_var_66); | 
|  | if (local_pLayerName) | 
|  | { | 
|  | stream->putString(local_pLayerName); | 
|  | } | 
|  | } | 
|  | else | 
|  | { | 
|  | stream->putString(local_pLayerName); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_67 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | stream->putBe64(cgen_var_67); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_68 = (uint64_t)(uintptr_t)pProperties; | 
|  | stream->putBe64(cgen_var_68); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pPropertyCount; | 
|  | check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | if (!(check_pPropertyCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkExtensionProperties* check_pProperties; | 
|  | check_pProperties = (VkExtensionProperties*)(uintptr_t)stream->getBe64(); | 
|  | if (pProperties) | 
|  | { | 
|  | if (!(check_pProperties)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | unmarshal_VkExtensionProperties(stream, (VkExtensionProperties*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkExtensionProperties(mImpl->resources(), (VkExtensionProperties*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkEnumerateDeviceExtensionProperties returnUnmarshal"); | 
|  | VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkEnumerateDeviceExtensionProperties_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkEnumerateDeviceExtensionProperties");; | 
|  | return vkEnumerateDeviceExtensionProperties_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkEnumerateInstanceLayerProperties( | 
|  | uint32_t* pPropertyCount, | 
|  | VkLayerProperties* pProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties encode"); | 
|  | mImpl->log("start vkEnumerateInstanceLayerProperties"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | countingStream->rewind(); | 
|  | { | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_71 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | countingStream->putBe64(cgen_var_71); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_72 = (uint64_t)(uintptr_t)pProperties; | 
|  | countingStream->putBe64(cgen_var_72); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkEnumerateInstanceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkEnumerateInstanceLayerProperties = OP_vkEnumerateInstanceLayerProperties; | 
|  | stream->write(&opcode_vkEnumerateInstanceLayerProperties, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkEnumerateInstanceLayerProperties, sizeof(uint32_t)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_73 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | stream->putBe64(cgen_var_73); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_74 = (uint64_t)(uintptr_t)pProperties; | 
|  | stream->putBe64(cgen_var_74); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pPropertyCount; | 
|  | check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | if (!(check_pPropertyCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkLayerProperties* check_pProperties; | 
|  | check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64(); | 
|  | if (pProperties) | 
|  | { | 
|  | if (!(check_pProperties)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkLayerProperties(mImpl->resources(), (VkLayerProperties*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkEnumerateInstanceLayerProperties returnUnmarshal"); | 
|  | VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkEnumerateInstanceLayerProperties");; | 
|  | return vkEnumerateInstanceLayerProperties_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkEnumerateDeviceLayerProperties( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | uint32_t* pPropertyCount, | 
|  | VkLayerProperties* pProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties encode"); | 
|  | mImpl->log("start vkEnumerateDeviceLayerProperties"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | local_physicalDevice = physicalDevice; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_77; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_77, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_77, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_78 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | countingStream->putBe64(cgen_var_78); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_79 = (uint64_t)(uintptr_t)pProperties; | 
|  | countingStream->putBe64(cgen_var_79); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkLayerProperties(countingStream, (VkLayerProperties*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkEnumerateDeviceLayerProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkEnumerateDeviceLayerProperties = OP_vkEnumerateDeviceLayerProperties; | 
|  | stream->write(&opcode_vkEnumerateDeviceLayerProperties, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkEnumerateDeviceLayerProperties, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_80; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_80, 1); | 
|  | stream->write((uint64_t*)&cgen_var_80, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_81 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | stream->putBe64(cgen_var_81); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_82 = (uint64_t)(uintptr_t)pProperties; | 
|  | stream->putBe64(cgen_var_82); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pPropertyCount; | 
|  | check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | if (!(check_pPropertyCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkLayerProperties* check_pProperties; | 
|  | check_pProperties = (VkLayerProperties*)(uintptr_t)stream->getBe64(); | 
|  | if (pProperties) | 
|  | { | 
|  | if (!(check_pProperties)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | unmarshal_VkLayerProperties(stream, (VkLayerProperties*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkLayerProperties(mImpl->resources(), (VkLayerProperties*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkEnumerateDeviceLayerProperties returnUnmarshal"); | 
|  | VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkEnumerateDeviceLayerProperties");; | 
|  | return vkEnumerateDeviceLayerProperties_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetDeviceQueue( | 
|  | VkDevice device, | 
|  | uint32_t queueFamilyIndex, | 
|  | uint32_t queueIndex, | 
|  | VkQueue* pQueue) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceQueue encode"); | 
|  | mImpl->log("start vkGetDeviceQueue"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | uint32_t local_queueFamilyIndex; | 
|  | uint32_t local_queueIndex; | 
|  | local_device = device; | 
|  | local_queueFamilyIndex = queueFamilyIndex; | 
|  | local_queueIndex = queueIndex; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_85; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_85, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_85, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_86; | 
|  | countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_86, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_86, 8); | 
|  | } | 
|  | uint32_t packetSize_vkGetDeviceQueue = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetDeviceQueue = OP_vkGetDeviceQueue; | 
|  | stream->write(&opcode_vkGetDeviceQueue, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetDeviceQueue, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_87; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_87, 1); | 
|  | stream->write((uint64_t*)&cgen_var_87, 1 * 8); | 
|  | stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_queueIndex, sizeof(uint32_t)); | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_88; | 
|  | stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_88, 1); | 
|  | stream->write((uint64_t*)&cgen_var_88, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceQueue readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_89; | 
|  | stream->read((uint64_t*)&cgen_var_89, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_89, (VkQueue*)pQueue, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceQueue returnUnmarshal"); | 
|  | mImpl->log("finish vkGetDeviceQueue");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkQueueSubmit( | 
|  | VkQueue queue, | 
|  | uint32_t submitCount, | 
|  | const VkSubmitInfo* pSubmits, | 
|  | VkFence fence) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkQueueSubmit encode"); | 
|  | mImpl->log("start vkQueueSubmit"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkQueue local_queue; | 
|  | uint32_t local_submitCount; | 
|  | VkSubmitInfo* local_pSubmits; | 
|  | VkFence local_fence; | 
|  | local_queue = queue; | 
|  | local_submitCount = submitCount; | 
|  | local_pSubmits = nullptr; | 
|  | if (pSubmits) | 
|  | { | 
|  | local_pSubmits = (VkSubmitInfo*)pool->alloc(((submitCount)) * sizeof(const VkSubmitInfo)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i) | 
|  | { | 
|  | deepcopy_VkSubmitInfo(pool, pSubmits + i, (VkSubmitInfo*)(local_pSubmits + i)); | 
|  | } | 
|  | } | 
|  | local_fence = fence; | 
|  | if (local_pSubmits) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkSubmitInfo(mImpl->resources(), (VkSubmitInfo*)(local_pSubmits + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_90; | 
|  | countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_90, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_90, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_submitCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i) | 
|  | { | 
|  | marshal_VkSubmitInfo(countingStream, (VkSubmitInfo*)(local_pSubmits + i)); | 
|  | } | 
|  | uint64_t cgen_var_91; | 
|  | countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_91, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_91, 1 * 8); | 
|  | } | 
|  | uint32_t packetSize_vkQueueSubmit = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkQueueSubmit = OP_vkQueueSubmit; | 
|  | stream->write(&opcode_vkQueueSubmit, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkQueueSubmit, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_92; | 
|  | stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_92, 1); | 
|  | stream->write((uint64_t*)&cgen_var_92, 1 * 8); | 
|  | stream->write((uint32_t*)&local_submitCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i) | 
|  | { | 
|  | marshal_VkSubmitInfo(stream, (VkSubmitInfo*)(local_pSubmits + i)); | 
|  | } | 
|  | uint64_t cgen_var_93; | 
|  | stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_93, 1); | 
|  | stream->write((uint64_t*)&cgen_var_93, 1 * 8); | 
|  | AEMU_SCOPED_TRACE("vkQueueSubmit readParams"); | 
|  | AEMU_SCOPED_TRACE("vkQueueSubmit returnUnmarshal"); | 
|  | VkResult vkQueueSubmit_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkQueueSubmit_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkQueueSubmit");; | 
|  | return vkQueueSubmit_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkQueueWaitIdle( | 
|  | VkQueue queue) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkQueueWaitIdle encode"); | 
|  | mImpl->log("start vkQueueWaitIdle"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkQueue local_queue; | 
|  | local_queue = queue; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_94; | 
|  | countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_94, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_94, 1 * 8); | 
|  | } | 
|  | uint32_t packetSize_vkQueueWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkQueueWaitIdle = OP_vkQueueWaitIdle; | 
|  | stream->write(&opcode_vkQueueWaitIdle, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkQueueWaitIdle, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_95; | 
|  | stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_95, 1); | 
|  | stream->write((uint64_t*)&cgen_var_95, 1 * 8); | 
|  | AEMU_SCOPED_TRACE("vkQueueWaitIdle readParams"); | 
|  | AEMU_SCOPED_TRACE("vkQueueWaitIdle returnUnmarshal"); | 
|  | VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkQueueWaitIdle_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkQueueWaitIdle");; | 
|  | return vkQueueWaitIdle_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkDeviceWaitIdle( | 
|  | VkDevice device) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDeviceWaitIdle encode"); | 
|  | mImpl->log("start vkDeviceWaitIdle"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | local_device = device; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_96; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_96, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_96, 1 * 8); | 
|  | } | 
|  | uint32_t packetSize_vkDeviceWaitIdle = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDeviceWaitIdle = OP_vkDeviceWaitIdle; | 
|  | stream->write(&opcode_vkDeviceWaitIdle, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDeviceWaitIdle, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_97; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_97, 1); | 
|  | stream->write((uint64_t*)&cgen_var_97, 1 * 8); | 
|  | AEMU_SCOPED_TRACE("vkDeviceWaitIdle readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDeviceWaitIdle returnUnmarshal"); | 
|  | VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkDeviceWaitIdle_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkDeviceWaitIdle");; | 
|  | return vkDeviceWaitIdle_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkAllocateMemory( | 
|  | VkDevice device, | 
|  | const VkMemoryAllocateInfo* pAllocateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkDeviceMemory* pMemory) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkAllocateMemory encode"); | 
|  | mImpl->log("start vkAllocateMemory"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkMemoryAllocateInfo* local_pAllocateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pAllocateInfo = nullptr; | 
|  | if (pAllocateInfo) | 
|  | { | 
|  | local_pAllocateInfo = (VkMemoryAllocateInfo*)pool->alloc(sizeof(const VkMemoryAllocateInfo)); | 
|  | deepcopy_VkMemoryAllocateInfo(pool, pAllocateInfo, (VkMemoryAllocateInfo*)(local_pAllocateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocateInfo) | 
|  | { | 
|  | transform_tohost_VkMemoryAllocateInfo(mImpl->resources(), (VkMemoryAllocateInfo*)(local_pAllocateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_98; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_98, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_98, 1 * 8); | 
|  | marshal_VkMemoryAllocateInfo(countingStream, (VkMemoryAllocateInfo*)(local_pAllocateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_99 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_99); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_100; | 
|  | countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_100, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_100, 8); | 
|  | } | 
|  | uint32_t packetSize_vkAllocateMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkAllocateMemory = OP_vkAllocateMemory; | 
|  | stream->write(&opcode_vkAllocateMemory, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkAllocateMemory, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_101; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_101, 1); | 
|  | stream->write((uint64_t*)&cgen_var_101, 1 * 8); | 
|  | marshal_VkMemoryAllocateInfo(stream, (VkMemoryAllocateInfo*)(local_pAllocateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_102 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_102); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_103; | 
|  | stream->handleMapping()->mapHandles_VkDeviceMemory_u64(pMemory, &cgen_var_103, 1); | 
|  | stream->write((uint64_t*)&cgen_var_103, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkAllocateMemory readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_104; | 
|  | stream->read((uint64_t*)&cgen_var_104, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_104, (VkDeviceMemory*)pMemory, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkAllocateMemory returnUnmarshal"); | 
|  | VkResult vkAllocateMemory_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkAllocateMemory_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkAllocateMemory");; | 
|  | return vkAllocateMemory_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkFreeMemory( | 
|  | VkDevice device, | 
|  | VkDeviceMemory memory, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkFreeMemory encode"); | 
|  | mImpl->log("start vkFreeMemory"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDeviceMemory local_memory; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_memory = memory; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0); | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_105; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_105, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_105, 1 * 8); | 
|  | uint64_t cgen_var_106; | 
|  | countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_106, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_106, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_107 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_107); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkFreeMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkFreeMemory = OP_vkFreeMemory; | 
|  | stream->write(&opcode_vkFreeMemory, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkFreeMemory, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_108; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_108, 1); | 
|  | stream->write((uint64_t*)&cgen_var_108, 1 * 8); | 
|  | uint64_t cgen_var_109; | 
|  | stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_109, 1); | 
|  | stream->write((uint64_t*)&cgen_var_109, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_110 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_110); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkFreeMemory readParams"); | 
|  | AEMU_SCOPED_TRACE("vkFreeMemory returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkDeviceMemory((VkDeviceMemory*)&memory); | 
|  | mImpl->log("finish vkFreeMemory");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkMapMemory( | 
|  | VkDevice device, | 
|  | VkDeviceMemory memory, | 
|  | VkDeviceSize offset, | 
|  | VkDeviceSize size, | 
|  | VkMemoryMapFlags flags, | 
|  | void** ppData) | 
|  | { | 
|  | AEMU_SCOPED_TRACE("vkMapMemory resourceEvent"); | 
|  | VkResult vkMapMemory_VkResult_return = (VkResult)0; | 
|  | vkMapMemory_VkResult_return = mImpl->resources()->on_vkMapMemory(this, VK_SUCCESS, device, memory, offset, size, flags, ppData); | 
|  | mImpl->log("finish vkMapMemory");; | 
|  | return vkMapMemory_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkUnmapMemory( | 
|  | VkDevice device, | 
|  | VkDeviceMemory memory) | 
|  | { | 
|  | AEMU_SCOPED_TRACE("vkUnmapMemory resourceEvent"); | 
|  | mImpl->resources()->on_vkUnmapMemory(this, device, memory); | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkFlushMappedMemoryRanges( | 
|  | VkDevice device, | 
|  | uint32_t memoryRangeCount, | 
|  | const VkMappedMemoryRange* pMemoryRanges) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges encode"); | 
|  | mImpl->log("start vkFlushMappedMemoryRanges"); | 
|  | VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkFlushMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges)); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | uint32_t local_memoryRangeCount; | 
|  | VkMappedMemoryRange* local_pMemoryRanges; | 
|  | local_device = device; | 
|  | local_memoryRangeCount = memoryRangeCount; | 
|  | local_pMemoryRanges = nullptr; | 
|  | if (pMemoryRanges) | 
|  | { | 
|  | local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i) | 
|  | { | 
|  | deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i)); | 
|  | } | 
|  | } | 
|  | if (local_pMemoryRanges) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkMappedMemoryRange(mImpl->resources(), (VkMappedMemoryRange*)(local_pMemoryRanges + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_111; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_111, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_111, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i) | 
|  | { | 
|  | marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i)); | 
|  | } | 
|  | } | 
|  | if (!resources->usingDirectMapping()) | 
|  | { | 
|  | for (uint32_t i = 0; i < memoryRangeCount; ++i) | 
|  | { | 
|  | auto range = pMemoryRanges[i]; | 
|  | auto memory = pMemoryRanges[i].memory; | 
|  | auto size = pMemoryRanges[i].size; | 
|  | auto offset = pMemoryRanges[i].offset; | 
|  | uint64_t streamSize = 0; | 
|  | if (!memory) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; }; | 
|  | auto hostPtr = resources->getMappedPointer(memory); | 
|  | auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size; | 
|  | if (!hostPtr) { countingStream->write(&streamSize, sizeof(uint64_t)); continue; }; | 
|  | streamSize = actualSize; | 
|  | countingStream->write(&streamSize, sizeof(uint64_t)); | 
|  | uint8_t* targetRange = hostPtr + offset; | 
|  | countingStream->write(targetRange, actualSize); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkFlushMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkFlushMappedMemoryRanges = OP_vkFlushMappedMemoryRanges; | 
|  | stream->write(&opcode_vkFlushMappedMemoryRanges, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkFlushMappedMemoryRanges, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_112; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_112, 1); | 
|  | stream->write((uint64_t*)&cgen_var_112, 1 * 8); | 
|  | stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i) | 
|  | { | 
|  | marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i)); | 
|  | } | 
|  | if (!resources->usingDirectMapping()) | 
|  | { | 
|  | for (uint32_t i = 0; i < memoryRangeCount; ++i) | 
|  | { | 
|  | auto range = pMemoryRanges[i]; | 
|  | auto memory = pMemoryRanges[i].memory; | 
|  | auto size = pMemoryRanges[i].size; | 
|  | auto offset = pMemoryRanges[i].offset; | 
|  | uint64_t streamSize = 0; | 
|  | if (!memory) { stream->write(&streamSize, sizeof(uint64_t)); continue; }; | 
|  | auto hostPtr = resources->getMappedPointer(memory); | 
|  | auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size; | 
|  | if (!hostPtr) { stream->write(&streamSize, sizeof(uint64_t)); continue; }; | 
|  | streamSize = actualSize; | 
|  | stream->write(&streamSize, sizeof(uint64_t)); | 
|  | uint8_t* targetRange = hostPtr + offset; | 
|  | stream->write(targetRange, actualSize); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges readParams"); | 
|  | AEMU_SCOPED_TRACE("vkFlushMappedMemoryRanges returnUnmarshal"); | 
|  | VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkFlushMappedMemoryRanges");; | 
|  | return vkFlushMappedMemoryRanges_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkInvalidateMappedMemoryRanges( | 
|  | VkDevice device, | 
|  | uint32_t memoryRangeCount, | 
|  | const VkMappedMemoryRange* pMemoryRanges) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges encode"); | 
|  | mImpl->log("start vkInvalidateMappedMemoryRanges"); | 
|  | VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkInvalidateMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges)); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | uint32_t local_memoryRangeCount; | 
|  | VkMappedMemoryRange* local_pMemoryRanges; | 
|  | local_device = device; | 
|  | local_memoryRangeCount = memoryRangeCount; | 
|  | local_pMemoryRanges = nullptr; | 
|  | if (pMemoryRanges) | 
|  | { | 
|  | local_pMemoryRanges = (VkMappedMemoryRange*)pool->alloc(((memoryRangeCount)) * sizeof(const VkMappedMemoryRange)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i) | 
|  | { | 
|  | deepcopy_VkMappedMemoryRange(pool, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i)); | 
|  | } | 
|  | } | 
|  | if (local_pMemoryRanges) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkMappedMemoryRange(mImpl->resources(), (VkMappedMemoryRange*)(local_pMemoryRanges + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_113; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_113, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_113, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i) | 
|  | { | 
|  | marshal_VkMappedMemoryRange(countingStream, (VkMappedMemoryRange*)(local_pMemoryRanges + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkInvalidateMappedMemoryRanges = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkInvalidateMappedMemoryRanges = OP_vkInvalidateMappedMemoryRanges; | 
|  | stream->write(&opcode_vkInvalidateMappedMemoryRanges, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkInvalidateMappedMemoryRanges, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_114; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_114, 1); | 
|  | stream->write((uint64_t*)&cgen_var_114, 1 * 8); | 
|  | stream->write((uint32_t*)&local_memoryRangeCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i) | 
|  | { | 
|  | marshal_VkMappedMemoryRange(stream, (VkMappedMemoryRange*)(local_pMemoryRanges + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges readParams"); | 
|  | AEMU_SCOPED_TRACE("vkInvalidateMappedMemoryRanges returnUnmarshal"); | 
|  | VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | if (!resources->usingDirectMapping()) | 
|  | { | 
|  | for (uint32_t i = 0; i < memoryRangeCount; ++i) | 
|  | { | 
|  | auto range = pMemoryRanges[i]; | 
|  | auto memory = pMemoryRanges[i].memory; | 
|  | auto size = pMemoryRanges[i].size; | 
|  | auto offset = pMemoryRanges[i].offset; | 
|  | uint64_t streamSize = 0; | 
|  | if (!memory) { stream->read(&streamSize, sizeof(uint64_t)); continue; }; | 
|  | auto hostPtr = resources->getMappedPointer(memory); | 
|  | auto actualSize = size == VK_WHOLE_SIZE ? resources->getMappedSize(memory) : size; | 
|  | if (!hostPtr) { stream->read(&streamSize, sizeof(uint64_t)); continue; }; | 
|  | streamSize = actualSize; | 
|  | stream->read(&streamSize, sizeof(uint64_t)); | 
|  | uint8_t* targetRange = hostPtr + offset; | 
|  | stream->read(targetRange, actualSize); | 
|  | } | 
|  | } | 
|  | mImpl->log("finish vkInvalidateMappedMemoryRanges");; | 
|  | return vkInvalidateMappedMemoryRanges_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetDeviceMemoryCommitment( | 
|  | VkDevice device, | 
|  | VkDeviceMemory memory, | 
|  | VkDeviceSize* pCommittedMemoryInBytes) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment encode"); | 
|  | mImpl->log("start vkGetDeviceMemoryCommitment"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDeviceMemory local_memory; | 
|  | local_device = device; | 
|  | local_memory = memory; | 
|  | mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0); | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_115; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_115, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_115, 1 * 8); | 
|  | uint64_t cgen_var_116; | 
|  | countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_116, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_116, 1 * 8); | 
|  | countingStream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize)); | 
|  | } | 
|  | uint32_t packetSize_vkGetDeviceMemoryCommitment = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetDeviceMemoryCommitment = OP_vkGetDeviceMemoryCommitment; | 
|  | stream->write(&opcode_vkGetDeviceMemoryCommitment, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetDeviceMemoryCommitment, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_117; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_117, 1); | 
|  | stream->write((uint64_t*)&cgen_var_117, 1 * 8); | 
|  | uint64_t cgen_var_118; | 
|  | stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_118, 1); | 
|  | stream->write((uint64_t*)&cgen_var_118, 1 * 8); | 
|  | stream->write((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize)); | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment readParams"); | 
|  | stream->read((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize)); | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceMemoryCommitment returnUnmarshal"); | 
|  | mImpl->log("finish vkGetDeviceMemoryCommitment");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkBindBufferMemory( | 
|  | VkDevice device, | 
|  | VkBuffer buffer, | 
|  | VkDeviceMemory memory, | 
|  | VkDeviceSize memoryOffset) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkBindBufferMemory encode"); | 
|  | mImpl->log("start vkBindBufferMemory"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkBuffer local_buffer; | 
|  | VkDeviceMemory local_memory; | 
|  | VkDeviceSize local_memoryOffset; | 
|  | local_device = device; | 
|  | local_buffer = buffer; | 
|  | local_memory = memory; | 
|  | local_memoryOffset = memoryOffset; | 
|  | mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)&local_memoryOffset, 1, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0); | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_119; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_119, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_119, 1 * 8); | 
|  | uint64_t cgen_var_120; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_120, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_120, 1 * 8); | 
|  | uint64_t cgen_var_121; | 
|  | countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_121, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_121, 1 * 8); | 
|  | countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize)); | 
|  | } | 
|  | uint32_t packetSize_vkBindBufferMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkBindBufferMemory = OP_vkBindBufferMemory; | 
|  | stream->write(&opcode_vkBindBufferMemory, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkBindBufferMemory, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_122; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_122, 1); | 
|  | stream->write((uint64_t*)&cgen_var_122, 1 * 8); | 
|  | uint64_t cgen_var_123; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_123, 1); | 
|  | stream->write((uint64_t*)&cgen_var_123, 1 * 8); | 
|  | uint64_t cgen_var_124; | 
|  | stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_124, 1); | 
|  | stream->write((uint64_t*)&cgen_var_124, 1 * 8); | 
|  | stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize)); | 
|  | AEMU_SCOPED_TRACE("vkBindBufferMemory readParams"); | 
|  | AEMU_SCOPED_TRACE("vkBindBufferMemory returnUnmarshal"); | 
|  | VkResult vkBindBufferMemory_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkBindBufferMemory_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkBindBufferMemory");; | 
|  | return vkBindBufferMemory_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkBindImageMemory( | 
|  | VkDevice device, | 
|  | VkImage image, | 
|  | VkDeviceMemory memory, | 
|  | VkDeviceSize memoryOffset) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkBindImageMemory encode"); | 
|  | mImpl->log("start vkBindImageMemory"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkImage local_image; | 
|  | VkDeviceMemory local_memory; | 
|  | VkDeviceSize local_memoryOffset; | 
|  | local_device = device; | 
|  | local_image = image; | 
|  | local_memory = memory; | 
|  | local_memoryOffset = memoryOffset; | 
|  | mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)&local_memoryOffset, 1, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0); | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_125; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_125, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_125, 1 * 8); | 
|  | uint64_t cgen_var_126; | 
|  | countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_126, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_126, 1 * 8); | 
|  | uint64_t cgen_var_127; | 
|  | countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_127, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_127, 1 * 8); | 
|  | countingStream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize)); | 
|  | } | 
|  | uint32_t packetSize_vkBindImageMemory = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkBindImageMemory = OP_vkBindImageMemory; | 
|  | stream->write(&opcode_vkBindImageMemory, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkBindImageMemory, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_128; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_128, 1); | 
|  | stream->write((uint64_t*)&cgen_var_128, 1 * 8); | 
|  | uint64_t cgen_var_129; | 
|  | stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_129, 1); | 
|  | stream->write((uint64_t*)&cgen_var_129, 1 * 8); | 
|  | uint64_t cgen_var_130; | 
|  | stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_130, 1); | 
|  | stream->write((uint64_t*)&cgen_var_130, 1 * 8); | 
|  | stream->write((VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize)); | 
|  | AEMU_SCOPED_TRACE("vkBindImageMemory readParams"); | 
|  | AEMU_SCOPED_TRACE("vkBindImageMemory returnUnmarshal"); | 
|  | VkResult vkBindImageMemory_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkBindImageMemory_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkBindImageMemory");; | 
|  | return vkBindImageMemory_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetBufferMemoryRequirements( | 
|  | VkDevice device, | 
|  | VkBuffer buffer, | 
|  | VkMemoryRequirements* pMemoryRequirements) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements encode"); | 
|  | mImpl->log("start vkGetBufferMemoryRequirements"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkBuffer local_buffer; | 
|  | local_device = device; | 
|  | local_buffer = buffer; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_131; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_131, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_131, 1 * 8); | 
|  | uint64_t cgen_var_132; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_132, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_132, 1 * 8); | 
|  | marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements)); | 
|  | } | 
|  | uint32_t packetSize_vkGetBufferMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetBufferMemoryRequirements = OP_vkGetBufferMemoryRequirements; | 
|  | stream->write(&opcode_vkGetBufferMemoryRequirements, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetBufferMemoryRequirements, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_133; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_133, 1); | 
|  | stream->write((uint64_t*)&cgen_var_133, 1 * 8); | 
|  | uint64_t cgen_var_134; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_134, 1); | 
|  | stream->write((uint64_t*)&cgen_var_134, 1 * 8); | 
|  | marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements)); | 
|  | AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements readParams"); | 
|  | unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements)); | 
|  | if (pMemoryRequirements) | 
|  | { | 
|  | transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements returnUnmarshal"); | 
|  | mImpl->log("finish vkGetBufferMemoryRequirements");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetImageMemoryRequirements( | 
|  | VkDevice device, | 
|  | VkImage image, | 
|  | VkMemoryRequirements* pMemoryRequirements) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements encode"); | 
|  | mImpl->log("start vkGetImageMemoryRequirements"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkImage local_image; | 
|  | local_device = device; | 
|  | local_image = image; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_135; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_135, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_135, 1 * 8); | 
|  | uint64_t cgen_var_136; | 
|  | countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_136, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_136, 1 * 8); | 
|  | marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements)); | 
|  | } | 
|  | uint32_t packetSize_vkGetImageMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetImageMemoryRequirements = OP_vkGetImageMemoryRequirements; | 
|  | stream->write(&opcode_vkGetImageMemoryRequirements, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetImageMemoryRequirements, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_137; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_137, 1); | 
|  | stream->write((uint64_t*)&cgen_var_137, 1 * 8); | 
|  | uint64_t cgen_var_138; | 
|  | stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_138, 1); | 
|  | stream->write((uint64_t*)&cgen_var_138, 1 * 8); | 
|  | marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements)); | 
|  | AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements readParams"); | 
|  | unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements)); | 
|  | if (pMemoryRequirements) | 
|  | { | 
|  | transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements returnUnmarshal"); | 
|  | mImpl->log("finish vkGetImageMemoryRequirements");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetImageSparseMemoryRequirements( | 
|  | VkDevice device, | 
|  | VkImage image, | 
|  | uint32_t* pSparseMemoryRequirementCount, | 
|  | VkSparseImageMemoryRequirements* pSparseMemoryRequirements) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements encode"); | 
|  | mImpl->log("start vkGetImageSparseMemoryRequirements"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkImage local_image; | 
|  | local_device = device; | 
|  | local_image = image; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_139; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_139, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_139, 1 * 8); | 
|  | uint64_t cgen_var_140; | 
|  | countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_140, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_140, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_141 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount; | 
|  | countingStream->putBe64(cgen_var_141); | 
|  | if (pSparseMemoryRequirementCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_142 = (uint64_t)(uintptr_t)pSparseMemoryRequirements; | 
|  | countingStream->putBe64(cgen_var_142); | 
|  | if (pSparseMemoryRequirements) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i) | 
|  | { | 
|  | marshal_VkSparseImageMemoryRequirements(countingStream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetImageSparseMemoryRequirements = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetImageSparseMemoryRequirements = OP_vkGetImageSparseMemoryRequirements; | 
|  | stream->write(&opcode_vkGetImageSparseMemoryRequirements, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetImageSparseMemoryRequirements, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_143; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_143, 1); | 
|  | stream->write((uint64_t*)&cgen_var_143, 1 * 8); | 
|  | uint64_t cgen_var_144; | 
|  | stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_144, 1); | 
|  | stream->write((uint64_t*)&cgen_var_144, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_145 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount; | 
|  | stream->putBe64(cgen_var_145); | 
|  | if (pSparseMemoryRequirementCount) | 
|  | { | 
|  | stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_146 = (uint64_t)(uintptr_t)pSparseMemoryRequirements; | 
|  | stream->putBe64(cgen_var_146); | 
|  | if (pSparseMemoryRequirements) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i) | 
|  | { | 
|  | marshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pSparseMemoryRequirementCount; | 
|  | check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pSparseMemoryRequirementCount) | 
|  | { | 
|  | if (!(check_pSparseMemoryRequirementCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkSparseImageMemoryRequirements* check_pSparseMemoryRequirements; | 
|  | check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements*)(uintptr_t)stream->getBe64(); | 
|  | if (pSparseMemoryRequirements) | 
|  | { | 
|  | if (!(check_pSparseMemoryRequirements)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i) | 
|  | { | 
|  | unmarshal_VkSparseImageMemoryRequirements(stream, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i)); | 
|  | } | 
|  | } | 
|  | if (pSparseMemoryRequirements) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkSparseImageMemoryRequirements(mImpl->resources(), (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements returnUnmarshal"); | 
|  | mImpl->log("finish vkGetImageSparseMemoryRequirements");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkFormat format, | 
|  | VkImageType type, | 
|  | VkSampleCountFlagBits samples, | 
|  | VkImageUsageFlags usage, | 
|  | VkImageTiling tiling, | 
|  | uint32_t* pPropertyCount, | 
|  | VkSparseImageFormatProperties* pProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkFormat local_format; | 
|  | VkImageType local_type; | 
|  | VkSampleCountFlagBits local_samples; | 
|  | VkImageUsageFlags local_usage; | 
|  | VkImageTiling local_tiling; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_format = format; | 
|  | local_type = type; | 
|  | local_samples = samples; | 
|  | local_usage = usage; | 
|  | local_tiling = tiling; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_149; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_149, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_149, 1 * 8); | 
|  | countingStream->write((VkFormat*)&local_format, sizeof(VkFormat)); | 
|  | countingStream->write((VkImageType*)&local_type, sizeof(VkImageType)); | 
|  | countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits)); | 
|  | countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags)); | 
|  | countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_150 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | countingStream->putBe64(cgen_var_150); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_151 = (uint64_t)(uintptr_t)pProperties; | 
|  | countingStream->putBe64(cgen_var_151); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkSparseImageFormatProperties(countingStream, (VkSparseImageFormatProperties*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties = OP_vkGetPhysicalDeviceSparseImageFormatProperties; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_152; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_152, 1); | 
|  | stream->write((uint64_t*)&cgen_var_152, 1 * 8); | 
|  | stream->write((VkFormat*)&local_format, sizeof(VkFormat)); | 
|  | stream->write((VkImageType*)&local_type, sizeof(VkImageType)); | 
|  | stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits)); | 
|  | stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags)); | 
|  | stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_153 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | stream->putBe64(cgen_var_153); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_154 = (uint64_t)(uintptr_t)pProperties; | 
|  | stream->putBe64(cgen_var_154); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pPropertyCount; | 
|  | check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | if (!(check_pPropertyCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkSparseImageFormatProperties* check_pProperties; | 
|  | check_pProperties = (VkSparseImageFormatProperties*)(uintptr_t)stream->getBe64(); | 
|  | if (pProperties) | 
|  | { | 
|  | if (!(check_pProperties)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | unmarshal_VkSparseImageFormatProperties(stream, (VkSparseImageFormatProperties*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkSparseImageFormatProperties(mImpl->resources(), (VkSparseImageFormatProperties*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkQueueBindSparse( | 
|  | VkQueue queue, | 
|  | uint32_t bindInfoCount, | 
|  | const VkBindSparseInfo* pBindInfo, | 
|  | VkFence fence) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkQueueBindSparse encode"); | 
|  | mImpl->log("start vkQueueBindSparse"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkQueue local_queue; | 
|  | uint32_t local_bindInfoCount; | 
|  | VkBindSparseInfo* local_pBindInfo; | 
|  | VkFence local_fence; | 
|  | local_queue = queue; | 
|  | local_bindInfoCount = bindInfoCount; | 
|  | local_pBindInfo = nullptr; | 
|  | if (pBindInfo) | 
|  | { | 
|  | local_pBindInfo = (VkBindSparseInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindSparseInfo)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) | 
|  | { | 
|  | deepcopy_VkBindSparseInfo(pool, pBindInfo + i, (VkBindSparseInfo*)(local_pBindInfo + i)); | 
|  | } | 
|  | } | 
|  | local_fence = fence; | 
|  | if (local_pBindInfo) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkBindSparseInfo(mImpl->resources(), (VkBindSparseInfo*)(local_pBindInfo + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_157; | 
|  | countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_157, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_157, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) | 
|  | { | 
|  | marshal_VkBindSparseInfo(countingStream, (VkBindSparseInfo*)(local_pBindInfo + i)); | 
|  | } | 
|  | uint64_t cgen_var_158; | 
|  | countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_158, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_158, 1 * 8); | 
|  | } | 
|  | uint32_t packetSize_vkQueueBindSparse = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkQueueBindSparse = OP_vkQueueBindSparse; | 
|  | stream->write(&opcode_vkQueueBindSparse, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkQueueBindSparse, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_159; | 
|  | stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_159, 1); | 
|  | stream->write((uint64_t*)&cgen_var_159, 1 * 8); | 
|  | stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) | 
|  | { | 
|  | marshal_VkBindSparseInfo(stream, (VkBindSparseInfo*)(local_pBindInfo + i)); | 
|  | } | 
|  | uint64_t cgen_var_160; | 
|  | stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_160, 1); | 
|  | stream->write((uint64_t*)&cgen_var_160, 1 * 8); | 
|  | AEMU_SCOPED_TRACE("vkQueueBindSparse readParams"); | 
|  | AEMU_SCOPED_TRACE("vkQueueBindSparse returnUnmarshal"); | 
|  | VkResult vkQueueBindSparse_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkQueueBindSparse_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkQueueBindSparse");; | 
|  | return vkQueueBindSparse_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateFence( | 
|  | VkDevice device, | 
|  | const VkFenceCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkFence* pFence) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateFence encode"); | 
|  | mImpl->log("start vkCreateFence"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkFenceCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkFenceCreateInfo*)pool->alloc(sizeof(const VkFenceCreateInfo)); | 
|  | deepcopy_VkFenceCreateInfo(pool, pCreateInfo, (VkFenceCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkFenceCreateInfo(mImpl->resources(), (VkFenceCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_161; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_161, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_161, 1 * 8); | 
|  | marshal_VkFenceCreateInfo(countingStream, (VkFenceCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_162 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_162); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_163; | 
|  | countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_163, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_163, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateFence = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateFence = OP_vkCreateFence; | 
|  | stream->write(&opcode_vkCreateFence, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateFence, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_164; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_164, 1); | 
|  | stream->write((uint64_t*)&cgen_var_164, 1 * 8); | 
|  | marshal_VkFenceCreateInfo(stream, (VkFenceCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_165 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_165); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_166; | 
|  | stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_166, 1); | 
|  | stream->write((uint64_t*)&cgen_var_166, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateFence readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_167; | 
|  | stream->read((uint64_t*)&cgen_var_167, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_167, (VkFence*)pFence, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateFence returnUnmarshal"); | 
|  | VkResult vkCreateFence_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateFence_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateFence");; | 
|  | return vkCreateFence_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyFence( | 
|  | VkDevice device, | 
|  | VkFence fence, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyFence encode"); | 
|  | mImpl->log("start vkDestroyFence"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkFence local_fence; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_fence = fence; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_168; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_168, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_168, 1 * 8); | 
|  | uint64_t cgen_var_169; | 
|  | countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_169, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_169, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_170 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_170); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyFence = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyFence = OP_vkDestroyFence; | 
|  | stream->write(&opcode_vkDestroyFence, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyFence, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_171; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_171, 1); | 
|  | stream->write((uint64_t*)&cgen_var_171, 1 * 8); | 
|  | uint64_t cgen_var_172; | 
|  | stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_172, 1); | 
|  | stream->write((uint64_t*)&cgen_var_172, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_173 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_173); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyFence readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyFence returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkFence((VkFence*)&fence); | 
|  | mImpl->log("finish vkDestroyFence");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkResetFences( | 
|  | VkDevice device, | 
|  | uint32_t fenceCount, | 
|  | const VkFence* pFences) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkResetFences encode"); | 
|  | mImpl->log("start vkResetFences"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | uint32_t local_fenceCount; | 
|  | VkFence* local_pFences; | 
|  | local_device = device; | 
|  | local_fenceCount = fenceCount; | 
|  | local_pFences = nullptr; | 
|  | if (pFences) | 
|  | { | 
|  | local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_174; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_174, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_174, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t)); | 
|  | if (((fenceCount))) | 
|  | { | 
|  | uint64_t* cgen_var_175; | 
|  | countingStream->alloc((void**)&cgen_var_175, ((fenceCount)) * 8); | 
|  | countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_175, ((fenceCount))); | 
|  | countingStream->write((uint64_t*)cgen_var_175, ((fenceCount)) * 8); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkResetFences = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkResetFences = OP_vkResetFences; | 
|  | stream->write(&opcode_vkResetFences, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkResetFences, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_176; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_176, 1); | 
|  | stream->write((uint64_t*)&cgen_var_176, 1 * 8); | 
|  | stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t)); | 
|  | if (((fenceCount))) | 
|  | { | 
|  | uint64_t* cgen_var_177; | 
|  | stream->alloc((void**)&cgen_var_177, ((fenceCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_177, ((fenceCount))); | 
|  | stream->write((uint64_t*)cgen_var_177, ((fenceCount)) * 8); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkResetFences readParams"); | 
|  | AEMU_SCOPED_TRACE("vkResetFences returnUnmarshal"); | 
|  | VkResult vkResetFences_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkResetFences_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkResetFences");; | 
|  | return vkResetFences_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetFenceStatus( | 
|  | VkDevice device, | 
|  | VkFence fence) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetFenceStatus encode"); | 
|  | mImpl->log("start vkGetFenceStatus"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkFence local_fence; | 
|  | local_device = device; | 
|  | local_fence = fence; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_178; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_178, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_178, 1 * 8); | 
|  | uint64_t cgen_var_179; | 
|  | countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_179, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_179, 1 * 8); | 
|  | } | 
|  | uint32_t packetSize_vkGetFenceStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetFenceStatus = OP_vkGetFenceStatus; | 
|  | stream->write(&opcode_vkGetFenceStatus, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetFenceStatus, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_180; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_180, 1); | 
|  | stream->write((uint64_t*)&cgen_var_180, 1 * 8); | 
|  | uint64_t cgen_var_181; | 
|  | stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_181, 1); | 
|  | stream->write((uint64_t*)&cgen_var_181, 1 * 8); | 
|  | AEMU_SCOPED_TRACE("vkGetFenceStatus readParams"); | 
|  | AEMU_SCOPED_TRACE("vkGetFenceStatus returnUnmarshal"); | 
|  | VkResult vkGetFenceStatus_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetFenceStatus_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetFenceStatus");; | 
|  | return vkGetFenceStatus_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkWaitForFences( | 
|  | VkDevice device, | 
|  | uint32_t fenceCount, | 
|  | const VkFence* pFences, | 
|  | VkBool32 waitAll, | 
|  | uint64_t timeout) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkWaitForFences encode"); | 
|  | mImpl->log("start vkWaitForFences"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | uint32_t local_fenceCount; | 
|  | VkFence* local_pFences; | 
|  | VkBool32 local_waitAll; | 
|  | uint64_t local_timeout; | 
|  | local_device = device; | 
|  | local_fenceCount = fenceCount; | 
|  | local_pFences = nullptr; | 
|  | if (pFences) | 
|  | { | 
|  | local_pFences = (VkFence*)pool->dupArray(pFences, ((fenceCount)) * sizeof(const VkFence)); | 
|  | } | 
|  | local_waitAll = waitAll; | 
|  | local_timeout = timeout; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_182; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_182, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_182, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t)); | 
|  | if (((fenceCount))) | 
|  | { | 
|  | uint64_t* cgen_var_183; | 
|  | countingStream->alloc((void**)&cgen_var_183, ((fenceCount)) * 8); | 
|  | countingStream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_183, ((fenceCount))); | 
|  | countingStream->write((uint64_t*)cgen_var_183, ((fenceCount)) * 8); | 
|  | } | 
|  | countingStream->write((VkBool32*)&local_waitAll, sizeof(VkBool32)); | 
|  | countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t)); | 
|  | } | 
|  | uint32_t packetSize_vkWaitForFences = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkWaitForFences = OP_vkWaitForFences; | 
|  | stream->write(&opcode_vkWaitForFences, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkWaitForFences, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_184; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_184, 1); | 
|  | stream->write((uint64_t*)&cgen_var_184, 1 * 8); | 
|  | stream->write((uint32_t*)&local_fenceCount, sizeof(uint32_t)); | 
|  | if (((fenceCount))) | 
|  | { | 
|  | uint64_t* cgen_var_185; | 
|  | stream->alloc((void**)&cgen_var_185, ((fenceCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_VkFence_u64(local_pFences, cgen_var_185, ((fenceCount))); | 
|  | stream->write((uint64_t*)cgen_var_185, ((fenceCount)) * 8); | 
|  | } | 
|  | stream->write((VkBool32*)&local_waitAll, sizeof(VkBool32)); | 
|  | stream->write((uint64_t*)&local_timeout, sizeof(uint64_t)); | 
|  | AEMU_SCOPED_TRACE("vkWaitForFences readParams"); | 
|  | AEMU_SCOPED_TRACE("vkWaitForFences returnUnmarshal"); | 
|  | VkResult vkWaitForFences_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkWaitForFences_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkWaitForFences");; | 
|  | return vkWaitForFences_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateSemaphore( | 
|  | VkDevice device, | 
|  | const VkSemaphoreCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkSemaphore* pSemaphore) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateSemaphore encode"); | 
|  | mImpl->log("start vkCreateSemaphore"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkSemaphoreCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkSemaphoreCreateInfo*)pool->alloc(sizeof(const VkSemaphoreCreateInfo)); | 
|  | deepcopy_VkSemaphoreCreateInfo(pool, pCreateInfo, (VkSemaphoreCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkSemaphoreCreateInfo(mImpl->resources(), (VkSemaphoreCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_186; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_186, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_186, 1 * 8); | 
|  | marshal_VkSemaphoreCreateInfo(countingStream, (VkSemaphoreCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_187 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_187); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_188; | 
|  | countingStream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_188, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_188, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateSemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateSemaphore = OP_vkCreateSemaphore; | 
|  | stream->write(&opcode_vkCreateSemaphore, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateSemaphore, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_189; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_189, 1); | 
|  | stream->write((uint64_t*)&cgen_var_189, 1 * 8); | 
|  | marshal_VkSemaphoreCreateInfo(stream, (VkSemaphoreCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_190 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_190); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_191; | 
|  | stream->handleMapping()->mapHandles_VkSemaphore_u64(pSemaphore, &cgen_var_191, 1); | 
|  | stream->write((uint64_t*)&cgen_var_191, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateSemaphore readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_192; | 
|  | stream->read((uint64_t*)&cgen_var_192, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_192, (VkSemaphore*)pSemaphore, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateSemaphore returnUnmarshal"); | 
|  | VkResult vkCreateSemaphore_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateSemaphore_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateSemaphore");; | 
|  | return vkCreateSemaphore_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroySemaphore( | 
|  | VkDevice device, | 
|  | VkSemaphore semaphore, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroySemaphore encode"); | 
|  | mImpl->log("start vkDestroySemaphore"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkSemaphore local_semaphore; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_semaphore = semaphore; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_193; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_193, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_193, 1 * 8); | 
|  | uint64_t cgen_var_194; | 
|  | countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_194, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_194, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_195 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_195); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroySemaphore = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroySemaphore = OP_vkDestroySemaphore; | 
|  | stream->write(&opcode_vkDestroySemaphore, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroySemaphore, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_196; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_196, 1); | 
|  | stream->write((uint64_t*)&cgen_var_196, 1 * 8); | 
|  | uint64_t cgen_var_197; | 
|  | stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_197, 1); | 
|  | stream->write((uint64_t*)&cgen_var_197, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_198 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_198); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroySemaphore readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroySemaphore returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkSemaphore((VkSemaphore*)&semaphore); | 
|  | mImpl->log("finish vkDestroySemaphore");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateEvent( | 
|  | VkDevice device, | 
|  | const VkEventCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkEvent* pEvent) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateEvent encode"); | 
|  | mImpl->log("start vkCreateEvent"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkEventCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkEventCreateInfo*)pool->alloc(sizeof(const VkEventCreateInfo)); | 
|  | deepcopy_VkEventCreateInfo(pool, pCreateInfo, (VkEventCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkEventCreateInfo(mImpl->resources(), (VkEventCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_199; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_199, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_199, 1 * 8); | 
|  | marshal_VkEventCreateInfo(countingStream, (VkEventCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_200 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_200); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_201; | 
|  | countingStream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_201, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_201, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateEvent = OP_vkCreateEvent; | 
|  | stream->write(&opcode_vkCreateEvent, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateEvent, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_202; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_202, 1); | 
|  | stream->write((uint64_t*)&cgen_var_202, 1 * 8); | 
|  | marshal_VkEventCreateInfo(stream, (VkEventCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_203 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_203); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_204; | 
|  | stream->handleMapping()->mapHandles_VkEvent_u64(pEvent, &cgen_var_204, 1); | 
|  | stream->write((uint64_t*)&cgen_var_204, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateEvent readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_205; | 
|  | stream->read((uint64_t*)&cgen_var_205, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkEvent(&cgen_var_205, (VkEvent*)pEvent, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateEvent returnUnmarshal"); | 
|  | VkResult vkCreateEvent_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateEvent_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateEvent");; | 
|  | return vkCreateEvent_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyEvent( | 
|  | VkDevice device, | 
|  | VkEvent event, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyEvent encode"); | 
|  | mImpl->log("start vkDestroyEvent"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkEvent local_event; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_event = event; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_206; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_206, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_206, 1 * 8); | 
|  | uint64_t cgen_var_207; | 
|  | countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_207, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_207, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_208 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_208); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyEvent = OP_vkDestroyEvent; | 
|  | stream->write(&opcode_vkDestroyEvent, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyEvent, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_209; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_209, 1); | 
|  | stream->write((uint64_t*)&cgen_var_209, 1 * 8); | 
|  | uint64_t cgen_var_210; | 
|  | stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_210, 1); | 
|  | stream->write((uint64_t*)&cgen_var_210, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_211 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_211); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyEvent readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyEvent returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkEvent((VkEvent*)&event); | 
|  | mImpl->log("finish vkDestroyEvent");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetEventStatus( | 
|  | VkDevice device, | 
|  | VkEvent event) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetEventStatus encode"); | 
|  | mImpl->log("start vkGetEventStatus"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkEvent local_event; | 
|  | local_device = device; | 
|  | local_event = event; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_212; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_212, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_212, 1 * 8); | 
|  | uint64_t cgen_var_213; | 
|  | countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_213, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_213, 1 * 8); | 
|  | } | 
|  | uint32_t packetSize_vkGetEventStatus = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetEventStatus = OP_vkGetEventStatus; | 
|  | stream->write(&opcode_vkGetEventStatus, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetEventStatus, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_214; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_214, 1); | 
|  | stream->write((uint64_t*)&cgen_var_214, 1 * 8); | 
|  | uint64_t cgen_var_215; | 
|  | stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_215, 1); | 
|  | stream->write((uint64_t*)&cgen_var_215, 1 * 8); | 
|  | AEMU_SCOPED_TRACE("vkGetEventStatus readParams"); | 
|  | AEMU_SCOPED_TRACE("vkGetEventStatus returnUnmarshal"); | 
|  | VkResult vkGetEventStatus_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetEventStatus_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetEventStatus");; | 
|  | return vkGetEventStatus_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkSetEvent( | 
|  | VkDevice device, | 
|  | VkEvent event) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkSetEvent encode"); | 
|  | mImpl->log("start vkSetEvent"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkEvent local_event; | 
|  | local_device = device; | 
|  | local_event = event; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_216; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_216, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_216, 1 * 8); | 
|  | uint64_t cgen_var_217; | 
|  | countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_217, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_217, 1 * 8); | 
|  | } | 
|  | uint32_t packetSize_vkSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkSetEvent = OP_vkSetEvent; | 
|  | stream->write(&opcode_vkSetEvent, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkSetEvent, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_218; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_218, 1); | 
|  | stream->write((uint64_t*)&cgen_var_218, 1 * 8); | 
|  | uint64_t cgen_var_219; | 
|  | stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_219, 1); | 
|  | stream->write((uint64_t*)&cgen_var_219, 1 * 8); | 
|  | AEMU_SCOPED_TRACE("vkSetEvent readParams"); | 
|  | AEMU_SCOPED_TRACE("vkSetEvent returnUnmarshal"); | 
|  | VkResult vkSetEvent_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkSetEvent_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkSetEvent");; | 
|  | return vkSetEvent_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkResetEvent( | 
|  | VkDevice device, | 
|  | VkEvent event) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkResetEvent encode"); | 
|  | mImpl->log("start vkResetEvent"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkEvent local_event; | 
|  | local_device = device; | 
|  | local_event = event; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_220; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_220, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_220, 1 * 8); | 
|  | uint64_t cgen_var_221; | 
|  | countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_221, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_221, 1 * 8); | 
|  | } | 
|  | uint32_t packetSize_vkResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkResetEvent = OP_vkResetEvent; | 
|  | stream->write(&opcode_vkResetEvent, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkResetEvent, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_222; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_222, 1); | 
|  | stream->write((uint64_t*)&cgen_var_222, 1 * 8); | 
|  | uint64_t cgen_var_223; | 
|  | stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_223, 1); | 
|  | stream->write((uint64_t*)&cgen_var_223, 1 * 8); | 
|  | AEMU_SCOPED_TRACE("vkResetEvent readParams"); | 
|  | AEMU_SCOPED_TRACE("vkResetEvent returnUnmarshal"); | 
|  | VkResult vkResetEvent_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkResetEvent_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkResetEvent");; | 
|  | return vkResetEvent_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateQueryPool( | 
|  | VkDevice device, | 
|  | const VkQueryPoolCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkQueryPool* pQueryPool) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateQueryPool encode"); | 
|  | mImpl->log("start vkCreateQueryPool"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkQueryPoolCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkQueryPoolCreateInfo*)pool->alloc(sizeof(const VkQueryPoolCreateInfo)); | 
|  | deepcopy_VkQueryPoolCreateInfo(pool, pCreateInfo, (VkQueryPoolCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkQueryPoolCreateInfo(mImpl->resources(), (VkQueryPoolCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_224; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_224, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_224, 1 * 8); | 
|  | marshal_VkQueryPoolCreateInfo(countingStream, (VkQueryPoolCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_225 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_225); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_226; | 
|  | countingStream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_226, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_226, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateQueryPool = OP_vkCreateQueryPool; | 
|  | stream->write(&opcode_vkCreateQueryPool, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateQueryPool, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_227; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_227, 1); | 
|  | stream->write((uint64_t*)&cgen_var_227, 1 * 8); | 
|  | marshal_VkQueryPoolCreateInfo(stream, (VkQueryPoolCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_228 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_228); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_229; | 
|  | stream->handleMapping()->mapHandles_VkQueryPool_u64(pQueryPool, &cgen_var_229, 1); | 
|  | stream->write((uint64_t*)&cgen_var_229, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateQueryPool readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_230; | 
|  | stream->read((uint64_t*)&cgen_var_230, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkQueryPool(&cgen_var_230, (VkQueryPool*)pQueryPool, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateQueryPool returnUnmarshal"); | 
|  | VkResult vkCreateQueryPool_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateQueryPool_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateQueryPool");; | 
|  | return vkCreateQueryPool_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyQueryPool( | 
|  | VkDevice device, | 
|  | VkQueryPool queryPool, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyQueryPool encode"); | 
|  | mImpl->log("start vkDestroyQueryPool"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkQueryPool local_queryPool; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_queryPool = queryPool; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_231; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_231, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_231, 1 * 8); | 
|  | uint64_t cgen_var_232; | 
|  | countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_232, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_232, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_233 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_233); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyQueryPool = OP_vkDestroyQueryPool; | 
|  | stream->write(&opcode_vkDestroyQueryPool, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyQueryPool, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_234; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_234, 1); | 
|  | stream->write((uint64_t*)&cgen_var_234, 1 * 8); | 
|  | uint64_t cgen_var_235; | 
|  | stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_235, 1); | 
|  | stream->write((uint64_t*)&cgen_var_235, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_236 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_236); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyQueryPool readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyQueryPool returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkQueryPool((VkQueryPool*)&queryPool); | 
|  | mImpl->log("finish vkDestroyQueryPool");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetQueryPoolResults( | 
|  | VkDevice device, | 
|  | VkQueryPool queryPool, | 
|  | uint32_t firstQuery, | 
|  | uint32_t queryCount, | 
|  | size_t dataSize, | 
|  | void* pData, | 
|  | VkDeviceSize stride, | 
|  | VkQueryResultFlags flags) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetQueryPoolResults encode"); | 
|  | mImpl->log("start vkGetQueryPoolResults"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkQueryPool local_queryPool; | 
|  | uint32_t local_firstQuery; | 
|  | uint32_t local_queryCount; | 
|  | size_t local_dataSize; | 
|  | VkDeviceSize local_stride; | 
|  | VkQueryResultFlags local_flags; | 
|  | local_device = device; | 
|  | local_queryPool = queryPool; | 
|  | local_firstQuery = firstQuery; | 
|  | local_queryCount = queryCount; | 
|  | local_dataSize = dataSize; | 
|  | local_stride = stride; | 
|  | local_flags = flags; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_237; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_237, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_237, 1 * 8); | 
|  | uint64_t cgen_var_238; | 
|  | countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_238, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_238, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_239 = (uint64_t)local_dataSize; | 
|  | countingStream->putBe64(cgen_var_239); | 
|  | countingStream->write((void*)pData, ((dataSize)) * sizeof(uint8_t)); | 
|  | countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize)); | 
|  | countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags)); | 
|  | } | 
|  | uint32_t packetSize_vkGetQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetQueryPoolResults = OP_vkGetQueryPoolResults; | 
|  | stream->write(&opcode_vkGetQueryPoolResults, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetQueryPoolResults, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_240; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_240, 1); | 
|  | stream->write((uint64_t*)&cgen_var_240, 1 * 8); | 
|  | uint64_t cgen_var_241; | 
|  | stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_241, 1); | 
|  | stream->write((uint64_t*)&cgen_var_241, 1 * 8); | 
|  | stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_242 = (uint64_t)local_dataSize; | 
|  | stream->putBe64(cgen_var_242); | 
|  | stream->write((void*)pData, ((dataSize)) * sizeof(uint8_t)); | 
|  | stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize)); | 
|  | stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags)); | 
|  | AEMU_SCOPED_TRACE("vkGetQueryPoolResults readParams"); | 
|  | stream->read((void*)pData, ((dataSize)) * sizeof(uint8_t)); | 
|  | AEMU_SCOPED_TRACE("vkGetQueryPoolResults returnUnmarshal"); | 
|  | VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetQueryPoolResults_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetQueryPoolResults");; | 
|  | return vkGetQueryPoolResults_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateBuffer( | 
|  | VkDevice device, | 
|  | const VkBufferCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkBuffer* pBuffer) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateBuffer encode"); | 
|  | mImpl->log("start vkCreateBuffer"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkBufferCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkBufferCreateInfo*)pool->alloc(sizeof(const VkBufferCreateInfo)); | 
|  | deepcopy_VkBufferCreateInfo(pool, pCreateInfo, (VkBufferCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkBufferCreateInfo(mImpl->resources(), (VkBufferCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_243; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_243, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_243, 1 * 8); | 
|  | marshal_VkBufferCreateInfo(countingStream, (VkBufferCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_244 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_244); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_245; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_245, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_245, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateBuffer = OP_vkCreateBuffer; | 
|  | stream->write(&opcode_vkCreateBuffer, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateBuffer, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_246; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_246, 1); | 
|  | stream->write((uint64_t*)&cgen_var_246, 1 * 8); | 
|  | marshal_VkBufferCreateInfo(stream, (VkBufferCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_247 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_247); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_248; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_248, 1); | 
|  | stream->write((uint64_t*)&cgen_var_248, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateBuffer readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_249; | 
|  | stream->read((uint64_t*)&cgen_var_249, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_249, (VkBuffer*)pBuffer, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateBuffer returnUnmarshal"); | 
|  | VkResult vkCreateBuffer_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateBuffer_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateBuffer");; | 
|  | return vkCreateBuffer_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyBuffer( | 
|  | VkDevice device, | 
|  | VkBuffer buffer, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyBuffer encode"); | 
|  | mImpl->log("start vkDestroyBuffer"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkBuffer local_buffer; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_buffer = buffer; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_250; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_250, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_250, 1 * 8); | 
|  | uint64_t cgen_var_251; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_251, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_251, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_252 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_252); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyBuffer = OP_vkDestroyBuffer; | 
|  | stream->write(&opcode_vkDestroyBuffer, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyBuffer, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_253; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_253, 1); | 
|  | stream->write((uint64_t*)&cgen_var_253, 1 * 8); | 
|  | uint64_t cgen_var_254; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_254, 1); | 
|  | stream->write((uint64_t*)&cgen_var_254, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_255 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_255); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyBuffer readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyBuffer returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkBuffer((VkBuffer*)&buffer); | 
|  | mImpl->log("finish vkDestroyBuffer");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateBufferView( | 
|  | VkDevice device, | 
|  | const VkBufferViewCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkBufferView* pView) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateBufferView encode"); | 
|  | mImpl->log("start vkCreateBufferView"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkBufferViewCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkBufferViewCreateInfo*)pool->alloc(sizeof(const VkBufferViewCreateInfo)); | 
|  | deepcopy_VkBufferViewCreateInfo(pool, pCreateInfo, (VkBufferViewCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkBufferViewCreateInfo(mImpl->resources(), (VkBufferViewCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_256; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_256, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_256, 1 * 8); | 
|  | marshal_VkBufferViewCreateInfo(countingStream, (VkBufferViewCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_257 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_257); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_258; | 
|  | countingStream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_258, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_258, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateBufferView = OP_vkCreateBufferView; | 
|  | stream->write(&opcode_vkCreateBufferView, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateBufferView, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_259; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_259, 1); | 
|  | stream->write((uint64_t*)&cgen_var_259, 1 * 8); | 
|  | marshal_VkBufferViewCreateInfo(stream, (VkBufferViewCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_260 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_260); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_261; | 
|  | stream->handleMapping()->mapHandles_VkBufferView_u64(pView, &cgen_var_261, 1); | 
|  | stream->write((uint64_t*)&cgen_var_261, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateBufferView readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_262; | 
|  | stream->read((uint64_t*)&cgen_var_262, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkBufferView(&cgen_var_262, (VkBufferView*)pView, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateBufferView returnUnmarshal"); | 
|  | VkResult vkCreateBufferView_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateBufferView_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateBufferView");; | 
|  | return vkCreateBufferView_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyBufferView( | 
|  | VkDevice device, | 
|  | VkBufferView bufferView, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyBufferView encode"); | 
|  | mImpl->log("start vkDestroyBufferView"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkBufferView local_bufferView; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_bufferView = bufferView; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_263; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_263, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_263, 1 * 8); | 
|  | uint64_t cgen_var_264; | 
|  | countingStream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_264, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_264, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_265 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_265); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyBufferView = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyBufferView = OP_vkDestroyBufferView; | 
|  | stream->write(&opcode_vkDestroyBufferView, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyBufferView, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_266; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_266, 1); | 
|  | stream->write((uint64_t*)&cgen_var_266, 1 * 8); | 
|  | uint64_t cgen_var_267; | 
|  | stream->handleMapping()->mapHandles_VkBufferView_u64(&local_bufferView, &cgen_var_267, 1); | 
|  | stream->write((uint64_t*)&cgen_var_267, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_268 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_268); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyBufferView readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyBufferView returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkBufferView((VkBufferView*)&bufferView); | 
|  | mImpl->log("finish vkDestroyBufferView");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateImage( | 
|  | VkDevice device, | 
|  | const VkImageCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkImage* pImage) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateImage encode"); | 
|  | mImpl->log("start vkCreateImage"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkImageCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkImageCreateInfo*)pool->alloc(sizeof(const VkImageCreateInfo)); | 
|  | deepcopy_VkImageCreateInfo(pool, pCreateInfo, (VkImageCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | mImpl->resources()->unwrap_VkNativeBufferANDROID(pCreateInfo, local_pCreateInfo); | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkImageCreateInfo(mImpl->resources(), (VkImageCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_269; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_269, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_269, 1 * 8); | 
|  | marshal_VkImageCreateInfo(countingStream, (VkImageCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_270 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_270); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_271; | 
|  | countingStream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_271, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_271, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateImage = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateImage = OP_vkCreateImage; | 
|  | stream->write(&opcode_vkCreateImage, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateImage, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_272; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_272, 1); | 
|  | stream->write((uint64_t*)&cgen_var_272, 1 * 8); | 
|  | marshal_VkImageCreateInfo(stream, (VkImageCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_273 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_273); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_274; | 
|  | stream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_274, 1); | 
|  | stream->write((uint64_t*)&cgen_var_274, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateImage readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_275; | 
|  | stream->read((uint64_t*)&cgen_var_275, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_275, (VkImage*)pImage, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateImage returnUnmarshal"); | 
|  | VkResult vkCreateImage_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateImage_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateImage");; | 
|  | return vkCreateImage_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyImage( | 
|  | VkDevice device, | 
|  | VkImage image, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyImage encode"); | 
|  | mImpl->log("start vkDestroyImage"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkImage local_image; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_image = image; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_276; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_276, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_276, 1 * 8); | 
|  | uint64_t cgen_var_277; | 
|  | countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_277, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_277, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_278 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_278); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyImage = OP_vkDestroyImage; | 
|  | stream->write(&opcode_vkDestroyImage, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyImage, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_279; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_279, 1); | 
|  | stream->write((uint64_t*)&cgen_var_279, 1 * 8); | 
|  | uint64_t cgen_var_280; | 
|  | stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_280, 1); | 
|  | stream->write((uint64_t*)&cgen_var_280, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_281 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_281); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyImage readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyImage returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkImage((VkImage*)&image); | 
|  | mImpl->log("finish vkDestroyImage");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetImageSubresourceLayout( | 
|  | VkDevice device, | 
|  | VkImage image, | 
|  | const VkImageSubresource* pSubresource, | 
|  | VkSubresourceLayout* pLayout) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout encode"); | 
|  | mImpl->log("start vkGetImageSubresourceLayout"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkImage local_image; | 
|  | VkImageSubresource* local_pSubresource; | 
|  | local_device = device; | 
|  | local_image = image; | 
|  | local_pSubresource = nullptr; | 
|  | if (pSubresource) | 
|  | { | 
|  | local_pSubresource = (VkImageSubresource*)pool->alloc(sizeof(const VkImageSubresource)); | 
|  | deepcopy_VkImageSubresource(pool, pSubresource, (VkImageSubresource*)(local_pSubresource)); | 
|  | } | 
|  | if (local_pSubresource) | 
|  | { | 
|  | transform_tohost_VkImageSubresource(mImpl->resources(), (VkImageSubresource*)(local_pSubresource)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_282; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_282, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_282, 1 * 8); | 
|  | uint64_t cgen_var_283; | 
|  | countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_283, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_283, 1 * 8); | 
|  | marshal_VkImageSubresource(countingStream, (VkImageSubresource*)(local_pSubresource)); | 
|  | marshal_VkSubresourceLayout(countingStream, (VkSubresourceLayout*)(pLayout)); | 
|  | } | 
|  | uint32_t packetSize_vkGetImageSubresourceLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetImageSubresourceLayout = OP_vkGetImageSubresourceLayout; | 
|  | stream->write(&opcode_vkGetImageSubresourceLayout, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetImageSubresourceLayout, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_284; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_284, 1); | 
|  | stream->write((uint64_t*)&cgen_var_284, 1 * 8); | 
|  | uint64_t cgen_var_285; | 
|  | stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_285, 1); | 
|  | stream->write((uint64_t*)&cgen_var_285, 1 * 8); | 
|  | marshal_VkImageSubresource(stream, (VkImageSubresource*)(local_pSubresource)); | 
|  | marshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout)); | 
|  | AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout readParams"); | 
|  | unmarshal_VkSubresourceLayout(stream, (VkSubresourceLayout*)(pLayout)); | 
|  | if (pLayout) | 
|  | { | 
|  | transform_fromhost_VkSubresourceLayout(mImpl->resources(), (VkSubresourceLayout*)(pLayout)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetImageSubresourceLayout returnUnmarshal"); | 
|  | mImpl->log("finish vkGetImageSubresourceLayout");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateImageView( | 
|  | VkDevice device, | 
|  | const VkImageViewCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkImageView* pView) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateImageView encode"); | 
|  | mImpl->log("start vkCreateImageView"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkImageViewCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkImageViewCreateInfo*)pool->alloc(sizeof(const VkImageViewCreateInfo)); | 
|  | deepcopy_VkImageViewCreateInfo(pool, pCreateInfo, (VkImageViewCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkImageViewCreateInfo(mImpl->resources(), (VkImageViewCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_286; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_286, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_286, 1 * 8); | 
|  | marshal_VkImageViewCreateInfo(countingStream, (VkImageViewCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_287 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_287); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_288; | 
|  | countingStream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_288, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_288, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateImageView = OP_vkCreateImageView; | 
|  | stream->write(&opcode_vkCreateImageView, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateImageView, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_289; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_289, 1); | 
|  | stream->write((uint64_t*)&cgen_var_289, 1 * 8); | 
|  | marshal_VkImageViewCreateInfo(stream, (VkImageViewCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_290 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_290); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_291; | 
|  | stream->handleMapping()->mapHandles_VkImageView_u64(pView, &cgen_var_291, 1); | 
|  | stream->write((uint64_t*)&cgen_var_291, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateImageView readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_292; | 
|  | stream->read((uint64_t*)&cgen_var_292, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkImageView(&cgen_var_292, (VkImageView*)pView, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateImageView returnUnmarshal"); | 
|  | VkResult vkCreateImageView_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateImageView_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateImageView");; | 
|  | return vkCreateImageView_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyImageView( | 
|  | VkDevice device, | 
|  | VkImageView imageView, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyImageView encode"); | 
|  | mImpl->log("start vkDestroyImageView"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkImageView local_imageView; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_imageView = imageView; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_293; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_293, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_293, 1 * 8); | 
|  | uint64_t cgen_var_294; | 
|  | countingStream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_294, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_294, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_295 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_295); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyImageView = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyImageView = OP_vkDestroyImageView; | 
|  | stream->write(&opcode_vkDestroyImageView, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyImageView, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_296; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_296, 1); | 
|  | stream->write((uint64_t*)&cgen_var_296, 1 * 8); | 
|  | uint64_t cgen_var_297; | 
|  | stream->handleMapping()->mapHandles_VkImageView_u64(&local_imageView, &cgen_var_297, 1); | 
|  | stream->write((uint64_t*)&cgen_var_297, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_298 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_298); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyImageView readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyImageView returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkImageView((VkImageView*)&imageView); | 
|  | mImpl->log("finish vkDestroyImageView");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateShaderModule( | 
|  | VkDevice device, | 
|  | const VkShaderModuleCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkShaderModule* pShaderModule) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateShaderModule encode"); | 
|  | mImpl->log("start vkCreateShaderModule"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkShaderModuleCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkShaderModuleCreateInfo*)pool->alloc(sizeof(const VkShaderModuleCreateInfo)); | 
|  | deepcopy_VkShaderModuleCreateInfo(pool, pCreateInfo, (VkShaderModuleCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkShaderModuleCreateInfo(mImpl->resources(), (VkShaderModuleCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_299; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_299, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_299, 1 * 8); | 
|  | marshal_VkShaderModuleCreateInfo(countingStream, (VkShaderModuleCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_300 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_300); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_301; | 
|  | countingStream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_301, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_301, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateShaderModule = OP_vkCreateShaderModule; | 
|  | stream->write(&opcode_vkCreateShaderModule, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateShaderModule, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_302; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_302, 1); | 
|  | stream->write((uint64_t*)&cgen_var_302, 1 * 8); | 
|  | marshal_VkShaderModuleCreateInfo(stream, (VkShaderModuleCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_303 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_303); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_304; | 
|  | stream->handleMapping()->mapHandles_VkShaderModule_u64(pShaderModule, &cgen_var_304, 1); | 
|  | stream->write((uint64_t*)&cgen_var_304, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateShaderModule readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_305; | 
|  | stream->read((uint64_t*)&cgen_var_305, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkShaderModule(&cgen_var_305, (VkShaderModule*)pShaderModule, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateShaderModule returnUnmarshal"); | 
|  | VkResult vkCreateShaderModule_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateShaderModule_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateShaderModule");; | 
|  | return vkCreateShaderModule_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyShaderModule( | 
|  | VkDevice device, | 
|  | VkShaderModule shaderModule, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyShaderModule encode"); | 
|  | mImpl->log("start vkDestroyShaderModule"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkShaderModule local_shaderModule; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_shaderModule = shaderModule; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_306; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_306, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_306, 1 * 8); | 
|  | uint64_t cgen_var_307; | 
|  | countingStream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_307, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_307, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_308 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_308); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyShaderModule = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyShaderModule = OP_vkDestroyShaderModule; | 
|  | stream->write(&opcode_vkDestroyShaderModule, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyShaderModule, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_309; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_309, 1); | 
|  | stream->write((uint64_t*)&cgen_var_309, 1 * 8); | 
|  | uint64_t cgen_var_310; | 
|  | stream->handleMapping()->mapHandles_VkShaderModule_u64(&local_shaderModule, &cgen_var_310, 1); | 
|  | stream->write((uint64_t*)&cgen_var_310, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_311 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_311); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyShaderModule readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyShaderModule returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkShaderModule((VkShaderModule*)&shaderModule); | 
|  | mImpl->log("finish vkDestroyShaderModule");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreatePipelineCache( | 
|  | VkDevice device, | 
|  | const VkPipelineCacheCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkPipelineCache* pPipelineCache) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreatePipelineCache encode"); | 
|  | mImpl->log("start vkCreatePipelineCache"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkPipelineCacheCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkPipelineCacheCreateInfo*)pool->alloc(sizeof(const VkPipelineCacheCreateInfo)); | 
|  | deepcopy_VkPipelineCacheCreateInfo(pool, pCreateInfo, (VkPipelineCacheCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkPipelineCacheCreateInfo(mImpl->resources(), (VkPipelineCacheCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_312; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_312, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_312, 1 * 8); | 
|  | marshal_VkPipelineCacheCreateInfo(countingStream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_313 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_313); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_314; | 
|  | countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_314, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_314, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreatePipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreatePipelineCache = OP_vkCreatePipelineCache; | 
|  | stream->write(&opcode_vkCreatePipelineCache, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreatePipelineCache, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_315; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_315, 1); | 
|  | stream->write((uint64_t*)&cgen_var_315, 1 * 8); | 
|  | marshal_VkPipelineCacheCreateInfo(stream, (VkPipelineCacheCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_316 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_316); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_317; | 
|  | stream->handleMapping()->mapHandles_VkPipelineCache_u64(pPipelineCache, &cgen_var_317, 1); | 
|  | stream->write((uint64_t*)&cgen_var_317, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreatePipelineCache readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_318; | 
|  | stream->read((uint64_t*)&cgen_var_318, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkPipelineCache(&cgen_var_318, (VkPipelineCache*)pPipelineCache, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreatePipelineCache returnUnmarshal"); | 
|  | VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreatePipelineCache_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreatePipelineCache");; | 
|  | return vkCreatePipelineCache_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyPipelineCache( | 
|  | VkDevice device, | 
|  | VkPipelineCache pipelineCache, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyPipelineCache encode"); | 
|  | mImpl->log("start vkDestroyPipelineCache"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkPipelineCache local_pipelineCache; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pipelineCache = pipelineCache; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_319; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_319, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_319, 1 * 8); | 
|  | uint64_t cgen_var_320; | 
|  | countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_320, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_320, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_321 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_321); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyPipelineCache = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyPipelineCache = OP_vkDestroyPipelineCache; | 
|  | stream->write(&opcode_vkDestroyPipelineCache, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyPipelineCache, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_322; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_322, 1); | 
|  | stream->write((uint64_t*)&cgen_var_322, 1 * 8); | 
|  | uint64_t cgen_var_323; | 
|  | stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_323, 1); | 
|  | stream->write((uint64_t*)&cgen_var_323, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_324 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_324); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyPipelineCache readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyPipelineCache returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkPipelineCache((VkPipelineCache*)&pipelineCache); | 
|  | mImpl->log("finish vkDestroyPipelineCache");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetPipelineCacheData( | 
|  | VkDevice device, | 
|  | VkPipelineCache pipelineCache, | 
|  | size_t* pDataSize, | 
|  | void* pData) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPipelineCacheData encode"); | 
|  | mImpl->log("start vkGetPipelineCacheData"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkPipelineCache local_pipelineCache; | 
|  | local_device = device; | 
|  | local_pipelineCache = pipelineCache; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_325; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_325, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_325, 1 * 8); | 
|  | uint64_t cgen_var_326; | 
|  | countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_326, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_326, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_327 = (uint64_t)(uintptr_t)pDataSize; | 
|  | countingStream->putBe64(cgen_var_327); | 
|  | if (pDataSize) | 
|  | { | 
|  | uint64_t cgen_var_328 = (uint64_t)(*pDataSize); | 
|  | countingStream->putBe64(cgen_var_328); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_329 = (uint64_t)(uintptr_t)pData; | 
|  | countingStream->putBe64(cgen_var_329); | 
|  | if (pData) | 
|  | { | 
|  | countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetPipelineCacheData = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPipelineCacheData = OP_vkGetPipelineCacheData; | 
|  | stream->write(&opcode_vkGetPipelineCacheData, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPipelineCacheData, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_330; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_330, 1); | 
|  | stream->write((uint64_t*)&cgen_var_330, 1 * 8); | 
|  | uint64_t cgen_var_331; | 
|  | stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_331, 1); | 
|  | stream->write((uint64_t*)&cgen_var_331, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_332 = (uint64_t)(uintptr_t)pDataSize; | 
|  | stream->putBe64(cgen_var_332); | 
|  | if (pDataSize) | 
|  | { | 
|  | uint64_t cgen_var_333 = (uint64_t)(*pDataSize); | 
|  | stream->putBe64(cgen_var_333); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_334 = (uint64_t)(uintptr_t)pData; | 
|  | stream->putBe64(cgen_var_334); | 
|  | if (pData) | 
|  | { | 
|  | stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPipelineCacheData readParams"); | 
|  | // WARNING PTR CHECK | 
|  | size_t* check_pDataSize; | 
|  | check_pDataSize = (size_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pDataSize) | 
|  | { | 
|  | if (!(check_pDataSize)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n"); | 
|  | } | 
|  | (*pDataSize) = (size_t)stream->getBe64(); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | void* check_pData; | 
|  | check_pData = (void*)(uintptr_t)stream->getBe64(); | 
|  | if (pData) | 
|  | { | 
|  | if (!(check_pData)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pData inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPipelineCacheData returnUnmarshal"); | 
|  | VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetPipelineCacheData_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPipelineCacheData");; | 
|  | return vkGetPipelineCacheData_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkMergePipelineCaches( | 
|  | VkDevice device, | 
|  | VkPipelineCache dstCache, | 
|  | uint32_t srcCacheCount, | 
|  | const VkPipelineCache* pSrcCaches) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkMergePipelineCaches encode"); | 
|  | mImpl->log("start vkMergePipelineCaches"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkPipelineCache local_dstCache; | 
|  | uint32_t local_srcCacheCount; | 
|  | VkPipelineCache* local_pSrcCaches; | 
|  | local_device = device; | 
|  | local_dstCache = dstCache; | 
|  | local_srcCacheCount = srcCacheCount; | 
|  | local_pSrcCaches = nullptr; | 
|  | if (pSrcCaches) | 
|  | { | 
|  | local_pSrcCaches = (VkPipelineCache*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkPipelineCache)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_338; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_338, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_338, 1 * 8); | 
|  | uint64_t cgen_var_339; | 
|  | countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_339, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_339, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t)); | 
|  | if (((srcCacheCount))) | 
|  | { | 
|  | uint64_t* cgen_var_340; | 
|  | countingStream->alloc((void**)&cgen_var_340, ((srcCacheCount)) * 8); | 
|  | countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_340, ((srcCacheCount))); | 
|  | countingStream->write((uint64_t*)cgen_var_340, ((srcCacheCount)) * 8); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkMergePipelineCaches = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkMergePipelineCaches = OP_vkMergePipelineCaches; | 
|  | stream->write(&opcode_vkMergePipelineCaches, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkMergePipelineCaches, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_341; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_341, 1); | 
|  | stream->write((uint64_t*)&cgen_var_341, 1 * 8); | 
|  | uint64_t cgen_var_342; | 
|  | stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_dstCache, &cgen_var_342, 1); | 
|  | stream->write((uint64_t*)&cgen_var_342, 1 * 8); | 
|  | stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t)); | 
|  | if (((srcCacheCount))) | 
|  | { | 
|  | uint64_t* cgen_var_343; | 
|  | stream->alloc((void**)&cgen_var_343, ((srcCacheCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_VkPipelineCache_u64(local_pSrcCaches, cgen_var_343, ((srcCacheCount))); | 
|  | stream->write((uint64_t*)cgen_var_343, ((srcCacheCount)) * 8); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkMergePipelineCaches readParams"); | 
|  | AEMU_SCOPED_TRACE("vkMergePipelineCaches returnUnmarshal"); | 
|  | VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkMergePipelineCaches_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkMergePipelineCaches");; | 
|  | return vkMergePipelineCaches_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateGraphicsPipelines( | 
|  | VkDevice device, | 
|  | VkPipelineCache pipelineCache, | 
|  | uint32_t createInfoCount, | 
|  | const VkGraphicsPipelineCreateInfo* pCreateInfos, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkPipeline* pPipelines) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines encode"); | 
|  | mImpl->log("start vkCreateGraphicsPipelines"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkPipelineCache local_pipelineCache; | 
|  | uint32_t local_createInfoCount; | 
|  | VkGraphicsPipelineCreateInfo* local_pCreateInfos; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pipelineCache = pipelineCache; | 
|  | local_createInfoCount = createInfoCount; | 
|  | local_pCreateInfos = nullptr; | 
|  | if (pCreateInfos) | 
|  | { | 
|  | local_pCreateInfos = (VkGraphicsPipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkGraphicsPipelineCreateInfo)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i) | 
|  | { | 
|  | deepcopy_VkGraphicsPipelineCreateInfo(pool, pCreateInfos + i, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i)); | 
|  | } | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfos) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkGraphicsPipelineCreateInfo(mImpl->resources(), (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i)); | 
|  | } | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_344; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_344, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_344, 1 * 8); | 
|  | uint64_t cgen_var_345; | 
|  | countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_345, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_345, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i) | 
|  | { | 
|  | marshal_VkGraphicsPipelineCreateInfo(countingStream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_346 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_346); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | if (((createInfoCount))) | 
|  | { | 
|  | uint64_t* cgen_var_347; | 
|  | countingStream->alloc((void**)&cgen_var_347, ((createInfoCount)) * 8); | 
|  | countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_347, ((createInfoCount))); | 
|  | countingStream->write((uint64_t*)cgen_var_347, ((createInfoCount)) * 8); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkCreateGraphicsPipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateGraphicsPipelines = OP_vkCreateGraphicsPipelines; | 
|  | stream->write(&opcode_vkCreateGraphicsPipelines, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateGraphicsPipelines, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_348; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_348, 1); | 
|  | stream->write((uint64_t*)&cgen_var_348, 1 * 8); | 
|  | uint64_t cgen_var_349; | 
|  | stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_349, 1); | 
|  | stream->write((uint64_t*)&cgen_var_349, 1 * 8); | 
|  | stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i) | 
|  | { | 
|  | marshal_VkGraphicsPipelineCreateInfo(stream, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_350 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_350); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | if (((createInfoCount))) | 
|  | { | 
|  | uint64_t* cgen_var_351; | 
|  | stream->alloc((void**)&cgen_var_351, ((createInfoCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_351, ((createInfoCount))); | 
|  | stream->write((uint64_t*)cgen_var_351, ((createInfoCount)) * 8); | 
|  | } | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | if (((createInfoCount))) | 
|  | { | 
|  | uint64_t* cgen_var_352; | 
|  | stream->alloc((void**)&cgen_var_352, ((createInfoCount)) * 8); | 
|  | stream->read((uint64_t*)cgen_var_352, ((createInfoCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_352, (VkPipeline*)pPipelines, ((createInfoCount))); | 
|  | } | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateGraphicsPipelines returnUnmarshal"); | 
|  | VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateGraphicsPipelines");; | 
|  | return vkCreateGraphicsPipelines_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateComputePipelines( | 
|  | VkDevice device, | 
|  | VkPipelineCache pipelineCache, | 
|  | uint32_t createInfoCount, | 
|  | const VkComputePipelineCreateInfo* pCreateInfos, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkPipeline* pPipelines) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateComputePipelines encode"); | 
|  | mImpl->log("start vkCreateComputePipelines"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkPipelineCache local_pipelineCache; | 
|  | uint32_t local_createInfoCount; | 
|  | VkComputePipelineCreateInfo* local_pCreateInfos; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pipelineCache = pipelineCache; | 
|  | local_createInfoCount = createInfoCount; | 
|  | local_pCreateInfos = nullptr; | 
|  | if (pCreateInfos) | 
|  | { | 
|  | local_pCreateInfos = (VkComputePipelineCreateInfo*)pool->alloc(((createInfoCount)) * sizeof(const VkComputePipelineCreateInfo)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i) | 
|  | { | 
|  | deepcopy_VkComputePipelineCreateInfo(pool, pCreateInfos + i, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i)); | 
|  | } | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfos) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkComputePipelineCreateInfo(mImpl->resources(), (VkComputePipelineCreateInfo*)(local_pCreateInfos + i)); | 
|  | } | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_353; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_353, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_353, 1 * 8); | 
|  | uint64_t cgen_var_354; | 
|  | countingStream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_354, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_354, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i) | 
|  | { | 
|  | marshal_VkComputePipelineCreateInfo(countingStream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_355 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_355); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | if (((createInfoCount))) | 
|  | { | 
|  | uint64_t* cgen_var_356; | 
|  | countingStream->alloc((void**)&cgen_var_356, ((createInfoCount)) * 8); | 
|  | countingStream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_356, ((createInfoCount))); | 
|  | countingStream->write((uint64_t*)cgen_var_356, ((createInfoCount)) * 8); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkCreateComputePipelines = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateComputePipelines = OP_vkCreateComputePipelines; | 
|  | stream->write(&opcode_vkCreateComputePipelines, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateComputePipelines, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_357; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_357, 1); | 
|  | stream->write((uint64_t*)&cgen_var_357, 1 * 8); | 
|  | uint64_t cgen_var_358; | 
|  | stream->handleMapping()->mapHandles_VkPipelineCache_u64(&local_pipelineCache, &cgen_var_358, 1); | 
|  | stream->write((uint64_t*)&cgen_var_358, 1 * 8); | 
|  | stream->write((uint32_t*)&local_createInfoCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i) | 
|  | { | 
|  | marshal_VkComputePipelineCreateInfo(stream, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_359 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_359); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | if (((createInfoCount))) | 
|  | { | 
|  | uint64_t* cgen_var_360; | 
|  | stream->alloc((void**)&cgen_var_360, ((createInfoCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_VkPipeline_u64(pPipelines, cgen_var_360, ((createInfoCount))); | 
|  | stream->write((uint64_t*)cgen_var_360, ((createInfoCount)) * 8); | 
|  | } | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateComputePipelines readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | if (((createInfoCount))) | 
|  | { | 
|  | uint64_t* cgen_var_361; | 
|  | stream->alloc((void**)&cgen_var_361, ((createInfoCount)) * 8); | 
|  | stream->read((uint64_t*)cgen_var_361, ((createInfoCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_361, (VkPipeline*)pPipelines, ((createInfoCount))); | 
|  | } | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateComputePipelines returnUnmarshal"); | 
|  | VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateComputePipelines_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateComputePipelines");; | 
|  | return vkCreateComputePipelines_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyPipeline( | 
|  | VkDevice device, | 
|  | VkPipeline pipeline, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyPipeline encode"); | 
|  | mImpl->log("start vkDestroyPipeline"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkPipeline local_pipeline; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pipeline = pipeline; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_362; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_362, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_362, 1 * 8); | 
|  | uint64_t cgen_var_363; | 
|  | countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_363, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_363, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_364 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_364); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyPipeline = OP_vkDestroyPipeline; | 
|  | stream->write(&opcode_vkDestroyPipeline, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyPipeline, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_365; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_365, 1); | 
|  | stream->write((uint64_t*)&cgen_var_365, 1 * 8); | 
|  | uint64_t cgen_var_366; | 
|  | stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_366, 1); | 
|  | stream->write((uint64_t*)&cgen_var_366, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_367 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_367); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyPipeline readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyPipeline returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkPipeline((VkPipeline*)&pipeline); | 
|  | mImpl->log("finish vkDestroyPipeline");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreatePipelineLayout( | 
|  | VkDevice device, | 
|  | const VkPipelineLayoutCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkPipelineLayout* pPipelineLayout) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreatePipelineLayout encode"); | 
|  | mImpl->log("start vkCreatePipelineLayout"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkPipelineLayoutCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkPipelineLayoutCreateInfo*)pool->alloc(sizeof(const VkPipelineLayoutCreateInfo)); | 
|  | deepcopy_VkPipelineLayoutCreateInfo(pool, pCreateInfo, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkPipelineLayoutCreateInfo(mImpl->resources(), (VkPipelineLayoutCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_368; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_368, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_368, 1 * 8); | 
|  | marshal_VkPipelineLayoutCreateInfo(countingStream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_369 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_369); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_370; | 
|  | countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_370, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_370, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreatePipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreatePipelineLayout = OP_vkCreatePipelineLayout; | 
|  | stream->write(&opcode_vkCreatePipelineLayout, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreatePipelineLayout, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_371; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_371, 1); | 
|  | stream->write((uint64_t*)&cgen_var_371, 1 * 8); | 
|  | marshal_VkPipelineLayoutCreateInfo(stream, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_372 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_372); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_373; | 
|  | stream->handleMapping()->mapHandles_VkPipelineLayout_u64(pPipelineLayout, &cgen_var_373, 1); | 
|  | stream->write((uint64_t*)&cgen_var_373, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreatePipelineLayout readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_374; | 
|  | stream->read((uint64_t*)&cgen_var_374, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_374, (VkPipelineLayout*)pPipelineLayout, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreatePipelineLayout returnUnmarshal"); | 
|  | VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreatePipelineLayout_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreatePipelineLayout");; | 
|  | return vkCreatePipelineLayout_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyPipelineLayout( | 
|  | VkDevice device, | 
|  | VkPipelineLayout pipelineLayout, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyPipelineLayout encode"); | 
|  | mImpl->log("start vkDestroyPipelineLayout"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkPipelineLayout local_pipelineLayout; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pipelineLayout = pipelineLayout; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_375; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_375, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_375, 1 * 8); | 
|  | uint64_t cgen_var_376; | 
|  | countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_376, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_376, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_377 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_377); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyPipelineLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyPipelineLayout = OP_vkDestroyPipelineLayout; | 
|  | stream->write(&opcode_vkDestroyPipelineLayout, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyPipelineLayout, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_378; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_378, 1); | 
|  | stream->write((uint64_t*)&cgen_var_378, 1 * 8); | 
|  | uint64_t cgen_var_379; | 
|  | stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_pipelineLayout, &cgen_var_379, 1); | 
|  | stream->write((uint64_t*)&cgen_var_379, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_380 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_380); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyPipelineLayout readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyPipelineLayout returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkPipelineLayout((VkPipelineLayout*)&pipelineLayout); | 
|  | mImpl->log("finish vkDestroyPipelineLayout");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateSampler( | 
|  | VkDevice device, | 
|  | const VkSamplerCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkSampler* pSampler) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateSampler encode"); | 
|  | mImpl->log("start vkCreateSampler"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkSamplerCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkSamplerCreateInfo*)pool->alloc(sizeof(const VkSamplerCreateInfo)); | 
|  | deepcopy_VkSamplerCreateInfo(pool, pCreateInfo, (VkSamplerCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkSamplerCreateInfo(mImpl->resources(), (VkSamplerCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_381; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_381, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_381, 1 * 8); | 
|  | marshal_VkSamplerCreateInfo(countingStream, (VkSamplerCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_382 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_382); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_383; | 
|  | countingStream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_383, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_383, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateSampler = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateSampler = OP_vkCreateSampler; | 
|  | stream->write(&opcode_vkCreateSampler, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateSampler, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_384; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_384, 1); | 
|  | stream->write((uint64_t*)&cgen_var_384, 1 * 8); | 
|  | marshal_VkSamplerCreateInfo(stream, (VkSamplerCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_385 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_385); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_386; | 
|  | stream->handleMapping()->mapHandles_VkSampler_u64(pSampler, &cgen_var_386, 1); | 
|  | stream->write((uint64_t*)&cgen_var_386, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateSampler readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_387; | 
|  | stream->read((uint64_t*)&cgen_var_387, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkSampler(&cgen_var_387, (VkSampler*)pSampler, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateSampler returnUnmarshal"); | 
|  | VkResult vkCreateSampler_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateSampler_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateSampler");; | 
|  | return vkCreateSampler_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroySampler( | 
|  | VkDevice device, | 
|  | VkSampler sampler, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroySampler encode"); | 
|  | mImpl->log("start vkDestroySampler"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkSampler local_sampler; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_sampler = sampler; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_388; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_388, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_388, 1 * 8); | 
|  | uint64_t cgen_var_389; | 
|  | countingStream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_389, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_389, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_390 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_390); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroySampler = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroySampler = OP_vkDestroySampler; | 
|  | stream->write(&opcode_vkDestroySampler, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroySampler, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_391; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_391, 1); | 
|  | stream->write((uint64_t*)&cgen_var_391, 1 * 8); | 
|  | uint64_t cgen_var_392; | 
|  | stream->handleMapping()->mapHandles_VkSampler_u64(&local_sampler, &cgen_var_392, 1); | 
|  | stream->write((uint64_t*)&cgen_var_392, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_393 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_393); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroySampler readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroySampler returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkSampler((VkSampler*)&sampler); | 
|  | mImpl->log("finish vkDestroySampler");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateDescriptorSetLayout( | 
|  | VkDevice device, | 
|  | const VkDescriptorSetLayoutCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkDescriptorSetLayout* pSetLayout) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout encode"); | 
|  | mImpl->log("start vkCreateDescriptorSetLayout"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDescriptorSetLayoutCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo)); | 
|  | deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_394; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_394, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_394, 1 * 8); | 
|  | marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_395 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_395); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_396; | 
|  | countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_396, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_396, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateDescriptorSetLayout = OP_vkCreateDescriptorSetLayout; | 
|  | stream->write(&opcode_vkCreateDescriptorSetLayout, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateDescriptorSetLayout, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_397; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_397, 1); | 
|  | stream->write((uint64_t*)&cgen_var_397, 1 * 8); | 
|  | marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_398 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_398); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_399; | 
|  | stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(pSetLayout, &cgen_var_399, 1); | 
|  | stream->write((uint64_t*)&cgen_var_399, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_400; | 
|  | stream->read((uint64_t*)&cgen_var_400, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(&cgen_var_400, (VkDescriptorSetLayout*)pSetLayout, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateDescriptorSetLayout returnUnmarshal"); | 
|  | VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateDescriptorSetLayout");; | 
|  | return vkCreateDescriptorSetLayout_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyDescriptorSetLayout( | 
|  | VkDevice device, | 
|  | VkDescriptorSetLayout descriptorSetLayout, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout encode"); | 
|  | mImpl->log("start vkDestroyDescriptorSetLayout"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDescriptorSetLayout local_descriptorSetLayout; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_descriptorSetLayout = descriptorSetLayout; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_401; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_401, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_401, 1 * 8); | 
|  | uint64_t cgen_var_402; | 
|  | countingStream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_402, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_402, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_403 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_403); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyDescriptorSetLayout = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyDescriptorSetLayout = OP_vkDestroyDescriptorSetLayout; | 
|  | stream->write(&opcode_vkDestroyDescriptorSetLayout, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyDescriptorSetLayout, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_404; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_404, 1); | 
|  | stream->write((uint64_t*)&cgen_var_404, 1 * 8); | 
|  | uint64_t cgen_var_405; | 
|  | stream->handleMapping()->mapHandles_VkDescriptorSetLayout_u64(&local_descriptorSetLayout, &cgen_var_405, 1); | 
|  | stream->write((uint64_t*)&cgen_var_405, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_406 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_406); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyDescriptorSetLayout returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkDescriptorSetLayout((VkDescriptorSetLayout*)&descriptorSetLayout); | 
|  | mImpl->log("finish vkDestroyDescriptorSetLayout");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateDescriptorPool( | 
|  | VkDevice device, | 
|  | const VkDescriptorPoolCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkDescriptorPool* pDescriptorPool) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateDescriptorPool encode"); | 
|  | mImpl->log("start vkCreateDescriptorPool"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDescriptorPoolCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkDescriptorPoolCreateInfo*)pool->alloc(sizeof(const VkDescriptorPoolCreateInfo)); | 
|  | deepcopy_VkDescriptorPoolCreateInfo(pool, pCreateInfo, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkDescriptorPoolCreateInfo(mImpl->resources(), (VkDescriptorPoolCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_407; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_407, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_407, 1 * 8); | 
|  | marshal_VkDescriptorPoolCreateInfo(countingStream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_408 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_408); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_409; | 
|  | countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_409, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_409, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateDescriptorPool = OP_vkCreateDescriptorPool; | 
|  | stream->write(&opcode_vkCreateDescriptorPool, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateDescriptorPool, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_410; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_410, 1); | 
|  | stream->write((uint64_t*)&cgen_var_410, 1 * 8); | 
|  | marshal_VkDescriptorPoolCreateInfo(stream, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_411 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_411); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_412; | 
|  | stream->handleMapping()->mapHandles_VkDescriptorPool_u64(pDescriptorPool, &cgen_var_412, 1); | 
|  | stream->write((uint64_t*)&cgen_var_412, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateDescriptorPool readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_413; | 
|  | stream->read((uint64_t*)&cgen_var_413, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkDescriptorPool(&cgen_var_413, (VkDescriptorPool*)pDescriptorPool, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateDescriptorPool returnUnmarshal"); | 
|  | VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateDescriptorPool_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateDescriptorPool");; | 
|  | return vkCreateDescriptorPool_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyDescriptorPool( | 
|  | VkDevice device, | 
|  | VkDescriptorPool descriptorPool, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyDescriptorPool encode"); | 
|  | mImpl->log("start vkDestroyDescriptorPool"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDescriptorPool local_descriptorPool; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_descriptorPool = descriptorPool; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_414; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_414, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_414, 1 * 8); | 
|  | uint64_t cgen_var_415; | 
|  | countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_415, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_415, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_416 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_416); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyDescriptorPool = OP_vkDestroyDescriptorPool; | 
|  | stream->write(&opcode_vkDestroyDescriptorPool, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyDescriptorPool, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_417; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_417, 1); | 
|  | stream->write((uint64_t*)&cgen_var_417, 1 * 8); | 
|  | uint64_t cgen_var_418; | 
|  | stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_418, 1); | 
|  | stream->write((uint64_t*)&cgen_var_418, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_419 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_419); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyDescriptorPool readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyDescriptorPool returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkDescriptorPool((VkDescriptorPool*)&descriptorPool); | 
|  | mImpl->log("finish vkDestroyDescriptorPool");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkResetDescriptorPool( | 
|  | VkDevice device, | 
|  | VkDescriptorPool descriptorPool, | 
|  | VkDescriptorPoolResetFlags flags) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkResetDescriptorPool encode"); | 
|  | mImpl->log("start vkResetDescriptorPool"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDescriptorPool local_descriptorPool; | 
|  | VkDescriptorPoolResetFlags local_flags; | 
|  | local_device = device; | 
|  | local_descriptorPool = descriptorPool; | 
|  | local_flags = flags; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_420; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_420, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_420, 1 * 8); | 
|  | uint64_t cgen_var_421; | 
|  | countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_421, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_421, 1 * 8); | 
|  | countingStream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags)); | 
|  | } | 
|  | uint32_t packetSize_vkResetDescriptorPool = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkResetDescriptorPool = OP_vkResetDescriptorPool; | 
|  | stream->write(&opcode_vkResetDescriptorPool, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkResetDescriptorPool, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_422; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_422, 1); | 
|  | stream->write((uint64_t*)&cgen_var_422, 1 * 8); | 
|  | uint64_t cgen_var_423; | 
|  | stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_423, 1); | 
|  | stream->write((uint64_t*)&cgen_var_423, 1 * 8); | 
|  | stream->write((VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags)); | 
|  | AEMU_SCOPED_TRACE("vkResetDescriptorPool readParams"); | 
|  | AEMU_SCOPED_TRACE("vkResetDescriptorPool returnUnmarshal"); | 
|  | VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkResetDescriptorPool_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkResetDescriptorPool");; | 
|  | return vkResetDescriptorPool_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkAllocateDescriptorSets( | 
|  | VkDevice device, | 
|  | const VkDescriptorSetAllocateInfo* pAllocateInfo, | 
|  | VkDescriptorSet* pDescriptorSets) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkAllocateDescriptorSets encode"); | 
|  | mImpl->log("start vkAllocateDescriptorSets"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDescriptorSetAllocateInfo* local_pAllocateInfo; | 
|  | local_device = device; | 
|  | local_pAllocateInfo = nullptr; | 
|  | if (pAllocateInfo) | 
|  | { | 
|  | local_pAllocateInfo = (VkDescriptorSetAllocateInfo*)pool->alloc(sizeof(const VkDescriptorSetAllocateInfo)); | 
|  | deepcopy_VkDescriptorSetAllocateInfo(pool, pAllocateInfo, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo)); | 
|  | } | 
|  | if (local_pAllocateInfo) | 
|  | { | 
|  | transform_tohost_VkDescriptorSetAllocateInfo(mImpl->resources(), (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_424; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_424, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_424, 1 * 8); | 
|  | marshal_VkDescriptorSetAllocateInfo(countingStream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo)); | 
|  | if (pAllocateInfo->descriptorSetCount) | 
|  | { | 
|  | uint64_t* cgen_var_425; | 
|  | countingStream->alloc((void**)&cgen_var_425, pAllocateInfo->descriptorSetCount * 8); | 
|  | countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_425, pAllocateInfo->descriptorSetCount); | 
|  | countingStream->write((uint64_t*)cgen_var_425, pAllocateInfo->descriptorSetCount * 8); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkAllocateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkAllocateDescriptorSets = OP_vkAllocateDescriptorSets; | 
|  | stream->write(&opcode_vkAllocateDescriptorSets, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkAllocateDescriptorSets, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_426; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_426, 1); | 
|  | stream->write((uint64_t*)&cgen_var_426, 1 * 8); | 
|  | marshal_VkDescriptorSetAllocateInfo(stream, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo)); | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | if (pAllocateInfo->descriptorSetCount) | 
|  | { | 
|  | uint64_t* cgen_var_427; | 
|  | stream->alloc((void**)&cgen_var_427, pAllocateInfo->descriptorSetCount * 8); | 
|  | stream->handleMapping()->mapHandles_VkDescriptorSet_u64(pDescriptorSets, cgen_var_427, pAllocateInfo->descriptorSetCount); | 
|  | stream->write((uint64_t*)cgen_var_427, pAllocateInfo->descriptorSetCount * 8); | 
|  | } | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkAllocateDescriptorSets readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | if (pAllocateInfo->descriptorSetCount) | 
|  | { | 
|  | uint64_t* cgen_var_428; | 
|  | stream->alloc((void**)&cgen_var_428, pAllocateInfo->descriptorSetCount * 8); | 
|  | stream->read((uint64_t*)cgen_var_428, pAllocateInfo->descriptorSetCount * 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkDescriptorSet(cgen_var_428, (VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount); | 
|  | } | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkAllocateDescriptorSets returnUnmarshal"); | 
|  | VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkAllocateDescriptorSets");; | 
|  | return vkAllocateDescriptorSets_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkFreeDescriptorSets( | 
|  | VkDevice device, | 
|  | VkDescriptorPool descriptorPool, | 
|  | uint32_t descriptorSetCount, | 
|  | const VkDescriptorSet* pDescriptorSets) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkFreeDescriptorSets encode"); | 
|  | mImpl->log("start vkFreeDescriptorSets"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDescriptorPool local_descriptorPool; | 
|  | uint32_t local_descriptorSetCount; | 
|  | VkDescriptorSet* local_pDescriptorSets; | 
|  | local_device = device; | 
|  | local_descriptorPool = descriptorPool; | 
|  | local_descriptorSetCount = descriptorSetCount; | 
|  | local_pDescriptorSets = nullptr; | 
|  | if (pDescriptorSets) | 
|  | { | 
|  | local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_429; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_429, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_429, 1 * 8); | 
|  | uint64_t cgen_var_430; | 
|  | countingStream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_430, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_430, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_431 = (uint64_t)(uintptr_t)local_pDescriptorSets; | 
|  | countingStream->putBe64(cgen_var_431); | 
|  | if (local_pDescriptorSets) | 
|  | { | 
|  | if (((descriptorSetCount))) | 
|  | { | 
|  | uint64_t* cgen_var_432; | 
|  | countingStream->alloc((void**)&cgen_var_432, ((descriptorSetCount)) * 8); | 
|  | countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_432, ((descriptorSetCount))); | 
|  | countingStream->write((uint64_t*)cgen_var_432, ((descriptorSetCount)) * 8); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkFreeDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkFreeDescriptorSets = OP_vkFreeDescriptorSets; | 
|  | stream->write(&opcode_vkFreeDescriptorSets, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkFreeDescriptorSets, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_433; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_433, 1); | 
|  | stream->write((uint64_t*)&cgen_var_433, 1 * 8); | 
|  | uint64_t cgen_var_434; | 
|  | stream->handleMapping()->mapHandles_VkDescriptorPool_u64(&local_descriptorPool, &cgen_var_434, 1); | 
|  | stream->write((uint64_t*)&cgen_var_434, 1 * 8); | 
|  | stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_435 = (uint64_t)(uintptr_t)local_pDescriptorSets; | 
|  | stream->putBe64(cgen_var_435); | 
|  | if (local_pDescriptorSets) | 
|  | { | 
|  | if (((descriptorSetCount))) | 
|  | { | 
|  | uint64_t* cgen_var_436; | 
|  | stream->alloc((void**)&cgen_var_436, ((descriptorSetCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_436, ((descriptorSetCount))); | 
|  | stream->write((uint64_t*)cgen_var_436, ((descriptorSetCount)) * 8); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkFreeDescriptorSets readParams"); | 
|  | AEMU_SCOPED_TRACE("vkFreeDescriptorSets returnUnmarshal"); | 
|  | VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkFreeDescriptorSets_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | if (pDescriptorSets) | 
|  | { | 
|  | resources->destroyMapping()->mapHandles_VkDescriptorSet((VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount))); | 
|  | } | 
|  | mImpl->log("finish vkFreeDescriptorSets");; | 
|  | return vkFreeDescriptorSets_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkUpdateDescriptorSets( | 
|  | VkDevice device, | 
|  | uint32_t descriptorWriteCount, | 
|  | const VkWriteDescriptorSet* pDescriptorWrites, | 
|  | uint32_t descriptorCopyCount, | 
|  | const VkCopyDescriptorSet* pDescriptorCopies) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkUpdateDescriptorSets encode"); | 
|  | mImpl->log("start vkUpdateDescriptorSets"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | uint32_t local_descriptorWriteCount; | 
|  | VkWriteDescriptorSet* local_pDescriptorWrites; | 
|  | uint32_t local_descriptorCopyCount; | 
|  | VkCopyDescriptorSet* local_pDescriptorCopies; | 
|  | local_device = device; | 
|  | local_descriptorWriteCount = descriptorWriteCount; | 
|  | local_pDescriptorWrites = nullptr; | 
|  | if (pDescriptorWrites) | 
|  | { | 
|  | local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i) | 
|  | { | 
|  | deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i)); | 
|  | } | 
|  | } | 
|  | local_descriptorCopyCount = descriptorCopyCount; | 
|  | local_pDescriptorCopies = nullptr; | 
|  | if (pDescriptorCopies) | 
|  | { | 
|  | local_pDescriptorCopies = (VkCopyDescriptorSet*)pool->alloc(((descriptorCopyCount)) * sizeof(const VkCopyDescriptorSet)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i) | 
|  | { | 
|  | deepcopy_VkCopyDescriptorSet(pool, pDescriptorCopies + i, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i)); | 
|  | } | 
|  | } | 
|  | if (local_pDescriptorWrites) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkWriteDescriptorSet(mImpl->resources(), (VkWriteDescriptorSet*)(local_pDescriptorWrites + i)); | 
|  | } | 
|  | } | 
|  | if (local_pDescriptorCopies) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkCopyDescriptorSet(mImpl->resources(), (VkCopyDescriptorSet*)(local_pDescriptorCopies + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_437; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_437, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_437, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i) | 
|  | { | 
|  | marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i)); | 
|  | } | 
|  | countingStream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i) | 
|  | { | 
|  | marshal_VkCopyDescriptorSet(countingStream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkUpdateDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkUpdateDescriptorSets = OP_vkUpdateDescriptorSets; | 
|  | stream->write(&opcode_vkUpdateDescriptorSets, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkUpdateDescriptorSets, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_438; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_438, 1); | 
|  | stream->write((uint64_t*)&cgen_var_438, 1 * 8); | 
|  | stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i) | 
|  | { | 
|  | marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i)); | 
|  | } | 
|  | stream->write((uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i) | 
|  | { | 
|  | marshal_VkCopyDescriptorSet(stream, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkUpdateDescriptorSets readParams"); | 
|  | AEMU_SCOPED_TRACE("vkUpdateDescriptorSets returnUnmarshal"); | 
|  | mImpl->log("finish vkUpdateDescriptorSets");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateFramebuffer( | 
|  | VkDevice device, | 
|  | const VkFramebufferCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkFramebuffer* pFramebuffer) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateFramebuffer encode"); | 
|  | mImpl->log("start vkCreateFramebuffer"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkFramebufferCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkFramebufferCreateInfo*)pool->alloc(sizeof(const VkFramebufferCreateInfo)); | 
|  | deepcopy_VkFramebufferCreateInfo(pool, pCreateInfo, (VkFramebufferCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkFramebufferCreateInfo(mImpl->resources(), (VkFramebufferCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_439; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_439, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_439, 1 * 8); | 
|  | marshal_VkFramebufferCreateInfo(countingStream, (VkFramebufferCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_440 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_440); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_441; | 
|  | countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_441, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_441, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateFramebuffer = OP_vkCreateFramebuffer; | 
|  | stream->write(&opcode_vkCreateFramebuffer, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateFramebuffer, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_442; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_442, 1); | 
|  | stream->write((uint64_t*)&cgen_var_442, 1 * 8); | 
|  | marshal_VkFramebufferCreateInfo(stream, (VkFramebufferCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_443 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_443); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_444; | 
|  | stream->handleMapping()->mapHandles_VkFramebuffer_u64(pFramebuffer, &cgen_var_444, 1); | 
|  | stream->write((uint64_t*)&cgen_var_444, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateFramebuffer readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_445; | 
|  | stream->read((uint64_t*)&cgen_var_445, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkFramebuffer(&cgen_var_445, (VkFramebuffer*)pFramebuffer, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateFramebuffer returnUnmarshal"); | 
|  | VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateFramebuffer_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateFramebuffer");; | 
|  | return vkCreateFramebuffer_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyFramebuffer( | 
|  | VkDevice device, | 
|  | VkFramebuffer framebuffer, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyFramebuffer encode"); | 
|  | mImpl->log("start vkDestroyFramebuffer"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkFramebuffer local_framebuffer; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_framebuffer = framebuffer; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_446; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_446, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_446, 1 * 8); | 
|  | uint64_t cgen_var_447; | 
|  | countingStream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_447, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_447, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_448 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_448); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyFramebuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyFramebuffer = OP_vkDestroyFramebuffer; | 
|  | stream->write(&opcode_vkDestroyFramebuffer, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyFramebuffer, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_449; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_449, 1); | 
|  | stream->write((uint64_t*)&cgen_var_449, 1 * 8); | 
|  | uint64_t cgen_var_450; | 
|  | stream->handleMapping()->mapHandles_VkFramebuffer_u64(&local_framebuffer, &cgen_var_450, 1); | 
|  | stream->write((uint64_t*)&cgen_var_450, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_451 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_451); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyFramebuffer readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyFramebuffer returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkFramebuffer((VkFramebuffer*)&framebuffer); | 
|  | mImpl->log("finish vkDestroyFramebuffer");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateRenderPass( | 
|  | VkDevice device, | 
|  | const VkRenderPassCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkRenderPass* pRenderPass) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateRenderPass encode"); | 
|  | mImpl->log("start vkCreateRenderPass"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkRenderPassCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkRenderPassCreateInfo*)pool->alloc(sizeof(const VkRenderPassCreateInfo)); | 
|  | deepcopy_VkRenderPassCreateInfo(pool, pCreateInfo, (VkRenderPassCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkRenderPassCreateInfo(mImpl->resources(), (VkRenderPassCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_452; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_452, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_452, 1 * 8); | 
|  | marshal_VkRenderPassCreateInfo(countingStream, (VkRenderPassCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_453 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_453); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_454; | 
|  | countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_454, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_454, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateRenderPass = OP_vkCreateRenderPass; | 
|  | stream->write(&opcode_vkCreateRenderPass, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateRenderPass, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_455; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_455, 1); | 
|  | stream->write((uint64_t*)&cgen_var_455, 1 * 8); | 
|  | marshal_VkRenderPassCreateInfo(stream, (VkRenderPassCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_456 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_456); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_457; | 
|  | stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_457, 1); | 
|  | stream->write((uint64_t*)&cgen_var_457, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateRenderPass readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_458; | 
|  | stream->read((uint64_t*)&cgen_var_458, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_458, (VkRenderPass*)pRenderPass, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateRenderPass returnUnmarshal"); | 
|  | VkResult vkCreateRenderPass_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateRenderPass_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateRenderPass");; | 
|  | return vkCreateRenderPass_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyRenderPass( | 
|  | VkDevice device, | 
|  | VkRenderPass renderPass, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyRenderPass encode"); | 
|  | mImpl->log("start vkDestroyRenderPass"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkRenderPass local_renderPass; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_renderPass = renderPass; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_459; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_459, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_459, 1 * 8); | 
|  | uint64_t cgen_var_460; | 
|  | countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_460, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_460, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_461 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_461); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyRenderPass = OP_vkDestroyRenderPass; | 
|  | stream->write(&opcode_vkDestroyRenderPass, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyRenderPass, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_462; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_462, 1); | 
|  | stream->write((uint64_t*)&cgen_var_462, 1 * 8); | 
|  | uint64_t cgen_var_463; | 
|  | stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_463, 1); | 
|  | stream->write((uint64_t*)&cgen_var_463, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_464 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_464); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyRenderPass readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyRenderPass returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkRenderPass((VkRenderPass*)&renderPass); | 
|  | mImpl->log("finish vkDestroyRenderPass");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetRenderAreaGranularity( | 
|  | VkDevice device, | 
|  | VkRenderPass renderPass, | 
|  | VkExtent2D* pGranularity) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity encode"); | 
|  | mImpl->log("start vkGetRenderAreaGranularity"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkRenderPass local_renderPass; | 
|  | local_device = device; | 
|  | local_renderPass = renderPass; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_465; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_465, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_465, 1 * 8); | 
|  | uint64_t cgen_var_466; | 
|  | countingStream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_466, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_466, 1 * 8); | 
|  | marshal_VkExtent2D(countingStream, (VkExtent2D*)(pGranularity)); | 
|  | } | 
|  | uint32_t packetSize_vkGetRenderAreaGranularity = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetRenderAreaGranularity = OP_vkGetRenderAreaGranularity; | 
|  | stream->write(&opcode_vkGetRenderAreaGranularity, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetRenderAreaGranularity, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_467; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_467, 1); | 
|  | stream->write((uint64_t*)&cgen_var_467, 1 * 8); | 
|  | uint64_t cgen_var_468; | 
|  | stream->handleMapping()->mapHandles_VkRenderPass_u64(&local_renderPass, &cgen_var_468, 1); | 
|  | stream->write((uint64_t*)&cgen_var_468, 1 * 8); | 
|  | marshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity)); | 
|  | AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity readParams"); | 
|  | unmarshal_VkExtent2D(stream, (VkExtent2D*)(pGranularity)); | 
|  | if (pGranularity) | 
|  | { | 
|  | transform_fromhost_VkExtent2D(mImpl->resources(), (VkExtent2D*)(pGranularity)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetRenderAreaGranularity returnUnmarshal"); | 
|  | mImpl->log("finish vkGetRenderAreaGranularity");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateCommandPool( | 
|  | VkDevice device, | 
|  | const VkCommandPoolCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkCommandPool* pCommandPool) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateCommandPool encode"); | 
|  | mImpl->log("start vkCreateCommandPool"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkCommandPoolCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkCommandPoolCreateInfo*)pool->alloc(sizeof(const VkCommandPoolCreateInfo)); | 
|  | deepcopy_VkCommandPoolCreateInfo(pool, pCreateInfo, (VkCommandPoolCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkCommandPoolCreateInfo(mImpl->resources(), (VkCommandPoolCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_469; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_469, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_469, 1 * 8); | 
|  | marshal_VkCommandPoolCreateInfo(countingStream, (VkCommandPoolCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_470 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_470); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_471; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_471, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_471, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateCommandPool = OP_vkCreateCommandPool; | 
|  | stream->write(&opcode_vkCreateCommandPool, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateCommandPool, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_472; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_472, 1); | 
|  | stream->write((uint64_t*)&cgen_var_472, 1 * 8); | 
|  | marshal_VkCommandPoolCreateInfo(stream, (VkCommandPoolCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_473 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_473); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_474; | 
|  | stream->handleMapping()->mapHandles_VkCommandPool_u64(pCommandPool, &cgen_var_474, 1); | 
|  | stream->write((uint64_t*)&cgen_var_474, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateCommandPool readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_475; | 
|  | stream->read((uint64_t*)&cgen_var_475, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkCommandPool(&cgen_var_475, (VkCommandPool*)pCommandPool, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateCommandPool returnUnmarshal"); | 
|  | VkResult vkCreateCommandPool_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateCommandPool_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateCommandPool");; | 
|  | return vkCreateCommandPool_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyCommandPool( | 
|  | VkDevice device, | 
|  | VkCommandPool commandPool, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyCommandPool encode"); | 
|  | mImpl->log("start vkDestroyCommandPool"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkCommandPool local_commandPool; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_commandPool = commandPool; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_476; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_476, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_476, 1 * 8); | 
|  | uint64_t cgen_var_477; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_477, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_477, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_478 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_478); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyCommandPool = OP_vkDestroyCommandPool; | 
|  | stream->write(&opcode_vkDestroyCommandPool, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyCommandPool, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_479; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_479, 1); | 
|  | stream->write((uint64_t*)&cgen_var_479, 1 * 8); | 
|  | uint64_t cgen_var_480; | 
|  | stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_480, 1); | 
|  | stream->write((uint64_t*)&cgen_var_480, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_481 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_481); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyCommandPool readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyCommandPool returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkCommandPool((VkCommandPool*)&commandPool); | 
|  | mImpl->log("finish vkDestroyCommandPool");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkResetCommandPool( | 
|  | VkDevice device, | 
|  | VkCommandPool commandPool, | 
|  | VkCommandPoolResetFlags flags) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkResetCommandPool encode"); | 
|  | mImpl->log("start vkResetCommandPool"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkCommandPool local_commandPool; | 
|  | VkCommandPoolResetFlags local_flags; | 
|  | local_device = device; | 
|  | local_commandPool = commandPool; | 
|  | local_flags = flags; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_482; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_482, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_482, 1 * 8); | 
|  | uint64_t cgen_var_483; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_483, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_483, 1 * 8); | 
|  | countingStream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags)); | 
|  | } | 
|  | uint32_t packetSize_vkResetCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkResetCommandPool = OP_vkResetCommandPool; | 
|  | stream->write(&opcode_vkResetCommandPool, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkResetCommandPool, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_484; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_484, 1); | 
|  | stream->write((uint64_t*)&cgen_var_484, 1 * 8); | 
|  | uint64_t cgen_var_485; | 
|  | stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_485, 1); | 
|  | stream->write((uint64_t*)&cgen_var_485, 1 * 8); | 
|  | stream->write((VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags)); | 
|  | AEMU_SCOPED_TRACE("vkResetCommandPool readParams"); | 
|  | AEMU_SCOPED_TRACE("vkResetCommandPool returnUnmarshal"); | 
|  | VkResult vkResetCommandPool_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkResetCommandPool_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkResetCommandPool");; | 
|  | return vkResetCommandPool_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkAllocateCommandBuffers( | 
|  | VkDevice device, | 
|  | const VkCommandBufferAllocateInfo* pAllocateInfo, | 
|  | VkCommandBuffer* pCommandBuffers) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkAllocateCommandBuffers encode"); | 
|  | mImpl->log("start vkAllocateCommandBuffers"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkCommandBufferAllocateInfo* local_pAllocateInfo; | 
|  | local_device = device; | 
|  | local_pAllocateInfo = nullptr; | 
|  | if (pAllocateInfo) | 
|  | { | 
|  | local_pAllocateInfo = (VkCommandBufferAllocateInfo*)pool->alloc(sizeof(const VkCommandBufferAllocateInfo)); | 
|  | deepcopy_VkCommandBufferAllocateInfo(pool, pAllocateInfo, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo)); | 
|  | } | 
|  | if (local_pAllocateInfo) | 
|  | { | 
|  | transform_tohost_VkCommandBufferAllocateInfo(mImpl->resources(), (VkCommandBufferAllocateInfo*)(local_pAllocateInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_486; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_486, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_486, 1 * 8); | 
|  | marshal_VkCommandBufferAllocateInfo(countingStream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo)); | 
|  | if (pAllocateInfo->commandBufferCount) | 
|  | { | 
|  | uint64_t* cgen_var_487; | 
|  | countingStream->alloc((void**)&cgen_var_487, pAllocateInfo->commandBufferCount * 8); | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_487, pAllocateInfo->commandBufferCount); | 
|  | countingStream->write((uint64_t*)cgen_var_487, pAllocateInfo->commandBufferCount * 8); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkAllocateCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkAllocateCommandBuffers = OP_vkAllocateCommandBuffers; | 
|  | stream->write(&opcode_vkAllocateCommandBuffers, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkAllocateCommandBuffers, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_488; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_488, 1); | 
|  | stream->write((uint64_t*)&cgen_var_488, 1 * 8); | 
|  | marshal_VkCommandBufferAllocateInfo(stream, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo)); | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | if (pAllocateInfo->commandBufferCount) | 
|  | { | 
|  | uint64_t* cgen_var_489; | 
|  | stream->alloc((void**)&cgen_var_489, pAllocateInfo->commandBufferCount * 8); | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(pCommandBuffers, cgen_var_489, pAllocateInfo->commandBufferCount); | 
|  | stream->write((uint64_t*)cgen_var_489, pAllocateInfo->commandBufferCount * 8); | 
|  | } | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkAllocateCommandBuffers readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | if (pAllocateInfo->commandBufferCount) | 
|  | { | 
|  | uint64_t* cgen_var_490; | 
|  | stream->alloc((void**)&cgen_var_490, pAllocateInfo->commandBufferCount * 8); | 
|  | stream->read((uint64_t*)cgen_var_490, pAllocateInfo->commandBufferCount * 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkCommandBuffer(cgen_var_490, (VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount); | 
|  | } | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkAllocateCommandBuffers returnUnmarshal"); | 
|  | VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkAllocateCommandBuffers");; | 
|  | return vkAllocateCommandBuffers_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkFreeCommandBuffers( | 
|  | VkDevice device, | 
|  | VkCommandPool commandPool, | 
|  | uint32_t commandBufferCount, | 
|  | const VkCommandBuffer* pCommandBuffers) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkFreeCommandBuffers encode"); | 
|  | mImpl->log("start vkFreeCommandBuffers"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkCommandPool local_commandPool; | 
|  | uint32_t local_commandBufferCount; | 
|  | VkCommandBuffer* local_pCommandBuffers; | 
|  | local_device = device; | 
|  | local_commandPool = commandPool; | 
|  | local_commandBufferCount = commandBufferCount; | 
|  | local_pCommandBuffers = nullptr; | 
|  | if (pCommandBuffers) | 
|  | { | 
|  | local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_491; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_491, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_491, 1 * 8); | 
|  | uint64_t cgen_var_492; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_492, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_492, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_493 = (uint64_t)(uintptr_t)local_pCommandBuffers; | 
|  | countingStream->putBe64(cgen_var_493); | 
|  | if (local_pCommandBuffers) | 
|  | { | 
|  | if (((commandBufferCount))) | 
|  | { | 
|  | uint64_t* cgen_var_494; | 
|  | countingStream->alloc((void**)&cgen_var_494, ((commandBufferCount)) * 8); | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_494, ((commandBufferCount))); | 
|  | countingStream->write((uint64_t*)cgen_var_494, ((commandBufferCount)) * 8); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkFreeCommandBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkFreeCommandBuffers = OP_vkFreeCommandBuffers; | 
|  | stream->write(&opcode_vkFreeCommandBuffers, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkFreeCommandBuffers, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_495; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_495, 1); | 
|  | stream->write((uint64_t*)&cgen_var_495, 1 * 8); | 
|  | uint64_t cgen_var_496; | 
|  | stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_496, 1); | 
|  | stream->write((uint64_t*)&cgen_var_496, 1 * 8); | 
|  | stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_497 = (uint64_t)(uintptr_t)local_pCommandBuffers; | 
|  | stream->putBe64(cgen_var_497); | 
|  | if (local_pCommandBuffers) | 
|  | { | 
|  | if (((commandBufferCount))) | 
|  | { | 
|  | uint64_t* cgen_var_498; | 
|  | stream->alloc((void**)&cgen_var_498, ((commandBufferCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_498, ((commandBufferCount))); | 
|  | stream->write((uint64_t*)cgen_var_498, ((commandBufferCount)) * 8); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkFreeCommandBuffers readParams"); | 
|  | AEMU_SCOPED_TRACE("vkFreeCommandBuffers returnUnmarshal"); | 
|  | if (pCommandBuffers) | 
|  | { | 
|  | resources->destroyMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)pCommandBuffers, ((commandBufferCount))); | 
|  | } | 
|  | mImpl->log("finish vkFreeCommandBuffers");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkBeginCommandBuffer( | 
|  | VkCommandBuffer commandBuffer, | 
|  | const VkCommandBufferBeginInfo* pBeginInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkBeginCommandBuffer encode"); | 
|  | mImpl->log("start vkBeginCommandBuffer"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkCommandBufferBeginInfo* local_pBeginInfo; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_pBeginInfo = nullptr; | 
|  | if (pBeginInfo) | 
|  | { | 
|  | local_pBeginInfo = (VkCommandBufferBeginInfo*)pool->alloc(sizeof(const VkCommandBufferBeginInfo)); | 
|  | deepcopy_VkCommandBufferBeginInfo(pool, pBeginInfo, (VkCommandBufferBeginInfo*)(local_pBeginInfo)); | 
|  | } | 
|  | if (local_pBeginInfo) | 
|  | { | 
|  | transform_tohost_VkCommandBufferBeginInfo(mImpl->resources(), (VkCommandBufferBeginInfo*)(local_pBeginInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_499; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_499, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_499, 1 * 8); | 
|  | marshal_VkCommandBufferBeginInfo(countingStream, (VkCommandBufferBeginInfo*)(local_pBeginInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkBeginCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkBeginCommandBuffer = OP_vkBeginCommandBuffer; | 
|  | stream->write(&opcode_vkBeginCommandBuffer, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkBeginCommandBuffer, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_500; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_500, 1); | 
|  | stream->write((uint64_t*)&cgen_var_500, 1 * 8); | 
|  | marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo)); | 
|  | AEMU_SCOPED_TRACE("vkBeginCommandBuffer readParams"); | 
|  | AEMU_SCOPED_TRACE("vkBeginCommandBuffer returnUnmarshal"); | 
|  | VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkBeginCommandBuffer_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkBeginCommandBuffer");; | 
|  | return vkBeginCommandBuffer_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkEndCommandBuffer( | 
|  | VkCommandBuffer commandBuffer) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkEndCommandBuffer encode"); | 
|  | mImpl->log("start vkEndCommandBuffer"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | local_commandBuffer = commandBuffer; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_501; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_501, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_501, 1 * 8); | 
|  | } | 
|  | uint32_t packetSize_vkEndCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkEndCommandBuffer = OP_vkEndCommandBuffer; | 
|  | stream->write(&opcode_vkEndCommandBuffer, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkEndCommandBuffer, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_502; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_502, 1); | 
|  | stream->write((uint64_t*)&cgen_var_502, 1 * 8); | 
|  | AEMU_SCOPED_TRACE("vkEndCommandBuffer readParams"); | 
|  | AEMU_SCOPED_TRACE("vkEndCommandBuffer returnUnmarshal"); | 
|  | VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkEndCommandBuffer_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkEndCommandBuffer");; | 
|  | return vkEndCommandBuffer_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkResetCommandBuffer( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkCommandBufferResetFlags flags) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkResetCommandBuffer encode"); | 
|  | mImpl->log("start vkResetCommandBuffer"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkCommandBufferResetFlags local_flags; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_flags = flags; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_503; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_503, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_503, 1 * 8); | 
|  | countingStream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags)); | 
|  | } | 
|  | uint32_t packetSize_vkResetCommandBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkResetCommandBuffer = OP_vkResetCommandBuffer; | 
|  | stream->write(&opcode_vkResetCommandBuffer, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkResetCommandBuffer, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_504; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_504, 1); | 
|  | stream->write((uint64_t*)&cgen_var_504, 1 * 8); | 
|  | stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags)); | 
|  | AEMU_SCOPED_TRACE("vkResetCommandBuffer readParams"); | 
|  | AEMU_SCOPED_TRACE("vkResetCommandBuffer returnUnmarshal"); | 
|  | VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkResetCommandBuffer_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkResetCommandBuffer");; | 
|  | return vkResetCommandBuffer_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdBindPipeline( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkPipelineBindPoint pipelineBindPoint, | 
|  | VkPipeline pipeline) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdBindPipeline encode"); | 
|  | mImpl->log("start vkCmdBindPipeline"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkPipelineBindPoint local_pipelineBindPoint; | 
|  | VkPipeline local_pipeline; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_pipelineBindPoint = pipelineBindPoint; | 
|  | local_pipeline = pipeline; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_505; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_505, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_505, 1 * 8); | 
|  | countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint)); | 
|  | uint64_t cgen_var_506; | 
|  | countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_506, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_506, 1 * 8); | 
|  | } | 
|  | uint32_t packetSize_vkCmdBindPipeline = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdBindPipeline = OP_vkCmdBindPipeline; | 
|  | stream->write(&opcode_vkCmdBindPipeline, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdBindPipeline, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_507; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_507, 1); | 
|  | stream->write((uint64_t*)&cgen_var_507, 1 * 8); | 
|  | stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint)); | 
|  | uint64_t cgen_var_508; | 
|  | stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_508, 1); | 
|  | stream->write((uint64_t*)&cgen_var_508, 1 * 8); | 
|  | AEMU_SCOPED_TRACE("vkCmdBindPipeline readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdBindPipeline returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdBindPipeline");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdSetViewport( | 
|  | VkCommandBuffer commandBuffer, | 
|  | uint32_t firstViewport, | 
|  | uint32_t viewportCount, | 
|  | const VkViewport* pViewports) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetViewport encode"); | 
|  | mImpl->log("start vkCmdSetViewport"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | uint32_t local_firstViewport; | 
|  | uint32_t local_viewportCount; | 
|  | VkViewport* local_pViewports; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_firstViewport = firstViewport; | 
|  | local_viewportCount = viewportCount; | 
|  | local_pViewports = nullptr; | 
|  | if (pViewports) | 
|  | { | 
|  | local_pViewports = (VkViewport*)pool->alloc(((viewportCount)) * sizeof(const VkViewport)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i) | 
|  | { | 
|  | deepcopy_VkViewport(pool, pViewports + i, (VkViewport*)(local_pViewports + i)); | 
|  | } | 
|  | } | 
|  | if (local_pViewports) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkViewport(mImpl->resources(), (VkViewport*)(local_pViewports + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_509; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_509, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_509, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i) | 
|  | { | 
|  | marshal_VkViewport(countingStream, (VkViewport*)(local_pViewports + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkCmdSetViewport = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdSetViewport = OP_vkCmdSetViewport; | 
|  | stream->write(&opcode_vkCmdSetViewport, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdSetViewport, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_510; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_510, 1); | 
|  | stream->write((uint64_t*)&cgen_var_510, 1 * 8); | 
|  | stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i) | 
|  | { | 
|  | marshal_VkViewport(stream, (VkViewport*)(local_pViewports + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkCmdSetViewport readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetViewport returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdSetViewport");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdSetScissor( | 
|  | VkCommandBuffer commandBuffer, | 
|  | uint32_t firstScissor, | 
|  | uint32_t scissorCount, | 
|  | const VkRect2D* pScissors) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetScissor encode"); | 
|  | mImpl->log("start vkCmdSetScissor"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | uint32_t local_firstScissor; | 
|  | uint32_t local_scissorCount; | 
|  | VkRect2D* local_pScissors; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_firstScissor = firstScissor; | 
|  | local_scissorCount = scissorCount; | 
|  | local_pScissors = nullptr; | 
|  | if (pScissors) | 
|  | { | 
|  | local_pScissors = (VkRect2D*)pool->alloc(((scissorCount)) * sizeof(const VkRect2D)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i) | 
|  | { | 
|  | deepcopy_VkRect2D(pool, pScissors + i, (VkRect2D*)(local_pScissors + i)); | 
|  | } | 
|  | } | 
|  | if (local_pScissors) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkRect2D(mImpl->resources(), (VkRect2D*)(local_pScissors + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_511; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_511, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_511, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i) | 
|  | { | 
|  | marshal_VkRect2D(countingStream, (VkRect2D*)(local_pScissors + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkCmdSetScissor = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdSetScissor = OP_vkCmdSetScissor; | 
|  | stream->write(&opcode_vkCmdSetScissor, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdSetScissor, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_512; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_512, 1); | 
|  | stream->write((uint64_t*)&cgen_var_512, 1 * 8); | 
|  | stream->write((uint32_t*)&local_firstScissor, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_scissorCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i) | 
|  | { | 
|  | marshal_VkRect2D(stream, (VkRect2D*)(local_pScissors + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkCmdSetScissor readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetScissor returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdSetScissor");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdSetLineWidth( | 
|  | VkCommandBuffer commandBuffer, | 
|  | float lineWidth) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetLineWidth encode"); | 
|  | mImpl->log("start vkCmdSetLineWidth"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | float local_lineWidth; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_lineWidth = lineWidth; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_513; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_513, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_513, 1 * 8); | 
|  | countingStream->write((float*)&local_lineWidth, sizeof(float)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdSetLineWidth = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdSetLineWidth = OP_vkCmdSetLineWidth; | 
|  | stream->write(&opcode_vkCmdSetLineWidth, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdSetLineWidth, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_514; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_514, 1); | 
|  | stream->write((uint64_t*)&cgen_var_514, 1 * 8); | 
|  | stream->write((float*)&local_lineWidth, sizeof(float)); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetLineWidth readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetLineWidth returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdSetLineWidth");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdSetDepthBias( | 
|  | VkCommandBuffer commandBuffer, | 
|  | float depthBiasConstantFactor, | 
|  | float depthBiasClamp, | 
|  | float depthBiasSlopeFactor) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetDepthBias encode"); | 
|  | mImpl->log("start vkCmdSetDepthBias"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | float local_depthBiasConstantFactor; | 
|  | float local_depthBiasClamp; | 
|  | float local_depthBiasSlopeFactor; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_depthBiasConstantFactor = depthBiasConstantFactor; | 
|  | local_depthBiasClamp = depthBiasClamp; | 
|  | local_depthBiasSlopeFactor = depthBiasSlopeFactor; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_515; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_515, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_515, 1 * 8); | 
|  | countingStream->write((float*)&local_depthBiasConstantFactor, sizeof(float)); | 
|  | countingStream->write((float*)&local_depthBiasClamp, sizeof(float)); | 
|  | countingStream->write((float*)&local_depthBiasSlopeFactor, sizeof(float)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdSetDepthBias = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdSetDepthBias = OP_vkCmdSetDepthBias; | 
|  | stream->write(&opcode_vkCmdSetDepthBias, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdSetDepthBias, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_516; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_516, 1); | 
|  | stream->write((uint64_t*)&cgen_var_516, 1 * 8); | 
|  | stream->write((float*)&local_depthBiasConstantFactor, sizeof(float)); | 
|  | stream->write((float*)&local_depthBiasClamp, sizeof(float)); | 
|  | stream->write((float*)&local_depthBiasSlopeFactor, sizeof(float)); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetDepthBias readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetDepthBias returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdSetDepthBias");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdSetBlendConstants( | 
|  | VkCommandBuffer commandBuffer, | 
|  | const float blendConstants[4]) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetBlendConstants encode"); | 
|  | mImpl->log("start vkCmdSetBlendConstants"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | float local_blendConstants[4]; | 
|  | local_commandBuffer = commandBuffer; | 
|  | memcpy(local_blendConstants, blendConstants, 4 * sizeof(const float)); | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_517; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_517, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_517, 1 * 8); | 
|  | countingStream->write((float*)local_blendConstants, 4 * sizeof(float)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdSetBlendConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdSetBlendConstants = OP_vkCmdSetBlendConstants; | 
|  | stream->write(&opcode_vkCmdSetBlendConstants, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdSetBlendConstants, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_518; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_518, 1); | 
|  | stream->write((uint64_t*)&cgen_var_518, 1 * 8); | 
|  | stream->write((float*)local_blendConstants, 4 * sizeof(float)); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetBlendConstants readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetBlendConstants returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdSetBlendConstants");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdSetDepthBounds( | 
|  | VkCommandBuffer commandBuffer, | 
|  | float minDepthBounds, | 
|  | float maxDepthBounds) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetDepthBounds encode"); | 
|  | mImpl->log("start vkCmdSetDepthBounds"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | float local_minDepthBounds; | 
|  | float local_maxDepthBounds; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_minDepthBounds = minDepthBounds; | 
|  | local_maxDepthBounds = maxDepthBounds; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_519; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_519, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_519, 1 * 8); | 
|  | countingStream->write((float*)&local_minDepthBounds, sizeof(float)); | 
|  | countingStream->write((float*)&local_maxDepthBounds, sizeof(float)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdSetDepthBounds = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdSetDepthBounds = OP_vkCmdSetDepthBounds; | 
|  | stream->write(&opcode_vkCmdSetDepthBounds, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdSetDepthBounds, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_520; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_520, 1); | 
|  | stream->write((uint64_t*)&cgen_var_520, 1 * 8); | 
|  | stream->write((float*)&local_minDepthBounds, sizeof(float)); | 
|  | stream->write((float*)&local_maxDepthBounds, sizeof(float)); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetDepthBounds readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetDepthBounds returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdSetDepthBounds");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdSetStencilCompareMask( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkStencilFaceFlags faceMask, | 
|  | uint32_t compareMask) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask encode"); | 
|  | mImpl->log("start vkCmdSetStencilCompareMask"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkStencilFaceFlags local_faceMask; | 
|  | uint32_t local_compareMask; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_faceMask = faceMask; | 
|  | local_compareMask = compareMask; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_521; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_521, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_521, 1 * 8); | 
|  | countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags)); | 
|  | countingStream->write((uint32_t*)&local_compareMask, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdSetStencilCompareMask = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdSetStencilCompareMask = OP_vkCmdSetStencilCompareMask; | 
|  | stream->write(&opcode_vkCmdSetStencilCompareMask, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdSetStencilCompareMask, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_522; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_522, 1); | 
|  | stream->write((uint64_t*)&cgen_var_522, 1 * 8); | 
|  | stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags)); | 
|  | stream->write((uint32_t*)&local_compareMask, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetStencilCompareMask returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdSetStencilCompareMask");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdSetStencilWriteMask( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkStencilFaceFlags faceMask, | 
|  | uint32_t writeMask) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask encode"); | 
|  | mImpl->log("start vkCmdSetStencilWriteMask"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkStencilFaceFlags local_faceMask; | 
|  | uint32_t local_writeMask; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_faceMask = faceMask; | 
|  | local_writeMask = writeMask; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_523; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_523, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_523, 1 * 8); | 
|  | countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags)); | 
|  | countingStream->write((uint32_t*)&local_writeMask, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdSetStencilWriteMask = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdSetStencilWriteMask = OP_vkCmdSetStencilWriteMask; | 
|  | stream->write(&opcode_vkCmdSetStencilWriteMask, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdSetStencilWriteMask, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_524; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_524, 1); | 
|  | stream->write((uint64_t*)&cgen_var_524, 1 * 8); | 
|  | stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags)); | 
|  | stream->write((uint32_t*)&local_writeMask, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetStencilWriteMask returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdSetStencilWriteMask");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdSetStencilReference( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkStencilFaceFlags faceMask, | 
|  | uint32_t reference) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetStencilReference encode"); | 
|  | mImpl->log("start vkCmdSetStencilReference"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkStencilFaceFlags local_faceMask; | 
|  | uint32_t local_reference; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_faceMask = faceMask; | 
|  | local_reference = reference; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_525; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_525, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_525, 1 * 8); | 
|  | countingStream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags)); | 
|  | countingStream->write((uint32_t*)&local_reference, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdSetStencilReference = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdSetStencilReference = OP_vkCmdSetStencilReference; | 
|  | stream->write(&opcode_vkCmdSetStencilReference, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdSetStencilReference, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_526; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_526, 1); | 
|  | stream->write((uint64_t*)&cgen_var_526, 1 * 8); | 
|  | stream->write((VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags)); | 
|  | stream->write((uint32_t*)&local_reference, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetStencilReference readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetStencilReference returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdSetStencilReference");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdBindDescriptorSets( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkPipelineBindPoint pipelineBindPoint, | 
|  | VkPipelineLayout layout, | 
|  | uint32_t firstSet, | 
|  | uint32_t descriptorSetCount, | 
|  | const VkDescriptorSet* pDescriptorSets, | 
|  | uint32_t dynamicOffsetCount, | 
|  | const uint32_t* pDynamicOffsets) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets encode"); | 
|  | mImpl->log("start vkCmdBindDescriptorSets"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkPipelineBindPoint local_pipelineBindPoint; | 
|  | VkPipelineLayout local_layout; | 
|  | uint32_t local_firstSet; | 
|  | uint32_t local_descriptorSetCount; | 
|  | VkDescriptorSet* local_pDescriptorSets; | 
|  | uint32_t local_dynamicOffsetCount; | 
|  | uint32_t* local_pDynamicOffsets; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_pipelineBindPoint = pipelineBindPoint; | 
|  | local_layout = layout; | 
|  | local_firstSet = firstSet; | 
|  | local_descriptorSetCount = descriptorSetCount; | 
|  | local_pDescriptorSets = nullptr; | 
|  | if (pDescriptorSets) | 
|  | { | 
|  | local_pDescriptorSets = (VkDescriptorSet*)pool->dupArray(pDescriptorSets, ((descriptorSetCount)) * sizeof(const VkDescriptorSet)); | 
|  | } | 
|  | local_dynamicOffsetCount = dynamicOffsetCount; | 
|  | local_pDynamicOffsets = nullptr; | 
|  | if (pDynamicOffsets) | 
|  | { | 
|  | local_pDynamicOffsets = (uint32_t*)pool->dupArray(pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(const uint32_t)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_527; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_527, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_527, 1 * 8); | 
|  | countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint)); | 
|  | uint64_t cgen_var_528; | 
|  | countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_528, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_528, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_firstSet, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t)); | 
|  | if (((descriptorSetCount))) | 
|  | { | 
|  | uint64_t* cgen_var_529; | 
|  | countingStream->alloc((void**)&cgen_var_529, ((descriptorSetCount)) * 8); | 
|  | countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_529, ((descriptorSetCount))); | 
|  | countingStream->write((uint64_t*)cgen_var_529, ((descriptorSetCount)) * 8); | 
|  | } | 
|  | countingStream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdBindDescriptorSets = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdBindDescriptorSets = OP_vkCmdBindDescriptorSets; | 
|  | stream->write(&opcode_vkCmdBindDescriptorSets, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdBindDescriptorSets, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_530; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_530, 1); | 
|  | stream->write((uint64_t*)&cgen_var_530, 1 * 8); | 
|  | stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint)); | 
|  | uint64_t cgen_var_531; | 
|  | stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_531, 1); | 
|  | stream->write((uint64_t*)&cgen_var_531, 1 * 8); | 
|  | stream->write((uint32_t*)&local_firstSet, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_descriptorSetCount, sizeof(uint32_t)); | 
|  | if (((descriptorSetCount))) | 
|  | { | 
|  | uint64_t* cgen_var_532; | 
|  | stream->alloc((void**)&cgen_var_532, ((descriptorSetCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_VkDescriptorSet_u64(local_pDescriptorSets, cgen_var_532, ((descriptorSetCount))); | 
|  | stream->write((uint64_t*)cgen_var_532, ((descriptorSetCount)) * 8); | 
|  | } | 
|  | stream->write((uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdBindDescriptorSets returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdBindDescriptorSets");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdBindIndexBuffer( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkBuffer buffer, | 
|  | VkDeviceSize offset, | 
|  | VkIndexType indexType) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer encode"); | 
|  | mImpl->log("start vkCmdBindIndexBuffer"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkBuffer local_buffer; | 
|  | VkDeviceSize local_offset; | 
|  | VkIndexType local_indexType; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_buffer = buffer; | 
|  | local_offset = offset; | 
|  | local_indexType = indexType; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_533; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_533, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_533, 1 * 8); | 
|  | uint64_t cgen_var_534; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_534, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_534, 1 * 8); | 
|  | countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); | 
|  | countingStream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdBindIndexBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdBindIndexBuffer = OP_vkCmdBindIndexBuffer; | 
|  | stream->write(&opcode_vkCmdBindIndexBuffer, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdBindIndexBuffer, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_535; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_535, 1); | 
|  | stream->write((uint64_t*)&cgen_var_535, 1 * 8); | 
|  | uint64_t cgen_var_536; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_536, 1); | 
|  | stream->write((uint64_t*)&cgen_var_536, 1 * 8); | 
|  | stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); | 
|  | stream->write((VkIndexType*)&local_indexType, sizeof(VkIndexType)); | 
|  | AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdBindIndexBuffer returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdBindIndexBuffer");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdBindVertexBuffers( | 
|  | VkCommandBuffer commandBuffer, | 
|  | uint32_t firstBinding, | 
|  | uint32_t bindingCount, | 
|  | const VkBuffer* pBuffers, | 
|  | const VkDeviceSize* pOffsets) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers encode"); | 
|  | mImpl->log("start vkCmdBindVertexBuffers"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | uint32_t local_firstBinding; | 
|  | uint32_t local_bindingCount; | 
|  | VkBuffer* local_pBuffers; | 
|  | VkDeviceSize* local_pOffsets; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_firstBinding = firstBinding; | 
|  | local_bindingCount = bindingCount; | 
|  | local_pBuffers = nullptr; | 
|  | if (pBuffers) | 
|  | { | 
|  | local_pBuffers = (VkBuffer*)pool->dupArray(pBuffers, ((bindingCount)) * sizeof(const VkBuffer)); | 
|  | } | 
|  | local_pOffsets = nullptr; | 
|  | if (pOffsets) | 
|  | { | 
|  | local_pOffsets = (VkDeviceSize*)pool->dupArray(pOffsets, ((bindingCount)) * sizeof(const VkDeviceSize)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_537; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_537, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_537, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t)); | 
|  | if (((bindingCount))) | 
|  | { | 
|  | uint64_t* cgen_var_538; | 
|  | countingStream->alloc((void**)&cgen_var_538, ((bindingCount)) * 8); | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_538, ((bindingCount))); | 
|  | countingStream->write((uint64_t*)cgen_var_538, ((bindingCount)) * 8); | 
|  | } | 
|  | countingStream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdBindVertexBuffers = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdBindVertexBuffers = OP_vkCmdBindVertexBuffers; | 
|  | stream->write(&opcode_vkCmdBindVertexBuffers, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdBindVertexBuffers, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_539; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_539, 1); | 
|  | stream->write((uint64_t*)&cgen_var_539, 1 * 8); | 
|  | stream->write((uint32_t*)&local_firstBinding, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_bindingCount, sizeof(uint32_t)); | 
|  | if (((bindingCount))) | 
|  | { | 
|  | uint64_t* cgen_var_540; | 
|  | stream->alloc((void**)&cgen_var_540, ((bindingCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(local_pBuffers, cgen_var_540, ((bindingCount))); | 
|  | stream->write((uint64_t*)cgen_var_540, ((bindingCount)) * 8); | 
|  | } | 
|  | stream->write((VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize)); | 
|  | AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdBindVertexBuffers returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdBindVertexBuffers");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdDraw( | 
|  | VkCommandBuffer commandBuffer, | 
|  | uint32_t vertexCount, | 
|  | uint32_t instanceCount, | 
|  | uint32_t firstVertex, | 
|  | uint32_t firstInstance) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdDraw encode"); | 
|  | mImpl->log("start vkCmdDraw"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | uint32_t local_vertexCount; | 
|  | uint32_t local_instanceCount; | 
|  | uint32_t local_firstVertex; | 
|  | uint32_t local_firstInstance; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_vertexCount = vertexCount; | 
|  | local_instanceCount = instanceCount; | 
|  | local_firstVertex = firstVertex; | 
|  | local_firstInstance = firstInstance; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_541; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_541, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_541, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdDraw = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdDraw = OP_vkCmdDraw; | 
|  | stream->write(&opcode_vkCmdDraw, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdDraw, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_542; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_542, 1); | 
|  | stream->write((uint64_t*)&cgen_var_542, 1 * 8); | 
|  | stream->write((uint32_t*)&local_vertexCount, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_firstVertex, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdDraw readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdDraw returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdDraw");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdDrawIndexed( | 
|  | VkCommandBuffer commandBuffer, | 
|  | uint32_t indexCount, | 
|  | uint32_t instanceCount, | 
|  | uint32_t firstIndex, | 
|  | int32_t vertexOffset, | 
|  | uint32_t firstInstance) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdDrawIndexed encode"); | 
|  | mImpl->log("start vkCmdDrawIndexed"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | uint32_t local_indexCount; | 
|  | uint32_t local_instanceCount; | 
|  | uint32_t local_firstIndex; | 
|  | int32_t local_vertexOffset; | 
|  | uint32_t local_firstInstance; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_indexCount = indexCount; | 
|  | local_instanceCount = instanceCount; | 
|  | local_firstIndex = firstIndex; | 
|  | local_vertexOffset = vertexOffset; | 
|  | local_firstInstance = firstInstance; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_543; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_543, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_543, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_indexCount, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t)); | 
|  | countingStream->write((int32_t*)&local_vertexOffset, sizeof(int32_t)); | 
|  | countingStream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdDrawIndexed = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdDrawIndexed = OP_vkCmdDrawIndexed; | 
|  | stream->write(&opcode_vkCmdDrawIndexed, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdDrawIndexed, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_544; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_544, 1); | 
|  | stream->write((uint64_t*)&cgen_var_544, 1 * 8); | 
|  | stream->write((uint32_t*)&local_indexCount, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_instanceCount, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_firstIndex, sizeof(uint32_t)); | 
|  | stream->write((int32_t*)&local_vertexOffset, sizeof(int32_t)); | 
|  | stream->write((uint32_t*)&local_firstInstance, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdDrawIndexed readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdDrawIndexed returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdDrawIndexed");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdDrawIndirect( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkBuffer buffer, | 
|  | VkDeviceSize offset, | 
|  | uint32_t drawCount, | 
|  | uint32_t stride) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdDrawIndirect encode"); | 
|  | mImpl->log("start vkCmdDrawIndirect"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkBuffer local_buffer; | 
|  | VkDeviceSize local_offset; | 
|  | uint32_t local_drawCount; | 
|  | uint32_t local_stride; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_buffer = buffer; | 
|  | local_offset = offset; | 
|  | local_drawCount = drawCount; | 
|  | local_stride = stride; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_545; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_545, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_545, 1 * 8); | 
|  | uint64_t cgen_var_546; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_546, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_546, 1 * 8); | 
|  | countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); | 
|  | countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdDrawIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdDrawIndirect = OP_vkCmdDrawIndirect; | 
|  | stream->write(&opcode_vkCmdDrawIndirect, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdDrawIndirect, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_547; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_547, 1); | 
|  | stream->write((uint64_t*)&cgen_var_547, 1 * 8); | 
|  | uint64_t cgen_var_548; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_548, 1); | 
|  | stream->write((uint64_t*)&cgen_var_548, 1 * 8); | 
|  | stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); | 
|  | stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_stride, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdDrawIndirect readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdDrawIndirect returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdDrawIndirect");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdDrawIndexedIndirect( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkBuffer buffer, | 
|  | VkDeviceSize offset, | 
|  | uint32_t drawCount, | 
|  | uint32_t stride) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect encode"); | 
|  | mImpl->log("start vkCmdDrawIndexedIndirect"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkBuffer local_buffer; | 
|  | VkDeviceSize local_offset; | 
|  | uint32_t local_drawCount; | 
|  | uint32_t local_stride; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_buffer = buffer; | 
|  | local_offset = offset; | 
|  | local_drawCount = drawCount; | 
|  | local_stride = stride; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_549; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_549, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_549, 1 * 8); | 
|  | uint64_t cgen_var_550; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_550, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_550, 1 * 8); | 
|  | countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); | 
|  | countingStream->write((uint32_t*)&local_drawCount, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdDrawIndexedIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdDrawIndexedIndirect = OP_vkCmdDrawIndexedIndirect; | 
|  | stream->write(&opcode_vkCmdDrawIndexedIndirect, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdDrawIndexedIndirect, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_551; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_551, 1); | 
|  | stream->write((uint64_t*)&cgen_var_551, 1 * 8); | 
|  | uint64_t cgen_var_552; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_552, 1); | 
|  | stream->write((uint64_t*)&cgen_var_552, 1 * 8); | 
|  | stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); | 
|  | stream->write((uint32_t*)&local_drawCount, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_stride, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirect returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdDrawIndexedIndirect");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdDispatch( | 
|  | VkCommandBuffer commandBuffer, | 
|  | uint32_t groupCountX, | 
|  | uint32_t groupCountY, | 
|  | uint32_t groupCountZ) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdDispatch encode"); | 
|  | mImpl->log("start vkCmdDispatch"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | uint32_t local_groupCountX; | 
|  | uint32_t local_groupCountY; | 
|  | uint32_t local_groupCountZ; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_groupCountX = groupCountX; | 
|  | local_groupCountY = groupCountY; | 
|  | local_groupCountZ = groupCountZ; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_553; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_553, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_553, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdDispatch = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdDispatch = OP_vkCmdDispatch; | 
|  | stream->write(&opcode_vkCmdDispatch, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdDispatch, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_554; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_554, 1); | 
|  | stream->write((uint64_t*)&cgen_var_554, 1 * 8); | 
|  | stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdDispatch readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdDispatch returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdDispatch");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdDispatchIndirect( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkBuffer buffer, | 
|  | VkDeviceSize offset) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdDispatchIndirect encode"); | 
|  | mImpl->log("start vkCmdDispatchIndirect"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkBuffer local_buffer; | 
|  | VkDeviceSize local_offset; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_buffer = buffer; | 
|  | local_offset = offset; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_555; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_555, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_555, 1 * 8); | 
|  | uint64_t cgen_var_556; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_556, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_556, 1 * 8); | 
|  | countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdDispatchIndirect = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdDispatchIndirect = OP_vkCmdDispatchIndirect; | 
|  | stream->write(&opcode_vkCmdDispatchIndirect, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdDispatchIndirect, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_557; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_557, 1); | 
|  | stream->write((uint64_t*)&cgen_var_557, 1 * 8); | 
|  | uint64_t cgen_var_558; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_558, 1); | 
|  | stream->write((uint64_t*)&cgen_var_558, 1 * 8); | 
|  | stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); | 
|  | AEMU_SCOPED_TRACE("vkCmdDispatchIndirect readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdDispatchIndirect returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdDispatchIndirect");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdCopyBuffer( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkBuffer srcBuffer, | 
|  | VkBuffer dstBuffer, | 
|  | uint32_t regionCount, | 
|  | const VkBufferCopy* pRegions) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdCopyBuffer encode"); | 
|  | mImpl->log("start vkCmdCopyBuffer"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkBuffer local_srcBuffer; | 
|  | VkBuffer local_dstBuffer; | 
|  | uint32_t local_regionCount; | 
|  | VkBufferCopy* local_pRegions; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_srcBuffer = srcBuffer; | 
|  | local_dstBuffer = dstBuffer; | 
|  | local_regionCount = regionCount; | 
|  | local_pRegions = nullptr; | 
|  | if (pRegions) | 
|  | { | 
|  | local_pRegions = (VkBufferCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferCopy)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | deepcopy_VkBufferCopy(pool, pRegions + i, (VkBufferCopy*)(local_pRegions + i)); | 
|  | } | 
|  | } | 
|  | if (local_pRegions) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkBufferCopy(mImpl->resources(), (VkBufferCopy*)(local_pRegions + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_559; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_559, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_559, 1 * 8); | 
|  | uint64_t cgen_var_560; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_560, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_560, 1 * 8); | 
|  | uint64_t cgen_var_561; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_561, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_561, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | marshal_VkBufferCopy(countingStream, (VkBufferCopy*)(local_pRegions + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkCmdCopyBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdCopyBuffer = OP_vkCmdCopyBuffer; | 
|  | stream->write(&opcode_vkCmdCopyBuffer, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdCopyBuffer, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_562; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_562, 1); | 
|  | stream->write((uint64_t*)&cgen_var_562, 1 * 8); | 
|  | uint64_t cgen_var_563; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_563, 1); | 
|  | stream->write((uint64_t*)&cgen_var_563, 1 * 8); | 
|  | uint64_t cgen_var_564; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_564, 1); | 
|  | stream->write((uint64_t*)&cgen_var_564, 1 * 8); | 
|  | stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | marshal_VkBufferCopy(stream, (VkBufferCopy*)(local_pRegions + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkCmdCopyBuffer readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdCopyBuffer returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdCopyBuffer");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdCopyImage( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkImage srcImage, | 
|  | VkImageLayout srcImageLayout, | 
|  | VkImage dstImage, | 
|  | VkImageLayout dstImageLayout, | 
|  | uint32_t regionCount, | 
|  | const VkImageCopy* pRegions) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdCopyImage encode"); | 
|  | mImpl->log("start vkCmdCopyImage"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkImage local_srcImage; | 
|  | VkImageLayout local_srcImageLayout; | 
|  | VkImage local_dstImage; | 
|  | VkImageLayout local_dstImageLayout; | 
|  | uint32_t local_regionCount; | 
|  | VkImageCopy* local_pRegions; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_srcImage = srcImage; | 
|  | local_srcImageLayout = srcImageLayout; | 
|  | local_dstImage = dstImage; | 
|  | local_dstImageLayout = dstImageLayout; | 
|  | local_regionCount = regionCount; | 
|  | local_pRegions = nullptr; | 
|  | if (pRegions) | 
|  | { | 
|  | local_pRegions = (VkImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkImageCopy)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | deepcopy_VkImageCopy(pool, pRegions + i, (VkImageCopy*)(local_pRegions + i)); | 
|  | } | 
|  | } | 
|  | if (local_pRegions) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkImageCopy(mImpl->resources(), (VkImageCopy*)(local_pRegions + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_565; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_565, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_565, 1 * 8); | 
|  | uint64_t cgen_var_566; | 
|  | countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_566, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_566, 1 * 8); | 
|  | countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout)); | 
|  | uint64_t cgen_var_567; | 
|  | countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_567, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_567, 1 * 8); | 
|  | countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout)); | 
|  | countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | marshal_VkImageCopy(countingStream, (VkImageCopy*)(local_pRegions + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkCmdCopyImage = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdCopyImage = OP_vkCmdCopyImage; | 
|  | stream->write(&opcode_vkCmdCopyImage, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdCopyImage, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_568; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_568, 1); | 
|  | stream->write((uint64_t*)&cgen_var_568, 1 * 8); | 
|  | uint64_t cgen_var_569; | 
|  | stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_569, 1); | 
|  | stream->write((uint64_t*)&cgen_var_569, 1 * 8); | 
|  | stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout)); | 
|  | uint64_t cgen_var_570; | 
|  | stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_570, 1); | 
|  | stream->write((uint64_t*)&cgen_var_570, 1 * 8); | 
|  | stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout)); | 
|  | stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | marshal_VkImageCopy(stream, (VkImageCopy*)(local_pRegions + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkCmdCopyImage readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdCopyImage returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdCopyImage");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdBlitImage( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkImage srcImage, | 
|  | VkImageLayout srcImageLayout, | 
|  | VkImage dstImage, | 
|  | VkImageLayout dstImageLayout, | 
|  | uint32_t regionCount, | 
|  | const VkImageBlit* pRegions, | 
|  | VkFilter filter) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdBlitImage encode"); | 
|  | mImpl->log("start vkCmdBlitImage"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkImage local_srcImage; | 
|  | VkImageLayout local_srcImageLayout; | 
|  | VkImage local_dstImage; | 
|  | VkImageLayout local_dstImageLayout; | 
|  | uint32_t local_regionCount; | 
|  | VkImageBlit* local_pRegions; | 
|  | VkFilter local_filter; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_srcImage = srcImage; | 
|  | local_srcImageLayout = srcImageLayout; | 
|  | local_dstImage = dstImage; | 
|  | local_dstImageLayout = dstImageLayout; | 
|  | local_regionCount = regionCount; | 
|  | local_pRegions = nullptr; | 
|  | if (pRegions) | 
|  | { | 
|  | local_pRegions = (VkImageBlit*)pool->alloc(((regionCount)) * sizeof(const VkImageBlit)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | deepcopy_VkImageBlit(pool, pRegions + i, (VkImageBlit*)(local_pRegions + i)); | 
|  | } | 
|  | } | 
|  | local_filter = filter; | 
|  | if (local_pRegions) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkImageBlit(mImpl->resources(), (VkImageBlit*)(local_pRegions + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_571; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_571, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_571, 1 * 8); | 
|  | uint64_t cgen_var_572; | 
|  | countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_572, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_572, 1 * 8); | 
|  | countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout)); | 
|  | uint64_t cgen_var_573; | 
|  | countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_573, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_573, 1 * 8); | 
|  | countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout)); | 
|  | countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | marshal_VkImageBlit(countingStream, (VkImageBlit*)(local_pRegions + i)); | 
|  | } | 
|  | countingStream->write((VkFilter*)&local_filter, sizeof(VkFilter)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdBlitImage = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdBlitImage = OP_vkCmdBlitImage; | 
|  | stream->write(&opcode_vkCmdBlitImage, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdBlitImage, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_574; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_574, 1); | 
|  | stream->write((uint64_t*)&cgen_var_574, 1 * 8); | 
|  | uint64_t cgen_var_575; | 
|  | stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_575, 1); | 
|  | stream->write((uint64_t*)&cgen_var_575, 1 * 8); | 
|  | stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout)); | 
|  | uint64_t cgen_var_576; | 
|  | stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_576, 1); | 
|  | stream->write((uint64_t*)&cgen_var_576, 1 * 8); | 
|  | stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout)); | 
|  | stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | marshal_VkImageBlit(stream, (VkImageBlit*)(local_pRegions + i)); | 
|  | } | 
|  | stream->write((VkFilter*)&local_filter, sizeof(VkFilter)); | 
|  | AEMU_SCOPED_TRACE("vkCmdBlitImage readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdBlitImage returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdBlitImage");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdCopyBufferToImage( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkBuffer srcBuffer, | 
|  | VkImage dstImage, | 
|  | VkImageLayout dstImageLayout, | 
|  | uint32_t regionCount, | 
|  | const VkBufferImageCopy* pRegions) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage encode"); | 
|  | mImpl->log("start vkCmdCopyBufferToImage"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkBuffer local_srcBuffer; | 
|  | VkImage local_dstImage; | 
|  | VkImageLayout local_dstImageLayout; | 
|  | uint32_t local_regionCount; | 
|  | VkBufferImageCopy* local_pRegions; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_srcBuffer = srcBuffer; | 
|  | local_dstImage = dstImage; | 
|  | local_dstImageLayout = dstImageLayout; | 
|  | local_regionCount = regionCount; | 
|  | local_pRegions = nullptr; | 
|  | if (pRegions) | 
|  | { | 
|  | local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i)); | 
|  | } | 
|  | } | 
|  | if (local_pRegions) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkBufferImageCopy(mImpl->resources(), (VkBufferImageCopy*)(local_pRegions + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_577; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_577, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_577, 1 * 8); | 
|  | uint64_t cgen_var_578; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_578, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_578, 1 * 8); | 
|  | uint64_t cgen_var_579; | 
|  | countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_579, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_579, 1 * 8); | 
|  | countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout)); | 
|  | countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkCmdCopyBufferToImage = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdCopyBufferToImage = OP_vkCmdCopyBufferToImage; | 
|  | stream->write(&opcode_vkCmdCopyBufferToImage, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdCopyBufferToImage, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_580; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_580, 1); | 
|  | stream->write((uint64_t*)&cgen_var_580, 1 * 8); | 
|  | uint64_t cgen_var_581; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_srcBuffer, &cgen_var_581, 1); | 
|  | stream->write((uint64_t*)&cgen_var_581, 1 * 8); | 
|  | uint64_t cgen_var_582; | 
|  | stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_582, 1); | 
|  | stream->write((uint64_t*)&cgen_var_582, 1 * 8); | 
|  | stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout)); | 
|  | stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdCopyBufferToImage returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdCopyBufferToImage");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdCopyImageToBuffer( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkImage srcImage, | 
|  | VkImageLayout srcImageLayout, | 
|  | VkBuffer dstBuffer, | 
|  | uint32_t regionCount, | 
|  | const VkBufferImageCopy* pRegions) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer encode"); | 
|  | mImpl->log("start vkCmdCopyImageToBuffer"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkImage local_srcImage; | 
|  | VkImageLayout local_srcImageLayout; | 
|  | VkBuffer local_dstBuffer; | 
|  | uint32_t local_regionCount; | 
|  | VkBufferImageCopy* local_pRegions; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_srcImage = srcImage; | 
|  | local_srcImageLayout = srcImageLayout; | 
|  | local_dstBuffer = dstBuffer; | 
|  | local_regionCount = regionCount; | 
|  | local_pRegions = nullptr; | 
|  | if (pRegions) | 
|  | { | 
|  | local_pRegions = (VkBufferImageCopy*)pool->alloc(((regionCount)) * sizeof(const VkBufferImageCopy)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | deepcopy_VkBufferImageCopy(pool, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i)); | 
|  | } | 
|  | } | 
|  | if (local_pRegions) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkBufferImageCopy(mImpl->resources(), (VkBufferImageCopy*)(local_pRegions + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_583; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_583, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_583, 1 * 8); | 
|  | uint64_t cgen_var_584; | 
|  | countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_584, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_584, 1 * 8); | 
|  | countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout)); | 
|  | uint64_t cgen_var_585; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_585, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_585, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | marshal_VkBufferImageCopy(countingStream, (VkBufferImageCopy*)(local_pRegions + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkCmdCopyImageToBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdCopyImageToBuffer = OP_vkCmdCopyImageToBuffer; | 
|  | stream->write(&opcode_vkCmdCopyImageToBuffer, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdCopyImageToBuffer, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_586; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_586, 1); | 
|  | stream->write((uint64_t*)&cgen_var_586, 1 * 8); | 
|  | uint64_t cgen_var_587; | 
|  | stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_587, 1); | 
|  | stream->write((uint64_t*)&cgen_var_587, 1 * 8); | 
|  | stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout)); | 
|  | uint64_t cgen_var_588; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_588, 1); | 
|  | stream->write((uint64_t*)&cgen_var_588, 1 * 8); | 
|  | stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | marshal_VkBufferImageCopy(stream, (VkBufferImageCopy*)(local_pRegions + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdCopyImageToBuffer returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdCopyImageToBuffer");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdUpdateBuffer( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkBuffer dstBuffer, | 
|  | VkDeviceSize dstOffset, | 
|  | VkDeviceSize dataSize, | 
|  | const void* pData) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdUpdateBuffer encode"); | 
|  | mImpl->log("start vkCmdUpdateBuffer"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkBuffer local_dstBuffer; | 
|  | VkDeviceSize local_dstOffset; | 
|  | VkDeviceSize local_dataSize; | 
|  | void* local_pData; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_dstBuffer = dstBuffer; | 
|  | local_dstOffset = dstOffset; | 
|  | local_dataSize = dataSize; | 
|  | local_pData = nullptr; | 
|  | if (pData) | 
|  | { | 
|  | local_pData = (void*)pool->dupArray(pData, ((dataSize)) * sizeof(const uint8_t)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_589; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_589, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_589, 1 * 8); | 
|  | uint64_t cgen_var_590; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_590, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_590, 1 * 8); | 
|  | countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize)); | 
|  | countingStream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize)); | 
|  | countingStream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdUpdateBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdUpdateBuffer = OP_vkCmdUpdateBuffer; | 
|  | stream->write(&opcode_vkCmdUpdateBuffer, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdUpdateBuffer, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_591; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_591, 1); | 
|  | stream->write((uint64_t*)&cgen_var_591, 1 * 8); | 
|  | uint64_t cgen_var_592; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_592, 1); | 
|  | stream->write((uint64_t*)&cgen_var_592, 1 * 8); | 
|  | stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize)); | 
|  | stream->write((VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize)); | 
|  | stream->write((void*)local_pData, ((dataSize)) * sizeof(uint8_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdUpdateBuffer readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdUpdateBuffer returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdUpdateBuffer");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdFillBuffer( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkBuffer dstBuffer, | 
|  | VkDeviceSize dstOffset, | 
|  | VkDeviceSize size, | 
|  | uint32_t data) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdFillBuffer encode"); | 
|  | mImpl->log("start vkCmdFillBuffer"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkBuffer local_dstBuffer; | 
|  | VkDeviceSize local_dstOffset; | 
|  | VkDeviceSize local_size; | 
|  | uint32_t local_data; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_dstBuffer = dstBuffer; | 
|  | local_dstOffset = dstOffset; | 
|  | local_size = size; | 
|  | local_data = data; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_593; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_593, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_593, 1 * 8); | 
|  | uint64_t cgen_var_594; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_594, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_594, 1 * 8); | 
|  | countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize)); | 
|  | countingStream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize)); | 
|  | countingStream->write((uint32_t*)&local_data, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdFillBuffer = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdFillBuffer = OP_vkCmdFillBuffer; | 
|  | stream->write(&opcode_vkCmdFillBuffer, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdFillBuffer, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_595; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_595, 1); | 
|  | stream->write((uint64_t*)&cgen_var_595, 1 * 8); | 
|  | uint64_t cgen_var_596; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_596, 1); | 
|  | stream->write((uint64_t*)&cgen_var_596, 1 * 8); | 
|  | stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize)); | 
|  | stream->write((VkDeviceSize*)&local_size, sizeof(VkDeviceSize)); | 
|  | stream->write((uint32_t*)&local_data, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdFillBuffer readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdFillBuffer returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdFillBuffer");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdClearColorImage( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkImage image, | 
|  | VkImageLayout imageLayout, | 
|  | const VkClearColorValue* pColor, | 
|  | uint32_t rangeCount, | 
|  | const VkImageSubresourceRange* pRanges) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdClearColorImage encode"); | 
|  | mImpl->log("start vkCmdClearColorImage"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkImage local_image; | 
|  | VkImageLayout local_imageLayout; | 
|  | VkClearColorValue* local_pColor; | 
|  | uint32_t local_rangeCount; | 
|  | VkImageSubresourceRange* local_pRanges; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_image = image; | 
|  | local_imageLayout = imageLayout; | 
|  | local_pColor = nullptr; | 
|  | if (pColor) | 
|  | { | 
|  | local_pColor = (VkClearColorValue*)pool->alloc(sizeof(const VkClearColorValue)); | 
|  | deepcopy_VkClearColorValue(pool, pColor, (VkClearColorValue*)(local_pColor)); | 
|  | } | 
|  | local_rangeCount = rangeCount; | 
|  | local_pRanges = nullptr; | 
|  | if (pRanges) | 
|  | { | 
|  | local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i) | 
|  | { | 
|  | deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i)); | 
|  | } | 
|  | } | 
|  | if (local_pColor) | 
|  | { | 
|  | transform_tohost_VkClearColorValue(mImpl->resources(), (VkClearColorValue*)(local_pColor)); | 
|  | } | 
|  | if (local_pRanges) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkImageSubresourceRange(mImpl->resources(), (VkImageSubresourceRange*)(local_pRanges + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_597; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_597, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_597, 1 * 8); | 
|  | uint64_t cgen_var_598; | 
|  | countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_598, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_598, 1 * 8); | 
|  | countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout)); | 
|  | marshal_VkClearColorValue(countingStream, (VkClearColorValue*)(local_pColor)); | 
|  | countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i) | 
|  | { | 
|  | marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkCmdClearColorImage = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdClearColorImage = OP_vkCmdClearColorImage; | 
|  | stream->write(&opcode_vkCmdClearColorImage, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdClearColorImage, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_599; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_599, 1); | 
|  | stream->write((uint64_t*)&cgen_var_599, 1 * 8); | 
|  | uint64_t cgen_var_600; | 
|  | stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_600, 1); | 
|  | stream->write((uint64_t*)&cgen_var_600, 1 * 8); | 
|  | stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout)); | 
|  | marshal_VkClearColorValue(stream, (VkClearColorValue*)(local_pColor)); | 
|  | stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i) | 
|  | { | 
|  | marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkCmdClearColorImage readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdClearColorImage returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdClearColorImage");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdClearDepthStencilImage( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkImage image, | 
|  | VkImageLayout imageLayout, | 
|  | const VkClearDepthStencilValue* pDepthStencil, | 
|  | uint32_t rangeCount, | 
|  | const VkImageSubresourceRange* pRanges) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage encode"); | 
|  | mImpl->log("start vkCmdClearDepthStencilImage"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkImage local_image; | 
|  | VkImageLayout local_imageLayout; | 
|  | VkClearDepthStencilValue* local_pDepthStencil; | 
|  | uint32_t local_rangeCount; | 
|  | VkImageSubresourceRange* local_pRanges; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_image = image; | 
|  | local_imageLayout = imageLayout; | 
|  | local_pDepthStencil = nullptr; | 
|  | if (pDepthStencil) | 
|  | { | 
|  | local_pDepthStencil = (VkClearDepthStencilValue*)pool->alloc(sizeof(const VkClearDepthStencilValue)); | 
|  | deepcopy_VkClearDepthStencilValue(pool, pDepthStencil, (VkClearDepthStencilValue*)(local_pDepthStencil)); | 
|  | } | 
|  | local_rangeCount = rangeCount; | 
|  | local_pRanges = nullptr; | 
|  | if (pRanges) | 
|  | { | 
|  | local_pRanges = (VkImageSubresourceRange*)pool->alloc(((rangeCount)) * sizeof(const VkImageSubresourceRange)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i) | 
|  | { | 
|  | deepcopy_VkImageSubresourceRange(pool, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i)); | 
|  | } | 
|  | } | 
|  | if (local_pDepthStencil) | 
|  | { | 
|  | transform_tohost_VkClearDepthStencilValue(mImpl->resources(), (VkClearDepthStencilValue*)(local_pDepthStencil)); | 
|  | } | 
|  | if (local_pRanges) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkImageSubresourceRange(mImpl->resources(), (VkImageSubresourceRange*)(local_pRanges + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_601; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_601, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_601, 1 * 8); | 
|  | uint64_t cgen_var_602; | 
|  | countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_602, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_602, 1 * 8); | 
|  | countingStream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout)); | 
|  | marshal_VkClearDepthStencilValue(countingStream, (VkClearDepthStencilValue*)(local_pDepthStencil)); | 
|  | countingStream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i) | 
|  | { | 
|  | marshal_VkImageSubresourceRange(countingStream, (VkImageSubresourceRange*)(local_pRanges + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkCmdClearDepthStencilImage = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdClearDepthStencilImage = OP_vkCmdClearDepthStencilImage; | 
|  | stream->write(&opcode_vkCmdClearDepthStencilImage, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdClearDepthStencilImage, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_603; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_603, 1); | 
|  | stream->write((uint64_t*)&cgen_var_603, 1 * 8); | 
|  | uint64_t cgen_var_604; | 
|  | stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_604, 1); | 
|  | stream->write((uint64_t*)&cgen_var_604, 1 * 8); | 
|  | stream->write((VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout)); | 
|  | marshal_VkClearDepthStencilValue(stream, (VkClearDepthStencilValue*)(local_pDepthStencil)); | 
|  | stream->write((uint32_t*)&local_rangeCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i) | 
|  | { | 
|  | marshal_VkImageSubresourceRange(stream, (VkImageSubresourceRange*)(local_pRanges + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdClearDepthStencilImage returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdClearDepthStencilImage");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdClearAttachments( | 
|  | VkCommandBuffer commandBuffer, | 
|  | uint32_t attachmentCount, | 
|  | const VkClearAttachment* pAttachments, | 
|  | uint32_t rectCount, | 
|  | const VkClearRect* pRects) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdClearAttachments encode"); | 
|  | mImpl->log("start vkCmdClearAttachments"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | uint32_t local_attachmentCount; | 
|  | VkClearAttachment* local_pAttachments; | 
|  | uint32_t local_rectCount; | 
|  | VkClearRect* local_pRects; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_attachmentCount = attachmentCount; | 
|  | local_pAttachments = nullptr; | 
|  | if (pAttachments) | 
|  | { | 
|  | local_pAttachments = (VkClearAttachment*)pool->alloc(((attachmentCount)) * sizeof(const VkClearAttachment)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i) | 
|  | { | 
|  | deepcopy_VkClearAttachment(pool, pAttachments + i, (VkClearAttachment*)(local_pAttachments + i)); | 
|  | } | 
|  | } | 
|  | local_rectCount = rectCount; | 
|  | local_pRects = nullptr; | 
|  | if (pRects) | 
|  | { | 
|  | local_pRects = (VkClearRect*)pool->alloc(((rectCount)) * sizeof(const VkClearRect)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i) | 
|  | { | 
|  | deepcopy_VkClearRect(pool, pRects + i, (VkClearRect*)(local_pRects + i)); | 
|  | } | 
|  | } | 
|  | if (local_pAttachments) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkClearAttachment(mImpl->resources(), (VkClearAttachment*)(local_pAttachments + i)); | 
|  | } | 
|  | } | 
|  | if (local_pRects) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkClearRect(mImpl->resources(), (VkClearRect*)(local_pRects + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_605; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_605, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_605, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i) | 
|  | { | 
|  | marshal_VkClearAttachment(countingStream, (VkClearAttachment*)(local_pAttachments + i)); | 
|  | } | 
|  | countingStream->write((uint32_t*)&local_rectCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i) | 
|  | { | 
|  | marshal_VkClearRect(countingStream, (VkClearRect*)(local_pRects + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkCmdClearAttachments = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdClearAttachments = OP_vkCmdClearAttachments; | 
|  | stream->write(&opcode_vkCmdClearAttachments, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdClearAttachments, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_606; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_606, 1); | 
|  | stream->write((uint64_t*)&cgen_var_606, 1 * 8); | 
|  | stream->write((uint32_t*)&local_attachmentCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i) | 
|  | { | 
|  | marshal_VkClearAttachment(stream, (VkClearAttachment*)(local_pAttachments + i)); | 
|  | } | 
|  | stream->write((uint32_t*)&local_rectCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i) | 
|  | { | 
|  | marshal_VkClearRect(stream, (VkClearRect*)(local_pRects + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkCmdClearAttachments readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdClearAttachments returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdClearAttachments");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdResolveImage( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkImage srcImage, | 
|  | VkImageLayout srcImageLayout, | 
|  | VkImage dstImage, | 
|  | VkImageLayout dstImageLayout, | 
|  | uint32_t regionCount, | 
|  | const VkImageResolve* pRegions) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdResolveImage encode"); | 
|  | mImpl->log("start vkCmdResolveImage"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkImage local_srcImage; | 
|  | VkImageLayout local_srcImageLayout; | 
|  | VkImage local_dstImage; | 
|  | VkImageLayout local_dstImageLayout; | 
|  | uint32_t local_regionCount; | 
|  | VkImageResolve* local_pRegions; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_srcImage = srcImage; | 
|  | local_srcImageLayout = srcImageLayout; | 
|  | local_dstImage = dstImage; | 
|  | local_dstImageLayout = dstImageLayout; | 
|  | local_regionCount = regionCount; | 
|  | local_pRegions = nullptr; | 
|  | if (pRegions) | 
|  | { | 
|  | local_pRegions = (VkImageResolve*)pool->alloc(((regionCount)) * sizeof(const VkImageResolve)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | deepcopy_VkImageResolve(pool, pRegions + i, (VkImageResolve*)(local_pRegions + i)); | 
|  | } | 
|  | } | 
|  | if (local_pRegions) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkImageResolve(mImpl->resources(), (VkImageResolve*)(local_pRegions + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_607; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_607, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_607, 1 * 8); | 
|  | uint64_t cgen_var_608; | 
|  | countingStream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_608, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_608, 1 * 8); | 
|  | countingStream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout)); | 
|  | uint64_t cgen_var_609; | 
|  | countingStream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_609, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_609, 1 * 8); | 
|  | countingStream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout)); | 
|  | countingStream->write((uint32_t*)&local_regionCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | marshal_VkImageResolve(countingStream, (VkImageResolve*)(local_pRegions + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkCmdResolveImage = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdResolveImage = OP_vkCmdResolveImage; | 
|  | stream->write(&opcode_vkCmdResolveImage, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdResolveImage, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_610; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_610, 1); | 
|  | stream->write((uint64_t*)&cgen_var_610, 1 * 8); | 
|  | uint64_t cgen_var_611; | 
|  | stream->handleMapping()->mapHandles_VkImage_u64(&local_srcImage, &cgen_var_611, 1); | 
|  | stream->write((uint64_t*)&cgen_var_611, 1 * 8); | 
|  | stream->write((VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout)); | 
|  | uint64_t cgen_var_612; | 
|  | stream->handleMapping()->mapHandles_VkImage_u64(&local_dstImage, &cgen_var_612, 1); | 
|  | stream->write((uint64_t*)&cgen_var_612, 1 * 8); | 
|  | stream->write((VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout)); | 
|  | stream->write((uint32_t*)&local_regionCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) | 
|  | { | 
|  | marshal_VkImageResolve(stream, (VkImageResolve*)(local_pRegions + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkCmdResolveImage readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdResolveImage returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdResolveImage");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdSetEvent( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkEvent event, | 
|  | VkPipelineStageFlags stageMask) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetEvent encode"); | 
|  | mImpl->log("start vkCmdSetEvent"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkEvent local_event; | 
|  | VkPipelineStageFlags local_stageMask; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_event = event; | 
|  | local_stageMask = stageMask; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_613; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_613, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_613, 1 * 8); | 
|  | uint64_t cgen_var_614; | 
|  | countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_614, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_614, 1 * 8); | 
|  | countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdSetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdSetEvent = OP_vkCmdSetEvent; | 
|  | stream->write(&opcode_vkCmdSetEvent, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdSetEvent, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_615; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_615, 1); | 
|  | stream->write((uint64_t*)&cgen_var_615, 1 * 8); | 
|  | uint64_t cgen_var_616; | 
|  | stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_616, 1); | 
|  | stream->write((uint64_t*)&cgen_var_616, 1 * 8); | 
|  | stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags)); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetEvent readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetEvent returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdSetEvent");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdResetEvent( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkEvent event, | 
|  | VkPipelineStageFlags stageMask) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdResetEvent encode"); | 
|  | mImpl->log("start vkCmdResetEvent"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkEvent local_event; | 
|  | VkPipelineStageFlags local_stageMask; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_event = event; | 
|  | local_stageMask = stageMask; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_617; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_617, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_617, 1 * 8); | 
|  | uint64_t cgen_var_618; | 
|  | countingStream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_618, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_618, 1 * 8); | 
|  | countingStream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdResetEvent = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdResetEvent = OP_vkCmdResetEvent; | 
|  | stream->write(&opcode_vkCmdResetEvent, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdResetEvent, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_619; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_619, 1); | 
|  | stream->write((uint64_t*)&cgen_var_619, 1 * 8); | 
|  | uint64_t cgen_var_620; | 
|  | stream->handleMapping()->mapHandles_VkEvent_u64(&local_event, &cgen_var_620, 1); | 
|  | stream->write((uint64_t*)&cgen_var_620, 1 * 8); | 
|  | stream->write((VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags)); | 
|  | AEMU_SCOPED_TRACE("vkCmdResetEvent readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdResetEvent returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdResetEvent");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::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) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdWaitEvents encode"); | 
|  | mImpl->log("start vkCmdWaitEvents"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | uint32_t local_eventCount; | 
|  | VkEvent* local_pEvents; | 
|  | VkPipelineStageFlags local_srcStageMask; | 
|  | VkPipelineStageFlags local_dstStageMask; | 
|  | uint32_t local_memoryBarrierCount; | 
|  | VkMemoryBarrier* local_pMemoryBarriers; | 
|  | uint32_t local_bufferMemoryBarrierCount; | 
|  | VkBufferMemoryBarrier* local_pBufferMemoryBarriers; | 
|  | uint32_t local_imageMemoryBarrierCount; | 
|  | VkImageMemoryBarrier* local_pImageMemoryBarriers; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_eventCount = eventCount; | 
|  | local_pEvents = nullptr; | 
|  | if (pEvents) | 
|  | { | 
|  | local_pEvents = (VkEvent*)pool->dupArray(pEvents, ((eventCount)) * sizeof(const VkEvent)); | 
|  | } | 
|  | local_srcStageMask = srcStageMask; | 
|  | local_dstStageMask = dstStageMask; | 
|  | local_memoryBarrierCount = memoryBarrierCount; | 
|  | local_pMemoryBarriers = nullptr; | 
|  | if (pMemoryBarriers) | 
|  | { | 
|  | local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i) | 
|  | { | 
|  | deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i)); | 
|  | } | 
|  | } | 
|  | local_bufferMemoryBarrierCount = bufferMemoryBarrierCount; | 
|  | local_pBufferMemoryBarriers = nullptr; | 
|  | if (pBufferMemoryBarriers) | 
|  | { | 
|  | local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i) | 
|  | { | 
|  | deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i)); | 
|  | } | 
|  | } | 
|  | local_imageMemoryBarrierCount = imageMemoryBarrierCount; | 
|  | local_pImageMemoryBarriers = nullptr; | 
|  | if (pImageMemoryBarriers) | 
|  | { | 
|  | local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i) | 
|  | { | 
|  | deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i)); | 
|  | } | 
|  | } | 
|  | if (local_pMemoryBarriers) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkMemoryBarrier(mImpl->resources(), (VkMemoryBarrier*)(local_pMemoryBarriers + i)); | 
|  | } | 
|  | } | 
|  | if (local_pBufferMemoryBarriers) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkBufferMemoryBarrier(mImpl->resources(), (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i)); | 
|  | } | 
|  | } | 
|  | if (local_pImageMemoryBarriers) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkImageMemoryBarrier(mImpl->resources(), (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_621; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_621, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_621, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_eventCount, sizeof(uint32_t)); | 
|  | if (((eventCount))) | 
|  | { | 
|  | uint64_t* cgen_var_622; | 
|  | countingStream->alloc((void**)&cgen_var_622, ((eventCount)) * 8); | 
|  | countingStream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_622, ((eventCount))); | 
|  | countingStream->write((uint64_t*)cgen_var_622, ((eventCount)) * 8); | 
|  | } | 
|  | countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags)); | 
|  | countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags)); | 
|  | countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i) | 
|  | { | 
|  | marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i)); | 
|  | } | 
|  | countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i) | 
|  | { | 
|  | marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i)); | 
|  | } | 
|  | countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i) | 
|  | { | 
|  | marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkCmdWaitEvents = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdWaitEvents = OP_vkCmdWaitEvents; | 
|  | stream->write(&opcode_vkCmdWaitEvents, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdWaitEvents, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_623; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_623, 1); | 
|  | stream->write((uint64_t*)&cgen_var_623, 1 * 8); | 
|  | stream->write((uint32_t*)&local_eventCount, sizeof(uint32_t)); | 
|  | if (((eventCount))) | 
|  | { | 
|  | uint64_t* cgen_var_624; | 
|  | stream->alloc((void**)&cgen_var_624, ((eventCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_VkEvent_u64(local_pEvents, cgen_var_624, ((eventCount))); | 
|  | stream->write((uint64_t*)cgen_var_624, ((eventCount)) * 8); | 
|  | } | 
|  | stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags)); | 
|  | stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags)); | 
|  | stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i) | 
|  | { | 
|  | marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i)); | 
|  | } | 
|  | stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i) | 
|  | { | 
|  | marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i)); | 
|  | } | 
|  | stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i) | 
|  | { | 
|  | marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkCmdWaitEvents readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdWaitEvents returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdWaitEvents");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::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) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdPipelineBarrier encode"); | 
|  | mImpl->log("start vkCmdPipelineBarrier"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkPipelineStageFlags local_srcStageMask; | 
|  | VkPipelineStageFlags local_dstStageMask; | 
|  | VkDependencyFlags local_dependencyFlags; | 
|  | uint32_t local_memoryBarrierCount; | 
|  | VkMemoryBarrier* local_pMemoryBarriers; | 
|  | uint32_t local_bufferMemoryBarrierCount; | 
|  | VkBufferMemoryBarrier* local_pBufferMemoryBarriers; | 
|  | uint32_t local_imageMemoryBarrierCount; | 
|  | VkImageMemoryBarrier* local_pImageMemoryBarriers; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_srcStageMask = srcStageMask; | 
|  | local_dstStageMask = dstStageMask; | 
|  | local_dependencyFlags = dependencyFlags; | 
|  | local_memoryBarrierCount = memoryBarrierCount; | 
|  | local_pMemoryBarriers = nullptr; | 
|  | if (pMemoryBarriers) | 
|  | { | 
|  | local_pMemoryBarriers = (VkMemoryBarrier*)pool->alloc(((memoryBarrierCount)) * sizeof(const VkMemoryBarrier)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i) | 
|  | { | 
|  | deepcopy_VkMemoryBarrier(pool, pMemoryBarriers + i, (VkMemoryBarrier*)(local_pMemoryBarriers + i)); | 
|  | } | 
|  | } | 
|  | local_bufferMemoryBarrierCount = bufferMemoryBarrierCount; | 
|  | local_pBufferMemoryBarriers = nullptr; | 
|  | if (pBufferMemoryBarriers) | 
|  | { | 
|  | local_pBufferMemoryBarriers = (VkBufferMemoryBarrier*)pool->alloc(((bufferMemoryBarrierCount)) * sizeof(const VkBufferMemoryBarrier)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i) | 
|  | { | 
|  | deepcopy_VkBufferMemoryBarrier(pool, pBufferMemoryBarriers + i, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i)); | 
|  | } | 
|  | } | 
|  | local_imageMemoryBarrierCount = imageMemoryBarrierCount; | 
|  | local_pImageMemoryBarriers = nullptr; | 
|  | if (pImageMemoryBarriers) | 
|  | { | 
|  | local_pImageMemoryBarriers = (VkImageMemoryBarrier*)pool->alloc(((imageMemoryBarrierCount)) * sizeof(const VkImageMemoryBarrier)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i) | 
|  | { | 
|  | deepcopy_VkImageMemoryBarrier(pool, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i)); | 
|  | } | 
|  | } | 
|  | if (local_pMemoryBarriers) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkMemoryBarrier(mImpl->resources(), (VkMemoryBarrier*)(local_pMemoryBarriers + i)); | 
|  | } | 
|  | } | 
|  | if (local_pBufferMemoryBarriers) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkBufferMemoryBarrier(mImpl->resources(), (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i)); | 
|  | } | 
|  | } | 
|  | if (local_pImageMemoryBarriers) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkImageMemoryBarrier(mImpl->resources(), (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_625; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_625, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_625, 1 * 8); | 
|  | countingStream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags)); | 
|  | countingStream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags)); | 
|  | countingStream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags)); | 
|  | countingStream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i) | 
|  | { | 
|  | marshal_VkMemoryBarrier(countingStream, (VkMemoryBarrier*)(local_pMemoryBarriers + i)); | 
|  | } | 
|  | countingStream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i) | 
|  | { | 
|  | marshal_VkBufferMemoryBarrier(countingStream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i)); | 
|  | } | 
|  | countingStream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i) | 
|  | { | 
|  | marshal_VkImageMemoryBarrier(countingStream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkCmdPipelineBarrier = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdPipelineBarrier = OP_vkCmdPipelineBarrier; | 
|  | stream->write(&opcode_vkCmdPipelineBarrier, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdPipelineBarrier, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_626; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_626, 1); | 
|  | stream->write((uint64_t*)&cgen_var_626, 1 * 8); | 
|  | stream->write((VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags)); | 
|  | stream->write((VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags)); | 
|  | stream->write((VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags)); | 
|  | stream->write((uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i) | 
|  | { | 
|  | marshal_VkMemoryBarrier(stream, (VkMemoryBarrier*)(local_pMemoryBarriers + i)); | 
|  | } | 
|  | stream->write((uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i) | 
|  | { | 
|  | marshal_VkBufferMemoryBarrier(stream, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i)); | 
|  | } | 
|  | stream->write((uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i) | 
|  | { | 
|  | marshal_VkImageMemoryBarrier(stream, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkCmdPipelineBarrier readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdPipelineBarrier returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdPipelineBarrier");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdBeginQuery( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkQueryPool queryPool, | 
|  | uint32_t query, | 
|  | VkQueryControlFlags flags) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdBeginQuery encode"); | 
|  | mImpl->log("start vkCmdBeginQuery"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkQueryPool local_queryPool; | 
|  | uint32_t local_query; | 
|  | VkQueryControlFlags local_flags; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_queryPool = queryPool; | 
|  | local_query = query; | 
|  | local_flags = flags; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_627; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_627, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_627, 1 * 8); | 
|  | uint64_t cgen_var_628; | 
|  | countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_628, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_628, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_query, sizeof(uint32_t)); | 
|  | countingStream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdBeginQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdBeginQuery = OP_vkCmdBeginQuery; | 
|  | stream->write(&opcode_vkCmdBeginQuery, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdBeginQuery, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_629; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_629, 1); | 
|  | stream->write((uint64_t*)&cgen_var_629, 1 * 8); | 
|  | uint64_t cgen_var_630; | 
|  | stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_630, 1); | 
|  | stream->write((uint64_t*)&cgen_var_630, 1 * 8); | 
|  | stream->write((uint32_t*)&local_query, sizeof(uint32_t)); | 
|  | stream->write((VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags)); | 
|  | AEMU_SCOPED_TRACE("vkCmdBeginQuery readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdBeginQuery returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdBeginQuery");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdEndQuery( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkQueryPool queryPool, | 
|  | uint32_t query) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdEndQuery encode"); | 
|  | mImpl->log("start vkCmdEndQuery"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkQueryPool local_queryPool; | 
|  | uint32_t local_query; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_queryPool = queryPool; | 
|  | local_query = query; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_631; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_631, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_631, 1 * 8); | 
|  | uint64_t cgen_var_632; | 
|  | countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_632, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_632, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_query, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdEndQuery = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdEndQuery = OP_vkCmdEndQuery; | 
|  | stream->write(&opcode_vkCmdEndQuery, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdEndQuery, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_633; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_633, 1); | 
|  | stream->write((uint64_t*)&cgen_var_633, 1 * 8); | 
|  | uint64_t cgen_var_634; | 
|  | stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_634, 1); | 
|  | stream->write((uint64_t*)&cgen_var_634, 1 * 8); | 
|  | stream->write((uint32_t*)&local_query, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdEndQuery readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdEndQuery returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdEndQuery");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdResetQueryPool( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkQueryPool queryPool, | 
|  | uint32_t firstQuery, | 
|  | uint32_t queryCount) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdResetQueryPool encode"); | 
|  | mImpl->log("start vkCmdResetQueryPool"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkQueryPool local_queryPool; | 
|  | uint32_t local_firstQuery; | 
|  | uint32_t local_queryCount; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_queryPool = queryPool; | 
|  | local_firstQuery = firstQuery; | 
|  | local_queryCount = queryCount; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_635; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_635, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_635, 1 * 8); | 
|  | uint64_t cgen_var_636; | 
|  | countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_636, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_636, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdResetQueryPool = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdResetQueryPool = OP_vkCmdResetQueryPool; | 
|  | stream->write(&opcode_vkCmdResetQueryPool, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdResetQueryPool, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_637; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_637, 1); | 
|  | stream->write((uint64_t*)&cgen_var_637, 1 * 8); | 
|  | uint64_t cgen_var_638; | 
|  | stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_638, 1); | 
|  | stream->write((uint64_t*)&cgen_var_638, 1 * 8); | 
|  | stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdResetQueryPool readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdResetQueryPool returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdResetQueryPool");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdWriteTimestamp( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkPipelineStageFlagBits pipelineStage, | 
|  | VkQueryPool queryPool, | 
|  | uint32_t query) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdWriteTimestamp encode"); | 
|  | mImpl->log("start vkCmdWriteTimestamp"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkPipelineStageFlagBits local_pipelineStage; | 
|  | VkQueryPool local_queryPool; | 
|  | uint32_t local_query; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_pipelineStage = pipelineStage; | 
|  | local_queryPool = queryPool; | 
|  | local_query = query; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_639; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_639, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_639, 1 * 8); | 
|  | countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits)); | 
|  | uint64_t cgen_var_640; | 
|  | countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_640, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_640, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_query, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdWriteTimestamp = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdWriteTimestamp = OP_vkCmdWriteTimestamp; | 
|  | stream->write(&opcode_vkCmdWriteTimestamp, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdWriteTimestamp, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_641; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_641, 1); | 
|  | stream->write((uint64_t*)&cgen_var_641, 1 * 8); | 
|  | stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits)); | 
|  | uint64_t cgen_var_642; | 
|  | stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_642, 1); | 
|  | stream->write((uint64_t*)&cgen_var_642, 1 * 8); | 
|  | stream->write((uint32_t*)&local_query, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdWriteTimestamp readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdWriteTimestamp returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdWriteTimestamp");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdCopyQueryPoolResults( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkQueryPool queryPool, | 
|  | uint32_t firstQuery, | 
|  | uint32_t queryCount, | 
|  | VkBuffer dstBuffer, | 
|  | VkDeviceSize dstOffset, | 
|  | VkDeviceSize stride, | 
|  | VkQueryResultFlags flags) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults encode"); | 
|  | mImpl->log("start vkCmdCopyQueryPoolResults"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkQueryPool local_queryPool; | 
|  | uint32_t local_firstQuery; | 
|  | uint32_t local_queryCount; | 
|  | VkBuffer local_dstBuffer; | 
|  | VkDeviceSize local_dstOffset; | 
|  | VkDeviceSize local_stride; | 
|  | VkQueryResultFlags local_flags; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_queryPool = queryPool; | 
|  | local_firstQuery = firstQuery; | 
|  | local_queryCount = queryCount; | 
|  | local_dstBuffer = dstBuffer; | 
|  | local_dstOffset = dstOffset; | 
|  | local_stride = stride; | 
|  | local_flags = flags; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_643; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_643, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_643, 1 * 8); | 
|  | uint64_t cgen_var_644; | 
|  | countingStream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_644, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_644, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_queryCount, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_645; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_645, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_645, 1 * 8); | 
|  | countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize)); | 
|  | countingStream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize)); | 
|  | countingStream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdCopyQueryPoolResults = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdCopyQueryPoolResults = OP_vkCmdCopyQueryPoolResults; | 
|  | stream->write(&opcode_vkCmdCopyQueryPoolResults, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdCopyQueryPoolResults, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_646; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_646, 1); | 
|  | stream->write((uint64_t*)&cgen_var_646, 1 * 8); | 
|  | uint64_t cgen_var_647; | 
|  | stream->handleMapping()->mapHandles_VkQueryPool_u64(&local_queryPool, &cgen_var_647, 1); | 
|  | stream->write((uint64_t*)&cgen_var_647, 1 * 8); | 
|  | stream->write((uint32_t*)&local_firstQuery, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_queryCount, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_648; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_648, 1); | 
|  | stream->write((uint64_t*)&cgen_var_648, 1 * 8); | 
|  | stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize)); | 
|  | stream->write((VkDeviceSize*)&local_stride, sizeof(VkDeviceSize)); | 
|  | stream->write((VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags)); | 
|  | AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdCopyQueryPoolResults returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdCopyQueryPoolResults");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdPushConstants( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkPipelineLayout layout, | 
|  | VkShaderStageFlags stageFlags, | 
|  | uint32_t offset, | 
|  | uint32_t size, | 
|  | const void* pValues) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdPushConstants encode"); | 
|  | mImpl->log("start vkCmdPushConstants"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkPipelineLayout local_layout; | 
|  | VkShaderStageFlags local_stageFlags; | 
|  | uint32_t local_offset; | 
|  | uint32_t local_size; | 
|  | void* local_pValues; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_layout = layout; | 
|  | local_stageFlags = stageFlags; | 
|  | local_offset = offset; | 
|  | local_size = size; | 
|  | local_pValues = nullptr; | 
|  | if (pValues) | 
|  | { | 
|  | local_pValues = (void*)pool->dupArray(pValues, ((size)) * sizeof(const uint8_t)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_649; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_649, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_649, 1 * 8); | 
|  | uint64_t cgen_var_650; | 
|  | countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_650, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_650, 1 * 8); | 
|  | countingStream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags)); | 
|  | countingStream->write((uint32_t*)&local_offset, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_size, sizeof(uint32_t)); | 
|  | countingStream->write((void*)local_pValues, ((size)) * sizeof(uint8_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdPushConstants = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdPushConstants = OP_vkCmdPushConstants; | 
|  | stream->write(&opcode_vkCmdPushConstants, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdPushConstants, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_651; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_651, 1); | 
|  | stream->write((uint64_t*)&cgen_var_651, 1 * 8); | 
|  | uint64_t cgen_var_652; | 
|  | stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_652, 1); | 
|  | stream->write((uint64_t*)&cgen_var_652, 1 * 8); | 
|  | stream->write((VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags)); | 
|  | stream->write((uint32_t*)&local_offset, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_size, sizeof(uint32_t)); | 
|  | stream->write((void*)local_pValues, ((size)) * sizeof(uint8_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdPushConstants readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdPushConstants returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdPushConstants");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdBeginRenderPass( | 
|  | VkCommandBuffer commandBuffer, | 
|  | const VkRenderPassBeginInfo* pRenderPassBegin, | 
|  | VkSubpassContents contents) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdBeginRenderPass encode"); | 
|  | mImpl->log("start vkCmdBeginRenderPass"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkRenderPassBeginInfo* local_pRenderPassBegin; | 
|  | VkSubpassContents local_contents; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_pRenderPassBegin = nullptr; | 
|  | if (pRenderPassBegin) | 
|  | { | 
|  | local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo)); | 
|  | deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin)); | 
|  | } | 
|  | local_contents = contents; | 
|  | if (local_pRenderPassBegin) | 
|  | { | 
|  | transform_tohost_VkRenderPassBeginInfo(mImpl->resources(), (VkRenderPassBeginInfo*)(local_pRenderPassBegin)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_653; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_653, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_653, 1 * 8); | 
|  | marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin)); | 
|  | countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdBeginRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdBeginRenderPass = OP_vkCmdBeginRenderPass; | 
|  | stream->write(&opcode_vkCmdBeginRenderPass, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdBeginRenderPass, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_654; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_654, 1); | 
|  | stream->write((uint64_t*)&cgen_var_654, 1 * 8); | 
|  | marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin)); | 
|  | stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents)); | 
|  | AEMU_SCOPED_TRACE("vkCmdBeginRenderPass readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdBeginRenderPass returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdBeginRenderPass");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdNextSubpass( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkSubpassContents contents) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdNextSubpass encode"); | 
|  | mImpl->log("start vkCmdNextSubpass"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkSubpassContents local_contents; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_contents = contents; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_655; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_655, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_655, 1 * 8); | 
|  | countingStream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdNextSubpass = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdNextSubpass = OP_vkCmdNextSubpass; | 
|  | stream->write(&opcode_vkCmdNextSubpass, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdNextSubpass, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_656; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_656, 1); | 
|  | stream->write((uint64_t*)&cgen_var_656, 1 * 8); | 
|  | stream->write((VkSubpassContents*)&local_contents, sizeof(VkSubpassContents)); | 
|  | AEMU_SCOPED_TRACE("vkCmdNextSubpass readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdNextSubpass returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdNextSubpass");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdEndRenderPass( | 
|  | VkCommandBuffer commandBuffer) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdEndRenderPass encode"); | 
|  | mImpl->log("start vkCmdEndRenderPass"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | local_commandBuffer = commandBuffer; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_657; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_657, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_657, 1 * 8); | 
|  | } | 
|  | uint32_t packetSize_vkCmdEndRenderPass = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdEndRenderPass = OP_vkCmdEndRenderPass; | 
|  | stream->write(&opcode_vkCmdEndRenderPass, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdEndRenderPass, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_658; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_658, 1); | 
|  | stream->write((uint64_t*)&cgen_var_658, 1 * 8); | 
|  | AEMU_SCOPED_TRACE("vkCmdEndRenderPass readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdEndRenderPass returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdEndRenderPass");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdExecuteCommands( | 
|  | VkCommandBuffer commandBuffer, | 
|  | uint32_t commandBufferCount, | 
|  | const VkCommandBuffer* pCommandBuffers) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdExecuteCommands encode"); | 
|  | mImpl->log("start vkCmdExecuteCommands"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | uint32_t local_commandBufferCount; | 
|  | VkCommandBuffer* local_pCommandBuffers; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_commandBufferCount = commandBufferCount; | 
|  | local_pCommandBuffers = nullptr; | 
|  | if (pCommandBuffers) | 
|  | { | 
|  | local_pCommandBuffers = (VkCommandBuffer*)pool->dupArray(pCommandBuffers, ((commandBufferCount)) * sizeof(const VkCommandBuffer)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_659; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_659, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_659, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t)); | 
|  | if (((commandBufferCount))) | 
|  | { | 
|  | uint64_t* cgen_var_660; | 
|  | countingStream->alloc((void**)&cgen_var_660, ((commandBufferCount)) * 8); | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_660, ((commandBufferCount))); | 
|  | countingStream->write((uint64_t*)cgen_var_660, ((commandBufferCount)) * 8); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkCmdExecuteCommands = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdExecuteCommands = OP_vkCmdExecuteCommands; | 
|  | stream->write(&opcode_vkCmdExecuteCommands, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdExecuteCommands, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_661; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_661, 1); | 
|  | stream->write((uint64_t*)&cgen_var_661, 1 * 8); | 
|  | stream->write((uint32_t*)&local_commandBufferCount, sizeof(uint32_t)); | 
|  | if (((commandBufferCount))) | 
|  | { | 
|  | uint64_t* cgen_var_662; | 
|  | stream->alloc((void**)&cgen_var_662, ((commandBufferCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(local_pCommandBuffers, cgen_var_662, ((commandBufferCount))); | 
|  | stream->write((uint64_t*)cgen_var_662, ((commandBufferCount)) * 8); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkCmdExecuteCommands readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdExecuteCommands returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdExecuteCommands");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_VERSION_1_1 | 
|  | VkResult VkEncoder::vkEnumerateInstanceVersion( | 
|  | uint32_t* pApiVersion) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion encode"); | 
|  | mImpl->log("start vkEnumerateInstanceVersion"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | countingStream->rewind(); | 
|  | { | 
|  | countingStream->write((uint32_t*)pApiVersion, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkEnumerateInstanceVersion = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkEnumerateInstanceVersion = OP_vkEnumerateInstanceVersion; | 
|  | stream->write(&opcode_vkEnumerateInstanceVersion, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkEnumerateInstanceVersion, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)pApiVersion, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion readParams"); | 
|  | stream->read((uint32_t*)pApiVersion, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkEnumerateInstanceVersion returnUnmarshal"); | 
|  | VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkEnumerateInstanceVersion_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkEnumerateInstanceVersion");; | 
|  | return vkEnumerateInstanceVersion_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkBindBufferMemory2( | 
|  | VkDevice device, | 
|  | uint32_t bindInfoCount, | 
|  | const VkBindBufferMemoryInfo* pBindInfos) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkBindBufferMemory2 encode"); | 
|  | mImpl->log("start vkBindBufferMemory2"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | uint32_t local_bindInfoCount; | 
|  | VkBindBufferMemoryInfo* local_pBindInfos; | 
|  | local_device = device; | 
|  | local_bindInfoCount = bindInfoCount; | 
|  | local_pBindInfos = nullptr; | 
|  | if (pBindInfos) | 
|  | { | 
|  | local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) | 
|  | { | 
|  | deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i)); | 
|  | } | 
|  | } | 
|  | if (local_pBindInfos) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkBindBufferMemoryInfo(mImpl->resources(), (VkBindBufferMemoryInfo*)(local_pBindInfos + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_663; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_663, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_663, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) | 
|  | { | 
|  | marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkBindBufferMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkBindBufferMemory2 = OP_vkBindBufferMemory2; | 
|  | stream->write(&opcode_vkBindBufferMemory2, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkBindBufferMemory2, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_664; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_664, 1); | 
|  | stream->write((uint64_t*)&cgen_var_664, 1 * 8); | 
|  | stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) | 
|  | { | 
|  | marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkBindBufferMemory2 readParams"); | 
|  | AEMU_SCOPED_TRACE("vkBindBufferMemory2 returnUnmarshal"); | 
|  | VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkBindBufferMemory2_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkBindBufferMemory2");; | 
|  | return vkBindBufferMemory2_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkBindImageMemory2( | 
|  | VkDevice device, | 
|  | uint32_t bindInfoCount, | 
|  | const VkBindImageMemoryInfo* pBindInfos) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkBindImageMemory2 encode"); | 
|  | mImpl->log("start vkBindImageMemory2"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | uint32_t local_bindInfoCount; | 
|  | VkBindImageMemoryInfo* local_pBindInfos; | 
|  | local_device = device; | 
|  | local_bindInfoCount = bindInfoCount; | 
|  | local_pBindInfos = nullptr; | 
|  | if (pBindInfos) | 
|  | { | 
|  | local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) | 
|  | { | 
|  | deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i)); | 
|  | } | 
|  | } | 
|  | if (local_pBindInfos) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkBindImageMemoryInfo(mImpl->resources(), (VkBindImageMemoryInfo*)(local_pBindInfos + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_665; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_665, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_665, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) | 
|  | { | 
|  | marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkBindImageMemory2 = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkBindImageMemory2 = OP_vkBindImageMemory2; | 
|  | stream->write(&opcode_vkBindImageMemory2, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkBindImageMemory2, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_666; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_666, 1); | 
|  | stream->write((uint64_t*)&cgen_var_666, 1 * 8); | 
|  | stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) | 
|  | { | 
|  | marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkBindImageMemory2 readParams"); | 
|  | AEMU_SCOPED_TRACE("vkBindImageMemory2 returnUnmarshal"); | 
|  | VkResult vkBindImageMemory2_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkBindImageMemory2_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkBindImageMemory2");; | 
|  | return vkBindImageMemory2_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetDeviceGroupPeerMemoryFeatures( | 
|  | VkDevice device, | 
|  | uint32_t heapIndex, | 
|  | uint32_t localDeviceIndex, | 
|  | uint32_t remoteDeviceIndex, | 
|  | VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures encode"); | 
|  | mImpl->log("start vkGetDeviceGroupPeerMemoryFeatures"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | uint32_t local_heapIndex; | 
|  | uint32_t local_localDeviceIndex; | 
|  | uint32_t local_remoteDeviceIndex; | 
|  | local_device = device; | 
|  | local_heapIndex = heapIndex; | 
|  | local_localDeviceIndex = localDeviceIndex; | 
|  | local_remoteDeviceIndex = remoteDeviceIndex; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_667; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_667, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_667, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t)); | 
|  | countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags)); | 
|  | } | 
|  | uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeatures = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetDeviceGroupPeerMemoryFeatures = OP_vkGetDeviceGroupPeerMemoryFeatures; | 
|  | stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_668; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_668, 1); | 
|  | stream->write((uint64_t*)&cgen_var_668, 1 * 8); | 
|  | stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t)); | 
|  | stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags)); | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures readParams"); | 
|  | stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags)); | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeatures returnUnmarshal"); | 
|  | mImpl->log("finish vkGetDeviceGroupPeerMemoryFeatures");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdSetDeviceMask( | 
|  | VkCommandBuffer commandBuffer, | 
|  | uint32_t deviceMask) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetDeviceMask encode"); | 
|  | mImpl->log("start vkCmdSetDeviceMask"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | uint32_t local_deviceMask; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_deviceMask = deviceMask; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_669; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_669, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_669, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdSetDeviceMask = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdSetDeviceMask = OP_vkCmdSetDeviceMask; | 
|  | stream->write(&opcode_vkCmdSetDeviceMask, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdSetDeviceMask, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_670; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_670, 1); | 
|  | stream->write((uint64_t*)&cgen_var_670, 1 * 8); | 
|  | stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetDeviceMask readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetDeviceMask returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdSetDeviceMask");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdDispatchBase( | 
|  | VkCommandBuffer commandBuffer, | 
|  | uint32_t baseGroupX, | 
|  | uint32_t baseGroupY, | 
|  | uint32_t baseGroupZ, | 
|  | uint32_t groupCountX, | 
|  | uint32_t groupCountY, | 
|  | uint32_t groupCountZ) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdDispatchBase encode"); | 
|  | mImpl->log("start vkCmdDispatchBase"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | uint32_t local_baseGroupX; | 
|  | uint32_t local_baseGroupY; | 
|  | uint32_t local_baseGroupZ; | 
|  | uint32_t local_groupCountX; | 
|  | uint32_t local_groupCountY; | 
|  | uint32_t local_groupCountZ; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_baseGroupX = baseGroupX; | 
|  | local_baseGroupY = baseGroupY; | 
|  | local_baseGroupZ = baseGroupZ; | 
|  | local_groupCountX = groupCountX; | 
|  | local_groupCountY = groupCountY; | 
|  | local_groupCountZ = groupCountZ; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_671; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_671, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_671, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdDispatchBase = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdDispatchBase = OP_vkCmdDispatchBase; | 
|  | stream->write(&opcode_vkCmdDispatchBase, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdDispatchBase, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_672; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_672, 1); | 
|  | stream->write((uint64_t*)&cgen_var_672, 1 * 8); | 
|  | stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdDispatchBase readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdDispatchBase returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdDispatchBase");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkEnumeratePhysicalDeviceGroups( | 
|  | VkInstance instance, | 
|  | uint32_t* pPhysicalDeviceGroupCount, | 
|  | VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups encode"); | 
|  | mImpl->log("start vkEnumeratePhysicalDeviceGroups"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | local_instance = instance; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_673; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_673, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_673, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_674 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount; | 
|  | countingStream->putBe64(cgen_var_674); | 
|  | if (pPhysicalDeviceGroupCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_675 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties; | 
|  | countingStream->putBe64(cgen_var_675); | 
|  | if (pPhysicalDeviceGroupProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i) | 
|  | { | 
|  | marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkEnumeratePhysicalDeviceGroups = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkEnumeratePhysicalDeviceGroups = OP_vkEnumeratePhysicalDeviceGroups; | 
|  | stream->write(&opcode_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_676; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_676, 1); | 
|  | stream->write((uint64_t*)&cgen_var_676, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_677 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount; | 
|  | stream->putBe64(cgen_var_677); | 
|  | if (pPhysicalDeviceGroupCount) | 
|  | { | 
|  | stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_678 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties; | 
|  | stream->putBe64(cgen_var_678); | 
|  | if (pPhysicalDeviceGroupProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i) | 
|  | { | 
|  | marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pPhysicalDeviceGroupCount; | 
|  | check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pPhysicalDeviceGroupCount) | 
|  | { | 
|  | if (!(check_pPhysicalDeviceGroupCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties; | 
|  | check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64(); | 
|  | if (pPhysicalDeviceGroupProperties) | 
|  | { | 
|  | if (!(check_pPhysicalDeviceGroupProperties)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i) | 
|  | { | 
|  | unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i)); | 
|  | } | 
|  | } | 
|  | if (pPhysicalDeviceGroupProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkPhysicalDeviceGroupProperties(mImpl->resources(), (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroups returnUnmarshal"); | 
|  | VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkEnumeratePhysicalDeviceGroups");; | 
|  | return vkEnumeratePhysicalDeviceGroups_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetImageMemoryRequirements2( | 
|  | VkDevice device, | 
|  | const VkImageMemoryRequirementsInfo2* pInfo, | 
|  | VkMemoryRequirements2* pMemoryRequirements) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2 encode"); | 
|  | mImpl->log("start vkGetImageMemoryRequirements2"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkImageMemoryRequirementsInfo2* local_pInfo; | 
|  | local_device = device; | 
|  | local_pInfo = nullptr; | 
|  | if (pInfo) | 
|  | { | 
|  | local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2)); | 
|  | deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | } | 
|  | if (local_pInfo) | 
|  | { | 
|  | transform_tohost_VkImageMemoryRequirementsInfo2(mImpl->resources(), (VkImageMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_681; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_681, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_681, 1 * 8); | 
|  | marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements)); | 
|  | } | 
|  | uint32_t packetSize_vkGetImageMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetImageMemoryRequirements2 = OP_vkGetImageMemoryRequirements2; | 
|  | stream->write(&opcode_vkGetImageMemoryRequirements2, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetImageMemoryRequirements2, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_682; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_682, 1); | 
|  | stream->write((uint64_t*)&cgen_var_682, 1 * 8); | 
|  | marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements)); | 
|  | AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2 readParams"); | 
|  | unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements)); | 
|  | if (pMemoryRequirements) | 
|  | { | 
|  | transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2 returnUnmarshal"); | 
|  | mImpl->log("finish vkGetImageMemoryRequirements2");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetBufferMemoryRequirements2( | 
|  | VkDevice device, | 
|  | const VkBufferMemoryRequirementsInfo2* pInfo, | 
|  | VkMemoryRequirements2* pMemoryRequirements) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2 encode"); | 
|  | mImpl->log("start vkGetBufferMemoryRequirements2"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkBufferMemoryRequirementsInfo2* local_pInfo; | 
|  | local_device = device; | 
|  | local_pInfo = nullptr; | 
|  | if (pInfo) | 
|  | { | 
|  | local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2)); | 
|  | deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | } | 
|  | if (local_pInfo) | 
|  | { | 
|  | transform_tohost_VkBufferMemoryRequirementsInfo2(mImpl->resources(), (VkBufferMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_683; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_683, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_683, 1 * 8); | 
|  | marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements)); | 
|  | } | 
|  | uint32_t packetSize_vkGetBufferMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetBufferMemoryRequirements2 = OP_vkGetBufferMemoryRequirements2; | 
|  | stream->write(&opcode_vkGetBufferMemoryRequirements2, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetBufferMemoryRequirements2, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_684; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_684, 1); | 
|  | stream->write((uint64_t*)&cgen_var_684, 1 * 8); | 
|  | marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements)); | 
|  | AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2 readParams"); | 
|  | unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements)); | 
|  | if (pMemoryRequirements) | 
|  | { | 
|  | transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2 returnUnmarshal"); | 
|  | mImpl->log("finish vkGetBufferMemoryRequirements2");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetImageSparseMemoryRequirements2( | 
|  | VkDevice device, | 
|  | const VkImageSparseMemoryRequirementsInfo2* pInfo, | 
|  | uint32_t* pSparseMemoryRequirementCount, | 
|  | VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2 encode"); | 
|  | mImpl->log("start vkGetImageSparseMemoryRequirements2"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkImageSparseMemoryRequirementsInfo2* local_pInfo; | 
|  | local_device = device; | 
|  | local_pInfo = nullptr; | 
|  | if (pInfo) | 
|  | { | 
|  | local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2)); | 
|  | deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | } | 
|  | if (local_pInfo) | 
|  | { | 
|  | transform_tohost_VkImageSparseMemoryRequirementsInfo2(mImpl->resources(), (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_685; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_685, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_685, 1 * 8); | 
|  | marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_686 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount; | 
|  | countingStream->putBe64(cgen_var_686); | 
|  | if (pSparseMemoryRequirementCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_687 = (uint64_t)(uintptr_t)pSparseMemoryRequirements; | 
|  | countingStream->putBe64(cgen_var_687); | 
|  | if (pSparseMemoryRequirements) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i) | 
|  | { | 
|  | marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetImageSparseMemoryRequirements2 = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetImageSparseMemoryRequirements2 = OP_vkGetImageSparseMemoryRequirements2; | 
|  | stream->write(&opcode_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_688; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_688, 1); | 
|  | stream->write((uint64_t*)&cgen_var_688, 1 * 8); | 
|  | marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_689 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount; | 
|  | stream->putBe64(cgen_var_689); | 
|  | if (pSparseMemoryRequirementCount) | 
|  | { | 
|  | stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_690 = (uint64_t)(uintptr_t)pSparseMemoryRequirements; | 
|  | stream->putBe64(cgen_var_690); | 
|  | if (pSparseMemoryRequirements) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i) | 
|  | { | 
|  | marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2 readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pSparseMemoryRequirementCount; | 
|  | check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pSparseMemoryRequirementCount) | 
|  | { | 
|  | if (!(check_pSparseMemoryRequirementCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements; | 
|  | check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64(); | 
|  | if (pSparseMemoryRequirements) | 
|  | { | 
|  | if (!(check_pSparseMemoryRequirements)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i) | 
|  | { | 
|  | unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i)); | 
|  | } | 
|  | } | 
|  | if (pSparseMemoryRequirements) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkSparseImageMemoryRequirements2(mImpl->resources(), (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2 returnUnmarshal"); | 
|  | mImpl->log("finish vkGetImageSparseMemoryRequirements2");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceFeatures2( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkPhysicalDeviceFeatures2* pFeatures) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2 encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceFeatures2"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | local_physicalDevice = physicalDevice; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_693; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_693, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_693, 1 * 8); | 
|  | marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceFeatures2 = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceFeatures2 = OP_vkGetPhysicalDeviceFeatures2; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_694; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_694, 1); | 
|  | stream->write((uint64_t*)&cgen_var_694, 1 * 8); | 
|  | marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2 readParams"); | 
|  | unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures)); | 
|  | if (pFeatures) | 
|  | { | 
|  | transform_fromhost_VkPhysicalDeviceFeatures2(mImpl->resources(), (VkPhysicalDeviceFeatures2*)(pFeatures)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2 returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceFeatures2");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceProperties2( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkPhysicalDeviceProperties2* pProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2 encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceProperties2"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | local_physicalDevice = physicalDevice; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_695; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_695, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_695, 1 * 8); | 
|  | marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceProperties2 = OP_vkGetPhysicalDeviceProperties2; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceProperties2, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceProperties2, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_696; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_696, 1); | 
|  | stream->write((uint64_t*)&cgen_var_696, 1 * 8); | 
|  | marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2 readParams"); | 
|  | unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties)); | 
|  | if (pProperties) | 
|  | { | 
|  | transform_fromhost_VkPhysicalDeviceProperties2(mImpl->resources(), (VkPhysicalDeviceProperties2*)(pProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2 returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceProperties2");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceFormatProperties2( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkFormat format, | 
|  | VkFormatProperties2* pFormatProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2 encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceFormatProperties2"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkFormat local_format; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_format = format; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_697; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_697, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_697, 1 * 8); | 
|  | countingStream->write((VkFormat*)&local_format, sizeof(VkFormat)); | 
|  | marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceFormatProperties2 = OP_vkGetPhysicalDeviceFormatProperties2; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_698; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_698, 1); | 
|  | stream->write((uint64_t*)&cgen_var_698, 1 * 8); | 
|  | stream->write((VkFormat*)&local_format, sizeof(VkFormat)); | 
|  | marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2 readParams"); | 
|  | unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties)); | 
|  | if (pFormatProperties) | 
|  | { | 
|  | transform_fromhost_VkFormatProperties2(mImpl->resources(), (VkFormatProperties2*)(pFormatProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2 returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceFormatProperties2");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, | 
|  | VkImageFormatProperties2* pImageFormatProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2 encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceImageFormatProperties2"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_pImageFormatInfo = nullptr; | 
|  | if (pImageFormatInfo) | 
|  | { | 
|  | local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2)); | 
|  | deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo)); | 
|  | } | 
|  | if (local_pImageFormatInfo) | 
|  | { | 
|  | transform_tohost_VkPhysicalDeviceImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_699; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_699, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_699, 1 * 8); | 
|  | marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo)); | 
|  | marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2 = OP_vkGetPhysicalDeviceImageFormatProperties2; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_700; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_700, 1); | 
|  | stream->write((uint64_t*)&cgen_var_700, 1 * 8); | 
|  | marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo)); | 
|  | marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2 readParams"); | 
|  | unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties)); | 
|  | if (pImageFormatProperties) | 
|  | { | 
|  | transform_fromhost_VkImageFormatProperties2(mImpl->resources(), (VkImageFormatProperties2*)(pImageFormatProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2 returnUnmarshal"); | 
|  | VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceImageFormatProperties2");; | 
|  | return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | uint32_t* pQueueFamilyPropertyCount, | 
|  | VkQueueFamilyProperties2* pQueueFamilyProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2 encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties2"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | local_physicalDevice = physicalDevice; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_701; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_701, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_701, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_702 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount; | 
|  | countingStream->putBe64(cgen_var_702); | 
|  | if (pQueueFamilyPropertyCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_703 = (uint64_t)(uintptr_t)pQueueFamilyProperties; | 
|  | countingStream->putBe64(cgen_var_703); | 
|  | if (pQueueFamilyProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2 = OP_vkGetPhysicalDeviceQueueFamilyProperties2; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_704; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_704, 1); | 
|  | stream->write((uint64_t*)&cgen_var_704, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_705 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount; | 
|  | stream->putBe64(cgen_var_705); | 
|  | if (pQueueFamilyPropertyCount) | 
|  | { | 
|  | stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_706 = (uint64_t)(uintptr_t)pQueueFamilyProperties; | 
|  | stream->putBe64(cgen_var_706); | 
|  | if (pQueueFamilyProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2 readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pQueueFamilyPropertyCount; | 
|  | check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pQueueFamilyPropertyCount) | 
|  | { | 
|  | if (!(check_pQueueFamilyPropertyCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkQueueFamilyProperties2* check_pQueueFamilyProperties; | 
|  | check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64(); | 
|  | if (pQueueFamilyProperties) | 
|  | { | 
|  | if (!(check_pQueueFamilyProperties)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i) | 
|  | { | 
|  | unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i)); | 
|  | } | 
|  | } | 
|  | if (pQueueFamilyProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkQueueFamilyProperties2(mImpl->resources(), (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2 returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceQueueFamilyProperties2");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceMemoryProperties2( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkPhysicalDeviceMemoryProperties2* pMemoryProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2 encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceMemoryProperties2"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | local_physicalDevice = physicalDevice; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_709; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_709, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_709, 1 * 8); | 
|  | marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2 = OP_vkGetPhysicalDeviceMemoryProperties2; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_710; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_710, 1); | 
|  | stream->write((uint64_t*)&cgen_var_710, 1 * 8); | 
|  | marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2 readParams"); | 
|  | unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties)); | 
|  | if (pMemoryProperties) | 
|  | { | 
|  | transform_fromhost_VkPhysicalDeviceMemoryProperties2(mImpl->resources(), (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2 returnUnmarshal"); | 
|  | encoderLock.unlock(); | 
|  | mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties2(this, physicalDevice, pMemoryProperties); | 
|  | encoderLock.lock(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceMemoryProperties2");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, | 
|  | uint32_t* pPropertyCount, | 
|  | VkSparseImageFormatProperties2* pProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2 encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties2"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_pFormatInfo = nullptr; | 
|  | if (pFormatInfo) | 
|  | { | 
|  | local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2)); | 
|  | deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo)); | 
|  | } | 
|  | if (local_pFormatInfo) | 
|  | { | 
|  | transform_tohost_VkPhysicalDeviceSparseImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_711; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_711, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_711, 1 * 8); | 
|  | marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_712 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | countingStream->putBe64(cgen_var_712); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_713 = (uint64_t)(uintptr_t)pProperties; | 
|  | countingStream->putBe64(cgen_var_713); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2 = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2 = OP_vkGetPhysicalDeviceSparseImageFormatProperties2; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_714; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_714, 1); | 
|  | stream->write((uint64_t*)&cgen_var_714, 1 * 8); | 
|  | marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_715 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | stream->putBe64(cgen_var_715); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_716 = (uint64_t)(uintptr_t)pProperties; | 
|  | stream->putBe64(cgen_var_716); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2 readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pPropertyCount; | 
|  | check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | if (!(check_pPropertyCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkSparseImageFormatProperties2* check_pProperties; | 
|  | check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64(); | 
|  | if (pProperties) | 
|  | { | 
|  | if (!(check_pProperties)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkSparseImageFormatProperties2(mImpl->resources(), (VkSparseImageFormatProperties2*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2 returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties2");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkTrimCommandPool( | 
|  | VkDevice device, | 
|  | VkCommandPool commandPool, | 
|  | VkCommandPoolTrimFlags flags) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkTrimCommandPool encode"); | 
|  | mImpl->log("start vkTrimCommandPool"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkCommandPool local_commandPool; | 
|  | VkCommandPoolTrimFlags local_flags; | 
|  | local_device = device; | 
|  | local_commandPool = commandPool; | 
|  | local_flags = flags; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_719; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_719, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_719, 1 * 8); | 
|  | uint64_t cgen_var_720; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_720, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_720, 1 * 8); | 
|  | countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags)); | 
|  | } | 
|  | uint32_t packetSize_vkTrimCommandPool = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkTrimCommandPool = OP_vkTrimCommandPool; | 
|  | stream->write(&opcode_vkTrimCommandPool, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkTrimCommandPool, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_721; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_721, 1); | 
|  | stream->write((uint64_t*)&cgen_var_721, 1 * 8); | 
|  | uint64_t cgen_var_722; | 
|  | stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_722, 1); | 
|  | stream->write((uint64_t*)&cgen_var_722, 1 * 8); | 
|  | stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags)); | 
|  | AEMU_SCOPED_TRACE("vkTrimCommandPool readParams"); | 
|  | AEMU_SCOPED_TRACE("vkTrimCommandPool returnUnmarshal"); | 
|  | mImpl->log("finish vkTrimCommandPool");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetDeviceQueue2( | 
|  | VkDevice device, | 
|  | const VkDeviceQueueInfo2* pQueueInfo, | 
|  | VkQueue* pQueue) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceQueue2 encode"); | 
|  | mImpl->log("start vkGetDeviceQueue2"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDeviceQueueInfo2* local_pQueueInfo; | 
|  | local_device = device; | 
|  | local_pQueueInfo = nullptr; | 
|  | if (pQueueInfo) | 
|  | { | 
|  | local_pQueueInfo = (VkDeviceQueueInfo2*)pool->alloc(sizeof(const VkDeviceQueueInfo2)); | 
|  | deepcopy_VkDeviceQueueInfo2(pool, pQueueInfo, (VkDeviceQueueInfo2*)(local_pQueueInfo)); | 
|  | } | 
|  | if (local_pQueueInfo) | 
|  | { | 
|  | transform_tohost_VkDeviceQueueInfo2(mImpl->resources(), (VkDeviceQueueInfo2*)(local_pQueueInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_723; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_723, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_723, 1 * 8); | 
|  | marshal_VkDeviceQueueInfo2(countingStream, (VkDeviceQueueInfo2*)(local_pQueueInfo)); | 
|  | uint64_t cgen_var_724; | 
|  | countingStream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_724, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_724, 8); | 
|  | } | 
|  | uint32_t packetSize_vkGetDeviceQueue2 = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetDeviceQueue2 = OP_vkGetDeviceQueue2; | 
|  | stream->write(&opcode_vkGetDeviceQueue2, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetDeviceQueue2, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_725; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_725, 1); | 
|  | stream->write((uint64_t*)&cgen_var_725, 1 * 8); | 
|  | marshal_VkDeviceQueueInfo2(stream, (VkDeviceQueueInfo2*)(local_pQueueInfo)); | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_726; | 
|  | stream->handleMapping()->mapHandles_VkQueue_u64(pQueue, &cgen_var_726, 1); | 
|  | stream->write((uint64_t*)&cgen_var_726, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceQueue2 readParams"); | 
|  | uint64_t cgen_var_727; | 
|  | stream->read((uint64_t*)&cgen_var_727, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_727, (VkQueue*)pQueue, 1); | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceQueue2 returnUnmarshal"); | 
|  | mImpl->log("finish vkGetDeviceQueue2");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateSamplerYcbcrConversion( | 
|  | VkDevice device, | 
|  | const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkSamplerYcbcrConversion* pYcbcrConversion) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion encode"); | 
|  | mImpl->log("start vkCreateSamplerYcbcrConversion"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo)); | 
|  | deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkSamplerYcbcrConversionCreateInfo(mImpl->resources(), (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_728; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_728, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_728, 1 * 8); | 
|  | marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_729 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_729); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_730; | 
|  | countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_730, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_730, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateSamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateSamplerYcbcrConversion = OP_vkCreateSamplerYcbcrConversion; | 
|  | stream->write(&opcode_vkCreateSamplerYcbcrConversion, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateSamplerYcbcrConversion, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_731; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_731, 1); | 
|  | stream->write((uint64_t*)&cgen_var_731, 1 * 8); | 
|  | marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_732 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_732); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_733; | 
|  | stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_733, 1); | 
|  | stream->write((uint64_t*)&cgen_var_733, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_734; | 
|  | stream->read((uint64_t*)&cgen_var_734, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_734, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversion returnUnmarshal"); | 
|  | VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateSamplerYcbcrConversion");; | 
|  | return vkCreateSamplerYcbcrConversion_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroySamplerYcbcrConversion( | 
|  | VkDevice device, | 
|  | VkSamplerYcbcrConversion ycbcrConversion, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion encode"); | 
|  | mImpl->log("start vkDestroySamplerYcbcrConversion"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkSamplerYcbcrConversion local_ycbcrConversion; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_ycbcrConversion = ycbcrConversion; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_735; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_735, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_735, 1 * 8); | 
|  | uint64_t cgen_var_736; | 
|  | countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_736, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_736, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_737 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_737); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroySamplerYcbcrConversion = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroySamplerYcbcrConversion = OP_vkDestroySamplerYcbcrConversion; | 
|  | stream->write(&opcode_vkDestroySamplerYcbcrConversion, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroySamplerYcbcrConversion, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_738; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_738, 1); | 
|  | stream->write((uint64_t*)&cgen_var_738, 1 * 8); | 
|  | uint64_t cgen_var_739; | 
|  | stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_739, 1); | 
|  | stream->write((uint64_t*)&cgen_var_739, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_740 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_740); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversion returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion); | 
|  | mImpl->log("finish vkDestroySamplerYcbcrConversion");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateDescriptorUpdateTemplate( | 
|  | VkDevice device, | 
|  | const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate encode"); | 
|  | mImpl->log("start vkCreateDescriptorUpdateTemplate"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo)); | 
|  | deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkDescriptorUpdateTemplateCreateInfo(mImpl->resources(), (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_741; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_741, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_741, 1 * 8); | 
|  | marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_742 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_742); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_743; | 
|  | countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_743, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_743, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateDescriptorUpdateTemplate = OP_vkCreateDescriptorUpdateTemplate; | 
|  | stream->write(&opcode_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateDescriptorUpdateTemplate, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_744; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_744, 1); | 
|  | stream->write((uint64_t*)&cgen_var_744, 1 * 8); | 
|  | marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_745 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_745); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_746; | 
|  | stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_746, 1); | 
|  | stream->write((uint64_t*)&cgen_var_746, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_747; | 
|  | stream->read((uint64_t*)&cgen_var_747, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_747, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplate returnUnmarshal"); | 
|  | VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateDescriptorUpdateTemplate_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | encoderLock.unlock(); | 
|  | mImpl->resources()->on_vkCreateDescriptorUpdateTemplate(this, vkCreateDescriptorUpdateTemplate_VkResult_return, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate); | 
|  | encoderLock.lock(); | 
|  | mImpl->log("finish vkCreateDescriptorUpdateTemplate");; | 
|  | return vkCreateDescriptorUpdateTemplate_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyDescriptorUpdateTemplate( | 
|  | VkDevice device, | 
|  | VkDescriptorUpdateTemplate descriptorUpdateTemplate, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate encode"); | 
|  | mImpl->log("start vkDestroyDescriptorUpdateTemplate"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDescriptorUpdateTemplate local_descriptorUpdateTemplate; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_descriptorUpdateTemplate = descriptorUpdateTemplate; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_748; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_748, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_748, 1 * 8); | 
|  | uint64_t cgen_var_749; | 
|  | countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_749, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_749, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_750 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_750); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyDescriptorUpdateTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyDescriptorUpdateTemplate = OP_vkDestroyDescriptorUpdateTemplate; | 
|  | stream->write(&opcode_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyDescriptorUpdateTemplate, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_751; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_751, 1); | 
|  | stream->write((uint64_t*)&cgen_var_751, 1 * 8); | 
|  | uint64_t cgen_var_752; | 
|  | stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_752, 1); | 
|  | stream->write((uint64_t*)&cgen_var_752, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_753 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_753); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplate returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate); | 
|  | mImpl->log("finish vkDestroyDescriptorUpdateTemplate");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkUpdateDescriptorSetWithTemplate( | 
|  | VkDevice device, | 
|  | VkDescriptorSet descriptorSet, | 
|  | VkDescriptorUpdateTemplate descriptorUpdateTemplate, | 
|  | const void* pData) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate encode"); | 
|  | mImpl->log("start vkUpdateDescriptorSetWithTemplate"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDescriptorSet local_descriptorSet; | 
|  | VkDescriptorUpdateTemplate local_descriptorUpdateTemplate; | 
|  | void* local_pData; | 
|  | local_device = device; | 
|  | local_descriptorSet = descriptorSet; | 
|  | local_descriptorUpdateTemplate = descriptorUpdateTemplate; | 
|  | local_pData = nullptr; | 
|  | if (pData) | 
|  | { | 
|  | local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_754; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_754, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_754, 1 * 8); | 
|  | uint64_t cgen_var_755; | 
|  | countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_755, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_755, 1 * 8); | 
|  | uint64_t cgen_var_756; | 
|  | countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_756, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_756, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_757 = (uint64_t)(uintptr_t)local_pData; | 
|  | countingStream->putBe64(cgen_var_757); | 
|  | if (local_pData) | 
|  | { | 
|  | countingStream->write((void*)local_pData, sizeof(uint8_t)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkUpdateDescriptorSetWithTemplate = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkUpdateDescriptorSetWithTemplate = OP_vkUpdateDescriptorSetWithTemplate; | 
|  | stream->write(&opcode_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkUpdateDescriptorSetWithTemplate, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_758; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_758, 1); | 
|  | stream->write((uint64_t*)&cgen_var_758, 1 * 8); | 
|  | uint64_t cgen_var_759; | 
|  | stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_759, 1); | 
|  | stream->write((uint64_t*)&cgen_var_759, 1 * 8); | 
|  | uint64_t cgen_var_760; | 
|  | stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_760, 1); | 
|  | stream->write((uint64_t*)&cgen_var_760, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_761 = (uint64_t)(uintptr_t)local_pData; | 
|  | stream->putBe64(cgen_var_761); | 
|  | if (local_pData) | 
|  | { | 
|  | stream->write((void*)local_pData, sizeof(uint8_t)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate readParams"); | 
|  | AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplate returnUnmarshal"); | 
|  | mImpl->log("finish vkUpdateDescriptorSetWithTemplate");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceExternalBufferProperties( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, | 
|  | VkExternalBufferProperties* pExternalBufferProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceExternalBufferProperties"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_pExternalBufferInfo = nullptr; | 
|  | if (pExternalBufferInfo) | 
|  | { | 
|  | local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo)); | 
|  | deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo)); | 
|  | } | 
|  | if (local_pExternalBufferInfo) | 
|  | { | 
|  | mImpl->resources()->transformImpl_VkPhysicalDeviceExternalBufferInfo_tohost(local_pExternalBufferInfo, 1); | 
|  | transform_tohost_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_762; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_762, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_762, 1 * 8); | 
|  | marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo)); | 
|  | marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceExternalBufferProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceExternalBufferProperties = OP_vkGetPhysicalDeviceExternalBufferProperties; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferProperties, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_763; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_763, 1); | 
|  | stream->write((uint64_t*)&cgen_var_763, 1 * 8); | 
|  | marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo)); | 
|  | marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties readParams"); | 
|  | unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties)); | 
|  | if (pExternalBufferProperties) | 
|  | { | 
|  | mImpl->resources()->transformImpl_VkExternalBufferProperties_fromhost(pExternalBufferProperties, 1); | 
|  | transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferProperties returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceExternalBufferProperties");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceExternalFenceProperties( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, | 
|  | VkExternalFenceProperties* pExternalFenceProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceExternalFenceProperties"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_pExternalFenceInfo = nullptr; | 
|  | if (pExternalFenceInfo) | 
|  | { | 
|  | local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo)); | 
|  | deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo)); | 
|  | } | 
|  | if (local_pExternalFenceInfo) | 
|  | { | 
|  | transform_tohost_VkPhysicalDeviceExternalFenceInfo(mImpl->resources(), (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_764; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_764, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_764, 1 * 8); | 
|  | marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo)); | 
|  | marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceExternalFenceProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceExternalFenceProperties = OP_vkGetPhysicalDeviceExternalFenceProperties; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceExternalFenceProperties, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_765; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_765, 1); | 
|  | stream->write((uint64_t*)&cgen_var_765, 1 * 8); | 
|  | marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo)); | 
|  | marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties readParams"); | 
|  | unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties)); | 
|  | if (pExternalFenceProperties) | 
|  | { | 
|  | transform_fromhost_VkExternalFenceProperties(mImpl->resources(), (VkExternalFenceProperties*)(pExternalFenceProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFenceProperties returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceExternalFenceProperties");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceExternalSemaphoreProperties( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, | 
|  | VkExternalSemaphoreProperties* pExternalSemaphoreProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceExternalSemaphoreProperties"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_pExternalSemaphoreInfo = nullptr; | 
|  | if (pExternalSemaphoreInfo) | 
|  | { | 
|  | local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo)); | 
|  | deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo)); | 
|  | } | 
|  | if (local_pExternalSemaphoreInfo) | 
|  | { | 
|  | transform_tohost_VkPhysicalDeviceExternalSemaphoreInfo(mImpl->resources(), (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_766; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_766, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_766, 1 * 8); | 
|  | marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo)); | 
|  | marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceExternalSemaphoreProperties = OP_vkGetPhysicalDeviceExternalSemaphoreProperties; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphoreProperties, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_767; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_767, 1); | 
|  | stream->write((uint64_t*)&cgen_var_767, 1 * 8); | 
|  | marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo)); | 
|  | marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties readParams"); | 
|  | unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties)); | 
|  | if (pExternalSemaphoreProperties) | 
|  | { | 
|  | transform_fromhost_VkExternalSemaphoreProperties(mImpl->resources(), (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphoreProperties returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceExternalSemaphoreProperties");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetDescriptorSetLayoutSupport( | 
|  | VkDevice device, | 
|  | const VkDescriptorSetLayoutCreateInfo* pCreateInfo, | 
|  | VkDescriptorSetLayoutSupport* pSupport) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport encode"); | 
|  | mImpl->log("start vkGetDescriptorSetLayoutSupport"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDescriptorSetLayoutCreateInfo* local_pCreateInfo; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo)); | 
|  | deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_768; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_768, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_768, 1 * 8); | 
|  | marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo)); | 
|  | marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport)); | 
|  | } | 
|  | uint32_t packetSize_vkGetDescriptorSetLayoutSupport = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetDescriptorSetLayoutSupport = OP_vkGetDescriptorSetLayoutSupport; | 
|  | stream->write(&opcode_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetDescriptorSetLayoutSupport, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_769; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_769, 1); | 
|  | stream->write((uint64_t*)&cgen_var_769, 1 * 8); | 
|  | marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo)); | 
|  | marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport)); | 
|  | AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport readParams"); | 
|  | unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport)); | 
|  | if (pSupport) | 
|  | { | 
|  | transform_fromhost_VkDescriptorSetLayoutSupport(mImpl->resources(), (VkDescriptorSetLayoutSupport*)(pSupport)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupport returnUnmarshal"); | 
|  | mImpl->log("finish vkGetDescriptorSetLayoutSupport");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_surface | 
|  | void VkEncoder::vkDestroySurfaceKHR( | 
|  | VkInstance instance, | 
|  | VkSurfaceKHR surface, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroySurfaceKHR encode"); | 
|  | mImpl->log("start vkDestroySurfaceKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | VkSurfaceKHR local_surface; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_instance = instance; | 
|  | local_surface = surface; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_770; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_770, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_770, 1 * 8); | 
|  | uint64_t cgen_var_771; | 
|  | countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_771, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_771, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_772 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_772); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroySurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroySurfaceKHR = OP_vkDestroySurfaceKHR; | 
|  | stream->write(&opcode_vkDestroySurfaceKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroySurfaceKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_773; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_773, 1); | 
|  | stream->write((uint64_t*)&cgen_var_773, 1 * 8); | 
|  | uint64_t cgen_var_774; | 
|  | stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_774, 1); | 
|  | stream->write((uint64_t*)&cgen_var_774, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_775 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_775); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroySurfaceKHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroySurfaceKHR returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkSurfaceKHR((VkSurfaceKHR*)&surface); | 
|  | mImpl->log("finish vkDestroySurfaceKHR");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetPhysicalDeviceSurfaceSupportKHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | uint32_t queueFamilyIndex, | 
|  | VkSurfaceKHR surface, | 
|  | VkBool32* pSupported) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceSurfaceSupportKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | uint32_t local_queueFamilyIndex; | 
|  | VkSurfaceKHR local_surface; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_queueFamilyIndex = queueFamilyIndex; | 
|  | local_surface = surface; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_776; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_776, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_776, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_777; | 
|  | countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_777, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_777, 1 * 8); | 
|  | countingStream->write((VkBool32*)pSupported, sizeof(VkBool32)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceSurfaceSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceSurfaceSupportKHR = OP_vkGetPhysicalDeviceSurfaceSupportKHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceSurfaceSupportKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_778; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_778, 1); | 
|  | stream->write((uint64_t*)&cgen_var_778, 1 * 8); | 
|  | stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_779; | 
|  | stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_779, 1); | 
|  | stream->write((uint64_t*)&cgen_var_779, 1 * 8); | 
|  | stream->write((VkBool32*)pSupported, sizeof(VkBool32)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR readParams"); | 
|  | stream->read((VkBool32*)pSupported, sizeof(VkBool32)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceSupportKHR returnUnmarshal"); | 
|  | VkResult vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceSurfaceSupportKHR");; | 
|  | return vkGetPhysicalDeviceSurfaceSupportKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilitiesKHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkSurfaceKHR surface, | 
|  | VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilitiesKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkSurfaceKHR local_surface; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_surface = surface; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_780; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_780, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_780, 1 * 8); | 
|  | uint64_t cgen_var_781; | 
|  | countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_781, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_781, 1 * 8); | 
|  | marshal_VkSurfaceCapabilitiesKHR(countingStream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = OP_vkGetPhysicalDeviceSurfaceCapabilitiesKHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_782; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_782, 1); | 
|  | stream->write((uint64_t*)&cgen_var_782, 1 * 8); | 
|  | uint64_t cgen_var_783; | 
|  | stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_783, 1); | 
|  | stream->write((uint64_t*)&cgen_var_783, 1 * 8); | 
|  | marshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR readParams"); | 
|  | unmarshal_VkSurfaceCapabilitiesKHR(stream, (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities)); | 
|  | if (pSurfaceCapabilities) | 
|  | { | 
|  | transform_fromhost_VkSurfaceCapabilitiesKHR(mImpl->resources(), (VkSurfaceCapabilitiesKHR*)(pSurfaceCapabilities)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilitiesKHR returnUnmarshal"); | 
|  | VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilitiesKHR");; | 
|  | return vkGetPhysicalDeviceSurfaceCapabilitiesKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormatsKHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkSurfaceKHR surface, | 
|  | uint32_t* pSurfaceFormatCount, | 
|  | VkSurfaceFormatKHR* pSurfaceFormats) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceSurfaceFormatsKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkSurfaceKHR local_surface; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_surface = surface; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_784; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_784, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_784, 1 * 8); | 
|  | uint64_t cgen_var_785; | 
|  | countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_785, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_785, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_786 = (uint64_t)(uintptr_t)pSurfaceFormatCount; | 
|  | countingStream->putBe64(cgen_var_786); | 
|  | if (pSurfaceFormatCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_787 = (uint64_t)(uintptr_t)pSurfaceFormats; | 
|  | countingStream->putBe64(cgen_var_787); | 
|  | if (pSurfaceFormats) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i) | 
|  | { | 
|  | marshal_VkSurfaceFormatKHR(countingStream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceSurfaceFormatsKHR = OP_vkGetPhysicalDeviceSurfaceFormatsKHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormatsKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_788; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_788, 1); | 
|  | stream->write((uint64_t*)&cgen_var_788, 1 * 8); | 
|  | uint64_t cgen_var_789; | 
|  | stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_789, 1); | 
|  | stream->write((uint64_t*)&cgen_var_789, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_790 = (uint64_t)(uintptr_t)pSurfaceFormatCount; | 
|  | stream->putBe64(cgen_var_790); | 
|  | if (pSurfaceFormatCount) | 
|  | { | 
|  | stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_791 = (uint64_t)(uintptr_t)pSurfaceFormats; | 
|  | stream->putBe64(cgen_var_791); | 
|  | if (pSurfaceFormats) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i) | 
|  | { | 
|  | marshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pSurfaceFormatCount; | 
|  | check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pSurfaceFormatCount) | 
|  | { | 
|  | if (!(check_pSurfaceFormatCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkSurfaceFormatKHR* check_pSurfaceFormats; | 
|  | check_pSurfaceFormats = (VkSurfaceFormatKHR*)(uintptr_t)stream->getBe64(); | 
|  | if (pSurfaceFormats) | 
|  | { | 
|  | if (!(check_pSurfaceFormats)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i) | 
|  | { | 
|  | unmarshal_VkSurfaceFormatKHR(stream, (VkSurfaceFormatKHR*)(pSurfaceFormats + i)); | 
|  | } | 
|  | } | 
|  | if (pSurfaceFormats) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkSurfaceFormatKHR(mImpl->resources(), (VkSurfaceFormatKHR*)(pSurfaceFormats + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormatsKHR returnUnmarshal"); | 
|  | VkResult vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceSurfaceFormatsKHR");; | 
|  | return vkGetPhysicalDeviceSurfaceFormatsKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetPhysicalDeviceSurfacePresentModesKHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkSurfaceKHR surface, | 
|  | uint32_t* pPresentModeCount, | 
|  | VkPresentModeKHR* pPresentModes) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceSurfacePresentModesKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkSurfaceKHR local_surface; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_surface = surface; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_794; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_794, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_794, 1 * 8); | 
|  | uint64_t cgen_var_795; | 
|  | countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_795, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_795, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_796 = (uint64_t)(uintptr_t)pPresentModeCount; | 
|  | countingStream->putBe64(cgen_var_796); | 
|  | if (pPresentModeCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_797 = (uint64_t)(uintptr_t)pPresentModes; | 
|  | countingStream->putBe64(cgen_var_797); | 
|  | if (pPresentModes) | 
|  | { | 
|  | countingStream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceSurfacePresentModesKHR = OP_vkGetPhysicalDeviceSurfacePresentModesKHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceSurfacePresentModesKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_798; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_798, 1); | 
|  | stream->write((uint64_t*)&cgen_var_798, 1 * 8); | 
|  | uint64_t cgen_var_799; | 
|  | stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_799, 1); | 
|  | stream->write((uint64_t*)&cgen_var_799, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_800 = (uint64_t)(uintptr_t)pPresentModeCount; | 
|  | stream->putBe64(cgen_var_800); | 
|  | if (pPresentModeCount) | 
|  | { | 
|  | stream->write((uint32_t*)pPresentModeCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_801 = (uint64_t)(uintptr_t)pPresentModes; | 
|  | stream->putBe64(cgen_var_801); | 
|  | if (pPresentModes) | 
|  | { | 
|  | stream->write((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pPresentModeCount; | 
|  | check_pPresentModeCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pPresentModeCount) | 
|  | { | 
|  | if (!(check_pPresentModeCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPresentModeCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pPresentModeCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkPresentModeKHR* check_pPresentModes; | 
|  | check_pPresentModes = (VkPresentModeKHR*)(uintptr_t)stream->getBe64(); | 
|  | if (pPresentModes) | 
|  | { | 
|  | if (!(check_pPresentModes)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPresentModes inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((VkPresentModeKHR*)pPresentModes, (*(pPresentModeCount)) * sizeof(VkPresentModeKHR)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfacePresentModesKHR returnUnmarshal"); | 
|  | VkResult vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceSurfacePresentModesKHR");; | 
|  | return vkGetPhysicalDeviceSurfacePresentModesKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_swapchain | 
|  | VkResult VkEncoder::vkCreateSwapchainKHR( | 
|  | VkDevice device, | 
|  | const VkSwapchainCreateInfoKHR* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkSwapchainKHR* pSwapchain) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateSwapchainKHR encode"); | 
|  | mImpl->log("start vkCreateSwapchainKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkSwapchainCreateInfoKHR* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkSwapchainCreateInfoKHR*)pool->alloc(sizeof(const VkSwapchainCreateInfoKHR)); | 
|  | deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfo, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkSwapchainCreateInfoKHR(mImpl->resources(), (VkSwapchainCreateInfoKHR*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_804; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_804, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_804, 1 * 8); | 
|  | marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_805 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_805); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_806; | 
|  | countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_806, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_806, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateSwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateSwapchainKHR = OP_vkCreateSwapchainKHR; | 
|  | stream->write(&opcode_vkCreateSwapchainKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateSwapchainKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_807; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_807, 1); | 
|  | stream->write((uint64_t*)&cgen_var_807, 1 * 8); | 
|  | marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_808 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_808); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_809; | 
|  | stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchain, &cgen_var_809, 1); | 
|  | stream->write((uint64_t*)&cgen_var_809, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateSwapchainKHR readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_810; | 
|  | stream->read((uint64_t*)&cgen_var_810, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(&cgen_var_810, (VkSwapchainKHR*)pSwapchain, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateSwapchainKHR returnUnmarshal"); | 
|  | VkResult vkCreateSwapchainKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateSwapchainKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateSwapchainKHR");; | 
|  | return vkCreateSwapchainKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroySwapchainKHR( | 
|  | VkDevice device, | 
|  | VkSwapchainKHR swapchain, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroySwapchainKHR encode"); | 
|  | mImpl->log("start vkDestroySwapchainKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkSwapchainKHR local_swapchain; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_swapchain = swapchain; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_811; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_811, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_811, 1 * 8); | 
|  | uint64_t cgen_var_812; | 
|  | countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_812, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_812, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_813 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_813); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroySwapchainKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroySwapchainKHR = OP_vkDestroySwapchainKHR; | 
|  | stream->write(&opcode_vkDestroySwapchainKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroySwapchainKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_814; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_814, 1); | 
|  | stream->write((uint64_t*)&cgen_var_814, 1 * 8); | 
|  | uint64_t cgen_var_815; | 
|  | stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_815, 1); | 
|  | stream->write((uint64_t*)&cgen_var_815, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_816 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_816); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroySwapchainKHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroySwapchainKHR returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkSwapchainKHR((VkSwapchainKHR*)&swapchain); | 
|  | mImpl->log("finish vkDestroySwapchainKHR");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetSwapchainImagesKHR( | 
|  | VkDevice device, | 
|  | VkSwapchainKHR swapchain, | 
|  | uint32_t* pSwapchainImageCount, | 
|  | VkImage* pSwapchainImages) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR encode"); | 
|  | mImpl->log("start vkGetSwapchainImagesKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkSwapchainKHR local_swapchain; | 
|  | local_device = device; | 
|  | local_swapchain = swapchain; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_817; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_817, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_817, 1 * 8); | 
|  | uint64_t cgen_var_818; | 
|  | countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_818, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_818, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_819 = (uint64_t)(uintptr_t)pSwapchainImageCount; | 
|  | countingStream->putBe64(cgen_var_819); | 
|  | if (pSwapchainImageCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_820 = (uint64_t)(uintptr_t)pSwapchainImages; | 
|  | countingStream->putBe64(cgen_var_820); | 
|  | if (pSwapchainImages) | 
|  | { | 
|  | if ((*(pSwapchainImageCount))) | 
|  | { | 
|  | uint64_t* cgen_var_821; | 
|  | countingStream->alloc((void**)&cgen_var_821, (*(pSwapchainImageCount)) * 8); | 
|  | countingStream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_821, (*(pSwapchainImageCount))); | 
|  | countingStream->write((uint64_t*)cgen_var_821, (*(pSwapchainImageCount)) * 8); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetSwapchainImagesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetSwapchainImagesKHR = OP_vkGetSwapchainImagesKHR; | 
|  | stream->write(&opcode_vkGetSwapchainImagesKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetSwapchainImagesKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_822; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_822, 1); | 
|  | stream->write((uint64_t*)&cgen_var_822, 1 * 8); | 
|  | uint64_t cgen_var_823; | 
|  | stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_823, 1); | 
|  | stream->write((uint64_t*)&cgen_var_823, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_824 = (uint64_t)(uintptr_t)pSwapchainImageCount; | 
|  | stream->putBe64(cgen_var_824); | 
|  | if (pSwapchainImageCount) | 
|  | { | 
|  | stream->write((uint32_t*)pSwapchainImageCount, sizeof(uint32_t)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_825 = (uint64_t)(uintptr_t)pSwapchainImages; | 
|  | stream->putBe64(cgen_var_825); | 
|  | if (pSwapchainImages) | 
|  | { | 
|  | if ((*(pSwapchainImageCount))) | 
|  | { | 
|  | uint64_t* cgen_var_826; | 
|  | stream->alloc((void**)&cgen_var_826, (*(pSwapchainImageCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_VkImage_u64(pSwapchainImages, cgen_var_826, (*(pSwapchainImageCount))); | 
|  | stream->write((uint64_t*)cgen_var_826, (*(pSwapchainImageCount)) * 8); | 
|  | } | 
|  | } | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pSwapchainImageCount; | 
|  | check_pSwapchainImageCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pSwapchainImageCount) | 
|  | { | 
|  | if (!(check_pSwapchainImageCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pSwapchainImageCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pSwapchainImageCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkImage* check_pSwapchainImages; | 
|  | check_pSwapchainImages = (VkImage*)(uintptr_t)stream->getBe64(); | 
|  | if (pSwapchainImages) | 
|  | { | 
|  | if (!(check_pSwapchainImages)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pSwapchainImages inconsistent between guest and host\n"); | 
|  | } | 
|  | if ((*(pSwapchainImageCount))) | 
|  | { | 
|  | uint64_t* cgen_var_829; | 
|  | stream->alloc((void**)&cgen_var_829, (*(pSwapchainImageCount)) * 8); | 
|  | stream->read((uint64_t*)cgen_var_829, (*(pSwapchainImageCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkImage(cgen_var_829, (VkImage*)pSwapchainImages, (*(pSwapchainImageCount))); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetSwapchainImagesKHR returnUnmarshal"); | 
|  | VkResult vkGetSwapchainImagesKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetSwapchainImagesKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetSwapchainImagesKHR");; | 
|  | return vkGetSwapchainImagesKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkAcquireNextImageKHR( | 
|  | VkDevice device, | 
|  | VkSwapchainKHR swapchain, | 
|  | uint64_t timeout, | 
|  | VkSemaphore semaphore, | 
|  | VkFence fence, | 
|  | uint32_t* pImageIndex) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkAcquireNextImageKHR encode"); | 
|  | mImpl->log("start vkAcquireNextImageKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkSwapchainKHR local_swapchain; | 
|  | uint64_t local_timeout; | 
|  | VkSemaphore local_semaphore; | 
|  | VkFence local_fence; | 
|  | local_device = device; | 
|  | local_swapchain = swapchain; | 
|  | local_timeout = timeout; | 
|  | local_semaphore = semaphore; | 
|  | local_fence = fence; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_830; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_830, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_830, 1 * 8); | 
|  | uint64_t cgen_var_831; | 
|  | countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_831, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_831, 1 * 8); | 
|  | countingStream->write((uint64_t*)&local_timeout, sizeof(uint64_t)); | 
|  | uint64_t cgen_var_832; | 
|  | countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_832, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_832, 1 * 8); | 
|  | uint64_t cgen_var_833; | 
|  | countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_833, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_833, 1 * 8); | 
|  | countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkAcquireNextImageKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkAcquireNextImageKHR = OP_vkAcquireNextImageKHR; | 
|  | stream->write(&opcode_vkAcquireNextImageKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkAcquireNextImageKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_834; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_834, 1); | 
|  | stream->write((uint64_t*)&cgen_var_834, 1 * 8); | 
|  | uint64_t cgen_var_835; | 
|  | stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_835, 1); | 
|  | stream->write((uint64_t*)&cgen_var_835, 1 * 8); | 
|  | stream->write((uint64_t*)&local_timeout, sizeof(uint64_t)); | 
|  | uint64_t cgen_var_836; | 
|  | stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_836, 1); | 
|  | stream->write((uint64_t*)&cgen_var_836, 1 * 8); | 
|  | uint64_t cgen_var_837; | 
|  | stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_837, 1); | 
|  | stream->write((uint64_t*)&cgen_var_837, 1 * 8); | 
|  | stream->write((uint32_t*)pImageIndex, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkAcquireNextImageKHR readParams"); | 
|  | stream->read((uint32_t*)pImageIndex, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkAcquireNextImageKHR returnUnmarshal"); | 
|  | VkResult vkAcquireNextImageKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkAcquireNextImageKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkAcquireNextImageKHR");; | 
|  | return vkAcquireNextImageKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkQueuePresentKHR( | 
|  | VkQueue queue, | 
|  | const VkPresentInfoKHR* pPresentInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkQueuePresentKHR encode"); | 
|  | mImpl->log("start vkQueuePresentKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkQueue local_queue; | 
|  | VkPresentInfoKHR* local_pPresentInfo; | 
|  | local_queue = queue; | 
|  | local_pPresentInfo = nullptr; | 
|  | if (pPresentInfo) | 
|  | { | 
|  | local_pPresentInfo = (VkPresentInfoKHR*)pool->alloc(sizeof(const VkPresentInfoKHR)); | 
|  | deepcopy_VkPresentInfoKHR(pool, pPresentInfo, (VkPresentInfoKHR*)(local_pPresentInfo)); | 
|  | } | 
|  | if (local_pPresentInfo) | 
|  | { | 
|  | transform_tohost_VkPresentInfoKHR(mImpl->resources(), (VkPresentInfoKHR*)(local_pPresentInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_838; | 
|  | countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_838, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_838, 1 * 8); | 
|  | marshal_VkPresentInfoKHR(countingStream, (VkPresentInfoKHR*)(local_pPresentInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkQueuePresentKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkQueuePresentKHR = OP_vkQueuePresentKHR; | 
|  | stream->write(&opcode_vkQueuePresentKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkQueuePresentKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_839; | 
|  | stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_839, 1); | 
|  | stream->write((uint64_t*)&cgen_var_839, 1 * 8); | 
|  | marshal_VkPresentInfoKHR(stream, (VkPresentInfoKHR*)(local_pPresentInfo)); | 
|  | AEMU_SCOPED_TRACE("vkQueuePresentKHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkQueuePresentKHR returnUnmarshal"); | 
|  | VkResult vkQueuePresentKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkQueuePresentKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkQueuePresentKHR");; | 
|  | return vkQueuePresentKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetDeviceGroupPresentCapabilitiesKHR( | 
|  | VkDevice device, | 
|  | VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR encode"); | 
|  | mImpl->log("start vkGetDeviceGroupPresentCapabilitiesKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | local_device = device; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_840; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_840, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_840, 1 * 8); | 
|  | marshal_VkDeviceGroupPresentCapabilitiesKHR(countingStream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities)); | 
|  | } | 
|  | uint32_t packetSize_vkGetDeviceGroupPresentCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetDeviceGroupPresentCapabilitiesKHR = OP_vkGetDeviceGroupPresentCapabilitiesKHR; | 
|  | stream->write(&opcode_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetDeviceGroupPresentCapabilitiesKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_841; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_841, 1); | 
|  | stream->write((uint64_t*)&cgen_var_841, 1 * 8); | 
|  | marshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities)); | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR readParams"); | 
|  | unmarshal_VkDeviceGroupPresentCapabilitiesKHR(stream, (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities)); | 
|  | if (pDeviceGroupPresentCapabilities) | 
|  | { | 
|  | transform_fromhost_VkDeviceGroupPresentCapabilitiesKHR(mImpl->resources(), (VkDeviceGroupPresentCapabilitiesKHR*)(pDeviceGroupPresentCapabilities)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceGroupPresentCapabilitiesKHR returnUnmarshal"); | 
|  | VkResult vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetDeviceGroupPresentCapabilitiesKHR");; | 
|  | return vkGetDeviceGroupPresentCapabilitiesKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetDeviceGroupSurfacePresentModesKHR( | 
|  | VkDevice device, | 
|  | VkSurfaceKHR surface, | 
|  | VkDeviceGroupPresentModeFlagsKHR* pModes) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR encode"); | 
|  | mImpl->log("start vkGetDeviceGroupSurfacePresentModesKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkSurfaceKHR local_surface; | 
|  | local_device = device; | 
|  | local_surface = surface; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_842; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_842, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_842, 1 * 8); | 
|  | uint64_t cgen_var_843; | 
|  | countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_843, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_843, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_844 = (uint64_t)(uintptr_t)pModes; | 
|  | countingStream->putBe64(cgen_var_844); | 
|  | if (pModes) | 
|  | { | 
|  | countingStream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetDeviceGroupSurfacePresentModesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetDeviceGroupSurfacePresentModesKHR = OP_vkGetDeviceGroupSurfacePresentModesKHR; | 
|  | stream->write(&opcode_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetDeviceGroupSurfacePresentModesKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_845; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_845, 1); | 
|  | stream->write((uint64_t*)&cgen_var_845, 1 * 8); | 
|  | uint64_t cgen_var_846; | 
|  | stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_846, 1); | 
|  | stream->write((uint64_t*)&cgen_var_846, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_847 = (uint64_t)(uintptr_t)pModes; | 
|  | stream->putBe64(cgen_var_847); | 
|  | if (pModes) | 
|  | { | 
|  | stream->write((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR readParams"); | 
|  | // WARNING PTR CHECK | 
|  | VkDeviceGroupPresentModeFlagsKHR* check_pModes; | 
|  | check_pModes = (VkDeviceGroupPresentModeFlagsKHR*)(uintptr_t)stream->getBe64(); | 
|  | if (pModes) | 
|  | { | 
|  | if (!(check_pModes)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pModes inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((VkDeviceGroupPresentModeFlagsKHR*)pModes, sizeof(VkDeviceGroupPresentModeFlagsKHR)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceGroupSurfacePresentModesKHR returnUnmarshal"); | 
|  | VkResult vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetDeviceGroupSurfacePresentModesKHR");; | 
|  | return vkGetDeviceGroupSurfacePresentModesKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetPhysicalDevicePresentRectanglesKHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkSurfaceKHR surface, | 
|  | uint32_t* pRectCount, | 
|  | VkRect2D* pRects) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDevicePresentRectanglesKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkSurfaceKHR local_surface; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_surface = surface; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_849; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_849, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_849, 1 * 8); | 
|  | uint64_t cgen_var_850; | 
|  | countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_850, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_850, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_851 = (uint64_t)(uintptr_t)pRectCount; | 
|  | countingStream->putBe64(cgen_var_851); | 
|  | if (pRectCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pRectCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_852 = (uint64_t)(uintptr_t)pRects; | 
|  | countingStream->putBe64(cgen_var_852); | 
|  | if (pRects) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i) | 
|  | { | 
|  | marshal_VkRect2D(countingStream, (VkRect2D*)(pRects + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDevicePresentRectanglesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDevicePresentRectanglesKHR = OP_vkGetPhysicalDevicePresentRectanglesKHR; | 
|  | stream->write(&opcode_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDevicePresentRectanglesKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_853; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_853, 1); | 
|  | stream->write((uint64_t*)&cgen_var_853, 1 * 8); | 
|  | uint64_t cgen_var_854; | 
|  | stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_854, 1); | 
|  | stream->write((uint64_t*)&cgen_var_854, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_855 = (uint64_t)(uintptr_t)pRectCount; | 
|  | stream->putBe64(cgen_var_855); | 
|  | if (pRectCount) | 
|  | { | 
|  | stream->write((uint32_t*)pRectCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_856 = (uint64_t)(uintptr_t)pRects; | 
|  | stream->putBe64(cgen_var_856); | 
|  | if (pRects) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i) | 
|  | { | 
|  | marshal_VkRect2D(stream, (VkRect2D*)(pRects + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pRectCount; | 
|  | check_pRectCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pRectCount) | 
|  | { | 
|  | if (!(check_pRectCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pRectCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pRectCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkRect2D* check_pRects; | 
|  | check_pRects = (VkRect2D*)(uintptr_t)stream->getBe64(); | 
|  | if (pRects) | 
|  | { | 
|  | if (!(check_pRects)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pRects inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i) | 
|  | { | 
|  | unmarshal_VkRect2D(stream, (VkRect2D*)(pRects + i)); | 
|  | } | 
|  | } | 
|  | if (pRects) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pRectCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkRect2D(mImpl->resources(), (VkRect2D*)(pRects + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDevicePresentRectanglesKHR returnUnmarshal"); | 
|  | VkResult vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPhysicalDevicePresentRectanglesKHR");; | 
|  | return vkGetPhysicalDevicePresentRectanglesKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkAcquireNextImage2KHR( | 
|  | VkDevice device, | 
|  | const VkAcquireNextImageInfoKHR* pAcquireInfo, | 
|  | uint32_t* pImageIndex) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR encode"); | 
|  | mImpl->log("start vkAcquireNextImage2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkAcquireNextImageInfoKHR* local_pAcquireInfo; | 
|  | local_device = device; | 
|  | local_pAcquireInfo = nullptr; | 
|  | if (pAcquireInfo) | 
|  | { | 
|  | local_pAcquireInfo = (VkAcquireNextImageInfoKHR*)pool->alloc(sizeof(const VkAcquireNextImageInfoKHR)); | 
|  | deepcopy_VkAcquireNextImageInfoKHR(pool, pAcquireInfo, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo)); | 
|  | } | 
|  | if (local_pAcquireInfo) | 
|  | { | 
|  | transform_tohost_VkAcquireNextImageInfoKHR(mImpl->resources(), (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_859; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_859, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_859, 1 * 8); | 
|  | marshal_VkAcquireNextImageInfoKHR(countingStream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo)); | 
|  | countingStream->write((uint32_t*)pImageIndex, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkAcquireNextImage2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkAcquireNextImage2KHR = OP_vkAcquireNextImage2KHR; | 
|  | stream->write(&opcode_vkAcquireNextImage2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkAcquireNextImage2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_860; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_860, 1); | 
|  | stream->write((uint64_t*)&cgen_var_860, 1 * 8); | 
|  | marshal_VkAcquireNextImageInfoKHR(stream, (VkAcquireNextImageInfoKHR*)(local_pAcquireInfo)); | 
|  | stream->write((uint32_t*)pImageIndex, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR readParams"); | 
|  | stream->read((uint32_t*)pImageIndex, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkAcquireNextImage2KHR returnUnmarshal"); | 
|  | VkResult vkAcquireNextImage2KHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkAcquireNextImage2KHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkAcquireNextImage2KHR");; | 
|  | return vkAcquireNextImage2KHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_display | 
|  | VkResult VkEncoder::vkGetPhysicalDeviceDisplayPropertiesKHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | uint32_t* pPropertyCount, | 
|  | VkDisplayPropertiesKHR* pProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceDisplayPropertiesKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | local_physicalDevice = physicalDevice; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_861; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_861, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_861, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_862 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | countingStream->putBe64(cgen_var_862); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_863 = (uint64_t)(uintptr_t)pProperties; | 
|  | countingStream->putBe64(cgen_var_863); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkDisplayPropertiesKHR(countingStream, (VkDisplayPropertiesKHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceDisplayPropertiesKHR = OP_vkGetPhysicalDeviceDisplayPropertiesKHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceDisplayPropertiesKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_864; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_864, 1); | 
|  | stream->write((uint64_t*)&cgen_var_864, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_865 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | stream->putBe64(cgen_var_865); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_866 = (uint64_t)(uintptr_t)pProperties; | 
|  | stream->putBe64(cgen_var_866); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pPropertyCount; | 
|  | check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | if (!(check_pPropertyCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkDisplayPropertiesKHR* check_pProperties; | 
|  | check_pProperties = (VkDisplayPropertiesKHR*)(uintptr_t)stream->getBe64(); | 
|  | if (pProperties) | 
|  | { | 
|  | if (!(check_pProperties)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | unmarshal_VkDisplayPropertiesKHR(stream, (VkDisplayPropertiesKHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkDisplayPropertiesKHR(mImpl->resources(), (VkDisplayPropertiesKHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPropertiesKHR returnUnmarshal"); | 
|  | VkResult vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceDisplayPropertiesKHR");; | 
|  | return vkGetPhysicalDeviceDisplayPropertiesKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlanePropertiesKHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | uint32_t* pPropertyCount, | 
|  | VkDisplayPlanePropertiesKHR* pProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceDisplayPlanePropertiesKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | local_physicalDevice = physicalDevice; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_869; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_869, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_869, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_870 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | countingStream->putBe64(cgen_var_870); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_871 = (uint64_t)(uintptr_t)pProperties; | 
|  | countingStream->putBe64(cgen_var_871); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkDisplayPlanePropertiesKHR(countingStream, (VkDisplayPlanePropertiesKHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = OP_vkGetPhysicalDeviceDisplayPlanePropertiesKHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_872; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_872, 1); | 
|  | stream->write((uint64_t*)&cgen_var_872, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_873 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | stream->putBe64(cgen_var_873); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_874 = (uint64_t)(uintptr_t)pProperties; | 
|  | stream->putBe64(cgen_var_874); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pPropertyCount; | 
|  | check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | if (!(check_pPropertyCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkDisplayPlanePropertiesKHR* check_pProperties; | 
|  | check_pProperties = (VkDisplayPlanePropertiesKHR*)(uintptr_t)stream->getBe64(); | 
|  | if (pProperties) | 
|  | { | 
|  | if (!(check_pProperties)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | unmarshal_VkDisplayPlanePropertiesKHR(stream, (VkDisplayPlanePropertiesKHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkDisplayPlanePropertiesKHR(mImpl->resources(), (VkDisplayPlanePropertiesKHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlanePropertiesKHR returnUnmarshal"); | 
|  | VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceDisplayPlanePropertiesKHR");; | 
|  | return vkGetPhysicalDeviceDisplayPlanePropertiesKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetDisplayPlaneSupportedDisplaysKHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | uint32_t planeIndex, | 
|  | uint32_t* pDisplayCount, | 
|  | VkDisplayKHR* pDisplays) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR encode"); | 
|  | mImpl->log("start vkGetDisplayPlaneSupportedDisplaysKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | uint32_t local_planeIndex; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_planeIndex = planeIndex; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_877; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_877, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_877, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_878 = (uint64_t)(uintptr_t)pDisplayCount; | 
|  | countingStream->putBe64(cgen_var_878); | 
|  | if (pDisplayCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pDisplayCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_879 = (uint64_t)(uintptr_t)pDisplays; | 
|  | countingStream->putBe64(cgen_var_879); | 
|  | if (pDisplays) | 
|  | { | 
|  | if ((*(pDisplayCount))) | 
|  | { | 
|  | uint64_t* cgen_var_880; | 
|  | countingStream->alloc((void**)&cgen_var_880, (*(pDisplayCount)) * 8); | 
|  | countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_880, (*(pDisplayCount))); | 
|  | countingStream->write((uint64_t*)cgen_var_880, (*(pDisplayCount)) * 8); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetDisplayPlaneSupportedDisplaysKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetDisplayPlaneSupportedDisplaysKHR = OP_vkGetDisplayPlaneSupportedDisplaysKHR; | 
|  | stream->write(&opcode_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetDisplayPlaneSupportedDisplaysKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_881; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_881, 1); | 
|  | stream->write((uint64_t*)&cgen_var_881, 1 * 8); | 
|  | stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_882 = (uint64_t)(uintptr_t)pDisplayCount; | 
|  | stream->putBe64(cgen_var_882); | 
|  | if (pDisplayCount) | 
|  | { | 
|  | stream->write((uint32_t*)pDisplayCount, sizeof(uint32_t)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_883 = (uint64_t)(uintptr_t)pDisplays; | 
|  | stream->putBe64(cgen_var_883); | 
|  | if (pDisplays) | 
|  | { | 
|  | if ((*(pDisplayCount))) | 
|  | { | 
|  | uint64_t* cgen_var_884; | 
|  | stream->alloc((void**)&cgen_var_884, (*(pDisplayCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplays, cgen_var_884, (*(pDisplayCount))); | 
|  | stream->write((uint64_t*)cgen_var_884, (*(pDisplayCount)) * 8); | 
|  | } | 
|  | } | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pDisplayCount; | 
|  | check_pDisplayCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pDisplayCount) | 
|  | { | 
|  | if (!(check_pDisplayCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pDisplayCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pDisplayCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkDisplayKHR* check_pDisplays; | 
|  | check_pDisplays = (VkDisplayKHR*)(uintptr_t)stream->getBe64(); | 
|  | if (pDisplays) | 
|  | { | 
|  | if (!(check_pDisplays)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pDisplays inconsistent between guest and host\n"); | 
|  | } | 
|  | if ((*(pDisplayCount))) | 
|  | { | 
|  | uint64_t* cgen_var_887; | 
|  | stream->alloc((void**)&cgen_var_887, (*(pDisplayCount)) * 8); | 
|  | stream->read((uint64_t*)cgen_var_887, (*(pDisplayCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkDisplayKHR(cgen_var_887, (VkDisplayKHR*)pDisplays, (*(pDisplayCount))); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetDisplayPlaneSupportedDisplaysKHR returnUnmarshal"); | 
|  | VkResult vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetDisplayPlaneSupportedDisplaysKHR");; | 
|  | return vkGetDisplayPlaneSupportedDisplaysKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetDisplayModePropertiesKHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkDisplayKHR display, | 
|  | uint32_t* pPropertyCount, | 
|  | VkDisplayModePropertiesKHR* pProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR encode"); | 
|  | mImpl->log("start vkGetDisplayModePropertiesKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkDisplayKHR local_display; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_display = display; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_888; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_888, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_888, 1 * 8); | 
|  | uint64_t cgen_var_889; | 
|  | countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_889, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_889, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_890 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | countingStream->putBe64(cgen_var_890); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_891 = (uint64_t)(uintptr_t)pProperties; | 
|  | countingStream->putBe64(cgen_var_891); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkDisplayModePropertiesKHR(countingStream, (VkDisplayModePropertiesKHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetDisplayModePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetDisplayModePropertiesKHR = OP_vkGetDisplayModePropertiesKHR; | 
|  | stream->write(&opcode_vkGetDisplayModePropertiesKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetDisplayModePropertiesKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_892; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_892, 1); | 
|  | stream->write((uint64_t*)&cgen_var_892, 1 * 8); | 
|  | uint64_t cgen_var_893; | 
|  | stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_893, 1); | 
|  | stream->write((uint64_t*)&cgen_var_893, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_894 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | stream->putBe64(cgen_var_894); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_895 = (uint64_t)(uintptr_t)pProperties; | 
|  | stream->putBe64(cgen_var_895); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pPropertyCount; | 
|  | check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | if (!(check_pPropertyCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkDisplayModePropertiesKHR* check_pProperties; | 
|  | check_pProperties = (VkDisplayModePropertiesKHR*)(uintptr_t)stream->getBe64(); | 
|  | if (pProperties) | 
|  | { | 
|  | if (!(check_pProperties)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | unmarshal_VkDisplayModePropertiesKHR(stream, (VkDisplayModePropertiesKHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkDisplayModePropertiesKHR(mImpl->resources(), (VkDisplayModePropertiesKHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetDisplayModePropertiesKHR returnUnmarshal"); | 
|  | VkResult vkGetDisplayModePropertiesKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetDisplayModePropertiesKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetDisplayModePropertiesKHR");; | 
|  | return vkGetDisplayModePropertiesKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateDisplayModeKHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkDisplayKHR display, | 
|  | const VkDisplayModeCreateInfoKHR* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkDisplayModeKHR* pMode) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR encode"); | 
|  | mImpl->log("start vkCreateDisplayModeKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkDisplayKHR local_display; | 
|  | VkDisplayModeCreateInfoKHR* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_display = display; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkDisplayModeCreateInfoKHR*)pool->alloc(sizeof(const VkDisplayModeCreateInfoKHR)); | 
|  | deepcopy_VkDisplayModeCreateInfoKHR(pool, pCreateInfo, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkDisplayModeCreateInfoKHR(mImpl->resources(), (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_898; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_898, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_898, 1 * 8); | 
|  | uint64_t cgen_var_899; | 
|  | countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_899, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_899, 1 * 8); | 
|  | marshal_VkDisplayModeCreateInfoKHR(countingStream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_900 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_900); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_901; | 
|  | countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_901, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_901, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateDisplayModeKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateDisplayModeKHR = OP_vkCreateDisplayModeKHR; | 
|  | stream->write(&opcode_vkCreateDisplayModeKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateDisplayModeKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_902; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_902, 1); | 
|  | stream->write((uint64_t*)&cgen_var_902, 1 * 8); | 
|  | uint64_t cgen_var_903; | 
|  | stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_903, 1); | 
|  | stream->write((uint64_t*)&cgen_var_903, 1 * 8); | 
|  | marshal_VkDisplayModeCreateInfoKHR(stream, (VkDisplayModeCreateInfoKHR*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_904 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_904); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_905; | 
|  | stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(pMode, &cgen_var_905, 1); | 
|  | stream->write((uint64_t*)&cgen_var_905, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_906; | 
|  | stream->read((uint64_t*)&cgen_var_906, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkDisplayModeKHR(&cgen_var_906, (VkDisplayModeKHR*)pMode, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateDisplayModeKHR returnUnmarshal"); | 
|  | VkResult vkCreateDisplayModeKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateDisplayModeKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateDisplayModeKHR");; | 
|  | return vkCreateDisplayModeKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetDisplayPlaneCapabilitiesKHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkDisplayModeKHR mode, | 
|  | uint32_t planeIndex, | 
|  | VkDisplayPlaneCapabilitiesKHR* pCapabilities) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR encode"); | 
|  | mImpl->log("start vkGetDisplayPlaneCapabilitiesKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkDisplayModeKHR local_mode; | 
|  | uint32_t local_planeIndex; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_mode = mode; | 
|  | local_planeIndex = planeIndex; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_907; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_907, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_907, 1 * 8); | 
|  | uint64_t cgen_var_908; | 
|  | countingStream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_908, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_908, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t)); | 
|  | marshal_VkDisplayPlaneCapabilitiesKHR(countingStream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities)); | 
|  | } | 
|  | uint32_t packetSize_vkGetDisplayPlaneCapabilitiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetDisplayPlaneCapabilitiesKHR = OP_vkGetDisplayPlaneCapabilitiesKHR; | 
|  | stream->write(&opcode_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetDisplayPlaneCapabilitiesKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_909; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_909, 1); | 
|  | stream->write((uint64_t*)&cgen_var_909, 1 * 8); | 
|  | uint64_t cgen_var_910; | 
|  | stream->handleMapping()->mapHandles_VkDisplayModeKHR_u64(&local_mode, &cgen_var_910, 1); | 
|  | stream->write((uint64_t*)&cgen_var_910, 1 * 8); | 
|  | stream->write((uint32_t*)&local_planeIndex, sizeof(uint32_t)); | 
|  | marshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities)); | 
|  | AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR readParams"); | 
|  | unmarshal_VkDisplayPlaneCapabilitiesKHR(stream, (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities)); | 
|  | if (pCapabilities) | 
|  | { | 
|  | transform_fromhost_VkDisplayPlaneCapabilitiesKHR(mImpl->resources(), (VkDisplayPlaneCapabilitiesKHR*)(pCapabilities)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilitiesKHR returnUnmarshal"); | 
|  | VkResult vkGetDisplayPlaneCapabilitiesKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetDisplayPlaneCapabilitiesKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetDisplayPlaneCapabilitiesKHR");; | 
|  | return vkGetDisplayPlaneCapabilitiesKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateDisplayPlaneSurfaceKHR( | 
|  | VkInstance instance, | 
|  | const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkSurfaceKHR* pSurface) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR encode"); | 
|  | mImpl->log("start vkCreateDisplayPlaneSurfaceKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | VkDisplaySurfaceCreateInfoKHR* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_instance = instance; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkDisplaySurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkDisplaySurfaceCreateInfoKHR)); | 
|  | deepcopy_VkDisplaySurfaceCreateInfoKHR(pool, pCreateInfo, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkDisplaySurfaceCreateInfoKHR(mImpl->resources(), (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_911; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_911, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_911, 1 * 8); | 
|  | marshal_VkDisplaySurfaceCreateInfoKHR(countingStream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_912 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_912); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_913; | 
|  | countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_913, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_913, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateDisplayPlaneSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateDisplayPlaneSurfaceKHR = OP_vkCreateDisplayPlaneSurfaceKHR; | 
|  | stream->write(&opcode_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateDisplayPlaneSurfaceKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_914; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_914, 1); | 
|  | stream->write((uint64_t*)&cgen_var_914, 1 * 8); | 
|  | marshal_VkDisplaySurfaceCreateInfoKHR(stream, (VkDisplaySurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_915 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_915); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_916; | 
|  | stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_916, 1); | 
|  | stream->write((uint64_t*)&cgen_var_916, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR readParams"); | 
|  | uint64_t cgen_var_917; | 
|  | stream->read((uint64_t*)&cgen_var_917, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_917, (VkSurfaceKHR*)pSurface, 1); | 
|  | AEMU_SCOPED_TRACE("vkCreateDisplayPlaneSurfaceKHR returnUnmarshal"); | 
|  | VkResult vkCreateDisplayPlaneSurfaceKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateDisplayPlaneSurfaceKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateDisplayPlaneSurfaceKHR");; | 
|  | return vkCreateDisplayPlaneSurfaceKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_display_swapchain | 
|  | VkResult VkEncoder::vkCreateSharedSwapchainsKHR( | 
|  | VkDevice device, | 
|  | uint32_t swapchainCount, | 
|  | const VkSwapchainCreateInfoKHR* pCreateInfos, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkSwapchainKHR* pSwapchains) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR encode"); | 
|  | mImpl->log("start vkCreateSharedSwapchainsKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | uint32_t local_swapchainCount; | 
|  | VkSwapchainCreateInfoKHR* local_pCreateInfos; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_swapchainCount = swapchainCount; | 
|  | local_pCreateInfos = nullptr; | 
|  | if (pCreateInfos) | 
|  | { | 
|  | local_pCreateInfos = (VkSwapchainCreateInfoKHR*)pool->alloc(((swapchainCount)) * sizeof(const VkSwapchainCreateInfoKHR)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i) | 
|  | { | 
|  | deepcopy_VkSwapchainCreateInfoKHR(pool, pCreateInfos + i, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i)); | 
|  | } | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfos) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkSwapchainCreateInfoKHR(mImpl->resources(), (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i)); | 
|  | } | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_918; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_918, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_918, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i) | 
|  | { | 
|  | marshal_VkSwapchainCreateInfoKHR(countingStream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_919 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_919); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | if (((swapchainCount))) | 
|  | { | 
|  | uint64_t* cgen_var_920; | 
|  | countingStream->alloc((void**)&cgen_var_920, ((swapchainCount)) * 8); | 
|  | countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_920, ((swapchainCount))); | 
|  | countingStream->write((uint64_t*)cgen_var_920, ((swapchainCount)) * 8); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkCreateSharedSwapchainsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateSharedSwapchainsKHR = OP_vkCreateSharedSwapchainsKHR; | 
|  | stream->write(&opcode_vkCreateSharedSwapchainsKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateSharedSwapchainsKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_921; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_921, 1); | 
|  | stream->write((uint64_t*)&cgen_var_921, 1 * 8); | 
|  | stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i) | 
|  | { | 
|  | marshal_VkSwapchainCreateInfoKHR(stream, (VkSwapchainCreateInfoKHR*)(local_pCreateInfos + i)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_922 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_922); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | if (((swapchainCount))) | 
|  | { | 
|  | uint64_t* cgen_var_923; | 
|  | stream->alloc((void**)&cgen_var_923, ((swapchainCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(pSwapchains, cgen_var_923, ((swapchainCount))); | 
|  | stream->write((uint64_t*)cgen_var_923, ((swapchainCount)) * 8); | 
|  | } | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR readParams"); | 
|  | if (((swapchainCount))) | 
|  | { | 
|  | uint64_t* cgen_var_924; | 
|  | stream->alloc((void**)&cgen_var_924, ((swapchainCount)) * 8); | 
|  | stream->read((uint64_t*)cgen_var_924, ((swapchainCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkSwapchainKHR(cgen_var_924, (VkSwapchainKHR*)pSwapchains, ((swapchainCount))); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkCreateSharedSwapchainsKHR returnUnmarshal"); | 
|  | VkResult vkCreateSharedSwapchainsKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateSharedSwapchainsKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateSharedSwapchainsKHR");; | 
|  | return vkCreateSharedSwapchainsKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_xlib_surface | 
|  | VkResult VkEncoder::vkCreateXlibSurfaceKHR( | 
|  | VkInstance instance, | 
|  | const VkXlibSurfaceCreateInfoKHR* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkSurfaceKHR* pSurface) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR encode"); | 
|  | mImpl->log("start vkCreateXlibSurfaceKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | VkXlibSurfaceCreateInfoKHR* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_instance = instance; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkXlibSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXlibSurfaceCreateInfoKHR)); | 
|  | deepcopy_VkXlibSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkXlibSurfaceCreateInfoKHR(mImpl->resources(), (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_925; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_925, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_925, 1 * 8); | 
|  | marshal_VkXlibSurfaceCreateInfoKHR(countingStream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_926 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_926); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_927; | 
|  | countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_927, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_927, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateXlibSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateXlibSurfaceKHR = OP_vkCreateXlibSurfaceKHR; | 
|  | stream->write(&opcode_vkCreateXlibSurfaceKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateXlibSurfaceKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_928; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_928, 1); | 
|  | stream->write((uint64_t*)&cgen_var_928, 1 * 8); | 
|  | marshal_VkXlibSurfaceCreateInfoKHR(stream, (VkXlibSurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_929 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_929); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_930; | 
|  | stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_930, 1); | 
|  | stream->write((uint64_t*)&cgen_var_930, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR readParams"); | 
|  | uint64_t cgen_var_931; | 
|  | stream->read((uint64_t*)&cgen_var_931, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_931, (VkSurfaceKHR*)pSurface, 1); | 
|  | AEMU_SCOPED_TRACE("vkCreateXlibSurfaceKHR returnUnmarshal"); | 
|  | VkResult vkCreateXlibSurfaceKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateXlibSurfaceKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateXlibSurfaceKHR");; | 
|  | return vkCreateXlibSurfaceKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkBool32 VkEncoder::vkGetPhysicalDeviceXlibPresentationSupportKHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | uint32_t queueFamilyIndex, | 
|  | Display* dpy, | 
|  | VisualID visualID) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceXlibPresentationSupportKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | uint32_t local_queueFamilyIndex; | 
|  | VisualID local_visualID; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_queueFamilyIndex = queueFamilyIndex; | 
|  | local_visualID = visualID; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_932; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_932, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_932, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t)); | 
|  | countingStream->write((Display*)dpy, sizeof(Display)); | 
|  | countingStream->write((VisualID*)&local_visualID, sizeof(VisualID)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR = OP_vkGetPhysicalDeviceXlibPresentationSupportKHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceXlibPresentationSupportKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_933; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_933, 1); | 
|  | stream->write((uint64_t*)&cgen_var_933, 1 * 8); | 
|  | stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t)); | 
|  | stream->write((Display*)dpy, sizeof(Display)); | 
|  | stream->write((VisualID*)&local_visualID, sizeof(VisualID)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR readParams"); | 
|  | stream->read((Display*)dpy, sizeof(Display)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXlibPresentationSupportKHR returnUnmarshal"); | 
|  | VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return = (VkBool32)0; | 
|  | stream->read(&vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return, sizeof(VkBool32)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceXlibPresentationSupportKHR");; | 
|  | return vkGetPhysicalDeviceXlibPresentationSupportKHR_VkBool32_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_xcb_surface | 
|  | VkResult VkEncoder::vkCreateXcbSurfaceKHR( | 
|  | VkInstance instance, | 
|  | const VkXcbSurfaceCreateInfoKHR* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkSurfaceKHR* pSurface) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR encode"); | 
|  | mImpl->log("start vkCreateXcbSurfaceKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | VkXcbSurfaceCreateInfoKHR* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_instance = instance; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkXcbSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkXcbSurfaceCreateInfoKHR)); | 
|  | deepcopy_VkXcbSurfaceCreateInfoKHR(pool, pCreateInfo, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkXcbSurfaceCreateInfoKHR(mImpl->resources(), (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_934; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_934, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_934, 1 * 8); | 
|  | marshal_VkXcbSurfaceCreateInfoKHR(countingStream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_935 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_935); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_936; | 
|  | countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_936, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_936, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateXcbSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateXcbSurfaceKHR = OP_vkCreateXcbSurfaceKHR; | 
|  | stream->write(&opcode_vkCreateXcbSurfaceKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateXcbSurfaceKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_937; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_937, 1); | 
|  | stream->write((uint64_t*)&cgen_var_937, 1 * 8); | 
|  | marshal_VkXcbSurfaceCreateInfoKHR(stream, (VkXcbSurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_938 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_938); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_939; | 
|  | stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_939, 1); | 
|  | stream->write((uint64_t*)&cgen_var_939, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR readParams"); | 
|  | uint64_t cgen_var_940; | 
|  | stream->read((uint64_t*)&cgen_var_940, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_940, (VkSurfaceKHR*)pSurface, 1); | 
|  | AEMU_SCOPED_TRACE("vkCreateXcbSurfaceKHR returnUnmarshal"); | 
|  | VkResult vkCreateXcbSurfaceKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateXcbSurfaceKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateXcbSurfaceKHR");; | 
|  | return vkCreateXcbSurfaceKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkBool32 VkEncoder::vkGetPhysicalDeviceXcbPresentationSupportKHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | uint32_t queueFamilyIndex, | 
|  | xcb_connection_t* connection, | 
|  | xcb_visualid_t visual_id) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceXcbPresentationSupportKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | uint32_t local_queueFamilyIndex; | 
|  | xcb_visualid_t local_visual_id; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_queueFamilyIndex = queueFamilyIndex; | 
|  | local_visual_id = visual_id; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_941; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_941, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_941, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t)); | 
|  | countingStream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t)); | 
|  | countingStream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR = OP_vkGetPhysicalDeviceXcbPresentationSupportKHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceXcbPresentationSupportKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_942; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_942, 1); | 
|  | stream->write((uint64_t*)&cgen_var_942, 1 * 8); | 
|  | stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t)); | 
|  | stream->write((xcb_connection_t*)connection, sizeof(xcb_connection_t)); | 
|  | stream->write((xcb_visualid_t*)&local_visual_id, sizeof(xcb_visualid_t)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR readParams"); | 
|  | stream->read((xcb_connection_t*)connection, sizeof(xcb_connection_t)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceXcbPresentationSupportKHR returnUnmarshal"); | 
|  | VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return = (VkBool32)0; | 
|  | stream->read(&vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return, sizeof(VkBool32)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceXcbPresentationSupportKHR");; | 
|  | return vkGetPhysicalDeviceXcbPresentationSupportKHR_VkBool32_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_wayland_surface | 
|  | VkResult VkEncoder::vkCreateWaylandSurfaceKHR( | 
|  | VkInstance instance, | 
|  | const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkSurfaceKHR* pSurface) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR encode"); | 
|  | mImpl->log("start vkCreateWaylandSurfaceKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | VkWaylandSurfaceCreateInfoKHR* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_instance = instance; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkWaylandSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWaylandSurfaceCreateInfoKHR)); | 
|  | deepcopy_VkWaylandSurfaceCreateInfoKHR(pool, pCreateInfo, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkWaylandSurfaceCreateInfoKHR(mImpl->resources(), (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_943; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_943, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_943, 1 * 8); | 
|  | marshal_VkWaylandSurfaceCreateInfoKHR(countingStream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_944 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_944); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_945; | 
|  | countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_945, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_945, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateWaylandSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateWaylandSurfaceKHR = OP_vkCreateWaylandSurfaceKHR; | 
|  | stream->write(&opcode_vkCreateWaylandSurfaceKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateWaylandSurfaceKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_946; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_946, 1); | 
|  | stream->write((uint64_t*)&cgen_var_946, 1 * 8); | 
|  | marshal_VkWaylandSurfaceCreateInfoKHR(stream, (VkWaylandSurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_947 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_947); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_948; | 
|  | stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_948, 1); | 
|  | stream->write((uint64_t*)&cgen_var_948, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR readParams"); | 
|  | uint64_t cgen_var_949; | 
|  | stream->read((uint64_t*)&cgen_var_949, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_949, (VkSurfaceKHR*)pSurface, 1); | 
|  | AEMU_SCOPED_TRACE("vkCreateWaylandSurfaceKHR returnUnmarshal"); | 
|  | VkResult vkCreateWaylandSurfaceKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateWaylandSurfaceKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateWaylandSurfaceKHR");; | 
|  | return vkCreateWaylandSurfaceKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkBool32 VkEncoder::vkGetPhysicalDeviceWaylandPresentationSupportKHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | uint32_t queueFamilyIndex, | 
|  | wl_display* display) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceWaylandPresentationSupportKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | uint32_t local_queueFamilyIndex; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_queueFamilyIndex = queueFamilyIndex; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_950; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_950, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_950, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t)); | 
|  | countingStream->write((wl_display*)display, sizeof(wl_display)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR = OP_vkGetPhysicalDeviceWaylandPresentationSupportKHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceWaylandPresentationSupportKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_951; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_951, 1); | 
|  | stream->write((uint64_t*)&cgen_var_951, 1 * 8); | 
|  | stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t)); | 
|  | stream->write((wl_display*)display, sizeof(wl_display)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR readParams"); | 
|  | stream->read((wl_display*)display, sizeof(wl_display)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWaylandPresentationSupportKHR returnUnmarshal"); | 
|  | VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return = (VkBool32)0; | 
|  | stream->read(&vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return, sizeof(VkBool32)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceWaylandPresentationSupportKHR");; | 
|  | return vkGetPhysicalDeviceWaylandPresentationSupportKHR_VkBool32_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_mir_surface | 
|  | VkResult VkEncoder::vkCreateMirSurfaceKHR( | 
|  | VkInstance instance, | 
|  | const VkMirSurfaceCreateInfoKHR* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkSurfaceKHR* pSurface) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR encode"); | 
|  | mImpl->log("start vkCreateMirSurfaceKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | VkMirSurfaceCreateInfoKHR* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_instance = instance; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkMirSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkMirSurfaceCreateInfoKHR)); | 
|  | deepcopy_VkMirSurfaceCreateInfoKHR(pool, pCreateInfo, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkMirSurfaceCreateInfoKHR(mImpl->resources(), (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_952; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_952, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_952, 1 * 8); | 
|  | marshal_VkMirSurfaceCreateInfoKHR(countingStream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_953 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_953); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_954; | 
|  | countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_954, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_954, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateMirSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateMirSurfaceKHR = OP_vkCreateMirSurfaceKHR; | 
|  | stream->write(&opcode_vkCreateMirSurfaceKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateMirSurfaceKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_955; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_955, 1); | 
|  | stream->write((uint64_t*)&cgen_var_955, 1 * 8); | 
|  | marshal_VkMirSurfaceCreateInfoKHR(stream, (VkMirSurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_956 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_956); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_957; | 
|  | stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_957, 1); | 
|  | stream->write((uint64_t*)&cgen_var_957, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR readParams"); | 
|  | uint64_t cgen_var_958; | 
|  | stream->read((uint64_t*)&cgen_var_958, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_958, (VkSurfaceKHR*)pSurface, 1); | 
|  | AEMU_SCOPED_TRACE("vkCreateMirSurfaceKHR returnUnmarshal"); | 
|  | VkResult vkCreateMirSurfaceKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateMirSurfaceKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateMirSurfaceKHR");; | 
|  | return vkCreateMirSurfaceKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkBool32 VkEncoder::vkGetPhysicalDeviceMirPresentationSupportKHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | uint32_t queueFamilyIndex, | 
|  | MirConnection* connection) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceMirPresentationSupportKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | uint32_t local_queueFamilyIndex; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_queueFamilyIndex = queueFamilyIndex; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_959; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_959, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_959, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t)); | 
|  | countingStream->write((MirConnection*)connection, sizeof(MirConnection)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceMirPresentationSupportKHR = OP_vkGetPhysicalDeviceMirPresentationSupportKHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceMirPresentationSupportKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_960; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_960, 1); | 
|  | stream->write((uint64_t*)&cgen_var_960, 1 * 8); | 
|  | stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t)); | 
|  | stream->write((MirConnection*)connection, sizeof(MirConnection)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR readParams"); | 
|  | stream->read((MirConnection*)connection, sizeof(MirConnection)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMirPresentationSupportKHR returnUnmarshal"); | 
|  | VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return = (VkBool32)0; | 
|  | stream->read(&vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return, sizeof(VkBool32)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceMirPresentationSupportKHR");; | 
|  | return vkGetPhysicalDeviceMirPresentationSupportKHR_VkBool32_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_android_surface | 
|  | VkResult VkEncoder::vkCreateAndroidSurfaceKHR( | 
|  | VkInstance instance, | 
|  | const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkSurfaceKHR* pSurface) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR encode"); | 
|  | mImpl->log("start vkCreateAndroidSurfaceKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | VkAndroidSurfaceCreateInfoKHR* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_instance = instance; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkAndroidSurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkAndroidSurfaceCreateInfoKHR)); | 
|  | deepcopy_VkAndroidSurfaceCreateInfoKHR(pool, pCreateInfo, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkAndroidSurfaceCreateInfoKHR(mImpl->resources(), (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_961; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_961, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_961, 1 * 8); | 
|  | marshal_VkAndroidSurfaceCreateInfoKHR(countingStream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_962 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_962); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_963; | 
|  | countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_963, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_963, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateAndroidSurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateAndroidSurfaceKHR = OP_vkCreateAndroidSurfaceKHR; | 
|  | stream->write(&opcode_vkCreateAndroidSurfaceKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateAndroidSurfaceKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_964; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_964, 1); | 
|  | stream->write((uint64_t*)&cgen_var_964, 1 * 8); | 
|  | marshal_VkAndroidSurfaceCreateInfoKHR(stream, (VkAndroidSurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_965 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_965); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_966; | 
|  | stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_966, 1); | 
|  | stream->write((uint64_t*)&cgen_var_966, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR readParams"); | 
|  | uint64_t cgen_var_967; | 
|  | stream->read((uint64_t*)&cgen_var_967, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_967, (VkSurfaceKHR*)pSurface, 1); | 
|  | AEMU_SCOPED_TRACE("vkCreateAndroidSurfaceKHR returnUnmarshal"); | 
|  | VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateAndroidSurfaceKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateAndroidSurfaceKHR");; | 
|  | return vkCreateAndroidSurfaceKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_win32_surface | 
|  | VkResult VkEncoder::vkCreateWin32SurfaceKHR( | 
|  | VkInstance instance, | 
|  | const VkWin32SurfaceCreateInfoKHR* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkSurfaceKHR* pSurface) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR encode"); | 
|  | mImpl->log("start vkCreateWin32SurfaceKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | VkWin32SurfaceCreateInfoKHR* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_instance = instance; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkWin32SurfaceCreateInfoKHR*)pool->alloc(sizeof(const VkWin32SurfaceCreateInfoKHR)); | 
|  | deepcopy_VkWin32SurfaceCreateInfoKHR(pool, pCreateInfo, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkWin32SurfaceCreateInfoKHR(mImpl->resources(), (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_968; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_968, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_968, 1 * 8); | 
|  | marshal_VkWin32SurfaceCreateInfoKHR(countingStream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_969 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_969); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_970; | 
|  | countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_970, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_970, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateWin32SurfaceKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateWin32SurfaceKHR = OP_vkCreateWin32SurfaceKHR; | 
|  | stream->write(&opcode_vkCreateWin32SurfaceKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateWin32SurfaceKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_971; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_971, 1); | 
|  | stream->write((uint64_t*)&cgen_var_971, 1 * 8); | 
|  | marshal_VkWin32SurfaceCreateInfoKHR(stream, (VkWin32SurfaceCreateInfoKHR*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_972 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_972); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_973; | 
|  | stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_973, 1); | 
|  | stream->write((uint64_t*)&cgen_var_973, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR readParams"); | 
|  | uint64_t cgen_var_974; | 
|  | stream->read((uint64_t*)&cgen_var_974, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_974, (VkSurfaceKHR*)pSurface, 1); | 
|  | AEMU_SCOPED_TRACE("vkCreateWin32SurfaceKHR returnUnmarshal"); | 
|  | VkResult vkCreateWin32SurfaceKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateWin32SurfaceKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateWin32SurfaceKHR");; | 
|  | return vkCreateWin32SurfaceKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkBool32 VkEncoder::vkGetPhysicalDeviceWin32PresentationSupportKHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | uint32_t queueFamilyIndex) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceWin32PresentationSupportKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | uint32_t local_queueFamilyIndex; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_queueFamilyIndex = queueFamilyIndex; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_975; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_975, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_975, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR = OP_vkGetPhysicalDeviceWin32PresentationSupportKHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceWin32PresentationSupportKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_976; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_976, 1); | 
|  | stream->write((uint64_t*)&cgen_var_976, 1 * 8); | 
|  | stream->write((uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceWin32PresentationSupportKHR returnUnmarshal"); | 
|  | VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return = (VkBool32)0; | 
|  | stream->read(&vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return, sizeof(VkBool32)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceWin32PresentationSupportKHR");; | 
|  | return vkGetPhysicalDeviceWin32PresentationSupportKHR_VkBool32_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_sampler_mirror_clamp_to_edge | 
|  | #endif | 
|  | #ifdef VK_KHR_multiview | 
|  | #endif | 
|  | #ifdef VK_KHR_get_physical_device_properties2 | 
|  | void VkEncoder::vkGetPhysicalDeviceFeatures2KHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkPhysicalDeviceFeatures2* pFeatures) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceFeatures2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | local_physicalDevice = physicalDevice; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_977; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_977, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_977, 1 * 8); | 
|  | marshal_VkPhysicalDeviceFeatures2(countingStream, (VkPhysicalDeviceFeatures2*)(pFeatures)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceFeatures2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceFeatures2KHR = OP_vkGetPhysicalDeviceFeatures2KHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceFeatures2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_978; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_978, 1); | 
|  | stream->write((uint64_t*)&cgen_var_978, 1 * 8); | 
|  | marshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR readParams"); | 
|  | unmarshal_VkPhysicalDeviceFeatures2(stream, (VkPhysicalDeviceFeatures2*)(pFeatures)); | 
|  | if (pFeatures) | 
|  | { | 
|  | transform_fromhost_VkPhysicalDeviceFeatures2(mImpl->resources(), (VkPhysicalDeviceFeatures2*)(pFeatures)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFeatures2KHR returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceFeatures2KHR");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceProperties2KHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkPhysicalDeviceProperties2* pProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceProperties2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | local_physicalDevice = physicalDevice; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_979; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_979, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_979, 1 * 8); | 
|  | marshal_VkPhysicalDeviceProperties2(countingStream, (VkPhysicalDeviceProperties2*)(pProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceProperties2KHR = OP_vkGetPhysicalDeviceProperties2KHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceProperties2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_980; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_980, 1); | 
|  | stream->write((uint64_t*)&cgen_var_980, 1 * 8); | 
|  | marshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR readParams"); | 
|  | unmarshal_VkPhysicalDeviceProperties2(stream, (VkPhysicalDeviceProperties2*)(pProperties)); | 
|  | if (pProperties) | 
|  | { | 
|  | transform_fromhost_VkPhysicalDeviceProperties2(mImpl->resources(), (VkPhysicalDeviceProperties2*)(pProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceProperties2KHR returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceProperties2KHR");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceFormatProperties2KHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkFormat format, | 
|  | VkFormatProperties2* pFormatProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceFormatProperties2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkFormat local_format; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_format = format; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_981; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_981, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_981, 1 * 8); | 
|  | countingStream->write((VkFormat*)&local_format, sizeof(VkFormat)); | 
|  | marshal_VkFormatProperties2(countingStream, (VkFormatProperties2*)(pFormatProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceFormatProperties2KHR = OP_vkGetPhysicalDeviceFormatProperties2KHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceFormatProperties2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_982; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_982, 1); | 
|  | stream->write((uint64_t*)&cgen_var_982, 1 * 8); | 
|  | stream->write((VkFormat*)&local_format, sizeof(VkFormat)); | 
|  | marshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR readParams"); | 
|  | unmarshal_VkFormatProperties2(stream, (VkFormatProperties2*)(pFormatProperties)); | 
|  | if (pFormatProperties) | 
|  | { | 
|  | transform_fromhost_VkFormatProperties2(mImpl->resources(), (VkFormatProperties2*)(pFormatProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceFormatProperties2KHR returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceFormatProperties2KHR");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2KHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, | 
|  | VkImageFormatProperties2* pImageFormatProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceImageFormatProperties2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkPhysicalDeviceImageFormatInfo2* local_pImageFormatInfo; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_pImageFormatInfo = nullptr; | 
|  | if (pImageFormatInfo) | 
|  | { | 
|  | local_pImageFormatInfo = (VkPhysicalDeviceImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceImageFormatInfo2)); | 
|  | deepcopy_VkPhysicalDeviceImageFormatInfo2(pool, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo)); | 
|  | } | 
|  | if (local_pImageFormatInfo) | 
|  | { | 
|  | transform_tohost_VkPhysicalDeviceImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_983; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_983, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_983, 1 * 8); | 
|  | marshal_VkPhysicalDeviceImageFormatInfo2(countingStream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo)); | 
|  | marshal_VkImageFormatProperties2(countingStream, (VkImageFormatProperties2*)(pImageFormatProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2KHR = OP_vkGetPhysicalDeviceImageFormatProperties2KHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceImageFormatProperties2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_984; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_984, 1); | 
|  | stream->write((uint64_t*)&cgen_var_984, 1 * 8); | 
|  | marshal_VkPhysicalDeviceImageFormatInfo2(stream, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo)); | 
|  | marshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR readParams"); | 
|  | unmarshal_VkImageFormatProperties2(stream, (VkImageFormatProperties2*)(pImageFormatProperties)); | 
|  | if (pImageFormatProperties) | 
|  | { | 
|  | transform_fromhost_VkImageFormatProperties2(mImpl->resources(), (VkImageFormatProperties2*)(pImageFormatProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceImageFormatProperties2KHR returnUnmarshal"); | 
|  | VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceImageFormatProperties2KHR");; | 
|  | return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2KHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | uint32_t* pQueueFamilyPropertyCount, | 
|  | VkQueueFamilyProperties2* pQueueFamilyProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceQueueFamilyProperties2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | local_physicalDevice = physicalDevice; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_985; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_985, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_985, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_986 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount; | 
|  | countingStream->putBe64(cgen_var_986); | 
|  | if (pQueueFamilyPropertyCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_987 = (uint64_t)(uintptr_t)pQueueFamilyProperties; | 
|  | countingStream->putBe64(cgen_var_987); | 
|  | if (pQueueFamilyProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkQueueFamilyProperties2(countingStream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR = OP_vkGetPhysicalDeviceQueueFamilyProperties2KHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceQueueFamilyProperties2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_988; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_988, 1); | 
|  | stream->write((uint64_t*)&cgen_var_988, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_989 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount; | 
|  | stream->putBe64(cgen_var_989); | 
|  | if (pQueueFamilyPropertyCount) | 
|  | { | 
|  | stream->write((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_990 = (uint64_t)(uintptr_t)pQueueFamilyProperties; | 
|  | stream->putBe64(cgen_var_990); | 
|  | if (pQueueFamilyProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pQueueFamilyPropertyCount; | 
|  | check_pQueueFamilyPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pQueueFamilyPropertyCount) | 
|  | { | 
|  | if (!(check_pQueueFamilyPropertyCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pQueueFamilyPropertyCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkQueueFamilyProperties2* check_pQueueFamilyProperties; | 
|  | check_pQueueFamilyProperties = (VkQueueFamilyProperties2*)(uintptr_t)stream->getBe64(); | 
|  | if (pQueueFamilyProperties) | 
|  | { | 
|  | if (!(check_pQueueFamilyProperties)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pQueueFamilyProperties inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i) | 
|  | { | 
|  | unmarshal_VkQueueFamilyProperties2(stream, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i)); | 
|  | } | 
|  | } | 
|  | if (pQueueFamilyProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkQueueFamilyProperties2(mImpl->resources(), (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceQueueFamilyProperties2KHR returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceQueueFamilyProperties2KHR");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceMemoryProperties2KHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkPhysicalDeviceMemoryProperties2* pMemoryProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceMemoryProperties2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | local_physicalDevice = physicalDevice; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_993; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_993, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_993, 1 * 8); | 
|  | marshal_VkPhysicalDeviceMemoryProperties2(countingStream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2KHR = OP_vkGetPhysicalDeviceMemoryProperties2KHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceMemoryProperties2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_994; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_994, 1); | 
|  | stream->write((uint64_t*)&cgen_var_994, 1 * 8); | 
|  | marshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR readParams"); | 
|  | unmarshal_VkPhysicalDeviceMemoryProperties2(stream, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties)); | 
|  | if (pMemoryProperties) | 
|  | { | 
|  | transform_fromhost_VkPhysicalDeviceMemoryProperties2(mImpl->resources(), (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMemoryProperties2KHR returnUnmarshal"); | 
|  | encoderLock.unlock(); | 
|  | mImpl->resources()->on_vkGetPhysicalDeviceMemoryProperties2KHR(this, physicalDevice, pMemoryProperties); | 
|  | encoderLock.lock(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceMemoryProperties2KHR");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2KHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, | 
|  | uint32_t* pPropertyCount, | 
|  | VkSparseImageFormatProperties2* pProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceSparseImageFormatProperties2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkPhysicalDeviceSparseImageFormatInfo2* local_pFormatInfo; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_pFormatInfo = nullptr; | 
|  | if (pFormatInfo) | 
|  | { | 
|  | local_pFormatInfo = (VkPhysicalDeviceSparseImageFormatInfo2*)pool->alloc(sizeof(const VkPhysicalDeviceSparseImageFormatInfo2)); | 
|  | deepcopy_VkPhysicalDeviceSparseImageFormatInfo2(pool, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo)); | 
|  | } | 
|  | if (local_pFormatInfo) | 
|  | { | 
|  | transform_tohost_VkPhysicalDeviceSparseImageFormatInfo2(mImpl->resources(), (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_995; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_995, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_995, 1 * 8); | 
|  | marshal_VkPhysicalDeviceSparseImageFormatInfo2(countingStream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_996 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | countingStream->putBe64(cgen_var_996); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_997 = (uint64_t)(uintptr_t)pProperties; | 
|  | countingStream->putBe64(cgen_var_997); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkSparseImageFormatProperties2(countingStream, (VkSparseImageFormatProperties2*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = OP_vkGetPhysicalDeviceSparseImageFormatProperties2KHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_998; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_998, 1); | 
|  | stream->write((uint64_t*)&cgen_var_998, 1 * 8); | 
|  | marshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_999 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | stream->putBe64(cgen_var_999); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1000 = (uint64_t)(uintptr_t)pProperties; | 
|  | stream->putBe64(cgen_var_1000); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pPropertyCount; | 
|  | check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | if (!(check_pPropertyCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkSparseImageFormatProperties2* check_pProperties; | 
|  | check_pProperties = (VkSparseImageFormatProperties2*)(uintptr_t)stream->getBe64(); | 
|  | if (pProperties) | 
|  | { | 
|  | if (!(check_pProperties)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | unmarshal_VkSparseImageFormatProperties2(stream, (VkSparseImageFormatProperties2*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkSparseImageFormatProperties2(mImpl->resources(), (VkSparseImageFormatProperties2*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceSparseImageFormatProperties2KHR");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_device_group | 
|  | void VkEncoder::vkGetDeviceGroupPeerMemoryFeaturesKHR( | 
|  | VkDevice device, | 
|  | uint32_t heapIndex, | 
|  | uint32_t localDeviceIndex, | 
|  | uint32_t remoteDeviceIndex, | 
|  | VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR encode"); | 
|  | mImpl->log("start vkGetDeviceGroupPeerMemoryFeaturesKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | uint32_t local_heapIndex; | 
|  | uint32_t local_localDeviceIndex; | 
|  | uint32_t local_remoteDeviceIndex; | 
|  | local_device = device; | 
|  | local_heapIndex = heapIndex; | 
|  | local_localDeviceIndex = localDeviceIndex; | 
|  | local_remoteDeviceIndex = remoteDeviceIndex; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1003; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1003, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1003, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t)); | 
|  | countingStream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags)); | 
|  | } | 
|  | uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR = OP_vkGetDeviceGroupPeerMemoryFeaturesKHR; | 
|  | stream->write(&opcode_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetDeviceGroupPeerMemoryFeaturesKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1004; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1004, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1004, 1 * 8); | 
|  | stream->write((uint32_t*)&local_heapIndex, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_localDeviceIndex, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t)); | 
|  | stream->write((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags)); | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR readParams"); | 
|  | stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags)); | 
|  | AEMU_SCOPED_TRACE("vkGetDeviceGroupPeerMemoryFeaturesKHR returnUnmarshal"); | 
|  | mImpl->log("finish vkGetDeviceGroupPeerMemoryFeaturesKHR");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdSetDeviceMaskKHR( | 
|  | VkCommandBuffer commandBuffer, | 
|  | uint32_t deviceMask) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR encode"); | 
|  | mImpl->log("start vkCmdSetDeviceMaskKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | uint32_t local_deviceMask; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_deviceMask = deviceMask; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1005; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1005, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1005, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdSetDeviceMaskKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdSetDeviceMaskKHR = OP_vkCmdSetDeviceMaskKHR; | 
|  | stream->write(&opcode_vkCmdSetDeviceMaskKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdSetDeviceMaskKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1006; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1006, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1006, 1 * 8); | 
|  | stream->write((uint32_t*)&local_deviceMask, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetDeviceMaskKHR returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdSetDeviceMaskKHR");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdDispatchBaseKHR( | 
|  | VkCommandBuffer commandBuffer, | 
|  | uint32_t baseGroupX, | 
|  | uint32_t baseGroupY, | 
|  | uint32_t baseGroupZ, | 
|  | uint32_t groupCountX, | 
|  | uint32_t groupCountY, | 
|  | uint32_t groupCountZ) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR encode"); | 
|  | mImpl->log("start vkCmdDispatchBaseKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | uint32_t local_baseGroupX; | 
|  | uint32_t local_baseGroupY; | 
|  | uint32_t local_baseGroupZ; | 
|  | uint32_t local_groupCountX; | 
|  | uint32_t local_groupCountY; | 
|  | uint32_t local_groupCountZ; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_baseGroupX = baseGroupX; | 
|  | local_baseGroupY = baseGroupY; | 
|  | local_baseGroupZ = baseGroupZ; | 
|  | local_groupCountX = groupCountX; | 
|  | local_groupCountY = groupCountY; | 
|  | local_groupCountZ = groupCountZ; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1007; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1007, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1007, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdDispatchBaseKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdDispatchBaseKHR = OP_vkCmdDispatchBaseKHR; | 
|  | stream->write(&opcode_vkCmdDispatchBaseKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdDispatchBaseKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1008; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1008, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1008, 1 * 8); | 
|  | stream->write((uint32_t*)&local_baseGroupX, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_baseGroupY, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_baseGroupZ, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_groupCountX, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_groupCountY, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_groupCountZ, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdDispatchBaseKHR returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdDispatchBaseKHR");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_shader_draw_parameters | 
|  | #endif | 
|  | #ifdef VK_KHR_maintenance1 | 
|  | void VkEncoder::vkTrimCommandPoolKHR( | 
|  | VkDevice device, | 
|  | VkCommandPool commandPool, | 
|  | VkCommandPoolTrimFlags flags) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR encode"); | 
|  | mImpl->log("start vkTrimCommandPoolKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkCommandPool local_commandPool; | 
|  | VkCommandPoolTrimFlags local_flags; | 
|  | local_device = device; | 
|  | local_commandPool = commandPool; | 
|  | local_flags = flags; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1009; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1009, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1009, 1 * 8); | 
|  | uint64_t cgen_var_1010; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_1010, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1010, 1 * 8); | 
|  | countingStream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags)); | 
|  | } | 
|  | uint32_t packetSize_vkTrimCommandPoolKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkTrimCommandPoolKHR = OP_vkTrimCommandPoolKHR; | 
|  | stream->write(&opcode_vkTrimCommandPoolKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkTrimCommandPoolKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1011; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1011, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1011, 1 * 8); | 
|  | uint64_t cgen_var_1012; | 
|  | stream->handleMapping()->mapHandles_VkCommandPool_u64(&local_commandPool, &cgen_var_1012, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1012, 1 * 8); | 
|  | stream->write((VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags)); | 
|  | AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkTrimCommandPoolKHR returnUnmarshal"); | 
|  | mImpl->log("finish vkTrimCommandPoolKHR");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_device_group_creation | 
|  | VkResult VkEncoder::vkEnumeratePhysicalDeviceGroupsKHR( | 
|  | VkInstance instance, | 
|  | uint32_t* pPhysicalDeviceGroupCount, | 
|  | VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR encode"); | 
|  | mImpl->log("start vkEnumeratePhysicalDeviceGroupsKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | local_instance = instance; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1013; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1013, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1013, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1014 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount; | 
|  | countingStream->putBe64(cgen_var_1014); | 
|  | if (pPhysicalDeviceGroupCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1015 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties; | 
|  | countingStream->putBe64(cgen_var_1015); | 
|  | if (pPhysicalDeviceGroupProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i) | 
|  | { | 
|  | marshal_VkPhysicalDeviceGroupProperties(countingStream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkEnumeratePhysicalDeviceGroupsKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkEnumeratePhysicalDeviceGroupsKHR = OP_vkEnumeratePhysicalDeviceGroupsKHR; | 
|  | stream->write(&opcode_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkEnumeratePhysicalDeviceGroupsKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1016; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1016, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1016, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1017 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount; | 
|  | stream->putBe64(cgen_var_1017); | 
|  | if (pPhysicalDeviceGroupCount) | 
|  | { | 
|  | stream->write((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1018 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties; | 
|  | stream->putBe64(cgen_var_1018); | 
|  | if (pPhysicalDeviceGroupProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i) | 
|  | { | 
|  | marshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pPhysicalDeviceGroupCount; | 
|  | check_pPhysicalDeviceGroupCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pPhysicalDeviceGroupCount) | 
|  | { | 
|  | if (!(check_pPhysicalDeviceGroupCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPhysicalDeviceGroupCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkPhysicalDeviceGroupProperties* check_pPhysicalDeviceGroupProperties; | 
|  | check_pPhysicalDeviceGroupProperties = (VkPhysicalDeviceGroupProperties*)(uintptr_t)stream->getBe64(); | 
|  | if (pPhysicalDeviceGroupProperties) | 
|  | { | 
|  | if (!(check_pPhysicalDeviceGroupProperties)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPhysicalDeviceGroupProperties inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i) | 
|  | { | 
|  | unmarshal_VkPhysicalDeviceGroupProperties(stream, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i)); | 
|  | } | 
|  | } | 
|  | if (pPhysicalDeviceGroupProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkPhysicalDeviceGroupProperties(mImpl->resources(), (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkEnumeratePhysicalDeviceGroupsKHR returnUnmarshal"); | 
|  | VkResult vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkEnumeratePhysicalDeviceGroupsKHR");; | 
|  | return vkEnumeratePhysicalDeviceGroupsKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_external_memory_capabilities | 
|  | void VkEncoder::vkGetPhysicalDeviceExternalBufferPropertiesKHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, | 
|  | VkExternalBufferProperties* pExternalBufferProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceExternalBufferPropertiesKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkPhysicalDeviceExternalBufferInfo* local_pExternalBufferInfo; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_pExternalBufferInfo = nullptr; | 
|  | if (pExternalBufferInfo) | 
|  | { | 
|  | local_pExternalBufferInfo = (VkPhysicalDeviceExternalBufferInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalBufferInfo)); | 
|  | deepcopy_VkPhysicalDeviceExternalBufferInfo(pool, pExternalBufferInfo, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo)); | 
|  | } | 
|  | if (local_pExternalBufferInfo) | 
|  | { | 
|  | mImpl->resources()->transformImpl_VkPhysicalDeviceExternalBufferInfo_tohost(local_pExternalBufferInfo, 1); | 
|  | transform_tohost_VkPhysicalDeviceExternalBufferInfo(mImpl->resources(), (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1021; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1021, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1021, 1 * 8); | 
|  | marshal_VkPhysicalDeviceExternalBufferInfo(countingStream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo)); | 
|  | marshal_VkExternalBufferProperties(countingStream, (VkExternalBufferProperties*)(pExternalBufferProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR = OP_vkGetPhysicalDeviceExternalBufferPropertiesKHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceExternalBufferPropertiesKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1022; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1022, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1022, 1 * 8); | 
|  | marshal_VkPhysicalDeviceExternalBufferInfo(stream, (VkPhysicalDeviceExternalBufferInfo*)(local_pExternalBufferInfo)); | 
|  | marshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR readParams"); | 
|  | unmarshal_VkExternalBufferProperties(stream, (VkExternalBufferProperties*)(pExternalBufferProperties)); | 
|  | if (pExternalBufferProperties) | 
|  | { | 
|  | mImpl->resources()->transformImpl_VkExternalBufferProperties_fromhost(pExternalBufferProperties, 1); | 
|  | transform_fromhost_VkExternalBufferProperties(mImpl->resources(), (VkExternalBufferProperties*)(pExternalBufferProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalBufferPropertiesKHR returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceExternalBufferPropertiesKHR");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_external_memory | 
|  | #endif | 
|  | #ifdef VK_KHR_external_memory_win32 | 
|  | VkResult VkEncoder::vkGetMemoryWin32HandleKHR( | 
|  | VkDevice device, | 
|  | const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, | 
|  | HANDLE* pHandle) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR encode"); | 
|  | mImpl->log("start vkGetMemoryWin32HandleKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkMemoryGetWin32HandleInfoKHR* local_pGetWin32HandleInfo; | 
|  | local_device = device; | 
|  | local_pGetWin32HandleInfo = nullptr; | 
|  | if (pGetWin32HandleInfo) | 
|  | { | 
|  | local_pGetWin32HandleInfo = (VkMemoryGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkMemoryGetWin32HandleInfoKHR)); | 
|  | deepcopy_VkMemoryGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo)); | 
|  | } | 
|  | if (local_pGetWin32HandleInfo) | 
|  | { | 
|  | transform_tohost_VkMemoryGetWin32HandleInfoKHR(mImpl->resources(), (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1023; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1023, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1023, 1 * 8); | 
|  | marshal_VkMemoryGetWin32HandleInfoKHR(countingStream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo)); | 
|  | countingStream->write((HANDLE*)pHandle, sizeof(HANDLE)); | 
|  | } | 
|  | uint32_t packetSize_vkGetMemoryWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetMemoryWin32HandleKHR = OP_vkGetMemoryWin32HandleKHR; | 
|  | stream->write(&opcode_vkGetMemoryWin32HandleKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetMemoryWin32HandleKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1024; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1024, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1024, 1 * 8); | 
|  | marshal_VkMemoryGetWin32HandleInfoKHR(stream, (VkMemoryGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo)); | 
|  | stream->write((HANDLE*)pHandle, sizeof(HANDLE)); | 
|  | AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR readParams"); | 
|  | stream->read((HANDLE*)pHandle, sizeof(HANDLE)); | 
|  | AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleKHR returnUnmarshal"); | 
|  | VkResult vkGetMemoryWin32HandleKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetMemoryWin32HandleKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetMemoryWin32HandleKHR");; | 
|  | return vkGetMemoryWin32HandleKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetMemoryWin32HandlePropertiesKHR( | 
|  | VkDevice device, | 
|  | VkExternalMemoryHandleTypeFlagBits handleType, | 
|  | HANDLE handle, | 
|  | VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR encode"); | 
|  | mImpl->log("start vkGetMemoryWin32HandlePropertiesKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkExternalMemoryHandleTypeFlagBits local_handleType; | 
|  | HANDLE local_handle; | 
|  | local_device = device; | 
|  | local_handleType = handleType; | 
|  | local_handle = handle; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1025; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1025, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1025, 1 * 8); | 
|  | countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits)); | 
|  | countingStream->write((HANDLE*)&local_handle, sizeof(HANDLE)); | 
|  | marshal_VkMemoryWin32HandlePropertiesKHR(countingStream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetMemoryWin32HandlePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetMemoryWin32HandlePropertiesKHR = OP_vkGetMemoryWin32HandlePropertiesKHR; | 
|  | stream->write(&opcode_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetMemoryWin32HandlePropertiesKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1026; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1026, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1026, 1 * 8); | 
|  | stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits)); | 
|  | stream->write((HANDLE*)&local_handle, sizeof(HANDLE)); | 
|  | marshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR readParams"); | 
|  | unmarshal_VkMemoryWin32HandlePropertiesKHR(stream, (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties)); | 
|  | if (pMemoryWin32HandleProperties) | 
|  | { | 
|  | transform_fromhost_VkMemoryWin32HandlePropertiesKHR(mImpl->resources(), (VkMemoryWin32HandlePropertiesKHR*)(pMemoryWin32HandleProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetMemoryWin32HandlePropertiesKHR returnUnmarshal"); | 
|  | VkResult vkGetMemoryWin32HandlePropertiesKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetMemoryWin32HandlePropertiesKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetMemoryWin32HandlePropertiesKHR");; | 
|  | return vkGetMemoryWin32HandlePropertiesKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_external_memory_fd | 
|  | VkResult VkEncoder::vkGetMemoryFdKHR( | 
|  | VkDevice device, | 
|  | const VkMemoryGetFdInfoKHR* pGetFdInfo, | 
|  | int* pFd) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetMemoryFdKHR encode"); | 
|  | mImpl->log("start vkGetMemoryFdKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkMemoryGetFdInfoKHR* local_pGetFdInfo; | 
|  | local_device = device; | 
|  | local_pGetFdInfo = nullptr; | 
|  | if (pGetFdInfo) | 
|  | { | 
|  | local_pGetFdInfo = (VkMemoryGetFdInfoKHR*)pool->alloc(sizeof(const VkMemoryGetFdInfoKHR)); | 
|  | deepcopy_VkMemoryGetFdInfoKHR(pool, pGetFdInfo, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo)); | 
|  | } | 
|  | if (local_pGetFdInfo) | 
|  | { | 
|  | transform_tohost_VkMemoryGetFdInfoKHR(mImpl->resources(), (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1027; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1027, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1027, 1 * 8); | 
|  | marshal_VkMemoryGetFdInfoKHR(countingStream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo)); | 
|  | countingStream->write((int*)pFd, sizeof(int)); | 
|  | } | 
|  | uint32_t packetSize_vkGetMemoryFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetMemoryFdKHR = OP_vkGetMemoryFdKHR; | 
|  | stream->write(&opcode_vkGetMemoryFdKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetMemoryFdKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1028; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1028, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1028, 1 * 8); | 
|  | marshal_VkMemoryGetFdInfoKHR(stream, (VkMemoryGetFdInfoKHR*)(local_pGetFdInfo)); | 
|  | stream->write((int*)pFd, sizeof(int)); | 
|  | AEMU_SCOPED_TRACE("vkGetMemoryFdKHR readParams"); | 
|  | stream->read((int*)pFd, sizeof(int)); | 
|  | AEMU_SCOPED_TRACE("vkGetMemoryFdKHR returnUnmarshal"); | 
|  | VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetMemoryFdKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetMemoryFdKHR");; | 
|  | return vkGetMemoryFdKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetMemoryFdPropertiesKHR( | 
|  | VkDevice device, | 
|  | VkExternalMemoryHandleTypeFlagBits handleType, | 
|  | int fd, | 
|  | VkMemoryFdPropertiesKHR* pMemoryFdProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR encode"); | 
|  | mImpl->log("start vkGetMemoryFdPropertiesKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkExternalMemoryHandleTypeFlagBits local_handleType; | 
|  | int local_fd; | 
|  | local_device = device; | 
|  | local_handleType = handleType; | 
|  | local_fd = fd; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1029; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1029, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1029, 1 * 8); | 
|  | countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits)); | 
|  | countingStream->write((int*)&local_fd, sizeof(int)); | 
|  | marshal_VkMemoryFdPropertiesKHR(countingStream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetMemoryFdPropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetMemoryFdPropertiesKHR = OP_vkGetMemoryFdPropertiesKHR; | 
|  | stream->write(&opcode_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetMemoryFdPropertiesKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1030; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1030, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1030, 1 * 8); | 
|  | stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits)); | 
|  | stream->write((int*)&local_fd, sizeof(int)); | 
|  | marshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR readParams"); | 
|  | unmarshal_VkMemoryFdPropertiesKHR(stream, (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties)); | 
|  | if (pMemoryFdProperties) | 
|  | { | 
|  | transform_fromhost_VkMemoryFdPropertiesKHR(mImpl->resources(), (VkMemoryFdPropertiesKHR*)(pMemoryFdProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetMemoryFdPropertiesKHR returnUnmarshal"); | 
|  | VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetMemoryFdPropertiesKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetMemoryFdPropertiesKHR");; | 
|  | return vkGetMemoryFdPropertiesKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_win32_keyed_mutex | 
|  | #endif | 
|  | #ifdef VK_KHR_external_semaphore_capabilities | 
|  | void VkEncoder::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, | 
|  | VkExternalSemaphoreProperties* pExternalSemaphoreProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkPhysicalDeviceExternalSemaphoreInfo* local_pExternalSemaphoreInfo; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_pExternalSemaphoreInfo = nullptr; | 
|  | if (pExternalSemaphoreInfo) | 
|  | { | 
|  | local_pExternalSemaphoreInfo = (VkPhysicalDeviceExternalSemaphoreInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalSemaphoreInfo)); | 
|  | deepcopy_VkPhysicalDeviceExternalSemaphoreInfo(pool, pExternalSemaphoreInfo, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo)); | 
|  | } | 
|  | if (local_pExternalSemaphoreInfo) | 
|  | { | 
|  | transform_tohost_VkPhysicalDeviceExternalSemaphoreInfo(mImpl->resources(), (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1031; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1031, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1031, 1 * 8); | 
|  | marshal_VkPhysicalDeviceExternalSemaphoreInfo(countingStream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo)); | 
|  | marshal_VkExternalSemaphoreProperties(countingStream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = OP_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1032; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1032, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1032, 1 * 8); | 
|  | marshal_VkPhysicalDeviceExternalSemaphoreInfo(stream, (VkPhysicalDeviceExternalSemaphoreInfo*)(local_pExternalSemaphoreInfo)); | 
|  | marshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR readParams"); | 
|  | unmarshal_VkExternalSemaphoreProperties(stream, (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties)); | 
|  | if (pExternalSemaphoreProperties) | 
|  | { | 
|  | transform_fromhost_VkExternalSemaphoreProperties(mImpl->resources(), (VkExternalSemaphoreProperties*)(pExternalSemaphoreProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_external_semaphore | 
|  | #endif | 
|  | #ifdef VK_KHR_external_semaphore_win32 | 
|  | VkResult VkEncoder::vkImportSemaphoreWin32HandleKHR( | 
|  | VkDevice device, | 
|  | const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR encode"); | 
|  | mImpl->log("start vkImportSemaphoreWin32HandleKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkImportSemaphoreWin32HandleInfoKHR* local_pImportSemaphoreWin32HandleInfo; | 
|  | local_device = device; | 
|  | local_pImportSemaphoreWin32HandleInfo = nullptr; | 
|  | if (pImportSemaphoreWin32HandleInfo) | 
|  | { | 
|  | local_pImportSemaphoreWin32HandleInfo = (VkImportSemaphoreWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreWin32HandleInfoKHR)); | 
|  | deepcopy_VkImportSemaphoreWin32HandleInfoKHR(pool, pImportSemaphoreWin32HandleInfo, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo)); | 
|  | } | 
|  | if (local_pImportSemaphoreWin32HandleInfo) | 
|  | { | 
|  | transform_tohost_VkImportSemaphoreWin32HandleInfoKHR(mImpl->resources(), (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1033; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1033, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1033, 1 * 8); | 
|  | marshal_VkImportSemaphoreWin32HandleInfoKHR(countingStream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkImportSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkImportSemaphoreWin32HandleKHR = OP_vkImportSemaphoreWin32HandleKHR; | 
|  | stream->write(&opcode_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkImportSemaphoreWin32HandleKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1034; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1034, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1034, 1 * 8); | 
|  | marshal_VkImportSemaphoreWin32HandleInfoKHR(stream, (VkImportSemaphoreWin32HandleInfoKHR*)(local_pImportSemaphoreWin32HandleInfo)); | 
|  | AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkImportSemaphoreWin32HandleKHR returnUnmarshal"); | 
|  | VkResult vkImportSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkImportSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkImportSemaphoreWin32HandleKHR");; | 
|  | return vkImportSemaphoreWin32HandleKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetSemaphoreWin32HandleKHR( | 
|  | VkDevice device, | 
|  | const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, | 
|  | HANDLE* pHandle) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR encode"); | 
|  | mImpl->log("start vkGetSemaphoreWin32HandleKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkSemaphoreGetWin32HandleInfoKHR* local_pGetWin32HandleInfo; | 
|  | local_device = device; | 
|  | local_pGetWin32HandleInfo = nullptr; | 
|  | if (pGetWin32HandleInfo) | 
|  | { | 
|  | local_pGetWin32HandleInfo = (VkSemaphoreGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetWin32HandleInfoKHR)); | 
|  | deepcopy_VkSemaphoreGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo)); | 
|  | } | 
|  | if (local_pGetWin32HandleInfo) | 
|  | { | 
|  | transform_tohost_VkSemaphoreGetWin32HandleInfoKHR(mImpl->resources(), (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1035; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1035, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1035, 1 * 8); | 
|  | marshal_VkSemaphoreGetWin32HandleInfoKHR(countingStream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo)); | 
|  | countingStream->write((HANDLE*)pHandle, sizeof(HANDLE)); | 
|  | } | 
|  | uint32_t packetSize_vkGetSemaphoreWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetSemaphoreWin32HandleKHR = OP_vkGetSemaphoreWin32HandleKHR; | 
|  | stream->write(&opcode_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetSemaphoreWin32HandleKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1036; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1036, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1036, 1 * 8); | 
|  | marshal_VkSemaphoreGetWin32HandleInfoKHR(stream, (VkSemaphoreGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo)); | 
|  | stream->write((HANDLE*)pHandle, sizeof(HANDLE)); | 
|  | AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR readParams"); | 
|  | stream->read((HANDLE*)pHandle, sizeof(HANDLE)); | 
|  | AEMU_SCOPED_TRACE("vkGetSemaphoreWin32HandleKHR returnUnmarshal"); | 
|  | VkResult vkGetSemaphoreWin32HandleKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetSemaphoreWin32HandleKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetSemaphoreWin32HandleKHR");; | 
|  | return vkGetSemaphoreWin32HandleKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_external_semaphore_fd | 
|  | VkResult VkEncoder::vkImportSemaphoreFdKHR( | 
|  | VkDevice device, | 
|  | const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR encode"); | 
|  | mImpl->log("start vkImportSemaphoreFdKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkImportSemaphoreFdInfoKHR* local_pImportSemaphoreFdInfo; | 
|  | local_device = device; | 
|  | local_pImportSemaphoreFdInfo = nullptr; | 
|  | if (pImportSemaphoreFdInfo) | 
|  | { | 
|  | local_pImportSemaphoreFdInfo = (VkImportSemaphoreFdInfoKHR*)pool->alloc(sizeof(const VkImportSemaphoreFdInfoKHR)); | 
|  | deepcopy_VkImportSemaphoreFdInfoKHR(pool, pImportSemaphoreFdInfo, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo)); | 
|  | } | 
|  | if (local_pImportSemaphoreFdInfo) | 
|  | { | 
|  | transform_tohost_VkImportSemaphoreFdInfoKHR(mImpl->resources(), (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1037; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1037, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1037, 1 * 8); | 
|  | marshal_VkImportSemaphoreFdInfoKHR(countingStream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkImportSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkImportSemaphoreFdKHR = OP_vkImportSemaphoreFdKHR; | 
|  | stream->write(&opcode_vkImportSemaphoreFdKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkImportSemaphoreFdKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1038; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1038, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1038, 1 * 8); | 
|  | marshal_VkImportSemaphoreFdInfoKHR(stream, (VkImportSemaphoreFdInfoKHR*)(local_pImportSemaphoreFdInfo)); | 
|  | AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkImportSemaphoreFdKHR returnUnmarshal"); | 
|  | VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkImportSemaphoreFdKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkImportSemaphoreFdKHR");; | 
|  | return vkImportSemaphoreFdKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetSemaphoreFdKHR( | 
|  | VkDevice device, | 
|  | const VkSemaphoreGetFdInfoKHR* pGetFdInfo, | 
|  | int* pFd) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR encode"); | 
|  | mImpl->log("start vkGetSemaphoreFdKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkSemaphoreGetFdInfoKHR* local_pGetFdInfo; | 
|  | local_device = device; | 
|  | local_pGetFdInfo = nullptr; | 
|  | if (pGetFdInfo) | 
|  | { | 
|  | local_pGetFdInfo = (VkSemaphoreGetFdInfoKHR*)pool->alloc(sizeof(const VkSemaphoreGetFdInfoKHR)); | 
|  | deepcopy_VkSemaphoreGetFdInfoKHR(pool, pGetFdInfo, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo)); | 
|  | } | 
|  | if (local_pGetFdInfo) | 
|  | { | 
|  | transform_tohost_VkSemaphoreGetFdInfoKHR(mImpl->resources(), (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1039; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1039, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1039, 1 * 8); | 
|  | marshal_VkSemaphoreGetFdInfoKHR(countingStream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo)); | 
|  | countingStream->write((int*)pFd, sizeof(int)); | 
|  | } | 
|  | uint32_t packetSize_vkGetSemaphoreFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetSemaphoreFdKHR = OP_vkGetSemaphoreFdKHR; | 
|  | stream->write(&opcode_vkGetSemaphoreFdKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetSemaphoreFdKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1040; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1040, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1040, 1 * 8); | 
|  | marshal_VkSemaphoreGetFdInfoKHR(stream, (VkSemaphoreGetFdInfoKHR*)(local_pGetFdInfo)); | 
|  | stream->write((int*)pFd, sizeof(int)); | 
|  | AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR readParams"); | 
|  | stream->read((int*)pFd, sizeof(int)); | 
|  | AEMU_SCOPED_TRACE("vkGetSemaphoreFdKHR returnUnmarshal"); | 
|  | VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetSemaphoreFdKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetSemaphoreFdKHR");; | 
|  | return vkGetSemaphoreFdKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_push_descriptor | 
|  | void VkEncoder::vkCmdPushDescriptorSetKHR( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkPipelineBindPoint pipelineBindPoint, | 
|  | VkPipelineLayout layout, | 
|  | uint32_t set, | 
|  | uint32_t descriptorWriteCount, | 
|  | const VkWriteDescriptorSet* pDescriptorWrites) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR encode"); | 
|  | mImpl->log("start vkCmdPushDescriptorSetKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkPipelineBindPoint local_pipelineBindPoint; | 
|  | VkPipelineLayout local_layout; | 
|  | uint32_t local_set; | 
|  | uint32_t local_descriptorWriteCount; | 
|  | VkWriteDescriptorSet* local_pDescriptorWrites; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_pipelineBindPoint = pipelineBindPoint; | 
|  | local_layout = layout; | 
|  | local_set = set; | 
|  | local_descriptorWriteCount = descriptorWriteCount; | 
|  | local_pDescriptorWrites = nullptr; | 
|  | if (pDescriptorWrites) | 
|  | { | 
|  | local_pDescriptorWrites = (VkWriteDescriptorSet*)pool->alloc(((descriptorWriteCount)) * sizeof(const VkWriteDescriptorSet)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i) | 
|  | { | 
|  | deepcopy_VkWriteDescriptorSet(pool, pDescriptorWrites + i, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i)); | 
|  | } | 
|  | } | 
|  | if (local_pDescriptorWrites) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkWriteDescriptorSet(mImpl->resources(), (VkWriteDescriptorSet*)(local_pDescriptorWrites + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1041; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1041, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1041, 1 * 8); | 
|  | countingStream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint)); | 
|  | uint64_t cgen_var_1042; | 
|  | countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1042, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1042, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_set, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i) | 
|  | { | 
|  | marshal_VkWriteDescriptorSet(countingStream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkCmdPushDescriptorSetKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdPushDescriptorSetKHR = OP_vkCmdPushDescriptorSetKHR; | 
|  | stream->write(&opcode_vkCmdPushDescriptorSetKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdPushDescriptorSetKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1043; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1043, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1043, 1 * 8); | 
|  | stream->write((VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint)); | 
|  | uint64_t cgen_var_1044; | 
|  | stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1044, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1044, 1 * 8); | 
|  | stream->write((uint32_t*)&local_set, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i) | 
|  | { | 
|  | marshal_VkWriteDescriptorSet(stream, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetKHR returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdPushDescriptorSetKHR");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdPushDescriptorSetWithTemplateKHR( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkDescriptorUpdateTemplate descriptorUpdateTemplate, | 
|  | VkPipelineLayout layout, | 
|  | uint32_t set, | 
|  | const void* pData) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR encode"); | 
|  | mImpl->log("start vkCmdPushDescriptorSetWithTemplateKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkDescriptorUpdateTemplate local_descriptorUpdateTemplate; | 
|  | VkPipelineLayout local_layout; | 
|  | uint32_t local_set; | 
|  | void* local_pData; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_descriptorUpdateTemplate = descriptorUpdateTemplate; | 
|  | local_layout = layout; | 
|  | local_set = set; | 
|  | local_pData = nullptr; | 
|  | if (pData) | 
|  | { | 
|  | local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1045; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1045, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1045, 1 * 8); | 
|  | uint64_t cgen_var_1046; | 
|  | countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1046, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1046, 1 * 8); | 
|  | uint64_t cgen_var_1047; | 
|  | countingStream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1047, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1047, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_set, sizeof(uint32_t)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1048 = (uint64_t)(uintptr_t)local_pData; | 
|  | countingStream->putBe64(cgen_var_1048); | 
|  | if (local_pData) | 
|  | { | 
|  | countingStream->write((void*)local_pData, sizeof(uint8_t)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkCmdPushDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdPushDescriptorSetWithTemplateKHR = OP_vkCmdPushDescriptorSetWithTemplateKHR; | 
|  | stream->write(&opcode_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdPushDescriptorSetWithTemplateKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1049; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1049, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1049, 1 * 8); | 
|  | uint64_t cgen_var_1050; | 
|  | stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1050, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1050, 1 * 8); | 
|  | uint64_t cgen_var_1051; | 
|  | stream->handleMapping()->mapHandles_VkPipelineLayout_u64(&local_layout, &cgen_var_1051, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1051, 1 * 8); | 
|  | stream->write((uint32_t*)&local_set, sizeof(uint32_t)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1052 = (uint64_t)(uintptr_t)local_pData; | 
|  | stream->putBe64(cgen_var_1052); | 
|  | if (local_pData) | 
|  | { | 
|  | stream->write((void*)local_pData, sizeof(uint8_t)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdPushDescriptorSetWithTemplateKHR returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdPushDescriptorSetWithTemplateKHR");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_16bit_storage | 
|  | #endif | 
|  | #ifdef VK_KHR_incremental_present | 
|  | #endif | 
|  | #ifdef VK_KHR_descriptor_update_template | 
|  | VkResult VkEncoder::vkCreateDescriptorUpdateTemplateKHR( | 
|  | VkDevice device, | 
|  | const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR encode"); | 
|  | mImpl->log("start vkCreateDescriptorUpdateTemplateKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDescriptorUpdateTemplateCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkDescriptorUpdateTemplateCreateInfo*)pool->alloc(sizeof(const VkDescriptorUpdateTemplateCreateInfo)); | 
|  | deepcopy_VkDescriptorUpdateTemplateCreateInfo(pool, pCreateInfo, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkDescriptorUpdateTemplateCreateInfo(mImpl->resources(), (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1053; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1053, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1053, 1 * 8); | 
|  | marshal_VkDescriptorUpdateTemplateCreateInfo(countingStream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1054 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1054); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_1055; | 
|  | countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1055, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1055, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateDescriptorUpdateTemplateKHR = OP_vkCreateDescriptorUpdateTemplateKHR; | 
|  | stream->write(&opcode_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateDescriptorUpdateTemplateKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1056; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1056, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1056, 1 * 8); | 
|  | marshal_VkDescriptorUpdateTemplateCreateInfo(stream, (VkDescriptorUpdateTemplateCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1057 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1057); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_1058; | 
|  | stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(pDescriptorUpdateTemplate, &cgen_var_1058, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1058, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_1059; | 
|  | stream->read((uint64_t*)&cgen_var_1059, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkDescriptorUpdateTemplate(&cgen_var_1059, (VkDescriptorUpdateTemplate*)pDescriptorUpdateTemplate, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateDescriptorUpdateTemplateKHR returnUnmarshal"); | 
|  | VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateDescriptorUpdateTemplateKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | encoderLock.unlock(); | 
|  | mImpl->resources()->on_vkCreateDescriptorUpdateTemplateKHR(this, vkCreateDescriptorUpdateTemplateKHR_VkResult_return, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate); | 
|  | encoderLock.lock(); | 
|  | mImpl->log("finish vkCreateDescriptorUpdateTemplateKHR");; | 
|  | return vkCreateDescriptorUpdateTemplateKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyDescriptorUpdateTemplateKHR( | 
|  | VkDevice device, | 
|  | VkDescriptorUpdateTemplate descriptorUpdateTemplate, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR encode"); | 
|  | mImpl->log("start vkDestroyDescriptorUpdateTemplateKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDescriptorUpdateTemplate local_descriptorUpdateTemplate; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_descriptorUpdateTemplate = descriptorUpdateTemplate; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1060; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1060, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1060, 1 * 8); | 
|  | uint64_t cgen_var_1061; | 
|  | countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1061, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1061, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1062 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1062); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyDescriptorUpdateTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyDescriptorUpdateTemplateKHR = OP_vkDestroyDescriptorUpdateTemplateKHR; | 
|  | stream->write(&opcode_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyDescriptorUpdateTemplateKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1063; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1063, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1063, 1 * 8); | 
|  | uint64_t cgen_var_1064; | 
|  | stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1064, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1064, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1065 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1065); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyDescriptorUpdateTemplateKHR returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkDescriptorUpdateTemplate((VkDescriptorUpdateTemplate*)&descriptorUpdateTemplate); | 
|  | mImpl->log("finish vkDestroyDescriptorUpdateTemplateKHR");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkUpdateDescriptorSetWithTemplateKHR( | 
|  | VkDevice device, | 
|  | VkDescriptorSet descriptorSet, | 
|  | VkDescriptorUpdateTemplate descriptorUpdateTemplate, | 
|  | const void* pData) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR encode"); | 
|  | mImpl->log("start vkUpdateDescriptorSetWithTemplateKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDescriptorSet local_descriptorSet; | 
|  | VkDescriptorUpdateTemplate local_descriptorUpdateTemplate; | 
|  | void* local_pData; | 
|  | local_device = device; | 
|  | local_descriptorSet = descriptorSet; | 
|  | local_descriptorUpdateTemplate = descriptorUpdateTemplate; | 
|  | local_pData = nullptr; | 
|  | if (pData) | 
|  | { | 
|  | local_pData = (void*)pool->dupArray(pData, sizeof(const uint8_t)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1066; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1066, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1066, 1 * 8); | 
|  | uint64_t cgen_var_1067; | 
|  | countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1067, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1067, 1 * 8); | 
|  | uint64_t cgen_var_1068; | 
|  | countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1068, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1068, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1069 = (uint64_t)(uintptr_t)local_pData; | 
|  | countingStream->putBe64(cgen_var_1069); | 
|  | if (local_pData) | 
|  | { | 
|  | countingStream->write((void*)local_pData, sizeof(uint8_t)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkUpdateDescriptorSetWithTemplateKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkUpdateDescriptorSetWithTemplateKHR = OP_vkUpdateDescriptorSetWithTemplateKHR; | 
|  | stream->write(&opcode_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1070; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1070, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1070, 1 * 8); | 
|  | uint64_t cgen_var_1071; | 
|  | stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1071, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1071, 1 * 8); | 
|  | uint64_t cgen_var_1072; | 
|  | stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1072, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1072, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1073 = (uint64_t)(uintptr_t)local_pData; | 
|  | stream->putBe64(cgen_var_1073); | 
|  | if (local_pData) | 
|  | { | 
|  | stream->write((void*)local_pData, sizeof(uint8_t)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateKHR returnUnmarshal"); | 
|  | mImpl->log("finish vkUpdateDescriptorSetWithTemplateKHR");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_create_renderpass2 | 
|  | VkResult VkEncoder::vkCreateRenderPass2KHR( | 
|  | VkDevice device, | 
|  | const VkRenderPassCreateInfo2KHR* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkRenderPass* pRenderPass) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR encode"); | 
|  | mImpl->log("start vkCreateRenderPass2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkRenderPassCreateInfo2KHR* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkRenderPassCreateInfo2KHR*)pool->alloc(sizeof(const VkRenderPassCreateInfo2KHR)); | 
|  | deepcopy_VkRenderPassCreateInfo2KHR(pool, pCreateInfo, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkRenderPassCreateInfo2KHR(mImpl->resources(), (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1074; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1074, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1074, 1 * 8); | 
|  | marshal_VkRenderPassCreateInfo2KHR(countingStream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1075 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1075); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_1076; | 
|  | countingStream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1076, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1076, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateRenderPass2KHR = OP_vkCreateRenderPass2KHR; | 
|  | stream->write(&opcode_vkCreateRenderPass2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateRenderPass2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1077; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1077, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1077, 1 * 8); | 
|  | marshal_VkRenderPassCreateInfo2KHR(stream, (VkRenderPassCreateInfo2KHR*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1078 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1078); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_1079; | 
|  | stream->handleMapping()->mapHandles_VkRenderPass_u64(pRenderPass, &cgen_var_1079, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1079, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR readParams"); | 
|  | uint64_t cgen_var_1080; | 
|  | stream->read((uint64_t*)&cgen_var_1080, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_1080, (VkRenderPass*)pRenderPass, 1); | 
|  | AEMU_SCOPED_TRACE("vkCreateRenderPass2KHR returnUnmarshal"); | 
|  | VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateRenderPass2KHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateRenderPass2KHR");; | 
|  | return vkCreateRenderPass2KHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdBeginRenderPass2KHR( | 
|  | VkCommandBuffer commandBuffer, | 
|  | const VkRenderPassBeginInfo* pRenderPassBegin, | 
|  | const VkSubpassBeginInfoKHR* pSubpassBeginInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR encode"); | 
|  | mImpl->log("start vkCmdBeginRenderPass2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkRenderPassBeginInfo* local_pRenderPassBegin; | 
|  | VkSubpassBeginInfoKHR* local_pSubpassBeginInfo; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_pRenderPassBegin = nullptr; | 
|  | if (pRenderPassBegin) | 
|  | { | 
|  | local_pRenderPassBegin = (VkRenderPassBeginInfo*)pool->alloc(sizeof(const VkRenderPassBeginInfo)); | 
|  | deepcopy_VkRenderPassBeginInfo(pool, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin)); | 
|  | } | 
|  | local_pSubpassBeginInfo = nullptr; | 
|  | if (pSubpassBeginInfo) | 
|  | { | 
|  | local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR)); | 
|  | deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo)); | 
|  | } | 
|  | if (local_pRenderPassBegin) | 
|  | { | 
|  | transform_tohost_VkRenderPassBeginInfo(mImpl->resources(), (VkRenderPassBeginInfo*)(local_pRenderPassBegin)); | 
|  | } | 
|  | if (local_pSubpassBeginInfo) | 
|  | { | 
|  | transform_tohost_VkSubpassBeginInfoKHR(mImpl->resources(), (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1081; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1081, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1081, 1 * 8); | 
|  | marshal_VkRenderPassBeginInfo(countingStream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin)); | 
|  | marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdBeginRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdBeginRenderPass2KHR = OP_vkCmdBeginRenderPass2KHR; | 
|  | stream->write(&opcode_vkCmdBeginRenderPass2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdBeginRenderPass2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1082; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1082, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1082, 1 * 8); | 
|  | marshal_VkRenderPassBeginInfo(stream, (VkRenderPassBeginInfo*)(local_pRenderPassBegin)); | 
|  | marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo)); | 
|  | AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdBeginRenderPass2KHR returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdBeginRenderPass2KHR");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdNextSubpass2KHR( | 
|  | VkCommandBuffer commandBuffer, | 
|  | const VkSubpassBeginInfoKHR* pSubpassBeginInfo, | 
|  | const VkSubpassEndInfoKHR* pSubpassEndInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR encode"); | 
|  | mImpl->log("start vkCmdNextSubpass2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkSubpassBeginInfoKHR* local_pSubpassBeginInfo; | 
|  | VkSubpassEndInfoKHR* local_pSubpassEndInfo; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_pSubpassBeginInfo = nullptr; | 
|  | if (pSubpassBeginInfo) | 
|  | { | 
|  | local_pSubpassBeginInfo = (VkSubpassBeginInfoKHR*)pool->alloc(sizeof(const VkSubpassBeginInfoKHR)); | 
|  | deepcopy_VkSubpassBeginInfoKHR(pool, pSubpassBeginInfo, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo)); | 
|  | } | 
|  | local_pSubpassEndInfo = nullptr; | 
|  | if (pSubpassEndInfo) | 
|  | { | 
|  | local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR)); | 
|  | deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo)); | 
|  | } | 
|  | if (local_pSubpassBeginInfo) | 
|  | { | 
|  | transform_tohost_VkSubpassBeginInfoKHR(mImpl->resources(), (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo)); | 
|  | } | 
|  | if (local_pSubpassEndInfo) | 
|  | { | 
|  | transform_tohost_VkSubpassEndInfoKHR(mImpl->resources(), (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1083; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1083, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1083, 1 * 8); | 
|  | marshal_VkSubpassBeginInfoKHR(countingStream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo)); | 
|  | marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdNextSubpass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdNextSubpass2KHR = OP_vkCmdNextSubpass2KHR; | 
|  | stream->write(&opcode_vkCmdNextSubpass2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdNextSubpass2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1084; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1084, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1084, 1 * 8); | 
|  | marshal_VkSubpassBeginInfoKHR(stream, (VkSubpassBeginInfoKHR*)(local_pSubpassBeginInfo)); | 
|  | marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo)); | 
|  | AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdNextSubpass2KHR returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdNextSubpass2KHR");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdEndRenderPass2KHR( | 
|  | VkCommandBuffer commandBuffer, | 
|  | const VkSubpassEndInfoKHR* pSubpassEndInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR encode"); | 
|  | mImpl->log("start vkCmdEndRenderPass2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkSubpassEndInfoKHR* local_pSubpassEndInfo; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_pSubpassEndInfo = nullptr; | 
|  | if (pSubpassEndInfo) | 
|  | { | 
|  | local_pSubpassEndInfo = (VkSubpassEndInfoKHR*)pool->alloc(sizeof(const VkSubpassEndInfoKHR)); | 
|  | deepcopy_VkSubpassEndInfoKHR(pool, pSubpassEndInfo, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo)); | 
|  | } | 
|  | if (local_pSubpassEndInfo) | 
|  | { | 
|  | transform_tohost_VkSubpassEndInfoKHR(mImpl->resources(), (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1085; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1085, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1085, 1 * 8); | 
|  | marshal_VkSubpassEndInfoKHR(countingStream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdEndRenderPass2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdEndRenderPass2KHR = OP_vkCmdEndRenderPass2KHR; | 
|  | stream->write(&opcode_vkCmdEndRenderPass2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdEndRenderPass2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1086; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1086, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1086, 1 * 8); | 
|  | marshal_VkSubpassEndInfoKHR(stream, (VkSubpassEndInfoKHR*)(local_pSubpassEndInfo)); | 
|  | AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdEndRenderPass2KHR returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdEndRenderPass2KHR");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_shared_presentable_image | 
|  | VkResult VkEncoder::vkGetSwapchainStatusKHR( | 
|  | VkDevice device, | 
|  | VkSwapchainKHR swapchain) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR encode"); | 
|  | mImpl->log("start vkGetSwapchainStatusKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkSwapchainKHR local_swapchain; | 
|  | local_device = device; | 
|  | local_swapchain = swapchain; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1087; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1087, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1087, 1 * 8); | 
|  | uint64_t cgen_var_1088; | 
|  | countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1088, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1088, 1 * 8); | 
|  | } | 
|  | uint32_t packetSize_vkGetSwapchainStatusKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetSwapchainStatusKHR = OP_vkGetSwapchainStatusKHR; | 
|  | stream->write(&opcode_vkGetSwapchainStatusKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetSwapchainStatusKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1089; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1089, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1089, 1 * 8); | 
|  | uint64_t cgen_var_1090; | 
|  | stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1090, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1090, 1 * 8); | 
|  | AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkGetSwapchainStatusKHR returnUnmarshal"); | 
|  | VkResult vkGetSwapchainStatusKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetSwapchainStatusKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetSwapchainStatusKHR");; | 
|  | return vkGetSwapchainStatusKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_external_fence_capabilities | 
|  | void VkEncoder::vkGetPhysicalDeviceExternalFencePropertiesKHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, | 
|  | VkExternalFenceProperties* pExternalFenceProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceExternalFencePropertiesKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkPhysicalDeviceExternalFenceInfo* local_pExternalFenceInfo; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_pExternalFenceInfo = nullptr; | 
|  | if (pExternalFenceInfo) | 
|  | { | 
|  | local_pExternalFenceInfo = (VkPhysicalDeviceExternalFenceInfo*)pool->alloc(sizeof(const VkPhysicalDeviceExternalFenceInfo)); | 
|  | deepcopy_VkPhysicalDeviceExternalFenceInfo(pool, pExternalFenceInfo, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo)); | 
|  | } | 
|  | if (local_pExternalFenceInfo) | 
|  | { | 
|  | transform_tohost_VkPhysicalDeviceExternalFenceInfo(mImpl->resources(), (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1091; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1091, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1091, 1 * 8); | 
|  | marshal_VkPhysicalDeviceExternalFenceInfo(countingStream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo)); | 
|  | marshal_VkExternalFenceProperties(countingStream, (VkExternalFenceProperties*)(pExternalFenceProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR = OP_vkGetPhysicalDeviceExternalFencePropertiesKHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceExternalFencePropertiesKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1092; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1092, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1092, 1 * 8); | 
|  | marshal_VkPhysicalDeviceExternalFenceInfo(stream, (VkPhysicalDeviceExternalFenceInfo*)(local_pExternalFenceInfo)); | 
|  | marshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR readParams"); | 
|  | unmarshal_VkExternalFenceProperties(stream, (VkExternalFenceProperties*)(pExternalFenceProperties)); | 
|  | if (pExternalFenceProperties) | 
|  | { | 
|  | transform_fromhost_VkExternalFenceProperties(mImpl->resources(), (VkExternalFenceProperties*)(pExternalFenceProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalFencePropertiesKHR returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceExternalFencePropertiesKHR");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_external_fence | 
|  | #endif | 
|  | #ifdef VK_KHR_external_fence_win32 | 
|  | VkResult VkEncoder::vkImportFenceWin32HandleKHR( | 
|  | VkDevice device, | 
|  | const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR encode"); | 
|  | mImpl->log("start vkImportFenceWin32HandleKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkImportFenceWin32HandleInfoKHR* local_pImportFenceWin32HandleInfo; | 
|  | local_device = device; | 
|  | local_pImportFenceWin32HandleInfo = nullptr; | 
|  | if (pImportFenceWin32HandleInfo) | 
|  | { | 
|  | local_pImportFenceWin32HandleInfo = (VkImportFenceWin32HandleInfoKHR*)pool->alloc(sizeof(const VkImportFenceWin32HandleInfoKHR)); | 
|  | deepcopy_VkImportFenceWin32HandleInfoKHR(pool, pImportFenceWin32HandleInfo, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo)); | 
|  | } | 
|  | if (local_pImportFenceWin32HandleInfo) | 
|  | { | 
|  | transform_tohost_VkImportFenceWin32HandleInfoKHR(mImpl->resources(), (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1093; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1093, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1093, 1 * 8); | 
|  | marshal_VkImportFenceWin32HandleInfoKHR(countingStream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkImportFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkImportFenceWin32HandleKHR = OP_vkImportFenceWin32HandleKHR; | 
|  | stream->write(&opcode_vkImportFenceWin32HandleKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkImportFenceWin32HandleKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1094; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1094, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1094, 1 * 8); | 
|  | marshal_VkImportFenceWin32HandleInfoKHR(stream, (VkImportFenceWin32HandleInfoKHR*)(local_pImportFenceWin32HandleInfo)); | 
|  | AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkImportFenceWin32HandleKHR returnUnmarshal"); | 
|  | VkResult vkImportFenceWin32HandleKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkImportFenceWin32HandleKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkImportFenceWin32HandleKHR");; | 
|  | return vkImportFenceWin32HandleKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetFenceWin32HandleKHR( | 
|  | VkDevice device, | 
|  | const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, | 
|  | HANDLE* pHandle) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR encode"); | 
|  | mImpl->log("start vkGetFenceWin32HandleKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkFenceGetWin32HandleInfoKHR* local_pGetWin32HandleInfo; | 
|  | local_device = device; | 
|  | local_pGetWin32HandleInfo = nullptr; | 
|  | if (pGetWin32HandleInfo) | 
|  | { | 
|  | local_pGetWin32HandleInfo = (VkFenceGetWin32HandleInfoKHR*)pool->alloc(sizeof(const VkFenceGetWin32HandleInfoKHR)); | 
|  | deepcopy_VkFenceGetWin32HandleInfoKHR(pool, pGetWin32HandleInfo, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo)); | 
|  | } | 
|  | if (local_pGetWin32HandleInfo) | 
|  | { | 
|  | transform_tohost_VkFenceGetWin32HandleInfoKHR(mImpl->resources(), (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1095; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1095, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1095, 1 * 8); | 
|  | marshal_VkFenceGetWin32HandleInfoKHR(countingStream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo)); | 
|  | countingStream->write((HANDLE*)pHandle, sizeof(HANDLE)); | 
|  | } | 
|  | uint32_t packetSize_vkGetFenceWin32HandleKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetFenceWin32HandleKHR = OP_vkGetFenceWin32HandleKHR; | 
|  | stream->write(&opcode_vkGetFenceWin32HandleKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetFenceWin32HandleKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1096; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1096, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1096, 1 * 8); | 
|  | marshal_VkFenceGetWin32HandleInfoKHR(stream, (VkFenceGetWin32HandleInfoKHR*)(local_pGetWin32HandleInfo)); | 
|  | stream->write((HANDLE*)pHandle, sizeof(HANDLE)); | 
|  | AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR readParams"); | 
|  | stream->read((HANDLE*)pHandle, sizeof(HANDLE)); | 
|  | AEMU_SCOPED_TRACE("vkGetFenceWin32HandleKHR returnUnmarshal"); | 
|  | VkResult vkGetFenceWin32HandleKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetFenceWin32HandleKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetFenceWin32HandleKHR");; | 
|  | return vkGetFenceWin32HandleKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_external_fence_fd | 
|  | VkResult VkEncoder::vkImportFenceFdKHR( | 
|  | VkDevice device, | 
|  | const VkImportFenceFdInfoKHR* pImportFenceFdInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkImportFenceFdKHR encode"); | 
|  | mImpl->log("start vkImportFenceFdKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkImportFenceFdInfoKHR* local_pImportFenceFdInfo; | 
|  | local_device = device; | 
|  | local_pImportFenceFdInfo = nullptr; | 
|  | if (pImportFenceFdInfo) | 
|  | { | 
|  | local_pImportFenceFdInfo = (VkImportFenceFdInfoKHR*)pool->alloc(sizeof(const VkImportFenceFdInfoKHR)); | 
|  | deepcopy_VkImportFenceFdInfoKHR(pool, pImportFenceFdInfo, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo)); | 
|  | } | 
|  | if (local_pImportFenceFdInfo) | 
|  | { | 
|  | transform_tohost_VkImportFenceFdInfoKHR(mImpl->resources(), (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1097; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1097, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1097, 1 * 8); | 
|  | marshal_VkImportFenceFdInfoKHR(countingStream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkImportFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkImportFenceFdKHR = OP_vkImportFenceFdKHR; | 
|  | stream->write(&opcode_vkImportFenceFdKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkImportFenceFdKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1098; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1098, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1098, 1 * 8); | 
|  | marshal_VkImportFenceFdInfoKHR(stream, (VkImportFenceFdInfoKHR*)(local_pImportFenceFdInfo)); | 
|  | AEMU_SCOPED_TRACE("vkImportFenceFdKHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkImportFenceFdKHR returnUnmarshal"); | 
|  | VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkImportFenceFdKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkImportFenceFdKHR");; | 
|  | return vkImportFenceFdKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetFenceFdKHR( | 
|  | VkDevice device, | 
|  | const VkFenceGetFdInfoKHR* pGetFdInfo, | 
|  | int* pFd) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetFenceFdKHR encode"); | 
|  | mImpl->log("start vkGetFenceFdKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkFenceGetFdInfoKHR* local_pGetFdInfo; | 
|  | local_device = device; | 
|  | local_pGetFdInfo = nullptr; | 
|  | if (pGetFdInfo) | 
|  | { | 
|  | local_pGetFdInfo = (VkFenceGetFdInfoKHR*)pool->alloc(sizeof(const VkFenceGetFdInfoKHR)); | 
|  | deepcopy_VkFenceGetFdInfoKHR(pool, pGetFdInfo, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo)); | 
|  | } | 
|  | if (local_pGetFdInfo) | 
|  | { | 
|  | transform_tohost_VkFenceGetFdInfoKHR(mImpl->resources(), (VkFenceGetFdInfoKHR*)(local_pGetFdInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1099; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1099, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1099, 1 * 8); | 
|  | marshal_VkFenceGetFdInfoKHR(countingStream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo)); | 
|  | countingStream->write((int*)pFd, sizeof(int)); | 
|  | } | 
|  | uint32_t packetSize_vkGetFenceFdKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetFenceFdKHR = OP_vkGetFenceFdKHR; | 
|  | stream->write(&opcode_vkGetFenceFdKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetFenceFdKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1100; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1100, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1100, 1 * 8); | 
|  | marshal_VkFenceGetFdInfoKHR(stream, (VkFenceGetFdInfoKHR*)(local_pGetFdInfo)); | 
|  | stream->write((int*)pFd, sizeof(int)); | 
|  | AEMU_SCOPED_TRACE("vkGetFenceFdKHR readParams"); | 
|  | stream->read((int*)pFd, sizeof(int)); | 
|  | AEMU_SCOPED_TRACE("vkGetFenceFdKHR returnUnmarshal"); | 
|  | VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetFenceFdKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetFenceFdKHR");; | 
|  | return vkGetFenceFdKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_maintenance2 | 
|  | #endif | 
|  | #ifdef VK_KHR_get_surface_capabilities2 | 
|  | VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2KHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, | 
|  | VkSurfaceCapabilities2KHR* pSurfaceCapabilities) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilities2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_pSurfaceInfo = nullptr; | 
|  | if (pSurfaceInfo) | 
|  | { | 
|  | local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR)); | 
|  | deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo)); | 
|  | } | 
|  | if (local_pSurfaceInfo) | 
|  | { | 
|  | transform_tohost_VkPhysicalDeviceSurfaceInfo2KHR(mImpl->resources(), (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1101; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1101, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1101, 1 * 8); | 
|  | marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo)); | 
|  | marshal_VkSurfaceCapabilities2KHR(countingStream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR = OP_vkGetPhysicalDeviceSurfaceCapabilities2KHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1102; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1102, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1102, 1 * 8); | 
|  | marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo)); | 
|  | marshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR readParams"); | 
|  | unmarshal_VkSurfaceCapabilities2KHR(stream, (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities)); | 
|  | if (pSurfaceCapabilities) | 
|  | { | 
|  | transform_fromhost_VkSurfaceCapabilities2KHR(mImpl->resources(), (VkSurfaceCapabilities2KHR*)(pSurfaceCapabilities)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2KHR returnUnmarshal"); | 
|  | VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilities2KHR");; | 
|  | return vkGetPhysicalDeviceSurfaceCapabilities2KHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetPhysicalDeviceSurfaceFormats2KHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, | 
|  | uint32_t* pSurfaceFormatCount, | 
|  | VkSurfaceFormat2KHR* pSurfaceFormats) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceSurfaceFormats2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_pSurfaceInfo = nullptr; | 
|  | if (pSurfaceInfo) | 
|  | { | 
|  | local_pSurfaceInfo = (VkPhysicalDeviceSurfaceInfo2KHR*)pool->alloc(sizeof(const VkPhysicalDeviceSurfaceInfo2KHR)); | 
|  | deepcopy_VkPhysicalDeviceSurfaceInfo2KHR(pool, pSurfaceInfo, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo)); | 
|  | } | 
|  | if (local_pSurfaceInfo) | 
|  | { | 
|  | transform_tohost_VkPhysicalDeviceSurfaceInfo2KHR(mImpl->resources(), (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1103; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1103, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1103, 1 * 8); | 
|  | marshal_VkPhysicalDeviceSurfaceInfo2KHR(countingStream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1104 = (uint64_t)(uintptr_t)pSurfaceFormatCount; | 
|  | countingStream->putBe64(cgen_var_1104); | 
|  | if (pSurfaceFormatCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1105 = (uint64_t)(uintptr_t)pSurfaceFormats; | 
|  | countingStream->putBe64(cgen_var_1105); | 
|  | if (pSurfaceFormats) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i) | 
|  | { | 
|  | marshal_VkSurfaceFormat2KHR(countingStream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceSurfaceFormats2KHR = OP_vkGetPhysicalDeviceSurfaceFormats2KHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceSurfaceFormats2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1106; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1106, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1106, 1 * 8); | 
|  | marshal_VkPhysicalDeviceSurfaceInfo2KHR(stream, (VkPhysicalDeviceSurfaceInfo2KHR*)(local_pSurfaceInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1107 = (uint64_t)(uintptr_t)pSurfaceFormatCount; | 
|  | stream->putBe64(cgen_var_1107); | 
|  | if (pSurfaceFormatCount) | 
|  | { | 
|  | stream->write((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1108 = (uint64_t)(uintptr_t)pSurfaceFormats; | 
|  | stream->putBe64(cgen_var_1108); | 
|  | if (pSurfaceFormats) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i) | 
|  | { | 
|  | marshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pSurfaceFormatCount; | 
|  | check_pSurfaceFormatCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pSurfaceFormatCount) | 
|  | { | 
|  | if (!(check_pSurfaceFormatCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pSurfaceFormatCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pSurfaceFormatCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkSurfaceFormat2KHR* check_pSurfaceFormats; | 
|  | check_pSurfaceFormats = (VkSurfaceFormat2KHR*)(uintptr_t)stream->getBe64(); | 
|  | if (pSurfaceFormats) | 
|  | { | 
|  | if (!(check_pSurfaceFormats)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pSurfaceFormats inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i) | 
|  | { | 
|  | unmarshal_VkSurfaceFormat2KHR(stream, (VkSurfaceFormat2KHR*)(pSurfaceFormats + i)); | 
|  | } | 
|  | } | 
|  | if (pSurfaceFormats) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pSurfaceFormatCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkSurfaceFormat2KHR(mImpl->resources(), (VkSurfaceFormat2KHR*)(pSurfaceFormats + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceFormats2KHR returnUnmarshal"); | 
|  | VkResult vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceSurfaceFormats2KHR");; | 
|  | return vkGetPhysicalDeviceSurfaceFormats2KHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_variable_pointers | 
|  | #endif | 
|  | #ifdef VK_KHR_get_display_properties2 | 
|  | VkResult VkEncoder::vkGetPhysicalDeviceDisplayProperties2KHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | uint32_t* pPropertyCount, | 
|  | VkDisplayProperties2KHR* pProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceDisplayProperties2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | local_physicalDevice = physicalDevice; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1111; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1111, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1111, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1112 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | countingStream->putBe64(cgen_var_1112); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1113 = (uint64_t)(uintptr_t)pProperties; | 
|  | countingStream->putBe64(cgen_var_1113); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkDisplayProperties2KHR(countingStream, (VkDisplayProperties2KHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceDisplayProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceDisplayProperties2KHR = OP_vkGetPhysicalDeviceDisplayProperties2KHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceDisplayProperties2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1114; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1114, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1114, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1115 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | stream->putBe64(cgen_var_1115); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1116 = (uint64_t)(uintptr_t)pProperties; | 
|  | stream->putBe64(cgen_var_1116); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pPropertyCount; | 
|  | check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | if (!(check_pPropertyCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkDisplayProperties2KHR* check_pProperties; | 
|  | check_pProperties = (VkDisplayProperties2KHR*)(uintptr_t)stream->getBe64(); | 
|  | if (pProperties) | 
|  | { | 
|  | if (!(check_pProperties)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | unmarshal_VkDisplayProperties2KHR(stream, (VkDisplayProperties2KHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkDisplayProperties2KHR(mImpl->resources(), (VkDisplayProperties2KHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayProperties2KHR returnUnmarshal"); | 
|  | VkResult vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceDisplayProperties2KHR");; | 
|  | return vkGetPhysicalDeviceDisplayProperties2KHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetPhysicalDeviceDisplayPlaneProperties2KHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | uint32_t* pPropertyCount, | 
|  | VkDisplayPlaneProperties2KHR* pProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceDisplayPlaneProperties2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | local_physicalDevice = physicalDevice; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1119; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1119, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1119, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1120 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | countingStream->putBe64(cgen_var_1120); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1121 = (uint64_t)(uintptr_t)pProperties; | 
|  | countingStream->putBe64(cgen_var_1121); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkDisplayPlaneProperties2KHR(countingStream, (VkDisplayPlaneProperties2KHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = OP_vkGetPhysicalDeviceDisplayPlaneProperties2KHR; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1122; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1122, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1122, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1123 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | stream->putBe64(cgen_var_1123); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1124 = (uint64_t)(uintptr_t)pProperties; | 
|  | stream->putBe64(cgen_var_1124); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pPropertyCount; | 
|  | check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | if (!(check_pPropertyCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkDisplayPlaneProperties2KHR* check_pProperties; | 
|  | check_pProperties = (VkDisplayPlaneProperties2KHR*)(uintptr_t)stream->getBe64(); | 
|  | if (pProperties) | 
|  | { | 
|  | if (!(check_pProperties)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | unmarshal_VkDisplayPlaneProperties2KHR(stream, (VkDisplayPlaneProperties2KHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkDisplayPlaneProperties2KHR(mImpl->resources(), (VkDisplayPlaneProperties2KHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceDisplayPlaneProperties2KHR returnUnmarshal"); | 
|  | VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceDisplayPlaneProperties2KHR");; | 
|  | return vkGetPhysicalDeviceDisplayPlaneProperties2KHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetDisplayModeProperties2KHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkDisplayKHR display, | 
|  | uint32_t* pPropertyCount, | 
|  | VkDisplayModeProperties2KHR* pProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR encode"); | 
|  | mImpl->log("start vkGetDisplayModeProperties2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkDisplayKHR local_display; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_display = display; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1127; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1127, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1127, 1 * 8); | 
|  | uint64_t cgen_var_1128; | 
|  | countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1128, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1128, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1129 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | countingStream->putBe64(cgen_var_1129); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1130 = (uint64_t)(uintptr_t)pProperties; | 
|  | countingStream->putBe64(cgen_var_1130); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkDisplayModeProperties2KHR(countingStream, (VkDisplayModeProperties2KHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetDisplayModeProperties2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetDisplayModeProperties2KHR = OP_vkGetDisplayModeProperties2KHR; | 
|  | stream->write(&opcode_vkGetDisplayModeProperties2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetDisplayModeProperties2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1131; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1131, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1131, 1 * 8); | 
|  | uint64_t cgen_var_1132; | 
|  | stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1132, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1132, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1133 = (uint64_t)(uintptr_t)pPropertyCount; | 
|  | stream->putBe64(cgen_var_1133); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | stream->write((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1134 = (uint64_t)(uintptr_t)pProperties; | 
|  | stream->putBe64(cgen_var_1134); | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | marshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pPropertyCount; | 
|  | check_pPropertyCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pPropertyCount) | 
|  | { | 
|  | if (!(check_pPropertyCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPropertyCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pPropertyCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkDisplayModeProperties2KHR* check_pProperties; | 
|  | check_pProperties = (VkDisplayModeProperties2KHR*)(uintptr_t)stream->getBe64(); | 
|  | if (pProperties) | 
|  | { | 
|  | if (!(check_pProperties)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pProperties inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | unmarshal_VkDisplayModeProperties2KHR(stream, (VkDisplayModeProperties2KHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | if (pProperties) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkDisplayModeProperties2KHR(mImpl->resources(), (VkDisplayModeProperties2KHR*)(pProperties + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetDisplayModeProperties2KHR returnUnmarshal"); | 
|  | VkResult vkGetDisplayModeProperties2KHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetDisplayModeProperties2KHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetDisplayModeProperties2KHR");; | 
|  | return vkGetDisplayModeProperties2KHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetDisplayPlaneCapabilities2KHR( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, | 
|  | VkDisplayPlaneCapabilities2KHR* pCapabilities) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR encode"); | 
|  | mImpl->log("start vkGetDisplayPlaneCapabilities2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkDisplayPlaneInfo2KHR* local_pDisplayPlaneInfo; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_pDisplayPlaneInfo = nullptr; | 
|  | if (pDisplayPlaneInfo) | 
|  | { | 
|  | local_pDisplayPlaneInfo = (VkDisplayPlaneInfo2KHR*)pool->alloc(sizeof(const VkDisplayPlaneInfo2KHR)); | 
|  | deepcopy_VkDisplayPlaneInfo2KHR(pool, pDisplayPlaneInfo, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo)); | 
|  | } | 
|  | if (local_pDisplayPlaneInfo) | 
|  | { | 
|  | transform_tohost_VkDisplayPlaneInfo2KHR(mImpl->resources(), (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1137; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1137, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1137, 1 * 8); | 
|  | marshal_VkDisplayPlaneInfo2KHR(countingStream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo)); | 
|  | marshal_VkDisplayPlaneCapabilities2KHR(countingStream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities)); | 
|  | } | 
|  | uint32_t packetSize_vkGetDisplayPlaneCapabilities2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetDisplayPlaneCapabilities2KHR = OP_vkGetDisplayPlaneCapabilities2KHR; | 
|  | stream->write(&opcode_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetDisplayPlaneCapabilities2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1138; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1138, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1138, 1 * 8); | 
|  | marshal_VkDisplayPlaneInfo2KHR(stream, (VkDisplayPlaneInfo2KHR*)(local_pDisplayPlaneInfo)); | 
|  | marshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities)); | 
|  | AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR readParams"); | 
|  | unmarshal_VkDisplayPlaneCapabilities2KHR(stream, (VkDisplayPlaneCapabilities2KHR*)(pCapabilities)); | 
|  | if (pCapabilities) | 
|  | { | 
|  | transform_fromhost_VkDisplayPlaneCapabilities2KHR(mImpl->resources(), (VkDisplayPlaneCapabilities2KHR*)(pCapabilities)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetDisplayPlaneCapabilities2KHR returnUnmarshal"); | 
|  | VkResult vkGetDisplayPlaneCapabilities2KHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetDisplayPlaneCapabilities2KHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetDisplayPlaneCapabilities2KHR");; | 
|  | return vkGetDisplayPlaneCapabilities2KHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_dedicated_allocation | 
|  | #endif | 
|  | #ifdef VK_KHR_storage_buffer_storage_class | 
|  | #endif | 
|  | #ifdef VK_KHR_relaxed_block_layout | 
|  | #endif | 
|  | #ifdef VK_KHR_get_memory_requirements2 | 
|  | void VkEncoder::vkGetImageMemoryRequirements2KHR( | 
|  | VkDevice device, | 
|  | const VkImageMemoryRequirementsInfo2* pInfo, | 
|  | VkMemoryRequirements2* pMemoryRequirements) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR encode"); | 
|  | mImpl->log("start vkGetImageMemoryRequirements2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkImageMemoryRequirementsInfo2* local_pInfo; | 
|  | local_device = device; | 
|  | local_pInfo = nullptr; | 
|  | if (pInfo) | 
|  | { | 
|  | local_pInfo = (VkImageMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageMemoryRequirementsInfo2)); | 
|  | deepcopy_VkImageMemoryRequirementsInfo2(pool, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | } | 
|  | if (local_pInfo) | 
|  | { | 
|  | transform_tohost_VkImageMemoryRequirementsInfo2(mImpl->resources(), (VkImageMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1139; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1139, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1139, 1 * 8); | 
|  | marshal_VkImageMemoryRequirementsInfo2(countingStream, (VkImageMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements)); | 
|  | } | 
|  | uint32_t packetSize_vkGetImageMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetImageMemoryRequirements2KHR = OP_vkGetImageMemoryRequirements2KHR; | 
|  | stream->write(&opcode_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetImageMemoryRequirements2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1140; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1140, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1140, 1 * 8); | 
|  | marshal_VkImageMemoryRequirementsInfo2(stream, (VkImageMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements)); | 
|  | AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR readParams"); | 
|  | unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements)); | 
|  | if (pMemoryRequirements) | 
|  | { | 
|  | transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetImageMemoryRequirements2KHR returnUnmarshal"); | 
|  | mImpl->log("finish vkGetImageMemoryRequirements2KHR");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetBufferMemoryRequirements2KHR( | 
|  | VkDevice device, | 
|  | const VkBufferMemoryRequirementsInfo2* pInfo, | 
|  | VkMemoryRequirements2* pMemoryRequirements) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR encode"); | 
|  | mImpl->log("start vkGetBufferMemoryRequirements2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkBufferMemoryRequirementsInfo2* local_pInfo; | 
|  | local_device = device; | 
|  | local_pInfo = nullptr; | 
|  | if (pInfo) | 
|  | { | 
|  | local_pInfo = (VkBufferMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkBufferMemoryRequirementsInfo2)); | 
|  | deepcopy_VkBufferMemoryRequirementsInfo2(pool, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | } | 
|  | if (local_pInfo) | 
|  | { | 
|  | transform_tohost_VkBufferMemoryRequirementsInfo2(mImpl->resources(), (VkBufferMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1141; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1141, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1141, 1 * 8); | 
|  | marshal_VkBufferMemoryRequirementsInfo2(countingStream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | marshal_VkMemoryRequirements2(countingStream, (VkMemoryRequirements2*)(pMemoryRequirements)); | 
|  | } | 
|  | uint32_t packetSize_vkGetBufferMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetBufferMemoryRequirements2KHR = OP_vkGetBufferMemoryRequirements2KHR; | 
|  | stream->write(&opcode_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetBufferMemoryRequirements2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1142; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1142, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1142, 1 * 8); | 
|  | marshal_VkBufferMemoryRequirementsInfo2(stream, (VkBufferMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | marshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements)); | 
|  | AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR readParams"); | 
|  | unmarshal_VkMemoryRequirements2(stream, (VkMemoryRequirements2*)(pMemoryRequirements)); | 
|  | if (pMemoryRequirements) | 
|  | { | 
|  | transform_fromhost_VkMemoryRequirements2(mImpl->resources(), (VkMemoryRequirements2*)(pMemoryRequirements)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetBufferMemoryRequirements2KHR returnUnmarshal"); | 
|  | mImpl->log("finish vkGetBufferMemoryRequirements2KHR");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetImageSparseMemoryRequirements2KHR( | 
|  | VkDevice device, | 
|  | const VkImageSparseMemoryRequirementsInfo2* pInfo, | 
|  | uint32_t* pSparseMemoryRequirementCount, | 
|  | VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR encode"); | 
|  | mImpl->log("start vkGetImageSparseMemoryRequirements2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkImageSparseMemoryRequirementsInfo2* local_pInfo; | 
|  | local_device = device; | 
|  | local_pInfo = nullptr; | 
|  | if (pInfo) | 
|  | { | 
|  | local_pInfo = (VkImageSparseMemoryRequirementsInfo2*)pool->alloc(sizeof(const VkImageSparseMemoryRequirementsInfo2)); | 
|  | deepcopy_VkImageSparseMemoryRequirementsInfo2(pool, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | } | 
|  | if (local_pInfo) | 
|  | { | 
|  | transform_tohost_VkImageSparseMemoryRequirementsInfo2(mImpl->resources(), (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1143; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1143, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1143, 1 * 8); | 
|  | marshal_VkImageSparseMemoryRequirementsInfo2(countingStream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1144 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount; | 
|  | countingStream->putBe64(cgen_var_1144); | 
|  | if (pSparseMemoryRequirementCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1145 = (uint64_t)(uintptr_t)pSparseMemoryRequirements; | 
|  | countingStream->putBe64(cgen_var_1145); | 
|  | if (pSparseMemoryRequirements) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i) | 
|  | { | 
|  | marshal_VkSparseImageMemoryRequirements2(countingStream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetImageSparseMemoryRequirements2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetImageSparseMemoryRequirements2KHR = OP_vkGetImageSparseMemoryRequirements2KHR; | 
|  | stream->write(&opcode_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetImageSparseMemoryRequirements2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1146; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1146, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1146, 1 * 8); | 
|  | marshal_VkImageSparseMemoryRequirementsInfo2(stream, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1147 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount; | 
|  | stream->putBe64(cgen_var_1147); | 
|  | if (pSparseMemoryRequirementCount) | 
|  | { | 
|  | stream->write((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1148 = (uint64_t)(uintptr_t)pSparseMemoryRequirements; | 
|  | stream->putBe64(cgen_var_1148); | 
|  | if (pSparseMemoryRequirements) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i) | 
|  | { | 
|  | marshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pSparseMemoryRequirementCount; | 
|  | check_pSparseMemoryRequirementCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pSparseMemoryRequirementCount) | 
|  | { | 
|  | if (!(check_pSparseMemoryRequirementCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pSparseMemoryRequirementCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkSparseImageMemoryRequirements2* check_pSparseMemoryRequirements; | 
|  | check_pSparseMemoryRequirements = (VkSparseImageMemoryRequirements2*)(uintptr_t)stream->getBe64(); | 
|  | if (pSparseMemoryRequirements) | 
|  | { | 
|  | if (!(check_pSparseMemoryRequirements)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pSparseMemoryRequirements inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i) | 
|  | { | 
|  | unmarshal_VkSparseImageMemoryRequirements2(stream, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i)); | 
|  | } | 
|  | } | 
|  | if (pSparseMemoryRequirements) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkSparseImageMemoryRequirements2(mImpl->resources(), (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetImageSparseMemoryRequirements2KHR returnUnmarshal"); | 
|  | mImpl->log("finish vkGetImageSparseMemoryRequirements2KHR");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_image_format_list | 
|  | #endif | 
|  | #ifdef VK_KHR_sampler_ycbcr_conversion | 
|  | VkResult VkEncoder::vkCreateSamplerYcbcrConversionKHR( | 
|  | VkDevice device, | 
|  | const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkSamplerYcbcrConversion* pYcbcrConversion) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR encode"); | 
|  | mImpl->log("start vkCreateSamplerYcbcrConversionKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkSamplerYcbcrConversionCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkSamplerYcbcrConversionCreateInfo*)pool->alloc(sizeof(const VkSamplerYcbcrConversionCreateInfo)); | 
|  | deepcopy_VkSamplerYcbcrConversionCreateInfo(pool, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkSamplerYcbcrConversionCreateInfo(mImpl->resources(), (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1151; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1151, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1151, 1 * 8); | 
|  | marshal_VkSamplerYcbcrConversionCreateInfo(countingStream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1152 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1152); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_1153; | 
|  | countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1153, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1153, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateSamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateSamplerYcbcrConversionKHR = OP_vkCreateSamplerYcbcrConversionKHR; | 
|  | stream->write(&opcode_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateSamplerYcbcrConversionKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1154; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1154, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1154, 1 * 8); | 
|  | marshal_VkSamplerYcbcrConversionCreateInfo(stream, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1155 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1155); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_1156; | 
|  | stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(pYcbcrConversion, &cgen_var_1156, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1156, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_1157; | 
|  | stream->read((uint64_t*)&cgen_var_1157, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_1157, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateSamplerYcbcrConversionKHR returnUnmarshal"); | 
|  | VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateSamplerYcbcrConversionKHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateSamplerYcbcrConversionKHR");; | 
|  | return vkCreateSamplerYcbcrConversionKHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroySamplerYcbcrConversionKHR( | 
|  | VkDevice device, | 
|  | VkSamplerYcbcrConversion ycbcrConversion, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR encode"); | 
|  | mImpl->log("start vkDestroySamplerYcbcrConversionKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkSamplerYcbcrConversion local_ycbcrConversion; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_ycbcrConversion = ycbcrConversion; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1158; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1158, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1158, 1 * 8); | 
|  | uint64_t cgen_var_1159; | 
|  | countingStream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1159, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1159, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1160 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1160); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroySamplerYcbcrConversionKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroySamplerYcbcrConversionKHR = OP_vkDestroySamplerYcbcrConversionKHR; | 
|  | stream->write(&opcode_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroySamplerYcbcrConversionKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1161; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1161, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1161, 1 * 8); | 
|  | uint64_t cgen_var_1162; | 
|  | stream->handleMapping()->mapHandles_VkSamplerYcbcrConversion_u64(&local_ycbcrConversion, &cgen_var_1162, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1162, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1163 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1163); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroySamplerYcbcrConversionKHR returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion); | 
|  | mImpl->log("finish vkDestroySamplerYcbcrConversionKHR");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_bind_memory2 | 
|  | VkResult VkEncoder::vkBindBufferMemory2KHR( | 
|  | VkDevice device, | 
|  | uint32_t bindInfoCount, | 
|  | const VkBindBufferMemoryInfo* pBindInfos) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR encode"); | 
|  | mImpl->log("start vkBindBufferMemory2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | uint32_t local_bindInfoCount; | 
|  | VkBindBufferMemoryInfo* local_pBindInfos; | 
|  | local_device = device; | 
|  | local_bindInfoCount = bindInfoCount; | 
|  | local_pBindInfos = nullptr; | 
|  | if (pBindInfos) | 
|  | { | 
|  | local_pBindInfos = (VkBindBufferMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindBufferMemoryInfo)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) | 
|  | { | 
|  | deepcopy_VkBindBufferMemoryInfo(pool, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i)); | 
|  | } | 
|  | } | 
|  | if (local_pBindInfos) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkBindBufferMemoryInfo(mImpl->resources(), (VkBindBufferMemoryInfo*)(local_pBindInfos + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1164; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1164, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1164, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) | 
|  | { | 
|  | marshal_VkBindBufferMemoryInfo(countingStream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkBindBufferMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkBindBufferMemory2KHR = OP_vkBindBufferMemory2KHR; | 
|  | stream->write(&opcode_vkBindBufferMemory2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkBindBufferMemory2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1165; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1165, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1165, 1 * 8); | 
|  | stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) | 
|  | { | 
|  | marshal_VkBindBufferMemoryInfo(stream, (VkBindBufferMemoryInfo*)(local_pBindInfos + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkBindBufferMemory2KHR returnUnmarshal"); | 
|  | VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkBindBufferMemory2KHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkBindBufferMemory2KHR");; | 
|  | return vkBindBufferMemory2KHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkBindImageMemory2KHR( | 
|  | VkDevice device, | 
|  | uint32_t bindInfoCount, | 
|  | const VkBindImageMemoryInfo* pBindInfos) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkBindImageMemory2KHR encode"); | 
|  | mImpl->log("start vkBindImageMemory2KHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | uint32_t local_bindInfoCount; | 
|  | VkBindImageMemoryInfo* local_pBindInfos; | 
|  | local_device = device; | 
|  | local_bindInfoCount = bindInfoCount; | 
|  | local_pBindInfos = nullptr; | 
|  | if (pBindInfos) | 
|  | { | 
|  | local_pBindInfos = (VkBindImageMemoryInfo*)pool->alloc(((bindInfoCount)) * sizeof(const VkBindImageMemoryInfo)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) | 
|  | { | 
|  | deepcopy_VkBindImageMemoryInfo(pool, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i)); | 
|  | } | 
|  | } | 
|  | if (local_pBindInfos) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkBindImageMemoryInfo(mImpl->resources(), (VkBindImageMemoryInfo*)(local_pBindInfos + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1166; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1166, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1166, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) | 
|  | { | 
|  | marshal_VkBindImageMemoryInfo(countingStream, (VkBindImageMemoryInfo*)(local_pBindInfos + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkBindImageMemory2KHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkBindImageMemory2KHR = OP_vkBindImageMemory2KHR; | 
|  | stream->write(&opcode_vkBindImageMemory2KHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkBindImageMemory2KHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1167; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1167, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1167, 1 * 8); | 
|  | stream->write((uint32_t*)&local_bindInfoCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) | 
|  | { | 
|  | marshal_VkBindImageMemoryInfo(stream, (VkBindImageMemoryInfo*)(local_pBindInfos + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkBindImageMemory2KHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkBindImageMemory2KHR returnUnmarshal"); | 
|  | VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkBindImageMemory2KHR_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkBindImageMemory2KHR");; | 
|  | return vkBindImageMemory2KHR_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_maintenance3 | 
|  | void VkEncoder::vkGetDescriptorSetLayoutSupportKHR( | 
|  | VkDevice device, | 
|  | const VkDescriptorSetLayoutCreateInfo* pCreateInfo, | 
|  | VkDescriptorSetLayoutSupport* pSupport) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR encode"); | 
|  | mImpl->log("start vkGetDescriptorSetLayoutSupportKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDescriptorSetLayoutCreateInfo* local_pCreateInfo; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkDescriptorSetLayoutCreateInfo*)pool->alloc(sizeof(const VkDescriptorSetLayoutCreateInfo)); | 
|  | deepcopy_VkDescriptorSetLayoutCreateInfo(pool, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkDescriptorSetLayoutCreateInfo(mImpl->resources(), (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1168; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1168, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1168, 1 * 8); | 
|  | marshal_VkDescriptorSetLayoutCreateInfo(countingStream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo)); | 
|  | marshal_VkDescriptorSetLayoutSupport(countingStream, (VkDescriptorSetLayoutSupport*)(pSupport)); | 
|  | } | 
|  | uint32_t packetSize_vkGetDescriptorSetLayoutSupportKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetDescriptorSetLayoutSupportKHR = OP_vkGetDescriptorSetLayoutSupportKHR; | 
|  | stream->write(&opcode_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetDescriptorSetLayoutSupportKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1169; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1169, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1169, 1 * 8); | 
|  | marshal_VkDescriptorSetLayoutCreateInfo(stream, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo)); | 
|  | marshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport)); | 
|  | AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR readParams"); | 
|  | unmarshal_VkDescriptorSetLayoutSupport(stream, (VkDescriptorSetLayoutSupport*)(pSupport)); | 
|  | if (pSupport) | 
|  | { | 
|  | transform_fromhost_VkDescriptorSetLayoutSupport(mImpl->resources(), (VkDescriptorSetLayoutSupport*)(pSupport)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetDescriptorSetLayoutSupportKHR returnUnmarshal"); | 
|  | mImpl->log("finish vkGetDescriptorSetLayoutSupportKHR");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_draw_indirect_count | 
|  | void VkEncoder::vkCmdDrawIndirectCountKHR( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkBuffer buffer, | 
|  | VkDeviceSize offset, | 
|  | VkBuffer countBuffer, | 
|  | VkDeviceSize countBufferOffset, | 
|  | uint32_t maxDrawCount, | 
|  | uint32_t stride) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR encode"); | 
|  | mImpl->log("start vkCmdDrawIndirectCountKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkBuffer local_buffer; | 
|  | VkDeviceSize local_offset; | 
|  | VkBuffer local_countBuffer; | 
|  | VkDeviceSize local_countBufferOffset; | 
|  | uint32_t local_maxDrawCount; | 
|  | uint32_t local_stride; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_buffer = buffer; | 
|  | local_offset = offset; | 
|  | local_countBuffer = countBuffer; | 
|  | local_countBufferOffset = countBufferOffset; | 
|  | local_maxDrawCount = maxDrawCount; | 
|  | local_stride = stride; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1170; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1170, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1170, 1 * 8); | 
|  | uint64_t cgen_var_1171; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1171, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1171, 1 * 8); | 
|  | countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); | 
|  | uint64_t cgen_var_1172; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1172, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1172, 1 * 8); | 
|  | countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize)); | 
|  | countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdDrawIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdDrawIndirectCountKHR = OP_vkCmdDrawIndirectCountKHR; | 
|  | stream->write(&opcode_vkCmdDrawIndirectCountKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdDrawIndirectCountKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1173; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1173, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1173, 1 * 8); | 
|  | uint64_t cgen_var_1174; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1174, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1174, 1 * 8); | 
|  | stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); | 
|  | uint64_t cgen_var_1175; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1175, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1175, 1 * 8); | 
|  | stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize)); | 
|  | stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_stride, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountKHR returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdDrawIndirectCountKHR");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdDrawIndexedIndirectCountKHR( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkBuffer buffer, | 
|  | VkDeviceSize offset, | 
|  | VkBuffer countBuffer, | 
|  | VkDeviceSize countBufferOffset, | 
|  | uint32_t maxDrawCount, | 
|  | uint32_t stride) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR encode"); | 
|  | mImpl->log("start vkCmdDrawIndexedIndirectCountKHR"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkBuffer local_buffer; | 
|  | VkDeviceSize local_offset; | 
|  | VkBuffer local_countBuffer; | 
|  | VkDeviceSize local_countBufferOffset; | 
|  | uint32_t local_maxDrawCount; | 
|  | uint32_t local_stride; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_buffer = buffer; | 
|  | local_offset = offset; | 
|  | local_countBuffer = countBuffer; | 
|  | local_countBufferOffset = countBufferOffset; | 
|  | local_maxDrawCount = maxDrawCount; | 
|  | local_stride = stride; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1176; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1176, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1176, 1 * 8); | 
|  | uint64_t cgen_var_1177; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1177, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1177, 1 * 8); | 
|  | countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); | 
|  | uint64_t cgen_var_1178; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1178, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1178, 1 * 8); | 
|  | countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize)); | 
|  | countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdDrawIndexedIndirectCountKHR = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdDrawIndexedIndirectCountKHR = OP_vkCmdDrawIndexedIndirectCountKHR; | 
|  | stream->write(&opcode_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdDrawIndexedIndirectCountKHR, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1179; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1179, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1179, 1 * 8); | 
|  | uint64_t cgen_var_1180; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1180, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1180, 1 * 8); | 
|  | stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); | 
|  | uint64_t cgen_var_1181; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1181, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1181, 1 * 8); | 
|  | stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize)); | 
|  | stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_stride, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountKHR returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdDrawIndexedIndirectCountKHR");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_KHR_8bit_storage | 
|  | #endif | 
|  | #ifdef VK_ANDROID_native_buffer | 
|  | VkResult VkEncoder::vkGetSwapchainGrallocUsageANDROID( | 
|  | VkDevice device, | 
|  | VkFormat format, | 
|  | VkImageUsageFlags imageUsage, | 
|  | int* grallocUsage) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID encode"); | 
|  | mImpl->log("start vkGetSwapchainGrallocUsageANDROID"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkFormat local_format; | 
|  | VkImageUsageFlags local_imageUsage; | 
|  | local_device = device; | 
|  | local_format = format; | 
|  | local_imageUsage = imageUsage; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1182; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1182, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1182, 1 * 8); | 
|  | countingStream->write((VkFormat*)&local_format, sizeof(VkFormat)); | 
|  | countingStream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags)); | 
|  | countingStream->write((int*)grallocUsage, sizeof(int)); | 
|  | } | 
|  | uint32_t packetSize_vkGetSwapchainGrallocUsageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetSwapchainGrallocUsageANDROID = OP_vkGetSwapchainGrallocUsageANDROID; | 
|  | stream->write(&opcode_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetSwapchainGrallocUsageANDROID, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1183; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1183, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1183, 1 * 8); | 
|  | stream->write((VkFormat*)&local_format, sizeof(VkFormat)); | 
|  | stream->write((VkImageUsageFlags*)&local_imageUsage, sizeof(VkImageUsageFlags)); | 
|  | stream->write((int*)grallocUsage, sizeof(int)); | 
|  | AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID readParams"); | 
|  | stream->read((int*)grallocUsage, sizeof(int)); | 
|  | AEMU_SCOPED_TRACE("vkGetSwapchainGrallocUsageANDROID returnUnmarshal"); | 
|  | VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetSwapchainGrallocUsageANDROID_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetSwapchainGrallocUsageANDROID");; | 
|  | return vkGetSwapchainGrallocUsageANDROID_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkAcquireImageANDROID( | 
|  | VkDevice device, | 
|  | VkImage image, | 
|  | int nativeFenceFd, | 
|  | VkSemaphore semaphore, | 
|  | VkFence fence) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkAcquireImageANDROID encode"); | 
|  | mImpl->log("start vkAcquireImageANDROID"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkImage local_image; | 
|  | int local_nativeFenceFd; | 
|  | VkSemaphore local_semaphore; | 
|  | VkFence local_fence; | 
|  | local_device = device; | 
|  | local_image = image; | 
|  | local_nativeFenceFd = nativeFenceFd; | 
|  | local_semaphore = semaphore; | 
|  | local_fence = fence; | 
|  | mImpl->resources()->unwrap_vkAcquireImageANDROID_nativeFenceFd(nativeFenceFd, &local_nativeFenceFd); | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1184; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1184, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1184, 1 * 8); | 
|  | uint64_t cgen_var_1185; | 
|  | countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1185, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1185, 1 * 8); | 
|  | countingStream->write((int*)&local_nativeFenceFd, sizeof(int)); | 
|  | uint64_t cgen_var_1186; | 
|  | countingStream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1186, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1186, 1 * 8); | 
|  | uint64_t cgen_var_1187; | 
|  | countingStream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1187, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1187, 1 * 8); | 
|  | } | 
|  | uint32_t packetSize_vkAcquireImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkAcquireImageANDROID = OP_vkAcquireImageANDROID; | 
|  | stream->write(&opcode_vkAcquireImageANDROID, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkAcquireImageANDROID, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1188; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1188, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1188, 1 * 8); | 
|  | uint64_t cgen_var_1189; | 
|  | stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1189, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1189, 1 * 8); | 
|  | stream->write((int*)&local_nativeFenceFd, sizeof(int)); | 
|  | uint64_t cgen_var_1190; | 
|  | stream->handleMapping()->mapHandles_VkSemaphore_u64(&local_semaphore, &cgen_var_1190, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1190, 1 * 8); | 
|  | uint64_t cgen_var_1191; | 
|  | stream->handleMapping()->mapHandles_VkFence_u64(&local_fence, &cgen_var_1191, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1191, 1 * 8); | 
|  | AEMU_SCOPED_TRACE("vkAcquireImageANDROID readParams"); | 
|  | AEMU_SCOPED_TRACE("vkAcquireImageANDROID returnUnmarshal"); | 
|  | VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkAcquireImageANDROID_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkAcquireImageANDROID");; | 
|  | return vkAcquireImageANDROID_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkQueueSignalReleaseImageANDROID( | 
|  | VkQueue queue, | 
|  | uint32_t waitSemaphoreCount, | 
|  | const VkSemaphore* pWaitSemaphores, | 
|  | VkImage image, | 
|  | int* pNativeFenceFd) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID encode"); | 
|  | mImpl->log("start vkQueueSignalReleaseImageANDROID"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkQueue local_queue; | 
|  | uint32_t local_waitSemaphoreCount; | 
|  | VkSemaphore* local_pWaitSemaphores; | 
|  | VkImage local_image; | 
|  | local_queue = queue; | 
|  | local_waitSemaphoreCount = waitSemaphoreCount; | 
|  | local_pWaitSemaphores = nullptr; | 
|  | if (pWaitSemaphores) | 
|  | { | 
|  | local_pWaitSemaphores = (VkSemaphore*)pool->dupArray(pWaitSemaphores, ((waitSemaphoreCount)) * sizeof(const VkSemaphore)); | 
|  | } | 
|  | local_image = image; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1192; | 
|  | countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1192, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1192, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1193 = (uint64_t)(uintptr_t)local_pWaitSemaphores; | 
|  | countingStream->putBe64(cgen_var_1193); | 
|  | if (local_pWaitSemaphores) | 
|  | { | 
|  | if (((waitSemaphoreCount))) | 
|  | { | 
|  | uint64_t* cgen_var_1194; | 
|  | countingStream->alloc((void**)&cgen_var_1194, ((waitSemaphoreCount)) * 8); | 
|  | countingStream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, cgen_var_1194, ((waitSemaphoreCount))); | 
|  | countingStream->write((uint64_t*)cgen_var_1194, ((waitSemaphoreCount)) * 8); | 
|  | } | 
|  | } | 
|  | uint64_t cgen_var_1195; | 
|  | countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1195, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1195, 1 * 8); | 
|  | countingStream->write((int*)pNativeFenceFd, sizeof(int)); | 
|  | } | 
|  | uint32_t packetSize_vkQueueSignalReleaseImageANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkQueueSignalReleaseImageANDROID = OP_vkQueueSignalReleaseImageANDROID; | 
|  | stream->write(&opcode_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkQueueSignalReleaseImageANDROID, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1196; | 
|  | stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1196, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1196, 1 * 8); | 
|  | stream->write((uint32_t*)&local_waitSemaphoreCount, sizeof(uint32_t)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1197 = (uint64_t)(uintptr_t)local_pWaitSemaphores; | 
|  | stream->putBe64(cgen_var_1197); | 
|  | if (local_pWaitSemaphores) | 
|  | { | 
|  | if (((waitSemaphoreCount))) | 
|  | { | 
|  | uint64_t* cgen_var_1198; | 
|  | stream->alloc((void**)&cgen_var_1198, ((waitSemaphoreCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_VkSemaphore_u64(local_pWaitSemaphores, cgen_var_1198, ((waitSemaphoreCount))); | 
|  | stream->write((uint64_t*)cgen_var_1198, ((waitSemaphoreCount)) * 8); | 
|  | } | 
|  | } | 
|  | uint64_t cgen_var_1199; | 
|  | stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1199, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1199, 1 * 8); | 
|  | stream->write((int*)pNativeFenceFd, sizeof(int)); | 
|  | AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID readParams"); | 
|  | stream->read((int*)pNativeFenceFd, sizeof(int)); | 
|  | AEMU_SCOPED_TRACE("vkQueueSignalReleaseImageANDROID returnUnmarshal"); | 
|  | VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkQueueSignalReleaseImageANDROID_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkQueueSignalReleaseImageANDROID");; | 
|  | return vkQueueSignalReleaseImageANDROID_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_EXT_debug_report | 
|  | VkResult VkEncoder::vkCreateDebugReportCallbackEXT( | 
|  | VkInstance instance, | 
|  | const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkDebugReportCallbackEXT* pCallback) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT encode"); | 
|  | mImpl->log("start vkCreateDebugReportCallbackEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | VkDebugReportCallbackCreateInfoEXT* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_instance = instance; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkDebugReportCallbackCreateInfoEXT*)pool->alloc(sizeof(const VkDebugReportCallbackCreateInfoEXT)); | 
|  | deepcopy_VkDebugReportCallbackCreateInfoEXT(pool, pCreateInfo, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkDebugReportCallbackCreateInfoEXT(mImpl->resources(), (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1200; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1200, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1200, 1 * 8); | 
|  | marshal_VkDebugReportCallbackCreateInfoEXT(countingStream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1201 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1201); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_1202; | 
|  | countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1202, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1202, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateDebugReportCallbackEXT = OP_vkCreateDebugReportCallbackEXT; | 
|  | stream->write(&opcode_vkCreateDebugReportCallbackEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateDebugReportCallbackEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1203; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1203, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1203, 1 * 8); | 
|  | marshal_VkDebugReportCallbackCreateInfoEXT(stream, (VkDebugReportCallbackCreateInfoEXT*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1204 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1204); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_1205; | 
|  | stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(pCallback, &cgen_var_1205, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1205, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_1206; | 
|  | stream->read((uint64_t*)&cgen_var_1206, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkDebugReportCallbackEXT(&cgen_var_1206, (VkDebugReportCallbackEXT*)pCallback, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateDebugReportCallbackEXT returnUnmarshal"); | 
|  | VkResult vkCreateDebugReportCallbackEXT_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateDebugReportCallbackEXT_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateDebugReportCallbackEXT");; | 
|  | return vkCreateDebugReportCallbackEXT_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyDebugReportCallbackEXT( | 
|  | VkInstance instance, | 
|  | VkDebugReportCallbackEXT callback, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT encode"); | 
|  | mImpl->log("start vkDestroyDebugReportCallbackEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | VkDebugReportCallbackEXT local_callback; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_instance = instance; | 
|  | local_callback = callback; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1207; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1207, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1207, 1 * 8); | 
|  | uint64_t cgen_var_1208; | 
|  | countingStream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1208, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1208, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1209 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1209); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyDebugReportCallbackEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyDebugReportCallbackEXT = OP_vkDestroyDebugReportCallbackEXT; | 
|  | stream->write(&opcode_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyDebugReportCallbackEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1210; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1210, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1210, 1 * 8); | 
|  | uint64_t cgen_var_1211; | 
|  | stream->handleMapping()->mapHandles_VkDebugReportCallbackEXT_u64(&local_callback, &cgen_var_1211, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1211, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1212 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1212); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyDebugReportCallbackEXT returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkDebugReportCallbackEXT((VkDebugReportCallbackEXT*)&callback); | 
|  | mImpl->log("finish vkDestroyDebugReportCallbackEXT");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDebugReportMessageEXT( | 
|  | VkInstance instance, | 
|  | VkDebugReportFlagsEXT flags, | 
|  | VkDebugReportObjectTypeEXT objectType, | 
|  | uint64_t object, | 
|  | size_t location, | 
|  | int32_t messageCode, | 
|  | const char* pLayerPrefix, | 
|  | const char* pMessage) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDebugReportMessageEXT encode"); | 
|  | mImpl->log("start vkDebugReportMessageEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | VkDebugReportFlagsEXT local_flags; | 
|  | VkDebugReportObjectTypeEXT local_objectType; | 
|  | uint64_t local_object; | 
|  | size_t local_location; | 
|  | int32_t local_messageCode; | 
|  | char* local_pLayerPrefix; | 
|  | char* local_pMessage; | 
|  | local_instance = instance; | 
|  | local_flags = flags; | 
|  | local_objectType = objectType; | 
|  | local_object = object; | 
|  | local_location = location; | 
|  | local_messageCode = messageCode; | 
|  | local_pLayerPrefix = nullptr; | 
|  | if (pLayerPrefix) | 
|  | { | 
|  | local_pLayerPrefix = pool->strDup(pLayerPrefix); | 
|  | } | 
|  | local_pMessage = nullptr; | 
|  | if (pMessage) | 
|  | { | 
|  | local_pMessage = pool->strDup(pMessage); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1213; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1213, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1213, 1 * 8); | 
|  | countingStream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT)); | 
|  | countingStream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT)); | 
|  | countingStream->write((uint64_t*)&local_object, sizeof(uint64_t)); | 
|  | uint64_t cgen_var_1214 = (uint64_t)local_location; | 
|  | countingStream->putBe64(cgen_var_1214); | 
|  | countingStream->write((int32_t*)&local_messageCode, sizeof(int32_t)); | 
|  | countingStream->putString(local_pLayerPrefix); | 
|  | countingStream->putString(local_pMessage); | 
|  | } | 
|  | uint32_t packetSize_vkDebugReportMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDebugReportMessageEXT = OP_vkDebugReportMessageEXT; | 
|  | stream->write(&opcode_vkDebugReportMessageEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDebugReportMessageEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1215; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1215, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1215, 1 * 8); | 
|  | stream->write((VkDebugReportFlagsEXT*)&local_flags, sizeof(VkDebugReportFlagsEXT)); | 
|  | stream->write((VkDebugReportObjectTypeEXT*)&local_objectType, sizeof(VkDebugReportObjectTypeEXT)); | 
|  | stream->write((uint64_t*)&local_object, sizeof(uint64_t)); | 
|  | uint64_t cgen_var_1216 = (uint64_t)local_location; | 
|  | stream->putBe64(cgen_var_1216); | 
|  | stream->write((int32_t*)&local_messageCode, sizeof(int32_t)); | 
|  | stream->putString(local_pLayerPrefix); | 
|  | stream->putString(local_pMessage); | 
|  | AEMU_SCOPED_TRACE("vkDebugReportMessageEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDebugReportMessageEXT returnUnmarshal"); | 
|  | mImpl->log("finish vkDebugReportMessageEXT");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_NV_glsl_shader | 
|  | #endif | 
|  | #ifdef VK_EXT_depth_range_unrestricted | 
|  | #endif | 
|  | #ifdef VK_IMG_filter_cubic | 
|  | #endif | 
|  | #ifdef VK_AMD_rasterization_order | 
|  | #endif | 
|  | #ifdef VK_AMD_shader_trinary_minmax | 
|  | #endif | 
|  | #ifdef VK_AMD_shader_explicit_vertex_parameter | 
|  | #endif | 
|  | #ifdef VK_EXT_debug_marker | 
|  | VkResult VkEncoder::vkDebugMarkerSetObjectTagEXT( | 
|  | VkDevice device, | 
|  | const VkDebugMarkerObjectTagInfoEXT* pTagInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT encode"); | 
|  | mImpl->log("start vkDebugMarkerSetObjectTagEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDebugMarkerObjectTagInfoEXT* local_pTagInfo; | 
|  | local_device = device; | 
|  | local_pTagInfo = nullptr; | 
|  | if (pTagInfo) | 
|  | { | 
|  | local_pTagInfo = (VkDebugMarkerObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectTagInfoEXT)); | 
|  | deepcopy_VkDebugMarkerObjectTagInfoEXT(pool, pTagInfo, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo)); | 
|  | } | 
|  | if (local_pTagInfo) | 
|  | { | 
|  | transform_tohost_VkDebugMarkerObjectTagInfoEXT(mImpl->resources(), (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1217; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1217, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1217, 1 * 8); | 
|  | marshal_VkDebugMarkerObjectTagInfoEXT(countingStream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkDebugMarkerSetObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDebugMarkerSetObjectTagEXT = OP_vkDebugMarkerSetObjectTagEXT; | 
|  | stream->write(&opcode_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDebugMarkerSetObjectTagEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1218; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1218, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1218, 1 * 8); | 
|  | marshal_VkDebugMarkerObjectTagInfoEXT(stream, (VkDebugMarkerObjectTagInfoEXT*)(local_pTagInfo)); | 
|  | AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectTagEXT returnUnmarshal"); | 
|  | VkResult vkDebugMarkerSetObjectTagEXT_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkDebugMarkerSetObjectTagEXT_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkDebugMarkerSetObjectTagEXT");; | 
|  | return vkDebugMarkerSetObjectTagEXT_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkDebugMarkerSetObjectNameEXT( | 
|  | VkDevice device, | 
|  | const VkDebugMarkerObjectNameInfoEXT* pNameInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT encode"); | 
|  | mImpl->log("start vkDebugMarkerSetObjectNameEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDebugMarkerObjectNameInfoEXT* local_pNameInfo; | 
|  | local_device = device; | 
|  | local_pNameInfo = nullptr; | 
|  | if (pNameInfo) | 
|  | { | 
|  | local_pNameInfo = (VkDebugMarkerObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerObjectNameInfoEXT)); | 
|  | deepcopy_VkDebugMarkerObjectNameInfoEXT(pool, pNameInfo, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo)); | 
|  | } | 
|  | if (local_pNameInfo) | 
|  | { | 
|  | transform_tohost_VkDebugMarkerObjectNameInfoEXT(mImpl->resources(), (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1219; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1219, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1219, 1 * 8); | 
|  | marshal_VkDebugMarkerObjectNameInfoEXT(countingStream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkDebugMarkerSetObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDebugMarkerSetObjectNameEXT = OP_vkDebugMarkerSetObjectNameEXT; | 
|  | stream->write(&opcode_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDebugMarkerSetObjectNameEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1220; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1220, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1220, 1 * 8); | 
|  | marshal_VkDebugMarkerObjectNameInfoEXT(stream, (VkDebugMarkerObjectNameInfoEXT*)(local_pNameInfo)); | 
|  | AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDebugMarkerSetObjectNameEXT returnUnmarshal"); | 
|  | VkResult vkDebugMarkerSetObjectNameEXT_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkDebugMarkerSetObjectNameEXT_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkDebugMarkerSetObjectNameEXT");; | 
|  | return vkDebugMarkerSetObjectNameEXT_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdDebugMarkerBeginEXT( | 
|  | VkCommandBuffer commandBuffer, | 
|  | const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT encode"); | 
|  | mImpl->log("start vkCmdDebugMarkerBeginEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_pMarkerInfo = nullptr; | 
|  | if (pMarkerInfo) | 
|  | { | 
|  | local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT)); | 
|  | deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo)); | 
|  | } | 
|  | if (local_pMarkerInfo) | 
|  | { | 
|  | transform_tohost_VkDebugMarkerMarkerInfoEXT(mImpl->resources(), (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1221; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1221, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1221, 1 * 8); | 
|  | marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdDebugMarkerBeginEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdDebugMarkerBeginEXT = OP_vkCmdDebugMarkerBeginEXT; | 
|  | stream->write(&opcode_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdDebugMarkerBeginEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1222; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1222, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1222, 1 * 8); | 
|  | marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo)); | 
|  | AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdDebugMarkerBeginEXT returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdDebugMarkerBeginEXT");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdDebugMarkerEndEXT( | 
|  | VkCommandBuffer commandBuffer) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT encode"); | 
|  | mImpl->log("start vkCmdDebugMarkerEndEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | local_commandBuffer = commandBuffer; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1223; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1223, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1223, 1 * 8); | 
|  | } | 
|  | uint32_t packetSize_vkCmdDebugMarkerEndEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdDebugMarkerEndEXT = OP_vkCmdDebugMarkerEndEXT; | 
|  | stream->write(&opcode_vkCmdDebugMarkerEndEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdDebugMarkerEndEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1224; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1224, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1224, 1 * 8); | 
|  | AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdDebugMarkerEndEXT returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdDebugMarkerEndEXT");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdDebugMarkerInsertEXT( | 
|  | VkCommandBuffer commandBuffer, | 
|  | const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT encode"); | 
|  | mImpl->log("start vkCmdDebugMarkerInsertEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkDebugMarkerMarkerInfoEXT* local_pMarkerInfo; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_pMarkerInfo = nullptr; | 
|  | if (pMarkerInfo) | 
|  | { | 
|  | local_pMarkerInfo = (VkDebugMarkerMarkerInfoEXT*)pool->alloc(sizeof(const VkDebugMarkerMarkerInfoEXT)); | 
|  | deepcopy_VkDebugMarkerMarkerInfoEXT(pool, pMarkerInfo, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo)); | 
|  | } | 
|  | if (local_pMarkerInfo) | 
|  | { | 
|  | transform_tohost_VkDebugMarkerMarkerInfoEXT(mImpl->resources(), (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1225; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1225, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1225, 1 * 8); | 
|  | marshal_VkDebugMarkerMarkerInfoEXT(countingStream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdDebugMarkerInsertEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdDebugMarkerInsertEXT = OP_vkCmdDebugMarkerInsertEXT; | 
|  | stream->write(&opcode_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdDebugMarkerInsertEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1226; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1226, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1226, 1 * 8); | 
|  | marshal_VkDebugMarkerMarkerInfoEXT(stream, (VkDebugMarkerMarkerInfoEXT*)(local_pMarkerInfo)); | 
|  | AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdDebugMarkerInsertEXT returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdDebugMarkerInsertEXT");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_AMD_gcn_shader | 
|  | #endif | 
|  | #ifdef VK_NV_dedicated_allocation | 
|  | #endif | 
|  | #ifdef VK_AMD_draw_indirect_count | 
|  | void VkEncoder::vkCmdDrawIndirectCountAMD( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkBuffer buffer, | 
|  | VkDeviceSize offset, | 
|  | VkBuffer countBuffer, | 
|  | VkDeviceSize countBufferOffset, | 
|  | uint32_t maxDrawCount, | 
|  | uint32_t stride) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD encode"); | 
|  | mImpl->log("start vkCmdDrawIndirectCountAMD"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkBuffer local_buffer; | 
|  | VkDeviceSize local_offset; | 
|  | VkBuffer local_countBuffer; | 
|  | VkDeviceSize local_countBufferOffset; | 
|  | uint32_t local_maxDrawCount; | 
|  | uint32_t local_stride; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_buffer = buffer; | 
|  | local_offset = offset; | 
|  | local_countBuffer = countBuffer; | 
|  | local_countBufferOffset = countBufferOffset; | 
|  | local_maxDrawCount = maxDrawCount; | 
|  | local_stride = stride; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1227; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1227, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1227, 1 * 8); | 
|  | uint64_t cgen_var_1228; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1228, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1228, 1 * 8); | 
|  | countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); | 
|  | uint64_t cgen_var_1229; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1229, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1229, 1 * 8); | 
|  | countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize)); | 
|  | countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdDrawIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdDrawIndirectCountAMD = OP_vkCmdDrawIndirectCountAMD; | 
|  | stream->write(&opcode_vkCmdDrawIndirectCountAMD, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdDrawIndirectCountAMD, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1230; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1230, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1230, 1 * 8); | 
|  | uint64_t cgen_var_1231; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1231, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1231, 1 * 8); | 
|  | stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); | 
|  | uint64_t cgen_var_1232; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1232, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1232, 1 * 8); | 
|  | stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize)); | 
|  | stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_stride, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdDrawIndirectCountAMD returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdDrawIndirectCountAMD");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdDrawIndexedIndirectCountAMD( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkBuffer buffer, | 
|  | VkDeviceSize offset, | 
|  | VkBuffer countBuffer, | 
|  | VkDeviceSize countBufferOffset, | 
|  | uint32_t maxDrawCount, | 
|  | uint32_t stride) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD encode"); | 
|  | mImpl->log("start vkCmdDrawIndexedIndirectCountAMD"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkBuffer local_buffer; | 
|  | VkDeviceSize local_offset; | 
|  | VkBuffer local_countBuffer; | 
|  | VkDeviceSize local_countBufferOffset; | 
|  | uint32_t local_maxDrawCount; | 
|  | uint32_t local_stride; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_buffer = buffer; | 
|  | local_offset = offset; | 
|  | local_countBuffer = countBuffer; | 
|  | local_countBufferOffset = countBufferOffset; | 
|  | local_maxDrawCount = maxDrawCount; | 
|  | local_stride = stride; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1233; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1233, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1233, 1 * 8); | 
|  | uint64_t cgen_var_1234; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1234, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1234, 1 * 8); | 
|  | countingStream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); | 
|  | uint64_t cgen_var_1235; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1235, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1235, 1 * 8); | 
|  | countingStream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize)); | 
|  | countingStream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_stride, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdDrawIndexedIndirectCountAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdDrawIndexedIndirectCountAMD = OP_vkCmdDrawIndexedIndirectCountAMD; | 
|  | stream->write(&opcode_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdDrawIndexedIndirectCountAMD, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1236; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1236, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1236, 1 * 8); | 
|  | uint64_t cgen_var_1237; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1237, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1237, 1 * 8); | 
|  | stream->write((VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); | 
|  | uint64_t cgen_var_1238; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_countBuffer, &cgen_var_1238, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1238, 1 * 8); | 
|  | stream->write((VkDeviceSize*)&local_countBufferOffset, sizeof(VkDeviceSize)); | 
|  | stream->write((uint32_t*)&local_maxDrawCount, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_stride, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdDrawIndexedIndirectCountAMD returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdDrawIndexedIndirectCountAMD");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_AMD_negative_viewport_height | 
|  | #endif | 
|  | #ifdef VK_AMD_gpu_shader_half_float | 
|  | #endif | 
|  | #ifdef VK_AMD_shader_ballot | 
|  | #endif | 
|  | #ifdef VK_AMD_texture_gather_bias_lod | 
|  | #endif | 
|  | #ifdef VK_AMD_shader_info | 
|  | VkResult VkEncoder::vkGetShaderInfoAMD( | 
|  | VkDevice device, | 
|  | VkPipeline pipeline, | 
|  | VkShaderStageFlagBits shaderStage, | 
|  | VkShaderInfoTypeAMD infoType, | 
|  | size_t* pInfoSize, | 
|  | void* pInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetShaderInfoAMD encode"); | 
|  | mImpl->log("start vkGetShaderInfoAMD"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkPipeline local_pipeline; | 
|  | VkShaderStageFlagBits local_shaderStage; | 
|  | VkShaderInfoTypeAMD local_infoType; | 
|  | local_device = device; | 
|  | local_pipeline = pipeline; | 
|  | local_shaderStage = shaderStage; | 
|  | local_infoType = infoType; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1239; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1239, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1239, 1 * 8); | 
|  | uint64_t cgen_var_1240; | 
|  | countingStream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1240, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1240, 1 * 8); | 
|  | countingStream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits)); | 
|  | countingStream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1241 = (uint64_t)(uintptr_t)pInfoSize; | 
|  | countingStream->putBe64(cgen_var_1241); | 
|  | if (pInfoSize) | 
|  | { | 
|  | uint64_t cgen_var_1242 = (uint64_t)(*pInfoSize); | 
|  | countingStream->putBe64(cgen_var_1242); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1243 = (uint64_t)(uintptr_t)pInfo; | 
|  | countingStream->putBe64(cgen_var_1243); | 
|  | if (pInfo) | 
|  | { | 
|  | countingStream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetShaderInfoAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetShaderInfoAMD = OP_vkGetShaderInfoAMD; | 
|  | stream->write(&opcode_vkGetShaderInfoAMD, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetShaderInfoAMD, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1244; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1244, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1244, 1 * 8); | 
|  | uint64_t cgen_var_1245; | 
|  | stream->handleMapping()->mapHandles_VkPipeline_u64(&local_pipeline, &cgen_var_1245, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1245, 1 * 8); | 
|  | stream->write((VkShaderStageFlagBits*)&local_shaderStage, sizeof(VkShaderStageFlagBits)); | 
|  | stream->write((VkShaderInfoTypeAMD*)&local_infoType, sizeof(VkShaderInfoTypeAMD)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1246 = (uint64_t)(uintptr_t)pInfoSize; | 
|  | stream->putBe64(cgen_var_1246); | 
|  | if (pInfoSize) | 
|  | { | 
|  | uint64_t cgen_var_1247 = (uint64_t)(*pInfoSize); | 
|  | stream->putBe64(cgen_var_1247); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1248 = (uint64_t)(uintptr_t)pInfo; | 
|  | stream->putBe64(cgen_var_1248); | 
|  | if (pInfo) | 
|  | { | 
|  | stream->write((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetShaderInfoAMD readParams"); | 
|  | // WARNING PTR CHECK | 
|  | size_t* check_pInfoSize; | 
|  | check_pInfoSize = (size_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pInfoSize) | 
|  | { | 
|  | if (!(check_pInfoSize)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pInfoSize inconsistent between guest and host\n"); | 
|  | } | 
|  | (*pInfoSize) = (size_t)stream->getBe64(); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | void* check_pInfo; | 
|  | check_pInfo = (void*)(uintptr_t)stream->getBe64(); | 
|  | if (pInfo) | 
|  | { | 
|  | if (!(check_pInfo)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pInfo inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((void*)pInfo, (*(pInfoSize)) * sizeof(uint8_t)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetShaderInfoAMD returnUnmarshal"); | 
|  | VkResult vkGetShaderInfoAMD_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetShaderInfoAMD_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetShaderInfoAMD");; | 
|  | return vkGetShaderInfoAMD_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_AMD_shader_image_load_store_lod | 
|  | #endif | 
|  | #ifdef VK_IMG_format_pvrtc | 
|  | #endif | 
|  | #ifdef VK_NV_external_memory_capabilities | 
|  | VkResult VkEncoder::vkGetPhysicalDeviceExternalImageFormatPropertiesNV( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkFormat format, | 
|  | VkImageType type, | 
|  | VkImageTiling tiling, | 
|  | VkImageUsageFlags usage, | 
|  | VkImageCreateFlags flags, | 
|  | VkExternalMemoryHandleTypeFlagsNV externalHandleType, | 
|  | VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceExternalImageFormatPropertiesNV"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkFormat local_format; | 
|  | VkImageType local_type; | 
|  | VkImageTiling local_tiling; | 
|  | VkImageUsageFlags local_usage; | 
|  | VkImageCreateFlags local_flags; | 
|  | VkExternalMemoryHandleTypeFlagsNV local_externalHandleType; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_format = format; | 
|  | local_type = type; | 
|  | local_tiling = tiling; | 
|  | local_usage = usage; | 
|  | local_flags = flags; | 
|  | local_externalHandleType = externalHandleType; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1252; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1252, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1252, 1 * 8); | 
|  | countingStream->write((VkFormat*)&local_format, sizeof(VkFormat)); | 
|  | countingStream->write((VkImageType*)&local_type, sizeof(VkImageType)); | 
|  | countingStream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling)); | 
|  | countingStream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags)); | 
|  | countingStream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags)); | 
|  | countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV)); | 
|  | marshal_VkExternalImageFormatPropertiesNV(countingStream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = OP_vkGetPhysicalDeviceExternalImageFormatPropertiesNV; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1253; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1253, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1253, 1 * 8); | 
|  | stream->write((VkFormat*)&local_format, sizeof(VkFormat)); | 
|  | stream->write((VkImageType*)&local_type, sizeof(VkImageType)); | 
|  | stream->write((VkImageTiling*)&local_tiling, sizeof(VkImageTiling)); | 
|  | stream->write((VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags)); | 
|  | stream->write((VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags)); | 
|  | stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_externalHandleType, sizeof(VkExternalMemoryHandleTypeFlagsNV)); | 
|  | marshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV readParams"); | 
|  | unmarshal_VkExternalImageFormatPropertiesNV(stream, (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties)); | 
|  | if (pExternalImageFormatProperties) | 
|  | { | 
|  | transform_fromhost_VkExternalImageFormatPropertiesNV(mImpl->resources(), (VkExternalImageFormatPropertiesNV*)(pExternalImageFormatProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceExternalImageFormatPropertiesNV returnUnmarshal"); | 
|  | VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceExternalImageFormatPropertiesNV");; | 
|  | return vkGetPhysicalDeviceExternalImageFormatPropertiesNV_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_NV_external_memory | 
|  | #endif | 
|  | #ifdef VK_NV_external_memory_win32 | 
|  | VkResult VkEncoder::vkGetMemoryWin32HandleNV( | 
|  | VkDevice device, | 
|  | VkDeviceMemory memory, | 
|  | VkExternalMemoryHandleTypeFlagsNV handleType, | 
|  | HANDLE* pHandle) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV encode"); | 
|  | mImpl->log("start vkGetMemoryWin32HandleNV"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDeviceMemory local_memory; | 
|  | VkExternalMemoryHandleTypeFlagsNV local_handleType; | 
|  | local_device = device; | 
|  | local_memory = memory; | 
|  | local_handleType = handleType; | 
|  | mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0); | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1254; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1254, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1254, 1 * 8); | 
|  | uint64_t cgen_var_1255; | 
|  | countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1255, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1255, 1 * 8); | 
|  | countingStream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV)); | 
|  | countingStream->write((HANDLE*)pHandle, sizeof(HANDLE)); | 
|  | } | 
|  | uint32_t packetSize_vkGetMemoryWin32HandleNV = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetMemoryWin32HandleNV = OP_vkGetMemoryWin32HandleNV; | 
|  | stream->write(&opcode_vkGetMemoryWin32HandleNV, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetMemoryWin32HandleNV, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1256; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1256, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1256, 1 * 8); | 
|  | uint64_t cgen_var_1257; | 
|  | stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1257, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1257, 1 * 8); | 
|  | stream->write((VkExternalMemoryHandleTypeFlagsNV*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagsNV)); | 
|  | stream->write((HANDLE*)pHandle, sizeof(HANDLE)); | 
|  | AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV readParams"); | 
|  | stream->read((HANDLE*)pHandle, sizeof(HANDLE)); | 
|  | AEMU_SCOPED_TRACE("vkGetMemoryWin32HandleNV returnUnmarshal"); | 
|  | VkResult vkGetMemoryWin32HandleNV_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetMemoryWin32HandleNV_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetMemoryWin32HandleNV");; | 
|  | return vkGetMemoryWin32HandleNV_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_NV_win32_keyed_mutex | 
|  | #endif | 
|  | #ifdef VK_EXT_validation_flags | 
|  | #endif | 
|  | #ifdef VK_NN_vi_surface | 
|  | VkResult VkEncoder::vkCreateViSurfaceNN( | 
|  | VkInstance instance, | 
|  | const VkViSurfaceCreateInfoNN* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkSurfaceKHR* pSurface) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateViSurfaceNN encode"); | 
|  | mImpl->log("start vkCreateViSurfaceNN"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | VkViSurfaceCreateInfoNN* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_instance = instance; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkViSurfaceCreateInfoNN*)pool->alloc(sizeof(const VkViSurfaceCreateInfoNN)); | 
|  | deepcopy_VkViSurfaceCreateInfoNN(pool, pCreateInfo, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkViSurfaceCreateInfoNN(mImpl->resources(), (VkViSurfaceCreateInfoNN*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1258; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1258, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1258, 1 * 8); | 
|  | marshal_VkViSurfaceCreateInfoNN(countingStream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1259 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1259); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_1260; | 
|  | countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1260, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1260, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateViSurfaceNN = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateViSurfaceNN = OP_vkCreateViSurfaceNN; | 
|  | stream->write(&opcode_vkCreateViSurfaceNN, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateViSurfaceNN, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1261; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1261, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1261, 1 * 8); | 
|  | marshal_VkViSurfaceCreateInfoNN(stream, (VkViSurfaceCreateInfoNN*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1262 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1262); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_1263; | 
|  | stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1263, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1263, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateViSurfaceNN readParams"); | 
|  | uint64_t cgen_var_1264; | 
|  | stream->read((uint64_t*)&cgen_var_1264, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1264, (VkSurfaceKHR*)pSurface, 1); | 
|  | AEMU_SCOPED_TRACE("vkCreateViSurfaceNN returnUnmarshal"); | 
|  | VkResult vkCreateViSurfaceNN_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateViSurfaceNN_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateViSurfaceNN");; | 
|  | return vkCreateViSurfaceNN_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_EXT_shader_subgroup_ballot | 
|  | #endif | 
|  | #ifdef VK_EXT_shader_subgroup_vote | 
|  | #endif | 
|  | #ifdef VK_EXT_conditional_rendering | 
|  | void VkEncoder::vkCmdBeginConditionalRenderingEXT( | 
|  | VkCommandBuffer commandBuffer, | 
|  | const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT encode"); | 
|  | mImpl->log("start vkCmdBeginConditionalRenderingEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkConditionalRenderingBeginInfoEXT* local_pConditionalRenderingBegin; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_pConditionalRenderingBegin = nullptr; | 
|  | if (pConditionalRenderingBegin) | 
|  | { | 
|  | local_pConditionalRenderingBegin = (VkConditionalRenderingBeginInfoEXT*)pool->alloc(sizeof(const VkConditionalRenderingBeginInfoEXT)); | 
|  | deepcopy_VkConditionalRenderingBeginInfoEXT(pool, pConditionalRenderingBegin, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin)); | 
|  | } | 
|  | if (local_pConditionalRenderingBegin) | 
|  | { | 
|  | transform_tohost_VkConditionalRenderingBeginInfoEXT(mImpl->resources(), (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1265; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1265, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1265, 1 * 8); | 
|  | marshal_VkConditionalRenderingBeginInfoEXT(countingStream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdBeginConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdBeginConditionalRenderingEXT = OP_vkCmdBeginConditionalRenderingEXT; | 
|  | stream->write(&opcode_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdBeginConditionalRenderingEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1266; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1266, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1266, 1 * 8); | 
|  | marshal_VkConditionalRenderingBeginInfoEXT(stream, (VkConditionalRenderingBeginInfoEXT*)(local_pConditionalRenderingBegin)); | 
|  | AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdBeginConditionalRenderingEXT returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdBeginConditionalRenderingEXT");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdEndConditionalRenderingEXT( | 
|  | VkCommandBuffer commandBuffer) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT encode"); | 
|  | mImpl->log("start vkCmdEndConditionalRenderingEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | local_commandBuffer = commandBuffer; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1267; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1267, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1267, 1 * 8); | 
|  | } | 
|  | uint32_t packetSize_vkCmdEndConditionalRenderingEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdEndConditionalRenderingEXT = OP_vkCmdEndConditionalRenderingEXT; | 
|  | stream->write(&opcode_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdEndConditionalRenderingEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1268; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1268, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1268, 1 * 8); | 
|  | AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdEndConditionalRenderingEXT returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdEndConditionalRenderingEXT");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_NVX_device_generated_commands | 
|  | void VkEncoder::vkCmdProcessCommandsNVX( | 
|  | VkCommandBuffer commandBuffer, | 
|  | const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX encode"); | 
|  | mImpl->log("start vkCmdProcessCommandsNVX"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkCmdProcessCommandsInfoNVX* local_pProcessCommandsInfo; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_pProcessCommandsInfo = nullptr; | 
|  | if (pProcessCommandsInfo) | 
|  | { | 
|  | local_pProcessCommandsInfo = (VkCmdProcessCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdProcessCommandsInfoNVX)); | 
|  | deepcopy_VkCmdProcessCommandsInfoNVX(pool, pProcessCommandsInfo, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo)); | 
|  | } | 
|  | if (local_pProcessCommandsInfo) | 
|  | { | 
|  | transform_tohost_VkCmdProcessCommandsInfoNVX(mImpl->resources(), (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1269; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1269, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1269, 1 * 8); | 
|  | marshal_VkCmdProcessCommandsInfoNVX(countingStream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdProcessCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdProcessCommandsNVX = OP_vkCmdProcessCommandsNVX; | 
|  | stream->write(&opcode_vkCmdProcessCommandsNVX, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdProcessCommandsNVX, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1270; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1270, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1270, 1 * 8); | 
|  | marshal_VkCmdProcessCommandsInfoNVX(stream, (VkCmdProcessCommandsInfoNVX*)(local_pProcessCommandsInfo)); | 
|  | AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdProcessCommandsNVX returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdProcessCommandsNVX");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdReserveSpaceForCommandsNVX( | 
|  | VkCommandBuffer commandBuffer, | 
|  | const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX encode"); | 
|  | mImpl->log("start vkCmdReserveSpaceForCommandsNVX"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkCmdReserveSpaceForCommandsInfoNVX* local_pReserveSpaceInfo; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_pReserveSpaceInfo = nullptr; | 
|  | if (pReserveSpaceInfo) | 
|  | { | 
|  | local_pReserveSpaceInfo = (VkCmdReserveSpaceForCommandsInfoNVX*)pool->alloc(sizeof(const VkCmdReserveSpaceForCommandsInfoNVX)); | 
|  | deepcopy_VkCmdReserveSpaceForCommandsInfoNVX(pool, pReserveSpaceInfo, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo)); | 
|  | } | 
|  | if (local_pReserveSpaceInfo) | 
|  | { | 
|  | transform_tohost_VkCmdReserveSpaceForCommandsInfoNVX(mImpl->resources(), (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1271; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1271, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1271, 1 * 8); | 
|  | marshal_VkCmdReserveSpaceForCommandsInfoNVX(countingStream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdReserveSpaceForCommandsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdReserveSpaceForCommandsNVX = OP_vkCmdReserveSpaceForCommandsNVX; | 
|  | stream->write(&opcode_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdReserveSpaceForCommandsNVX, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1272; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1272, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1272, 1 * 8); | 
|  | marshal_VkCmdReserveSpaceForCommandsInfoNVX(stream, (VkCmdReserveSpaceForCommandsInfoNVX*)(local_pReserveSpaceInfo)); | 
|  | AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdReserveSpaceForCommandsNVX returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdReserveSpaceForCommandsNVX");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateIndirectCommandsLayoutNVX( | 
|  | VkDevice device, | 
|  | const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX encode"); | 
|  | mImpl->log("start vkCreateIndirectCommandsLayoutNVX"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkIndirectCommandsLayoutCreateInfoNVX* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkIndirectCommandsLayoutCreateInfoNVX*)pool->alloc(sizeof(const VkIndirectCommandsLayoutCreateInfoNVX)); | 
|  | deepcopy_VkIndirectCommandsLayoutCreateInfoNVX(pool, pCreateInfo, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkIndirectCommandsLayoutCreateInfoNVX(mImpl->resources(), (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1273; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1273, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1273, 1 * 8); | 
|  | marshal_VkIndirectCommandsLayoutCreateInfoNVX(countingStream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1274 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1274); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_1275; | 
|  | countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1275, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1275, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateIndirectCommandsLayoutNVX = OP_vkCreateIndirectCommandsLayoutNVX; | 
|  | stream->write(&opcode_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateIndirectCommandsLayoutNVX, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1276; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1276, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1276, 1 * 8); | 
|  | marshal_VkIndirectCommandsLayoutCreateInfoNVX(stream, (VkIndirectCommandsLayoutCreateInfoNVX*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1277 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1277); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_1278; | 
|  | stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(pIndirectCommandsLayout, &cgen_var_1278, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1278, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_1279; | 
|  | stream->read((uint64_t*)&cgen_var_1279, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkIndirectCommandsLayoutNVX(&cgen_var_1279, (VkIndirectCommandsLayoutNVX*)pIndirectCommandsLayout, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateIndirectCommandsLayoutNVX returnUnmarshal"); | 
|  | VkResult vkCreateIndirectCommandsLayoutNVX_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateIndirectCommandsLayoutNVX_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateIndirectCommandsLayoutNVX");; | 
|  | return vkCreateIndirectCommandsLayoutNVX_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyIndirectCommandsLayoutNVX( | 
|  | VkDevice device, | 
|  | VkIndirectCommandsLayoutNVX indirectCommandsLayout, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX encode"); | 
|  | mImpl->log("start vkDestroyIndirectCommandsLayoutNVX"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkIndirectCommandsLayoutNVX local_indirectCommandsLayout; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_indirectCommandsLayout = indirectCommandsLayout; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1280; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1280, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1280, 1 * 8); | 
|  | uint64_t cgen_var_1281; | 
|  | countingStream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1281, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1281, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1282 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1282); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyIndirectCommandsLayoutNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyIndirectCommandsLayoutNVX = OP_vkDestroyIndirectCommandsLayoutNVX; | 
|  | stream->write(&opcode_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyIndirectCommandsLayoutNVX, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1283; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1283, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1283, 1 * 8); | 
|  | uint64_t cgen_var_1284; | 
|  | stream->handleMapping()->mapHandles_VkIndirectCommandsLayoutNVX_u64(&local_indirectCommandsLayout, &cgen_var_1284, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1284, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1285 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1285); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyIndirectCommandsLayoutNVX returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkIndirectCommandsLayoutNVX((VkIndirectCommandsLayoutNVX*)&indirectCommandsLayout); | 
|  | mImpl->log("finish vkDestroyIndirectCommandsLayoutNVX");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateObjectTableNVX( | 
|  | VkDevice device, | 
|  | const VkObjectTableCreateInfoNVX* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkObjectTableNVX* pObjectTable) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateObjectTableNVX encode"); | 
|  | mImpl->log("start vkCreateObjectTableNVX"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkObjectTableCreateInfoNVX* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkObjectTableCreateInfoNVX*)pool->alloc(sizeof(const VkObjectTableCreateInfoNVX)); | 
|  | deepcopy_VkObjectTableCreateInfoNVX(pool, pCreateInfo, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkObjectTableCreateInfoNVX(mImpl->resources(), (VkObjectTableCreateInfoNVX*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1286; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1286, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1286, 1 * 8); | 
|  | marshal_VkObjectTableCreateInfoNVX(countingStream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1287 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1287); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_1288; | 
|  | countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1288, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1288, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateObjectTableNVX = OP_vkCreateObjectTableNVX; | 
|  | stream->write(&opcode_vkCreateObjectTableNVX, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateObjectTableNVX, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1289; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1289, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1289, 1 * 8); | 
|  | marshal_VkObjectTableCreateInfoNVX(stream, (VkObjectTableCreateInfoNVX*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1290 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1290); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_1291; | 
|  | stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(pObjectTable, &cgen_var_1291, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1291, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateObjectTableNVX readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_1292; | 
|  | stream->read((uint64_t*)&cgen_var_1292, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkObjectTableNVX(&cgen_var_1292, (VkObjectTableNVX*)pObjectTable, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateObjectTableNVX returnUnmarshal"); | 
|  | VkResult vkCreateObjectTableNVX_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateObjectTableNVX_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateObjectTableNVX");; | 
|  | return vkCreateObjectTableNVX_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyObjectTableNVX( | 
|  | VkDevice device, | 
|  | VkObjectTableNVX objectTable, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX encode"); | 
|  | mImpl->log("start vkDestroyObjectTableNVX"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkObjectTableNVX local_objectTable; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_objectTable = objectTable; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1293; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1293, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1293, 1 * 8); | 
|  | uint64_t cgen_var_1294; | 
|  | countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1294, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1294, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1295 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1295); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyObjectTableNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyObjectTableNVX = OP_vkDestroyObjectTableNVX; | 
|  | stream->write(&opcode_vkDestroyObjectTableNVX, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyObjectTableNVX, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1296; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1296, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1296, 1 * 8); | 
|  | uint64_t cgen_var_1297; | 
|  | stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1297, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1297, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1298 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1298); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyObjectTableNVX returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkObjectTableNVX((VkObjectTableNVX*)&objectTable); | 
|  | mImpl->log("finish vkDestroyObjectTableNVX");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkRegisterObjectsNVX( | 
|  | VkDevice device, | 
|  | VkObjectTableNVX objectTable, | 
|  | uint32_t objectCount, | 
|  | const VkObjectTableEntryNVX* const* ppObjectTableEntries, | 
|  | const uint32_t* pObjectIndices) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkRegisterObjectsNVX encode"); | 
|  | mImpl->log("start vkRegisterObjectsNVX"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkObjectTableNVX local_objectTable; | 
|  | uint32_t local_objectCount; | 
|  | VkObjectTableEntryNVX** local_ppObjectTableEntries; | 
|  | uint32_t* local_pObjectIndices; | 
|  | local_device = device; | 
|  | local_objectTable = objectTable; | 
|  | local_objectCount = objectCount; | 
|  | (void)ppObjectTableEntries; | 
|  | local_pObjectIndices = nullptr; | 
|  | if (pObjectIndices) | 
|  | { | 
|  | local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t)); | 
|  | } | 
|  | (void)local_ppObjectTableEntries; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1299; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1299, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1299, 1 * 8); | 
|  | uint64_t cgen_var_1300; | 
|  | countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1300, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1300, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t)); | 
|  | (void)local_ppObjectTableEntries; | 
|  | countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkRegisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkRegisterObjectsNVX = OP_vkRegisterObjectsNVX; | 
|  | stream->write(&opcode_vkRegisterObjectsNVX, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkRegisterObjectsNVX, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1301; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1301, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1301, 1 * 8); | 
|  | uint64_t cgen_var_1302; | 
|  | stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1302, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1302, 1 * 8); | 
|  | stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t)); | 
|  | (void)local_ppObjectTableEntries; | 
|  | stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkRegisterObjectsNVX readParams"); | 
|  | AEMU_SCOPED_TRACE("vkRegisterObjectsNVX returnUnmarshal"); | 
|  | VkResult vkRegisterObjectsNVX_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkRegisterObjectsNVX_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkRegisterObjectsNVX");; | 
|  | return vkRegisterObjectsNVX_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkUnregisterObjectsNVX( | 
|  | VkDevice device, | 
|  | VkObjectTableNVX objectTable, | 
|  | uint32_t objectCount, | 
|  | const VkObjectEntryTypeNVX* pObjectEntryTypes, | 
|  | const uint32_t* pObjectIndices) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX encode"); | 
|  | mImpl->log("start vkUnregisterObjectsNVX"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkObjectTableNVX local_objectTable; | 
|  | uint32_t local_objectCount; | 
|  | VkObjectEntryTypeNVX* local_pObjectEntryTypes; | 
|  | uint32_t* local_pObjectIndices; | 
|  | local_device = device; | 
|  | local_objectTable = objectTable; | 
|  | local_objectCount = objectCount; | 
|  | local_pObjectEntryTypes = nullptr; | 
|  | if (pObjectEntryTypes) | 
|  | { | 
|  | local_pObjectEntryTypes = (VkObjectEntryTypeNVX*)pool->dupArray(pObjectEntryTypes, ((objectCount)) * sizeof(const VkObjectEntryTypeNVX)); | 
|  | } | 
|  | local_pObjectIndices = nullptr; | 
|  | if (pObjectIndices) | 
|  | { | 
|  | local_pObjectIndices = (uint32_t*)pool->dupArray(pObjectIndices, ((objectCount)) * sizeof(const uint32_t)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1303; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1303, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1303, 1 * 8); | 
|  | uint64_t cgen_var_1304; | 
|  | countingStream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1304, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1304, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_objectCount, sizeof(uint32_t)); | 
|  | countingStream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX)); | 
|  | countingStream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkUnregisterObjectsNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkUnregisterObjectsNVX = OP_vkUnregisterObjectsNVX; | 
|  | stream->write(&opcode_vkUnregisterObjectsNVX, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkUnregisterObjectsNVX, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1305; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1305, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1305, 1 * 8); | 
|  | uint64_t cgen_var_1306; | 
|  | stream->handleMapping()->mapHandles_VkObjectTableNVX_u64(&local_objectTable, &cgen_var_1306, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1306, 1 * 8); | 
|  | stream->write((uint32_t*)&local_objectCount, sizeof(uint32_t)); | 
|  | stream->write((VkObjectEntryTypeNVX*)local_pObjectEntryTypes, ((objectCount)) * sizeof(VkObjectEntryTypeNVX)); | 
|  | stream->write((uint32_t*)local_pObjectIndices, ((objectCount)) * sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX readParams"); | 
|  | AEMU_SCOPED_TRACE("vkUnregisterObjectsNVX returnUnmarshal"); | 
|  | VkResult vkUnregisterObjectsNVX_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkUnregisterObjectsNVX_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkUnregisterObjectsNVX");; | 
|  | return vkUnregisterObjectsNVX_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, | 
|  | VkDeviceGeneratedCommandsLimitsNVX* pLimits) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | local_physicalDevice = physicalDevice; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1307; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1307, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1307, 1 * 8); | 
|  | marshal_VkDeviceGeneratedCommandsFeaturesNVX(countingStream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures)); | 
|  | marshal_VkDeviceGeneratedCommandsLimitsNVX(countingStream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = OP_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1308; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1308, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1308, 1 * 8); | 
|  | marshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures)); | 
|  | marshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX readParams"); | 
|  | unmarshal_VkDeviceGeneratedCommandsFeaturesNVX(stream, (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures)); | 
|  | if (pFeatures) | 
|  | { | 
|  | transform_fromhost_VkDeviceGeneratedCommandsFeaturesNVX(mImpl->resources(), (VkDeviceGeneratedCommandsFeaturesNVX*)(pFeatures)); | 
|  | } | 
|  | unmarshal_VkDeviceGeneratedCommandsLimitsNVX(stream, (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits)); | 
|  | if (pLimits) | 
|  | { | 
|  | transform_fromhost_VkDeviceGeneratedCommandsLimitsNVX(mImpl->resources(), (VkDeviceGeneratedCommandsLimitsNVX*)(pLimits)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_NV_clip_space_w_scaling | 
|  | void VkEncoder::vkCmdSetViewportWScalingNV( | 
|  | VkCommandBuffer commandBuffer, | 
|  | uint32_t firstViewport, | 
|  | uint32_t viewportCount, | 
|  | const VkViewportWScalingNV* pViewportWScalings) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV encode"); | 
|  | mImpl->log("start vkCmdSetViewportWScalingNV"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | uint32_t local_firstViewport; | 
|  | uint32_t local_viewportCount; | 
|  | VkViewportWScalingNV* local_pViewportWScalings; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_firstViewport = firstViewport; | 
|  | local_viewportCount = viewportCount; | 
|  | local_pViewportWScalings = nullptr; | 
|  | if (pViewportWScalings) | 
|  | { | 
|  | local_pViewportWScalings = (VkViewportWScalingNV*)pool->alloc(((viewportCount)) * sizeof(const VkViewportWScalingNV)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i) | 
|  | { | 
|  | deepcopy_VkViewportWScalingNV(pool, pViewportWScalings + i, (VkViewportWScalingNV*)(local_pViewportWScalings + i)); | 
|  | } | 
|  | } | 
|  | if (local_pViewportWScalings) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkViewportWScalingNV(mImpl->resources(), (VkViewportWScalingNV*)(local_pViewportWScalings + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1309; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1309, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1309, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i) | 
|  | { | 
|  | marshal_VkViewportWScalingNV(countingStream, (VkViewportWScalingNV*)(local_pViewportWScalings + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkCmdSetViewportWScalingNV = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdSetViewportWScalingNV = OP_vkCmdSetViewportWScalingNV; | 
|  | stream->write(&opcode_vkCmdSetViewportWScalingNV, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdSetViewportWScalingNV, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1310; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1310, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1310, 1 * 8); | 
|  | stream->write((uint32_t*)&local_firstViewport, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_viewportCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i) | 
|  | { | 
|  | marshal_VkViewportWScalingNV(stream, (VkViewportWScalingNV*)(local_pViewportWScalings + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetViewportWScalingNV returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdSetViewportWScalingNV");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_EXT_direct_mode_display | 
|  | VkResult VkEncoder::vkReleaseDisplayEXT( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkDisplayKHR display) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkReleaseDisplayEXT encode"); | 
|  | mImpl->log("start vkReleaseDisplayEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkDisplayKHR local_display; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_display = display; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1311; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1311, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1311, 1 * 8); | 
|  | uint64_t cgen_var_1312; | 
|  | countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1312, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1312, 1 * 8); | 
|  | } | 
|  | uint32_t packetSize_vkReleaseDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkReleaseDisplayEXT = OP_vkReleaseDisplayEXT; | 
|  | stream->write(&opcode_vkReleaseDisplayEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkReleaseDisplayEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1313; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1313, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1313, 1 * 8); | 
|  | uint64_t cgen_var_1314; | 
|  | stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1314, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1314, 1 * 8); | 
|  | AEMU_SCOPED_TRACE("vkReleaseDisplayEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkReleaseDisplayEXT returnUnmarshal"); | 
|  | VkResult vkReleaseDisplayEXT_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkReleaseDisplayEXT_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkReleaseDisplayEXT");; | 
|  | return vkReleaseDisplayEXT_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_EXT_acquire_xlib_display | 
|  | VkResult VkEncoder::vkAcquireXlibDisplayEXT( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | Display* dpy, | 
|  | VkDisplayKHR display) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT encode"); | 
|  | mImpl->log("start vkAcquireXlibDisplayEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkDisplayKHR local_display; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_display = display; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1315; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1315, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1315, 1 * 8); | 
|  | countingStream->write((Display*)dpy, sizeof(Display)); | 
|  | uint64_t cgen_var_1316; | 
|  | countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1316, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1316, 1 * 8); | 
|  | } | 
|  | uint32_t packetSize_vkAcquireXlibDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkAcquireXlibDisplayEXT = OP_vkAcquireXlibDisplayEXT; | 
|  | stream->write(&opcode_vkAcquireXlibDisplayEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkAcquireXlibDisplayEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1317; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1317, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1317, 1 * 8); | 
|  | stream->write((Display*)dpy, sizeof(Display)); | 
|  | uint64_t cgen_var_1318; | 
|  | stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1318, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1318, 1 * 8); | 
|  | AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT readParams"); | 
|  | stream->read((Display*)dpy, sizeof(Display)); | 
|  | AEMU_SCOPED_TRACE("vkAcquireXlibDisplayEXT returnUnmarshal"); | 
|  | VkResult vkAcquireXlibDisplayEXT_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkAcquireXlibDisplayEXT_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkAcquireXlibDisplayEXT");; | 
|  | return vkAcquireXlibDisplayEXT_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetRandROutputDisplayEXT( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | Display* dpy, | 
|  | RROutput rrOutput, | 
|  | VkDisplayKHR* pDisplay) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT encode"); | 
|  | mImpl->log("start vkGetRandROutputDisplayEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | RROutput local_rrOutput; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_rrOutput = rrOutput; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1319; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1319, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1319, 1 * 8); | 
|  | countingStream->write((Display*)dpy, sizeof(Display)); | 
|  | countingStream->write((RROutput*)&local_rrOutput, sizeof(RROutput)); | 
|  | uint64_t cgen_var_1320; | 
|  | countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1320, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1320, 8); | 
|  | } | 
|  | uint32_t packetSize_vkGetRandROutputDisplayEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetRandROutputDisplayEXT = OP_vkGetRandROutputDisplayEXT; | 
|  | stream->write(&opcode_vkGetRandROutputDisplayEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetRandROutputDisplayEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1321; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1321, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1321, 1 * 8); | 
|  | stream->write((Display*)dpy, sizeof(Display)); | 
|  | stream->write((RROutput*)&local_rrOutput, sizeof(RROutput)); | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_1322; | 
|  | stream->handleMapping()->mapHandles_VkDisplayKHR_u64(pDisplay, &cgen_var_1322, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1322, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT readParams"); | 
|  | stream->read((Display*)dpy, sizeof(Display)); | 
|  | uint64_t cgen_var_1323; | 
|  | stream->read((uint64_t*)&cgen_var_1323, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkDisplayKHR(&cgen_var_1323, (VkDisplayKHR*)pDisplay, 1); | 
|  | AEMU_SCOPED_TRACE("vkGetRandROutputDisplayEXT returnUnmarshal"); | 
|  | VkResult vkGetRandROutputDisplayEXT_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetRandROutputDisplayEXT_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetRandROutputDisplayEXT");; | 
|  | return vkGetRandROutputDisplayEXT_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_EXT_display_surface_counter | 
|  | VkResult VkEncoder::vkGetPhysicalDeviceSurfaceCapabilities2EXT( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkSurfaceKHR surface, | 
|  | VkSurfaceCapabilities2EXT* pSurfaceCapabilities) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceSurfaceCapabilities2EXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkSurfaceKHR local_surface; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_surface = surface; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1324; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1324, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1324, 1 * 8); | 
|  | uint64_t cgen_var_1325; | 
|  | countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1325, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1325, 1 * 8); | 
|  | marshal_VkSurfaceCapabilities2EXT(countingStream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT = OP_vkGetPhysicalDeviceSurfaceCapabilities2EXT; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceSurfaceCapabilities2EXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1326; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1326, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1326, 1 * 8); | 
|  | uint64_t cgen_var_1327; | 
|  | stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(&local_surface, &cgen_var_1327, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1327, 1 * 8); | 
|  | marshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT readParams"); | 
|  | unmarshal_VkSurfaceCapabilities2EXT(stream, (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities)); | 
|  | if (pSurfaceCapabilities) | 
|  | { | 
|  | transform_fromhost_VkSurfaceCapabilities2EXT(mImpl->resources(), (VkSurfaceCapabilities2EXT*)(pSurfaceCapabilities)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceSurfaceCapabilities2EXT returnUnmarshal"); | 
|  | VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPhysicalDeviceSurfaceCapabilities2EXT");; | 
|  | return vkGetPhysicalDeviceSurfaceCapabilities2EXT_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_EXT_display_control | 
|  | VkResult VkEncoder::vkDisplayPowerControlEXT( | 
|  | VkDevice device, | 
|  | VkDisplayKHR display, | 
|  | const VkDisplayPowerInfoEXT* pDisplayPowerInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT encode"); | 
|  | mImpl->log("start vkDisplayPowerControlEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDisplayKHR local_display; | 
|  | VkDisplayPowerInfoEXT* local_pDisplayPowerInfo; | 
|  | local_device = device; | 
|  | local_display = display; | 
|  | local_pDisplayPowerInfo = nullptr; | 
|  | if (pDisplayPowerInfo) | 
|  | { | 
|  | local_pDisplayPowerInfo = (VkDisplayPowerInfoEXT*)pool->alloc(sizeof(const VkDisplayPowerInfoEXT)); | 
|  | deepcopy_VkDisplayPowerInfoEXT(pool, pDisplayPowerInfo, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo)); | 
|  | } | 
|  | if (local_pDisplayPowerInfo) | 
|  | { | 
|  | transform_tohost_VkDisplayPowerInfoEXT(mImpl->resources(), (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1328; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1328, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1328, 1 * 8); | 
|  | uint64_t cgen_var_1329; | 
|  | countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1329, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1329, 1 * 8); | 
|  | marshal_VkDisplayPowerInfoEXT(countingStream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkDisplayPowerControlEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDisplayPowerControlEXT = OP_vkDisplayPowerControlEXT; | 
|  | stream->write(&opcode_vkDisplayPowerControlEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDisplayPowerControlEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1330; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1330, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1330, 1 * 8); | 
|  | uint64_t cgen_var_1331; | 
|  | stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1331, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1331, 1 * 8); | 
|  | marshal_VkDisplayPowerInfoEXT(stream, (VkDisplayPowerInfoEXT*)(local_pDisplayPowerInfo)); | 
|  | AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDisplayPowerControlEXT returnUnmarshal"); | 
|  | VkResult vkDisplayPowerControlEXT_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkDisplayPowerControlEXT_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkDisplayPowerControlEXT");; | 
|  | return vkDisplayPowerControlEXT_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkRegisterDeviceEventEXT( | 
|  | VkDevice device, | 
|  | const VkDeviceEventInfoEXT* pDeviceEventInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkFence* pFence) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT encode"); | 
|  | mImpl->log("start vkRegisterDeviceEventEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDeviceEventInfoEXT* local_pDeviceEventInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pDeviceEventInfo = nullptr; | 
|  | if (pDeviceEventInfo) | 
|  | { | 
|  | local_pDeviceEventInfo = (VkDeviceEventInfoEXT*)pool->alloc(sizeof(const VkDeviceEventInfoEXT)); | 
|  | deepcopy_VkDeviceEventInfoEXT(pool, pDeviceEventInfo, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pDeviceEventInfo) | 
|  | { | 
|  | transform_tohost_VkDeviceEventInfoEXT(mImpl->resources(), (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1332; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1332, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1332, 1 * 8); | 
|  | marshal_VkDeviceEventInfoEXT(countingStream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1333 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1333); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_1334; | 
|  | countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1334, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1334, 8); | 
|  | } | 
|  | uint32_t packetSize_vkRegisterDeviceEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkRegisterDeviceEventEXT = OP_vkRegisterDeviceEventEXT; | 
|  | stream->write(&opcode_vkRegisterDeviceEventEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkRegisterDeviceEventEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1335; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1335, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1335, 1 * 8); | 
|  | marshal_VkDeviceEventInfoEXT(stream, (VkDeviceEventInfoEXT*)(local_pDeviceEventInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1336 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1336); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_1337; | 
|  | stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1337, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1337, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT readParams"); | 
|  | uint64_t cgen_var_1338; | 
|  | stream->read((uint64_t*)&cgen_var_1338, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1338, (VkFence*)pFence, 1); | 
|  | AEMU_SCOPED_TRACE("vkRegisterDeviceEventEXT returnUnmarshal"); | 
|  | VkResult vkRegisterDeviceEventEXT_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkRegisterDeviceEventEXT_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkRegisterDeviceEventEXT");; | 
|  | return vkRegisterDeviceEventEXT_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkRegisterDisplayEventEXT( | 
|  | VkDevice device, | 
|  | VkDisplayKHR display, | 
|  | const VkDisplayEventInfoEXT* pDisplayEventInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkFence* pFence) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT encode"); | 
|  | mImpl->log("start vkRegisterDisplayEventEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDisplayKHR local_display; | 
|  | VkDisplayEventInfoEXT* local_pDisplayEventInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_display = display; | 
|  | local_pDisplayEventInfo = nullptr; | 
|  | if (pDisplayEventInfo) | 
|  | { | 
|  | local_pDisplayEventInfo = (VkDisplayEventInfoEXT*)pool->alloc(sizeof(const VkDisplayEventInfoEXT)); | 
|  | deepcopy_VkDisplayEventInfoEXT(pool, pDisplayEventInfo, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pDisplayEventInfo) | 
|  | { | 
|  | transform_tohost_VkDisplayEventInfoEXT(mImpl->resources(), (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1339; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1339, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1339, 1 * 8); | 
|  | uint64_t cgen_var_1340; | 
|  | countingStream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1340, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1340, 1 * 8); | 
|  | marshal_VkDisplayEventInfoEXT(countingStream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1341 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1341); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_1342; | 
|  | countingStream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1342, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1342, 8); | 
|  | } | 
|  | uint32_t packetSize_vkRegisterDisplayEventEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkRegisterDisplayEventEXT = OP_vkRegisterDisplayEventEXT; | 
|  | stream->write(&opcode_vkRegisterDisplayEventEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkRegisterDisplayEventEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1343; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1343, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1343, 1 * 8); | 
|  | uint64_t cgen_var_1344; | 
|  | stream->handleMapping()->mapHandles_VkDisplayKHR_u64(&local_display, &cgen_var_1344, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1344, 1 * 8); | 
|  | marshal_VkDisplayEventInfoEXT(stream, (VkDisplayEventInfoEXT*)(local_pDisplayEventInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1345 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1345); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_1346; | 
|  | stream->handleMapping()->mapHandles_VkFence_u64(pFence, &cgen_var_1346, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1346, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT readParams"); | 
|  | uint64_t cgen_var_1347; | 
|  | stream->read((uint64_t*)&cgen_var_1347, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_1347, (VkFence*)pFence, 1); | 
|  | AEMU_SCOPED_TRACE("vkRegisterDisplayEventEXT returnUnmarshal"); | 
|  | VkResult vkRegisterDisplayEventEXT_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkRegisterDisplayEventEXT_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkRegisterDisplayEventEXT");; | 
|  | return vkRegisterDisplayEventEXT_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetSwapchainCounterEXT( | 
|  | VkDevice device, | 
|  | VkSwapchainKHR swapchain, | 
|  | VkSurfaceCounterFlagBitsEXT counter, | 
|  | uint64_t* pCounterValue) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT encode"); | 
|  | mImpl->log("start vkGetSwapchainCounterEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkSwapchainKHR local_swapchain; | 
|  | VkSurfaceCounterFlagBitsEXT local_counter; | 
|  | local_device = device; | 
|  | local_swapchain = swapchain; | 
|  | local_counter = counter; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1348; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1348, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1348, 1 * 8); | 
|  | uint64_t cgen_var_1349; | 
|  | countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1349, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1349, 1 * 8); | 
|  | countingStream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT)); | 
|  | countingStream->write((uint64_t*)pCounterValue, sizeof(uint64_t)); | 
|  | } | 
|  | uint32_t packetSize_vkGetSwapchainCounterEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetSwapchainCounterEXT = OP_vkGetSwapchainCounterEXT; | 
|  | stream->write(&opcode_vkGetSwapchainCounterEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetSwapchainCounterEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1350; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1350, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1350, 1 * 8); | 
|  | uint64_t cgen_var_1351; | 
|  | stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1351, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1351, 1 * 8); | 
|  | stream->write((VkSurfaceCounterFlagBitsEXT*)&local_counter, sizeof(VkSurfaceCounterFlagBitsEXT)); | 
|  | stream->write((uint64_t*)pCounterValue, sizeof(uint64_t)); | 
|  | AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT readParams"); | 
|  | stream->read((uint64_t*)pCounterValue, sizeof(uint64_t)); | 
|  | AEMU_SCOPED_TRACE("vkGetSwapchainCounterEXT returnUnmarshal"); | 
|  | VkResult vkGetSwapchainCounterEXT_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetSwapchainCounterEXT_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetSwapchainCounterEXT");; | 
|  | return vkGetSwapchainCounterEXT_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_GOOGLE_display_timing | 
|  | VkResult VkEncoder::vkGetRefreshCycleDurationGOOGLE( | 
|  | VkDevice device, | 
|  | VkSwapchainKHR swapchain, | 
|  | VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE encode"); | 
|  | mImpl->log("start vkGetRefreshCycleDurationGOOGLE"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkSwapchainKHR local_swapchain; | 
|  | local_device = device; | 
|  | local_swapchain = swapchain; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1352; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1352, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1352, 1 * 8); | 
|  | uint64_t cgen_var_1353; | 
|  | countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1353, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1353, 1 * 8); | 
|  | marshal_VkRefreshCycleDurationGOOGLE(countingStream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetRefreshCycleDurationGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetRefreshCycleDurationGOOGLE = OP_vkGetRefreshCycleDurationGOOGLE; | 
|  | stream->write(&opcode_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetRefreshCycleDurationGOOGLE, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1354; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1354, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1354, 1 * 8); | 
|  | uint64_t cgen_var_1355; | 
|  | stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1355, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1355, 1 * 8); | 
|  | marshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE readParams"); | 
|  | unmarshal_VkRefreshCycleDurationGOOGLE(stream, (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties)); | 
|  | if (pDisplayTimingProperties) | 
|  | { | 
|  | transform_fromhost_VkRefreshCycleDurationGOOGLE(mImpl->resources(), (VkRefreshCycleDurationGOOGLE*)(pDisplayTimingProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetRefreshCycleDurationGOOGLE returnUnmarshal"); | 
|  | VkResult vkGetRefreshCycleDurationGOOGLE_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetRefreshCycleDurationGOOGLE_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetRefreshCycleDurationGOOGLE");; | 
|  | return vkGetRefreshCycleDurationGOOGLE_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetPastPresentationTimingGOOGLE( | 
|  | VkDevice device, | 
|  | VkSwapchainKHR swapchain, | 
|  | uint32_t* pPresentationTimingCount, | 
|  | VkPastPresentationTimingGOOGLE* pPresentationTimings) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE encode"); | 
|  | mImpl->log("start vkGetPastPresentationTimingGOOGLE"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkSwapchainKHR local_swapchain; | 
|  | local_device = device; | 
|  | local_swapchain = swapchain; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1356; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1356, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1356, 1 * 8); | 
|  | uint64_t cgen_var_1357; | 
|  | countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1357, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1357, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1358 = (uint64_t)(uintptr_t)pPresentationTimingCount; | 
|  | countingStream->putBe64(cgen_var_1358); | 
|  | if (pPresentationTimingCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1359 = (uint64_t)(uintptr_t)pPresentationTimings; | 
|  | countingStream->putBe64(cgen_var_1359); | 
|  | if (pPresentationTimings) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i) | 
|  | { | 
|  | marshal_VkPastPresentationTimingGOOGLE(countingStream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetPastPresentationTimingGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPastPresentationTimingGOOGLE = OP_vkGetPastPresentationTimingGOOGLE; | 
|  | stream->write(&opcode_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPastPresentationTimingGOOGLE, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1360; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1360, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1360, 1 * 8); | 
|  | uint64_t cgen_var_1361; | 
|  | stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(&local_swapchain, &cgen_var_1361, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1361, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1362 = (uint64_t)(uintptr_t)pPresentationTimingCount; | 
|  | stream->putBe64(cgen_var_1362); | 
|  | if (pPresentationTimingCount) | 
|  | { | 
|  | stream->write((uint32_t*)pPresentationTimingCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1363 = (uint64_t)(uintptr_t)pPresentationTimings; | 
|  | stream->putBe64(cgen_var_1363); | 
|  | if (pPresentationTimings) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i) | 
|  | { | 
|  | marshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pPresentationTimingCount; | 
|  | check_pPresentationTimingCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pPresentationTimingCount) | 
|  | { | 
|  | if (!(check_pPresentationTimingCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPresentationTimingCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pPresentationTimingCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkPastPresentationTimingGOOGLE* check_pPresentationTimings; | 
|  | check_pPresentationTimings = (VkPastPresentationTimingGOOGLE*)(uintptr_t)stream->getBe64(); | 
|  | if (pPresentationTimings) | 
|  | { | 
|  | if (!(check_pPresentationTimings)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pPresentationTimings inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i) | 
|  | { | 
|  | unmarshal_VkPastPresentationTimingGOOGLE(stream, (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i)); | 
|  | } | 
|  | } | 
|  | if (pPresentationTimings) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pPresentationTimingCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkPastPresentationTimingGOOGLE(mImpl->resources(), (VkPastPresentationTimingGOOGLE*)(pPresentationTimings + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPastPresentationTimingGOOGLE returnUnmarshal"); | 
|  | VkResult vkGetPastPresentationTimingGOOGLE_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetPastPresentationTimingGOOGLE_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetPastPresentationTimingGOOGLE");; | 
|  | return vkGetPastPresentationTimingGOOGLE_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_NV_sample_mask_override_coverage | 
|  | #endif | 
|  | #ifdef VK_NV_geometry_shader_passthrough | 
|  | #endif | 
|  | #ifdef VK_NV_viewport_array2 | 
|  | #endif | 
|  | #ifdef VK_NVX_multiview_per_view_attributes | 
|  | #endif | 
|  | #ifdef VK_NV_viewport_swizzle | 
|  | #endif | 
|  | #ifdef VK_EXT_discard_rectangles | 
|  | void VkEncoder::vkCmdSetDiscardRectangleEXT( | 
|  | VkCommandBuffer commandBuffer, | 
|  | uint32_t firstDiscardRectangle, | 
|  | uint32_t discardRectangleCount, | 
|  | const VkRect2D* pDiscardRectangles) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT encode"); | 
|  | mImpl->log("start vkCmdSetDiscardRectangleEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | uint32_t local_firstDiscardRectangle; | 
|  | uint32_t local_discardRectangleCount; | 
|  | VkRect2D* local_pDiscardRectangles; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_firstDiscardRectangle = firstDiscardRectangle; | 
|  | local_discardRectangleCount = discardRectangleCount; | 
|  | local_pDiscardRectangles = nullptr; | 
|  | if (pDiscardRectangles) | 
|  | { | 
|  | local_pDiscardRectangles = (VkRect2D*)pool->alloc(((discardRectangleCount)) * sizeof(const VkRect2D)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i) | 
|  | { | 
|  | deepcopy_VkRect2D(pool, pDiscardRectangles + i, (VkRect2D*)(local_pDiscardRectangles + i)); | 
|  | } | 
|  | } | 
|  | if (local_pDiscardRectangles) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkRect2D(mImpl->resources(), (VkRect2D*)(local_pDiscardRectangles + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1366; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1366, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1366, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i) | 
|  | { | 
|  | marshal_VkRect2D(countingStream, (VkRect2D*)(local_pDiscardRectangles + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkCmdSetDiscardRectangleEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdSetDiscardRectangleEXT = OP_vkCmdSetDiscardRectangleEXT; | 
|  | stream->write(&opcode_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdSetDiscardRectangleEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1367; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1367, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1367, 1 * 8); | 
|  | stream->write((uint32_t*)&local_firstDiscardRectangle, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_discardRectangleCount, sizeof(uint32_t)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((discardRectangleCount)); ++i) | 
|  | { | 
|  | marshal_VkRect2D(stream, (VkRect2D*)(local_pDiscardRectangles + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetDiscardRectangleEXT returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdSetDiscardRectangleEXT");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_EXT_conservative_rasterization | 
|  | #endif | 
|  | #ifdef VK_EXT_swapchain_colorspace | 
|  | #endif | 
|  | #ifdef VK_EXT_hdr_metadata | 
|  | void VkEncoder::vkSetHdrMetadataEXT( | 
|  | VkDevice device, | 
|  | uint32_t swapchainCount, | 
|  | const VkSwapchainKHR* pSwapchains, | 
|  | const VkHdrMetadataEXT* pMetadata) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT encode"); | 
|  | mImpl->log("start vkSetHdrMetadataEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | uint32_t local_swapchainCount; | 
|  | VkSwapchainKHR* local_pSwapchains; | 
|  | VkHdrMetadataEXT* local_pMetadata; | 
|  | local_device = device; | 
|  | local_swapchainCount = swapchainCount; | 
|  | local_pSwapchains = nullptr; | 
|  | if (pSwapchains) | 
|  | { | 
|  | local_pSwapchains = (VkSwapchainKHR*)pool->dupArray(pSwapchains, ((swapchainCount)) * sizeof(const VkSwapchainKHR)); | 
|  | } | 
|  | local_pMetadata = nullptr; | 
|  | if (pMetadata) | 
|  | { | 
|  | local_pMetadata = (VkHdrMetadataEXT*)pool->alloc(((swapchainCount)) * sizeof(const VkHdrMetadataEXT)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i) | 
|  | { | 
|  | deepcopy_VkHdrMetadataEXT(pool, pMetadata + i, (VkHdrMetadataEXT*)(local_pMetadata + i)); | 
|  | } | 
|  | } | 
|  | if (local_pMetadata) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkHdrMetadataEXT(mImpl->resources(), (VkHdrMetadataEXT*)(local_pMetadata + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1368; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1368, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1368, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t)); | 
|  | if (((swapchainCount))) | 
|  | { | 
|  | uint64_t* cgen_var_1369; | 
|  | countingStream->alloc((void**)&cgen_var_1369, ((swapchainCount)) * 8); | 
|  | countingStream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1369, ((swapchainCount))); | 
|  | countingStream->write((uint64_t*)cgen_var_1369, ((swapchainCount)) * 8); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i) | 
|  | { | 
|  | marshal_VkHdrMetadataEXT(countingStream, (VkHdrMetadataEXT*)(local_pMetadata + i)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkSetHdrMetadataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkSetHdrMetadataEXT = OP_vkSetHdrMetadataEXT; | 
|  | stream->write(&opcode_vkSetHdrMetadataEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkSetHdrMetadataEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1370; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1370, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1370, 1 * 8); | 
|  | stream->write((uint32_t*)&local_swapchainCount, sizeof(uint32_t)); | 
|  | if (((swapchainCount))) | 
|  | { | 
|  | uint64_t* cgen_var_1371; | 
|  | stream->alloc((void**)&cgen_var_1371, ((swapchainCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_VkSwapchainKHR_u64(local_pSwapchains, cgen_var_1371, ((swapchainCount))); | 
|  | stream->write((uint64_t*)cgen_var_1371, ((swapchainCount)) * 8); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)((swapchainCount)); ++i) | 
|  | { | 
|  | marshal_VkHdrMetadataEXT(stream, (VkHdrMetadataEXT*)(local_pMetadata + i)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkSetHdrMetadataEXT returnUnmarshal"); | 
|  | mImpl->log("finish vkSetHdrMetadataEXT");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_MVK_ios_surface | 
|  | VkResult VkEncoder::vkCreateIOSSurfaceMVK( | 
|  | VkInstance instance, | 
|  | const VkIOSSurfaceCreateInfoMVK* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkSurfaceKHR* pSurface) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK encode"); | 
|  | mImpl->log("start vkCreateIOSSurfaceMVK"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | VkIOSSurfaceCreateInfoMVK* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_instance = instance; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkIOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkIOSSurfaceCreateInfoMVK)); | 
|  | deepcopy_VkIOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkIOSSurfaceCreateInfoMVK(mImpl->resources(), (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1372; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1372, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1372, 1 * 8); | 
|  | marshal_VkIOSSurfaceCreateInfoMVK(countingStream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1373 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1373); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_1374; | 
|  | countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1374, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1374, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateIOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateIOSSurfaceMVK = OP_vkCreateIOSSurfaceMVK; | 
|  | stream->write(&opcode_vkCreateIOSSurfaceMVK, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateIOSSurfaceMVK, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1375; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1375, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1375, 1 * 8); | 
|  | marshal_VkIOSSurfaceCreateInfoMVK(stream, (VkIOSSurfaceCreateInfoMVK*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1376 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1376); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_1377; | 
|  | stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1377, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1377, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK readParams"); | 
|  | uint64_t cgen_var_1378; | 
|  | stream->read((uint64_t*)&cgen_var_1378, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1378, (VkSurfaceKHR*)pSurface, 1); | 
|  | AEMU_SCOPED_TRACE("vkCreateIOSSurfaceMVK returnUnmarshal"); | 
|  | VkResult vkCreateIOSSurfaceMVK_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateIOSSurfaceMVK_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateIOSSurfaceMVK");; | 
|  | return vkCreateIOSSurfaceMVK_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_MVK_macos_surface | 
|  | VkResult VkEncoder::vkCreateMacOSSurfaceMVK( | 
|  | VkInstance instance, | 
|  | const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkSurfaceKHR* pSurface) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK encode"); | 
|  | mImpl->log("start vkCreateMacOSSurfaceMVK"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | VkMacOSSurfaceCreateInfoMVK* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_instance = instance; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkMacOSSurfaceCreateInfoMVK*)pool->alloc(sizeof(const VkMacOSSurfaceCreateInfoMVK)); | 
|  | deepcopy_VkMacOSSurfaceCreateInfoMVK(pool, pCreateInfo, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkMacOSSurfaceCreateInfoMVK(mImpl->resources(), (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1379; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1379, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1379, 1 * 8); | 
|  | marshal_VkMacOSSurfaceCreateInfoMVK(countingStream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1380 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1380); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_1381; | 
|  | countingStream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1381, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1381, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateMacOSSurfaceMVK = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateMacOSSurfaceMVK = OP_vkCreateMacOSSurfaceMVK; | 
|  | stream->write(&opcode_vkCreateMacOSSurfaceMVK, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateMacOSSurfaceMVK, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1382; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1382, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1382, 1 * 8); | 
|  | marshal_VkMacOSSurfaceCreateInfoMVK(stream, (VkMacOSSurfaceCreateInfoMVK*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1383 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1383); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_1384; | 
|  | stream->handleMapping()->mapHandles_VkSurfaceKHR_u64(pSurface, &cgen_var_1384, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1384, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK readParams"); | 
|  | uint64_t cgen_var_1385; | 
|  | stream->read((uint64_t*)&cgen_var_1385, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkSurfaceKHR(&cgen_var_1385, (VkSurfaceKHR*)pSurface, 1); | 
|  | AEMU_SCOPED_TRACE("vkCreateMacOSSurfaceMVK returnUnmarshal"); | 
|  | VkResult vkCreateMacOSSurfaceMVK_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateMacOSSurfaceMVK_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateMacOSSurfaceMVK");; | 
|  | return vkCreateMacOSSurfaceMVK_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_EXT_external_memory_dma_buf | 
|  | #endif | 
|  | #ifdef VK_EXT_queue_family_foreign | 
|  | #endif | 
|  | #ifdef VK_EXT_debug_utils | 
|  | VkResult VkEncoder::vkSetDebugUtilsObjectNameEXT( | 
|  | VkDevice device, | 
|  | const VkDebugUtilsObjectNameInfoEXT* pNameInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT encode"); | 
|  | mImpl->log("start vkSetDebugUtilsObjectNameEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDebugUtilsObjectNameInfoEXT* local_pNameInfo; | 
|  | local_device = device; | 
|  | local_pNameInfo = nullptr; | 
|  | if (pNameInfo) | 
|  | { | 
|  | local_pNameInfo = (VkDebugUtilsObjectNameInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectNameInfoEXT)); | 
|  | deepcopy_VkDebugUtilsObjectNameInfoEXT(pool, pNameInfo, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo)); | 
|  | } | 
|  | if (local_pNameInfo) | 
|  | { | 
|  | transform_tohost_VkDebugUtilsObjectNameInfoEXT(mImpl->resources(), (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1386; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1386, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1386, 1 * 8); | 
|  | marshal_VkDebugUtilsObjectNameInfoEXT(countingStream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkSetDebugUtilsObjectNameEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkSetDebugUtilsObjectNameEXT = OP_vkSetDebugUtilsObjectNameEXT; | 
|  | stream->write(&opcode_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkSetDebugUtilsObjectNameEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1387; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1387, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1387, 1 * 8); | 
|  | marshal_VkDebugUtilsObjectNameInfoEXT(stream, (VkDebugUtilsObjectNameInfoEXT*)(local_pNameInfo)); | 
|  | AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectNameEXT returnUnmarshal"); | 
|  | VkResult vkSetDebugUtilsObjectNameEXT_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkSetDebugUtilsObjectNameEXT_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkSetDebugUtilsObjectNameEXT");; | 
|  | return vkSetDebugUtilsObjectNameEXT_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkSetDebugUtilsObjectTagEXT( | 
|  | VkDevice device, | 
|  | const VkDebugUtilsObjectTagInfoEXT* pTagInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT encode"); | 
|  | mImpl->log("start vkSetDebugUtilsObjectTagEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDebugUtilsObjectTagInfoEXT* local_pTagInfo; | 
|  | local_device = device; | 
|  | local_pTagInfo = nullptr; | 
|  | if (pTagInfo) | 
|  | { | 
|  | local_pTagInfo = (VkDebugUtilsObjectTagInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsObjectTagInfoEXT)); | 
|  | deepcopy_VkDebugUtilsObjectTagInfoEXT(pool, pTagInfo, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo)); | 
|  | } | 
|  | if (local_pTagInfo) | 
|  | { | 
|  | transform_tohost_VkDebugUtilsObjectTagInfoEXT(mImpl->resources(), (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1388; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1388, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1388, 1 * 8); | 
|  | marshal_VkDebugUtilsObjectTagInfoEXT(countingStream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkSetDebugUtilsObjectTagEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkSetDebugUtilsObjectTagEXT = OP_vkSetDebugUtilsObjectTagEXT; | 
|  | stream->write(&opcode_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkSetDebugUtilsObjectTagEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1389; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1389, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1389, 1 * 8); | 
|  | marshal_VkDebugUtilsObjectTagInfoEXT(stream, (VkDebugUtilsObjectTagInfoEXT*)(local_pTagInfo)); | 
|  | AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkSetDebugUtilsObjectTagEXT returnUnmarshal"); | 
|  | VkResult vkSetDebugUtilsObjectTagEXT_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkSetDebugUtilsObjectTagEXT_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkSetDebugUtilsObjectTagEXT");; | 
|  | return vkSetDebugUtilsObjectTagEXT_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkQueueBeginDebugUtilsLabelEXT( | 
|  | VkQueue queue, | 
|  | const VkDebugUtilsLabelEXT* pLabelInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT encode"); | 
|  | mImpl->log("start vkQueueBeginDebugUtilsLabelEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkQueue local_queue; | 
|  | VkDebugUtilsLabelEXT* local_pLabelInfo; | 
|  | local_queue = queue; | 
|  | local_pLabelInfo = nullptr; | 
|  | if (pLabelInfo) | 
|  | { | 
|  | local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT)); | 
|  | deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo)); | 
|  | } | 
|  | if (local_pLabelInfo) | 
|  | { | 
|  | transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1390; | 
|  | countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1390, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1390, 1 * 8); | 
|  | marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkQueueBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkQueueBeginDebugUtilsLabelEXT = OP_vkQueueBeginDebugUtilsLabelEXT; | 
|  | stream->write(&opcode_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkQueueBeginDebugUtilsLabelEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1391; | 
|  | stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1391, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1391, 1 * 8); | 
|  | marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo)); | 
|  | AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkQueueBeginDebugUtilsLabelEXT returnUnmarshal"); | 
|  | mImpl->log("finish vkQueueBeginDebugUtilsLabelEXT");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkQueueEndDebugUtilsLabelEXT( | 
|  | VkQueue queue) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT encode"); | 
|  | mImpl->log("start vkQueueEndDebugUtilsLabelEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkQueue local_queue; | 
|  | local_queue = queue; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1392; | 
|  | countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1392, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1392, 1 * 8); | 
|  | } | 
|  | uint32_t packetSize_vkQueueEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkQueueEndDebugUtilsLabelEXT = OP_vkQueueEndDebugUtilsLabelEXT; | 
|  | stream->write(&opcode_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkQueueEndDebugUtilsLabelEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1393; | 
|  | stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1393, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1393, 1 * 8); | 
|  | AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkQueueEndDebugUtilsLabelEXT returnUnmarshal"); | 
|  | mImpl->log("finish vkQueueEndDebugUtilsLabelEXT");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkQueueInsertDebugUtilsLabelEXT( | 
|  | VkQueue queue, | 
|  | const VkDebugUtilsLabelEXT* pLabelInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT encode"); | 
|  | mImpl->log("start vkQueueInsertDebugUtilsLabelEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkQueue local_queue; | 
|  | VkDebugUtilsLabelEXT* local_pLabelInfo; | 
|  | local_queue = queue; | 
|  | local_pLabelInfo = nullptr; | 
|  | if (pLabelInfo) | 
|  | { | 
|  | local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT)); | 
|  | deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo)); | 
|  | } | 
|  | if (local_pLabelInfo) | 
|  | { | 
|  | transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1394; | 
|  | countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1394, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1394, 1 * 8); | 
|  | marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkQueueInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkQueueInsertDebugUtilsLabelEXT = OP_vkQueueInsertDebugUtilsLabelEXT; | 
|  | stream->write(&opcode_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkQueueInsertDebugUtilsLabelEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1395; | 
|  | stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1395, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1395, 1 * 8); | 
|  | marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo)); | 
|  | AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkQueueInsertDebugUtilsLabelEXT returnUnmarshal"); | 
|  | mImpl->log("finish vkQueueInsertDebugUtilsLabelEXT");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdBeginDebugUtilsLabelEXT( | 
|  | VkCommandBuffer commandBuffer, | 
|  | const VkDebugUtilsLabelEXT* pLabelInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT encode"); | 
|  | mImpl->log("start vkCmdBeginDebugUtilsLabelEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkDebugUtilsLabelEXT* local_pLabelInfo; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_pLabelInfo = nullptr; | 
|  | if (pLabelInfo) | 
|  | { | 
|  | local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT)); | 
|  | deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo)); | 
|  | } | 
|  | if (local_pLabelInfo) | 
|  | { | 
|  | transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1396; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1396, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1396, 1 * 8); | 
|  | marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdBeginDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdBeginDebugUtilsLabelEXT = OP_vkCmdBeginDebugUtilsLabelEXT; | 
|  | stream->write(&opcode_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdBeginDebugUtilsLabelEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1397; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1397, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1397, 1 * 8); | 
|  | marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo)); | 
|  | AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdBeginDebugUtilsLabelEXT returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdBeginDebugUtilsLabelEXT");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdEndDebugUtilsLabelEXT( | 
|  | VkCommandBuffer commandBuffer) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT encode"); | 
|  | mImpl->log("start vkCmdEndDebugUtilsLabelEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | local_commandBuffer = commandBuffer; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1398; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1398, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1398, 1 * 8); | 
|  | } | 
|  | uint32_t packetSize_vkCmdEndDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdEndDebugUtilsLabelEXT = OP_vkCmdEndDebugUtilsLabelEXT; | 
|  | stream->write(&opcode_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdEndDebugUtilsLabelEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1399; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1399, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1399, 1 * 8); | 
|  | AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdEndDebugUtilsLabelEXT returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdEndDebugUtilsLabelEXT");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCmdInsertDebugUtilsLabelEXT( | 
|  | VkCommandBuffer commandBuffer, | 
|  | const VkDebugUtilsLabelEXT* pLabelInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT encode"); | 
|  | mImpl->log("start vkCmdInsertDebugUtilsLabelEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkDebugUtilsLabelEXT* local_pLabelInfo; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_pLabelInfo = nullptr; | 
|  | if (pLabelInfo) | 
|  | { | 
|  | local_pLabelInfo = (VkDebugUtilsLabelEXT*)pool->alloc(sizeof(const VkDebugUtilsLabelEXT)); | 
|  | deepcopy_VkDebugUtilsLabelEXT(pool, pLabelInfo, (VkDebugUtilsLabelEXT*)(local_pLabelInfo)); | 
|  | } | 
|  | if (local_pLabelInfo) | 
|  | { | 
|  | transform_tohost_VkDebugUtilsLabelEXT(mImpl->resources(), (VkDebugUtilsLabelEXT*)(local_pLabelInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1400; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1400, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1400, 1 * 8); | 
|  | marshal_VkDebugUtilsLabelEXT(countingStream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdInsertDebugUtilsLabelEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdInsertDebugUtilsLabelEXT = OP_vkCmdInsertDebugUtilsLabelEXT; | 
|  | stream->write(&opcode_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdInsertDebugUtilsLabelEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1401; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1401, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1401, 1 * 8); | 
|  | marshal_VkDebugUtilsLabelEXT(stream, (VkDebugUtilsLabelEXT*)(local_pLabelInfo)); | 
|  | AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdInsertDebugUtilsLabelEXT returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdInsertDebugUtilsLabelEXT");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateDebugUtilsMessengerEXT( | 
|  | VkInstance instance, | 
|  | const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkDebugUtilsMessengerEXT* pMessenger) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT encode"); | 
|  | mImpl->log("start vkCreateDebugUtilsMessengerEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | VkDebugUtilsMessengerCreateInfoEXT* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_instance = instance; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkDebugUtilsMessengerCreateInfoEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCreateInfoEXT)); | 
|  | deepcopy_VkDebugUtilsMessengerCreateInfoEXT(pool, pCreateInfo, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkDebugUtilsMessengerCreateInfoEXT(mImpl->resources(), (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1402; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1402, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1402, 1 * 8); | 
|  | marshal_VkDebugUtilsMessengerCreateInfoEXT(countingStream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1403 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1403); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_1404; | 
|  | countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1404, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1404, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateDebugUtilsMessengerEXT = OP_vkCreateDebugUtilsMessengerEXT; | 
|  | stream->write(&opcode_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateDebugUtilsMessengerEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1405; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1405, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1405, 1 * 8); | 
|  | marshal_VkDebugUtilsMessengerCreateInfoEXT(stream, (VkDebugUtilsMessengerCreateInfoEXT*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1406 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1406); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_1407; | 
|  | stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(pMessenger, &cgen_var_1407, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1407, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_1408; | 
|  | stream->read((uint64_t*)&cgen_var_1408, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkDebugUtilsMessengerEXT(&cgen_var_1408, (VkDebugUtilsMessengerEXT*)pMessenger, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateDebugUtilsMessengerEXT returnUnmarshal"); | 
|  | VkResult vkCreateDebugUtilsMessengerEXT_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateDebugUtilsMessengerEXT_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateDebugUtilsMessengerEXT");; | 
|  | return vkCreateDebugUtilsMessengerEXT_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyDebugUtilsMessengerEXT( | 
|  | VkInstance instance, | 
|  | VkDebugUtilsMessengerEXT messenger, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT encode"); | 
|  | mImpl->log("start vkDestroyDebugUtilsMessengerEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | VkDebugUtilsMessengerEXT local_messenger; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_instance = instance; | 
|  | local_messenger = messenger; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1409; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1409, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1409, 1 * 8); | 
|  | uint64_t cgen_var_1410; | 
|  | countingStream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1410, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1410, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1411 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1411); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyDebugUtilsMessengerEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyDebugUtilsMessengerEXT = OP_vkDestroyDebugUtilsMessengerEXT; | 
|  | stream->write(&opcode_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyDebugUtilsMessengerEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1412; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1412, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1412, 1 * 8); | 
|  | uint64_t cgen_var_1413; | 
|  | stream->handleMapping()->mapHandles_VkDebugUtilsMessengerEXT_u64(&local_messenger, &cgen_var_1413, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1413, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1414 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1414); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyDebugUtilsMessengerEXT returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkDebugUtilsMessengerEXT((VkDebugUtilsMessengerEXT*)&messenger); | 
|  | mImpl->log("finish vkDestroyDebugUtilsMessengerEXT");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkSubmitDebugUtilsMessageEXT( | 
|  | VkInstance instance, | 
|  | VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, | 
|  | VkDebugUtilsMessageTypeFlagsEXT messageTypes, | 
|  | const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT encode"); | 
|  | mImpl->log("start vkSubmitDebugUtilsMessageEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkInstance local_instance; | 
|  | VkDebugUtilsMessageSeverityFlagBitsEXT local_messageSeverity; | 
|  | VkDebugUtilsMessageTypeFlagsEXT local_messageTypes; | 
|  | VkDebugUtilsMessengerCallbackDataEXT* local_pCallbackData; | 
|  | local_instance = instance; | 
|  | local_messageSeverity = messageSeverity; | 
|  | local_messageTypes = messageTypes; | 
|  | local_pCallbackData = nullptr; | 
|  | if (pCallbackData) | 
|  | { | 
|  | local_pCallbackData = (VkDebugUtilsMessengerCallbackDataEXT*)pool->alloc(sizeof(const VkDebugUtilsMessengerCallbackDataEXT)); | 
|  | deepcopy_VkDebugUtilsMessengerCallbackDataEXT(pool, pCallbackData, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData)); | 
|  | } | 
|  | if (local_pCallbackData) | 
|  | { | 
|  | transform_tohost_VkDebugUtilsMessengerCallbackDataEXT(mImpl->resources(), (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1415; | 
|  | countingStream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1415, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1415, 1 * 8); | 
|  | countingStream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT)); | 
|  | countingStream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT)); | 
|  | marshal_VkDebugUtilsMessengerCallbackDataEXT(countingStream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData)); | 
|  | } | 
|  | uint32_t packetSize_vkSubmitDebugUtilsMessageEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkSubmitDebugUtilsMessageEXT = OP_vkSubmitDebugUtilsMessageEXT; | 
|  | stream->write(&opcode_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkSubmitDebugUtilsMessageEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1416; | 
|  | stream->handleMapping()->mapHandles_VkInstance_u64(&local_instance, &cgen_var_1416, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1416, 1 * 8); | 
|  | stream->write((VkDebugUtilsMessageSeverityFlagBitsEXT*)&local_messageSeverity, sizeof(VkDebugUtilsMessageSeverityFlagBitsEXT)); | 
|  | stream->write((VkDebugUtilsMessageTypeFlagsEXT*)&local_messageTypes, sizeof(VkDebugUtilsMessageTypeFlagsEXT)); | 
|  | marshal_VkDebugUtilsMessengerCallbackDataEXT(stream, (VkDebugUtilsMessengerCallbackDataEXT*)(local_pCallbackData)); | 
|  | AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkSubmitDebugUtilsMessageEXT returnUnmarshal"); | 
|  | mImpl->log("finish vkSubmitDebugUtilsMessageEXT");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_ANDROID_external_memory_android_hardware_buffer | 
|  | VkResult VkEncoder::vkGetAndroidHardwareBufferPropertiesANDROID( | 
|  | VkDevice device, | 
|  | const AHardwareBuffer* buffer, | 
|  | VkAndroidHardwareBufferPropertiesANDROID* pProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID encode"); | 
|  | mImpl->log("start vkGetAndroidHardwareBufferPropertiesANDROID"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | AHardwareBuffer* local_buffer; | 
|  | local_device = device; | 
|  | local_buffer = nullptr; | 
|  | if (buffer) | 
|  | { | 
|  | local_buffer = (AHardwareBuffer*)pool->dupArray(buffer, sizeof(const AHardwareBuffer)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1417; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1417, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1417, 1 * 8); | 
|  | countingStream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer)); | 
|  | marshal_VkAndroidHardwareBufferPropertiesANDROID(countingStream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetAndroidHardwareBufferPropertiesANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetAndroidHardwareBufferPropertiesANDROID = OP_vkGetAndroidHardwareBufferPropertiesANDROID; | 
|  | stream->write(&opcode_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetAndroidHardwareBufferPropertiesANDROID, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1418; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1418, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1418, 1 * 8); | 
|  | stream->write((AHardwareBuffer*)local_buffer, sizeof(AHardwareBuffer)); | 
|  | marshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID readParams"); | 
|  | unmarshal_VkAndroidHardwareBufferPropertiesANDROID(stream, (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties)); | 
|  | if (pProperties) | 
|  | { | 
|  | transform_fromhost_VkAndroidHardwareBufferPropertiesANDROID(mImpl->resources(), (VkAndroidHardwareBufferPropertiesANDROID*)(pProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetAndroidHardwareBufferPropertiesANDROID returnUnmarshal"); | 
|  | VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetAndroidHardwareBufferPropertiesANDROID");; | 
|  | return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetMemoryAndroidHardwareBufferANDROID( | 
|  | VkDevice device, | 
|  | const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, | 
|  | AHardwareBuffer** pBuffer) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID encode"); | 
|  | mImpl->log("start vkGetMemoryAndroidHardwareBufferANDROID"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkMemoryGetAndroidHardwareBufferInfoANDROID* local_pInfo; | 
|  | local_device = device; | 
|  | local_pInfo = nullptr; | 
|  | if (pInfo) | 
|  | { | 
|  | local_pInfo = (VkMemoryGetAndroidHardwareBufferInfoANDROID*)pool->alloc(sizeof(const VkMemoryGetAndroidHardwareBufferInfoANDROID)); | 
|  | deepcopy_VkMemoryGetAndroidHardwareBufferInfoANDROID(pool, pInfo, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo)); | 
|  | } | 
|  | if (local_pInfo) | 
|  | { | 
|  | transform_tohost_VkMemoryGetAndroidHardwareBufferInfoANDROID(mImpl->resources(), (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1419; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1419, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1419, 1 * 8); | 
|  | marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(countingStream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo)); | 
|  | countingStream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*)); | 
|  | } | 
|  | uint32_t packetSize_vkGetMemoryAndroidHardwareBufferANDROID = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetMemoryAndroidHardwareBufferANDROID = OP_vkGetMemoryAndroidHardwareBufferANDROID; | 
|  | stream->write(&opcode_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetMemoryAndroidHardwareBufferANDROID, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1420; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1420, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1420, 1 * 8); | 
|  | marshal_VkMemoryGetAndroidHardwareBufferInfoANDROID(stream, (VkMemoryGetAndroidHardwareBufferInfoANDROID*)(local_pInfo)); | 
|  | stream->write((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*)); | 
|  | AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID readParams"); | 
|  | stream->read((AHardwareBuffer**)pBuffer, sizeof(AHardwareBuffer*)); | 
|  | AEMU_SCOPED_TRACE("vkGetMemoryAndroidHardwareBufferANDROID returnUnmarshal"); | 
|  | VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetMemoryAndroidHardwareBufferANDROID");; | 
|  | return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_EXT_sampler_filter_minmax | 
|  | #endif | 
|  | #ifdef VK_AMD_gpu_shader_int16 | 
|  | #endif | 
|  | #ifdef VK_AMD_mixed_attachment_samples | 
|  | #endif | 
|  | #ifdef VK_AMD_shader_fragment_mask | 
|  | #endif | 
|  | #ifdef VK_EXT_shader_stencil_export | 
|  | #endif | 
|  | #ifdef VK_EXT_sample_locations | 
|  | void VkEncoder::vkCmdSetSampleLocationsEXT( | 
|  | VkCommandBuffer commandBuffer, | 
|  | const VkSampleLocationsInfoEXT* pSampleLocationsInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT encode"); | 
|  | mImpl->log("start vkCmdSetSampleLocationsEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkSampleLocationsInfoEXT* local_pSampleLocationsInfo; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_pSampleLocationsInfo = nullptr; | 
|  | if (pSampleLocationsInfo) | 
|  | { | 
|  | local_pSampleLocationsInfo = (VkSampleLocationsInfoEXT*)pool->alloc(sizeof(const VkSampleLocationsInfoEXT)); | 
|  | deepcopy_VkSampleLocationsInfoEXT(pool, pSampleLocationsInfo, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo)); | 
|  | } | 
|  | if (local_pSampleLocationsInfo) | 
|  | { | 
|  | transform_tohost_VkSampleLocationsInfoEXT(mImpl->resources(), (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1421; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1421, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1421, 1 * 8); | 
|  | marshal_VkSampleLocationsInfoEXT(countingStream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdSetSampleLocationsEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdSetSampleLocationsEXT = OP_vkCmdSetSampleLocationsEXT; | 
|  | stream->write(&opcode_vkCmdSetSampleLocationsEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdSetSampleLocationsEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1422; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1422, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1422, 1 * 8); | 
|  | marshal_VkSampleLocationsInfoEXT(stream, (VkSampleLocationsInfoEXT*)(local_pSampleLocationsInfo)); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetSampleLocationsEXT returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdSetSampleLocationsEXT");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetPhysicalDeviceMultisamplePropertiesEXT( | 
|  | VkPhysicalDevice physicalDevice, | 
|  | VkSampleCountFlagBits samples, | 
|  | VkMultisamplePropertiesEXT* pMultisampleProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT encode"); | 
|  | mImpl->log("start vkGetPhysicalDeviceMultisamplePropertiesEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkPhysicalDevice local_physicalDevice; | 
|  | VkSampleCountFlagBits local_samples; | 
|  | local_physicalDevice = physicalDevice; | 
|  | local_samples = samples; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1423; | 
|  | countingStream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1423, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1423, 1 * 8); | 
|  | countingStream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits)); | 
|  | marshal_VkMultisamplePropertiesEXT(countingStream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT = OP_vkGetPhysicalDeviceMultisamplePropertiesEXT; | 
|  | stream->write(&opcode_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetPhysicalDeviceMultisamplePropertiesEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1424; | 
|  | stream->handleMapping()->mapHandles_VkPhysicalDevice_u64(&local_physicalDevice, &cgen_var_1424, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1424, 1 * 8); | 
|  | stream->write((VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits)); | 
|  | marshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT readParams"); | 
|  | unmarshal_VkMultisamplePropertiesEXT(stream, (VkMultisamplePropertiesEXT*)(pMultisampleProperties)); | 
|  | if (pMultisampleProperties) | 
|  | { | 
|  | transform_fromhost_VkMultisamplePropertiesEXT(mImpl->resources(), (VkMultisamplePropertiesEXT*)(pMultisampleProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetPhysicalDeviceMultisamplePropertiesEXT returnUnmarshal"); | 
|  | mImpl->log("finish vkGetPhysicalDeviceMultisamplePropertiesEXT");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_EXT_blend_operation_advanced | 
|  | #endif | 
|  | #ifdef VK_NV_fragment_coverage_to_color | 
|  | #endif | 
|  | #ifdef VK_NV_framebuffer_mixed_samples | 
|  | #endif | 
|  | #ifdef VK_NV_fill_rectangle | 
|  | #endif | 
|  | #ifdef VK_EXT_post_depth_coverage | 
|  | #endif | 
|  | #ifdef VK_EXT_validation_cache | 
|  | VkResult VkEncoder::vkCreateValidationCacheEXT( | 
|  | VkDevice device, | 
|  | const VkValidationCacheCreateInfoEXT* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkValidationCacheEXT* pValidationCache) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT encode"); | 
|  | mImpl->log("start vkCreateValidationCacheEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkValidationCacheCreateInfoEXT* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkValidationCacheCreateInfoEXT*)pool->alloc(sizeof(const VkValidationCacheCreateInfoEXT)); | 
|  | deepcopy_VkValidationCacheCreateInfoEXT(pool, pCreateInfo, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkValidationCacheCreateInfoEXT(mImpl->resources(), (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1425; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1425, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1425, 1 * 8); | 
|  | marshal_VkValidationCacheCreateInfoEXT(countingStream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1426 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1426); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_1427; | 
|  | countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1427, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1427, 8); | 
|  | } | 
|  | uint32_t packetSize_vkCreateValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateValidationCacheEXT = OP_vkCreateValidationCacheEXT; | 
|  | stream->write(&opcode_vkCreateValidationCacheEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateValidationCacheEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1428; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1428, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1428, 1 * 8); | 
|  | marshal_VkValidationCacheCreateInfoEXT(stream, (VkValidationCacheCreateInfoEXT*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1429 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1429); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_1430; | 
|  | stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(pValidationCache, &cgen_var_1430, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1430, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_1431; | 
|  | stream->read((uint64_t*)&cgen_var_1431, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkValidationCacheEXT(&cgen_var_1431, (VkValidationCacheEXT*)pValidationCache, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | AEMU_SCOPED_TRACE("vkCreateValidationCacheEXT returnUnmarshal"); | 
|  | VkResult vkCreateValidationCacheEXT_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateValidationCacheEXT_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateValidationCacheEXT");; | 
|  | return vkCreateValidationCacheEXT_VkResult_return; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkDestroyValidationCacheEXT( | 
|  | VkDevice device, | 
|  | VkValidationCacheEXT validationCache, | 
|  | const VkAllocationCallbacks* pAllocator) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT encode"); | 
|  | mImpl->log("start vkDestroyValidationCacheEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkValidationCacheEXT local_validationCache; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_validationCache = validationCache; | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1432; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1432, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1432, 1 * 8); | 
|  | uint64_t cgen_var_1433; | 
|  | countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1433, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1433, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1434 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1434); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkDestroyValidationCacheEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkDestroyValidationCacheEXT = OP_vkDestroyValidationCacheEXT; | 
|  | stream->write(&opcode_vkDestroyValidationCacheEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkDestroyValidationCacheEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1435; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1435, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1435, 1 * 8); | 
|  | uint64_t cgen_var_1436; | 
|  | stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1436, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1436, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1437 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1437); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkDestroyValidationCacheEXT returnUnmarshal"); | 
|  | resources->destroyMapping()->mapHandles_VkValidationCacheEXT((VkValidationCacheEXT*)&validationCache); | 
|  | mImpl->log("finish vkDestroyValidationCacheEXT");; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkMergeValidationCachesEXT( | 
|  | VkDevice device, | 
|  | VkValidationCacheEXT dstCache, | 
|  | uint32_t srcCacheCount, | 
|  | const VkValidationCacheEXT* pSrcCaches) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT encode"); | 
|  | mImpl->log("start vkMergeValidationCachesEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkValidationCacheEXT local_dstCache; | 
|  | uint32_t local_srcCacheCount; | 
|  | VkValidationCacheEXT* local_pSrcCaches; | 
|  | local_device = device; | 
|  | local_dstCache = dstCache; | 
|  | local_srcCacheCount = srcCacheCount; | 
|  | local_pSrcCaches = nullptr; | 
|  | if (pSrcCaches) | 
|  | { | 
|  | local_pSrcCaches = (VkValidationCacheEXT*)pool->dupArray(pSrcCaches, ((srcCacheCount)) * sizeof(const VkValidationCacheEXT)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1438; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1438, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1438, 1 * 8); | 
|  | uint64_t cgen_var_1439; | 
|  | countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1439, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1439, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t)); | 
|  | if (((srcCacheCount))) | 
|  | { | 
|  | uint64_t* cgen_var_1440; | 
|  | countingStream->alloc((void**)&cgen_var_1440, ((srcCacheCount)) * 8); | 
|  | countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1440, ((srcCacheCount))); | 
|  | countingStream->write((uint64_t*)cgen_var_1440, ((srcCacheCount)) * 8); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkMergeValidationCachesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkMergeValidationCachesEXT = OP_vkMergeValidationCachesEXT; | 
|  | stream->write(&opcode_vkMergeValidationCachesEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkMergeValidationCachesEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1441; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1441, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1441, 1 * 8); | 
|  | uint64_t cgen_var_1442; | 
|  | stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_dstCache, &cgen_var_1442, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1442, 1 * 8); | 
|  | stream->write((uint32_t*)&local_srcCacheCount, sizeof(uint32_t)); | 
|  | if (((srcCacheCount))) | 
|  | { | 
|  | uint64_t* cgen_var_1443; | 
|  | stream->alloc((void**)&cgen_var_1443, ((srcCacheCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(local_pSrcCaches, cgen_var_1443, ((srcCacheCount))); | 
|  | stream->write((uint64_t*)cgen_var_1443, ((srcCacheCount)) * 8); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT readParams"); | 
|  | AEMU_SCOPED_TRACE("vkMergeValidationCachesEXT returnUnmarshal"); | 
|  | VkResult vkMergeValidationCachesEXT_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkMergeValidationCachesEXT_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkMergeValidationCachesEXT");; | 
|  | return vkMergeValidationCachesEXT_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkGetValidationCacheDataEXT( | 
|  | VkDevice device, | 
|  | VkValidationCacheEXT validationCache, | 
|  | size_t* pDataSize, | 
|  | void* pData) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT encode"); | 
|  | mImpl->log("start vkGetValidationCacheDataEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkValidationCacheEXT local_validationCache; | 
|  | local_device = device; | 
|  | local_validationCache = validationCache; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1444; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1444, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1444, 1 * 8); | 
|  | uint64_t cgen_var_1445; | 
|  | countingStream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1445, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1445, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1446 = (uint64_t)(uintptr_t)pDataSize; | 
|  | countingStream->putBe64(cgen_var_1446); | 
|  | if (pDataSize) | 
|  | { | 
|  | uint64_t cgen_var_1447 = (uint64_t)(*pDataSize); | 
|  | countingStream->putBe64(cgen_var_1447); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1448 = (uint64_t)(uintptr_t)pData; | 
|  | countingStream->putBe64(cgen_var_1448); | 
|  | if (pData) | 
|  | { | 
|  | countingStream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetValidationCacheDataEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetValidationCacheDataEXT = OP_vkGetValidationCacheDataEXT; | 
|  | stream->write(&opcode_vkGetValidationCacheDataEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetValidationCacheDataEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1449; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1449, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1449, 1 * 8); | 
|  | uint64_t cgen_var_1450; | 
|  | stream->handleMapping()->mapHandles_VkValidationCacheEXT_u64(&local_validationCache, &cgen_var_1450, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1450, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1451 = (uint64_t)(uintptr_t)pDataSize; | 
|  | stream->putBe64(cgen_var_1451); | 
|  | if (pDataSize) | 
|  | { | 
|  | uint64_t cgen_var_1452 = (uint64_t)(*pDataSize); | 
|  | stream->putBe64(cgen_var_1452); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1453 = (uint64_t)(uintptr_t)pData; | 
|  | stream->putBe64(cgen_var_1453); | 
|  | if (pData) | 
|  | { | 
|  | stream->write((void*)pData, (*(pDataSize)) * sizeof(uint8_t)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT readParams"); | 
|  | // WARNING PTR CHECK | 
|  | size_t* check_pDataSize; | 
|  | check_pDataSize = (size_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pDataSize) | 
|  | { | 
|  | if (!(check_pDataSize)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pDataSize inconsistent between guest and host\n"); | 
|  | } | 
|  | (*pDataSize) = (size_t)stream->getBe64(); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | void* check_pData; | 
|  | check_pData = (void*)(uintptr_t)stream->getBe64(); | 
|  | if (pData) | 
|  | { | 
|  | if (!(check_pData)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pData inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((void*)pData, (*(pDataSize)) * sizeof(uint8_t)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetValidationCacheDataEXT returnUnmarshal"); | 
|  | VkResult vkGetValidationCacheDataEXT_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetValidationCacheDataEXT_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetValidationCacheDataEXT");; | 
|  | return vkGetValidationCacheDataEXT_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_EXT_descriptor_indexing | 
|  | #endif | 
|  | #ifdef VK_EXT_shader_viewport_index_layer | 
|  | #endif | 
|  | #ifdef VK_EXT_global_priority | 
|  | #endif | 
|  | #ifdef VK_EXT_external_memory_host | 
|  | VkResult VkEncoder::vkGetMemoryHostPointerPropertiesEXT( | 
|  | VkDevice device, | 
|  | VkExternalMemoryHandleTypeFlagBits handleType, | 
|  | const void* pHostPointer, | 
|  | VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT encode"); | 
|  | mImpl->log("start vkGetMemoryHostPointerPropertiesEXT"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkExternalMemoryHandleTypeFlagBits local_handleType; | 
|  | void* local_pHostPointer; | 
|  | local_device = device; | 
|  | local_handleType = handleType; | 
|  | local_pHostPointer = nullptr; | 
|  | if (pHostPointer) | 
|  | { | 
|  | local_pHostPointer = (void*)pool->dupArray(pHostPointer, sizeof(const uint8_t)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1457; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1457, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1457, 1 * 8); | 
|  | countingStream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1458 = (uint64_t)(uintptr_t)local_pHostPointer; | 
|  | countingStream->putBe64(cgen_var_1458); | 
|  | if (local_pHostPointer) | 
|  | { | 
|  | countingStream->write((void*)local_pHostPointer, sizeof(uint8_t)); | 
|  | } | 
|  | marshal_VkMemoryHostPointerPropertiesEXT(countingStream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties)); | 
|  | } | 
|  | uint32_t packetSize_vkGetMemoryHostPointerPropertiesEXT = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetMemoryHostPointerPropertiesEXT = OP_vkGetMemoryHostPointerPropertiesEXT; | 
|  | stream->write(&opcode_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetMemoryHostPointerPropertiesEXT, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1459; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1459, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1459, 1 * 8); | 
|  | stream->write((VkExternalMemoryHandleTypeFlagBits*)&local_handleType, sizeof(VkExternalMemoryHandleTypeFlagBits)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1460 = (uint64_t)(uintptr_t)local_pHostPointer; | 
|  | stream->putBe64(cgen_var_1460); | 
|  | if (local_pHostPointer) | 
|  | { | 
|  | stream->write((void*)local_pHostPointer, sizeof(uint8_t)); | 
|  | } | 
|  | marshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties)); | 
|  | AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT readParams"); | 
|  | unmarshal_VkMemoryHostPointerPropertiesEXT(stream, (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties)); | 
|  | if (pMemoryHostPointerProperties) | 
|  | { | 
|  | transform_fromhost_VkMemoryHostPointerPropertiesEXT(mImpl->resources(), (VkMemoryHostPointerPropertiesEXT*)(pMemoryHostPointerProperties)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetMemoryHostPointerPropertiesEXT returnUnmarshal"); | 
|  | VkResult vkGetMemoryHostPointerPropertiesEXT_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkGetMemoryHostPointerPropertiesEXT_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkGetMemoryHostPointerPropertiesEXT");; | 
|  | return vkGetMemoryHostPointerPropertiesEXT_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_AMD_buffer_marker | 
|  | void VkEncoder::vkCmdWriteBufferMarkerAMD( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkPipelineStageFlagBits pipelineStage, | 
|  | VkBuffer dstBuffer, | 
|  | VkDeviceSize dstOffset, | 
|  | uint32_t marker) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD encode"); | 
|  | mImpl->log("start vkCmdWriteBufferMarkerAMD"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkPipelineStageFlagBits local_pipelineStage; | 
|  | VkBuffer local_dstBuffer; | 
|  | VkDeviceSize local_dstOffset; | 
|  | uint32_t local_marker; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_pipelineStage = pipelineStage; | 
|  | local_dstBuffer = dstBuffer; | 
|  | local_dstOffset = dstOffset; | 
|  | local_marker = marker; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1461; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1461, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1461, 1 * 8); | 
|  | countingStream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits)); | 
|  | uint64_t cgen_var_1462; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1462, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1462, 1 * 8); | 
|  | countingStream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize)); | 
|  | countingStream->write((uint32_t*)&local_marker, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCmdWriteBufferMarkerAMD = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdWriteBufferMarkerAMD = OP_vkCmdWriteBufferMarkerAMD; | 
|  | stream->write(&opcode_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdWriteBufferMarkerAMD, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1463; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1463, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1463, 1 * 8); | 
|  | stream->write((VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits)); | 
|  | uint64_t cgen_var_1464; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_dstBuffer, &cgen_var_1464, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1464, 1 * 8); | 
|  | stream->write((VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize)); | 
|  | stream->write((uint32_t*)&local_marker, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdWriteBufferMarkerAMD returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdWriteBufferMarkerAMD");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_AMD_shader_core_properties | 
|  | #endif | 
|  | #ifdef VK_EXT_vertex_attribute_divisor | 
|  | #endif | 
|  | #ifdef VK_NV_shader_subgroup_partitioned | 
|  | #endif | 
|  | #ifdef VK_NV_device_diagnostic_checkpoints | 
|  | void VkEncoder::vkCmdSetCheckpointNV( | 
|  | VkCommandBuffer commandBuffer, | 
|  | const void* pCheckpointMarker) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV encode"); | 
|  | mImpl->log("start vkCmdSetCheckpointNV"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | void* local_pCheckpointMarker; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_pCheckpointMarker = nullptr; | 
|  | if (pCheckpointMarker) | 
|  | { | 
|  | local_pCheckpointMarker = (void*)pool->dupArray(pCheckpointMarker, sizeof(const uint8_t)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1465; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1465, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1465, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1466 = (uint64_t)(uintptr_t)local_pCheckpointMarker; | 
|  | countingStream->putBe64(cgen_var_1466); | 
|  | if (local_pCheckpointMarker) | 
|  | { | 
|  | countingStream->write((void*)local_pCheckpointMarker, sizeof(uint8_t)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkCmdSetCheckpointNV = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCmdSetCheckpointNV = OP_vkCmdSetCheckpointNV; | 
|  | stream->write(&opcode_vkCmdSetCheckpointNV, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCmdSetCheckpointNV, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1467; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1467, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1467, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1468 = (uint64_t)(uintptr_t)local_pCheckpointMarker; | 
|  | stream->putBe64(cgen_var_1468); | 
|  | if (local_pCheckpointMarker) | 
|  | { | 
|  | stream->write((void*)local_pCheckpointMarker, sizeof(uint8_t)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCmdSetCheckpointNV returnUnmarshal"); | 
|  | mImpl->log("finish vkCmdSetCheckpointNV");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkGetQueueCheckpointDataNV( | 
|  | VkQueue queue, | 
|  | uint32_t* pCheckpointDataCount, | 
|  | VkCheckpointDataNV* pCheckpointData) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV encode"); | 
|  | mImpl->log("start vkGetQueueCheckpointDataNV"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkQueue local_queue; | 
|  | local_queue = queue; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1469; | 
|  | countingStream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1469, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1469, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1470 = (uint64_t)(uintptr_t)pCheckpointDataCount; | 
|  | countingStream->putBe64(cgen_var_1470); | 
|  | if (pCheckpointDataCount) | 
|  | { | 
|  | countingStream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1471 = (uint64_t)(uintptr_t)pCheckpointData; | 
|  | countingStream->putBe64(cgen_var_1471); | 
|  | if (pCheckpointData) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i) | 
|  | { | 
|  | marshal_VkCheckpointDataNV(countingStream, (VkCheckpointDataNV*)(pCheckpointData + i)); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkGetQueueCheckpointDataNV = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkGetQueueCheckpointDataNV = OP_vkGetQueueCheckpointDataNV; | 
|  | stream->write(&opcode_vkGetQueueCheckpointDataNV, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkGetQueueCheckpointDataNV, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1472; | 
|  | stream->handleMapping()->mapHandles_VkQueue_u64(&local_queue, &cgen_var_1472, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1472, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1473 = (uint64_t)(uintptr_t)pCheckpointDataCount; | 
|  | stream->putBe64(cgen_var_1473); | 
|  | if (pCheckpointDataCount) | 
|  | { | 
|  | stream->write((uint32_t*)pCheckpointDataCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1474 = (uint64_t)(uintptr_t)pCheckpointData; | 
|  | stream->putBe64(cgen_var_1474); | 
|  | if (pCheckpointData) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i) | 
|  | { | 
|  | marshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint32_t* check_pCheckpointDataCount; | 
|  | check_pCheckpointDataCount = (uint32_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pCheckpointDataCount) | 
|  | { | 
|  | if (!(check_pCheckpointDataCount)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pCheckpointDataCount inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint32_t*)pCheckpointDataCount, sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | VkCheckpointDataNV* check_pCheckpointData; | 
|  | check_pCheckpointData = (VkCheckpointDataNV*)(uintptr_t)stream->getBe64(); | 
|  | if (pCheckpointData) | 
|  | { | 
|  | if (!(check_pCheckpointData)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pCheckpointData inconsistent between guest and host\n"); | 
|  | } | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i) | 
|  | { | 
|  | unmarshal_VkCheckpointDataNV(stream, (VkCheckpointDataNV*)(pCheckpointData + i)); | 
|  | } | 
|  | } | 
|  | if (pCheckpointData) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)(*(pCheckpointDataCount)); ++i) | 
|  | { | 
|  | transform_fromhost_VkCheckpointDataNV(mImpl->resources(), (VkCheckpointDataNV*)(pCheckpointData + i)); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkGetQueueCheckpointDataNV returnUnmarshal"); | 
|  | mImpl->log("finish vkGetQueueCheckpointDataNV");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_GOOGLE_address_space | 
|  | VkResult VkEncoder::vkMapMemoryIntoAddressSpaceGOOGLE( | 
|  | VkDevice device, | 
|  | VkDeviceMemory memory, | 
|  | uint64_t* pAddress) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE encode"); | 
|  | mImpl->log("start vkMapMemoryIntoAddressSpaceGOOGLE"); | 
|  | encoderLock.unlock(); | 
|  | mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE_pre(this, VK_SUCCESS, device, memory, pAddress); | 
|  | encoderLock.lock(); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDeviceMemory local_memory; | 
|  | local_device = device; | 
|  | local_memory = memory; | 
|  | mImpl->resources()->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0); | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1477; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1477, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1477, 1 * 8); | 
|  | uint64_t cgen_var_1478; | 
|  | countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1478, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1478, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1479 = (uint64_t)(uintptr_t)pAddress; | 
|  | countingStream->putBe64(cgen_var_1479); | 
|  | if (pAddress) | 
|  | { | 
|  | countingStream->write((uint64_t*)pAddress, sizeof(uint64_t)); | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkMapMemoryIntoAddressSpaceGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkMapMemoryIntoAddressSpaceGOOGLE = OP_vkMapMemoryIntoAddressSpaceGOOGLE; | 
|  | stream->write(&opcode_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkMapMemoryIntoAddressSpaceGOOGLE, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1480; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1480, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1480, 1 * 8); | 
|  | uint64_t cgen_var_1481; | 
|  | stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1481, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1481, 1 * 8); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1482 = (uint64_t)(uintptr_t)pAddress; | 
|  | stream->putBe64(cgen_var_1482); | 
|  | if (pAddress) | 
|  | { | 
|  | stream->write((uint64_t*)pAddress, sizeof(uint64_t)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE readParams"); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t* check_pAddress; | 
|  | check_pAddress = (uint64_t*)(uintptr_t)stream->getBe64(); | 
|  | if (pAddress) | 
|  | { | 
|  | if (!(check_pAddress)) | 
|  | { | 
|  | fprintf(stderr, "fatal: pAddress inconsistent between guest and host\n"); | 
|  | } | 
|  | stream->read((uint64_t*)pAddress, sizeof(uint64_t)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkMapMemoryIntoAddressSpaceGOOGLE returnUnmarshal"); | 
|  | VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | encoderLock.unlock(); | 
|  | mImpl->resources()->on_vkMapMemoryIntoAddressSpaceGOOGLE(this, vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return, device, memory, pAddress); | 
|  | encoderLock.lock(); | 
|  | mImpl->log("finish vkMapMemoryIntoAddressSpaceGOOGLE");; | 
|  | return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_GOOGLE_color_buffer | 
|  | VkResult VkEncoder::vkRegisterImageColorBufferGOOGLE( | 
|  | VkDevice device, | 
|  | VkImage image, | 
|  | uint32_t colorBuffer) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE encode"); | 
|  | mImpl->log("start vkRegisterImageColorBufferGOOGLE"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkImage local_image; | 
|  | uint32_t local_colorBuffer; | 
|  | local_device = device; | 
|  | local_image = image; | 
|  | local_colorBuffer = colorBuffer; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1484; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1484, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1484, 1 * 8); | 
|  | uint64_t cgen_var_1485; | 
|  | countingStream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1485, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1485, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_colorBuffer, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkRegisterImageColorBufferGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkRegisterImageColorBufferGOOGLE = OP_vkRegisterImageColorBufferGOOGLE; | 
|  | stream->write(&opcode_vkRegisterImageColorBufferGOOGLE, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkRegisterImageColorBufferGOOGLE, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1486; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1486, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1486, 1 * 8); | 
|  | uint64_t cgen_var_1487; | 
|  | stream->handleMapping()->mapHandles_VkImage_u64(&local_image, &cgen_var_1487, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1487, 1 * 8); | 
|  | stream->write((uint32_t*)&local_colorBuffer, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE readParams"); | 
|  | AEMU_SCOPED_TRACE("vkRegisterImageColorBufferGOOGLE returnUnmarshal"); | 
|  | VkResult vkRegisterImageColorBufferGOOGLE_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkRegisterImageColorBufferGOOGLE_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkRegisterImageColorBufferGOOGLE");; | 
|  | return vkRegisterImageColorBufferGOOGLE_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkRegisterBufferColorBufferGOOGLE( | 
|  | VkDevice device, | 
|  | VkBuffer buffer, | 
|  | uint32_t colorBuffer) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE encode"); | 
|  | mImpl->log("start vkRegisterBufferColorBufferGOOGLE"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkBuffer local_buffer; | 
|  | uint32_t local_colorBuffer; | 
|  | local_device = device; | 
|  | local_buffer = buffer; | 
|  | local_colorBuffer = colorBuffer; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1488; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1488, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1488, 1 * 8); | 
|  | uint64_t cgen_var_1489; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1489, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1489, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_colorBuffer, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkRegisterBufferColorBufferGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkRegisterBufferColorBufferGOOGLE = OP_vkRegisterBufferColorBufferGOOGLE; | 
|  | stream->write(&opcode_vkRegisterBufferColorBufferGOOGLE, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkRegisterBufferColorBufferGOOGLE, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1490; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1490, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1490, 1 * 8); | 
|  | uint64_t cgen_var_1491; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(&local_buffer, &cgen_var_1491, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1491, 1 * 8); | 
|  | stream->write((uint32_t*)&local_colorBuffer, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE readParams"); | 
|  | AEMU_SCOPED_TRACE("vkRegisterBufferColorBufferGOOGLE returnUnmarshal"); | 
|  | VkResult vkRegisterBufferColorBufferGOOGLE_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkRegisterBufferColorBufferGOOGLE_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkRegisterBufferColorBufferGOOGLE");; | 
|  | return vkRegisterBufferColorBufferGOOGLE_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_GOOGLE_sized_descriptor_update_template | 
|  | void VkEncoder::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) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE encode"); | 
|  | mImpl->log("start vkUpdateDescriptorSetWithTemplateSizedGOOGLE"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkDescriptorSet local_descriptorSet; | 
|  | VkDescriptorUpdateTemplate local_descriptorUpdateTemplate; | 
|  | uint32_t local_imageInfoCount; | 
|  | uint32_t local_bufferInfoCount; | 
|  | uint32_t local_bufferViewCount; | 
|  | uint32_t* local_pImageInfoEntryIndices; | 
|  | uint32_t* local_pBufferInfoEntryIndices; | 
|  | uint32_t* local_pBufferViewEntryIndices; | 
|  | VkDescriptorImageInfo* local_pImageInfos; | 
|  | VkDescriptorBufferInfo* local_pBufferInfos; | 
|  | VkBufferView* local_pBufferViews; | 
|  | local_device = device; | 
|  | local_descriptorSet = descriptorSet; | 
|  | local_descriptorUpdateTemplate = descriptorUpdateTemplate; | 
|  | local_imageInfoCount = imageInfoCount; | 
|  | local_bufferInfoCount = bufferInfoCount; | 
|  | local_bufferViewCount = bufferViewCount; | 
|  | local_pImageInfoEntryIndices = nullptr; | 
|  | if (pImageInfoEntryIndices) | 
|  | { | 
|  | local_pImageInfoEntryIndices = (uint32_t*)pool->dupArray(pImageInfoEntryIndices, ((imageInfoCount)) * sizeof(const uint32_t)); | 
|  | } | 
|  | local_pBufferInfoEntryIndices = nullptr; | 
|  | if (pBufferInfoEntryIndices) | 
|  | { | 
|  | local_pBufferInfoEntryIndices = (uint32_t*)pool->dupArray(pBufferInfoEntryIndices, ((bufferInfoCount)) * sizeof(const uint32_t)); | 
|  | } | 
|  | local_pBufferViewEntryIndices = nullptr; | 
|  | if (pBufferViewEntryIndices) | 
|  | { | 
|  | local_pBufferViewEntryIndices = (uint32_t*)pool->dupArray(pBufferViewEntryIndices, ((bufferViewCount)) * sizeof(const uint32_t)); | 
|  | } | 
|  | local_pImageInfos = nullptr; | 
|  | if (pImageInfos) | 
|  | { | 
|  | local_pImageInfos = (VkDescriptorImageInfo*)pool->alloc(((imageInfoCount)) * sizeof(const VkDescriptorImageInfo)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((imageInfoCount)); ++i) | 
|  | { | 
|  | deepcopy_VkDescriptorImageInfo(pool, pImageInfos + i, (VkDescriptorImageInfo*)(local_pImageInfos + i)); | 
|  | } | 
|  | } | 
|  | local_pBufferInfos = nullptr; | 
|  | if (pBufferInfos) | 
|  | { | 
|  | local_pBufferInfos = (VkDescriptorBufferInfo*)pool->alloc(((bufferInfoCount)) * sizeof(const VkDescriptorBufferInfo)); | 
|  | for (uint32_t i = 0; i < (uint32_t)((bufferInfoCount)); ++i) | 
|  | { | 
|  | deepcopy_VkDescriptorBufferInfo(pool, pBufferInfos + i, (VkDescriptorBufferInfo*)(local_pBufferInfos + i)); | 
|  | } | 
|  | } | 
|  | local_pBufferViews = nullptr; | 
|  | if (pBufferViews) | 
|  | { | 
|  | local_pBufferViews = (VkBufferView*)pool->dupArray(pBufferViews, ((bufferViewCount)) * sizeof(const VkBufferView)); | 
|  | } | 
|  | if (local_pImageInfos) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((imageInfoCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkDescriptorImageInfo(mImpl->resources(), (VkDescriptorImageInfo*)(local_pImageInfos + i)); | 
|  | } | 
|  | } | 
|  | if (local_pBufferInfos) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((bufferInfoCount)); ++i) | 
|  | { | 
|  | transform_tohost_VkDescriptorBufferInfo(mImpl->resources(), (VkDescriptorBufferInfo*)(local_pBufferInfos + i)); | 
|  | } | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1492; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1492, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1492, 1 * 8); | 
|  | uint64_t cgen_var_1493; | 
|  | countingStream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1493, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1493, 1 * 8); | 
|  | uint64_t cgen_var_1494; | 
|  | countingStream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1494, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1494, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_imageInfoCount, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_bufferInfoCount, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_bufferViewCount, sizeof(uint32_t)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1495 = (uint64_t)(uintptr_t)local_pImageInfoEntryIndices; | 
|  | countingStream->putBe64(cgen_var_1495); | 
|  | if (local_pImageInfoEntryIndices) | 
|  | { | 
|  | countingStream->write((uint32_t*)local_pImageInfoEntryIndices, ((imageInfoCount)) * sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1496 = (uint64_t)(uintptr_t)local_pBufferInfoEntryIndices; | 
|  | countingStream->putBe64(cgen_var_1496); | 
|  | if (local_pBufferInfoEntryIndices) | 
|  | { | 
|  | countingStream->write((uint32_t*)local_pBufferInfoEntryIndices, ((bufferInfoCount)) * sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1497 = (uint64_t)(uintptr_t)local_pBufferViewEntryIndices; | 
|  | countingStream->putBe64(cgen_var_1497); | 
|  | if (local_pBufferViewEntryIndices) | 
|  | { | 
|  | countingStream->write((uint32_t*)local_pBufferViewEntryIndices, ((bufferViewCount)) * sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1498 = (uint64_t)(uintptr_t)local_pImageInfos; | 
|  | countingStream->putBe64(cgen_var_1498); | 
|  | if (local_pImageInfos) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((imageInfoCount)); ++i) | 
|  | { | 
|  | marshal_VkDescriptorImageInfo(countingStream, (VkDescriptorImageInfo*)(local_pImageInfos + i)); | 
|  | } | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1499 = (uint64_t)(uintptr_t)local_pBufferInfos; | 
|  | countingStream->putBe64(cgen_var_1499); | 
|  | if (local_pBufferInfos) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((bufferInfoCount)); ++i) | 
|  | { | 
|  | marshal_VkDescriptorBufferInfo(countingStream, (VkDescriptorBufferInfo*)(local_pBufferInfos + i)); | 
|  | } | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1500 = (uint64_t)(uintptr_t)local_pBufferViews; | 
|  | countingStream->putBe64(cgen_var_1500); | 
|  | if (local_pBufferViews) | 
|  | { | 
|  | if (((bufferViewCount))) | 
|  | { | 
|  | uint64_t* cgen_var_1501; | 
|  | countingStream->alloc((void**)&cgen_var_1501, ((bufferViewCount)) * 8); | 
|  | countingStream->handleMapping()->mapHandles_VkBufferView_u64(local_pBufferViews, cgen_var_1501, ((bufferViewCount))); | 
|  | countingStream->write((uint64_t*)cgen_var_1501, ((bufferViewCount)) * 8); | 
|  | } | 
|  | } | 
|  | } | 
|  | uint32_t packetSize_vkUpdateDescriptorSetWithTemplateSizedGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkUpdateDescriptorSetWithTemplateSizedGOOGLE = OP_vkUpdateDescriptorSetWithTemplateSizedGOOGLE; | 
|  | stream->write(&opcode_vkUpdateDescriptorSetWithTemplateSizedGOOGLE, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkUpdateDescriptorSetWithTemplateSizedGOOGLE, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1502; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1502, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1502, 1 * 8); | 
|  | uint64_t cgen_var_1503; | 
|  | stream->handleMapping()->mapHandles_VkDescriptorSet_u64(&local_descriptorSet, &cgen_var_1503, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1503, 1 * 8); | 
|  | uint64_t cgen_var_1504; | 
|  | stream->handleMapping()->mapHandles_VkDescriptorUpdateTemplate_u64(&local_descriptorUpdateTemplate, &cgen_var_1504, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1504, 1 * 8); | 
|  | stream->write((uint32_t*)&local_imageInfoCount, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_bufferInfoCount, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_bufferViewCount, sizeof(uint32_t)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1505 = (uint64_t)(uintptr_t)local_pImageInfoEntryIndices; | 
|  | stream->putBe64(cgen_var_1505); | 
|  | if (local_pImageInfoEntryIndices) | 
|  | { | 
|  | stream->write((uint32_t*)local_pImageInfoEntryIndices, ((imageInfoCount)) * sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1506 = (uint64_t)(uintptr_t)local_pBufferInfoEntryIndices; | 
|  | stream->putBe64(cgen_var_1506); | 
|  | if (local_pBufferInfoEntryIndices) | 
|  | { | 
|  | stream->write((uint32_t*)local_pBufferInfoEntryIndices, ((bufferInfoCount)) * sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1507 = (uint64_t)(uintptr_t)local_pBufferViewEntryIndices; | 
|  | stream->putBe64(cgen_var_1507); | 
|  | if (local_pBufferViewEntryIndices) | 
|  | { | 
|  | stream->write((uint32_t*)local_pBufferViewEntryIndices, ((bufferViewCount)) * sizeof(uint32_t)); | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1508 = (uint64_t)(uintptr_t)local_pImageInfos; | 
|  | stream->putBe64(cgen_var_1508); | 
|  | if (local_pImageInfos) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((imageInfoCount)); ++i) | 
|  | { | 
|  | marshal_VkDescriptorImageInfo(stream, (VkDescriptorImageInfo*)(local_pImageInfos + i)); | 
|  | } | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1509 = (uint64_t)(uintptr_t)local_pBufferInfos; | 
|  | stream->putBe64(cgen_var_1509); | 
|  | if (local_pBufferInfos) | 
|  | { | 
|  | for (uint32_t i = 0; i < (uint32_t)((bufferInfoCount)); ++i) | 
|  | { | 
|  | marshal_VkDescriptorBufferInfo(stream, (VkDescriptorBufferInfo*)(local_pBufferInfos + i)); | 
|  | } | 
|  | } | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1510 = (uint64_t)(uintptr_t)local_pBufferViews; | 
|  | stream->putBe64(cgen_var_1510); | 
|  | if (local_pBufferViews) | 
|  | { | 
|  | if (((bufferViewCount))) | 
|  | { | 
|  | uint64_t* cgen_var_1511; | 
|  | stream->alloc((void**)&cgen_var_1511, ((bufferViewCount)) * 8); | 
|  | stream->handleMapping()->mapHandles_VkBufferView_u64(local_pBufferViews, cgen_var_1511, ((bufferViewCount))); | 
|  | stream->write((uint64_t*)cgen_var_1511, ((bufferViewCount)) * 8); | 
|  | } | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE readParams"); | 
|  | AEMU_SCOPED_TRACE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE returnUnmarshal"); | 
|  | mImpl->log("finish vkUpdateDescriptorSetWithTemplateSizedGOOGLE");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_GOOGLE_async_command_buffers | 
|  | void VkEncoder::vkBeginCommandBufferAsyncGOOGLE( | 
|  | VkCommandBuffer commandBuffer, | 
|  | const VkCommandBufferBeginInfo* pBeginInfo) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE encode"); | 
|  | mImpl->log("start vkBeginCommandBufferAsyncGOOGLE"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkCommandBufferBeginInfo* local_pBeginInfo; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_pBeginInfo = nullptr; | 
|  | if (pBeginInfo) | 
|  | { | 
|  | local_pBeginInfo = (VkCommandBufferBeginInfo*)pool->alloc(sizeof(const VkCommandBufferBeginInfo)); | 
|  | deepcopy_VkCommandBufferBeginInfo(pool, pBeginInfo, (VkCommandBufferBeginInfo*)(local_pBeginInfo)); | 
|  | } | 
|  | if (local_pBeginInfo) | 
|  | { | 
|  | transform_tohost_VkCommandBufferBeginInfo(mImpl->resources(), (VkCommandBufferBeginInfo*)(local_pBeginInfo)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1512; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1512, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1512, 1 * 8); | 
|  | marshal_VkCommandBufferBeginInfo(countingStream, (VkCommandBufferBeginInfo*)(local_pBeginInfo)); | 
|  | } | 
|  | uint32_t packetSize_vkBeginCommandBufferAsyncGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkBeginCommandBufferAsyncGOOGLE = OP_vkBeginCommandBufferAsyncGOOGLE; | 
|  | stream->write(&opcode_vkBeginCommandBufferAsyncGOOGLE, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkBeginCommandBufferAsyncGOOGLE, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1513; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1513, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1513, 1 * 8); | 
|  | marshal_VkCommandBufferBeginInfo(stream, (VkCommandBufferBeginInfo*)(local_pBeginInfo)); | 
|  | AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE readParams"); | 
|  | AEMU_SCOPED_TRACE("vkBeginCommandBufferAsyncGOOGLE returnUnmarshal"); | 
|  | mImpl->log("finish vkBeginCommandBufferAsyncGOOGLE");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkEndCommandBufferAsyncGOOGLE( | 
|  | VkCommandBuffer commandBuffer) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE encode"); | 
|  | mImpl->log("start vkEndCommandBufferAsyncGOOGLE"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | local_commandBuffer = commandBuffer; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1514; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1514, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1514, 1 * 8); | 
|  | } | 
|  | uint32_t packetSize_vkEndCommandBufferAsyncGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkEndCommandBufferAsyncGOOGLE = OP_vkEndCommandBufferAsyncGOOGLE; | 
|  | stream->write(&opcode_vkEndCommandBufferAsyncGOOGLE, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkEndCommandBufferAsyncGOOGLE, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1515; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1515, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1515, 1 * 8); | 
|  | AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE readParams"); | 
|  | AEMU_SCOPED_TRACE("vkEndCommandBufferAsyncGOOGLE returnUnmarshal"); | 
|  | mImpl->log("finish vkEndCommandBufferAsyncGOOGLE");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkResetCommandBufferAsyncGOOGLE( | 
|  | VkCommandBuffer commandBuffer, | 
|  | VkCommandBufferResetFlags flags) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE encode"); | 
|  | mImpl->log("start vkResetCommandBufferAsyncGOOGLE"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | VkCommandBufferResetFlags local_flags; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_flags = flags; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1516; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1516, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1516, 1 * 8); | 
|  | countingStream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags)); | 
|  | } | 
|  | uint32_t packetSize_vkResetCommandBufferAsyncGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkResetCommandBufferAsyncGOOGLE = OP_vkResetCommandBufferAsyncGOOGLE; | 
|  | stream->write(&opcode_vkResetCommandBufferAsyncGOOGLE, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkResetCommandBufferAsyncGOOGLE, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1517; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1517, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1517, 1 * 8); | 
|  | stream->write((VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags)); | 
|  | AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE readParams"); | 
|  | AEMU_SCOPED_TRACE("vkResetCommandBufferAsyncGOOGLE returnUnmarshal"); | 
|  | mImpl->log("finish vkResetCommandBufferAsyncGOOGLE");; | 
|  | } | 
|  |  | 
|  | void VkEncoder::vkCommandBufferHostSyncGOOGLE( | 
|  | VkCommandBuffer commandBuffer, | 
|  | uint32_t needHostSync, | 
|  | uint32_t sequenceNumber) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE encode"); | 
|  | mImpl->log("start vkCommandBufferHostSyncGOOGLE"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkCommandBuffer local_commandBuffer; | 
|  | uint32_t local_needHostSync; | 
|  | uint32_t local_sequenceNumber; | 
|  | local_commandBuffer = commandBuffer; | 
|  | local_needHostSync = needHostSync; | 
|  | local_sequenceNumber = sequenceNumber; | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1518; | 
|  | countingStream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1518, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1518, 1 * 8); | 
|  | countingStream->write((uint32_t*)&local_needHostSync, sizeof(uint32_t)); | 
|  | countingStream->write((uint32_t*)&local_sequenceNumber, sizeof(uint32_t)); | 
|  | } | 
|  | uint32_t packetSize_vkCommandBufferHostSyncGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCommandBufferHostSyncGOOGLE = OP_vkCommandBufferHostSyncGOOGLE; | 
|  | stream->write(&opcode_vkCommandBufferHostSyncGOOGLE, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCommandBufferHostSyncGOOGLE, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1519; | 
|  | stream->handleMapping()->mapHandles_VkCommandBuffer_u64(&local_commandBuffer, &cgen_var_1519, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1519, 1 * 8); | 
|  | stream->write((uint32_t*)&local_needHostSync, sizeof(uint32_t)); | 
|  | stream->write((uint32_t*)&local_sequenceNumber, sizeof(uint32_t)); | 
|  | AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE readParams"); | 
|  | AEMU_SCOPED_TRACE("vkCommandBufferHostSyncGOOGLE returnUnmarshal"); | 
|  | mImpl->log("finish vkCommandBufferHostSyncGOOGLE");; | 
|  | } | 
|  |  | 
|  | #endif | 
|  | #ifdef VK_GOOGLE_create_resources_with_requirements | 
|  | VkResult VkEncoder::vkCreateImageWithRequirementsGOOGLE( | 
|  | VkDevice device, | 
|  | const VkImageCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkImage* pImage, | 
|  | VkMemoryRequirements* pMemoryRequirements) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE encode"); | 
|  | mImpl->log("start vkCreateImageWithRequirementsGOOGLE"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkImageCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkImageCreateInfo*)pool->alloc(sizeof(const VkImageCreateInfo)); | 
|  | deepcopy_VkImageCreateInfo(pool, pCreateInfo, (VkImageCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | mImpl->resources()->unwrap_VkNativeBufferANDROID(pCreateInfo, local_pCreateInfo); | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkImageCreateInfo(mImpl->resources(), (VkImageCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1520; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1520, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1520, 1 * 8); | 
|  | marshal_VkImageCreateInfo(countingStream, (VkImageCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1521 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1521); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_1522; | 
|  | countingStream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_1522, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1522, 8); | 
|  | marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements)); | 
|  | } | 
|  | uint32_t packetSize_vkCreateImageWithRequirementsGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateImageWithRequirementsGOOGLE = OP_vkCreateImageWithRequirementsGOOGLE; | 
|  | stream->write(&opcode_vkCreateImageWithRequirementsGOOGLE, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateImageWithRequirementsGOOGLE, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1523; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1523, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1523, 1 * 8); | 
|  | marshal_VkImageCreateInfo(stream, (VkImageCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1524 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1524); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_1525; | 
|  | stream->handleMapping()->mapHandles_VkImage_u64(pImage, &cgen_var_1525, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1525, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements)); | 
|  | AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_1526; | 
|  | stream->read((uint64_t*)&cgen_var_1526, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_1526, (VkImage*)pImage, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements)); | 
|  | if (pMemoryRequirements) | 
|  | { | 
|  | transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkCreateImageWithRequirementsGOOGLE returnUnmarshal"); | 
|  | VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateImageWithRequirementsGOOGLE_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateImageWithRequirementsGOOGLE");; | 
|  | return vkCreateImageWithRequirementsGOOGLE_VkResult_return; | 
|  | } | 
|  |  | 
|  | VkResult VkEncoder::vkCreateBufferWithRequirementsGOOGLE( | 
|  | VkDevice device, | 
|  | const VkBufferCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks* pAllocator, | 
|  | VkBuffer* pBuffer, | 
|  | VkMemoryRequirements* pMemoryRequirements) | 
|  | { | 
|  | AutoLock encoderLock(mImpl->lock); | 
|  | AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE encode"); | 
|  | mImpl->log("start vkCreateBufferWithRequirementsGOOGLE"); | 
|  | auto stream = mImpl->stream(); | 
|  | auto countingStream = mImpl->countingStream(); | 
|  | auto resources = mImpl->resources(); | 
|  | auto pool = mImpl->pool(); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | VkDevice local_device; | 
|  | VkBufferCreateInfo* local_pCreateInfo; | 
|  | VkAllocationCallbacks* local_pAllocator; | 
|  | local_device = device; | 
|  | local_pCreateInfo = nullptr; | 
|  | if (pCreateInfo) | 
|  | { | 
|  | local_pCreateInfo = (VkBufferCreateInfo*)pool->alloc(sizeof(const VkBufferCreateInfo)); | 
|  | deepcopy_VkBufferCreateInfo(pool, pCreateInfo, (VkBufferCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (pAllocator) | 
|  | { | 
|  | local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); | 
|  | deepcopy_VkAllocationCallbacks(pool, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | local_pAllocator = nullptr; | 
|  | if (local_pCreateInfo) | 
|  | { | 
|  | transform_tohost_VkBufferCreateInfo(mImpl->resources(), (VkBufferCreateInfo*)(local_pCreateInfo)); | 
|  | } | 
|  | if (local_pAllocator) | 
|  | { | 
|  | transform_tohost_VkAllocationCallbacks(mImpl->resources(), (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | countingStream->rewind(); | 
|  | { | 
|  | uint64_t cgen_var_1527; | 
|  | countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1527, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1527, 1 * 8); | 
|  | marshal_VkBufferCreateInfo(countingStream, (VkBufferCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1528 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | countingStream->putBe64(cgen_var_1528); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | uint64_t cgen_var_1529; | 
|  | countingStream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_1529, 1); | 
|  | countingStream->write((uint64_t*)&cgen_var_1529, 8); | 
|  | marshal_VkMemoryRequirements(countingStream, (VkMemoryRequirements*)(pMemoryRequirements)); | 
|  | } | 
|  | uint32_t packetSize_vkCreateBufferWithRequirementsGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten(); | 
|  | countingStream->rewind(); | 
|  | uint32_t opcode_vkCreateBufferWithRequirementsGOOGLE = OP_vkCreateBufferWithRequirementsGOOGLE; | 
|  | stream->write(&opcode_vkCreateBufferWithRequirementsGOOGLE, sizeof(uint32_t)); | 
|  | stream->write(&packetSize_vkCreateBufferWithRequirementsGOOGLE, sizeof(uint32_t)); | 
|  | uint64_t cgen_var_1530; | 
|  | stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1530, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1530, 1 * 8); | 
|  | marshal_VkBufferCreateInfo(stream, (VkBufferCreateInfo*)(local_pCreateInfo)); | 
|  | // WARNING PTR CHECK | 
|  | uint64_t cgen_var_1531 = (uint64_t)(uintptr_t)local_pAllocator; | 
|  | stream->putBe64(cgen_var_1531); | 
|  | if (local_pAllocator) | 
|  | { | 
|  | marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); | 
|  | } | 
|  | stream->unsetHandleMapping() /* emit_marshal, is handle, possibly out */; | 
|  | uint64_t cgen_var_1532; | 
|  | stream->handleMapping()->mapHandles_VkBuffer_u64(pBuffer, &cgen_var_1532, 1); | 
|  | stream->write((uint64_t*)&cgen_var_1532, 8); | 
|  | stream->setHandleMapping(resources->unwrapMapping()); | 
|  | marshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements)); | 
|  | AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE readParams"); | 
|  | stream->setHandleMapping(resources->createMapping()); | 
|  | uint64_t cgen_var_1533; | 
|  | stream->read((uint64_t*)&cgen_var_1533, 8); | 
|  | stream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_1533, (VkBuffer*)pBuffer, 1); | 
|  | stream->unsetHandleMapping(); | 
|  | unmarshal_VkMemoryRequirements(stream, (VkMemoryRequirements*)(pMemoryRequirements)); | 
|  | if (pMemoryRequirements) | 
|  | { | 
|  | transform_fromhost_VkMemoryRequirements(mImpl->resources(), (VkMemoryRequirements*)(pMemoryRequirements)); | 
|  | } | 
|  | AEMU_SCOPED_TRACE("vkCreateBufferWithRequirementsGOOGLE returnUnmarshal"); | 
|  | VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0; | 
|  | stream->read(&vkCreateBufferWithRequirementsGOOGLE_VkResult_return, sizeof(VkResult)); | 
|  | countingStream->clearPool(); | 
|  | stream->clearPool(); | 
|  | pool->freeAll(); | 
|  | mImpl->log("finish vkCreateBufferWithRequirementsGOOGLE");; | 
|  | return vkCreateBufferWithRequirementsGOOGLE_VkResult_return; | 
|  | } | 
|  |  | 
|  | #endif | 
|  |  | 
|  | } // namespace goldfish_vk |