// 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 #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 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 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 #ifdef VK_GOOGLE_address_space_info VkResult VkEncoder::vkGetMemoryHostAddressInfoGOOGLE( VkDevice device, VkDeviceMemory memory, uint64_t* pAddress, uint64_t* pSize, uint64_t* pHostmemId) { AutoLock encoderLock(mImpl->lock); AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE encode"); mImpl->log("start vkGetMemoryHostAddressInfoGOOGLE"); 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_1534; countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1534, 1); countingStream->write((uint64_t*)&cgen_var_1534, 1 * 8); uint64_t cgen_var_1535; countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1535, 1); countingStream->write((uint64_t*)&cgen_var_1535, 1 * 8); // WARNING PTR CHECK uint64_t cgen_var_1536 = (uint64_t)(uintptr_t)pAddress; countingStream->putBe64(cgen_var_1536); if (pAddress) { countingStream->write((uint64_t*)pAddress, sizeof(uint64_t)); } // WARNING PTR CHECK uint64_t cgen_var_1537 = (uint64_t)(uintptr_t)pSize; countingStream->putBe64(cgen_var_1537); if (pSize) { countingStream->write((uint64_t*)pSize, sizeof(uint64_t)); } // WARNING PTR CHECK uint64_t cgen_var_1538 = (uint64_t)(uintptr_t)pHostmemId; countingStream->putBe64(cgen_var_1538); if (pHostmemId) { countingStream->write((uint64_t*)pHostmemId, sizeof(uint64_t)); } } uint32_t packetSize_vkGetMemoryHostAddressInfoGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten(); countingStream->rewind(); uint32_t opcode_vkGetMemoryHostAddressInfoGOOGLE = OP_vkGetMemoryHostAddressInfoGOOGLE; stream->write(&opcode_vkGetMemoryHostAddressInfoGOOGLE, sizeof(uint32_t)); stream->write(&packetSize_vkGetMemoryHostAddressInfoGOOGLE, sizeof(uint32_t)); uint64_t cgen_var_1539; stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1539, 1); stream->write((uint64_t*)&cgen_var_1539, 1 * 8); uint64_t cgen_var_1540; stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1540, 1); stream->write((uint64_t*)&cgen_var_1540, 1 * 8); // WARNING PTR CHECK uint64_t cgen_var_1541 = (uint64_t)(uintptr_t)pAddress; stream->putBe64(cgen_var_1541); if (pAddress) { stream->write((uint64_t*)pAddress, sizeof(uint64_t)); } // WARNING PTR CHECK uint64_t cgen_var_1542 = (uint64_t)(uintptr_t)pSize; stream->putBe64(cgen_var_1542); if (pSize) { stream->write((uint64_t*)pSize, sizeof(uint64_t)); } // WARNING PTR CHECK uint64_t cgen_var_1543 = (uint64_t)(uintptr_t)pHostmemId; stream->putBe64(cgen_var_1543); if (pHostmemId) { stream->write((uint64_t*)pHostmemId, sizeof(uint64_t)); } AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE 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)); } // WARNING PTR CHECK uint64_t* check_pSize; check_pSize = (uint64_t*)(uintptr_t)stream->getBe64(); if (pSize) { if (!(check_pSize)) { fprintf(stderr, "fatal: pSize inconsistent between guest and host\n"); } stream->read((uint64_t*)pSize, sizeof(uint64_t)); } // WARNING PTR CHECK uint64_t* check_pHostmemId; check_pHostmemId = (uint64_t*)(uintptr_t)stream->getBe64(); if (pHostmemId) { if (!(check_pHostmemId)) { fprintf(stderr, "fatal: pHostmemId inconsistent between guest and host\n"); } stream->read((uint64_t*)pHostmemId, sizeof(uint64_t)); } AEMU_SCOPED_TRACE("vkGetMemoryHostAddressInfoGOOGLE returnUnmarshal"); VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0; stream->read(&vkGetMemoryHostAddressInfoGOOGLE_VkResult_return, sizeof(VkResult)); countingStream->clearPool(); stream->clearPool(); pool->freeAll(); mImpl->log("finish vkGetMemoryHostAddressInfoGOOGLE");; return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return; } #endif #ifdef VK_GOOGLE_free_memory_sync VkResult VkEncoder::vkFreeMemorySyncGOOGLE( VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) { AutoLock encoderLock(mImpl->lock); AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE encode"); mImpl->log("start vkFreeMemorySyncGOOGLE"); 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_1547; countingStream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1547, 1); countingStream->write((uint64_t*)&cgen_var_1547, 1 * 8); uint64_t cgen_var_1548; countingStream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1548, 1); countingStream->write((uint64_t*)&cgen_var_1548, 1 * 8); // WARNING PTR CHECK uint64_t cgen_var_1549 = (uint64_t)(uintptr_t)local_pAllocator; countingStream->putBe64(cgen_var_1549); if (local_pAllocator) { marshal_VkAllocationCallbacks(countingStream, (VkAllocationCallbacks*)(local_pAllocator)); } } uint32_t packetSize_vkFreeMemorySyncGOOGLE = 4 + 4 + (uint32_t)countingStream->bytesWritten(); countingStream->rewind(); uint32_t opcode_vkFreeMemorySyncGOOGLE = OP_vkFreeMemorySyncGOOGLE; stream->write(&opcode_vkFreeMemorySyncGOOGLE, sizeof(uint32_t)); stream->write(&packetSize_vkFreeMemorySyncGOOGLE, sizeof(uint32_t)); uint64_t cgen_var_1550; stream->handleMapping()->mapHandles_VkDevice_u64(&local_device, &cgen_var_1550, 1); stream->write((uint64_t*)&cgen_var_1550, 1 * 8); uint64_t cgen_var_1551; stream->handleMapping()->mapHandles_VkDeviceMemory_u64(&local_memory, &cgen_var_1551, 1); stream->write((uint64_t*)&cgen_var_1551, 1 * 8); // WARNING PTR CHECK uint64_t cgen_var_1552 = (uint64_t)(uintptr_t)local_pAllocator; stream->putBe64(cgen_var_1552); if (local_pAllocator) { marshal_VkAllocationCallbacks(stream, (VkAllocationCallbacks*)(local_pAllocator)); } AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE readParams"); AEMU_SCOPED_TRACE("vkFreeMemorySyncGOOGLE returnUnmarshal"); VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0; stream->read(&vkFreeMemorySyncGOOGLE_VkResult_return, sizeof(VkResult)); countingStream->clearPool(); stream->clearPool(); pool->freeAll(); resources->destroyMapping()->mapHandles_VkDeviceMemory((VkDeviceMemory*)&memory); mImpl->log("finish vkFreeMemorySyncGOOGLE");; return vkFreeMemorySyncGOOGLE_VkResult_return; } #endif } // namespace goldfish_vk