| // 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/BumpPool.h" |
| #include "android/base/synchronization/AndroidLock.h" |
| |
| #include <cutils/properties.h> |
| |
| #include "goldfish_vk_marshaling_guest.h" |
| #include "goldfish_vk_reserved_marshaling_guest.h" |
| #include "goldfish_vk_deepcopy_guest.h" |
| #include "goldfish_vk_counting_guest.h" |
| #include "goldfish_vk_handlemap_guest.h" |
| #include "goldfish_vk_private_defs.h" |
| #include "goldfish_vk_transform_guest.h" |
| |
| #include <unordered_map> |
| |
| |
| |
| namespace goldfish_vk { |
| |
| |
| |
| using namespace goldfish_vk; |
| |
| using android::aligned_buf_alloc; |
| using android::aligned_buf_free; |
| using android::base::guest::AutoLock; |
| using android::base::guest::Lock; |
| using android::base::BumpPool; |
| |
| #include "VkEncoder.cpp.inl" |
| |
| #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, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkInstanceCreateInfo* local_pCreateInfo; |
| VkAllocationCallbacks* local_pAllocator; |
| local_pCreateInfo = nullptr; |
| if (pCreateInfo) |
| { |
| local_pCreateInfo = (VkInstanceCreateInfo*)pool->alloc(sizeof(const VkInstanceCreateInfo)); |
| deepcopy_VkInstanceCreateInfo(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfo, (VkInstanceCreateInfo*)(local_pCreateInfo)); |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pCreateInfo) |
| { |
| transform_tohost_VkInstanceCreateInfo(sResourceTracker, (VkInstanceCreateInfo*)(local_pCreateInfo)); |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| count_VkInstanceCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkInstanceCreateInfo*)(local_pCreateInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| uint64_t cgen_var_0; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkCreateInstance = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreateInstance); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreateInstance = OP_vkCreateInstance; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreateInstance, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreateInstance, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| reservedmarshal_VkInstanceCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkInstanceCreateInfo*)(local_pCreateInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_0 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_0, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = (uint64_t)((*pInstance)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_2; |
| stream->read((uint64_t*)&cgen_var_2, 8); |
| stream->handleMapping()->mapHandles_u64_VkInstance(&cgen_var_2, (VkInstance*)pInstance, 1); |
| stream->unsetHandleMapping(); |
| VkResult vkCreateInstance_VkResult_return = (VkResult)0; |
| stream->read(&vkCreateInstance_VkResult_return, sizeof(VkResult)); |
| sResourceTracker->on_vkCreateInstance(this, vkCreateInstance_VkResult_return, pCreateInfo, pAllocator, pInstance); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreateInstance_VkResult_return; |
| } |
| |
| void VkEncoder::vkDestroyInstance( |
| VkInstance instance, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkDestroyInstance = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDestroyInstance); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDestroyInstance = OP_vkDestroyInstance; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDestroyInstance, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDestroyInstance, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkInstance((*&local_instance)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkInstance((VkInstance*)&instance); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkEnumeratePhysicalDevices( |
| VkInstance instance, |
| uint32_t* pPhysicalDeviceCount, |
| VkPhysicalDevice* pPhysicalDevices, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkInstance local_instance; |
| local_instance = instance; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pPhysicalDeviceCount) |
| { |
| *countPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pPhysicalDevices) |
| { |
| if ((*(pPhysicalDeviceCount))) |
| { |
| *countPtr += (*(pPhysicalDeviceCount)) * 8; |
| } |
| } |
| } |
| uint32_t packetSize_vkEnumeratePhysicalDevices = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkEnumeratePhysicalDevices); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkEnumeratePhysicalDevices = OP_vkEnumeratePhysicalDevices; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkEnumeratePhysicalDevices, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkEnumeratePhysicalDevices, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkInstance((*&local_instance)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)pPhysicalDeviceCount; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pPhysicalDeviceCount) |
| { |
| memcpy(*streamPtrPtr, (uint32_t*)pPhysicalDeviceCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| } |
| /* is handle, possibly out */; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)pPhysicalDevices; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pPhysicalDevices) |
| { |
| if ((*(pPhysicalDeviceCount))) |
| { |
| uint8_t* cgen_var_2_0_ptr = (uint8_t*)(*streamPtrPtr); |
| if (pPhysicalDeviceCount) |
| { |
| for (uint32_t k = 0; k < (*(pPhysicalDeviceCount)); ++k) |
| { |
| uint64_t tmpval = (uint64_t)(pPhysicalDevices[k]); |
| memcpy(cgen_var_2_0_ptr + k * 8, &tmpval, sizeof(uint64_t)); |
| } |
| } |
| *streamPtrPtr += 8 * (*(pPhysicalDeviceCount)); |
| } |
| } |
| /* is handle, possibly out */; |
| // 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(sResourceTracker->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_4_0; |
| stream->alloc((void**)&cgen_var_4_0, (*(pPhysicalDeviceCount)) * 8); |
| stream->read((uint64_t*)cgen_var_4_0, (*(pPhysicalDeviceCount)) * 8); |
| stream->handleMapping()->mapHandles_u64_VkPhysicalDevice(cgen_var_4_0, (VkPhysicalDevice*)pPhysicalDevices, (*(pPhysicalDeviceCount))); |
| } |
| } |
| stream->unsetHandleMapping(); |
| VkResult vkEnumeratePhysicalDevices_VkResult_return = (VkResult)0; |
| stream->read(&vkEnumeratePhysicalDevices_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkEnumeratePhysicalDevices_VkResult_return; |
| } |
| |
| void VkEncoder::vkGetPhysicalDeviceFeatures( |
| VkPhysicalDevice physicalDevice, |
| VkPhysicalDeviceFeatures* pFeatures, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkPhysicalDevice local_physicalDevice; |
| local_physicalDevice = physicalDevice; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkPhysicalDeviceFeatures(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceFeatures*)(pFeatures), countPtr); |
| } |
| uint32_t packetSize_vkGetPhysicalDeviceFeatures = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetPhysicalDeviceFeatures); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetPhysicalDeviceFeatures = OP_vkGetPhysicalDeviceFeatures; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetPhysicalDeviceFeatures, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetPhysicalDeviceFeatures, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkPhysicalDevice((*&local_physicalDevice)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkPhysicalDeviceFeatures(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceFeatures*)(pFeatures), streamPtrPtr); |
| unmarshal_VkPhysicalDeviceFeatures(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceFeatures*)(pFeatures)); |
| if (pFeatures) |
| { |
| transform_fromhost_VkPhysicalDeviceFeatures(sResourceTracker, (VkPhysicalDeviceFeatures*)(pFeatures)); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkGetPhysicalDeviceFormatProperties( |
| VkPhysicalDevice physicalDevice, |
| VkFormat format, |
| VkFormatProperties* pFormatProperties, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkPhysicalDevice local_physicalDevice; |
| VkFormat local_format; |
| local_physicalDevice = physicalDevice; |
| local_format = format; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkFormat); |
| count_VkFormatProperties(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkFormatProperties*)(pFormatProperties), countPtr); |
| } |
| uint32_t packetSize_vkGetPhysicalDeviceFormatProperties = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetPhysicalDeviceFormatProperties); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetPhysicalDeviceFormatProperties = OP_vkGetPhysicalDeviceFormatProperties; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetPhysicalDeviceFormatProperties, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkPhysicalDevice((*&local_physicalDevice)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkFormat*)&local_format, sizeof(VkFormat)); |
| *streamPtrPtr += sizeof(VkFormat); |
| reservedmarshal_VkFormatProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkFormatProperties*)(pFormatProperties), streamPtrPtr); |
| unmarshal_VkFormatProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkFormatProperties*)(pFormatProperties)); |
| if (pFormatProperties) |
| { |
| transform_fromhost_VkFormatProperties(sResourceTracker, (VkFormatProperties*)(pFormatProperties)); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties( |
| VkPhysicalDevice physicalDevice, |
| VkFormat format, |
| VkImageType type, |
| VkImageTiling tiling, |
| VkImageUsageFlags usage, |
| VkImageCreateFlags flags, |
| VkImageFormatProperties* pImageFormatProperties, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkFormat); |
| *countPtr += sizeof(VkImageType); |
| *countPtr += sizeof(VkImageTiling); |
| *countPtr += sizeof(VkImageUsageFlags); |
| *countPtr += sizeof(VkImageCreateFlags); |
| count_VkImageFormatProperties(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageFormatProperties*)(pImageFormatProperties), countPtr); |
| } |
| uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetPhysicalDeviceImageFormatProperties); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties = OP_vkGetPhysicalDeviceImageFormatProperties; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetPhysicalDeviceImageFormatProperties, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkPhysicalDevice((*&local_physicalDevice)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkFormat*)&local_format, sizeof(VkFormat)); |
| *streamPtrPtr += sizeof(VkFormat); |
| memcpy(*streamPtrPtr, (VkImageType*)&local_type, sizeof(VkImageType)); |
| *streamPtrPtr += sizeof(VkImageType); |
| memcpy(*streamPtrPtr, (VkImageTiling*)&local_tiling, sizeof(VkImageTiling)); |
| *streamPtrPtr += sizeof(VkImageTiling); |
| memcpy(*streamPtrPtr, (VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags)); |
| *streamPtrPtr += sizeof(VkImageUsageFlags); |
| memcpy(*streamPtrPtr, (VkImageCreateFlags*)&local_flags, sizeof(VkImageCreateFlags)); |
| *streamPtrPtr += sizeof(VkImageCreateFlags); |
| reservedmarshal_VkImageFormatProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageFormatProperties*)(pImageFormatProperties), streamPtrPtr); |
| unmarshal_VkImageFormatProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageFormatProperties*)(pImageFormatProperties)); |
| if (pImageFormatProperties) |
| { |
| transform_fromhost_VkImageFormatProperties(sResourceTracker, (VkImageFormatProperties*)(pImageFormatProperties)); |
| } |
| VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0; |
| stream->read(&vkGetPhysicalDeviceImageFormatProperties_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkGetPhysicalDeviceImageFormatProperties_VkResult_return; |
| } |
| |
| void VkEncoder::vkGetPhysicalDeviceProperties( |
| VkPhysicalDevice physicalDevice, |
| VkPhysicalDeviceProperties* pProperties, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkPhysicalDevice local_physicalDevice; |
| local_physicalDevice = physicalDevice; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkPhysicalDeviceProperties(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceProperties*)(pProperties), countPtr); |
| } |
| uint32_t packetSize_vkGetPhysicalDeviceProperties = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetPhysicalDeviceProperties); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetPhysicalDeviceProperties = OP_vkGetPhysicalDeviceProperties; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetPhysicalDeviceProperties, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetPhysicalDeviceProperties, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkPhysicalDevice((*&local_physicalDevice)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkPhysicalDeviceProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceProperties*)(pProperties), streamPtrPtr); |
| unmarshal_VkPhysicalDeviceProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceProperties*)(pProperties)); |
| if (pProperties) |
| { |
| transform_fromhost_VkPhysicalDeviceProperties(sResourceTracker, (VkPhysicalDeviceProperties*)(pProperties)); |
| } |
| sResourceTracker->on_vkGetPhysicalDeviceProperties(this, physicalDevice, pProperties); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties( |
| VkPhysicalDevice physicalDevice, |
| uint32_t* pQueueFamilyPropertyCount, |
| VkQueueFamilyProperties* pQueueFamilyProperties, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkPhysicalDevice local_physicalDevice; |
| local_physicalDevice = physicalDevice; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pQueueFamilyPropertyCount) |
| { |
| *countPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pQueueFamilyProperties) |
| { |
| if (pQueueFamilyPropertyCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i) |
| { |
| count_VkQueueFamilyProperties(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i), countPtr); |
| } |
| } |
| } |
| } |
| uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetPhysicalDeviceQueueFamilyProperties); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties = OP_vkGetPhysicalDeviceQueueFamilyProperties; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetPhysicalDeviceQueueFamilyProperties, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkPhysicalDevice((*&local_physicalDevice)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pQueueFamilyPropertyCount) |
| { |
| memcpy(*streamPtrPtr, (uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)pQueueFamilyProperties; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pQueueFamilyProperties) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i) |
| { |
| reservedmarshal_VkQueueFamilyProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i), streamPtrPtr); |
| } |
| } |
| // 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"); |
| } |
| if (pQueueFamilyPropertyCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i) |
| { |
| unmarshal_VkQueueFamilyProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i)); |
| } |
| } |
| } |
| if (pQueueFamilyPropertyCount) |
| { |
| if (pQueueFamilyProperties) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i) |
| { |
| transform_fromhost_VkQueueFamilyProperties(sResourceTracker, (VkQueueFamilyProperties*)(pQueueFamilyProperties + i)); |
| } |
| } |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkGetPhysicalDeviceMemoryProperties( |
| VkPhysicalDevice physicalDevice, |
| VkPhysicalDeviceMemoryProperties* pMemoryProperties, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkPhysicalDevice local_physicalDevice; |
| local_physicalDevice = physicalDevice; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkPhysicalDeviceMemoryProperties(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties), countPtr); |
| } |
| uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetPhysicalDeviceMemoryProperties); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetPhysicalDeviceMemoryProperties = OP_vkGetPhysicalDeviceMemoryProperties; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetPhysicalDeviceMemoryProperties, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkPhysicalDevice((*&local_physicalDevice)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkPhysicalDeviceMemoryProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties), streamPtrPtr); |
| unmarshal_VkPhysicalDeviceMemoryProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties)); |
| if (pMemoryProperties) |
| { |
| transform_fromhost_VkPhysicalDeviceMemoryProperties(sResourceTracker, (VkPhysicalDeviceMemoryProperties*)(pMemoryProperties)); |
| } |
| sResourceTracker->on_vkGetPhysicalDeviceMemoryProperties(this, physicalDevice, pMemoryProperties); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| PFN_vkVoidFunction VkEncoder::vkGetInstanceProcAddr( |
| VkInstance instance, |
| const char* pName, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkInstance local_instance; |
| char* local_pName; |
| local_instance = instance; |
| // Avoiding deepcopy for pName |
| local_pName = (char*)pName; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t) + (local_pName ? strlen(local_pName) : 0); |
| } |
| uint32_t packetSize_vkGetInstanceProcAddr = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetInstanceProcAddr); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetInstanceProcAddr = OP_vkGetInstanceProcAddr; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetInstanceProcAddr, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetInstanceProcAddr, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkInstance((*&local_instance)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| { |
| uint32_t l = local_pName ? strlen(local_pName): 0; |
| memcpy(*streamPtrPtr, (uint32_t*)&l, sizeof(uint32_t)); |
| android::base::Stream::toBe32((uint8_t*)*streamPtrPtr); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (char*)local_pName, l); |
| *streamPtrPtr += l; |
| } |
| PFN_vkVoidFunction vkGetInstanceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0; |
| stream->read(&vkGetInstanceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkGetInstanceProcAddr_PFN_vkVoidFunction_return; |
| } |
| |
| PFN_vkVoidFunction VkEncoder::vkGetDeviceProcAddr( |
| VkDevice device, |
| const char* pName, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| char* local_pName; |
| local_device = device; |
| // Avoiding deepcopy for pName |
| local_pName = (char*)pName; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t) + (local_pName ? strlen(local_pName) : 0); |
| } |
| uint32_t packetSize_vkGetDeviceProcAddr = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetDeviceProcAddr); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetDeviceProcAddr = OP_vkGetDeviceProcAddr; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetDeviceProcAddr, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetDeviceProcAddr, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| { |
| uint32_t l = local_pName ? strlen(local_pName): 0; |
| memcpy(*streamPtrPtr, (uint32_t*)&l, sizeof(uint32_t)); |
| android::base::Stream::toBe32((uint8_t*)*streamPtrPtr); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (char*)local_pName, l); |
| *streamPtrPtr += l; |
| } |
| PFN_vkVoidFunction vkGetDeviceProcAddr_PFN_vkVoidFunction_return = (PFN_vkVoidFunction)0; |
| stream->read(&vkGetDeviceProcAddr_PFN_vkVoidFunction_return, sizeof(PFN_vkVoidFunction)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkGetDeviceProcAddr_PFN_vkVoidFunction_return; |
| } |
| |
| VkResult VkEncoder::vkCreateDevice( |
| VkPhysicalDevice physicalDevice, |
| const VkDeviceCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkDevice* pDevice, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfo, (VkDeviceCreateInfo*)(local_pCreateInfo)); |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pCreateInfo) |
| { |
| transform_tohost_VkDeviceCreateInfo(sResourceTracker, (VkDeviceCreateInfo*)(local_pCreateInfo)); |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkDeviceCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkDeviceCreateInfo*)(local_pCreateInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkCreateDevice = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreateDevice); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreateDevice = OP_vkCreateDevice; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreateDevice, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreateDevice, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkPhysicalDevice((*&local_physicalDevice)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkDeviceCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkDeviceCreateInfo*)(local_pCreateInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = (uint64_t)((*pDevice)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_3; |
| stream->read((uint64_t*)&cgen_var_3, 8); |
| stream->handleMapping()->mapHandles_u64_VkDevice(&cgen_var_3, (VkDevice*)pDevice, 1); |
| stream->unsetHandleMapping(); |
| VkResult vkCreateDevice_VkResult_return = (VkResult)0; |
| stream->read(&vkCreateDevice_VkResult_return, sizeof(VkResult)); |
| sResourceTracker->on_vkCreateDevice(this, vkCreateDevice_VkResult_return, physicalDevice, pCreateInfo, pAllocator, pDevice); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreateDevice_VkResult_return; |
| } |
| |
| void VkEncoder::vkDestroyDevice( |
| VkDevice device, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| sResourceTracker->on_vkDestroyDevice_pre(this, device, pAllocator); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkDestroyDevice = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDestroyDevice); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDestroyDevice = OP_vkDestroyDevice; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDestroyDevice, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDestroyDevice, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkDevice((VkDevice*)&device); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkEnumerateInstanceExtensionProperties( |
| const char* pLayerName, |
| uint32_t* pPropertyCount, |
| VkExtensionProperties* pProperties, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| char* local_pLayerName; |
| // Avoiding deepcopy for pLayerName |
| local_pLayerName = (char*)pLayerName; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| if (sFeatureBits & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT) |
| { |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pLayerName) |
| { |
| *countPtr += sizeof(uint32_t) + (local_pLayerName ? strlen(local_pLayerName) : 0); |
| } |
| } |
| else |
| { |
| *countPtr += sizeof(uint32_t) + (local_pLayerName ? strlen(local_pLayerName) : 0); |
| } |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pPropertyCount) |
| { |
| *countPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pProperties) |
| { |
| if (pPropertyCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| count_VkExtensionProperties(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkExtensionProperties*)(pProperties + i), countPtr); |
| } |
| } |
| } |
| } |
| uint32_t packetSize_vkEnumerateInstanceExtensionProperties = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkEnumerateInstanceExtensionProperties); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkEnumerateInstanceExtensionProperties = OP_vkEnumerateInstanceExtensionProperties; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkEnumerateInstanceExtensionProperties, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| if (stream->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT) |
| { |
| // WARNING PTR CHECK |
| uint64_t cgen_var_0 = (uint64_t)(uintptr_t)local_pLayerName; |
| memcpy((*streamPtrPtr), &cgen_var_0, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pLayerName) |
| { |
| { |
| uint32_t l = local_pLayerName ? strlen(local_pLayerName): 0; |
| memcpy(*streamPtrPtr, (uint32_t*)&l, sizeof(uint32_t)); |
| android::base::Stream::toBe32((uint8_t*)*streamPtrPtr); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (char*)local_pLayerName, l); |
| *streamPtrPtr += l; |
| } |
| } |
| } |
| else |
| { |
| { |
| uint32_t l = local_pLayerName ? strlen(local_pLayerName): 0; |
| memcpy(*streamPtrPtr, (uint32_t*)&l, sizeof(uint32_t)); |
| android::base::Stream::toBe32((uint8_t*)*streamPtrPtr); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (char*)local_pLayerName, l); |
| *streamPtrPtr += l; |
| } |
| } |
| // WARNING PTR CHECK |
| uint64_t cgen_var_0 = (uint64_t)(uintptr_t)pPropertyCount; |
| memcpy((*streamPtrPtr), &cgen_var_0, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pPropertyCount) |
| { |
| memcpy(*streamPtrPtr, (uint32_t*)pPropertyCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)pProperties; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pProperties) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| reservedmarshal_VkExtensionProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkExtensionProperties*)(pProperties + i), streamPtrPtr); |
| } |
| } |
| // 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"); |
| } |
| if (pPropertyCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| unmarshal_VkExtensionProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkExtensionProperties*)(pProperties + i)); |
| } |
| } |
| } |
| if (pPropertyCount) |
| { |
| if (pProperties) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| transform_fromhost_VkExtensionProperties(sResourceTracker, (VkExtensionProperties*)(pProperties + i)); |
| } |
| } |
| } |
| VkResult vkEnumerateInstanceExtensionProperties_VkResult_return = (VkResult)0; |
| stream->read(&vkEnumerateInstanceExtensionProperties_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkEnumerateInstanceExtensionProperties_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkEnumerateDeviceExtensionProperties( |
| VkPhysicalDevice physicalDevice, |
| const char* pLayerName, |
| uint32_t* pPropertyCount, |
| VkExtensionProperties* pProperties, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkPhysicalDevice local_physicalDevice; |
| char* local_pLayerName; |
| local_physicalDevice = physicalDevice; |
| // Avoiding deepcopy for pLayerName |
| local_pLayerName = (char*)pLayerName; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| if (sFeatureBits & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT) |
| { |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pLayerName) |
| { |
| *countPtr += sizeof(uint32_t) + (local_pLayerName ? strlen(local_pLayerName) : 0); |
| } |
| } |
| else |
| { |
| *countPtr += sizeof(uint32_t) + (local_pLayerName ? strlen(local_pLayerName) : 0); |
| } |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pPropertyCount) |
| { |
| *countPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pProperties) |
| { |
| if (pPropertyCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| count_VkExtensionProperties(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkExtensionProperties*)(pProperties + i), countPtr); |
| } |
| } |
| } |
| } |
| uint32_t packetSize_vkEnumerateDeviceExtensionProperties = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkEnumerateDeviceExtensionProperties); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkEnumerateDeviceExtensionProperties = OP_vkEnumerateDeviceExtensionProperties; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkEnumerateDeviceExtensionProperties, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkEnumerateDeviceExtensionProperties, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkPhysicalDevice((*&local_physicalDevice)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| if (stream->getFeatureBits() & VULKAN_STREAM_FEATURE_NULL_OPTIONAL_STRINGS_BIT) |
| { |
| // WARNING PTR CHECK |
| uint64_t cgen_var_0_0 = (uint64_t)(uintptr_t)local_pLayerName; |
| memcpy((*streamPtrPtr), &cgen_var_0_0, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pLayerName) |
| { |
| { |
| uint32_t l = local_pLayerName ? strlen(local_pLayerName): 0; |
| memcpy(*streamPtrPtr, (uint32_t*)&l, sizeof(uint32_t)); |
| android::base::Stream::toBe32((uint8_t*)*streamPtrPtr); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (char*)local_pLayerName, l); |
| *streamPtrPtr += l; |
| } |
| } |
| } |
| else |
| { |
| { |
| uint32_t l = local_pLayerName ? strlen(local_pLayerName): 0; |
| memcpy(*streamPtrPtr, (uint32_t*)&l, sizeof(uint32_t)); |
| android::base::Stream::toBe32((uint8_t*)*streamPtrPtr); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (char*)local_pLayerName, l); |
| *streamPtrPtr += l; |
| } |
| } |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)pPropertyCount; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pPropertyCount) |
| { |
| memcpy(*streamPtrPtr, (uint32_t*)pPropertyCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)pProperties; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pProperties) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| reservedmarshal_VkExtensionProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkExtensionProperties*)(pProperties + i), streamPtrPtr); |
| } |
| } |
| // 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"); |
| } |
| if (pPropertyCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| unmarshal_VkExtensionProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkExtensionProperties*)(pProperties + i)); |
| } |
| } |
| } |
| if (pPropertyCount) |
| { |
| if (pProperties) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| transform_fromhost_VkExtensionProperties(sResourceTracker, (VkExtensionProperties*)(pProperties + i)); |
| } |
| } |
| } |
| VkResult vkEnumerateDeviceExtensionProperties_VkResult_return = (VkResult)0; |
| stream->read(&vkEnumerateDeviceExtensionProperties_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkEnumerateDeviceExtensionProperties_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkEnumerateInstanceLayerProperties( |
| uint32_t* pPropertyCount, |
| VkLayerProperties* pProperties, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pPropertyCount) |
| { |
| *countPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pProperties) |
| { |
| if (pPropertyCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| count_VkLayerProperties(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkLayerProperties*)(pProperties + i), countPtr); |
| } |
| } |
| } |
| } |
| uint32_t packetSize_vkEnumerateInstanceLayerProperties = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkEnumerateInstanceLayerProperties); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkEnumerateInstanceLayerProperties = OP_vkEnumerateInstanceLayerProperties; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkEnumerateInstanceLayerProperties, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkEnumerateInstanceLayerProperties, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| // WARNING PTR CHECK |
| uint64_t cgen_var_0 = (uint64_t)(uintptr_t)pPropertyCount; |
| memcpy((*streamPtrPtr), &cgen_var_0, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pPropertyCount) |
| { |
| memcpy(*streamPtrPtr, (uint32_t*)pPropertyCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)pProperties; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pProperties) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| reservedmarshal_VkLayerProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkLayerProperties*)(pProperties + i), streamPtrPtr); |
| } |
| } |
| // 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"); |
| } |
| if (pPropertyCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| unmarshal_VkLayerProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkLayerProperties*)(pProperties + i)); |
| } |
| } |
| } |
| if (pPropertyCount) |
| { |
| if (pProperties) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| transform_fromhost_VkLayerProperties(sResourceTracker, (VkLayerProperties*)(pProperties + i)); |
| } |
| } |
| } |
| VkResult vkEnumerateInstanceLayerProperties_VkResult_return = (VkResult)0; |
| stream->read(&vkEnumerateInstanceLayerProperties_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkEnumerateInstanceLayerProperties_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkEnumerateDeviceLayerProperties( |
| VkPhysicalDevice physicalDevice, |
| uint32_t* pPropertyCount, |
| VkLayerProperties* pProperties, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkPhysicalDevice local_physicalDevice; |
| local_physicalDevice = physicalDevice; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pPropertyCount) |
| { |
| *countPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pProperties) |
| { |
| if (pPropertyCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| count_VkLayerProperties(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkLayerProperties*)(pProperties + i), countPtr); |
| } |
| } |
| } |
| } |
| uint32_t packetSize_vkEnumerateDeviceLayerProperties = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkEnumerateDeviceLayerProperties); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkEnumerateDeviceLayerProperties = OP_vkEnumerateDeviceLayerProperties; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkEnumerateDeviceLayerProperties, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkEnumerateDeviceLayerProperties, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkPhysicalDevice((*&local_physicalDevice)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)pPropertyCount; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pPropertyCount) |
| { |
| memcpy(*streamPtrPtr, (uint32_t*)pPropertyCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)pProperties; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pProperties) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| reservedmarshal_VkLayerProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkLayerProperties*)(pProperties + i), streamPtrPtr); |
| } |
| } |
| // 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"); |
| } |
| if (pPropertyCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| unmarshal_VkLayerProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkLayerProperties*)(pProperties + i)); |
| } |
| } |
| } |
| if (pPropertyCount) |
| { |
| if (pProperties) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| transform_fromhost_VkLayerProperties(sResourceTracker, (VkLayerProperties*)(pProperties + i)); |
| } |
| } |
| } |
| VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0; |
| stream->read(&vkEnumerateDeviceLayerProperties_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkEnumerateDeviceLayerProperties_VkResult_return; |
| } |
| |
| void VkEncoder::vkGetDeviceQueue( |
| VkDevice device, |
| uint32_t queueFamilyIndex, |
| uint32_t queueIndex, |
| VkQueue* pQueue, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| uint32_t local_queueFamilyIndex; |
| uint32_t local_queueIndex; |
| local_device = device; |
| local_queueFamilyIndex = queueFamilyIndex; |
| local_queueIndex = queueIndex; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkGetDeviceQueue = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetDeviceQueue); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetDeviceQueue = OP_vkGetDeviceQueue; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetDeviceQueue, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetDeviceQueue, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_queueFamilyIndex, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_queueIndex, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| /* is handle, possibly out */; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = (uint64_t)((*pQueue)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_2; |
| stream->read((uint64_t*)&cgen_var_2, 8); |
| stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_2, (VkQueue*)pQueue, 1); |
| stream->unsetHandleMapping(); |
| sResourceTracker->on_vkGetDeviceQueue(this, device, queueFamilyIndex, queueIndex, pQueue); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkQueueSubmit( |
| VkQueue queue, |
| uint32_t submitCount, |
| const VkSubmitInfo* pSubmits, |
| VkFence fence, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, 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(sResourceTracker, (VkSubmitInfo*)(local_pSubmits + i)); |
| } |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i) |
| { |
| count_VkSubmitInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSubmitInfo*)(local_pSubmits + i), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| } |
| uint32_t packetSize_vkQueueSubmit = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkQueueSubmit); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkQueueSubmit = OP_vkQueueSubmit; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkQueueSubmit, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkQueueSubmit, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkQueue((*&local_queue)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_submitCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((submitCount)); ++i) |
| { |
| reservedmarshal_VkSubmitInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSubmitInfo*)(local_pSubmits + i), streamPtrPtr); |
| } |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkFence((*&local_fence)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| VkResult vkQueueSubmit_VkResult_return = (VkResult)0; |
| stream->read(&vkQueueSubmit_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkQueueSubmit_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkQueueWaitIdle( |
| VkQueue queue, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkQueue local_queue; |
| local_queue = queue; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| } |
| uint32_t packetSize_vkQueueWaitIdle = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkQueueWaitIdle); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkQueueWaitIdle = OP_vkQueueWaitIdle; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkQueueWaitIdle, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkQueueWaitIdle, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkQueue((*&local_queue)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0; |
| stream->read(&vkQueueWaitIdle_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkQueueWaitIdle_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkDeviceWaitIdle( |
| VkDevice device, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| local_device = device; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| } |
| uint32_t packetSize_vkDeviceWaitIdle = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDeviceWaitIdle); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDeviceWaitIdle = OP_vkDeviceWaitIdle; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDeviceWaitIdle, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDeviceWaitIdle, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0; |
| stream->read(&vkDeviceWaitIdle_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkDeviceWaitIdle_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkAllocateMemory( |
| VkDevice device, |
| const VkMemoryAllocateInfo* pAllocateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkDeviceMemory* pMemory, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocateInfo, (VkMemoryAllocateInfo*)(local_pAllocateInfo)); |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocateInfo) |
| { |
| transform_tohost_VkMemoryAllocateInfo(sResourceTracker, (VkMemoryAllocateInfo*)(local_pAllocateInfo)); |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkMemoryAllocateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMemoryAllocateInfo*)(local_pAllocateInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkAllocateMemory = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkAllocateMemory); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkAllocateMemory = OP_vkAllocateMemory; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkAllocateMemory, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkAllocateMemory, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkMemoryAllocateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMemoryAllocateInfo*)(local_pAllocateInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = (uint64_t)((*pMemory)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_3; |
| stream->read((uint64_t*)&cgen_var_3, 8); |
| stream->handleMapping()->mapHandles_u64_VkDeviceMemory(&cgen_var_3, (VkDeviceMemory*)pMemory, 1); |
| stream->unsetHandleMapping(); |
| VkResult vkAllocateMemory_VkResult_return = (VkResult)0; |
| stream->read(&vkAllocateMemory_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkAllocateMemory_VkResult_return; |
| } |
| |
| void VkEncoder::vkFreeMemory( |
| VkDevice device, |
| VkDeviceMemory memory, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| sResourceTracker->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0); |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkFreeMemory = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkFreeMemory); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkFreeMemory = OP_vkFreeMemory; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkFreeMemory, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkFreeMemory, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkDeviceMemory((*&local_memory)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkDeviceMemory((VkDeviceMemory*)&memory); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkMapMemory( |
| VkDevice device, |
| VkDeviceMemory memory, |
| VkDeviceSize offset, |
| VkDeviceSize size, |
| VkMemoryMapFlags flags, |
| void** ppData, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| VkResult vkMapMemory_VkResult_return = (VkResult)0; |
| vkMapMemory_VkResult_return = sResourceTracker->on_vkMapMemory(this, VK_SUCCESS, device, memory, offset, size, flags, ppData); |
| return vkMapMemory_VkResult_return; |
| } |
| |
| void VkEncoder::vkUnmapMemory( |
| VkDevice device, |
| VkDeviceMemory memory, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| sResourceTracker->on_vkUnmapMemory(this, device, memory); |
| } |
| |
| VkResult VkEncoder::vkFlushMappedMemoryRanges( |
| VkDevice device, |
| uint32_t memoryRangeCount, |
| const VkMappedMemoryRange* pMemoryRanges, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkFlushMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges)); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i)); |
| } |
| } |
| if (local_pMemoryRanges) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i) |
| { |
| transform_tohost_VkMappedMemoryRange(sResourceTracker, (VkMappedMemoryRange*)(local_pMemoryRanges + i)); |
| } |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i) |
| { |
| count_VkMappedMemoryRange(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMappedMemoryRange*)(local_pMemoryRanges + i), countPtr); |
| } |
| } |
| uint32_t packetSize_vkFlushMappedMemoryRanges = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkFlushMappedMemoryRanges); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkFlushMappedMemoryRanges = OP_vkFlushMappedMemoryRanges; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkFlushMappedMemoryRanges, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkFlushMappedMemoryRanges, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_memoryRangeCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i) |
| { |
| reservedmarshal_VkMappedMemoryRange(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMappedMemoryRange*)(local_pMemoryRanges + i), streamPtrPtr); |
| } |
| if (!sResourceTracker->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 = sResourceTracker->getMappedPointer(memory); |
| auto actualSize = size == VK_WHOLE_SIZE ? sResourceTracker->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); |
| } |
| } |
| VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0; |
| stream->read(&vkFlushMappedMemoryRanges_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkFlushMappedMemoryRanges_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkInvalidateMappedMemoryRanges( |
| VkDevice device, |
| uint32_t memoryRangeCount, |
| const VkMappedMemoryRange* pMemoryRanges, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| VALIDATE_RET(VkResult, VK_SUCCESS, mImpl->validation()->on_vkInvalidateMappedMemoryRanges(this, VK_SUCCESS, device, memoryRangeCount, pMemoryRanges)); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pMemoryRanges + i, (VkMappedMemoryRange*)(local_pMemoryRanges + i)); |
| } |
| } |
| if (local_pMemoryRanges) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i) |
| { |
| transform_tohost_VkMappedMemoryRange(sResourceTracker, (VkMappedMemoryRange*)(local_pMemoryRanges + i)); |
| } |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i) |
| { |
| count_VkMappedMemoryRange(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMappedMemoryRange*)(local_pMemoryRanges + i), countPtr); |
| } |
| } |
| uint32_t packetSize_vkInvalidateMappedMemoryRanges = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkInvalidateMappedMemoryRanges); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkInvalidateMappedMemoryRanges = OP_vkInvalidateMappedMemoryRanges; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkInvalidateMappedMemoryRanges, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkInvalidateMappedMemoryRanges, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_memoryRangeCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((memoryRangeCount)); ++i) |
| { |
| reservedmarshal_VkMappedMemoryRange(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMappedMemoryRange*)(local_pMemoryRanges + i), streamPtrPtr); |
| } |
| VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0; |
| stream->read(&vkInvalidateMappedMemoryRanges_VkResult_return, sizeof(VkResult)); |
| if (!sResourceTracker->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 = sResourceTracker->getMappedPointer(memory); |
| auto actualSize = size == VK_WHOLE_SIZE ? sResourceTracker->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); |
| } |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkInvalidateMappedMemoryRanges_VkResult_return; |
| } |
| |
| void VkEncoder::vkGetDeviceMemoryCommitment( |
| VkDevice device, |
| VkDeviceMemory memory, |
| VkDeviceSize* pCommittedMemoryInBytes, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| VkDeviceMemory local_memory; |
| local_device = device; |
| local_memory = memory; |
| sResourceTracker->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)nullptr, 0, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0); |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkDeviceSize); |
| } |
| uint32_t packetSize_vkGetDeviceMemoryCommitment = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetDeviceMemoryCommitment); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetDeviceMemoryCommitment = OP_vkGetDeviceMemoryCommitment; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetDeviceMemoryCommitment, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetDeviceMemoryCommitment, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkDeviceMemory((*&local_memory)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize)); |
| *streamPtrPtr += sizeof(VkDeviceSize); |
| stream->read((VkDeviceSize*)pCommittedMemoryInBytes, sizeof(VkDeviceSize)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkBindBufferMemory( |
| VkDevice device, |
| VkBuffer buffer, |
| VkDeviceMemory memory, |
| VkDeviceSize memoryOffset, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| VkBuffer local_buffer; |
| VkDeviceMemory local_memory; |
| VkDeviceSize local_memoryOffset; |
| local_device = device; |
| local_buffer = buffer; |
| local_memory = memory; |
| local_memoryOffset = memoryOffset; |
| sResourceTracker->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)&local_memoryOffset, 1, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0); |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_2; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkDeviceSize); |
| } |
| uint32_t packetSize_vkBindBufferMemory = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkBindBufferMemory); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkBindBufferMemory = OP_vkBindBufferMemory; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkBindBufferMemory, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkBindBufferMemory, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkBuffer((*&local_buffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = get_host_u64_VkDeviceMemory((*&local_memory)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize)); |
| *streamPtrPtr += sizeof(VkDeviceSize); |
| VkResult vkBindBufferMemory_VkResult_return = (VkResult)0; |
| stream->read(&vkBindBufferMemory_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkBindBufferMemory_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkBindImageMemory( |
| VkDevice device, |
| VkImage image, |
| VkDeviceMemory memory, |
| VkDeviceSize memoryOffset, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| VkImage local_image; |
| VkDeviceMemory local_memory; |
| VkDeviceSize local_memoryOffset; |
| local_device = device; |
| local_image = image; |
| local_memory = memory; |
| local_memoryOffset = memoryOffset; |
| sResourceTracker->deviceMemoryTransform_tohost((VkDeviceMemory*)&local_memory, 1, (VkDeviceSize*)&local_memoryOffset, 1, (VkDeviceSize*)nullptr, 0, (uint32_t*)nullptr, 0, (uint32_t*)nullptr, 0); |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_2; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkDeviceSize); |
| } |
| uint32_t packetSize_vkBindImageMemory = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkBindImageMemory); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkBindImageMemory = OP_vkBindImageMemory; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkBindImageMemory, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkBindImageMemory, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkImage((*&local_image)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = get_host_u64_VkDeviceMemory((*&local_memory)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkDeviceSize*)&local_memoryOffset, sizeof(VkDeviceSize)); |
| *streamPtrPtr += sizeof(VkDeviceSize); |
| VkResult vkBindImageMemory_VkResult_return = (VkResult)0; |
| stream->read(&vkBindImageMemory_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkBindImageMemory_VkResult_return; |
| } |
| |
| void VkEncoder::vkGetBufferMemoryRequirements( |
| VkDevice device, |
| VkBuffer buffer, |
| VkMemoryRequirements* pMemoryRequirements, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| VkBuffer local_buffer; |
| local_device = device; |
| local_buffer = buffer; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| count_VkMemoryRequirements(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMemoryRequirements*)(pMemoryRequirements), countPtr); |
| } |
| uint32_t packetSize_vkGetBufferMemoryRequirements = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetBufferMemoryRequirements); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetBufferMemoryRequirements = OP_vkGetBufferMemoryRequirements; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetBufferMemoryRequirements, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetBufferMemoryRequirements, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkBuffer((*&local_buffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkMemoryRequirements(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMemoryRequirements*)(pMemoryRequirements), streamPtrPtr); |
| unmarshal_VkMemoryRequirements(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMemoryRequirements*)(pMemoryRequirements)); |
| if (pMemoryRequirements) |
| { |
| transform_fromhost_VkMemoryRequirements(sResourceTracker, (VkMemoryRequirements*)(pMemoryRequirements)); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkGetImageMemoryRequirements( |
| VkDevice device, |
| VkImage image, |
| VkMemoryRequirements* pMemoryRequirements, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| VkImage local_image; |
| local_device = device; |
| local_image = image; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| count_VkMemoryRequirements(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMemoryRequirements*)(pMemoryRequirements), countPtr); |
| } |
| uint32_t packetSize_vkGetImageMemoryRequirements = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetImageMemoryRequirements); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetImageMemoryRequirements = OP_vkGetImageMemoryRequirements; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetImageMemoryRequirements, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetImageMemoryRequirements, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkImage((*&local_image)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkMemoryRequirements(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMemoryRequirements*)(pMemoryRequirements), streamPtrPtr); |
| unmarshal_VkMemoryRequirements(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMemoryRequirements*)(pMemoryRequirements)); |
| if (pMemoryRequirements) |
| { |
| transform_fromhost_VkMemoryRequirements(sResourceTracker, (VkMemoryRequirements*)(pMemoryRequirements)); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkGetImageSparseMemoryRequirements( |
| VkDevice device, |
| VkImage image, |
| uint32_t* pSparseMemoryRequirementCount, |
| VkSparseImageMemoryRequirements* pSparseMemoryRequirements, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| VkImage local_image; |
| local_device = device; |
| local_image = image; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pSparseMemoryRequirementCount) |
| { |
| *countPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pSparseMemoryRequirements) |
| { |
| if (pSparseMemoryRequirementCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i) |
| { |
| count_VkSparseImageMemoryRequirements(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i), countPtr); |
| } |
| } |
| } |
| } |
| uint32_t packetSize_vkGetImageSparseMemoryRequirements = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetImageSparseMemoryRequirements); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetImageSparseMemoryRequirements = OP_vkGetImageSparseMemoryRequirements; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetImageSparseMemoryRequirements, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetImageSparseMemoryRequirements, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkImage((*&local_image)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pSparseMemoryRequirementCount) |
| { |
| memcpy(*streamPtrPtr, (uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| uint64_t cgen_var_3 = (uint64_t)(uintptr_t)pSparseMemoryRequirements; |
| memcpy((*streamPtrPtr), &cgen_var_3, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pSparseMemoryRequirements) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i) |
| { |
| reservedmarshal_VkSparseImageMemoryRequirements(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i), streamPtrPtr); |
| } |
| } |
| // 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"); |
| } |
| if (pSparseMemoryRequirementCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i) |
| { |
| unmarshal_VkSparseImageMemoryRequirements(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i)); |
| } |
| } |
| } |
| if (pSparseMemoryRequirementCount) |
| { |
| if (pSparseMemoryRequirements) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i) |
| { |
| transform_fromhost_VkSparseImageMemoryRequirements(sResourceTracker, (VkSparseImageMemoryRequirements*)(pSparseMemoryRequirements + i)); |
| } |
| } |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties( |
| VkPhysicalDevice physicalDevice, |
| VkFormat format, |
| VkImageType type, |
| VkSampleCountFlagBits samples, |
| VkImageUsageFlags usage, |
| VkImageTiling tiling, |
| uint32_t* pPropertyCount, |
| VkSparseImageFormatProperties* pProperties, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkFormat); |
| *countPtr += sizeof(VkImageType); |
| *countPtr += sizeof(VkSampleCountFlagBits); |
| *countPtr += sizeof(VkImageUsageFlags); |
| *countPtr += sizeof(VkImageTiling); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pPropertyCount) |
| { |
| *countPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pProperties) |
| { |
| if (pPropertyCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| count_VkSparseImageFormatProperties(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSparseImageFormatProperties*)(pProperties + i), countPtr); |
| } |
| } |
| } |
| } |
| uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetPhysicalDeviceSparseImageFormatProperties); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties = OP_vkGetPhysicalDeviceSparseImageFormatProperties; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetPhysicalDeviceSparseImageFormatProperties, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkPhysicalDevice((*&local_physicalDevice)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkFormat*)&local_format, sizeof(VkFormat)); |
| *streamPtrPtr += sizeof(VkFormat); |
| memcpy(*streamPtrPtr, (VkImageType*)&local_type, sizeof(VkImageType)); |
| *streamPtrPtr += sizeof(VkImageType); |
| memcpy(*streamPtrPtr, (VkSampleCountFlagBits*)&local_samples, sizeof(VkSampleCountFlagBits)); |
| *streamPtrPtr += sizeof(VkSampleCountFlagBits); |
| memcpy(*streamPtrPtr, (VkImageUsageFlags*)&local_usage, sizeof(VkImageUsageFlags)); |
| *streamPtrPtr += sizeof(VkImageUsageFlags); |
| memcpy(*streamPtrPtr, (VkImageTiling*)&local_tiling, sizeof(VkImageTiling)); |
| *streamPtrPtr += sizeof(VkImageTiling); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)pPropertyCount; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pPropertyCount) |
| { |
| memcpy(*streamPtrPtr, (uint32_t*)pPropertyCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)pProperties; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pProperties) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| reservedmarshal_VkSparseImageFormatProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSparseImageFormatProperties*)(pProperties + i), streamPtrPtr); |
| } |
| } |
| // 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"); |
| } |
| if (pPropertyCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| unmarshal_VkSparseImageFormatProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSparseImageFormatProperties*)(pProperties + i)); |
| } |
| } |
| } |
| if (pPropertyCount) |
| { |
| if (pProperties) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| transform_fromhost_VkSparseImageFormatProperties(sResourceTracker, (VkSparseImageFormatProperties*)(pProperties + i)); |
| } |
| } |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkQueueBindSparse( |
| VkQueue queue, |
| uint32_t bindInfoCount, |
| const VkBindSparseInfo* pBindInfo, |
| VkFence fence, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, 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(sResourceTracker, (VkBindSparseInfo*)(local_pBindInfo + i)); |
| } |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) |
| { |
| count_VkBindSparseInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBindSparseInfo*)(local_pBindInfo + i), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| } |
| uint32_t packetSize_vkQueueBindSparse = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkQueueBindSparse); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkQueueBindSparse = OP_vkQueueBindSparse; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkQueueBindSparse, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkQueueBindSparse, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkQueue((*&local_queue)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_bindInfoCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) |
| { |
| reservedmarshal_VkBindSparseInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBindSparseInfo*)(local_pBindInfo + i), streamPtrPtr); |
| } |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkFence((*&local_fence)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| VkResult vkQueueBindSparse_VkResult_return = (VkResult)0; |
| stream->read(&vkQueueBindSparse_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkQueueBindSparse_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkCreateFence( |
| VkDevice device, |
| const VkFenceCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkFence* pFence, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfo, (VkFenceCreateInfo*)(local_pCreateInfo)); |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pCreateInfo) |
| { |
| transform_tohost_VkFenceCreateInfo(sResourceTracker, (VkFenceCreateInfo*)(local_pCreateInfo)); |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkFenceCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkFenceCreateInfo*)(local_pCreateInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkCreateFence = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreateFence); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreateFence = OP_vkCreateFence; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreateFence, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreateFence, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkFenceCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkFenceCreateInfo*)(local_pCreateInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = (uint64_t)((*pFence)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_3; |
| stream->read((uint64_t*)&cgen_var_3, 8); |
| stream->handleMapping()->mapHandles_u64_VkFence(&cgen_var_3, (VkFence*)pFence, 1); |
| stream->unsetHandleMapping(); |
| VkResult vkCreateFence_VkResult_return = (VkResult)0; |
| stream->read(&vkCreateFence_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreateFence_VkResult_return; |
| } |
| |
| void VkEncoder::vkDestroyFence( |
| VkDevice device, |
| VkFence fence, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkDestroyFence = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDestroyFence); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDestroyFence = OP_vkDestroyFence; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDestroyFence, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDestroyFence, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkFence((*&local_fence)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkFence((VkFence*)&fence); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkResetFences( |
| VkDevice device, |
| uint32_t fenceCount, |
| const VkFence* pFences, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| uint32_t local_fenceCount; |
| VkFence* local_pFences; |
| local_device = device; |
| local_fenceCount = fenceCount; |
| // Avoiding deepcopy for pFences |
| local_pFences = (VkFence*)pFences; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| if (((fenceCount))) |
| { |
| *countPtr += ((fenceCount)) * 8; |
| } |
| } |
| uint32_t packetSize_vkResetFences = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkResetFences); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkResetFences = OP_vkResetFences; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkResetFences, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkResetFences, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_fenceCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| if (((fenceCount))) |
| { |
| uint8_t* cgen_var_1_ptr = (uint8_t*)(*streamPtrPtr); |
| for (uint32_t k = 0; k < ((fenceCount)); ++k) |
| { |
| uint64_t tmpval = get_host_u64_VkFence(local_pFences[k]); |
| memcpy(cgen_var_1_ptr + k * 8, &tmpval, sizeof(uint64_t)); |
| } |
| *streamPtrPtr += 8 * ((fenceCount)); |
| } |
| VkResult vkResetFences_VkResult_return = (VkResult)0; |
| stream->read(&vkResetFences_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkResetFences_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkGetFenceStatus( |
| VkDevice device, |
| VkFence fence, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| VkFence local_fence; |
| local_device = device; |
| local_fence = fence; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| } |
| uint32_t packetSize_vkGetFenceStatus = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetFenceStatus); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetFenceStatus = OP_vkGetFenceStatus; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetFenceStatus, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetFenceStatus, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkFence((*&local_fence)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| VkResult vkGetFenceStatus_VkResult_return = (VkResult)0; |
| stream->read(&vkGetFenceStatus_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkGetFenceStatus_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkWaitForFences( |
| VkDevice device, |
| uint32_t fenceCount, |
| const VkFence* pFences, |
| VkBool32 waitAll, |
| uint64_t timeout, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| uint32_t local_fenceCount; |
| VkFence* local_pFences; |
| VkBool32 local_waitAll; |
| uint64_t local_timeout; |
| local_device = device; |
| local_fenceCount = fenceCount; |
| // Avoiding deepcopy for pFences |
| local_pFences = (VkFence*)pFences; |
| local_waitAll = waitAll; |
| local_timeout = timeout; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| if (((fenceCount))) |
| { |
| *countPtr += ((fenceCount)) * 8; |
| } |
| *countPtr += sizeof(VkBool32); |
| *countPtr += sizeof(uint64_t); |
| } |
| uint32_t packetSize_vkWaitForFences = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkWaitForFences); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkWaitForFences = OP_vkWaitForFences; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkWaitForFences, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkWaitForFences, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_fenceCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| if (((fenceCount))) |
| { |
| uint8_t* cgen_var_1_ptr = (uint8_t*)(*streamPtrPtr); |
| for (uint32_t k = 0; k < ((fenceCount)); ++k) |
| { |
| uint64_t tmpval = get_host_u64_VkFence(local_pFences[k]); |
| memcpy(cgen_var_1_ptr + k * 8, &tmpval, sizeof(uint64_t)); |
| } |
| *streamPtrPtr += 8 * ((fenceCount)); |
| } |
| memcpy(*streamPtrPtr, (VkBool32*)&local_waitAll, sizeof(VkBool32)); |
| *streamPtrPtr += sizeof(VkBool32); |
| memcpy(*streamPtrPtr, (uint64_t*)&local_timeout, sizeof(uint64_t)); |
| *streamPtrPtr += sizeof(uint64_t); |
| VkResult vkWaitForFences_VkResult_return = (VkResult)0; |
| stream->read(&vkWaitForFences_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkWaitForFences_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkCreateSemaphore( |
| VkDevice device, |
| const VkSemaphoreCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkSemaphore* pSemaphore, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfo, (VkSemaphoreCreateInfo*)(local_pCreateInfo)); |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pCreateInfo) |
| { |
| transform_tohost_VkSemaphoreCreateInfo(sResourceTracker, (VkSemaphoreCreateInfo*)(local_pCreateInfo)); |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkSemaphoreCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSemaphoreCreateInfo*)(local_pCreateInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkCreateSemaphore = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreateSemaphore); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreateSemaphore = OP_vkCreateSemaphore; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreateSemaphore, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreateSemaphore, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkSemaphoreCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSemaphoreCreateInfo*)(local_pCreateInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = (uint64_t)((*pSemaphore)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_3; |
| stream->read((uint64_t*)&cgen_var_3, 8); |
| stream->handleMapping()->mapHandles_u64_VkSemaphore(&cgen_var_3, (VkSemaphore*)pSemaphore, 1); |
| stream->unsetHandleMapping(); |
| VkResult vkCreateSemaphore_VkResult_return = (VkResult)0; |
| stream->read(&vkCreateSemaphore_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreateSemaphore_VkResult_return; |
| } |
| |
| void VkEncoder::vkDestroySemaphore( |
| VkDevice device, |
| VkSemaphore semaphore, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkDestroySemaphore = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDestroySemaphore); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDestroySemaphore = OP_vkDestroySemaphore; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDestroySemaphore, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDestroySemaphore, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkSemaphore((*&local_semaphore)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkSemaphore((VkSemaphore*)&semaphore); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkCreateEvent( |
| VkDevice device, |
| const VkEventCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkEvent* pEvent, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfo, (VkEventCreateInfo*)(local_pCreateInfo)); |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pCreateInfo) |
| { |
| transform_tohost_VkEventCreateInfo(sResourceTracker, (VkEventCreateInfo*)(local_pCreateInfo)); |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkEventCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkEventCreateInfo*)(local_pCreateInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkCreateEvent = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreateEvent); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreateEvent = OP_vkCreateEvent; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreateEvent, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreateEvent, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkEventCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkEventCreateInfo*)(local_pCreateInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = (uint64_t)((*pEvent)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_3; |
| stream->read((uint64_t*)&cgen_var_3, 8); |
| stream->handleMapping()->mapHandles_u64_VkEvent(&cgen_var_3, (VkEvent*)pEvent, 1); |
| stream->unsetHandleMapping(); |
| VkResult vkCreateEvent_VkResult_return = (VkResult)0; |
| stream->read(&vkCreateEvent_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreateEvent_VkResult_return; |
| } |
| |
| void VkEncoder::vkDestroyEvent( |
| VkDevice device, |
| VkEvent event, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkDestroyEvent = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDestroyEvent); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDestroyEvent = OP_vkDestroyEvent; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDestroyEvent, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDestroyEvent, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkEvent((*&local_event)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkEvent((VkEvent*)&event); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkGetEventStatus( |
| VkDevice device, |
| VkEvent event, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| VkEvent local_event; |
| local_device = device; |
| local_event = event; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| } |
| uint32_t packetSize_vkGetEventStatus = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetEventStatus); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetEventStatus = OP_vkGetEventStatus; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetEventStatus, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetEventStatus, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkEvent((*&local_event)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| VkResult vkGetEventStatus_VkResult_return = (VkResult)0; |
| stream->read(&vkGetEventStatus_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkGetEventStatus_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkSetEvent( |
| VkDevice device, |
| VkEvent event, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| VkEvent local_event; |
| local_device = device; |
| local_event = event; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| } |
| uint32_t packetSize_vkSetEvent = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkSetEvent); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkSetEvent = OP_vkSetEvent; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkSetEvent, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkSetEvent, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkEvent((*&local_event)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| VkResult vkSetEvent_VkResult_return = (VkResult)0; |
| stream->read(&vkSetEvent_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkSetEvent_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkResetEvent( |
| VkDevice device, |
| VkEvent event, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| VkEvent local_event; |
| local_device = device; |
| local_event = event; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| } |
| uint32_t packetSize_vkResetEvent = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkResetEvent); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkResetEvent = OP_vkResetEvent; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkResetEvent, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkResetEvent, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkEvent((*&local_event)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| VkResult vkResetEvent_VkResult_return = (VkResult)0; |
| stream->read(&vkResetEvent_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkResetEvent_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkCreateQueryPool( |
| VkDevice device, |
| const VkQueryPoolCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkQueryPool* pQueryPool, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfo, (VkQueryPoolCreateInfo*)(local_pCreateInfo)); |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pCreateInfo) |
| { |
| transform_tohost_VkQueryPoolCreateInfo(sResourceTracker, (VkQueryPoolCreateInfo*)(local_pCreateInfo)); |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkQueryPoolCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkQueryPoolCreateInfo*)(local_pCreateInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkCreateQueryPool = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreateQueryPool); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreateQueryPool = OP_vkCreateQueryPool; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreateQueryPool, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreateQueryPool, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkQueryPoolCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkQueryPoolCreateInfo*)(local_pCreateInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = (uint64_t)((*pQueryPool)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_3; |
| stream->read((uint64_t*)&cgen_var_3, 8); |
| stream->handleMapping()->mapHandles_u64_VkQueryPool(&cgen_var_3, (VkQueryPool*)pQueryPool, 1); |
| stream->unsetHandleMapping(); |
| VkResult vkCreateQueryPool_VkResult_return = (VkResult)0; |
| stream->read(&vkCreateQueryPool_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreateQueryPool_VkResult_return; |
| } |
| |
| void VkEncoder::vkDestroyQueryPool( |
| VkDevice device, |
| VkQueryPool queryPool, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkDestroyQueryPool = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDestroyQueryPool); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDestroyQueryPool = OP_vkDestroyQueryPool; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDestroyQueryPool, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDestroyQueryPool, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkQueryPool((*&local_queryPool)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkQueryPool((VkQueryPool*)&queryPool); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkGetQueryPoolResults( |
| VkDevice device, |
| VkQueryPool queryPool, |
| uint32_t firstQuery, |
| uint32_t queryCount, |
| size_t dataSize, |
| void* pData, |
| VkDeviceSize stride, |
| VkQueryResultFlags flags, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| *countPtr += 8; |
| *countPtr += ((dataSize)) * sizeof(uint8_t); |
| *countPtr += sizeof(VkDeviceSize); |
| *countPtr += sizeof(VkQueryResultFlags); |
| } |
| uint32_t packetSize_vkGetQueryPoolResults = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetQueryPoolResults); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetQueryPoolResults = OP_vkGetQueryPoolResults; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetQueryPoolResults, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetQueryPoolResults, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkQueryPool((*&local_queryPool)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_firstQuery, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_queryCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| uint64_t cgen_var_2 = (uint64_t)local_dataSize; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| memcpy(*streamPtrPtr, (void*)pData, ((dataSize)) * sizeof(uint8_t)); |
| *streamPtrPtr += ((dataSize)) * sizeof(uint8_t); |
| memcpy(*streamPtrPtr, (VkDeviceSize*)&local_stride, sizeof(VkDeviceSize)); |
| *streamPtrPtr += sizeof(VkDeviceSize); |
| memcpy(*streamPtrPtr, (VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags)); |
| *streamPtrPtr += sizeof(VkQueryResultFlags); |
| stream->read((void*)pData, ((dataSize)) * sizeof(uint8_t)); |
| VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0; |
| stream->read(&vkGetQueryPoolResults_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkGetQueryPoolResults_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkCreateBuffer( |
| VkDevice device, |
| const VkBufferCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkBuffer* pBuffer, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfo, (VkBufferCreateInfo*)(local_pCreateInfo)); |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pCreateInfo) |
| { |
| transform_tohost_VkBufferCreateInfo(sResourceTracker, (VkBufferCreateInfo*)(local_pCreateInfo)); |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkBufferCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBufferCreateInfo*)(local_pCreateInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkCreateBuffer = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreateBuffer); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreateBuffer = OP_vkCreateBuffer; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreateBuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreateBuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkBufferCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBufferCreateInfo*)(local_pCreateInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = (uint64_t)((*pBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_3; |
| stream->read((uint64_t*)&cgen_var_3, 8); |
| stream->handleMapping()->mapHandles_u64_VkBuffer(&cgen_var_3, (VkBuffer*)pBuffer, 1); |
| stream->unsetHandleMapping(); |
| VkResult vkCreateBuffer_VkResult_return = (VkResult)0; |
| stream->read(&vkCreateBuffer_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreateBuffer_VkResult_return; |
| } |
| |
| void VkEncoder::vkDestroyBuffer( |
| VkDevice device, |
| VkBuffer buffer, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkDestroyBuffer = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDestroyBuffer); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDestroyBuffer = OP_vkDestroyBuffer; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDestroyBuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDestroyBuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkBuffer((*&local_buffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkBuffer((VkBuffer*)&buffer); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkCreateBufferView( |
| VkDevice device, |
| const VkBufferViewCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkBufferView* pView, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfo, (VkBufferViewCreateInfo*)(local_pCreateInfo)); |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pCreateInfo) |
| { |
| transform_tohost_VkBufferViewCreateInfo(sResourceTracker, (VkBufferViewCreateInfo*)(local_pCreateInfo)); |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkBufferViewCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBufferViewCreateInfo*)(local_pCreateInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkCreateBufferView = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreateBufferView); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreateBufferView = OP_vkCreateBufferView; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreateBufferView, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreateBufferView, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkBufferViewCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBufferViewCreateInfo*)(local_pCreateInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = (uint64_t)((*pView)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_3; |
| stream->read((uint64_t*)&cgen_var_3, 8); |
| stream->handleMapping()->mapHandles_u64_VkBufferView(&cgen_var_3, (VkBufferView*)pView, 1); |
| stream->unsetHandleMapping(); |
| VkResult vkCreateBufferView_VkResult_return = (VkResult)0; |
| stream->read(&vkCreateBufferView_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreateBufferView_VkResult_return; |
| } |
| |
| void VkEncoder::vkDestroyBufferView( |
| VkDevice device, |
| VkBufferView bufferView, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkDestroyBufferView = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDestroyBufferView); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDestroyBufferView = OP_vkDestroyBufferView; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDestroyBufferView, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDestroyBufferView, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkBufferView((*&local_bufferView)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkBufferView((VkBufferView*)&bufferView); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkCreateImage( |
| VkDevice device, |
| const VkImageCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkImage* pImage, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfo, (VkImageCreateInfo*)(local_pCreateInfo)); |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| sResourceTracker->unwrap_VkNativeBufferANDROID(pCreateInfo, local_pCreateInfo); |
| local_pAllocator = nullptr; |
| if (local_pCreateInfo) |
| { |
| sResourceTracker->transformImpl_VkImageCreateInfo_tohost(local_pCreateInfo, 1); |
| transform_tohost_VkImageCreateInfo(sResourceTracker, (VkImageCreateInfo*)(local_pCreateInfo)); |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkImageCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageCreateInfo*)(local_pCreateInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkCreateImage = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreateImage); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreateImage = OP_vkCreateImage; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreateImage, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreateImage, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkImageCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageCreateInfo*)(local_pCreateInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = (uint64_t)((*pImage)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_3; |
| stream->read((uint64_t*)&cgen_var_3, 8); |
| stream->handleMapping()->mapHandles_u64_VkImage(&cgen_var_3, (VkImage*)pImage, 1); |
| stream->unsetHandleMapping(); |
| VkResult vkCreateImage_VkResult_return = (VkResult)0; |
| stream->read(&vkCreateImage_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreateImage_VkResult_return; |
| } |
| |
| void VkEncoder::vkDestroyImage( |
| VkDevice device, |
| VkImage image, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkDestroyImage = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDestroyImage); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDestroyImage = OP_vkDestroyImage; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDestroyImage, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDestroyImage, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkImage((*&local_image)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkImage((VkImage*)&image); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkGetImageSubresourceLayout( |
| VkDevice device, |
| VkImage image, |
| const VkImageSubresource* pSubresource, |
| VkSubresourceLayout* pLayout, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pSubresource, (VkImageSubresource*)(local_pSubresource)); |
| } |
| if (local_pSubresource) |
| { |
| transform_tohost_VkImageSubresource(sResourceTracker, (VkImageSubresource*)(local_pSubresource)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| count_VkImageSubresource(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageSubresource*)(local_pSubresource), countPtr); |
| count_VkSubresourceLayout(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSubresourceLayout*)(pLayout), countPtr); |
| } |
| uint32_t packetSize_vkGetImageSubresourceLayout = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetImageSubresourceLayout); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetImageSubresourceLayout = OP_vkGetImageSubresourceLayout; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetImageSubresourceLayout, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetImageSubresourceLayout, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkImage((*&local_image)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkImageSubresource(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageSubresource*)(local_pSubresource), streamPtrPtr); |
| reservedmarshal_VkSubresourceLayout(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSubresourceLayout*)(pLayout), streamPtrPtr); |
| unmarshal_VkSubresourceLayout(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSubresourceLayout*)(pLayout)); |
| if (pLayout) |
| { |
| transform_fromhost_VkSubresourceLayout(sResourceTracker, (VkSubresourceLayout*)(pLayout)); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkCreateImageView( |
| VkDevice device, |
| const VkImageViewCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkImageView* pView, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfo, (VkImageViewCreateInfo*)(local_pCreateInfo)); |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pCreateInfo) |
| { |
| transform_tohost_VkImageViewCreateInfo(sResourceTracker, (VkImageViewCreateInfo*)(local_pCreateInfo)); |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkImageViewCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageViewCreateInfo*)(local_pCreateInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkCreateImageView = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreateImageView); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreateImageView = OP_vkCreateImageView; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreateImageView, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreateImageView, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkImageViewCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageViewCreateInfo*)(local_pCreateInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = (uint64_t)((*pView)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_3; |
| stream->read((uint64_t*)&cgen_var_3, 8); |
| stream->handleMapping()->mapHandles_u64_VkImageView(&cgen_var_3, (VkImageView*)pView, 1); |
| stream->unsetHandleMapping(); |
| VkResult vkCreateImageView_VkResult_return = (VkResult)0; |
| stream->read(&vkCreateImageView_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreateImageView_VkResult_return; |
| } |
| |
| void VkEncoder::vkDestroyImageView( |
| VkDevice device, |
| VkImageView imageView, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkDestroyImageView = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDestroyImageView); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDestroyImageView = OP_vkDestroyImageView; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDestroyImageView, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDestroyImageView, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkImageView((*&local_imageView)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkImageView((VkImageView*)&imageView); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkCreateShaderModule( |
| VkDevice device, |
| const VkShaderModuleCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkShaderModule* pShaderModule, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfo, (VkShaderModuleCreateInfo*)(local_pCreateInfo)); |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pCreateInfo) |
| { |
| transform_tohost_VkShaderModuleCreateInfo(sResourceTracker, (VkShaderModuleCreateInfo*)(local_pCreateInfo)); |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkShaderModuleCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkShaderModuleCreateInfo*)(local_pCreateInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkCreateShaderModule = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreateShaderModule); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreateShaderModule = OP_vkCreateShaderModule; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreateShaderModule, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreateShaderModule, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkShaderModuleCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkShaderModuleCreateInfo*)(local_pCreateInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = (uint64_t)((*pShaderModule)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_3; |
| stream->read((uint64_t*)&cgen_var_3, 8); |
| stream->handleMapping()->mapHandles_u64_VkShaderModule(&cgen_var_3, (VkShaderModule*)pShaderModule, 1); |
| stream->unsetHandleMapping(); |
| VkResult vkCreateShaderModule_VkResult_return = (VkResult)0; |
| stream->read(&vkCreateShaderModule_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreateShaderModule_VkResult_return; |
| } |
| |
| void VkEncoder::vkDestroyShaderModule( |
| VkDevice device, |
| VkShaderModule shaderModule, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkDestroyShaderModule = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDestroyShaderModule); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDestroyShaderModule = OP_vkDestroyShaderModule; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDestroyShaderModule, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDestroyShaderModule, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkShaderModule((*&local_shaderModule)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkShaderModule((VkShaderModule*)&shaderModule); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkCreatePipelineCache( |
| VkDevice device, |
| const VkPipelineCacheCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkPipelineCache* pPipelineCache, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfo, (VkPipelineCacheCreateInfo*)(local_pCreateInfo)); |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pCreateInfo) |
| { |
| transform_tohost_VkPipelineCacheCreateInfo(sResourceTracker, (VkPipelineCacheCreateInfo*)(local_pCreateInfo)); |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkPipelineCacheCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPipelineCacheCreateInfo*)(local_pCreateInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkCreatePipelineCache = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreatePipelineCache); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreatePipelineCache = OP_vkCreatePipelineCache; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreatePipelineCache, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreatePipelineCache, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkPipelineCacheCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPipelineCacheCreateInfo*)(local_pCreateInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = (uint64_t)((*pPipelineCache)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_3; |
| stream->read((uint64_t*)&cgen_var_3, 8); |
| stream->handleMapping()->mapHandles_u64_VkPipelineCache(&cgen_var_3, (VkPipelineCache*)pPipelineCache, 1); |
| stream->unsetHandleMapping(); |
| VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0; |
| stream->read(&vkCreatePipelineCache_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreatePipelineCache_VkResult_return; |
| } |
| |
| void VkEncoder::vkDestroyPipelineCache( |
| VkDevice device, |
| VkPipelineCache pipelineCache, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkDestroyPipelineCache = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDestroyPipelineCache); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDestroyPipelineCache = OP_vkDestroyPipelineCache; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDestroyPipelineCache, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDestroyPipelineCache, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkPipelineCache((*&local_pipelineCache)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkPipelineCache((VkPipelineCache*)&pipelineCache); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkGetPipelineCacheData( |
| VkDevice device, |
| VkPipelineCache pipelineCache, |
| size_t* pDataSize, |
| void* pData, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| VkPipelineCache local_pipelineCache; |
| local_device = device; |
| local_pipelineCache = pipelineCache; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pDataSize) |
| { |
| *countPtr += 8; |
| } |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pData) |
| { |
| if (pDataSize) |
| { |
| *countPtr += (*(pDataSize)) * sizeof(uint8_t); |
| } |
| } |
| } |
| uint32_t packetSize_vkGetPipelineCacheData = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetPipelineCacheData); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetPipelineCacheData = OP_vkGetPipelineCacheData; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetPipelineCacheData, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetPipelineCacheData, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkPipelineCache((*&local_pipelineCache)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)pDataSize; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pDataSize) |
| { |
| uint64_t cgen_var_2_0 = (uint64_t)(*pDataSize); |
| memcpy((*streamPtrPtr), &cgen_var_2_0, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| } |
| // WARNING PTR CHECK |
| uint64_t cgen_var_3 = (uint64_t)(uintptr_t)pData; |
| memcpy((*streamPtrPtr), &cgen_var_3, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pData) |
| { |
| memcpy(*streamPtrPtr, (void*)pData, (*(pDataSize)) * sizeof(uint8_t)); |
| *streamPtrPtr += (*(pDataSize)) * sizeof(uint8_t); |
| } |
| // 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)); |
| } |
| VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0; |
| stream->read(&vkGetPipelineCacheData_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkGetPipelineCacheData_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkMergePipelineCaches( |
| VkDevice device, |
| VkPipelineCache dstCache, |
| uint32_t srcCacheCount, |
| const VkPipelineCache* pSrcCaches, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| VkPipelineCache local_dstCache; |
| uint32_t local_srcCacheCount; |
| VkPipelineCache* local_pSrcCaches; |
| local_device = device; |
| local_dstCache = dstCache; |
| local_srcCacheCount = srcCacheCount; |
| // Avoiding deepcopy for pSrcCaches |
| local_pSrcCaches = (VkPipelineCache*)pSrcCaches; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| if (((srcCacheCount))) |
| { |
| *countPtr += ((srcCacheCount)) * 8; |
| } |
| } |
| uint32_t packetSize_vkMergePipelineCaches = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkMergePipelineCaches); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkMergePipelineCaches = OP_vkMergePipelineCaches; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkMergePipelineCaches, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkMergePipelineCaches, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkPipelineCache((*&local_dstCache)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_srcCacheCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| if (((srcCacheCount))) |
| { |
| uint8_t* cgen_var_2_ptr = (uint8_t*)(*streamPtrPtr); |
| for (uint32_t k = 0; k < ((srcCacheCount)); ++k) |
| { |
| uint64_t tmpval = get_host_u64_VkPipelineCache(local_pSrcCaches[k]); |
| memcpy(cgen_var_2_ptr + k * 8, &tmpval, sizeof(uint64_t)); |
| } |
| *streamPtrPtr += 8 * ((srcCacheCount)); |
| } |
| VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0; |
| stream->read(&vkMergePipelineCaches_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkMergePipelineCaches_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkCreateGraphicsPipelines( |
| VkDevice device, |
| VkPipelineCache pipelineCache, |
| uint32_t createInfoCount, |
| const VkGraphicsPipelineCreateInfo* pCreateInfos, |
| const VkAllocationCallbacks* pAllocator, |
| VkPipeline* pPipelines, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfos + i, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i)); |
| } |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pCreateInfos) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i) |
| { |
| transform_tohost_VkGraphicsPipelineCreateInfo(sResourceTracker, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i)); |
| } |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i) |
| { |
| count_VkGraphicsPipelineCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i), countPtr); |
| } |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| if (((createInfoCount))) |
| { |
| *countPtr += ((createInfoCount)) * 8; |
| } |
| } |
| uint32_t packetSize_vkCreateGraphicsPipelines = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreateGraphicsPipelines); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreateGraphicsPipelines = OP_vkCreateGraphicsPipelines; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreateGraphicsPipelines, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreateGraphicsPipelines, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkPipelineCache((*&local_pipelineCache)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_createInfoCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i) |
| { |
| reservedmarshal_VkGraphicsPipelineCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkGraphicsPipelineCreateInfo*)(local_pCreateInfos + i), streamPtrPtr); |
| } |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| if (((createInfoCount))) |
| { |
| uint8_t* cgen_var_3_ptr = (uint8_t*)(*streamPtrPtr); |
| for (uint32_t k = 0; k < ((createInfoCount)); ++k) |
| { |
| uint64_t tmpval = (uint64_t)(pPipelines[k]); |
| memcpy(cgen_var_3_ptr + k * 8, &tmpval, sizeof(uint64_t)); |
| } |
| *streamPtrPtr += 8 * ((createInfoCount)); |
| } |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| if (((createInfoCount))) |
| { |
| uint64_t* cgen_var_4; |
| stream->alloc((void**)&cgen_var_4, ((createInfoCount)) * 8); |
| stream->read((uint64_t*)cgen_var_4, ((createInfoCount)) * 8); |
| stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_4, (VkPipeline*)pPipelines, ((createInfoCount))); |
| } |
| stream->unsetHandleMapping(); |
| VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0; |
| stream->read(&vkCreateGraphicsPipelines_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreateGraphicsPipelines_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkCreateComputePipelines( |
| VkDevice device, |
| VkPipelineCache pipelineCache, |
| uint32_t createInfoCount, |
| const VkComputePipelineCreateInfo* pCreateInfos, |
| const VkAllocationCallbacks* pAllocator, |
| VkPipeline* pPipelines, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfos + i, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i)); |
| } |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pCreateInfos) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i) |
| { |
| transform_tohost_VkComputePipelineCreateInfo(sResourceTracker, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i)); |
| } |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i) |
| { |
| count_VkComputePipelineCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i), countPtr); |
| } |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| if (((createInfoCount))) |
| { |
| *countPtr += ((createInfoCount)) * 8; |
| } |
| } |
| uint32_t packetSize_vkCreateComputePipelines = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreateComputePipelines); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreateComputePipelines = OP_vkCreateComputePipelines; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreateComputePipelines, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreateComputePipelines, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkPipelineCache((*&local_pipelineCache)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_createInfoCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((createInfoCount)); ++i) |
| { |
| reservedmarshal_VkComputePipelineCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkComputePipelineCreateInfo*)(local_pCreateInfos + i), streamPtrPtr); |
| } |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| if (((createInfoCount))) |
| { |
| uint8_t* cgen_var_3_ptr = (uint8_t*)(*streamPtrPtr); |
| for (uint32_t k = 0; k < ((createInfoCount)); ++k) |
| { |
| uint64_t tmpval = (uint64_t)(pPipelines[k]); |
| memcpy(cgen_var_3_ptr + k * 8, &tmpval, sizeof(uint64_t)); |
| } |
| *streamPtrPtr += 8 * ((createInfoCount)); |
| } |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| if (((createInfoCount))) |
| { |
| uint64_t* cgen_var_4; |
| stream->alloc((void**)&cgen_var_4, ((createInfoCount)) * 8); |
| stream->read((uint64_t*)cgen_var_4, ((createInfoCount)) * 8); |
| stream->handleMapping()->mapHandles_u64_VkPipeline(cgen_var_4, (VkPipeline*)pPipelines, ((createInfoCount))); |
| } |
| stream->unsetHandleMapping(); |
| VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0; |
| stream->read(&vkCreateComputePipelines_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreateComputePipelines_VkResult_return; |
| } |
| |
| void VkEncoder::vkDestroyPipeline( |
| VkDevice device, |
| VkPipeline pipeline, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkDestroyPipeline = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDestroyPipeline); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDestroyPipeline = OP_vkDestroyPipeline; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDestroyPipeline, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDestroyPipeline, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkPipeline((*&local_pipeline)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkPipeline((VkPipeline*)&pipeline); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkCreatePipelineLayout( |
| VkDevice device, |
| const VkPipelineLayoutCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkPipelineLayout* pPipelineLayout, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfo, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo)); |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pCreateInfo) |
| { |
| transform_tohost_VkPipelineLayoutCreateInfo(sResourceTracker, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo)); |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkPipelineLayoutCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkCreatePipelineLayout = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreatePipelineLayout); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreatePipelineLayout = OP_vkCreatePipelineLayout; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreatePipelineLayout, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreatePipelineLayout, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkPipelineLayoutCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPipelineLayoutCreateInfo*)(local_pCreateInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = (uint64_t)((*pPipelineLayout)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_3; |
| stream->read((uint64_t*)&cgen_var_3, 8); |
| stream->handleMapping()->mapHandles_u64_VkPipelineLayout(&cgen_var_3, (VkPipelineLayout*)pPipelineLayout, 1); |
| stream->unsetHandleMapping(); |
| VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0; |
| stream->read(&vkCreatePipelineLayout_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreatePipelineLayout_VkResult_return; |
| } |
| |
| void VkEncoder::vkDestroyPipelineLayout( |
| VkDevice device, |
| VkPipelineLayout pipelineLayout, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkDestroyPipelineLayout = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDestroyPipelineLayout); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDestroyPipelineLayout = OP_vkDestroyPipelineLayout; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDestroyPipelineLayout, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDestroyPipelineLayout, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkPipelineLayout((*&local_pipelineLayout)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkPipelineLayout((VkPipelineLayout*)&pipelineLayout); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkCreateSampler( |
| VkDevice device, |
| const VkSamplerCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkSampler* pSampler, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfo, (VkSamplerCreateInfo*)(local_pCreateInfo)); |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pCreateInfo) |
| { |
| transform_tohost_VkSamplerCreateInfo(sResourceTracker, (VkSamplerCreateInfo*)(local_pCreateInfo)); |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkSamplerCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSamplerCreateInfo*)(local_pCreateInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkCreateSampler = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreateSampler); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreateSampler = OP_vkCreateSampler; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreateSampler, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreateSampler, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkSamplerCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSamplerCreateInfo*)(local_pCreateInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = (uint64_t)((*pSampler)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_3; |
| stream->read((uint64_t*)&cgen_var_3, 8); |
| stream->handleMapping()->mapHandles_u64_VkSampler(&cgen_var_3, (VkSampler*)pSampler, 1); |
| stream->unsetHandleMapping(); |
| VkResult vkCreateSampler_VkResult_return = (VkResult)0; |
| stream->read(&vkCreateSampler_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreateSampler_VkResult_return; |
| } |
| |
| void VkEncoder::vkDestroySampler( |
| VkDevice device, |
| VkSampler sampler, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkDestroySampler = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDestroySampler); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDestroySampler = OP_vkDestroySampler; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDestroySampler, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDestroySampler, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkSampler((*&local_sampler)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkSampler((VkSampler*)&sampler); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkCreateDescriptorSetLayout( |
| VkDevice device, |
| const VkDescriptorSetLayoutCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkDescriptorSetLayout* pSetLayout, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfo, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo)); |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pCreateInfo) |
| { |
| transform_tohost_VkDescriptorSetLayoutCreateInfo(sResourceTracker, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo)); |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkDescriptorSetLayoutCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkCreateDescriptorSetLayout = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreateDescriptorSetLayout); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreateDescriptorSetLayout = OP_vkCreateDescriptorSetLayout; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreateDescriptorSetLayout, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreateDescriptorSetLayout, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkDescriptorSetLayoutCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkDescriptorSetLayoutCreateInfo*)(local_pCreateInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = (uint64_t)((*pSetLayout)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_3; |
| stream->read((uint64_t*)&cgen_var_3, 8); |
| stream->handleMapping()->mapHandles_u64_VkDescriptorSetLayout(&cgen_var_3, (VkDescriptorSetLayout*)pSetLayout, 1); |
| stream->unsetHandleMapping(); |
| VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0; |
| stream->read(&vkCreateDescriptorSetLayout_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreateDescriptorSetLayout_VkResult_return; |
| } |
| |
| void VkEncoder::vkDestroyDescriptorSetLayout( |
| VkDevice device, |
| VkDescriptorSetLayout descriptorSetLayout, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkDestroyDescriptorSetLayout = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDestroyDescriptorSetLayout); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDestroyDescriptorSetLayout = OP_vkDestroyDescriptorSetLayout; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDestroyDescriptorSetLayout, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDestroyDescriptorSetLayout, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkDescriptorSetLayout((*&local_descriptorSetLayout)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkDescriptorSetLayout((VkDescriptorSetLayout*)&descriptorSetLayout); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkCreateDescriptorPool( |
| VkDevice device, |
| const VkDescriptorPoolCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkDescriptorPool* pDescriptorPool, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfo, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo)); |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pCreateInfo) |
| { |
| transform_tohost_VkDescriptorPoolCreateInfo(sResourceTracker, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo)); |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkDescriptorPoolCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkCreateDescriptorPool = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreateDescriptorPool); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreateDescriptorPool = OP_vkCreateDescriptorPool; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreateDescriptorPool, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreateDescriptorPool, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkDescriptorPoolCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkDescriptorPoolCreateInfo*)(local_pCreateInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = (uint64_t)((*pDescriptorPool)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_3; |
| stream->read((uint64_t*)&cgen_var_3, 8); |
| stream->handleMapping()->mapHandles_u64_VkDescriptorPool(&cgen_var_3, (VkDescriptorPool*)pDescriptorPool, 1); |
| stream->unsetHandleMapping(); |
| VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0; |
| stream->read(&vkCreateDescriptorPool_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreateDescriptorPool_VkResult_return; |
| } |
| |
| void VkEncoder::vkDestroyDescriptorPool( |
| VkDevice device, |
| VkDescriptorPool descriptorPool, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkDestroyDescriptorPool = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDestroyDescriptorPool); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDestroyDescriptorPool = OP_vkDestroyDescriptorPool; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDestroyDescriptorPool, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDestroyDescriptorPool, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkDescriptorPool((*&local_descriptorPool)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkDescriptorPool((VkDescriptorPool*)&descriptorPool); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkResetDescriptorPool( |
| VkDevice device, |
| VkDescriptorPool descriptorPool, |
| VkDescriptorPoolResetFlags flags, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| VkDescriptorPool local_descriptorPool; |
| VkDescriptorPoolResetFlags local_flags; |
| local_device = device; |
| local_descriptorPool = descriptorPool; |
| local_flags = flags; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkDescriptorPoolResetFlags); |
| } |
| uint32_t packetSize_vkResetDescriptorPool = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkResetDescriptorPool); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkResetDescriptorPool = OP_vkResetDescriptorPool; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkResetDescriptorPool, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkResetDescriptorPool, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkDescriptorPool((*&local_descriptorPool)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkDescriptorPoolResetFlags*)&local_flags, sizeof(VkDescriptorPoolResetFlags)); |
| *streamPtrPtr += sizeof(VkDescriptorPoolResetFlags); |
| VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0; |
| stream->read(&vkResetDescriptorPool_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkResetDescriptorPool_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkAllocateDescriptorSets( |
| VkDevice device, |
| const VkDescriptorSetAllocateInfo* pAllocateInfo, |
| VkDescriptorSet* pDescriptorSets, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocateInfo, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo)); |
| } |
| if (local_pAllocateInfo) |
| { |
| transform_tohost_VkDescriptorSetAllocateInfo(sResourceTracker, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkDescriptorSetAllocateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo), countPtr); |
| if (pAllocateInfo->descriptorSetCount) |
| { |
| *countPtr += pAllocateInfo->descriptorSetCount * 8; |
| } |
| } |
| uint32_t packetSize_vkAllocateDescriptorSets = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkAllocateDescriptorSets); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkAllocateDescriptorSets = OP_vkAllocateDescriptorSets; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkAllocateDescriptorSets, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkAllocateDescriptorSets, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkDescriptorSetAllocateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkDescriptorSetAllocateInfo*)(local_pAllocateInfo), streamPtrPtr); |
| /* is handle, possibly out */; |
| if (pAllocateInfo->descriptorSetCount) |
| { |
| uint8_t* cgen_var_1_ptr = (uint8_t*)(*streamPtrPtr); |
| for (uint32_t k = 0; k < pAllocateInfo->descriptorSetCount; ++k) |
| { |
| uint64_t tmpval = (uint64_t)(pDescriptorSets[k]); |
| memcpy(cgen_var_1_ptr + k * 8, &tmpval, sizeof(uint64_t)); |
| } |
| *streamPtrPtr += 8 * pAllocateInfo->descriptorSetCount; |
| } |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| if (pAllocateInfo->descriptorSetCount) |
| { |
| uint64_t* cgen_var_2; |
| stream->alloc((void**)&cgen_var_2, pAllocateInfo->descriptorSetCount * 8); |
| stream->read((uint64_t*)cgen_var_2, pAllocateInfo->descriptorSetCount * 8); |
| stream->handleMapping()->mapHandles_u64_VkDescriptorSet(cgen_var_2, (VkDescriptorSet*)pDescriptorSets, pAllocateInfo->descriptorSetCount); |
| } |
| stream->unsetHandleMapping(); |
| VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0; |
| stream->read(&vkAllocateDescriptorSets_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkAllocateDescriptorSets_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkFreeDescriptorSets( |
| VkDevice device, |
| VkDescriptorPool descriptorPool, |
| uint32_t descriptorSetCount, |
| const VkDescriptorSet* pDescriptorSets, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| VkDescriptorPool local_descriptorPool; |
| uint32_t local_descriptorSetCount; |
| VkDescriptorSet* local_pDescriptorSets; |
| local_device = device; |
| local_descriptorPool = descriptorPool; |
| local_descriptorSetCount = descriptorSetCount; |
| // Avoiding deepcopy for pDescriptorSets |
| local_pDescriptorSets = (VkDescriptorSet*)pDescriptorSets; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pDescriptorSets) |
| { |
| if (((descriptorSetCount))) |
| { |
| *countPtr += ((descriptorSetCount)) * 8; |
| } |
| } |
| } |
| uint32_t packetSize_vkFreeDescriptorSets = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkFreeDescriptorSets); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkFreeDescriptorSets = OP_vkFreeDescriptorSets; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkFreeDescriptorSets, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkFreeDescriptorSets, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkDescriptorPool((*&local_descriptorPool)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_descriptorSetCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pDescriptorSets; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pDescriptorSets) |
| { |
| if (((descriptorSetCount))) |
| { |
| uint8_t* cgen_var_2_0_ptr = (uint8_t*)(*streamPtrPtr); |
| for (uint32_t k = 0; k < ((descriptorSetCount)); ++k) |
| { |
| uint64_t tmpval = get_host_u64_VkDescriptorSet(local_pDescriptorSets[k]); |
| memcpy(cgen_var_2_0_ptr + k * 8, &tmpval, sizeof(uint64_t)); |
| } |
| *streamPtrPtr += 8 * ((descriptorSetCount)); |
| } |
| } |
| VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0; |
| stream->read(&vkFreeDescriptorSets_VkResult_return, sizeof(VkResult)); |
| if (pDescriptorSets) |
| { |
| sResourceTracker->destroyMapping()->mapHandles_VkDescriptorSet((VkDescriptorSet*)pDescriptorSets, ((descriptorSetCount))); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkFreeDescriptorSets_VkResult_return; |
| } |
| |
| void VkEncoder::vkUpdateDescriptorSets( |
| VkDevice device, |
| uint32_t descriptorWriteCount, |
| const VkWriteDescriptorSet* pDescriptorWrites, |
| uint32_t descriptorCopyCount, |
| const VkCopyDescriptorSet* pDescriptorCopies, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, 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, VK_STRUCTURE_TYPE_MAX_ENUM, pDescriptorCopies + i, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i)); |
| } |
| } |
| if (local_pDescriptorWrites) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i) |
| { |
| transform_tohost_VkWriteDescriptorSet(sResourceTracker, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i)); |
| } |
| } |
| if (local_pDescriptorCopies) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i) |
| { |
| transform_tohost_VkCopyDescriptorSet(sResourceTracker, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i)); |
| } |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i) |
| { |
| count_VkWriteDescriptorSet(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i), countPtr); |
| } |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i) |
| { |
| count_VkCopyDescriptorSet(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i), countPtr); |
| } |
| } |
| uint32_t packetSize_vkUpdateDescriptorSets = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkUpdateDescriptorSets); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkUpdateDescriptorSets = OP_vkUpdateDescriptorSets; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkUpdateDescriptorSets, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkUpdateDescriptorSets, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_descriptorWriteCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((descriptorWriteCount)); ++i) |
| { |
| reservedmarshal_VkWriteDescriptorSet(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkWriteDescriptorSet*)(local_pDescriptorWrites + i), streamPtrPtr); |
| } |
| memcpy(*streamPtrPtr, (uint32_t*)&local_descriptorCopyCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((descriptorCopyCount)); ++i) |
| { |
| reservedmarshal_VkCopyDescriptorSet(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkCopyDescriptorSet*)(local_pDescriptorCopies + i), streamPtrPtr); |
| } |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkCreateFramebuffer( |
| VkDevice device, |
| const VkFramebufferCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkFramebuffer* pFramebuffer, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfo, (VkFramebufferCreateInfo*)(local_pCreateInfo)); |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pCreateInfo) |
| { |
| transform_tohost_VkFramebufferCreateInfo(sResourceTracker, (VkFramebufferCreateInfo*)(local_pCreateInfo)); |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkFramebufferCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkFramebufferCreateInfo*)(local_pCreateInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkCreateFramebuffer = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreateFramebuffer); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreateFramebuffer = OP_vkCreateFramebuffer; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreateFramebuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreateFramebuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkFramebufferCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkFramebufferCreateInfo*)(local_pCreateInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = (uint64_t)((*pFramebuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_3; |
| stream->read((uint64_t*)&cgen_var_3, 8); |
| stream->handleMapping()->mapHandles_u64_VkFramebuffer(&cgen_var_3, (VkFramebuffer*)pFramebuffer, 1); |
| stream->unsetHandleMapping(); |
| VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0; |
| stream->read(&vkCreateFramebuffer_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreateFramebuffer_VkResult_return; |
| } |
| |
| void VkEncoder::vkDestroyFramebuffer( |
| VkDevice device, |
| VkFramebuffer framebuffer, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkDestroyFramebuffer = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDestroyFramebuffer); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDestroyFramebuffer = OP_vkDestroyFramebuffer; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDestroyFramebuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDestroyFramebuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkFramebuffer((*&local_framebuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkFramebuffer((VkFramebuffer*)&framebuffer); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkCreateRenderPass( |
| VkDevice device, |
| const VkRenderPassCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkRenderPass* pRenderPass, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfo, (VkRenderPassCreateInfo*)(local_pCreateInfo)); |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pCreateInfo) |
| { |
| transform_tohost_VkRenderPassCreateInfo(sResourceTracker, (VkRenderPassCreateInfo*)(local_pCreateInfo)); |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkRenderPassCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkRenderPassCreateInfo*)(local_pCreateInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkCreateRenderPass = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreateRenderPass); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreateRenderPass = OP_vkCreateRenderPass; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreateRenderPass, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreateRenderPass, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkRenderPassCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkRenderPassCreateInfo*)(local_pCreateInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = (uint64_t)((*pRenderPass)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_3; |
| stream->read((uint64_t*)&cgen_var_3, 8); |
| stream->handleMapping()->mapHandles_u64_VkRenderPass(&cgen_var_3, (VkRenderPass*)pRenderPass, 1); |
| stream->unsetHandleMapping(); |
| VkResult vkCreateRenderPass_VkResult_return = (VkResult)0; |
| stream->read(&vkCreateRenderPass_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreateRenderPass_VkResult_return; |
| } |
| |
| void VkEncoder::vkDestroyRenderPass( |
| VkDevice device, |
| VkRenderPass renderPass, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkDestroyRenderPass = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDestroyRenderPass); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDestroyRenderPass = OP_vkDestroyRenderPass; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDestroyRenderPass, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDestroyRenderPass, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkRenderPass((*&local_renderPass)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkRenderPass((VkRenderPass*)&renderPass); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkGetRenderAreaGranularity( |
| VkDevice device, |
| VkRenderPass renderPass, |
| VkExtent2D* pGranularity, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| VkRenderPass local_renderPass; |
| local_device = device; |
| local_renderPass = renderPass; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| count_VkExtent2D(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkExtent2D*)(pGranularity), countPtr); |
| } |
| uint32_t packetSize_vkGetRenderAreaGranularity = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetRenderAreaGranularity); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetRenderAreaGranularity = OP_vkGetRenderAreaGranularity; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetRenderAreaGranularity, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetRenderAreaGranularity, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkRenderPass((*&local_renderPass)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkExtent2D(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkExtent2D*)(pGranularity), streamPtrPtr); |
| unmarshal_VkExtent2D(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkExtent2D*)(pGranularity)); |
| if (pGranularity) |
| { |
| transform_fromhost_VkExtent2D(sResourceTracker, (VkExtent2D*)(pGranularity)); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkCreateCommandPool( |
| VkDevice device, |
| const VkCommandPoolCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkCommandPool* pCommandPool, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfo, (VkCommandPoolCreateInfo*)(local_pCreateInfo)); |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pCreateInfo) |
| { |
| transform_tohost_VkCommandPoolCreateInfo(sResourceTracker, (VkCommandPoolCreateInfo*)(local_pCreateInfo)); |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkCommandPoolCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkCommandPoolCreateInfo*)(local_pCreateInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkCreateCommandPool = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreateCommandPool); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreateCommandPool = OP_vkCreateCommandPool; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreateCommandPool, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreateCommandPool, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkCommandPoolCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkCommandPoolCreateInfo*)(local_pCreateInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = (uint64_t)((*pCommandPool)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_3; |
| stream->read((uint64_t*)&cgen_var_3, 8); |
| stream->handleMapping()->mapHandles_u64_VkCommandPool(&cgen_var_3, (VkCommandPool*)pCommandPool, 1); |
| stream->unsetHandleMapping(); |
| VkResult vkCreateCommandPool_VkResult_return = (VkResult)0; |
| stream->read(&vkCreateCommandPool_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreateCommandPool_VkResult_return; |
| } |
| |
| void VkEncoder::vkDestroyCommandPool( |
| VkDevice device, |
| VkCommandPool commandPool, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkDestroyCommandPool = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDestroyCommandPool); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDestroyCommandPool = OP_vkDestroyCommandPool; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDestroyCommandPool, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDestroyCommandPool, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkCommandPool((*&local_commandPool)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkCommandPool((VkCommandPool*)&commandPool); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkResetCommandPool( |
| VkDevice device, |
| VkCommandPool commandPool, |
| VkCommandPoolResetFlags flags, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| VkCommandPool local_commandPool; |
| VkCommandPoolResetFlags local_flags; |
| local_device = device; |
| local_commandPool = commandPool; |
| local_flags = flags; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkCommandPoolResetFlags); |
| } |
| uint32_t packetSize_vkResetCommandPool = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkResetCommandPool); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkResetCommandPool = OP_vkResetCommandPool; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkResetCommandPool, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkResetCommandPool, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkCommandPool((*&local_commandPool)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkCommandPoolResetFlags*)&local_flags, sizeof(VkCommandPoolResetFlags)); |
| *streamPtrPtr += sizeof(VkCommandPoolResetFlags); |
| VkResult vkResetCommandPool_VkResult_return = (VkResult)0; |
| stream->read(&vkResetCommandPool_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkResetCommandPool_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkAllocateCommandBuffers( |
| VkDevice device, |
| const VkCommandBufferAllocateInfo* pAllocateInfo, |
| VkCommandBuffer* pCommandBuffers, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocateInfo, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo)); |
| } |
| if (local_pAllocateInfo) |
| { |
| transform_tohost_VkCommandBufferAllocateInfo(sResourceTracker, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkCommandBufferAllocateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo), countPtr); |
| if (pAllocateInfo->commandBufferCount) |
| { |
| *countPtr += pAllocateInfo->commandBufferCount * 8; |
| } |
| } |
| uint32_t packetSize_vkAllocateCommandBuffers = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkAllocateCommandBuffers); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkAllocateCommandBuffers = OP_vkAllocateCommandBuffers; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkAllocateCommandBuffers, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkAllocateCommandBuffers, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkCommandBufferAllocateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkCommandBufferAllocateInfo*)(local_pAllocateInfo), streamPtrPtr); |
| /* is handle, possibly out */; |
| if (pAllocateInfo->commandBufferCount) |
| { |
| uint8_t* cgen_var_1_ptr = (uint8_t*)(*streamPtrPtr); |
| for (uint32_t k = 0; k < pAllocateInfo->commandBufferCount; ++k) |
| { |
| uint64_t tmpval = (uint64_t)(pCommandBuffers[k]); |
| memcpy(cgen_var_1_ptr + k * 8, &tmpval, sizeof(uint64_t)); |
| } |
| *streamPtrPtr += 8 * pAllocateInfo->commandBufferCount; |
| } |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| if (pAllocateInfo->commandBufferCount) |
| { |
| uint64_t* cgen_var_2; |
| stream->alloc((void**)&cgen_var_2, pAllocateInfo->commandBufferCount * 8); |
| stream->read((uint64_t*)cgen_var_2, pAllocateInfo->commandBufferCount * 8); |
| stream->handleMapping()->mapHandles_u64_VkCommandBuffer(cgen_var_2, (VkCommandBuffer*)pCommandBuffers, pAllocateInfo->commandBufferCount); |
| } |
| stream->unsetHandleMapping(); |
| VkResult vkAllocateCommandBuffers_VkResult_return = (VkResult)0; |
| stream->read(&vkAllocateCommandBuffers_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkAllocateCommandBuffers_VkResult_return; |
| } |
| |
| void VkEncoder::vkFreeCommandBuffers( |
| VkDevice device, |
| VkCommandPool commandPool, |
| uint32_t commandBufferCount, |
| const VkCommandBuffer* pCommandBuffers, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| VkCommandPool local_commandPool; |
| uint32_t local_commandBufferCount; |
| VkCommandBuffer* local_pCommandBuffers; |
| local_device = device; |
| local_commandPool = commandPool; |
| local_commandBufferCount = commandBufferCount; |
| // Avoiding deepcopy for pCommandBuffers |
| local_pCommandBuffers = (VkCommandBuffer*)pCommandBuffers; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pCommandBuffers) |
| { |
| if (((commandBufferCount))) |
| { |
| *countPtr += ((commandBufferCount)) * 8; |
| } |
| } |
| } |
| uint32_t packetSize_vkFreeCommandBuffers = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkFreeCommandBuffers); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkFreeCommandBuffers = OP_vkFreeCommandBuffers; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkFreeCommandBuffers, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkFreeCommandBuffers, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkCommandPool((*&local_commandPool)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_commandBufferCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pCommandBuffers; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pCommandBuffers) |
| { |
| if (((commandBufferCount))) |
| { |
| uint8_t* cgen_var_2_0_ptr = (uint8_t*)(*streamPtrPtr); |
| for (uint32_t k = 0; k < ((commandBufferCount)); ++k) |
| { |
| uint64_t tmpval = get_host_u64_VkCommandBuffer(local_pCommandBuffers[k]); |
| memcpy(cgen_var_2_0_ptr + k * 8, &tmpval, sizeof(uint64_t)); |
| } |
| *streamPtrPtr += 8 * ((commandBufferCount)); |
| } |
| } |
| if (pCommandBuffers) |
| { |
| sResourceTracker->destroyMapping()->mapHandles_VkCommandBuffer((VkCommandBuffer*)pCommandBuffers, ((commandBufferCount))); |
| } |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkBeginCommandBuffer( |
| VkCommandBuffer commandBuffer, |
| const VkCommandBufferBeginInfo* pBeginInfo, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pBeginInfo, (VkCommandBufferBeginInfo*)(local_pBeginInfo)); |
| } |
| if (local_pBeginInfo) |
| { |
| transform_tohost_VkCommandBufferBeginInfo(sResourceTracker, (VkCommandBufferBeginInfo*)(local_pBeginInfo)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkCommandBufferBeginInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkCommandBufferBeginInfo*)(local_pBeginInfo), countPtr); |
| } |
| uint32_t packetSize_vkBeginCommandBuffer = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkBeginCommandBuffer -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkBeginCommandBuffer); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkBeginCommandBuffer = OP_vkBeginCommandBuffer; |
| memcpy(streamPtr, &opcode_vkBeginCommandBuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkBeginCommandBuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| reservedmarshal_VkCommandBufferBeginInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkCommandBufferBeginInfo*)(local_pBeginInfo), streamPtrPtr); |
| VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0; |
| stream->read(&vkBeginCommandBuffer_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkBeginCommandBuffer_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkEndCommandBuffer( |
| VkCommandBuffer commandBuffer, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkCommandBuffer local_commandBuffer; |
| local_commandBuffer = commandBuffer; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| } |
| uint32_t packetSize_vkEndCommandBuffer = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkEndCommandBuffer -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkEndCommandBuffer); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkEndCommandBuffer = OP_vkEndCommandBuffer; |
| memcpy(streamPtr, &opcode_vkEndCommandBuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkEndCommandBuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0; |
| stream->read(&vkEndCommandBuffer_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkEndCommandBuffer_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkResetCommandBuffer( |
| VkCommandBuffer commandBuffer, |
| VkCommandBufferResetFlags flags, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkCommandBuffer local_commandBuffer; |
| VkCommandBufferResetFlags local_flags; |
| local_commandBuffer = commandBuffer; |
| local_flags = flags; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkCommandBufferResetFlags); |
| } |
| uint32_t packetSize_vkResetCommandBuffer = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkResetCommandBuffer -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkResetCommandBuffer); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkResetCommandBuffer = OP_vkResetCommandBuffer; |
| memcpy(streamPtr, &opcode_vkResetCommandBuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkResetCommandBuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (VkCommandBufferResetFlags*)&local_flags, sizeof(VkCommandBufferResetFlags)); |
| *streamPtrPtr += sizeof(VkCommandBufferResetFlags); |
| VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0; |
| stream->read(&vkResetCommandBuffer_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkResetCommandBuffer_VkResult_return; |
| } |
| |
| void VkEncoder::vkCmdBindPipeline( |
| VkCommandBuffer commandBuffer, |
| VkPipelineBindPoint pipelineBindPoint, |
| VkPipeline pipeline, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkCommandBuffer local_commandBuffer; |
| VkPipelineBindPoint local_pipelineBindPoint; |
| VkPipeline local_pipeline; |
| local_commandBuffer = commandBuffer; |
| local_pipelineBindPoint = pipelineBindPoint; |
| local_pipeline = pipeline; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkPipelineBindPoint); |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| } |
| uint32_t packetSize_vkCmdBindPipeline = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdBindPipeline -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdBindPipeline); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdBindPipeline = OP_vkCmdBindPipeline; |
| memcpy(streamPtr, &opcode_vkCmdBindPipeline, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdBindPipeline, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint)); |
| *streamPtrPtr += sizeof(VkPipelineBindPoint); |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkPipeline((*&local_pipeline)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdSetViewport( |
| VkCommandBuffer commandBuffer, |
| uint32_t firstViewport, |
| uint32_t viewportCount, |
| const VkViewport* pViewports, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pViewports + i, (VkViewport*)(local_pViewports + i)); |
| } |
| } |
| if (local_pViewports) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i) |
| { |
| transform_tohost_VkViewport(sResourceTracker, (VkViewport*)(local_pViewports + i)); |
| } |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i) |
| { |
| count_VkViewport(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkViewport*)(local_pViewports + i), countPtr); |
| } |
| } |
| uint32_t packetSize_vkCmdSetViewport = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdSetViewport -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdSetViewport); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdSetViewport = OP_vkCmdSetViewport; |
| memcpy(streamPtr, &opcode_vkCmdSetViewport, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdSetViewport, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (uint32_t*)&local_firstViewport, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_viewportCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((viewportCount)); ++i) |
| { |
| reservedmarshal_VkViewport(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkViewport*)(local_pViewports + i), streamPtrPtr); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdSetScissor( |
| VkCommandBuffer commandBuffer, |
| uint32_t firstScissor, |
| uint32_t scissorCount, |
| const VkRect2D* pScissors, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pScissors + i, (VkRect2D*)(local_pScissors + i)); |
| } |
| } |
| if (local_pScissors) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i) |
| { |
| transform_tohost_VkRect2D(sResourceTracker, (VkRect2D*)(local_pScissors + i)); |
| } |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i) |
| { |
| count_VkRect2D(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkRect2D*)(local_pScissors + i), countPtr); |
| } |
| } |
| uint32_t packetSize_vkCmdSetScissor = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdSetScissor -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdSetScissor); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdSetScissor = OP_vkCmdSetScissor; |
| memcpy(streamPtr, &opcode_vkCmdSetScissor, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdSetScissor, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (uint32_t*)&local_firstScissor, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_scissorCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((scissorCount)); ++i) |
| { |
| reservedmarshal_VkRect2D(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkRect2D*)(local_pScissors + i), streamPtrPtr); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdSetLineWidth( |
| VkCommandBuffer commandBuffer, |
| float lineWidth, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkCommandBuffer local_commandBuffer; |
| float local_lineWidth; |
| local_commandBuffer = commandBuffer; |
| local_lineWidth = lineWidth; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(float); |
| } |
| uint32_t packetSize_vkCmdSetLineWidth = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdSetLineWidth -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdSetLineWidth); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdSetLineWidth = OP_vkCmdSetLineWidth; |
| memcpy(streamPtr, &opcode_vkCmdSetLineWidth, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdSetLineWidth, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (float*)&local_lineWidth, sizeof(float)); |
| *streamPtrPtr += sizeof(float); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdSetDepthBias( |
| VkCommandBuffer commandBuffer, |
| float depthBiasConstantFactor, |
| float depthBiasClamp, |
| float depthBiasSlopeFactor, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkCommandBuffer local_commandBuffer; |
| float local_depthBiasConstantFactor; |
| float local_depthBiasClamp; |
| float local_depthBiasSlopeFactor; |
| local_commandBuffer = commandBuffer; |
| local_depthBiasConstantFactor = depthBiasConstantFactor; |
| local_depthBiasClamp = depthBiasClamp; |
| local_depthBiasSlopeFactor = depthBiasSlopeFactor; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(float); |
| *countPtr += sizeof(float); |
| *countPtr += sizeof(float); |
| } |
| uint32_t packetSize_vkCmdSetDepthBias = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdSetDepthBias -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdSetDepthBias); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdSetDepthBias = OP_vkCmdSetDepthBias; |
| memcpy(streamPtr, &opcode_vkCmdSetDepthBias, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdSetDepthBias, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (float*)&local_depthBiasConstantFactor, sizeof(float)); |
| *streamPtrPtr += sizeof(float); |
| memcpy(*streamPtrPtr, (float*)&local_depthBiasClamp, sizeof(float)); |
| *streamPtrPtr += sizeof(float); |
| memcpy(*streamPtrPtr, (float*)&local_depthBiasSlopeFactor, sizeof(float)); |
| *streamPtrPtr += sizeof(float); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdSetBlendConstants( |
| VkCommandBuffer commandBuffer, |
| const float blendConstants[4], |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkCommandBuffer local_commandBuffer; |
| float local_blendConstants[4]; |
| local_commandBuffer = commandBuffer; |
| memcpy(local_blendConstants, blendConstants, 4 * sizeof(const float)); |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += 4 * sizeof(float); |
| } |
| uint32_t packetSize_vkCmdSetBlendConstants = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdSetBlendConstants -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdSetBlendConstants); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdSetBlendConstants = OP_vkCmdSetBlendConstants; |
| memcpy(streamPtr, &opcode_vkCmdSetBlendConstants, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdSetBlendConstants, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (float*)local_blendConstants, 4 * sizeof(float)); |
| *streamPtrPtr += 4 * sizeof(float); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdSetDepthBounds( |
| VkCommandBuffer commandBuffer, |
| float minDepthBounds, |
| float maxDepthBounds, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkCommandBuffer local_commandBuffer; |
| float local_minDepthBounds; |
| float local_maxDepthBounds; |
| local_commandBuffer = commandBuffer; |
| local_minDepthBounds = minDepthBounds; |
| local_maxDepthBounds = maxDepthBounds; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(float); |
| *countPtr += sizeof(float); |
| } |
| uint32_t packetSize_vkCmdSetDepthBounds = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdSetDepthBounds -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdSetDepthBounds); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdSetDepthBounds = OP_vkCmdSetDepthBounds; |
| memcpy(streamPtr, &opcode_vkCmdSetDepthBounds, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdSetDepthBounds, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (float*)&local_minDepthBounds, sizeof(float)); |
| *streamPtrPtr += sizeof(float); |
| memcpy(*streamPtrPtr, (float*)&local_maxDepthBounds, sizeof(float)); |
| *streamPtrPtr += sizeof(float); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdSetStencilCompareMask( |
| VkCommandBuffer commandBuffer, |
| VkStencilFaceFlags faceMask, |
| uint32_t compareMask, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkCommandBuffer local_commandBuffer; |
| VkStencilFaceFlags local_faceMask; |
| uint32_t local_compareMask; |
| local_commandBuffer = commandBuffer; |
| local_faceMask = faceMask; |
| local_compareMask = compareMask; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkStencilFaceFlags); |
| *countPtr += sizeof(uint32_t); |
| } |
| uint32_t packetSize_vkCmdSetStencilCompareMask = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdSetStencilCompareMask -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdSetStencilCompareMask); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdSetStencilCompareMask = OP_vkCmdSetStencilCompareMask; |
| memcpy(streamPtr, &opcode_vkCmdSetStencilCompareMask, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdSetStencilCompareMask, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags)); |
| *streamPtrPtr += sizeof(VkStencilFaceFlags); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_compareMask, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdSetStencilWriteMask( |
| VkCommandBuffer commandBuffer, |
| VkStencilFaceFlags faceMask, |
| uint32_t writeMask, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkCommandBuffer local_commandBuffer; |
| VkStencilFaceFlags local_faceMask; |
| uint32_t local_writeMask; |
| local_commandBuffer = commandBuffer; |
| local_faceMask = faceMask; |
| local_writeMask = writeMask; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkStencilFaceFlags); |
| *countPtr += sizeof(uint32_t); |
| } |
| uint32_t packetSize_vkCmdSetStencilWriteMask = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdSetStencilWriteMask -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdSetStencilWriteMask); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdSetStencilWriteMask = OP_vkCmdSetStencilWriteMask; |
| memcpy(streamPtr, &opcode_vkCmdSetStencilWriteMask, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdSetStencilWriteMask, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags)); |
| *streamPtrPtr += sizeof(VkStencilFaceFlags); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_writeMask, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdSetStencilReference( |
| VkCommandBuffer commandBuffer, |
| VkStencilFaceFlags faceMask, |
| uint32_t reference, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkCommandBuffer local_commandBuffer; |
| VkStencilFaceFlags local_faceMask; |
| uint32_t local_reference; |
| local_commandBuffer = commandBuffer; |
| local_faceMask = faceMask; |
| local_reference = reference; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkStencilFaceFlags); |
| *countPtr += sizeof(uint32_t); |
| } |
| uint32_t packetSize_vkCmdSetStencilReference = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdSetStencilReference -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdSetStencilReference); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdSetStencilReference = OP_vkCmdSetStencilReference; |
| memcpy(streamPtr, &opcode_vkCmdSetStencilReference, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdSetStencilReference, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (VkStencilFaceFlags*)&local_faceMask, sizeof(VkStencilFaceFlags)); |
| *streamPtrPtr += sizeof(VkStencilFaceFlags); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_reference, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| 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, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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; |
| // Avoiding deepcopy for pDescriptorSets |
| local_pDescriptorSets = (VkDescriptorSet*)pDescriptorSets; |
| local_dynamicOffsetCount = dynamicOffsetCount; |
| // Avoiding deepcopy for pDynamicOffsets |
| local_pDynamicOffsets = (uint32_t*)pDynamicOffsets; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkPipelineBindPoint); |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| if (((descriptorSetCount))) |
| { |
| *countPtr += ((descriptorSetCount)) * 8; |
| } |
| *countPtr += sizeof(uint32_t); |
| *countPtr += ((dynamicOffsetCount)) * sizeof(uint32_t); |
| } |
| uint32_t packetSize_vkCmdBindDescriptorSets = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdBindDescriptorSets -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdBindDescriptorSets); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdBindDescriptorSets = OP_vkCmdBindDescriptorSets; |
| memcpy(streamPtr, &opcode_vkCmdBindDescriptorSets, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdBindDescriptorSets, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (VkPipelineBindPoint*)&local_pipelineBindPoint, sizeof(VkPipelineBindPoint)); |
| *streamPtrPtr += sizeof(VkPipelineBindPoint); |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkPipelineLayout((*&local_layout)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_firstSet, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_descriptorSetCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| if (((descriptorSetCount))) |
| { |
| uint8_t* cgen_var_1_ptr = (uint8_t*)(*streamPtrPtr); |
| for (uint32_t k = 0; k < ((descriptorSetCount)); ++k) |
| { |
| uint64_t tmpval = get_host_u64_VkDescriptorSet(local_pDescriptorSets[k]); |
| memcpy(cgen_var_1_ptr + k * 8, &tmpval, sizeof(uint64_t)); |
| } |
| *streamPtrPtr += 8 * ((descriptorSetCount)); |
| } |
| memcpy(*streamPtrPtr, (uint32_t*)&local_dynamicOffsetCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)local_pDynamicOffsets, ((dynamicOffsetCount)) * sizeof(uint32_t)); |
| *streamPtrPtr += ((dynamicOffsetCount)) * sizeof(uint32_t); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdBindIndexBuffer( |
| VkCommandBuffer commandBuffer, |
| VkBuffer buffer, |
| VkDeviceSize offset, |
| VkIndexType indexType, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkCommandBuffer local_commandBuffer; |
| VkBuffer local_buffer; |
| VkDeviceSize local_offset; |
| VkIndexType local_indexType; |
| local_commandBuffer = commandBuffer; |
| local_buffer = buffer; |
| local_offset = offset; |
| local_indexType = indexType; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkDeviceSize); |
| *countPtr += sizeof(VkIndexType); |
| } |
| uint32_t packetSize_vkCmdBindIndexBuffer = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdBindIndexBuffer -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdBindIndexBuffer); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdBindIndexBuffer = OP_vkCmdBindIndexBuffer; |
| memcpy(streamPtr, &opcode_vkCmdBindIndexBuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdBindIndexBuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkBuffer((*&local_buffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); |
| *streamPtrPtr += sizeof(VkDeviceSize); |
| memcpy(*streamPtrPtr, (VkIndexType*)&local_indexType, sizeof(VkIndexType)); |
| *streamPtrPtr += sizeof(VkIndexType); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdBindVertexBuffers( |
| VkCommandBuffer commandBuffer, |
| uint32_t firstBinding, |
| uint32_t bindingCount, |
| const VkBuffer* pBuffers, |
| const VkDeviceSize* pOffsets, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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; |
| // Avoiding deepcopy for pBuffers |
| local_pBuffers = (VkBuffer*)pBuffers; |
| // Avoiding deepcopy for pOffsets |
| local_pOffsets = (VkDeviceSize*)pOffsets; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| if (((bindingCount))) |
| { |
| *countPtr += ((bindingCount)) * 8; |
| } |
| *countPtr += ((bindingCount)) * sizeof(VkDeviceSize); |
| } |
| uint32_t packetSize_vkCmdBindVertexBuffers = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdBindVertexBuffers -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdBindVertexBuffers); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdBindVertexBuffers = OP_vkCmdBindVertexBuffers; |
| memcpy(streamPtr, &opcode_vkCmdBindVertexBuffers, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdBindVertexBuffers, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (uint32_t*)&local_firstBinding, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_bindingCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| if (((bindingCount))) |
| { |
| uint8_t* cgen_var_0_ptr = (uint8_t*)(*streamPtrPtr); |
| for (uint32_t k = 0; k < ((bindingCount)); ++k) |
| { |
| uint64_t tmpval = get_host_u64_VkBuffer(local_pBuffers[k]); |
| memcpy(cgen_var_0_ptr + k * 8, &tmpval, sizeof(uint64_t)); |
| } |
| *streamPtrPtr += 8 * ((bindingCount)); |
| } |
| memcpy(*streamPtrPtr, (VkDeviceSize*)local_pOffsets, ((bindingCount)) * sizeof(VkDeviceSize)); |
| *streamPtrPtr += ((bindingCount)) * sizeof(VkDeviceSize); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdDraw( |
| VkCommandBuffer commandBuffer, |
| uint32_t vertexCount, |
| uint32_t instanceCount, |
| uint32_t firstVertex, |
| uint32_t firstInstance, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| } |
| uint32_t packetSize_vkCmdDraw = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdDraw -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdDraw); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdDraw = OP_vkCmdDraw; |
| memcpy(streamPtr, &opcode_vkCmdDraw, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdDraw, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (uint32_t*)&local_vertexCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_instanceCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_firstVertex, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_firstInstance, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdDrawIndexed( |
| VkCommandBuffer commandBuffer, |
| uint32_t indexCount, |
| uint32_t instanceCount, |
| uint32_t firstIndex, |
| int32_t vertexOffset, |
| uint32_t firstInstance, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(int32_t); |
| *countPtr += sizeof(uint32_t); |
| } |
| uint32_t packetSize_vkCmdDrawIndexed = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdDrawIndexed -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdDrawIndexed); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdDrawIndexed = OP_vkCmdDrawIndexed; |
| memcpy(streamPtr, &opcode_vkCmdDrawIndexed, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdDrawIndexed, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (uint32_t*)&local_indexCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_instanceCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_firstIndex, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (int32_t*)&local_vertexOffset, sizeof(int32_t)); |
| *streamPtrPtr += sizeof(int32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_firstInstance, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdDrawIndirect( |
| VkCommandBuffer commandBuffer, |
| VkBuffer buffer, |
| VkDeviceSize offset, |
| uint32_t drawCount, |
| uint32_t stride, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkDeviceSize); |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| } |
| uint32_t packetSize_vkCmdDrawIndirect = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdDrawIndirect -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdDrawIndirect); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdDrawIndirect = OP_vkCmdDrawIndirect; |
| memcpy(streamPtr, &opcode_vkCmdDrawIndirect, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdDrawIndirect, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkBuffer((*&local_buffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); |
| *streamPtrPtr += sizeof(VkDeviceSize); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_drawCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_stride, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdDrawIndexedIndirect( |
| VkCommandBuffer commandBuffer, |
| VkBuffer buffer, |
| VkDeviceSize offset, |
| uint32_t drawCount, |
| uint32_t stride, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkDeviceSize); |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| } |
| uint32_t packetSize_vkCmdDrawIndexedIndirect = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdDrawIndexedIndirect -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdDrawIndexedIndirect); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdDrawIndexedIndirect = OP_vkCmdDrawIndexedIndirect; |
| memcpy(streamPtr, &opcode_vkCmdDrawIndexedIndirect, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdDrawIndexedIndirect, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkBuffer((*&local_buffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); |
| *streamPtrPtr += sizeof(VkDeviceSize); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_drawCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_stride, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdDispatch( |
| VkCommandBuffer commandBuffer, |
| uint32_t groupCountX, |
| uint32_t groupCountY, |
| uint32_t groupCountZ, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| } |
| uint32_t packetSize_vkCmdDispatch = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdDispatch -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdDispatch); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdDispatch = OP_vkCmdDispatch; |
| memcpy(streamPtr, &opcode_vkCmdDispatch, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdDispatch, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (uint32_t*)&local_groupCountX, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_groupCountY, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_groupCountZ, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdDispatchIndirect( |
| VkCommandBuffer commandBuffer, |
| VkBuffer buffer, |
| VkDeviceSize offset, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkCommandBuffer local_commandBuffer; |
| VkBuffer local_buffer; |
| VkDeviceSize local_offset; |
| local_commandBuffer = commandBuffer; |
| local_buffer = buffer; |
| local_offset = offset; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkDeviceSize); |
| } |
| uint32_t packetSize_vkCmdDispatchIndirect = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdDispatchIndirect -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdDispatchIndirect); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdDispatchIndirect = OP_vkCmdDispatchIndirect; |
| memcpy(streamPtr, &opcode_vkCmdDispatchIndirect, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdDispatchIndirect, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkBuffer((*&local_buffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkDeviceSize*)&local_offset, sizeof(VkDeviceSize)); |
| *streamPtrPtr += sizeof(VkDeviceSize); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdCopyBuffer( |
| VkCommandBuffer commandBuffer, |
| VkBuffer srcBuffer, |
| VkBuffer dstBuffer, |
| uint32_t regionCount, |
| const VkBufferCopy* pRegions, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pRegions + i, (VkBufferCopy*)(local_pRegions + i)); |
| } |
| } |
| if (local_pRegions) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) |
| { |
| transform_tohost_VkBufferCopy(sResourceTracker, (VkBufferCopy*)(local_pRegions + i)); |
| } |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_2; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) |
| { |
| count_VkBufferCopy(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBufferCopy*)(local_pRegions + i), countPtr); |
| } |
| } |
| uint32_t packetSize_vkCmdCopyBuffer = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdCopyBuffer -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdCopyBuffer); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdCopyBuffer = OP_vkCmdCopyBuffer; |
| memcpy(streamPtr, &opcode_vkCmdCopyBuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdCopyBuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkBuffer((*&local_srcBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkBuffer((*&local_dstBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_regionCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) |
| { |
| reservedmarshal_VkBufferCopy(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBufferCopy*)(local_pRegions + i), streamPtrPtr); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdCopyImage( |
| VkCommandBuffer commandBuffer, |
| VkImage srcImage, |
| VkImageLayout srcImageLayout, |
| VkImage dstImage, |
| VkImageLayout dstImageLayout, |
| uint32_t regionCount, |
| const VkImageCopy* pRegions, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pRegions + i, (VkImageCopy*)(local_pRegions + i)); |
| } |
| } |
| if (local_pRegions) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) |
| { |
| transform_tohost_VkImageCopy(sResourceTracker, (VkImageCopy*)(local_pRegions + i)); |
| } |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkImageLayout); |
| uint64_t cgen_var_2; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkImageLayout); |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) |
| { |
| count_VkImageCopy(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageCopy*)(local_pRegions + i), countPtr); |
| } |
| } |
| uint32_t packetSize_vkCmdCopyImage = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdCopyImage -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdCopyImage); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdCopyImage = OP_vkCmdCopyImage; |
| memcpy(streamPtr, &opcode_vkCmdCopyImage, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdCopyImage, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkImage((*&local_srcImage)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout)); |
| *streamPtrPtr += sizeof(VkImageLayout); |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkImage((*&local_dstImage)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout)); |
| *streamPtrPtr += sizeof(VkImageLayout); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_regionCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) |
| { |
| reservedmarshal_VkImageCopy(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageCopy*)(local_pRegions + i), streamPtrPtr); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdBlitImage( |
| VkCommandBuffer commandBuffer, |
| VkImage srcImage, |
| VkImageLayout srcImageLayout, |
| VkImage dstImage, |
| VkImageLayout dstImageLayout, |
| uint32_t regionCount, |
| const VkImageBlit* pRegions, |
| VkFilter filter, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, 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(sResourceTracker, (VkImageBlit*)(local_pRegions + i)); |
| } |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkImageLayout); |
| uint64_t cgen_var_2; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkImageLayout); |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) |
| { |
| count_VkImageBlit(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageBlit*)(local_pRegions + i), countPtr); |
| } |
| *countPtr += sizeof(VkFilter); |
| } |
| uint32_t packetSize_vkCmdBlitImage = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdBlitImage -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdBlitImage); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdBlitImage = OP_vkCmdBlitImage; |
| memcpy(streamPtr, &opcode_vkCmdBlitImage, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdBlitImage, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkImage((*&local_srcImage)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout)); |
| *streamPtrPtr += sizeof(VkImageLayout); |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkImage((*&local_dstImage)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout)); |
| *streamPtrPtr += sizeof(VkImageLayout); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_regionCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) |
| { |
| reservedmarshal_VkImageBlit(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageBlit*)(local_pRegions + i), streamPtrPtr); |
| } |
| memcpy(*streamPtrPtr, (VkFilter*)&local_filter, sizeof(VkFilter)); |
| *streamPtrPtr += sizeof(VkFilter); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdCopyBufferToImage( |
| VkCommandBuffer commandBuffer, |
| VkBuffer srcBuffer, |
| VkImage dstImage, |
| VkImageLayout dstImageLayout, |
| uint32_t regionCount, |
| const VkBufferImageCopy* pRegions, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i)); |
| } |
| } |
| if (local_pRegions) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) |
| { |
| transform_tohost_VkBufferImageCopy(sResourceTracker, (VkBufferImageCopy*)(local_pRegions + i)); |
| } |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_2; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkImageLayout); |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) |
| { |
| count_VkBufferImageCopy(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBufferImageCopy*)(local_pRegions + i), countPtr); |
| } |
| } |
| uint32_t packetSize_vkCmdCopyBufferToImage = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdCopyBufferToImage -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdCopyBufferToImage); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdCopyBufferToImage = OP_vkCmdCopyBufferToImage; |
| memcpy(streamPtr, &opcode_vkCmdCopyBufferToImage, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdCopyBufferToImage, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkBuffer((*&local_srcBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkImage((*&local_dstImage)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout)); |
| *streamPtrPtr += sizeof(VkImageLayout); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_regionCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) |
| { |
| reservedmarshal_VkBufferImageCopy(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBufferImageCopy*)(local_pRegions + i), streamPtrPtr); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdCopyImageToBuffer( |
| VkCommandBuffer commandBuffer, |
| VkImage srcImage, |
| VkImageLayout srcImageLayout, |
| VkBuffer dstBuffer, |
| uint32_t regionCount, |
| const VkBufferImageCopy* pRegions, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pRegions + i, (VkBufferImageCopy*)(local_pRegions + i)); |
| } |
| } |
| if (local_pRegions) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) |
| { |
| transform_tohost_VkBufferImageCopy(sResourceTracker, (VkBufferImageCopy*)(local_pRegions + i)); |
| } |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkImageLayout); |
| uint64_t cgen_var_2; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) |
| { |
| count_VkBufferImageCopy(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBufferImageCopy*)(local_pRegions + i), countPtr); |
| } |
| } |
| uint32_t packetSize_vkCmdCopyImageToBuffer = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdCopyImageToBuffer -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdCopyImageToBuffer); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdCopyImageToBuffer = OP_vkCmdCopyImageToBuffer; |
| memcpy(streamPtr, &opcode_vkCmdCopyImageToBuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdCopyImageToBuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkImage((*&local_srcImage)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout)); |
| *streamPtrPtr += sizeof(VkImageLayout); |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkBuffer((*&local_dstBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_regionCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) |
| { |
| reservedmarshal_VkBufferImageCopy(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBufferImageCopy*)(local_pRegions + i), streamPtrPtr); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdUpdateBuffer( |
| VkCommandBuffer commandBuffer, |
| VkBuffer dstBuffer, |
| VkDeviceSize dstOffset, |
| VkDeviceSize dataSize, |
| const void* pData, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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; |
| // Avoiding deepcopy for pData |
| local_pData = (void*)pData; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkDeviceSize); |
| *countPtr += sizeof(VkDeviceSize); |
| *countPtr += ((dataSize)) * sizeof(uint8_t); |
| } |
| uint32_t packetSize_vkCmdUpdateBuffer = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdUpdateBuffer -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdUpdateBuffer); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdUpdateBuffer = OP_vkCmdUpdateBuffer; |
| memcpy(streamPtr, &opcode_vkCmdUpdateBuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdUpdateBuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkBuffer((*&local_dstBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize)); |
| *streamPtrPtr += sizeof(VkDeviceSize); |
| memcpy(*streamPtrPtr, (VkDeviceSize*)&local_dataSize, sizeof(VkDeviceSize)); |
| *streamPtrPtr += sizeof(VkDeviceSize); |
| memcpy(*streamPtrPtr, (void*)local_pData, ((dataSize)) * sizeof(uint8_t)); |
| *streamPtrPtr += ((dataSize)) * sizeof(uint8_t); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdFillBuffer( |
| VkCommandBuffer commandBuffer, |
| VkBuffer dstBuffer, |
| VkDeviceSize dstOffset, |
| VkDeviceSize size, |
| uint32_t data, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkDeviceSize); |
| *countPtr += sizeof(VkDeviceSize); |
| *countPtr += sizeof(uint32_t); |
| } |
| uint32_t packetSize_vkCmdFillBuffer = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdFillBuffer -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdFillBuffer); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdFillBuffer = OP_vkCmdFillBuffer; |
| memcpy(streamPtr, &opcode_vkCmdFillBuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdFillBuffer, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkBuffer((*&local_dstBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize)); |
| *streamPtrPtr += sizeof(VkDeviceSize); |
| memcpy(*streamPtrPtr, (VkDeviceSize*)&local_size, sizeof(VkDeviceSize)); |
| *streamPtrPtr += sizeof(VkDeviceSize); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_data, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdClearColorImage( |
| VkCommandBuffer commandBuffer, |
| VkImage image, |
| VkImageLayout imageLayout, |
| const VkClearColorValue* pColor, |
| uint32_t rangeCount, |
| const VkImageSubresourceRange* pRanges, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, 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, VK_STRUCTURE_TYPE_MAX_ENUM, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i)); |
| } |
| } |
| if (local_pColor) |
| { |
| transform_tohost_VkClearColorValue(sResourceTracker, (VkClearColorValue*)(local_pColor)); |
| } |
| if (local_pRanges) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i) |
| { |
| transform_tohost_VkImageSubresourceRange(sResourceTracker, (VkImageSubresourceRange*)(local_pRanges + i)); |
| } |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkImageLayout); |
| count_VkClearColorValue(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkClearColorValue*)(local_pColor), countPtr); |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i) |
| { |
| count_VkImageSubresourceRange(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageSubresourceRange*)(local_pRanges + i), countPtr); |
| } |
| } |
| uint32_t packetSize_vkCmdClearColorImage = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdClearColorImage -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdClearColorImage); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdClearColorImage = OP_vkCmdClearColorImage; |
| memcpy(streamPtr, &opcode_vkCmdClearColorImage, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdClearColorImage, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkImage((*&local_image)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout)); |
| *streamPtrPtr += sizeof(VkImageLayout); |
| reservedmarshal_VkClearColorValue(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkClearColorValue*)(local_pColor), streamPtrPtr); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_rangeCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i) |
| { |
| reservedmarshal_VkImageSubresourceRange(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageSubresourceRange*)(local_pRanges + i), streamPtrPtr); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdClearDepthStencilImage( |
| VkCommandBuffer commandBuffer, |
| VkImage image, |
| VkImageLayout imageLayout, |
| const VkClearDepthStencilValue* pDepthStencil, |
| uint32_t rangeCount, |
| const VkImageSubresourceRange* pRanges, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, 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, VK_STRUCTURE_TYPE_MAX_ENUM, pRanges + i, (VkImageSubresourceRange*)(local_pRanges + i)); |
| } |
| } |
| if (local_pDepthStencil) |
| { |
| transform_tohost_VkClearDepthStencilValue(sResourceTracker, (VkClearDepthStencilValue*)(local_pDepthStencil)); |
| } |
| if (local_pRanges) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i) |
| { |
| transform_tohost_VkImageSubresourceRange(sResourceTracker, (VkImageSubresourceRange*)(local_pRanges + i)); |
| } |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkImageLayout); |
| count_VkClearDepthStencilValue(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkClearDepthStencilValue*)(local_pDepthStencil), countPtr); |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i) |
| { |
| count_VkImageSubresourceRange(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageSubresourceRange*)(local_pRanges + i), countPtr); |
| } |
| } |
| uint32_t packetSize_vkCmdClearDepthStencilImage = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdClearDepthStencilImage -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdClearDepthStencilImage); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdClearDepthStencilImage = OP_vkCmdClearDepthStencilImage; |
| memcpy(streamPtr, &opcode_vkCmdClearDepthStencilImage, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdClearDepthStencilImage, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkImage((*&local_image)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkImageLayout*)&local_imageLayout, sizeof(VkImageLayout)); |
| *streamPtrPtr += sizeof(VkImageLayout); |
| reservedmarshal_VkClearDepthStencilValue(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkClearDepthStencilValue*)(local_pDepthStencil), streamPtrPtr); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_rangeCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((rangeCount)); ++i) |
| { |
| reservedmarshal_VkImageSubresourceRange(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageSubresourceRange*)(local_pRanges + i), streamPtrPtr); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdClearAttachments( |
| VkCommandBuffer commandBuffer, |
| uint32_t attachmentCount, |
| const VkClearAttachment* pAttachments, |
| uint32_t rectCount, |
| const VkClearRect* pRects, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, 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, VK_STRUCTURE_TYPE_MAX_ENUM, pRects + i, (VkClearRect*)(local_pRects + i)); |
| } |
| } |
| if (local_pAttachments) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i) |
| { |
| transform_tohost_VkClearAttachment(sResourceTracker, (VkClearAttachment*)(local_pAttachments + i)); |
| } |
| } |
| if (local_pRects) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i) |
| { |
| transform_tohost_VkClearRect(sResourceTracker, (VkClearRect*)(local_pRects + i)); |
| } |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i) |
| { |
| count_VkClearAttachment(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkClearAttachment*)(local_pAttachments + i), countPtr); |
| } |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i) |
| { |
| count_VkClearRect(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkClearRect*)(local_pRects + i), countPtr); |
| } |
| } |
| uint32_t packetSize_vkCmdClearAttachments = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdClearAttachments -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdClearAttachments); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdClearAttachments = OP_vkCmdClearAttachments; |
| memcpy(streamPtr, &opcode_vkCmdClearAttachments, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdClearAttachments, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (uint32_t*)&local_attachmentCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((attachmentCount)); ++i) |
| { |
| reservedmarshal_VkClearAttachment(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkClearAttachment*)(local_pAttachments + i), streamPtrPtr); |
| } |
| memcpy(*streamPtrPtr, (uint32_t*)&local_rectCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((rectCount)); ++i) |
| { |
| reservedmarshal_VkClearRect(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkClearRect*)(local_pRects + i), streamPtrPtr); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdResolveImage( |
| VkCommandBuffer commandBuffer, |
| VkImage srcImage, |
| VkImageLayout srcImageLayout, |
| VkImage dstImage, |
| VkImageLayout dstImageLayout, |
| uint32_t regionCount, |
| const VkImageResolve* pRegions, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pRegions + i, (VkImageResolve*)(local_pRegions + i)); |
| } |
| } |
| if (local_pRegions) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) |
| { |
| transform_tohost_VkImageResolve(sResourceTracker, (VkImageResolve*)(local_pRegions + i)); |
| } |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkImageLayout); |
| uint64_t cgen_var_2; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkImageLayout); |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) |
| { |
| count_VkImageResolve(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageResolve*)(local_pRegions + i), countPtr); |
| } |
| } |
| uint32_t packetSize_vkCmdResolveImage = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdResolveImage -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdResolveImage); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdResolveImage = OP_vkCmdResolveImage; |
| memcpy(streamPtr, &opcode_vkCmdResolveImage, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdResolveImage, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkImage((*&local_srcImage)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkImageLayout*)&local_srcImageLayout, sizeof(VkImageLayout)); |
| *streamPtrPtr += sizeof(VkImageLayout); |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkImage((*&local_dstImage)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkImageLayout*)&local_dstImageLayout, sizeof(VkImageLayout)); |
| *streamPtrPtr += sizeof(VkImageLayout); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_regionCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((regionCount)); ++i) |
| { |
| reservedmarshal_VkImageResolve(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageResolve*)(local_pRegions + i), streamPtrPtr); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdSetEvent( |
| VkCommandBuffer commandBuffer, |
| VkEvent event, |
| VkPipelineStageFlags stageMask, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkCommandBuffer local_commandBuffer; |
| VkEvent local_event; |
| VkPipelineStageFlags local_stageMask; |
| local_commandBuffer = commandBuffer; |
| local_event = event; |
| local_stageMask = stageMask; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkPipelineStageFlags); |
| } |
| uint32_t packetSize_vkCmdSetEvent = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdSetEvent -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdSetEvent); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdSetEvent = OP_vkCmdSetEvent; |
| memcpy(streamPtr, &opcode_vkCmdSetEvent, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdSetEvent, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkEvent((*&local_event)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags)); |
| *streamPtrPtr += sizeof(VkPipelineStageFlags); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdResetEvent( |
| VkCommandBuffer commandBuffer, |
| VkEvent event, |
| VkPipelineStageFlags stageMask, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkCommandBuffer local_commandBuffer; |
| VkEvent local_event; |
| VkPipelineStageFlags local_stageMask; |
| local_commandBuffer = commandBuffer; |
| local_event = event; |
| local_stageMask = stageMask; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkPipelineStageFlags); |
| } |
| uint32_t packetSize_vkCmdResetEvent = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdResetEvent -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdResetEvent); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdResetEvent = OP_vkCmdResetEvent; |
| memcpy(streamPtr, &opcode_vkCmdResetEvent, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdResetEvent, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkEvent((*&local_event)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkPipelineStageFlags*)&local_stageMask, sizeof(VkPipelineStageFlags)); |
| *streamPtrPtr += sizeof(VkPipelineStageFlags); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| 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, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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; |
| // Avoiding deepcopy for pEvents |
| local_pEvents = (VkEvent*)pEvents; |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, 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, VK_STRUCTURE_TYPE_MAX_ENUM, 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, VK_STRUCTURE_TYPE_MAX_ENUM, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i)); |
| } |
| } |
| if (local_pMemoryBarriers) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i) |
| { |
| transform_tohost_VkMemoryBarrier(sResourceTracker, (VkMemoryBarrier*)(local_pMemoryBarriers + i)); |
| } |
| } |
| if (local_pBufferMemoryBarriers) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i) |
| { |
| transform_tohost_VkBufferMemoryBarrier(sResourceTracker, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i)); |
| } |
| } |
| if (local_pImageMemoryBarriers) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i) |
| { |
| transform_tohost_VkImageMemoryBarrier(sResourceTracker, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i)); |
| } |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| if (((eventCount))) |
| { |
| *countPtr += ((eventCount)) * 8; |
| } |
| *countPtr += sizeof(VkPipelineStageFlags); |
| *countPtr += sizeof(VkPipelineStageFlags); |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i) |
| { |
| count_VkMemoryBarrier(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMemoryBarrier*)(local_pMemoryBarriers + i), countPtr); |
| } |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i) |
| { |
| count_VkBufferMemoryBarrier(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i), countPtr); |
| } |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i) |
| { |
| count_VkImageMemoryBarrier(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i), countPtr); |
| } |
| } |
| uint32_t packetSize_vkCmdWaitEvents = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdWaitEvents -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdWaitEvents); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdWaitEvents = OP_vkCmdWaitEvents; |
| memcpy(streamPtr, &opcode_vkCmdWaitEvents, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdWaitEvents, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (uint32_t*)&local_eventCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| if (((eventCount))) |
| { |
| uint8_t* cgen_var_0_ptr = (uint8_t*)(*streamPtrPtr); |
| for (uint32_t k = 0; k < ((eventCount)); ++k) |
| { |
| uint64_t tmpval = get_host_u64_VkEvent(local_pEvents[k]); |
| memcpy(cgen_var_0_ptr + k * 8, &tmpval, sizeof(uint64_t)); |
| } |
| *streamPtrPtr += 8 * ((eventCount)); |
| } |
| memcpy(*streamPtrPtr, (VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags)); |
| *streamPtrPtr += sizeof(VkPipelineStageFlags); |
| memcpy(*streamPtrPtr, (VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags)); |
| *streamPtrPtr += sizeof(VkPipelineStageFlags); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i) |
| { |
| reservedmarshal_VkMemoryBarrier(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMemoryBarrier*)(local_pMemoryBarriers + i), streamPtrPtr); |
| } |
| memcpy(*streamPtrPtr, (uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i) |
| { |
| reservedmarshal_VkBufferMemoryBarrier(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i), streamPtrPtr); |
| } |
| memcpy(*streamPtrPtr, (uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i) |
| { |
| reservedmarshal_VkImageMemoryBarrier(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i), streamPtrPtr); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| 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, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, 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, VK_STRUCTURE_TYPE_MAX_ENUM, 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, VK_STRUCTURE_TYPE_MAX_ENUM, pImageMemoryBarriers + i, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i)); |
| } |
| } |
| if (local_pMemoryBarriers) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i) |
| { |
| transform_tohost_VkMemoryBarrier(sResourceTracker, (VkMemoryBarrier*)(local_pMemoryBarriers + i)); |
| } |
| } |
| if (local_pBufferMemoryBarriers) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i) |
| { |
| transform_tohost_VkBufferMemoryBarrier(sResourceTracker, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i)); |
| } |
| } |
| if (local_pImageMemoryBarriers) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i) |
| { |
| transform_tohost_VkImageMemoryBarrier(sResourceTracker, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i)); |
| } |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkPipelineStageFlags); |
| *countPtr += sizeof(VkPipelineStageFlags); |
| *countPtr += sizeof(VkDependencyFlags); |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i) |
| { |
| count_VkMemoryBarrier(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMemoryBarrier*)(local_pMemoryBarriers + i), countPtr); |
| } |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i) |
| { |
| count_VkBufferMemoryBarrier(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i), countPtr); |
| } |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i) |
| { |
| count_VkImageMemoryBarrier(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i), countPtr); |
| } |
| } |
| uint32_t packetSize_vkCmdPipelineBarrier = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdPipelineBarrier -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdPipelineBarrier); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdPipelineBarrier = OP_vkCmdPipelineBarrier; |
| memcpy(streamPtr, &opcode_vkCmdPipelineBarrier, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdPipelineBarrier, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (VkPipelineStageFlags*)&local_srcStageMask, sizeof(VkPipelineStageFlags)); |
| *streamPtrPtr += sizeof(VkPipelineStageFlags); |
| memcpy(*streamPtrPtr, (VkPipelineStageFlags*)&local_dstStageMask, sizeof(VkPipelineStageFlags)); |
| *streamPtrPtr += sizeof(VkPipelineStageFlags); |
| memcpy(*streamPtrPtr, (VkDependencyFlags*)&local_dependencyFlags, sizeof(VkDependencyFlags)); |
| *streamPtrPtr += sizeof(VkDependencyFlags); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_memoryBarrierCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((memoryBarrierCount)); ++i) |
| { |
| reservedmarshal_VkMemoryBarrier(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMemoryBarrier*)(local_pMemoryBarriers + i), streamPtrPtr); |
| } |
| memcpy(*streamPtrPtr, (uint32_t*)&local_bufferMemoryBarrierCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((bufferMemoryBarrierCount)); ++i) |
| { |
| reservedmarshal_VkBufferMemoryBarrier(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBufferMemoryBarrier*)(local_pBufferMemoryBarriers + i), streamPtrPtr); |
| } |
| memcpy(*streamPtrPtr, (uint32_t*)&local_imageMemoryBarrierCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((imageMemoryBarrierCount)); ++i) |
| { |
| reservedmarshal_VkImageMemoryBarrier(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageMemoryBarrier*)(local_pImageMemoryBarriers + i), streamPtrPtr); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdBeginQuery( |
| VkCommandBuffer commandBuffer, |
| VkQueryPool queryPool, |
| uint32_t query, |
| VkQueryControlFlags flags, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(VkQueryControlFlags); |
| } |
| uint32_t packetSize_vkCmdBeginQuery = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdBeginQuery -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdBeginQuery); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdBeginQuery = OP_vkCmdBeginQuery; |
| memcpy(streamPtr, &opcode_vkCmdBeginQuery, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdBeginQuery, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkQueryPool((*&local_queryPool)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_query, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (VkQueryControlFlags*)&local_flags, sizeof(VkQueryControlFlags)); |
| *streamPtrPtr += sizeof(VkQueryControlFlags); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdEndQuery( |
| VkCommandBuffer commandBuffer, |
| VkQueryPool queryPool, |
| uint32_t query, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkCommandBuffer local_commandBuffer; |
| VkQueryPool local_queryPool; |
| uint32_t local_query; |
| local_commandBuffer = commandBuffer; |
| local_queryPool = queryPool; |
| local_query = query; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| } |
| uint32_t packetSize_vkCmdEndQuery = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdEndQuery -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdEndQuery); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdEndQuery = OP_vkCmdEndQuery; |
| memcpy(streamPtr, &opcode_vkCmdEndQuery, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdEndQuery, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkQueryPool((*&local_queryPool)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_query, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdResetQueryPool( |
| VkCommandBuffer commandBuffer, |
| VkQueryPool queryPool, |
| uint32_t firstQuery, |
| uint32_t queryCount, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| } |
| uint32_t packetSize_vkCmdResetQueryPool = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdResetQueryPool -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdResetQueryPool); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdResetQueryPool = OP_vkCmdResetQueryPool; |
| memcpy(streamPtr, &opcode_vkCmdResetQueryPool, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdResetQueryPool, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkQueryPool((*&local_queryPool)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_firstQuery, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_queryCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdWriteTimestamp( |
| VkCommandBuffer commandBuffer, |
| VkPipelineStageFlagBits pipelineStage, |
| VkQueryPool queryPool, |
| uint32_t query, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkPipelineStageFlagBits); |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| } |
| uint32_t packetSize_vkCmdWriteTimestamp = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdWriteTimestamp -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdWriteTimestamp); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdWriteTimestamp = OP_vkCmdWriteTimestamp; |
| memcpy(streamPtr, &opcode_vkCmdWriteTimestamp, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdWriteTimestamp, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (VkPipelineStageFlagBits*)&local_pipelineStage, sizeof(VkPipelineStageFlagBits)); |
| *streamPtrPtr += sizeof(VkPipelineStageFlagBits); |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkQueryPool((*&local_queryPool)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_query, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdCopyQueryPoolResults( |
| VkCommandBuffer commandBuffer, |
| VkQueryPool queryPool, |
| uint32_t firstQuery, |
| uint32_t queryCount, |
| VkBuffer dstBuffer, |
| VkDeviceSize dstOffset, |
| VkDeviceSize stride, |
| VkQueryResultFlags flags, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| uint64_t cgen_var_2; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkDeviceSize); |
| *countPtr += sizeof(VkDeviceSize); |
| *countPtr += sizeof(VkQueryResultFlags); |
| } |
| uint32_t packetSize_vkCmdCopyQueryPoolResults = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdCopyQueryPoolResults -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdCopyQueryPoolResults); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdCopyQueryPoolResults = OP_vkCmdCopyQueryPoolResults; |
| memcpy(streamPtr, &opcode_vkCmdCopyQueryPoolResults, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdCopyQueryPoolResults, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkQueryPool((*&local_queryPool)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_firstQuery, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_queryCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkBuffer((*&local_dstBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkDeviceSize*)&local_dstOffset, sizeof(VkDeviceSize)); |
| *streamPtrPtr += sizeof(VkDeviceSize); |
| memcpy(*streamPtrPtr, (VkDeviceSize*)&local_stride, sizeof(VkDeviceSize)); |
| *streamPtrPtr += sizeof(VkDeviceSize); |
| memcpy(*streamPtrPtr, (VkQueryResultFlags*)&local_flags, sizeof(VkQueryResultFlags)); |
| *streamPtrPtr += sizeof(VkQueryResultFlags); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdPushConstants( |
| VkCommandBuffer commandBuffer, |
| VkPipelineLayout layout, |
| VkShaderStageFlags stageFlags, |
| uint32_t offset, |
| uint32_t size, |
| const void* pValues, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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; |
| // Avoiding deepcopy for pValues |
| local_pValues = (void*)pValues; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkShaderStageFlags); |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| *countPtr += ((size)) * sizeof(uint8_t); |
| } |
| uint32_t packetSize_vkCmdPushConstants = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdPushConstants -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdPushConstants); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdPushConstants = OP_vkCmdPushConstants; |
| memcpy(streamPtr, &opcode_vkCmdPushConstants, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdPushConstants, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkPipelineLayout((*&local_layout)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkShaderStageFlags*)&local_stageFlags, sizeof(VkShaderStageFlags)); |
| *streamPtrPtr += sizeof(VkShaderStageFlags); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_offset, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_size, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (void*)local_pValues, ((size)) * sizeof(uint8_t)); |
| *streamPtrPtr += ((size)) * sizeof(uint8_t); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdBeginRenderPass( |
| VkCommandBuffer commandBuffer, |
| const VkRenderPassBeginInfo* pRenderPassBegin, |
| VkSubpassContents contents, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pRenderPassBegin, (VkRenderPassBeginInfo*)(local_pRenderPassBegin)); |
| } |
| local_contents = contents; |
| if (local_pRenderPassBegin) |
| { |
| transform_tohost_VkRenderPassBeginInfo(sResourceTracker, (VkRenderPassBeginInfo*)(local_pRenderPassBegin)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkRenderPassBeginInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkRenderPassBeginInfo*)(local_pRenderPassBegin), countPtr); |
| *countPtr += sizeof(VkSubpassContents); |
| } |
| uint32_t packetSize_vkCmdBeginRenderPass = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdBeginRenderPass -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdBeginRenderPass); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdBeginRenderPass = OP_vkCmdBeginRenderPass; |
| memcpy(streamPtr, &opcode_vkCmdBeginRenderPass, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdBeginRenderPass, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| reservedmarshal_VkRenderPassBeginInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkRenderPassBeginInfo*)(local_pRenderPassBegin), streamPtrPtr); |
| memcpy(*streamPtrPtr, (VkSubpassContents*)&local_contents, sizeof(VkSubpassContents)); |
| *streamPtrPtr += sizeof(VkSubpassContents); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdNextSubpass( |
| VkCommandBuffer commandBuffer, |
| VkSubpassContents contents, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkCommandBuffer local_commandBuffer; |
| VkSubpassContents local_contents; |
| local_commandBuffer = commandBuffer; |
| local_contents = contents; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkSubpassContents); |
| } |
| uint32_t packetSize_vkCmdNextSubpass = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdNextSubpass -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdNextSubpass); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdNextSubpass = OP_vkCmdNextSubpass; |
| memcpy(streamPtr, &opcode_vkCmdNextSubpass, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdNextSubpass, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (VkSubpassContents*)&local_contents, sizeof(VkSubpassContents)); |
| *streamPtrPtr += sizeof(VkSubpassContents); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdEndRenderPass( |
| VkCommandBuffer commandBuffer, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkCommandBuffer local_commandBuffer; |
| local_commandBuffer = commandBuffer; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| } |
| uint32_t packetSize_vkCmdEndRenderPass = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdEndRenderPass -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdEndRenderPass); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdEndRenderPass = OP_vkCmdEndRenderPass; |
| memcpy(streamPtr, &opcode_vkCmdEndRenderPass, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdEndRenderPass, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdExecuteCommands( |
| VkCommandBuffer commandBuffer, |
| uint32_t commandBufferCount, |
| const VkCommandBuffer* pCommandBuffers, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkCommandBuffer local_commandBuffer; |
| uint32_t local_commandBufferCount; |
| VkCommandBuffer* local_pCommandBuffers; |
| local_commandBuffer = commandBuffer; |
| local_commandBufferCount = commandBufferCount; |
| // Avoiding deepcopy for pCommandBuffers |
| local_pCommandBuffers = (VkCommandBuffer*)pCommandBuffers; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| if (((commandBufferCount))) |
| { |
| *countPtr += ((commandBufferCount)) * 8; |
| } |
| } |
| uint32_t packetSize_vkCmdExecuteCommands = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdExecuteCommands -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdExecuteCommands); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdExecuteCommands = OP_vkCmdExecuteCommands; |
| memcpy(streamPtr, &opcode_vkCmdExecuteCommands, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdExecuteCommands, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (uint32_t*)&local_commandBufferCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| if (((commandBufferCount))) |
| { |
| uint8_t* cgen_var_0_ptr = (uint8_t*)(*streamPtrPtr); |
| for (uint32_t k = 0; k < ((commandBufferCount)); ++k) |
| { |
| uint64_t tmpval = get_host_u64_VkCommandBuffer(local_pCommandBuffers[k]); |
| memcpy(cgen_var_0_ptr + k * 8, &tmpval, sizeof(uint64_t)); |
| } |
| *streamPtrPtr += 8 * ((commandBufferCount)); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| #endif |
| #ifdef VK_VERSION_1_1 |
| VkResult VkEncoder::vkEnumerateInstanceVersion( |
| uint32_t* pApiVersion, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| *countPtr += sizeof(uint32_t); |
| } |
| uint32_t packetSize_vkEnumerateInstanceVersion = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkEnumerateInstanceVersion); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkEnumerateInstanceVersion = OP_vkEnumerateInstanceVersion; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkEnumerateInstanceVersion, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkEnumerateInstanceVersion, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| memcpy(*streamPtrPtr, (uint32_t*)pApiVersion, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| stream->read((uint32_t*)pApiVersion, sizeof(uint32_t)); |
| VkResult vkEnumerateInstanceVersion_VkResult_return = (VkResult)0; |
| stream->read(&vkEnumerateInstanceVersion_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkEnumerateInstanceVersion_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkBindBufferMemory2( |
| VkDevice device, |
| uint32_t bindInfoCount, |
| const VkBindBufferMemoryInfo* pBindInfos, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pBindInfos + i, (VkBindBufferMemoryInfo*)(local_pBindInfos + i)); |
| } |
| } |
| if (local_pBindInfos) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) |
| { |
| transform_tohost_VkBindBufferMemoryInfo(sResourceTracker, (VkBindBufferMemoryInfo*)(local_pBindInfos + i)); |
| } |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) |
| { |
| count_VkBindBufferMemoryInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBindBufferMemoryInfo*)(local_pBindInfos + i), countPtr); |
| } |
| } |
| uint32_t packetSize_vkBindBufferMemory2 = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkBindBufferMemory2); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkBindBufferMemory2 = OP_vkBindBufferMemory2; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkBindBufferMemory2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkBindBufferMemory2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_bindInfoCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) |
| { |
| reservedmarshal_VkBindBufferMemoryInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBindBufferMemoryInfo*)(local_pBindInfos + i), streamPtrPtr); |
| } |
| VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0; |
| stream->read(&vkBindBufferMemory2_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkBindBufferMemory2_VkResult_return; |
| } |
| |
| VkResult VkEncoder::vkBindImageMemory2( |
| VkDevice device, |
| uint32_t bindInfoCount, |
| const VkBindImageMemoryInfo* pBindInfos, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pBindInfos + i, (VkBindImageMemoryInfo*)(local_pBindInfos + i)); |
| } |
| } |
| if (local_pBindInfos) |
| { |
| for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) |
| { |
| transform_tohost_VkBindImageMemoryInfo(sResourceTracker, (VkBindImageMemoryInfo*)(local_pBindInfos + i)); |
| } |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) |
| { |
| count_VkBindImageMemoryInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBindImageMemoryInfo*)(local_pBindInfos + i), countPtr); |
| } |
| } |
| uint32_t packetSize_vkBindImageMemory2 = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkBindImageMemory2); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkBindImageMemory2 = OP_vkBindImageMemory2; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkBindImageMemory2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkBindImageMemory2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_bindInfoCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| for (uint32_t i = 0; i < (uint32_t)((bindInfoCount)); ++i) |
| { |
| reservedmarshal_VkBindImageMemoryInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBindImageMemoryInfo*)(local_pBindInfos + i), streamPtrPtr); |
| } |
| VkResult vkBindImageMemory2_VkResult_return = (VkResult)0; |
| stream->read(&vkBindImageMemory2_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkBindImageMemory2_VkResult_return; |
| } |
| |
| void VkEncoder::vkGetDeviceGroupPeerMemoryFeatures( |
| VkDevice device, |
| uint32_t heapIndex, |
| uint32_t localDeviceIndex, |
| uint32_t remoteDeviceIndex, |
| VkPeerMemoryFeatureFlags* pPeerMemoryFeatures, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(VkPeerMemoryFeatureFlags); |
| } |
| uint32_t packetSize_vkGetDeviceGroupPeerMemoryFeatures = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetDeviceGroupPeerMemoryFeatures); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetDeviceGroupPeerMemoryFeatures = OP_vkGetDeviceGroupPeerMemoryFeatures; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetDeviceGroupPeerMemoryFeatures, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (uint32_t*)&local_heapIndex, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_localDeviceIndex, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_remoteDeviceIndex, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags)); |
| *streamPtrPtr += sizeof(VkPeerMemoryFeatureFlags); |
| stream->read((VkPeerMemoryFeatureFlags*)pPeerMemoryFeatures, sizeof(VkPeerMemoryFeatureFlags)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdSetDeviceMask( |
| VkCommandBuffer commandBuffer, |
| uint32_t deviceMask, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkCommandBuffer local_commandBuffer; |
| uint32_t local_deviceMask; |
| local_commandBuffer = commandBuffer; |
| local_deviceMask = deviceMask; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| } |
| uint32_t packetSize_vkCmdSetDeviceMask = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdSetDeviceMask -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdSetDeviceMask); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdSetDeviceMask = OP_vkCmdSetDeviceMask; |
| memcpy(streamPtr, &opcode_vkCmdSetDeviceMask, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdSetDeviceMask, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (uint32_t*)&local_deviceMask, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkCmdDispatchBase( |
| VkCommandBuffer commandBuffer, |
| uint32_t baseGroupX, |
| uint32_t baseGroupY, |
| uint32_t baseGroupZ, |
| uint32_t groupCountX, |
| uint32_t groupCountY, |
| uint32_t groupCountZ, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| *countPtr += sizeof(uint32_t); |
| } |
| uint32_t packetSize_vkCmdDispatchBase = 4 + 4 + count; |
| if (queueSubmitWithCommandsEnabled) packetSize_vkCmdDispatchBase -= 8; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCmdDispatchBase); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCmdDispatchBase = OP_vkCmdDispatchBase; |
| memcpy(streamPtr, &opcode_vkCmdDispatchBase, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCmdDispatchBase, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (!queueSubmitWithCommandsEnabled) |
| { |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkCommandBuffer((*&local_commandBuffer)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| } |
| memcpy(*streamPtrPtr, (uint32_t*)&local_baseGroupX, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_baseGroupY, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_baseGroupZ, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_groupCountX, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_groupCountY, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| memcpy(*streamPtrPtr, (uint32_t*)&local_groupCountZ, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkEnumeratePhysicalDeviceGroups( |
| VkInstance instance, |
| uint32_t* pPhysicalDeviceGroupCount, |
| VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkInstance local_instance; |
| local_instance = instance; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pPhysicalDeviceGroupCount) |
| { |
| *countPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pPhysicalDeviceGroupProperties) |
| { |
| if (pPhysicalDeviceGroupCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i) |
| { |
| count_VkPhysicalDeviceGroupProperties(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i), countPtr); |
| } |
| } |
| } |
| } |
| uint32_t packetSize_vkEnumeratePhysicalDeviceGroups = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkEnumeratePhysicalDeviceGroups); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkEnumeratePhysicalDeviceGroups = OP_vkEnumeratePhysicalDeviceGroups; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkEnumeratePhysicalDeviceGroups, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkInstance((*&local_instance)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupCount; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pPhysicalDeviceGroupCount) |
| { |
| memcpy(*streamPtrPtr, (uint32_t*)pPhysicalDeviceGroupCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)pPhysicalDeviceGroupProperties; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pPhysicalDeviceGroupProperties) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i) |
| { |
| reservedmarshal_VkPhysicalDeviceGroupProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i), streamPtrPtr); |
| } |
| } |
| // 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"); |
| } |
| if (pPhysicalDeviceGroupCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i) |
| { |
| unmarshal_VkPhysicalDeviceGroupProperties(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i)); |
| } |
| } |
| } |
| if (pPhysicalDeviceGroupCount) |
| { |
| if (pPhysicalDeviceGroupProperties) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPhysicalDeviceGroupCount)); ++i) |
| { |
| transform_fromhost_VkPhysicalDeviceGroupProperties(sResourceTracker, (VkPhysicalDeviceGroupProperties*)(pPhysicalDeviceGroupProperties + i)); |
| } |
| } |
| } |
| VkResult vkEnumeratePhysicalDeviceGroups_VkResult_return = (VkResult)0; |
| stream->read(&vkEnumeratePhysicalDeviceGroups_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkEnumeratePhysicalDeviceGroups_VkResult_return; |
| } |
| |
| void VkEncoder::vkGetImageMemoryRequirements2( |
| VkDevice device, |
| const VkImageMemoryRequirementsInfo2* pInfo, |
| VkMemoryRequirements2* pMemoryRequirements, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pInfo, (VkImageMemoryRequirementsInfo2*)(local_pInfo)); |
| } |
| if (local_pInfo) |
| { |
| transform_tohost_VkImageMemoryRequirementsInfo2(sResourceTracker, (VkImageMemoryRequirementsInfo2*)(local_pInfo)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkImageMemoryRequirementsInfo2(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageMemoryRequirementsInfo2*)(local_pInfo), countPtr); |
| count_VkMemoryRequirements2(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMemoryRequirements2*)(pMemoryRequirements), countPtr); |
| } |
| uint32_t packetSize_vkGetImageMemoryRequirements2 = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetImageMemoryRequirements2); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetImageMemoryRequirements2 = OP_vkGetImageMemoryRequirements2; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetImageMemoryRequirements2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetImageMemoryRequirements2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkImageMemoryRequirementsInfo2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageMemoryRequirementsInfo2*)(local_pInfo), streamPtrPtr); |
| reservedmarshal_VkMemoryRequirements2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMemoryRequirements2*)(pMemoryRequirements), streamPtrPtr); |
| unmarshal_VkMemoryRequirements2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMemoryRequirements2*)(pMemoryRequirements)); |
| if (pMemoryRequirements) |
| { |
| transform_fromhost_VkMemoryRequirements2(sResourceTracker, (VkMemoryRequirements2*)(pMemoryRequirements)); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkGetBufferMemoryRequirements2( |
| VkDevice device, |
| const VkBufferMemoryRequirementsInfo2* pInfo, |
| VkMemoryRequirements2* pMemoryRequirements, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pInfo, (VkBufferMemoryRequirementsInfo2*)(local_pInfo)); |
| } |
| if (local_pInfo) |
| { |
| transform_tohost_VkBufferMemoryRequirementsInfo2(sResourceTracker, (VkBufferMemoryRequirementsInfo2*)(local_pInfo)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkBufferMemoryRequirementsInfo2(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBufferMemoryRequirementsInfo2*)(local_pInfo), countPtr); |
| count_VkMemoryRequirements2(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMemoryRequirements2*)(pMemoryRequirements), countPtr); |
| } |
| uint32_t packetSize_vkGetBufferMemoryRequirements2 = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetBufferMemoryRequirements2); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetBufferMemoryRequirements2 = OP_vkGetBufferMemoryRequirements2; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetBufferMemoryRequirements2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetBufferMemoryRequirements2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkBufferMemoryRequirementsInfo2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkBufferMemoryRequirementsInfo2*)(local_pInfo), streamPtrPtr); |
| reservedmarshal_VkMemoryRequirements2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMemoryRequirements2*)(pMemoryRequirements), streamPtrPtr); |
| unmarshal_VkMemoryRequirements2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkMemoryRequirements2*)(pMemoryRequirements)); |
| if (pMemoryRequirements) |
| { |
| transform_fromhost_VkMemoryRequirements2(sResourceTracker, (VkMemoryRequirements2*)(pMemoryRequirements)); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkGetImageSparseMemoryRequirements2( |
| VkDevice device, |
| const VkImageSparseMemoryRequirementsInfo2* pInfo, |
| uint32_t* pSparseMemoryRequirementCount, |
| VkSparseImageMemoryRequirements2* pSparseMemoryRequirements, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pInfo, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo)); |
| } |
| if (local_pInfo) |
| { |
| transform_tohost_VkImageSparseMemoryRequirementsInfo2(sResourceTracker, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkImageSparseMemoryRequirementsInfo2(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pSparseMemoryRequirementCount) |
| { |
| *countPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pSparseMemoryRequirements) |
| { |
| if (pSparseMemoryRequirementCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i) |
| { |
| count_VkSparseImageMemoryRequirements2(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i), countPtr); |
| } |
| } |
| } |
| } |
| uint32_t packetSize_vkGetImageSparseMemoryRequirements2 = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetImageSparseMemoryRequirements2); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetImageSparseMemoryRequirements2 = OP_vkGetImageSparseMemoryRequirements2; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetImageSparseMemoryRequirements2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkImageSparseMemoryRequirementsInfo2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageSparseMemoryRequirementsInfo2*)(local_pInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)pSparseMemoryRequirementCount; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pSparseMemoryRequirementCount) |
| { |
| memcpy(*streamPtrPtr, (uint32_t*)pSparseMemoryRequirementCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)pSparseMemoryRequirements; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pSparseMemoryRequirements) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i) |
| { |
| reservedmarshal_VkSparseImageMemoryRequirements2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i), streamPtrPtr); |
| } |
| } |
| // 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"); |
| } |
| if (pSparseMemoryRequirementCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i) |
| { |
| unmarshal_VkSparseImageMemoryRequirements2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i)); |
| } |
| } |
| } |
| if (pSparseMemoryRequirementCount) |
| { |
| if (pSparseMemoryRequirements) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pSparseMemoryRequirementCount)); ++i) |
| { |
| transform_fromhost_VkSparseImageMemoryRequirements2(sResourceTracker, (VkSparseImageMemoryRequirements2*)(pSparseMemoryRequirements + i)); |
| } |
| } |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkGetPhysicalDeviceFeatures2( |
| VkPhysicalDevice physicalDevice, |
| VkPhysicalDeviceFeatures2* pFeatures, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkPhysicalDevice local_physicalDevice; |
| local_physicalDevice = physicalDevice; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkPhysicalDeviceFeatures2(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceFeatures2*)(pFeatures), countPtr); |
| } |
| uint32_t packetSize_vkGetPhysicalDeviceFeatures2 = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetPhysicalDeviceFeatures2); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetPhysicalDeviceFeatures2 = OP_vkGetPhysicalDeviceFeatures2; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetPhysicalDeviceFeatures2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkPhysicalDevice((*&local_physicalDevice)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkPhysicalDeviceFeatures2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceFeatures2*)(pFeatures), streamPtrPtr); |
| unmarshal_VkPhysicalDeviceFeatures2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceFeatures2*)(pFeatures)); |
| if (pFeatures) |
| { |
| transform_fromhost_VkPhysicalDeviceFeatures2(sResourceTracker, (VkPhysicalDeviceFeatures2*)(pFeatures)); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkGetPhysicalDeviceProperties2( |
| VkPhysicalDevice physicalDevice, |
| VkPhysicalDeviceProperties2* pProperties, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkPhysicalDevice local_physicalDevice; |
| local_physicalDevice = physicalDevice; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkPhysicalDeviceProperties2(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceProperties2*)(pProperties), countPtr); |
| } |
| uint32_t packetSize_vkGetPhysicalDeviceProperties2 = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetPhysicalDeviceProperties2); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetPhysicalDeviceProperties2 = OP_vkGetPhysicalDeviceProperties2; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetPhysicalDeviceProperties2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetPhysicalDeviceProperties2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkPhysicalDevice((*&local_physicalDevice)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkPhysicalDeviceProperties2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceProperties2*)(pProperties), streamPtrPtr); |
| unmarshal_VkPhysicalDeviceProperties2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceProperties2*)(pProperties)); |
| if (pProperties) |
| { |
| transform_fromhost_VkPhysicalDeviceProperties2(sResourceTracker, (VkPhysicalDeviceProperties2*)(pProperties)); |
| } |
| sResourceTracker->on_vkGetPhysicalDeviceProperties2(this, physicalDevice, pProperties); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkGetPhysicalDeviceFormatProperties2( |
| VkPhysicalDevice physicalDevice, |
| VkFormat format, |
| VkFormatProperties2* pFormatProperties, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkPhysicalDevice local_physicalDevice; |
| VkFormat local_format; |
| local_physicalDevice = physicalDevice; |
| local_format = format; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkFormat); |
| count_VkFormatProperties2(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkFormatProperties2*)(pFormatProperties), countPtr); |
| } |
| uint32_t packetSize_vkGetPhysicalDeviceFormatProperties2 = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetPhysicalDeviceFormatProperties2); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetPhysicalDeviceFormatProperties2 = OP_vkGetPhysicalDeviceFormatProperties2; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetPhysicalDeviceFormatProperties2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkPhysicalDevice((*&local_physicalDevice)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkFormat*)&local_format, sizeof(VkFormat)); |
| *streamPtrPtr += sizeof(VkFormat); |
| reservedmarshal_VkFormatProperties2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkFormatProperties2*)(pFormatProperties), streamPtrPtr); |
| unmarshal_VkFormatProperties2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkFormatProperties2*)(pFormatProperties)); |
| if (pFormatProperties) |
| { |
| transform_fromhost_VkFormatProperties2(sResourceTracker, (VkFormatProperties2*)(pFormatProperties)); |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkGetPhysicalDeviceImageFormatProperties2( |
| VkPhysicalDevice physicalDevice, |
| const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, |
| VkImageFormatProperties2* pImageFormatProperties, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pImageFormatInfo, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo)); |
| } |
| if (local_pImageFormatInfo) |
| { |
| transform_tohost_VkPhysicalDeviceImageFormatInfo2(sResourceTracker, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkPhysicalDeviceImageFormatInfo2(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo), countPtr); |
| count_VkImageFormatProperties2(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageFormatProperties2*)(pImageFormatProperties), countPtr); |
| } |
| uint32_t packetSize_vkGetPhysicalDeviceImageFormatProperties2 = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetPhysicalDeviceImageFormatProperties2); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetPhysicalDeviceImageFormatProperties2 = OP_vkGetPhysicalDeviceImageFormatProperties2; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetPhysicalDeviceImageFormatProperties2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkPhysicalDevice((*&local_physicalDevice)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkPhysicalDeviceImageFormatInfo2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceImageFormatInfo2*)(local_pImageFormatInfo), streamPtrPtr); |
| reservedmarshal_VkImageFormatProperties2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageFormatProperties2*)(pImageFormatProperties), streamPtrPtr); |
| unmarshal_VkImageFormatProperties2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkImageFormatProperties2*)(pImageFormatProperties)); |
| if (pImageFormatProperties) |
| { |
| transform_fromhost_VkImageFormatProperties2(sResourceTracker, (VkImageFormatProperties2*)(pImageFormatProperties)); |
| } |
| VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0; |
| stream->read(&vkGetPhysicalDeviceImageFormatProperties2_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return; |
| } |
| |
| void VkEncoder::vkGetPhysicalDeviceQueueFamilyProperties2( |
| VkPhysicalDevice physicalDevice, |
| uint32_t* pQueueFamilyPropertyCount, |
| VkQueueFamilyProperties2* pQueueFamilyProperties, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkPhysicalDevice local_physicalDevice; |
| local_physicalDevice = physicalDevice; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pQueueFamilyPropertyCount) |
| { |
| *countPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pQueueFamilyProperties) |
| { |
| if (pQueueFamilyPropertyCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i) |
| { |
| count_VkQueueFamilyProperties2(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i), countPtr); |
| } |
| } |
| } |
| } |
| uint32_t packetSize_vkGetPhysicalDeviceQueueFamilyProperties2 = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetPhysicalDeviceQueueFamilyProperties2); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetPhysicalDeviceQueueFamilyProperties2 = OP_vkGetPhysicalDeviceQueueFamilyProperties2; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetPhysicalDeviceQueueFamilyProperties2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkPhysicalDevice((*&local_physicalDevice)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)pQueueFamilyPropertyCount; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pQueueFamilyPropertyCount) |
| { |
| memcpy(*streamPtrPtr, (uint32_t*)pQueueFamilyPropertyCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)pQueueFamilyProperties; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pQueueFamilyProperties) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i) |
| { |
| reservedmarshal_VkQueueFamilyProperties2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i), streamPtrPtr); |
| } |
| } |
| // 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"); |
| } |
| if (pQueueFamilyPropertyCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i) |
| { |
| unmarshal_VkQueueFamilyProperties2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i)); |
| } |
| } |
| } |
| if (pQueueFamilyPropertyCount) |
| { |
| if (pQueueFamilyProperties) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pQueueFamilyPropertyCount)); ++i) |
| { |
| transform_fromhost_VkQueueFamilyProperties2(sResourceTracker, (VkQueueFamilyProperties2*)(pQueueFamilyProperties + i)); |
| } |
| } |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkGetPhysicalDeviceMemoryProperties2( |
| VkPhysicalDevice physicalDevice, |
| VkPhysicalDeviceMemoryProperties2* pMemoryProperties, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkPhysicalDevice local_physicalDevice; |
| local_physicalDevice = physicalDevice; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkPhysicalDeviceMemoryProperties2(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties), countPtr); |
| } |
| uint32_t packetSize_vkGetPhysicalDeviceMemoryProperties2 = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetPhysicalDeviceMemoryProperties2); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetPhysicalDeviceMemoryProperties2 = OP_vkGetPhysicalDeviceMemoryProperties2; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetPhysicalDeviceMemoryProperties2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkPhysicalDevice((*&local_physicalDevice)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkPhysicalDeviceMemoryProperties2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties), streamPtrPtr); |
| unmarshal_VkPhysicalDeviceMemoryProperties2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties)); |
| if (pMemoryProperties) |
| { |
| transform_fromhost_VkPhysicalDeviceMemoryProperties2(sResourceTracker, (VkPhysicalDeviceMemoryProperties2*)(pMemoryProperties)); |
| } |
| sResourceTracker->on_vkGetPhysicalDeviceMemoryProperties2(this, physicalDevice, pMemoryProperties); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkGetPhysicalDeviceSparseImageFormatProperties2( |
| VkPhysicalDevice physicalDevice, |
| const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, |
| uint32_t* pPropertyCount, |
| VkSparseImageFormatProperties2* pProperties, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pFormatInfo, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo)); |
| } |
| if (local_pFormatInfo) |
| { |
| transform_tohost_VkPhysicalDeviceSparseImageFormatInfo2(sResourceTracker, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkPhysicalDeviceSparseImageFormatInfo2(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pPropertyCount) |
| { |
| *countPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (pProperties) |
| { |
| if (pPropertyCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| count_VkSparseImageFormatProperties2(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSparseImageFormatProperties2*)(pProperties + i), countPtr); |
| } |
| } |
| } |
| } |
| uint32_t packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2 = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetPhysicalDeviceSparseImageFormatProperties2 = OP_vkGetPhysicalDeviceSparseImageFormatProperties2; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetPhysicalDeviceSparseImageFormatProperties2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkPhysicalDevice((*&local_physicalDevice)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkPhysicalDeviceSparseImageFormatInfo2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkPhysicalDeviceSparseImageFormatInfo2*)(local_pFormatInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)pPropertyCount; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pPropertyCount) |
| { |
| memcpy(*streamPtrPtr, (uint32_t*)pPropertyCount, sizeof(uint32_t)); |
| *streamPtrPtr += sizeof(uint32_t); |
| } |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)pProperties; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (pProperties) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| reservedmarshal_VkSparseImageFormatProperties2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSparseImageFormatProperties2*)(pProperties + i), streamPtrPtr); |
| } |
| } |
| // 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"); |
| } |
| if (pPropertyCount) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| unmarshal_VkSparseImageFormatProperties2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSparseImageFormatProperties2*)(pProperties + i)); |
| } |
| } |
| } |
| if (pPropertyCount) |
| { |
| if (pProperties) |
| { |
| for (uint32_t i = 0; i < (uint32_t)(*(pPropertyCount)); ++i) |
| { |
| transform_fromhost_VkSparseImageFormatProperties2(sResourceTracker, (VkSparseImageFormatProperties2*)(pProperties + i)); |
| } |
| } |
| } |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkTrimCommandPool( |
| VkDevice device, |
| VkCommandPool commandPool, |
| VkCommandPoolTrimFlags flags, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| VkDevice local_device; |
| VkCommandPool local_commandPool; |
| VkCommandPoolTrimFlags local_flags; |
| local_device = device; |
| local_commandPool = commandPool; |
| local_flags = flags; |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| *countPtr += sizeof(VkCommandPoolTrimFlags); |
| } |
| uint32_t packetSize_vkTrimCommandPool = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkTrimCommandPool); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkTrimCommandPool = OP_vkTrimCommandPool; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkTrimCommandPool, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkTrimCommandPool, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkCommandPool((*&local_commandPool)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| memcpy(*streamPtrPtr, (VkCommandPoolTrimFlags*)&local_flags, sizeof(VkCommandPoolTrimFlags)); |
| *streamPtrPtr += sizeof(VkCommandPoolTrimFlags); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| void VkEncoder::vkGetDeviceQueue2( |
| VkDevice device, |
| const VkDeviceQueueInfo2* pQueueInfo, |
| VkQueue* pQueue, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pQueueInfo, (VkDeviceQueueInfo2*)(local_pQueueInfo)); |
| } |
| if (local_pQueueInfo) |
| { |
| transform_tohost_VkDeviceQueueInfo2(sResourceTracker, (VkDeviceQueueInfo2*)(local_pQueueInfo)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkDeviceQueueInfo2(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkDeviceQueueInfo2*)(local_pQueueInfo), countPtr); |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkGetDeviceQueue2 = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkGetDeviceQueue2); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkGetDeviceQueue2 = OP_vkGetDeviceQueue2; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkGetDeviceQueue2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkGetDeviceQueue2, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkDeviceQueueInfo2(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkDeviceQueueInfo2*)(local_pQueueInfo), streamPtrPtr); |
| /* is handle, possibly out */; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = (uint64_t)((*pQueue)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| uint64_t cgen_var_2; |
| stream->read((uint64_t*)&cgen_var_2, 8); |
| stream->handleMapping()->mapHandles_u64_VkQueue(&cgen_var_2, (VkQueue*)pQueue, 1); |
| sResourceTracker->on_vkGetDeviceQueue2(this, device, pQueueInfo, pQueue); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| } |
| |
| VkResult VkEncoder::vkCreateSamplerYcbcrConversion( |
| VkDevice device, |
| const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkSamplerYcbcrConversion* pYcbcrConversion, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pCreateInfo, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo)); |
| } |
| local_pAllocator = nullptr; |
| if (pAllocator) |
| { |
| local_pAllocator = (VkAllocationCallbacks*)pool->alloc(sizeof(const VkAllocationCallbacks)); |
| deepcopy_VkAllocationCallbacks(pool, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pCreateInfo) |
| { |
| transform_tohost_VkSamplerYcbcrConversionCreateInfo(sResourceTracker, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo)); |
| } |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| count_VkSamplerYcbcrConversionCreateInfo(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo), countPtr); |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| uint64_t cgen_var_1; |
| *countPtr += 8; |
| } |
| uint32_t packetSize_vkCreateSamplerYcbcrConversion = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkCreateSamplerYcbcrConversion); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkCreateSamplerYcbcrConversion = OP_vkCreateSamplerYcbcrConversion; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkCreateSamplerYcbcrConversion, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkCreateSamplerYcbcrConversion, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| reservedmarshal_VkSamplerYcbcrConversionCreateInfo(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkSamplerYcbcrConversionCreateInfo*)(local_pCreateInfo), streamPtrPtr); |
| // WARNING PTR CHECK |
| uint64_t cgen_var_1 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_1, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| /* is handle, possibly out */; |
| uint64_t cgen_var_2; |
| *&cgen_var_2 = (uint64_t)((*pYcbcrConversion)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_2, 8); |
| *streamPtrPtr += 8; |
| /* is handle, possibly out */; |
| stream->setHandleMapping(sResourceTracker->createMapping()); |
| uint64_t cgen_var_3; |
| stream->read((uint64_t*)&cgen_var_3, 8); |
| stream->handleMapping()->mapHandles_u64_VkSamplerYcbcrConversion(&cgen_var_3, (VkSamplerYcbcrConversion*)pYcbcrConversion, 1); |
| stream->unsetHandleMapping(); |
| VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0; |
| stream->read(&vkCreateSamplerYcbcrConversion_VkResult_return, sizeof(VkResult)); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this->unlock(); |
| return vkCreateSamplerYcbcrConversion_VkResult_return; |
| } |
| |
| void VkEncoder::vkDestroySamplerYcbcrConversion( |
| VkDevice device, |
| VkSamplerYcbcrConversion ycbcrConversion, |
| const VkAllocationCallbacks* pAllocator, |
| uint32_t doLock) |
| { |
| (void)doLock; |
| bool queueSubmitWithCommandsEnabled = sFeatureBits & VULKAN_STREAM_FEATURE_QUEUE_SUBMIT_WITH_COMMANDS_BIT; |
| if (!queueSubmitWithCommandsEnabled && doLock) this->lock(); |
| auto stream = mImpl->stream(); |
| auto pool = mImpl->pool(); |
| 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, VK_STRUCTURE_TYPE_MAX_ENUM, pAllocator, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| local_pAllocator = nullptr; |
| if (local_pAllocator) |
| { |
| transform_tohost_VkAllocationCallbacks(sResourceTracker, (VkAllocationCallbacks*)(local_pAllocator)); |
| } |
| size_t count = 0; |
| size_t* countPtr = &count; |
| { |
| uint64_t cgen_var_0; |
| *countPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *countPtr += 1 * 8; |
| // WARNING PTR CHECK |
| *countPtr += 8; |
| if (local_pAllocator) |
| { |
| count_VkAllocationCallbacks(sFeatureBits, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), countPtr); |
| } |
| } |
| uint32_t packetSize_vkDestroySamplerYcbcrConversion = 4 + 4 + (queueSubmitWithCommandsEnabled ? 4 : 0) + count; |
| uint8_t* streamPtr = stream->reserve(packetSize_vkDestroySamplerYcbcrConversion); |
| uint8_t** streamPtrPtr = &streamPtr; |
| uint32_t opcode_vkDestroySamplerYcbcrConversion = OP_vkDestroySamplerYcbcrConversion; |
| uint32_t seqno; if (queueSubmitWithCommandsEnabled) seqno = ResourceTracker::nextSeqno(); |
| memcpy(streamPtr, &opcode_vkDestroySamplerYcbcrConversion, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| memcpy(streamPtr, &packetSize_vkDestroySamplerYcbcrConversion, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); |
| if (queueSubmitWithCommandsEnabled) { memcpy(streamPtr, &seqno, sizeof(uint32_t)); streamPtr += sizeof(uint32_t); } |
| uint64_t cgen_var_0; |
| *&cgen_var_0 = get_host_u64_VkDevice((*&local_device)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_0, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| uint64_t cgen_var_1; |
| *&cgen_var_1 = get_host_u64_VkSamplerYcbcrConversion((*&local_ycbcrConversion)); |
| memcpy(*streamPtrPtr, (uint64_t*)&cgen_var_1, 1 * 8); |
| *streamPtrPtr += 1 * 8; |
| // WARNING PTR CHECK |
| uint64_t cgen_var_2 = (uint64_t)(uintptr_t)local_pAllocator; |
| memcpy((*streamPtrPtr), &cgen_var_2, 8); |
| android::base::Stream::toBe64((uint8_t*)(*streamPtrPtr)); |
| *streamPtrPtr += 8; |
| if (local_pAllocator) |
| { |
| reservedmarshal_VkAllocationCallbacks(stream, VK_STRUCTURE_TYPE_MAX_ENUM, (VkAllocationCallbacks*)(local_pAllocator), streamPtrPtr); |
| } |
| sResourceTracker->destroyMapping()->mapHandles_VkSamplerYcbcrConversion((VkSamplerYcbcrConversion*)&ycbcrConversion); |
| stream->flush(); |
| ++encodeCount;; |
| if (0 == encodeCount % POOL_CLEAR_INTERVAL) |
| { |
| pool->freeAll(); |
| stream->clearPool(); |
| } |
| if (!queueSubmitWithCommandsEnabled && doLock) this |