| // *** THIS FILE IS GENERATED - DO NOT EDIT *** |
| // See layer_chassis_dispatch_generator.py for modifications |
| |
| /*************************************************************************** |
| * |
| * Copyright (c) 2015-2023 The Khronos Group Inc. |
| * Copyright (c) 2015-2023 Valve Corporation |
| * Copyright (c) 2015-2023 LunarG, 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. |
| ****************************************************************************/ |
| |
| // NOLINTBEGIN |
| |
| #include "utils/cast_utils.h" |
| #include "chassis.h" |
| #include "layer_chassis_dispatch.h" |
| #include "vk_safe_struct.h" |
| #include "state_tracker/pipeline_state.h" |
| |
| #define DISPATCH_MAX_STACK_ALLOCATIONS 32 |
| |
| // Unique Objects pNext extension handling function |
| void WrapPnextChainHandles(ValidationObject* layer_data, const void* pNext) { |
| void* cur_pnext = const_cast<void*>(pNext); |
| while (cur_pnext != nullptr) { |
| VkBaseOutStructure* header = reinterpret_cast<VkBaseOutStructure*>(cur_pnext); |
| |
| switch (header->sType) { |
| case VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT: { |
| safe_VkFrameBoundaryEXT* safe_struct = reinterpret_cast<safe_VkFrameBoundaryEXT*>(cur_pnext); |
| if (safe_struct->pImages) { |
| for (uint32_t index0 = 0; index0 < safe_struct->imageCount; ++index0) { |
| safe_struct->pImages[index0] = layer_data->Unwrap(safe_struct->pImages[index0]); |
| } |
| } |
| if (safe_struct->pBuffers) { |
| for (uint32_t index0 = 0; index0 < safe_struct->bufferCount; ++index0) { |
| safe_struct->pBuffers[index0] = layer_data->Unwrap(safe_struct->pBuffers[index0]); |
| } |
| } |
| } break; |
| |
| #ifdef VK_USE_PLATFORM_WIN32_KHR |
| case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR: { |
| safe_VkWin32KeyedMutexAcquireReleaseInfoKHR* safe_struct = |
| reinterpret_cast<safe_VkWin32KeyedMutexAcquireReleaseInfoKHR*>(cur_pnext); |
| if (safe_struct->pAcquireSyncs) { |
| for (uint32_t index0 = 0; index0 < safe_struct->acquireCount; ++index0) { |
| safe_struct->pAcquireSyncs[index0] = layer_data->Unwrap(safe_struct->pAcquireSyncs[index0]); |
| } |
| } |
| if (safe_struct->pReleaseSyncs) { |
| for (uint32_t index0 = 0; index0 < safe_struct->releaseCount; ++index0) { |
| safe_struct->pReleaseSyncs[index0] = layer_data->Unwrap(safe_struct->pReleaseSyncs[index0]); |
| } |
| } |
| } break; |
| #endif // VK_USE_PLATFORM_WIN32_KHR |
| |
| #ifdef VK_USE_PLATFORM_WIN32_KHR |
| case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV: { |
| safe_VkWin32KeyedMutexAcquireReleaseInfoNV* safe_struct = |
| reinterpret_cast<safe_VkWin32KeyedMutexAcquireReleaseInfoNV*>(cur_pnext); |
| if (safe_struct->pAcquireSyncs) { |
| for (uint32_t index0 = 0; index0 < safe_struct->acquireCount; ++index0) { |
| safe_struct->pAcquireSyncs[index0] = layer_data->Unwrap(safe_struct->pAcquireSyncs[index0]); |
| } |
| } |
| if (safe_struct->pReleaseSyncs) { |
| for (uint32_t index0 = 0; index0 < safe_struct->releaseCount; ++index0) { |
| safe_struct->pReleaseSyncs[index0] = layer_data->Unwrap(safe_struct->pReleaseSyncs[index0]); |
| } |
| } |
| } break; |
| #endif // VK_USE_PLATFORM_WIN32_KHR |
| |
| case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV: { |
| safe_VkDedicatedAllocationMemoryAllocateInfoNV* safe_struct = |
| reinterpret_cast<safe_VkDedicatedAllocationMemoryAllocateInfoNV*>(cur_pnext); |
| |
| if (safe_struct->image) { |
| safe_struct->image = layer_data->Unwrap(safe_struct->image); |
| } |
| if (safe_struct->buffer) { |
| safe_struct->buffer = layer_data->Unwrap(safe_struct->buffer); |
| } |
| } break; |
| |
| #ifdef VK_USE_PLATFORM_FUCHSIA |
| case VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA: { |
| safe_VkImportMemoryBufferCollectionFUCHSIA* safe_struct = |
| reinterpret_cast<safe_VkImportMemoryBufferCollectionFUCHSIA*>(cur_pnext); |
| |
| if (safe_struct->collection) { |
| safe_struct->collection = layer_data->Unwrap(safe_struct->collection); |
| } |
| } break; |
| #endif // VK_USE_PLATFORM_FUCHSIA |
| |
| case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO: { |
| safe_VkMemoryDedicatedAllocateInfo* safe_struct = reinterpret_cast<safe_VkMemoryDedicatedAllocateInfo*>(cur_pnext); |
| |
| if (safe_struct->image) { |
| safe_struct->image = layer_data->Unwrap(safe_struct->image); |
| } |
| if (safe_struct->buffer) { |
| safe_struct->buffer = layer_data->Unwrap(safe_struct->buffer); |
| } |
| } break; |
| |
| #ifdef VK_USE_PLATFORM_FUCHSIA |
| case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA: { |
| safe_VkBufferCollectionBufferCreateInfoFUCHSIA* safe_struct = |
| reinterpret_cast<safe_VkBufferCollectionBufferCreateInfoFUCHSIA*>(cur_pnext); |
| |
| if (safe_struct->collection) { |
| safe_struct->collection = layer_data->Unwrap(safe_struct->collection); |
| } |
| } break; |
| #endif // VK_USE_PLATFORM_FUCHSIA |
| |
| #ifdef VK_USE_PLATFORM_FUCHSIA |
| case VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA: { |
| safe_VkBufferCollectionImageCreateInfoFUCHSIA* safe_struct = |
| reinterpret_cast<safe_VkBufferCollectionImageCreateInfoFUCHSIA*>(cur_pnext); |
| |
| if (safe_struct->collection) { |
| safe_struct->collection = layer_data->Unwrap(safe_struct->collection); |
| } |
| } break; |
| #endif // VK_USE_PLATFORM_FUCHSIA |
| |
| case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR: { |
| safe_VkImageSwapchainCreateInfoKHR* safe_struct = reinterpret_cast<safe_VkImageSwapchainCreateInfoKHR*>(cur_pnext); |
| |
| if (safe_struct->swapchain) { |
| safe_struct->swapchain = layer_data->Unwrap(safe_struct->swapchain); |
| } |
| } break; |
| |
| case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO: { |
| safe_VkSamplerYcbcrConversionInfo* safe_struct = reinterpret_cast<safe_VkSamplerYcbcrConversionInfo*>(cur_pnext); |
| |
| if (safe_struct->conversion) { |
| safe_struct->conversion = layer_data->Unwrap(safe_struct->conversion); |
| } |
| } break; |
| |
| case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT: { |
| safe_VkShaderModuleValidationCacheCreateInfoEXT* safe_struct = |
| reinterpret_cast<safe_VkShaderModuleValidationCacheCreateInfoEXT*>(cur_pnext); |
| |
| if (safe_struct->validationCache) { |
| safe_struct->validationCache = layer_data->Unwrap(safe_struct->validationCache); |
| } |
| } break; |
| |
| case VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI: { |
| safe_VkSubpassShadingPipelineCreateInfoHUAWEI* safe_struct = |
| reinterpret_cast<safe_VkSubpassShadingPipelineCreateInfoHUAWEI*>(cur_pnext); |
| |
| if (safe_struct->renderPass) { |
| safe_struct->renderPass = layer_data->Unwrap(safe_struct->renderPass); |
| } |
| } break; |
| |
| case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV: { |
| safe_VkGraphicsPipelineShaderGroupsCreateInfoNV* safe_struct = |
| reinterpret_cast<safe_VkGraphicsPipelineShaderGroupsCreateInfoNV*>(cur_pnext); |
| if (safe_struct->pGroups) { |
| for (uint32_t index0 = 0; index0 < safe_struct->groupCount; ++index0) { |
| if (safe_struct->pGroups[index0].pStages) { |
| for (uint32_t index1 = 0; index1 < safe_struct->pGroups[index0].stageCount; ++index1) { |
| if (safe_struct->pGroups[index0].pStages[index1].module) { |
| safe_struct->pGroups[index0].pStages[index1].module = |
| layer_data->Unwrap(safe_struct->pGroups[index0].pStages[index1].module); |
| } |
| } |
| } |
| } |
| } |
| if (safe_struct->pPipelines) { |
| for (uint32_t index0 = 0; index0 < safe_struct->pipelineCount; ++index0) { |
| safe_struct->pPipelines[index0] = layer_data->Unwrap(safe_struct->pPipelines[index0]); |
| } |
| } |
| } break; |
| |
| case VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR: { |
| safe_VkPipelineLibraryCreateInfoKHR* safe_struct = |
| reinterpret_cast<safe_VkPipelineLibraryCreateInfoKHR*>(cur_pnext); |
| if (safe_struct->pLibraries) { |
| for (uint32_t index0 = 0; index0 < safe_struct->libraryCount; ++index0) { |
| safe_struct->pLibraries[index0] = layer_data->Unwrap(safe_struct->pLibraries[index0]); |
| } |
| } |
| } break; |
| |
| case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR: { |
| safe_VkWriteDescriptorSetAccelerationStructureKHR* safe_struct = |
| reinterpret_cast<safe_VkWriteDescriptorSetAccelerationStructureKHR*>(cur_pnext); |
| if (safe_struct->pAccelerationStructures) { |
| for (uint32_t index0 = 0; index0 < safe_struct->accelerationStructureCount; ++index0) { |
| safe_struct->pAccelerationStructures[index0] = |
| layer_data->Unwrap(safe_struct->pAccelerationStructures[index0]); |
| } |
| } |
| } break; |
| |
| case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV: { |
| safe_VkWriteDescriptorSetAccelerationStructureNV* safe_struct = |
| reinterpret_cast<safe_VkWriteDescriptorSetAccelerationStructureNV*>(cur_pnext); |
| if (safe_struct->pAccelerationStructures) { |
| for (uint32_t index0 = 0; index0 < safe_struct->accelerationStructureCount; ++index0) { |
| safe_struct->pAccelerationStructures[index0] = |
| layer_data->Unwrap(safe_struct->pAccelerationStructures[index0]); |
| } |
| } |
| } break; |
| |
| case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO: { |
| safe_VkRenderPassAttachmentBeginInfo* safe_struct = |
| reinterpret_cast<safe_VkRenderPassAttachmentBeginInfo*>(cur_pnext); |
| if (safe_struct->pAttachments) { |
| for (uint32_t index0 = 0; index0 < safe_struct->attachmentCount; ++index0) { |
| safe_struct->pAttachments[index0] = layer_data->Unwrap(safe_struct->pAttachments[index0]); |
| } |
| } |
| } break; |
| |
| case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR: { |
| safe_VkBindImageMemorySwapchainInfoKHR* safe_struct = |
| reinterpret_cast<safe_VkBindImageMemorySwapchainInfoKHR*>(cur_pnext); |
| |
| if (safe_struct->swapchain) { |
| safe_struct->swapchain = layer_data->Unwrap(safe_struct->swapchain); |
| } |
| } break; |
| |
| case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT: { |
| safe_VkRenderingFragmentDensityMapAttachmentInfoEXT* safe_struct = |
| reinterpret_cast<safe_VkRenderingFragmentDensityMapAttachmentInfoEXT*>(cur_pnext); |
| |
| if (safe_struct->imageView) { |
| safe_struct->imageView = layer_data->Unwrap(safe_struct->imageView); |
| } |
| } break; |
| |
| case VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR: { |
| safe_VkRenderingFragmentShadingRateAttachmentInfoKHR* safe_struct = |
| reinterpret_cast<safe_VkRenderingFragmentShadingRateAttachmentInfoKHR*>(cur_pnext); |
| |
| if (safe_struct->imageView) { |
| safe_struct->imageView = layer_data->Unwrap(safe_struct->imageView); |
| } |
| } break; |
| |
| case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT: { |
| safe_VkSwapchainPresentFenceInfoEXT* safe_struct = |
| reinterpret_cast<safe_VkSwapchainPresentFenceInfoEXT*>(cur_pnext); |
| if (safe_struct->pFences) { |
| for (uint32_t index0 = 0; index0 < safe_struct->swapchainCount; ++index0) { |
| safe_struct->pFences[index0] = layer_data->Unwrap(safe_struct->pFences[index0]); |
| } |
| } |
| } break; |
| |
| #ifdef VK_USE_PLATFORM_METAL_EXT |
| case VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT: { |
| safe_VkExportMetalBufferInfoEXT* safe_struct = reinterpret_cast<safe_VkExportMetalBufferInfoEXT*>(cur_pnext); |
| |
| if (safe_struct->memory) { |
| safe_struct->memory = layer_data->Unwrap(safe_struct->memory); |
| } |
| } break; |
| #endif // VK_USE_PLATFORM_METAL_EXT |
| |
| #ifdef VK_USE_PLATFORM_METAL_EXT |
| case VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT: { |
| safe_VkExportMetalIOSurfaceInfoEXT* safe_struct = reinterpret_cast<safe_VkExportMetalIOSurfaceInfoEXT*>(cur_pnext); |
| |
| if (safe_struct->image) { |
| safe_struct->image = layer_data->Unwrap(safe_struct->image); |
| } |
| } break; |
| #endif // VK_USE_PLATFORM_METAL_EXT |
| |
| #ifdef VK_USE_PLATFORM_METAL_EXT |
| case VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT: { |
| safe_VkExportMetalSharedEventInfoEXT* safe_struct = |
| reinterpret_cast<safe_VkExportMetalSharedEventInfoEXT*>(cur_pnext); |
| |
| if (safe_struct->semaphore) { |
| safe_struct->semaphore = layer_data->Unwrap(safe_struct->semaphore); |
| } |
| if (safe_struct->event) { |
| safe_struct->event = layer_data->Unwrap(safe_struct->event); |
| } |
| } break; |
| #endif // VK_USE_PLATFORM_METAL_EXT |
| |
| #ifdef VK_USE_PLATFORM_METAL_EXT |
| case VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT: { |
| safe_VkExportMetalTextureInfoEXT* safe_struct = reinterpret_cast<safe_VkExportMetalTextureInfoEXT*>(cur_pnext); |
| |
| if (safe_struct->image) { |
| safe_struct->image = layer_data->Unwrap(safe_struct->image); |
| } |
| if (safe_struct->imageView) { |
| safe_struct->imageView = layer_data->Unwrap(safe_struct->imageView); |
| } |
| if (safe_struct->bufferView) { |
| safe_struct->bufferView = layer_data->Unwrap(safe_struct->bufferView); |
| } |
| } break; |
| #endif // VK_USE_PLATFORM_METAL_EXT |
| |
| case VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT: { |
| safe_VkDescriptorBufferBindingPushDescriptorBufferHandleEXT* safe_struct = |
| reinterpret_cast<safe_VkDescriptorBufferBindingPushDescriptorBufferHandleEXT*>(cur_pnext); |
| |
| if (safe_struct->buffer) { |
| safe_struct->buffer = layer_data->Unwrap(safe_struct->buffer); |
| } |
| } break; |
| |
| #ifdef VK_ENABLE_BETA_EXTENSIONS |
| case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV: { |
| safe_VkAccelerationStructureTrianglesDisplacementMicromapNV* safe_struct = |
| reinterpret_cast<safe_VkAccelerationStructureTrianglesDisplacementMicromapNV*>(cur_pnext); |
| |
| if (safe_struct->micromap) { |
| safe_struct->micromap = layer_data->Unwrap(safe_struct->micromap); |
| } |
| } break; |
| #endif // VK_ENABLE_BETA_EXTENSIONS |
| |
| case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT: { |
| safe_VkAccelerationStructureTrianglesOpacityMicromapEXT* safe_struct = |
| reinterpret_cast<safe_VkAccelerationStructureTrianglesOpacityMicromapEXT*>(cur_pnext); |
| |
| if (safe_struct->micromap) { |
| safe_struct->micromap = layer_data->Unwrap(safe_struct->micromap); |
| } |
| } break; |
| |
| default: |
| break; |
| } |
| |
| // Process the next structure in the chain |
| cur_pnext = header->pNext; |
| } |
| } |
| |
| VkResult DispatchEnumeratePhysicalDevices(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| |
| VkResult result = |
| layer_data->instance_dispatch_table.EnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices); |
| |
| return result; |
| } |
| |
| void DispatchGetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceFeatures(physicalDevice, pFeatures); |
| } |
| |
| void DispatchGetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, |
| VkFormatProperties* pFormatProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties); |
| } |
| |
| VkResult DispatchGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, |
| VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, |
| VkImageFormatProperties* pImageFormatProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceImageFormatProperties( |
| physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties); |
| |
| return result; |
| } |
| |
| void DispatchGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceProperties(physicalDevice, pProperties); |
| } |
| |
| void DispatchGetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, |
| VkQueueFamilyProperties* pQueueFamilyProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, |
| pQueueFamilyProperties); |
| } |
| |
| void DispatchGetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice, |
| VkPhysicalDeviceMemoryProperties* pMemoryProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties); |
| } |
| |
| PFN_vkVoidFunction DispatchGetInstanceProcAddr(VkInstance instance, const char* pName) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| |
| PFN_vkVoidFunction result = layer_data->instance_dispatch_table.GetInstanceProcAddr(instance, pName); |
| |
| return result; |
| } |
| |
| PFN_vkVoidFunction DispatchGetDeviceProcAddr(VkDevice device, const char* pName) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| PFN_vkVoidFunction result = layer_data->device_dispatch_table.GetDeviceProcAddr(device, pName); |
| |
| return result; |
| } |
| |
| void DispatchGetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| layer_data->device_dispatch_table.GetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue); |
| } |
| |
| VkResult DispatchQueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.QueueSubmit(queue, submitCount, pSubmits, fence); |
| safe_VkSubmitInfo* local_pSubmits = nullptr; |
| { |
| if (pSubmits) { |
| local_pSubmits = new safe_VkSubmitInfo[submitCount]; |
| for (uint32_t index0 = 0; index0 < submitCount; ++index0) { |
| local_pSubmits[index0].initialize(&pSubmits[index0]); |
| WrapPnextChainHandles(layer_data, local_pSubmits[index0].pNext); |
| if (local_pSubmits[index0].pWaitSemaphores) { |
| for (uint32_t index1 = 0; index1 < local_pSubmits[index0].waitSemaphoreCount; ++index1) { |
| local_pSubmits[index0].pWaitSemaphores[index1] = |
| layer_data->Unwrap(local_pSubmits[index0].pWaitSemaphores[index1]); |
| } |
| } |
| if (local_pSubmits[index0].pSignalSemaphores) { |
| for (uint32_t index1 = 0; index1 < local_pSubmits[index0].signalSemaphoreCount; ++index1) { |
| local_pSubmits[index0].pSignalSemaphores[index1] = |
| layer_data->Unwrap(local_pSubmits[index0].pSignalSemaphores[index1]); |
| } |
| } |
| } |
| } |
| fence = layer_data->Unwrap(fence); |
| } |
| VkResult result = layer_data->device_dispatch_table.QueueSubmit(queue, submitCount, (const VkSubmitInfo*)local_pSubmits, fence); |
| if (local_pSubmits) { |
| delete[] local_pSubmits; |
| } |
| return result; |
| } |
| |
| VkResult DispatchQueueWaitIdle(VkQueue queue) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map); |
| |
| VkResult result = layer_data->device_dispatch_table.QueueWaitIdle(queue); |
| |
| return result; |
| } |
| |
| VkResult DispatchDeviceWaitIdle(VkDevice device) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| VkResult result = layer_data->device_dispatch_table.DeviceWaitIdle(device); |
| |
| return result; |
| } |
| |
| VkResult DispatchAllocateMemory(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, |
| VkDeviceMemory* pMemory) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.AllocateMemory(device, pAllocateInfo, pAllocator, pMemory); |
| safe_VkMemoryAllocateInfo var_local_pAllocateInfo; |
| safe_VkMemoryAllocateInfo* local_pAllocateInfo = nullptr; |
| { |
| if (pAllocateInfo) { |
| local_pAllocateInfo = &var_local_pAllocateInfo; |
| local_pAllocateInfo->initialize(pAllocateInfo); |
| WrapPnextChainHandles(layer_data, local_pAllocateInfo->pNext); |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.AllocateMemory(device, (const VkMemoryAllocateInfo*)local_pAllocateInfo, |
| pAllocator, pMemory); |
| if (VK_SUCCESS == result) { |
| *pMemory = layer_data->WrapNew(*pMemory); |
| } |
| return result; |
| } |
| |
| void DispatchFreeMemory(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.FreeMemory(device, memory, pAllocator); |
| |
| uint64_t memory_id = CastToUint64(memory); |
| auto iter = unique_id_mapping.pop(memory_id); |
| if (iter != unique_id_mapping.end()) { |
| memory = (VkDeviceMemory)iter->second; |
| } else { |
| memory = (VkDeviceMemory)0; |
| } |
| layer_data->device_dispatch_table.FreeMemory(device, memory, pAllocator); |
| } |
| |
| VkResult DispatchMapMemory(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, |
| void** ppData) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.MapMemory(device, memory, offset, size, flags, ppData); |
| { memory = layer_data->Unwrap(memory); } |
| VkResult result = layer_data->device_dispatch_table.MapMemory(device, memory, offset, size, flags, ppData); |
| |
| return result; |
| } |
| |
| void DispatchUnmapMemory(VkDevice device, VkDeviceMemory memory) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.UnmapMemory(device, memory); |
| { memory = layer_data->Unwrap(memory); } |
| layer_data->device_dispatch_table.UnmapMemory(device, memory); |
| } |
| |
| VkResult DispatchFlushMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.FlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges); |
| safe_VkMappedMemoryRange* local_pMemoryRanges = nullptr; |
| { |
| if (pMemoryRanges) { |
| local_pMemoryRanges = new safe_VkMappedMemoryRange[memoryRangeCount]; |
| for (uint32_t index0 = 0; index0 < memoryRangeCount; ++index0) { |
| local_pMemoryRanges[index0].initialize(&pMemoryRanges[index0]); |
| |
| if (pMemoryRanges[index0].memory) { |
| local_pMemoryRanges[index0].memory = layer_data->Unwrap(pMemoryRanges[index0].memory); |
| } |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.FlushMappedMemoryRanges(device, memoryRangeCount, |
| (const VkMappedMemoryRange*)local_pMemoryRanges); |
| if (local_pMemoryRanges) { |
| delete[] local_pMemoryRanges; |
| } |
| return result; |
| } |
| |
| VkResult DispatchInvalidateMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount, |
| const VkMappedMemoryRange* pMemoryRanges) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.InvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges); |
| safe_VkMappedMemoryRange* local_pMemoryRanges = nullptr; |
| { |
| if (pMemoryRanges) { |
| local_pMemoryRanges = new safe_VkMappedMemoryRange[memoryRangeCount]; |
| for (uint32_t index0 = 0; index0 < memoryRangeCount; ++index0) { |
| local_pMemoryRanges[index0].initialize(&pMemoryRanges[index0]); |
| |
| if (pMemoryRanges[index0].memory) { |
| local_pMemoryRanges[index0].memory = layer_data->Unwrap(pMemoryRanges[index0].memory); |
| } |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.InvalidateMappedMemoryRanges( |
| device, memoryRangeCount, (const VkMappedMemoryRange*)local_pMemoryRanges); |
| if (local_pMemoryRanges) { |
| delete[] local_pMemoryRanges; |
| } |
| return result; |
| } |
| |
| void DispatchGetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes); |
| { memory = layer_data->Unwrap(memory); } |
| layer_data->device_dispatch_table.GetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes); |
| } |
| |
| VkResult DispatchBindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.BindBufferMemory(device, buffer, memory, memoryOffset); |
| { |
| buffer = layer_data->Unwrap(buffer); |
| memory = layer_data->Unwrap(memory); |
| } |
| VkResult result = layer_data->device_dispatch_table.BindBufferMemory(device, buffer, memory, memoryOffset); |
| |
| return result; |
| } |
| |
| VkResult DispatchBindImageMemory(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.BindImageMemory(device, image, memory, memoryOffset); |
| { |
| image = layer_data->Unwrap(image); |
| memory = layer_data->Unwrap(memory); |
| } |
| VkResult result = layer_data->device_dispatch_table.BindImageMemory(device, image, memory, memoryOffset); |
| |
| return result; |
| } |
| |
| void DispatchGetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetBufferMemoryRequirements(device, buffer, pMemoryRequirements); |
| { buffer = layer_data->Unwrap(buffer); } |
| layer_data->device_dispatch_table.GetBufferMemoryRequirements(device, buffer, pMemoryRequirements); |
| } |
| |
| void DispatchGetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetImageMemoryRequirements(device, image, pMemoryRequirements); |
| { image = layer_data->Unwrap(image); } |
| layer_data->device_dispatch_table.GetImageMemoryRequirements(device, image, pMemoryRequirements); |
| } |
| |
| void DispatchGetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, |
| VkSparseImageMemoryRequirements* pSparseMemoryRequirements) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, |
| pSparseMemoryRequirements); |
| { image = layer_data->Unwrap(image); } |
| layer_data->device_dispatch_table.GetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, |
| pSparseMemoryRequirements); |
| } |
| |
| void DispatchGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, |
| VkSampleCountFlagBits samples, VkImageUsageFlags usage, |
| VkImageTiling tiling, uint32_t* pPropertyCount, |
| VkSparseImageFormatProperties* pProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, |
| tiling, pPropertyCount, pProperties); |
| } |
| |
| VkResult DispatchQueueBindSparse(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.QueueBindSparse(queue, bindInfoCount, pBindInfo, fence); |
| safe_VkBindSparseInfo* local_pBindInfo = nullptr; |
| { |
| if (pBindInfo) { |
| local_pBindInfo = new safe_VkBindSparseInfo[bindInfoCount]; |
| for (uint32_t index0 = 0; index0 < bindInfoCount; ++index0) { |
| local_pBindInfo[index0].initialize(&pBindInfo[index0]); |
| WrapPnextChainHandles(layer_data, local_pBindInfo[index0].pNext); |
| if (local_pBindInfo[index0].pWaitSemaphores) { |
| for (uint32_t index1 = 0; index1 < local_pBindInfo[index0].waitSemaphoreCount; ++index1) { |
| local_pBindInfo[index0].pWaitSemaphores[index1] = |
| layer_data->Unwrap(local_pBindInfo[index0].pWaitSemaphores[index1]); |
| } |
| } |
| if (local_pBindInfo[index0].pBufferBinds) { |
| for (uint32_t index1 = 0; index1 < local_pBindInfo[index0].bufferBindCount; ++index1) { |
| if (pBindInfo[index0].pBufferBinds[index1].buffer) { |
| local_pBindInfo[index0].pBufferBinds[index1].buffer = |
| layer_data->Unwrap(pBindInfo[index0].pBufferBinds[index1].buffer); |
| } |
| if (local_pBindInfo[index0].pBufferBinds[index1].pBinds) { |
| for (uint32_t index2 = 0; index2 < local_pBindInfo[index0].pBufferBinds[index1].bindCount; ++index2) { |
| if (pBindInfo[index0].pBufferBinds[index1].pBinds[index2].memory) { |
| local_pBindInfo[index0].pBufferBinds[index1].pBinds[index2].memory = |
| layer_data->Unwrap(pBindInfo[index0].pBufferBinds[index1].pBinds[index2].memory); |
| } |
| } |
| } |
| } |
| } |
| if (local_pBindInfo[index0].pImageOpaqueBinds) { |
| for (uint32_t index1 = 0; index1 < local_pBindInfo[index0].imageOpaqueBindCount; ++index1) { |
| if (pBindInfo[index0].pImageOpaqueBinds[index1].image) { |
| local_pBindInfo[index0].pImageOpaqueBinds[index1].image = |
| layer_data->Unwrap(pBindInfo[index0].pImageOpaqueBinds[index1].image); |
| } |
| if (local_pBindInfo[index0].pImageOpaqueBinds[index1].pBinds) { |
| for (uint32_t index2 = 0; index2 < local_pBindInfo[index0].pImageOpaqueBinds[index1].bindCount; |
| ++index2) { |
| if (pBindInfo[index0].pImageOpaqueBinds[index1].pBinds[index2].memory) { |
| local_pBindInfo[index0].pImageOpaqueBinds[index1].pBinds[index2].memory = |
| layer_data->Unwrap(pBindInfo[index0].pImageOpaqueBinds[index1].pBinds[index2].memory); |
| } |
| } |
| } |
| } |
| } |
| if (local_pBindInfo[index0].pImageBinds) { |
| for (uint32_t index1 = 0; index1 < local_pBindInfo[index0].imageBindCount; ++index1) { |
| if (pBindInfo[index0].pImageBinds[index1].image) { |
| local_pBindInfo[index0].pImageBinds[index1].image = |
| layer_data->Unwrap(pBindInfo[index0].pImageBinds[index1].image); |
| } |
| if (local_pBindInfo[index0].pImageBinds[index1].pBinds) { |
| for (uint32_t index2 = 0; index2 < local_pBindInfo[index0].pImageBinds[index1].bindCount; ++index2) { |
| if (pBindInfo[index0].pImageBinds[index1].pBinds[index2].memory) { |
| local_pBindInfo[index0].pImageBinds[index1].pBinds[index2].memory = |
| layer_data->Unwrap(pBindInfo[index0].pImageBinds[index1].pBinds[index2].memory); |
| } |
| } |
| } |
| } |
| } |
| if (local_pBindInfo[index0].pSignalSemaphores) { |
| for (uint32_t index1 = 0; index1 < local_pBindInfo[index0].signalSemaphoreCount; ++index1) { |
| local_pBindInfo[index0].pSignalSemaphores[index1] = |
| layer_data->Unwrap(local_pBindInfo[index0].pSignalSemaphores[index1]); |
| } |
| } |
| } |
| } |
| fence = layer_data->Unwrap(fence); |
| } |
| VkResult result = |
| layer_data->device_dispatch_table.QueueBindSparse(queue, bindInfoCount, (const VkBindSparseInfo*)local_pBindInfo, fence); |
| if (local_pBindInfo) { |
| delete[] local_pBindInfo; |
| } |
| return result; |
| } |
| |
| VkResult DispatchCreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, |
| VkFence* pFence) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CreateFence(device, pCreateInfo, pAllocator, pFence); |
| |
| VkResult result = layer_data->device_dispatch_table.CreateFence(device, pCreateInfo, pAllocator, pFence); |
| if (VK_SUCCESS == result) { |
| *pFence = layer_data->WrapNew(*pFence); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyFence(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyFence(device, fence, pAllocator); |
| |
| uint64_t fence_id = CastToUint64(fence); |
| auto iter = unique_id_mapping.pop(fence_id); |
| if (iter != unique_id_mapping.end()) { |
| fence = (VkFence)iter->second; |
| } else { |
| fence = (VkFence)0; |
| } |
| layer_data->device_dispatch_table.DestroyFence(device, fence, pAllocator); |
| } |
| |
| VkResult DispatchResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.ResetFences(device, fenceCount, pFences); |
| VkFence var_local_pFences[DISPATCH_MAX_STACK_ALLOCATIONS]; |
| VkFence* local_pFences = nullptr; |
| { |
| if (pFences) { |
| local_pFences = fenceCount > DISPATCH_MAX_STACK_ALLOCATIONS ? new VkFence[fenceCount] : var_local_pFences; |
| for (uint32_t index0 = 0; index0 < fenceCount; ++index0) { |
| local_pFences[index0] = layer_data->Unwrap(pFences[index0]); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.ResetFences(device, fenceCount, (const VkFence*)local_pFences); |
| if (local_pFences != var_local_pFences) delete[] local_pFences; |
| return result; |
| } |
| |
| VkResult DispatchGetFenceStatus(VkDevice device, VkFence fence) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetFenceStatus(device, fence); |
| { fence = layer_data->Unwrap(fence); } |
| VkResult result = layer_data->device_dispatch_table.GetFenceStatus(device, fence); |
| |
| return result; |
| } |
| |
| VkResult DispatchWaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.WaitForFences(device, fenceCount, pFences, waitAll, timeout); |
| VkFence var_local_pFences[DISPATCH_MAX_STACK_ALLOCATIONS]; |
| VkFence* local_pFences = nullptr; |
| { |
| if (pFences) { |
| local_pFences = fenceCount > DISPATCH_MAX_STACK_ALLOCATIONS ? new VkFence[fenceCount] : var_local_pFences; |
| for (uint32_t index0 = 0; index0 < fenceCount; ++index0) { |
| local_pFences[index0] = layer_data->Unwrap(pFences[index0]); |
| } |
| } |
| } |
| VkResult result = |
| layer_data->device_dispatch_table.WaitForFences(device, fenceCount, (const VkFence*)local_pFences, waitAll, timeout); |
| if (local_pFences != var_local_pFences) delete[] local_pFences; |
| return result; |
| } |
| |
| VkResult DispatchCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, |
| VkSemaphore* pSemaphore) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore); |
| |
| VkResult result = layer_data->device_dispatch_table.CreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore); |
| if (VK_SUCCESS == result) { |
| *pSemaphore = layer_data->WrapNew(*pSemaphore); |
| } |
| return result; |
| } |
| |
| void DispatchDestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroySemaphore(device, semaphore, pAllocator); |
| |
| uint64_t semaphore_id = CastToUint64(semaphore); |
| auto iter = unique_id_mapping.pop(semaphore_id); |
| if (iter != unique_id_mapping.end()) { |
| semaphore = (VkSemaphore)iter->second; |
| } else { |
| semaphore = (VkSemaphore)0; |
| } |
| layer_data->device_dispatch_table.DestroySemaphore(device, semaphore, pAllocator); |
| } |
| |
| VkResult DispatchCreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, |
| VkEvent* pEvent) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CreateEvent(device, pCreateInfo, pAllocator, pEvent); |
| |
| VkResult result = layer_data->device_dispatch_table.CreateEvent(device, pCreateInfo, pAllocator, pEvent); |
| if (VK_SUCCESS == result) { |
| *pEvent = layer_data->WrapNew(*pEvent); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyEvent(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyEvent(device, event, pAllocator); |
| |
| uint64_t event_id = CastToUint64(event); |
| auto iter = unique_id_mapping.pop(event_id); |
| if (iter != unique_id_mapping.end()) { |
| event = (VkEvent)iter->second; |
| } else { |
| event = (VkEvent)0; |
| } |
| layer_data->device_dispatch_table.DestroyEvent(device, event, pAllocator); |
| } |
| |
| VkResult DispatchGetEventStatus(VkDevice device, VkEvent event) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetEventStatus(device, event); |
| { event = layer_data->Unwrap(event); } |
| VkResult result = layer_data->device_dispatch_table.GetEventStatus(device, event); |
| |
| return result; |
| } |
| |
| VkResult DispatchSetEvent(VkDevice device, VkEvent event) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.SetEvent(device, event); |
| { event = layer_data->Unwrap(event); } |
| VkResult result = layer_data->device_dispatch_table.SetEvent(device, event); |
| |
| return result; |
| } |
| |
| VkResult DispatchResetEvent(VkDevice device, VkEvent event) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.ResetEvent(device, event); |
| { event = layer_data->Unwrap(event); } |
| VkResult result = layer_data->device_dispatch_table.ResetEvent(device, event); |
| |
| return result; |
| } |
| |
| VkResult DispatchCreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, |
| VkQueryPool* pQueryPool) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool); |
| |
| VkResult result = layer_data->device_dispatch_table.CreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool); |
| if (VK_SUCCESS == result) { |
| *pQueryPool = layer_data->WrapNew(*pQueryPool); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyQueryPool(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyQueryPool(device, queryPool, pAllocator); |
| |
| uint64_t queryPool_id = CastToUint64(queryPool); |
| auto iter = unique_id_mapping.pop(queryPool_id); |
| if (iter != unique_id_mapping.end()) { |
| queryPool = (VkQueryPool)iter->second; |
| } else { |
| queryPool = (VkQueryPool)0; |
| } |
| layer_data->device_dispatch_table.DestroyQueryPool(device, queryPool, pAllocator); |
| } |
| |
| VkResult DispatchGetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, |
| size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, |
| stride, flags); |
| { queryPool = layer_data->Unwrap(queryPool); } |
| VkResult result = layer_data->device_dispatch_table.GetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, |
| pData, stride, flags); |
| |
| return result; |
| } |
| |
| VkResult DispatchCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, |
| VkBuffer* pBuffer) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CreateBuffer(device, pCreateInfo, pAllocator, pBuffer); |
| safe_VkBufferCreateInfo var_local_pCreateInfo; |
| safe_VkBufferCreateInfo* local_pCreateInfo = nullptr; |
| { |
| if (pCreateInfo) { |
| local_pCreateInfo = &var_local_pCreateInfo; |
| local_pCreateInfo->initialize(pCreateInfo); |
| WrapPnextChainHandles(layer_data, local_pCreateInfo->pNext); |
| } |
| } |
| VkResult result = |
| layer_data->device_dispatch_table.CreateBuffer(device, (const VkBufferCreateInfo*)local_pCreateInfo, pAllocator, pBuffer); |
| if (VK_SUCCESS == result) { |
| *pBuffer = layer_data->WrapNew(*pBuffer); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyBuffer(device, buffer, pAllocator); |
| |
| uint64_t buffer_id = CastToUint64(buffer); |
| auto iter = unique_id_mapping.pop(buffer_id); |
| if (iter != unique_id_mapping.end()) { |
| buffer = (VkBuffer)iter->second; |
| } else { |
| buffer = (VkBuffer)0; |
| } |
| layer_data->device_dispatch_table.DestroyBuffer(device, buffer, pAllocator); |
| } |
| |
| VkResult DispatchCreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkBufferView* pView) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CreateBufferView(device, pCreateInfo, pAllocator, pView); |
| safe_VkBufferViewCreateInfo var_local_pCreateInfo; |
| safe_VkBufferViewCreateInfo* local_pCreateInfo = nullptr; |
| { |
| if (pCreateInfo) { |
| local_pCreateInfo = &var_local_pCreateInfo; |
| local_pCreateInfo->initialize(pCreateInfo); |
| |
| if (pCreateInfo->buffer) { |
| local_pCreateInfo->buffer = layer_data->Unwrap(pCreateInfo->buffer); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CreateBufferView(device, (const VkBufferViewCreateInfo*)local_pCreateInfo, |
| pAllocator, pView); |
| if (VK_SUCCESS == result) { |
| *pView = layer_data->WrapNew(*pView); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyBufferView(device, bufferView, pAllocator); |
| |
| uint64_t bufferView_id = CastToUint64(bufferView); |
| auto iter = unique_id_mapping.pop(bufferView_id); |
| if (iter != unique_id_mapping.end()) { |
| bufferView = (VkBufferView)iter->second; |
| } else { |
| bufferView = (VkBufferView)0; |
| } |
| layer_data->device_dispatch_table.DestroyBufferView(device, bufferView, pAllocator); |
| } |
| |
| VkResult DispatchCreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, |
| VkImage* pImage) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CreateImage(device, pCreateInfo, pAllocator, pImage); |
| safe_VkImageCreateInfo var_local_pCreateInfo; |
| safe_VkImageCreateInfo* local_pCreateInfo = nullptr; |
| { |
| if (pCreateInfo) { |
| local_pCreateInfo = &var_local_pCreateInfo; |
| local_pCreateInfo->initialize(pCreateInfo); |
| WrapPnextChainHandles(layer_data, local_pCreateInfo->pNext); |
| } |
| } |
| VkResult result = |
| layer_data->device_dispatch_table.CreateImage(device, (const VkImageCreateInfo*)local_pCreateInfo, pAllocator, pImage); |
| if (VK_SUCCESS == result) { |
| *pImage = layer_data->WrapNew(*pImage); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyImage(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyImage(device, image, pAllocator); |
| |
| uint64_t image_id = CastToUint64(image); |
| auto iter = unique_id_mapping.pop(image_id); |
| if (iter != unique_id_mapping.end()) { |
| image = (VkImage)iter->second; |
| } else { |
| image = (VkImage)0; |
| } |
| layer_data->device_dispatch_table.DestroyImage(device, image, pAllocator); |
| } |
| |
| void DispatchGetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, |
| VkSubresourceLayout* pLayout) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetImageSubresourceLayout(device, image, pSubresource, pLayout); |
| { image = layer_data->Unwrap(image); } |
| layer_data->device_dispatch_table.GetImageSubresourceLayout(device, image, pSubresource, pLayout); |
| } |
| |
| VkResult DispatchCreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, |
| VkImageView* pView) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CreateImageView(device, pCreateInfo, pAllocator, pView); |
| safe_VkImageViewCreateInfo var_local_pCreateInfo; |
| safe_VkImageViewCreateInfo* local_pCreateInfo = nullptr; |
| { |
| if (pCreateInfo) { |
| local_pCreateInfo = &var_local_pCreateInfo; |
| local_pCreateInfo->initialize(pCreateInfo); |
| |
| if (pCreateInfo->image) { |
| local_pCreateInfo->image = layer_data->Unwrap(pCreateInfo->image); |
| } |
| WrapPnextChainHandles(layer_data, local_pCreateInfo->pNext); |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CreateImageView(device, (const VkImageViewCreateInfo*)local_pCreateInfo, |
| pAllocator, pView); |
| if (VK_SUCCESS == result) { |
| *pView = layer_data->WrapNew(*pView); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyImageView(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyImageView(device, imageView, pAllocator); |
| |
| uint64_t imageView_id = CastToUint64(imageView); |
| auto iter = unique_id_mapping.pop(imageView_id); |
| if (iter != unique_id_mapping.end()) { |
| imageView = (VkImageView)iter->second; |
| } else { |
| imageView = (VkImageView)0; |
| } |
| layer_data->device_dispatch_table.DestroyImageView(device, imageView, pAllocator); |
| } |
| |
| VkResult DispatchCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule); |
| safe_VkShaderModuleCreateInfo var_local_pCreateInfo; |
| safe_VkShaderModuleCreateInfo* local_pCreateInfo = nullptr; |
| { |
| if (pCreateInfo) { |
| local_pCreateInfo = &var_local_pCreateInfo; |
| local_pCreateInfo->initialize(pCreateInfo); |
| WrapPnextChainHandles(layer_data, local_pCreateInfo->pNext); |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CreateShaderModule( |
| device, (const VkShaderModuleCreateInfo*)local_pCreateInfo, pAllocator, pShaderModule); |
| if (VK_SUCCESS == result) { |
| *pShaderModule = layer_data->WrapNew(*pShaderModule); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyShaderModule(device, shaderModule, pAllocator); |
| |
| uint64_t shaderModule_id = CastToUint64(shaderModule); |
| auto iter = unique_id_mapping.pop(shaderModule_id); |
| if (iter != unique_id_mapping.end()) { |
| shaderModule = (VkShaderModule)iter->second; |
| } else { |
| shaderModule = (VkShaderModule)0; |
| } |
| layer_data->device_dispatch_table.DestroyShaderModule(device, shaderModule, pAllocator); |
| } |
| |
| VkResult DispatchCreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache); |
| |
| VkResult result = layer_data->device_dispatch_table.CreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache); |
| if (VK_SUCCESS == result) { |
| *pPipelineCache = layer_data->WrapNew(*pPipelineCache); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyPipelineCache(device, pipelineCache, pAllocator); |
| |
| uint64_t pipelineCache_id = CastToUint64(pipelineCache); |
| auto iter = unique_id_mapping.pop(pipelineCache_id); |
| if (iter != unique_id_mapping.end()) { |
| pipelineCache = (VkPipelineCache)iter->second; |
| } else { |
| pipelineCache = (VkPipelineCache)0; |
| } |
| layer_data->device_dispatch_table.DestroyPipelineCache(device, pipelineCache, pAllocator); |
| } |
| |
| VkResult DispatchGetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetPipelineCacheData(device, pipelineCache, pDataSize, pData); |
| { pipelineCache = layer_data->Unwrap(pipelineCache); } |
| VkResult result = layer_data->device_dispatch_table.GetPipelineCacheData(device, pipelineCache, pDataSize, pData); |
| |
| return result; |
| } |
| |
| VkResult DispatchMergePipelineCaches(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, |
| const VkPipelineCache* pSrcCaches) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.MergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches); |
| VkPipelineCache var_local_pSrcCaches[DISPATCH_MAX_STACK_ALLOCATIONS]; |
| VkPipelineCache* local_pSrcCaches = nullptr; |
| { |
| dstCache = layer_data->Unwrap(dstCache); |
| if (pSrcCaches) { |
| local_pSrcCaches = |
| srcCacheCount > DISPATCH_MAX_STACK_ALLOCATIONS ? new VkPipelineCache[srcCacheCount] : var_local_pSrcCaches; |
| for (uint32_t index0 = 0; index0 < srcCacheCount; ++index0) { |
| local_pSrcCaches[index0] = layer_data->Unwrap(pSrcCaches[index0]); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.MergePipelineCaches(device, dstCache, srcCacheCount, |
| (const VkPipelineCache*)local_pSrcCaches); |
| if (local_pSrcCaches != var_local_pSrcCaches) delete[] local_pSrcCaches; |
| return result; |
| } |
| |
| void DispatchDestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyPipeline(device, pipeline, pAllocator); |
| |
| uint64_t pipeline_id = CastToUint64(pipeline); |
| auto iter = unique_id_mapping.pop(pipeline_id); |
| if (iter != unique_id_mapping.end()) { |
| pipeline = (VkPipeline)iter->second; |
| } else { |
| pipeline = (VkPipeline)0; |
| } |
| layer_data->device_dispatch_table.DestroyPipeline(device, pipeline, pAllocator); |
| } |
| |
| VkResult DispatchCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout); |
| safe_VkPipelineLayoutCreateInfo var_local_pCreateInfo; |
| safe_VkPipelineLayoutCreateInfo* local_pCreateInfo = nullptr; |
| { |
| if (pCreateInfo) { |
| local_pCreateInfo = &var_local_pCreateInfo; |
| local_pCreateInfo->initialize(pCreateInfo); |
| if (local_pCreateInfo->pSetLayouts) { |
| for (uint32_t index1 = 0; index1 < local_pCreateInfo->setLayoutCount; ++index1) { |
| local_pCreateInfo->pSetLayouts[index1] = layer_data->Unwrap(local_pCreateInfo->pSetLayouts[index1]); |
| } |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CreatePipelineLayout( |
| device, (const VkPipelineLayoutCreateInfo*)local_pCreateInfo, pAllocator, pPipelineLayout); |
| if (VK_SUCCESS == result) { |
| *pPipelineLayout = layer_data->WrapNew(*pPipelineLayout); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyPipelineLayout(device, pipelineLayout, pAllocator); |
| |
| uint64_t pipelineLayout_id = CastToUint64(pipelineLayout); |
| auto iter = unique_id_mapping.pop(pipelineLayout_id); |
| if (iter != unique_id_mapping.end()) { |
| pipelineLayout = (VkPipelineLayout)iter->second; |
| } else { |
| pipelineLayout = (VkPipelineLayout)0; |
| } |
| layer_data->device_dispatch_table.DestroyPipelineLayout(device, pipelineLayout, pAllocator); |
| } |
| |
| VkResult DispatchCreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, |
| VkSampler* pSampler) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CreateSampler(device, pCreateInfo, pAllocator, pSampler); |
| safe_VkSamplerCreateInfo var_local_pCreateInfo; |
| safe_VkSamplerCreateInfo* local_pCreateInfo = nullptr; |
| { |
| if (pCreateInfo) { |
| local_pCreateInfo = &var_local_pCreateInfo; |
| local_pCreateInfo->initialize(pCreateInfo); |
| WrapPnextChainHandles(layer_data, local_pCreateInfo->pNext); |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CreateSampler(device, (const VkSamplerCreateInfo*)local_pCreateInfo, |
| pAllocator, pSampler); |
| if (VK_SUCCESS == result) { |
| *pSampler = layer_data->WrapNew(*pSampler); |
| } |
| return result; |
| } |
| |
| void DispatchDestroySampler(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroySampler(device, sampler, pAllocator); |
| |
| uint64_t sampler_id = CastToUint64(sampler); |
| auto iter = unique_id_mapping.pop(sampler_id); |
| if (iter != unique_id_mapping.end()) { |
| sampler = (VkSampler)iter->second; |
| } else { |
| sampler = (VkSampler)0; |
| } |
| layer_data->device_dispatch_table.DestroySampler(device, sampler, pAllocator); |
| } |
| |
| VkResult DispatchCreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout); |
| safe_VkDescriptorSetLayoutCreateInfo var_local_pCreateInfo; |
| safe_VkDescriptorSetLayoutCreateInfo* local_pCreateInfo = nullptr; |
| { |
| if (pCreateInfo) { |
| local_pCreateInfo = &var_local_pCreateInfo; |
| local_pCreateInfo->initialize(pCreateInfo); |
| if (local_pCreateInfo->pBindings) { |
| for (uint32_t index1 = 0; index1 < local_pCreateInfo->bindingCount; ++index1) { |
| if (local_pCreateInfo->pBindings[index1].pImmutableSamplers) { |
| for (uint32_t index2 = 0; index2 < local_pCreateInfo->pBindings[index1].descriptorCount; ++index2) { |
| local_pCreateInfo->pBindings[index1].pImmutableSamplers[index2] = |
| layer_data->Unwrap(local_pCreateInfo->pBindings[index1].pImmutableSamplers[index2]); |
| } |
| } |
| } |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CreateDescriptorSetLayout( |
| device, (const VkDescriptorSetLayoutCreateInfo*)local_pCreateInfo, pAllocator, pSetLayout); |
| if (VK_SUCCESS == result) { |
| *pSetLayout = layer_data->WrapNew(*pSetLayout); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, |
| const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator); |
| |
| uint64_t descriptorSetLayout_id = CastToUint64(descriptorSetLayout); |
| auto iter = unique_id_mapping.pop(descriptorSetLayout_id); |
| if (iter != unique_id_mapping.end()) { |
| descriptorSetLayout = (VkDescriptorSetLayout)iter->second; |
| } else { |
| descriptorSetLayout = (VkDescriptorSetLayout)0; |
| } |
| layer_data->device_dispatch_table.DestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator); |
| } |
| |
| VkResult DispatchCreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool); |
| |
| VkResult result = layer_data->device_dispatch_table.CreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool); |
| if (VK_SUCCESS == result) { |
| *pDescriptorPool = layer_data->WrapNew(*pDescriptorPool); |
| } |
| return result; |
| } |
| |
| void DispatchUpdateDescriptorSets(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, |
| uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.UpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, |
| descriptorCopyCount, pDescriptorCopies); |
| safe_VkWriteDescriptorSet* local_pDescriptorWrites = nullptr; |
| safe_VkCopyDescriptorSet* local_pDescriptorCopies = nullptr; |
| { |
| if (pDescriptorWrites) { |
| local_pDescriptorWrites = new safe_VkWriteDescriptorSet[descriptorWriteCount]; |
| for (uint32_t index0 = 0; index0 < descriptorWriteCount; ++index0) { |
| local_pDescriptorWrites[index0].initialize(&pDescriptorWrites[index0]); |
| WrapPnextChainHandles(layer_data, local_pDescriptorWrites[index0].pNext); |
| |
| if (pDescriptorWrites[index0].dstSet) { |
| local_pDescriptorWrites[index0].dstSet = layer_data->Unwrap(pDescriptorWrites[index0].dstSet); |
| } |
| if (local_pDescriptorWrites[index0].pImageInfo) { |
| for (uint32_t index1 = 0; index1 < local_pDescriptorWrites[index0].descriptorCount; ++index1) { |
| if (pDescriptorWrites[index0].pImageInfo[index1].sampler) { |
| local_pDescriptorWrites[index0].pImageInfo[index1].sampler = |
| layer_data->Unwrap(pDescriptorWrites[index0].pImageInfo[index1].sampler); |
| } |
| if (pDescriptorWrites[index0].pImageInfo[index1].imageView) { |
| local_pDescriptorWrites[index0].pImageInfo[index1].imageView = |
| layer_data->Unwrap(pDescriptorWrites[index0].pImageInfo[index1].imageView); |
| } |
| } |
| } |
| if (local_pDescriptorWrites[index0].pBufferInfo) { |
| for (uint32_t index1 = 0; index1 < local_pDescriptorWrites[index0].descriptorCount; ++index1) { |
| if (pDescriptorWrites[index0].pBufferInfo[index1].buffer) { |
| local_pDescriptorWrites[index0].pBufferInfo[index1].buffer = |
| layer_data->Unwrap(pDescriptorWrites[index0].pBufferInfo[index1].buffer); |
| } |
| } |
| } |
| if (local_pDescriptorWrites[index0].pTexelBufferView) { |
| for (uint32_t index1 = 0; index1 < local_pDescriptorWrites[index0].descriptorCount; ++index1) { |
| local_pDescriptorWrites[index0].pTexelBufferView[index1] = |
| layer_data->Unwrap(local_pDescriptorWrites[index0].pTexelBufferView[index1]); |
| } |
| } |
| } |
| } |
| if (pDescriptorCopies) { |
| local_pDescriptorCopies = new safe_VkCopyDescriptorSet[descriptorCopyCount]; |
| for (uint32_t index0 = 0; index0 < descriptorCopyCount; ++index0) { |
| local_pDescriptorCopies[index0].initialize(&pDescriptorCopies[index0]); |
| |
| if (pDescriptorCopies[index0].srcSet) { |
| local_pDescriptorCopies[index0].srcSet = layer_data->Unwrap(pDescriptorCopies[index0].srcSet); |
| } |
| if (pDescriptorCopies[index0].dstSet) { |
| local_pDescriptorCopies[index0].dstSet = layer_data->Unwrap(pDescriptorCopies[index0].dstSet); |
| } |
| } |
| } |
| } |
| layer_data->device_dispatch_table.UpdateDescriptorSets( |
| device, descriptorWriteCount, (const VkWriteDescriptorSet*)local_pDescriptorWrites, descriptorCopyCount, |
| (const VkCopyDescriptorSet*)local_pDescriptorCopies); |
| if (local_pDescriptorWrites) { |
| delete[] local_pDescriptorWrites; |
| } |
| if (local_pDescriptorCopies) { |
| delete[] local_pDescriptorCopies; |
| } |
| } |
| |
| VkResult DispatchCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer); |
| safe_VkFramebufferCreateInfo var_local_pCreateInfo; |
| safe_VkFramebufferCreateInfo* local_pCreateInfo = nullptr; |
| { |
| if (pCreateInfo) { |
| local_pCreateInfo = &var_local_pCreateInfo; |
| local_pCreateInfo->initialize(pCreateInfo); |
| |
| if (pCreateInfo->renderPass) { |
| local_pCreateInfo->renderPass = layer_data->Unwrap(pCreateInfo->renderPass); |
| } |
| if (local_pCreateInfo->pAttachments) { |
| for (uint32_t index1 = 0; index1 < local_pCreateInfo->attachmentCount; ++index1) { |
| local_pCreateInfo->pAttachments[index1] = layer_data->Unwrap(local_pCreateInfo->pAttachments[index1]); |
| } |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CreateFramebuffer(device, (const VkFramebufferCreateInfo*)local_pCreateInfo, |
| pAllocator, pFramebuffer); |
| if (VK_SUCCESS == result) { |
| *pFramebuffer = layer_data->WrapNew(*pFramebuffer); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyFramebuffer(device, framebuffer, pAllocator); |
| |
| uint64_t framebuffer_id = CastToUint64(framebuffer); |
| auto iter = unique_id_mapping.pop(framebuffer_id); |
| if (iter != unique_id_mapping.end()) { |
| framebuffer = (VkFramebuffer)iter->second; |
| } else { |
| framebuffer = (VkFramebuffer)0; |
| } |
| layer_data->device_dispatch_table.DestroyFramebuffer(device, framebuffer, pAllocator); |
| } |
| |
| void DispatchGetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetRenderAreaGranularity(device, renderPass, pGranularity); |
| { renderPass = layer_data->Unwrap(renderPass); } |
| layer_data->device_dispatch_table.GetRenderAreaGranularity(device, renderPass, pGranularity); |
| } |
| |
| VkResult DispatchCreateCommandPool(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool); |
| |
| VkResult result = layer_data->device_dispatch_table.CreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool); |
| if (VK_SUCCESS == result) { |
| *pCommandPool = layer_data->WrapNew(*pCommandPool); |
| } |
| return result; |
| } |
| |
| VkResult DispatchResetCommandPool(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.ResetCommandPool(device, commandPool, flags); |
| { commandPool = layer_data->Unwrap(commandPool); } |
| VkResult result = layer_data->device_dispatch_table.ResetCommandPool(device, commandPool, flags); |
| |
| return result; |
| } |
| |
| VkResult DispatchEndCommandBuffer(VkCommandBuffer commandBuffer) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| VkResult result = layer_data->device_dispatch_table.EndCommandBuffer(commandBuffer); |
| |
| return result; |
| } |
| |
| VkResult DispatchResetCommandBuffer(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| VkResult result = layer_data->device_dispatch_table.ResetCommandBuffer(commandBuffer, flags); |
| |
| return result; |
| } |
| |
| void DispatchCmdBindPipeline(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline); |
| { pipeline = layer_data->Unwrap(pipeline); } |
| layer_data->device_dispatch_table.CmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline); |
| } |
| |
| void DispatchCmdSetViewport(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, |
| const VkViewport* pViewports) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports); |
| } |
| |
| void DispatchCmdSetScissor(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors); |
| } |
| |
| void DispatchCmdSetLineWidth(VkCommandBuffer commandBuffer, float lineWidth) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetLineWidth(commandBuffer, lineWidth); |
| } |
| |
| void DispatchCmdSetDepthBias(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, |
| float depthBiasSlopeFactor) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor); |
| } |
| |
| void DispatchCmdSetBlendConstants(VkCommandBuffer commandBuffer, const float blendConstants[4]) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetBlendConstants(commandBuffer, blendConstants); |
| } |
| |
| void DispatchCmdSetDepthBounds(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds); |
| } |
| |
| void DispatchCmdSetStencilCompareMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetStencilCompareMask(commandBuffer, faceMask, compareMask); |
| } |
| |
| void DispatchCmdSetStencilWriteMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetStencilWriteMask(commandBuffer, faceMask, writeMask); |
| } |
| |
| void DispatchCmdSetStencilReference(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetStencilReference(commandBuffer, faceMask, reference); |
| } |
| |
| void DispatchCmdBindDescriptorSets(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, |
| uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, |
| uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, |
| descriptorSetCount, pDescriptorSets, dynamicOffsetCount, |
| pDynamicOffsets); |
| VkDescriptorSet var_local_pDescriptorSets[DISPATCH_MAX_STACK_ALLOCATIONS]; |
| VkDescriptorSet* local_pDescriptorSets = nullptr; |
| { |
| layout = layer_data->Unwrap(layout); |
| if (pDescriptorSets) { |
| local_pDescriptorSets = descriptorSetCount > DISPATCH_MAX_STACK_ALLOCATIONS ? new VkDescriptorSet[descriptorSetCount] |
| : var_local_pDescriptorSets; |
| for (uint32_t index0 = 0; index0 < descriptorSetCount; ++index0) { |
| local_pDescriptorSets[index0] = layer_data->Unwrap(pDescriptorSets[index0]); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, |
| (const VkDescriptorSet*)local_pDescriptorSets, dynamicOffsetCount, |
| pDynamicOffsets); |
| if (local_pDescriptorSets != var_local_pDescriptorSets) delete[] local_pDescriptorSets; |
| } |
| |
| void DispatchCmdBindIndexBuffer(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdBindIndexBuffer(commandBuffer, buffer, offset, indexType); |
| { buffer = layer_data->Unwrap(buffer); } |
| layer_data->device_dispatch_table.CmdBindIndexBuffer(commandBuffer, buffer, offset, indexType); |
| } |
| |
| void DispatchCmdBindVertexBuffers(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, |
| const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, |
| pOffsets); |
| VkBuffer var_local_pBuffers[DISPATCH_MAX_STACK_ALLOCATIONS]; |
| VkBuffer* local_pBuffers = nullptr; |
| { |
| if (pBuffers) { |
| local_pBuffers = bindingCount > DISPATCH_MAX_STACK_ALLOCATIONS ? new VkBuffer[bindingCount] : var_local_pBuffers; |
| for (uint32_t index0 = 0; index0 < bindingCount; ++index0) { |
| local_pBuffers[index0] = layer_data->Unwrap(pBuffers[index0]); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, |
| (const VkBuffer*)local_pBuffers, pOffsets); |
| if (local_pBuffers != var_local_pBuffers) delete[] local_pBuffers; |
| } |
| |
| void DispatchCmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, |
| uint32_t firstInstance) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance); |
| } |
| |
| void DispatchCmdDrawIndexed(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, |
| int32_t vertexOffset, uint32_t firstInstance) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, |
| firstInstance); |
| } |
| |
| void DispatchCmdDrawIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, |
| uint32_t stride) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride); |
| { buffer = layer_data->Unwrap(buffer); } |
| layer_data->device_dispatch_table.CmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride); |
| } |
| |
| void DispatchCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, |
| uint32_t stride) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride); |
| { buffer = layer_data->Unwrap(buffer); } |
| layer_data->device_dispatch_table.CmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride); |
| } |
| |
| void DispatchCmdDispatch(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ); |
| } |
| |
| void DispatchCmdDispatchIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdDispatchIndirect(commandBuffer, buffer, offset); |
| { buffer = layer_data->Unwrap(buffer); } |
| layer_data->device_dispatch_table.CmdDispatchIndirect(commandBuffer, buffer, offset); |
| } |
| |
| void DispatchCmdCopyBuffer(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, |
| const VkBufferCopy* pRegions) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions); |
| { |
| srcBuffer = layer_data->Unwrap(srcBuffer); |
| dstBuffer = layer_data->Unwrap(dstBuffer); |
| } |
| layer_data->device_dispatch_table.CmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions); |
| } |
| |
| void DispatchCmdCopyImage(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, |
| VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, |
| regionCount, pRegions); |
| { |
| srcImage = layer_data->Unwrap(srcImage); |
| dstImage = layer_data->Unwrap(dstImage); |
| } |
| layer_data->device_dispatch_table.CmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, |
| pRegions); |
| } |
| |
| void DispatchCmdBlitImage(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, |
| VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, |
| regionCount, pRegions, filter); |
| { |
| srcImage = layer_data->Unwrap(srcImage); |
| dstImage = layer_data->Unwrap(dstImage); |
| } |
| layer_data->device_dispatch_table.CmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, |
| pRegions, filter); |
| } |
| |
| void DispatchCmdCopyBufferToImage(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, |
| uint32_t regionCount, const VkBufferImageCopy* pRegions) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, |
| regionCount, pRegions); |
| { |
| srcBuffer = layer_data->Unwrap(srcBuffer); |
| dstImage = layer_data->Unwrap(dstImage); |
| } |
| layer_data->device_dispatch_table.CmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, |
| pRegions); |
| } |
| |
| void DispatchCmdCopyImageToBuffer(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, |
| uint32_t regionCount, const VkBufferImageCopy* pRegions) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, |
| regionCount, pRegions); |
| { |
| srcImage = layer_data->Unwrap(srcImage); |
| dstBuffer = layer_data->Unwrap(dstBuffer); |
| } |
| layer_data->device_dispatch_table.CmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, |
| pRegions); |
| } |
| |
| void DispatchCmdUpdateBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, |
| const void* pData) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData); |
| { dstBuffer = layer_data->Unwrap(dstBuffer); } |
| layer_data->device_dispatch_table.CmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData); |
| } |
| |
| void DispatchCmdFillBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, |
| uint32_t data) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data); |
| { dstBuffer = layer_data->Unwrap(dstBuffer); } |
| layer_data->device_dispatch_table.CmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data); |
| } |
| |
| void DispatchCmdClearColorImage(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, |
| const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges); |
| { image = layer_data->Unwrap(image); } |
| layer_data->device_dispatch_table.CmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges); |
| } |
| |
| void DispatchCmdClearDepthStencilImage(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, |
| const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, |
| const VkImageSubresourceRange* pRanges) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, |
| rangeCount, pRanges); |
| { image = layer_data->Unwrap(image); } |
| layer_data->device_dispatch_table.CmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, |
| pRanges); |
| } |
| |
| void DispatchCmdClearAttachments(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, |
| uint32_t rectCount, const VkClearRect* pRects) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects); |
| } |
| |
| void DispatchCmdResolveImage(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, |
| VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, |
| regionCount, pRegions); |
| { |
| srcImage = layer_data->Unwrap(srcImage); |
| dstImage = layer_data->Unwrap(dstImage); |
| } |
| layer_data->device_dispatch_table.CmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, |
| regionCount, pRegions); |
| } |
| |
| void DispatchCmdSetEvent(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdSetEvent(commandBuffer, event, stageMask); |
| { event = layer_data->Unwrap(event); } |
| layer_data->device_dispatch_table.CmdSetEvent(commandBuffer, event, stageMask); |
| } |
| |
| void DispatchCmdResetEvent(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdResetEvent(commandBuffer, event, stageMask); |
| { event = layer_data->Unwrap(event); } |
| layer_data->device_dispatch_table.CmdResetEvent(commandBuffer, event, stageMask); |
| } |
| |
| void DispatchCmdWaitEvents(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) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdWaitEvents( |
| commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, |
| bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers); |
| VkEvent var_local_pEvents[DISPATCH_MAX_STACK_ALLOCATIONS]; |
| VkEvent* local_pEvents = nullptr; |
| safe_VkBufferMemoryBarrier* local_pBufferMemoryBarriers = nullptr; |
| safe_VkImageMemoryBarrier* local_pImageMemoryBarriers = nullptr; |
| { |
| if (pEvents) { |
| local_pEvents = eventCount > DISPATCH_MAX_STACK_ALLOCATIONS ? new VkEvent[eventCount] : var_local_pEvents; |
| for (uint32_t index0 = 0; index0 < eventCount; ++index0) { |
| local_pEvents[index0] = layer_data->Unwrap(pEvents[index0]); |
| } |
| } |
| if (pBufferMemoryBarriers) { |
| local_pBufferMemoryBarriers = new safe_VkBufferMemoryBarrier[bufferMemoryBarrierCount]; |
| for (uint32_t index0 = 0; index0 < bufferMemoryBarrierCount; ++index0) { |
| local_pBufferMemoryBarriers[index0].initialize(&pBufferMemoryBarriers[index0]); |
| |
| if (pBufferMemoryBarriers[index0].buffer) { |
| local_pBufferMemoryBarriers[index0].buffer = layer_data->Unwrap(pBufferMemoryBarriers[index0].buffer); |
| } |
| } |
| } |
| if (pImageMemoryBarriers) { |
| local_pImageMemoryBarriers = new safe_VkImageMemoryBarrier[imageMemoryBarrierCount]; |
| for (uint32_t index0 = 0; index0 < imageMemoryBarrierCount; ++index0) { |
| local_pImageMemoryBarriers[index0].initialize(&pImageMemoryBarriers[index0]); |
| |
| if (pImageMemoryBarriers[index0].image) { |
| local_pImageMemoryBarriers[index0].image = layer_data->Unwrap(pImageMemoryBarriers[index0].image); |
| } |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdWaitEvents( |
| commandBuffer, eventCount, (const VkEvent*)local_pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, |
| bufferMemoryBarrierCount, (const VkBufferMemoryBarrier*)local_pBufferMemoryBarriers, imageMemoryBarrierCount, |
| (const VkImageMemoryBarrier*)local_pImageMemoryBarriers); |
| if (local_pEvents != var_local_pEvents) delete[] local_pEvents; |
| if (local_pBufferMemoryBarriers) { |
| delete[] local_pBufferMemoryBarriers; |
| } |
| if (local_pImageMemoryBarriers) { |
| delete[] local_pImageMemoryBarriers; |
| } |
| } |
| |
| void DispatchCmdPipelineBarrier(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) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdPipelineBarrier( |
| commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, |
| bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers); |
| safe_VkBufferMemoryBarrier* local_pBufferMemoryBarriers = nullptr; |
| safe_VkImageMemoryBarrier* local_pImageMemoryBarriers = nullptr; |
| { |
| if (pBufferMemoryBarriers) { |
| local_pBufferMemoryBarriers = new safe_VkBufferMemoryBarrier[bufferMemoryBarrierCount]; |
| for (uint32_t index0 = 0; index0 < bufferMemoryBarrierCount; ++index0) { |
| local_pBufferMemoryBarriers[index0].initialize(&pBufferMemoryBarriers[index0]); |
| |
| if (pBufferMemoryBarriers[index0].buffer) { |
| local_pBufferMemoryBarriers[index0].buffer = layer_data->Unwrap(pBufferMemoryBarriers[index0].buffer); |
| } |
| } |
| } |
| if (pImageMemoryBarriers) { |
| local_pImageMemoryBarriers = new safe_VkImageMemoryBarrier[imageMemoryBarrierCount]; |
| for (uint32_t index0 = 0; index0 < imageMemoryBarrierCount; ++index0) { |
| local_pImageMemoryBarriers[index0].initialize(&pImageMemoryBarriers[index0]); |
| |
| if (pImageMemoryBarriers[index0].image) { |
| local_pImageMemoryBarriers[index0].image = layer_data->Unwrap(pImageMemoryBarriers[index0].image); |
| } |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdPipelineBarrier( |
| commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, |
| (const VkBufferMemoryBarrier*)local_pBufferMemoryBarriers, imageMemoryBarrierCount, |
| (const VkImageMemoryBarrier*)local_pImageMemoryBarriers); |
| if (local_pBufferMemoryBarriers) { |
| delete[] local_pBufferMemoryBarriers; |
| } |
| if (local_pImageMemoryBarriers) { |
| delete[] local_pImageMemoryBarriers; |
| } |
| } |
| |
| void DispatchCmdBeginQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdBeginQuery(commandBuffer, queryPool, query, flags); |
| { queryPool = layer_data->Unwrap(queryPool); } |
| layer_data->device_dispatch_table.CmdBeginQuery(commandBuffer, queryPool, query, flags); |
| } |
| |
| void DispatchCmdEndQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdEndQuery(commandBuffer, queryPool, query); |
| { queryPool = layer_data->Unwrap(queryPool); } |
| layer_data->device_dispatch_table.CmdEndQuery(commandBuffer, queryPool, query); |
| } |
| |
| void DispatchCmdResetQueryPool(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount); |
| { queryPool = layer_data->Unwrap(queryPool); } |
| layer_data->device_dispatch_table.CmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount); |
| } |
| |
| void DispatchCmdWriteTimestamp(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, |
| uint32_t query) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query); |
| { queryPool = layer_data->Unwrap(queryPool); } |
| layer_data->device_dispatch_table.CmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query); |
| } |
| |
| void DispatchCmdCopyQueryPoolResults(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, |
| VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, |
| dstBuffer, dstOffset, stride, flags); |
| { |
| queryPool = layer_data->Unwrap(queryPool); |
| dstBuffer = layer_data->Unwrap(dstBuffer); |
| } |
| layer_data->device_dispatch_table.CmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, |
| dstOffset, stride, flags); |
| } |
| |
| void DispatchCmdPushConstants(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, |
| uint32_t offset, uint32_t size, const void* pValues) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues); |
| { layout = layer_data->Unwrap(layout); } |
| layer_data->device_dispatch_table.CmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues); |
| } |
| |
| void DispatchCmdBeginRenderPass(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, |
| VkSubpassContents contents) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents); |
| safe_VkRenderPassBeginInfo var_local_pRenderPassBegin; |
| safe_VkRenderPassBeginInfo* local_pRenderPassBegin = nullptr; |
| { |
| if (pRenderPassBegin) { |
| local_pRenderPassBegin = &var_local_pRenderPassBegin; |
| local_pRenderPassBegin->initialize(pRenderPassBegin); |
| |
| if (pRenderPassBegin->renderPass) { |
| local_pRenderPassBegin->renderPass = layer_data->Unwrap(pRenderPassBegin->renderPass); |
| } |
| if (pRenderPassBegin->framebuffer) { |
| local_pRenderPassBegin->framebuffer = layer_data->Unwrap(pRenderPassBegin->framebuffer); |
| } |
| WrapPnextChainHandles(layer_data, local_pRenderPassBegin->pNext); |
| } |
| } |
| layer_data->device_dispatch_table.CmdBeginRenderPass(commandBuffer, (const VkRenderPassBeginInfo*)local_pRenderPassBegin, |
| contents); |
| } |
| |
| void DispatchCmdNextSubpass(VkCommandBuffer commandBuffer, VkSubpassContents contents) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdNextSubpass(commandBuffer, contents); |
| } |
| |
| void DispatchCmdEndRenderPass(VkCommandBuffer commandBuffer) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdEndRenderPass(commandBuffer); |
| } |
| |
| void DispatchCmdExecuteCommands(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, |
| const VkCommandBuffer* pCommandBuffers) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers); |
| } |
| |
| VkResult DispatchBindBufferMemory2(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.BindBufferMemory2(device, bindInfoCount, pBindInfos); |
| safe_VkBindBufferMemoryInfo* local_pBindInfos = nullptr; |
| { |
| if (pBindInfos) { |
| local_pBindInfos = new safe_VkBindBufferMemoryInfo[bindInfoCount]; |
| for (uint32_t index0 = 0; index0 < bindInfoCount; ++index0) { |
| local_pBindInfos[index0].initialize(&pBindInfos[index0]); |
| |
| if (pBindInfos[index0].buffer) { |
| local_pBindInfos[index0].buffer = layer_data->Unwrap(pBindInfos[index0].buffer); |
| } |
| if (pBindInfos[index0].memory) { |
| local_pBindInfos[index0].memory = layer_data->Unwrap(pBindInfos[index0].memory); |
| } |
| } |
| } |
| } |
| VkResult result = |
| layer_data->device_dispatch_table.BindBufferMemory2(device, bindInfoCount, (const VkBindBufferMemoryInfo*)local_pBindInfos); |
| if (local_pBindInfos) { |
| delete[] local_pBindInfos; |
| } |
| return result; |
| } |
| |
| VkResult DispatchBindImageMemory2(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.BindImageMemory2(device, bindInfoCount, pBindInfos); |
| safe_VkBindImageMemoryInfo* local_pBindInfos = nullptr; |
| { |
| if (pBindInfos) { |
| local_pBindInfos = new safe_VkBindImageMemoryInfo[bindInfoCount]; |
| for (uint32_t index0 = 0; index0 < bindInfoCount; ++index0) { |
| local_pBindInfos[index0].initialize(&pBindInfos[index0]); |
| WrapPnextChainHandles(layer_data, local_pBindInfos[index0].pNext); |
| |
| if (pBindInfos[index0].image) { |
| local_pBindInfos[index0].image = layer_data->Unwrap(pBindInfos[index0].image); |
| } |
| if (pBindInfos[index0].memory) { |
| local_pBindInfos[index0].memory = layer_data->Unwrap(pBindInfos[index0].memory); |
| } |
| } |
| } |
| } |
| VkResult result = |
| layer_data->device_dispatch_table.BindImageMemory2(device, bindInfoCount, (const VkBindImageMemoryInfo*)local_pBindInfos); |
| if (local_pBindInfos) { |
| delete[] local_pBindInfos; |
| } |
| return result; |
| } |
| |
| void DispatchGetDeviceGroupPeerMemoryFeatures(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, |
| uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| layer_data->device_dispatch_table.GetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, |
| pPeerMemoryFeatures); |
| } |
| |
| void DispatchCmdSetDeviceMask(VkCommandBuffer commandBuffer, uint32_t deviceMask) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetDeviceMask(commandBuffer, deviceMask); |
| } |
| |
| void DispatchCmdDispatchBase(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, |
| uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, |
| groupCountZ); |
| } |
| |
| VkResult DispatchEnumeratePhysicalDeviceGroups(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, |
| VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| |
| VkResult result = layer_data->instance_dispatch_table.EnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, |
| pPhysicalDeviceGroupProperties); |
| |
| return result; |
| } |
| |
| void DispatchGetImageMemoryRequirements2(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, |
| VkMemoryRequirements2* pMemoryRequirements) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetImageMemoryRequirements2(device, pInfo, pMemoryRequirements); |
| safe_VkImageMemoryRequirementsInfo2 var_local_pInfo; |
| safe_VkImageMemoryRequirementsInfo2* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->image) { |
| local_pInfo->image = layer_data->Unwrap(pInfo->image); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.GetImageMemoryRequirements2(device, (const VkImageMemoryRequirementsInfo2*)local_pInfo, |
| pMemoryRequirements); |
| } |
| |
| void DispatchGetBufferMemoryRequirements2(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, |
| VkMemoryRequirements2* pMemoryRequirements) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements); |
| safe_VkBufferMemoryRequirementsInfo2 var_local_pInfo; |
| safe_VkBufferMemoryRequirementsInfo2* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->buffer) { |
| local_pInfo->buffer = layer_data->Unwrap(pInfo->buffer); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.GetBufferMemoryRequirements2(device, (const VkBufferMemoryRequirementsInfo2*)local_pInfo, |
| pMemoryRequirements); |
| } |
| |
| void DispatchGetImageSparseMemoryRequirements2(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, |
| uint32_t* pSparseMemoryRequirementCount, |
| VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, |
| pSparseMemoryRequirements); |
| safe_VkImageSparseMemoryRequirementsInfo2 var_local_pInfo; |
| safe_VkImageSparseMemoryRequirementsInfo2* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->image) { |
| local_pInfo->image = layer_data->Unwrap(pInfo->image); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.GetImageSparseMemoryRequirements2( |
| device, (const VkImageSparseMemoryRequirementsInfo2*)local_pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements); |
| } |
| |
| void DispatchGetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceFeatures2(physicalDevice, pFeatures); |
| } |
| |
| void DispatchGetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceProperties2(physicalDevice, pProperties); |
| } |
| |
| void DispatchGetPhysicalDeviceFormatProperties2(VkPhysicalDevice physicalDevice, VkFormat format, |
| VkFormatProperties2* pFormatProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties); |
| } |
| |
| VkResult DispatchGetPhysicalDeviceImageFormatProperties2(VkPhysicalDevice physicalDevice, |
| const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, |
| VkImageFormatProperties2* pImageFormatProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, |
| pImageFormatProperties); |
| |
| return result; |
| } |
| |
| void DispatchGetPhysicalDeviceQueueFamilyProperties2(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, |
| VkQueueFamilyProperties2* pQueueFamilyProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, |
| pQueueFamilyProperties); |
| } |
| |
| void DispatchGetPhysicalDeviceMemoryProperties2(VkPhysicalDevice physicalDevice, |
| VkPhysicalDeviceMemoryProperties2* pMemoryProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties); |
| } |
| |
| void DispatchGetPhysicalDeviceSparseImageFormatProperties2(VkPhysicalDevice physicalDevice, |
| const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, |
| uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, |
| pProperties); |
| } |
| |
| void DispatchTrimCommandPool(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.TrimCommandPool(device, commandPool, flags); |
| { commandPool = layer_data->Unwrap(commandPool); } |
| layer_data->device_dispatch_table.TrimCommandPool(device, commandPool, flags); |
| } |
| |
| void DispatchGetDeviceQueue2(VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| layer_data->device_dispatch_table.GetDeviceQueue2(device, pQueueInfo, pQueue); |
| } |
| |
| VkResult DispatchCreateSamplerYcbcrConversion(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion); |
| |
| VkResult result = |
| layer_data->device_dispatch_table.CreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion); |
| if (VK_SUCCESS == result) { |
| *pYcbcrConversion = layer_data->WrapNew(*pYcbcrConversion); |
| } |
| return result; |
| } |
| |
| void DispatchDestroySamplerYcbcrConversion(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, |
| const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator); |
| |
| uint64_t ycbcrConversion_id = CastToUint64(ycbcrConversion); |
| auto iter = unique_id_mapping.pop(ycbcrConversion_id); |
| if (iter != unique_id_mapping.end()) { |
| ycbcrConversion = (VkSamplerYcbcrConversion)iter->second; |
| } else { |
| ycbcrConversion = (VkSamplerYcbcrConversion)0; |
| } |
| layer_data->device_dispatch_table.DestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator); |
| } |
| |
| void DispatchGetPhysicalDeviceExternalBufferProperties(VkPhysicalDevice physicalDevice, |
| const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, |
| VkExternalBufferProperties* pExternalBufferProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, |
| pExternalBufferProperties); |
| } |
| |
| void DispatchGetPhysicalDeviceExternalFenceProperties(VkPhysicalDevice physicalDevice, |
| const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, |
| VkExternalFenceProperties* pExternalFenceProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, |
| pExternalFenceProperties); |
| } |
| |
| void DispatchGetPhysicalDeviceExternalSemaphoreProperties(VkPhysicalDevice physicalDevice, |
| const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, |
| VkExternalSemaphoreProperties* pExternalSemaphoreProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, |
| pExternalSemaphoreProperties); |
| } |
| |
| void DispatchGetDescriptorSetLayoutSupport(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, |
| VkDescriptorSetLayoutSupport* pSupport) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport); |
| safe_VkDescriptorSetLayoutCreateInfo var_local_pCreateInfo; |
| safe_VkDescriptorSetLayoutCreateInfo* local_pCreateInfo = nullptr; |
| { |
| if (pCreateInfo) { |
| local_pCreateInfo = &var_local_pCreateInfo; |
| local_pCreateInfo->initialize(pCreateInfo); |
| if (local_pCreateInfo->pBindings) { |
| for (uint32_t index1 = 0; index1 < local_pCreateInfo->bindingCount; ++index1) { |
| if (local_pCreateInfo->pBindings[index1].pImmutableSamplers) { |
| for (uint32_t index2 = 0; index2 < local_pCreateInfo->pBindings[index1].descriptorCount; ++index2) { |
| local_pCreateInfo->pBindings[index1].pImmutableSamplers[index2] = |
| layer_data->Unwrap(local_pCreateInfo->pBindings[index1].pImmutableSamplers[index2]); |
| } |
| } |
| } |
| } |
| } |
| } |
| layer_data->device_dispatch_table.GetDescriptorSetLayoutSupport( |
| device, (const VkDescriptorSetLayoutCreateInfo*)local_pCreateInfo, pSupport); |
| } |
| |
| void DispatchCmdDrawIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, |
| VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, |
| maxDrawCount, stride); |
| { |
| buffer = layer_data->Unwrap(buffer); |
| countBuffer = layer_data->Unwrap(countBuffer); |
| } |
| layer_data->device_dispatch_table.CmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, |
| maxDrawCount, stride); |
| } |
| |
| void DispatchCmdDrawIndexedIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, |
| VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, |
| countBufferOffset, maxDrawCount, stride); |
| { |
| buffer = layer_data->Unwrap(buffer); |
| countBuffer = layer_data->Unwrap(countBuffer); |
| } |
| layer_data->device_dispatch_table.CmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, |
| maxDrawCount, stride); |
| } |
| |
| void DispatchCmdBeginRenderPass2(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, |
| const VkSubpassBeginInfo* pSubpassBeginInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo); |
| safe_VkRenderPassBeginInfo var_local_pRenderPassBegin; |
| safe_VkRenderPassBeginInfo* local_pRenderPassBegin = nullptr; |
| { |
| if (pRenderPassBegin) { |
| local_pRenderPassBegin = &var_local_pRenderPassBegin; |
| local_pRenderPassBegin->initialize(pRenderPassBegin); |
| |
| if (pRenderPassBegin->renderPass) { |
| local_pRenderPassBegin->renderPass = layer_data->Unwrap(pRenderPassBegin->renderPass); |
| } |
| if (pRenderPassBegin->framebuffer) { |
| local_pRenderPassBegin->framebuffer = layer_data->Unwrap(pRenderPassBegin->framebuffer); |
| } |
| WrapPnextChainHandles(layer_data, local_pRenderPassBegin->pNext); |
| } |
| } |
| layer_data->device_dispatch_table.CmdBeginRenderPass2(commandBuffer, (const VkRenderPassBeginInfo*)local_pRenderPassBegin, |
| pSubpassBeginInfo); |
| } |
| |
| void DispatchCmdNextSubpass2(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, |
| const VkSubpassEndInfo* pSubpassEndInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo); |
| } |
| |
| void DispatchCmdEndRenderPass2(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdEndRenderPass2(commandBuffer, pSubpassEndInfo); |
| } |
| |
| void DispatchResetQueryPool(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.ResetQueryPool(device, queryPool, firstQuery, queryCount); |
| { queryPool = layer_data->Unwrap(queryPool); } |
| layer_data->device_dispatch_table.ResetQueryPool(device, queryPool, firstQuery, queryCount); |
| } |
| |
| VkResult DispatchGetSemaphoreCounterValue(VkDevice device, VkSemaphore semaphore, uint64_t* pValue) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetSemaphoreCounterValue(device, semaphore, pValue); |
| { semaphore = layer_data->Unwrap(semaphore); } |
| VkResult result = layer_data->device_dispatch_table.GetSemaphoreCounterValue(device, semaphore, pValue); |
| |
| return result; |
| } |
| |
| VkResult DispatchWaitSemaphores(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.WaitSemaphores(device, pWaitInfo, timeout); |
| safe_VkSemaphoreWaitInfo var_local_pWaitInfo; |
| safe_VkSemaphoreWaitInfo* local_pWaitInfo = nullptr; |
| { |
| if (pWaitInfo) { |
| local_pWaitInfo = &var_local_pWaitInfo; |
| local_pWaitInfo->initialize(pWaitInfo); |
| if (local_pWaitInfo->pSemaphores) { |
| for (uint32_t index1 = 0; index1 < local_pWaitInfo->semaphoreCount; ++index1) { |
| local_pWaitInfo->pSemaphores[index1] = layer_data->Unwrap(local_pWaitInfo->pSemaphores[index1]); |
| } |
| } |
| } |
| } |
| VkResult result = |
| layer_data->device_dispatch_table.WaitSemaphores(device, (const VkSemaphoreWaitInfo*)local_pWaitInfo, timeout); |
| |
| return result; |
| } |
| |
| VkResult DispatchSignalSemaphore(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.SignalSemaphore(device, pSignalInfo); |
| safe_VkSemaphoreSignalInfo var_local_pSignalInfo; |
| safe_VkSemaphoreSignalInfo* local_pSignalInfo = nullptr; |
| { |
| if (pSignalInfo) { |
| local_pSignalInfo = &var_local_pSignalInfo; |
| local_pSignalInfo->initialize(pSignalInfo); |
| |
| if (pSignalInfo->semaphore) { |
| local_pSignalInfo->semaphore = layer_data->Unwrap(pSignalInfo->semaphore); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.SignalSemaphore(device, (const VkSemaphoreSignalInfo*)local_pSignalInfo); |
| |
| return result; |
| } |
| |
| VkDeviceAddress DispatchGetBufferDeviceAddress(VkDevice device, const VkBufferDeviceAddressInfo* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetBufferDeviceAddress(device, pInfo); |
| safe_VkBufferDeviceAddressInfo var_local_pInfo; |
| safe_VkBufferDeviceAddressInfo* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->buffer) { |
| local_pInfo->buffer = layer_data->Unwrap(pInfo->buffer); |
| } |
| } |
| } |
| VkDeviceAddress result = |
| layer_data->device_dispatch_table.GetBufferDeviceAddress(device, (const VkBufferDeviceAddressInfo*)local_pInfo); |
| |
| return result; |
| } |
| |
| uint64_t DispatchGetBufferOpaqueCaptureAddress(VkDevice device, const VkBufferDeviceAddressInfo* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetBufferOpaqueCaptureAddress(device, pInfo); |
| safe_VkBufferDeviceAddressInfo var_local_pInfo; |
| safe_VkBufferDeviceAddressInfo* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->buffer) { |
| local_pInfo->buffer = layer_data->Unwrap(pInfo->buffer); |
| } |
| } |
| } |
| uint64_t result = |
| layer_data->device_dispatch_table.GetBufferOpaqueCaptureAddress(device, (const VkBufferDeviceAddressInfo*)local_pInfo); |
| |
| return result; |
| } |
| |
| uint64_t DispatchGetDeviceMemoryOpaqueCaptureAddress(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetDeviceMemoryOpaqueCaptureAddress(device, pInfo); |
| safe_VkDeviceMemoryOpaqueCaptureAddressInfo var_local_pInfo; |
| safe_VkDeviceMemoryOpaqueCaptureAddressInfo* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->memory) { |
| local_pInfo->memory = layer_data->Unwrap(pInfo->memory); |
| } |
| } |
| } |
| uint64_t result = layer_data->device_dispatch_table.GetDeviceMemoryOpaqueCaptureAddress( |
| device, (const VkDeviceMemoryOpaqueCaptureAddressInfo*)local_pInfo); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetPhysicalDeviceToolProperties(VkPhysicalDevice physicalDevice, uint32_t* pToolCount, |
| VkPhysicalDeviceToolProperties* pToolProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| VkResult result = |
| layer_data->instance_dispatch_table.GetPhysicalDeviceToolProperties(physicalDevice, pToolCount, pToolProperties); |
| |
| return result; |
| } |
| |
| VkResult DispatchCreatePrivateDataSlot(VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkPrivateDataSlot* pPrivateDataSlot) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CreatePrivateDataSlot(device, pCreateInfo, pAllocator, pPrivateDataSlot); |
| |
| VkResult result = layer_data->device_dispatch_table.CreatePrivateDataSlot(device, pCreateInfo, pAllocator, pPrivateDataSlot); |
| if (VK_SUCCESS == result) { |
| *pPrivateDataSlot = layer_data->WrapNew(*pPrivateDataSlot); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyPrivateDataSlot(VkDevice device, VkPrivateDataSlot privateDataSlot, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyPrivateDataSlot(device, privateDataSlot, pAllocator); |
| |
| uint64_t privateDataSlot_id = CastToUint64(privateDataSlot); |
| auto iter = unique_id_mapping.pop(privateDataSlot_id); |
| if (iter != unique_id_mapping.end()) { |
| privateDataSlot = (VkPrivateDataSlot)iter->second; |
| } else { |
| privateDataSlot = (VkPrivateDataSlot)0; |
| } |
| layer_data->device_dispatch_table.DestroyPrivateDataSlot(device, privateDataSlot, pAllocator); |
| } |
| |
| void DispatchCmdSetEvent2(VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfo* pDependencyInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdSetEvent2(commandBuffer, event, pDependencyInfo); |
| safe_VkDependencyInfo var_local_pDependencyInfo; |
| safe_VkDependencyInfo* local_pDependencyInfo = nullptr; |
| { |
| event = layer_data->Unwrap(event); |
| if (pDependencyInfo) { |
| local_pDependencyInfo = &var_local_pDependencyInfo; |
| local_pDependencyInfo->initialize(pDependencyInfo); |
| if (local_pDependencyInfo->pBufferMemoryBarriers) { |
| for (uint32_t index1 = 0; index1 < local_pDependencyInfo->bufferMemoryBarrierCount; ++index1) { |
| if (pDependencyInfo->pBufferMemoryBarriers[index1].buffer) { |
| local_pDependencyInfo->pBufferMemoryBarriers[index1].buffer = |
| layer_data->Unwrap(pDependencyInfo->pBufferMemoryBarriers[index1].buffer); |
| } |
| } |
| } |
| if (local_pDependencyInfo->pImageMemoryBarriers) { |
| for (uint32_t index1 = 0; index1 < local_pDependencyInfo->imageMemoryBarrierCount; ++index1) { |
| if (pDependencyInfo->pImageMemoryBarriers[index1].image) { |
| local_pDependencyInfo->pImageMemoryBarriers[index1].image = |
| layer_data->Unwrap(pDependencyInfo->pImageMemoryBarriers[index1].image); |
| } |
| } |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdSetEvent2(commandBuffer, event, (const VkDependencyInfo*)local_pDependencyInfo); |
| } |
| |
| void DispatchCmdResetEvent2(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdResetEvent2(commandBuffer, event, stageMask); |
| { event = layer_data->Unwrap(event); } |
| layer_data->device_dispatch_table.CmdResetEvent2(commandBuffer, event, stageMask); |
| } |
| |
| void DispatchCmdWaitEvents2(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, |
| const VkDependencyInfo* pDependencyInfos) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdWaitEvents2(commandBuffer, eventCount, pEvents, pDependencyInfos); |
| VkEvent var_local_pEvents[DISPATCH_MAX_STACK_ALLOCATIONS]; |
| VkEvent* local_pEvents = nullptr; |
| safe_VkDependencyInfo* local_pDependencyInfos = nullptr; |
| { |
| if (pEvents) { |
| local_pEvents = eventCount > DISPATCH_MAX_STACK_ALLOCATIONS ? new VkEvent[eventCount] : var_local_pEvents; |
| for (uint32_t index0 = 0; index0 < eventCount; ++index0) { |
| local_pEvents[index0] = layer_data->Unwrap(pEvents[index0]); |
| } |
| } |
| if (pDependencyInfos) { |
| local_pDependencyInfos = new safe_VkDependencyInfo[eventCount]; |
| for (uint32_t index0 = 0; index0 < eventCount; ++index0) { |
| local_pDependencyInfos[index0].initialize(&pDependencyInfos[index0]); |
| if (local_pDependencyInfos[index0].pBufferMemoryBarriers) { |
| for (uint32_t index1 = 0; index1 < local_pDependencyInfos[index0].bufferMemoryBarrierCount; ++index1) { |
| if (pDependencyInfos[index0].pBufferMemoryBarriers[index1].buffer) { |
| local_pDependencyInfos[index0].pBufferMemoryBarriers[index1].buffer = |
| layer_data->Unwrap(pDependencyInfos[index0].pBufferMemoryBarriers[index1].buffer); |
| } |
| } |
| } |
| if (local_pDependencyInfos[index0].pImageMemoryBarriers) { |
| for (uint32_t index1 = 0; index1 < local_pDependencyInfos[index0].imageMemoryBarrierCount; ++index1) { |
| if (pDependencyInfos[index0].pImageMemoryBarriers[index1].image) { |
| local_pDependencyInfos[index0].pImageMemoryBarriers[index1].image = |
| layer_data->Unwrap(pDependencyInfos[index0].pImageMemoryBarriers[index1].image); |
| } |
| } |
| } |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdWaitEvents2(commandBuffer, eventCount, (const VkEvent*)local_pEvents, |
| (const VkDependencyInfo*)local_pDependencyInfos); |
| if (local_pEvents != var_local_pEvents) delete[] local_pEvents; |
| if (local_pDependencyInfos) { |
| delete[] local_pDependencyInfos; |
| } |
| } |
| |
| void DispatchCmdPipelineBarrier2(VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdPipelineBarrier2(commandBuffer, pDependencyInfo); |
| safe_VkDependencyInfo var_local_pDependencyInfo; |
| safe_VkDependencyInfo* local_pDependencyInfo = nullptr; |
| { |
| if (pDependencyInfo) { |
| local_pDependencyInfo = &var_local_pDependencyInfo; |
| local_pDependencyInfo->initialize(pDependencyInfo); |
| if (local_pDependencyInfo->pBufferMemoryBarriers) { |
| for (uint32_t index1 = 0; index1 < local_pDependencyInfo->bufferMemoryBarrierCount; ++index1) { |
| if (pDependencyInfo->pBufferMemoryBarriers[index1].buffer) { |
| local_pDependencyInfo->pBufferMemoryBarriers[index1].buffer = |
| layer_data->Unwrap(pDependencyInfo->pBufferMemoryBarriers[index1].buffer); |
| } |
| } |
| } |
| if (local_pDependencyInfo->pImageMemoryBarriers) { |
| for (uint32_t index1 = 0; index1 < local_pDependencyInfo->imageMemoryBarrierCount; ++index1) { |
| if (pDependencyInfo->pImageMemoryBarriers[index1].image) { |
| local_pDependencyInfo->pImageMemoryBarriers[index1].image = |
| layer_data->Unwrap(pDependencyInfo->pImageMemoryBarriers[index1].image); |
| } |
| } |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdPipelineBarrier2(commandBuffer, (const VkDependencyInfo*)local_pDependencyInfo); |
| } |
| |
| void DispatchCmdWriteTimestamp2(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkQueryPool queryPool, uint32_t query) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdWriteTimestamp2(commandBuffer, stage, queryPool, query); |
| { queryPool = layer_data->Unwrap(queryPool); } |
| layer_data->device_dispatch_table.CmdWriteTimestamp2(commandBuffer, stage, queryPool, query); |
| } |
| |
| VkResult DispatchQueueSubmit2(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.QueueSubmit2(queue, submitCount, pSubmits, fence); |
| safe_VkSubmitInfo2* local_pSubmits = nullptr; |
| { |
| if (pSubmits) { |
| local_pSubmits = new safe_VkSubmitInfo2[submitCount]; |
| for (uint32_t index0 = 0; index0 < submitCount; ++index0) { |
| local_pSubmits[index0].initialize(&pSubmits[index0]); |
| WrapPnextChainHandles(layer_data, local_pSubmits[index0].pNext); |
| if (local_pSubmits[index0].pWaitSemaphoreInfos) { |
| for (uint32_t index1 = 0; index1 < local_pSubmits[index0].waitSemaphoreInfoCount; ++index1) { |
| if (pSubmits[index0].pWaitSemaphoreInfos[index1].semaphore) { |
| local_pSubmits[index0].pWaitSemaphoreInfos[index1].semaphore = |
| layer_data->Unwrap(pSubmits[index0].pWaitSemaphoreInfos[index1].semaphore); |
| } |
| } |
| } |
| if (local_pSubmits[index0].pSignalSemaphoreInfos) { |
| for (uint32_t index1 = 0; index1 < local_pSubmits[index0].signalSemaphoreInfoCount; ++index1) { |
| if (pSubmits[index0].pSignalSemaphoreInfos[index1].semaphore) { |
| local_pSubmits[index0].pSignalSemaphoreInfos[index1].semaphore = |
| layer_data->Unwrap(pSubmits[index0].pSignalSemaphoreInfos[index1].semaphore); |
| } |
| } |
| } |
| } |
| } |
| fence = layer_data->Unwrap(fence); |
| } |
| VkResult result = |
| layer_data->device_dispatch_table.QueueSubmit2(queue, submitCount, (const VkSubmitInfo2*)local_pSubmits, fence); |
| if (local_pSubmits) { |
| delete[] local_pSubmits; |
| } |
| return result; |
| } |
| |
| void DispatchCmdCopyBuffer2(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdCopyBuffer2(commandBuffer, pCopyBufferInfo); |
| safe_VkCopyBufferInfo2 var_local_pCopyBufferInfo; |
| safe_VkCopyBufferInfo2* local_pCopyBufferInfo = nullptr; |
| { |
| if (pCopyBufferInfo) { |
| local_pCopyBufferInfo = &var_local_pCopyBufferInfo; |
| local_pCopyBufferInfo->initialize(pCopyBufferInfo); |
| |
| if (pCopyBufferInfo->srcBuffer) { |
| local_pCopyBufferInfo->srcBuffer = layer_data->Unwrap(pCopyBufferInfo->srcBuffer); |
| } |
| if (pCopyBufferInfo->dstBuffer) { |
| local_pCopyBufferInfo->dstBuffer = layer_data->Unwrap(pCopyBufferInfo->dstBuffer); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdCopyBuffer2(commandBuffer, (const VkCopyBufferInfo2*)local_pCopyBufferInfo); |
| } |
| |
| void DispatchCmdCopyImage2(VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdCopyImage2(commandBuffer, pCopyImageInfo); |
| safe_VkCopyImageInfo2 var_local_pCopyImageInfo; |
| safe_VkCopyImageInfo2* local_pCopyImageInfo = nullptr; |
| { |
| if (pCopyImageInfo) { |
| local_pCopyImageInfo = &var_local_pCopyImageInfo; |
| local_pCopyImageInfo->initialize(pCopyImageInfo); |
| |
| if (pCopyImageInfo->srcImage) { |
| local_pCopyImageInfo->srcImage = layer_data->Unwrap(pCopyImageInfo->srcImage); |
| } |
| if (pCopyImageInfo->dstImage) { |
| local_pCopyImageInfo->dstImage = layer_data->Unwrap(pCopyImageInfo->dstImage); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdCopyImage2(commandBuffer, (const VkCopyImageInfo2*)local_pCopyImageInfo); |
| } |
| |
| void DispatchCmdCopyBufferToImage2(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdCopyBufferToImage2(commandBuffer, pCopyBufferToImageInfo); |
| safe_VkCopyBufferToImageInfo2 var_local_pCopyBufferToImageInfo; |
| safe_VkCopyBufferToImageInfo2* local_pCopyBufferToImageInfo = nullptr; |
| { |
| if (pCopyBufferToImageInfo) { |
| local_pCopyBufferToImageInfo = &var_local_pCopyBufferToImageInfo; |
| local_pCopyBufferToImageInfo->initialize(pCopyBufferToImageInfo); |
| |
| if (pCopyBufferToImageInfo->srcBuffer) { |
| local_pCopyBufferToImageInfo->srcBuffer = layer_data->Unwrap(pCopyBufferToImageInfo->srcBuffer); |
| } |
| if (pCopyBufferToImageInfo->dstImage) { |
| local_pCopyBufferToImageInfo->dstImage = layer_data->Unwrap(pCopyBufferToImageInfo->dstImage); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdCopyBufferToImage2(commandBuffer, |
| (const VkCopyBufferToImageInfo2*)local_pCopyBufferToImageInfo); |
| } |
| |
| void DispatchCmdCopyImageToBuffer2(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdCopyImageToBuffer2(commandBuffer, pCopyImageToBufferInfo); |
| safe_VkCopyImageToBufferInfo2 var_local_pCopyImageToBufferInfo; |
| safe_VkCopyImageToBufferInfo2* local_pCopyImageToBufferInfo = nullptr; |
| { |
| if (pCopyImageToBufferInfo) { |
| local_pCopyImageToBufferInfo = &var_local_pCopyImageToBufferInfo; |
| local_pCopyImageToBufferInfo->initialize(pCopyImageToBufferInfo); |
| |
| if (pCopyImageToBufferInfo->srcImage) { |
| local_pCopyImageToBufferInfo->srcImage = layer_data->Unwrap(pCopyImageToBufferInfo->srcImage); |
| } |
| if (pCopyImageToBufferInfo->dstBuffer) { |
| local_pCopyImageToBufferInfo->dstBuffer = layer_data->Unwrap(pCopyImageToBufferInfo->dstBuffer); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdCopyImageToBuffer2(commandBuffer, |
| (const VkCopyImageToBufferInfo2*)local_pCopyImageToBufferInfo); |
| } |
| |
| void DispatchCmdBlitImage2(VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdBlitImage2(commandBuffer, pBlitImageInfo); |
| safe_VkBlitImageInfo2 var_local_pBlitImageInfo; |
| safe_VkBlitImageInfo2* local_pBlitImageInfo = nullptr; |
| { |
| if (pBlitImageInfo) { |
| local_pBlitImageInfo = &var_local_pBlitImageInfo; |
| local_pBlitImageInfo->initialize(pBlitImageInfo); |
| |
| if (pBlitImageInfo->srcImage) { |
| local_pBlitImageInfo->srcImage = layer_data->Unwrap(pBlitImageInfo->srcImage); |
| } |
| if (pBlitImageInfo->dstImage) { |
| local_pBlitImageInfo->dstImage = layer_data->Unwrap(pBlitImageInfo->dstImage); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdBlitImage2(commandBuffer, (const VkBlitImageInfo2*)local_pBlitImageInfo); |
| } |
| |
| void DispatchCmdResolveImage2(VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdResolveImage2(commandBuffer, pResolveImageInfo); |
| safe_VkResolveImageInfo2 var_local_pResolveImageInfo; |
| safe_VkResolveImageInfo2* local_pResolveImageInfo = nullptr; |
| { |
| if (pResolveImageInfo) { |
| local_pResolveImageInfo = &var_local_pResolveImageInfo; |
| local_pResolveImageInfo->initialize(pResolveImageInfo); |
| |
| if (pResolveImageInfo->srcImage) { |
| local_pResolveImageInfo->srcImage = layer_data->Unwrap(pResolveImageInfo->srcImage); |
| } |
| if (pResolveImageInfo->dstImage) { |
| local_pResolveImageInfo->dstImage = layer_data->Unwrap(pResolveImageInfo->dstImage); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdResolveImage2(commandBuffer, (const VkResolveImageInfo2*)local_pResolveImageInfo); |
| } |
| |
| void DispatchCmdBeginRendering(VkCommandBuffer commandBuffer, const VkRenderingInfo* pRenderingInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdBeginRendering(commandBuffer, pRenderingInfo); |
| safe_VkRenderingInfo var_local_pRenderingInfo; |
| safe_VkRenderingInfo* local_pRenderingInfo = nullptr; |
| { |
| if (pRenderingInfo) { |
| local_pRenderingInfo = &var_local_pRenderingInfo; |
| local_pRenderingInfo->initialize(pRenderingInfo); |
| if (local_pRenderingInfo->pColorAttachments) { |
| for (uint32_t index1 = 0; index1 < local_pRenderingInfo->colorAttachmentCount; ++index1) { |
| if (pRenderingInfo->pColorAttachments[index1].imageView) { |
| local_pRenderingInfo->pColorAttachments[index1].imageView = |
| layer_data->Unwrap(pRenderingInfo->pColorAttachments[index1].imageView); |
| } |
| if (pRenderingInfo->pColorAttachments[index1].resolveImageView) { |
| local_pRenderingInfo->pColorAttachments[index1].resolveImageView = |
| layer_data->Unwrap(pRenderingInfo->pColorAttachments[index1].resolveImageView); |
| } |
| } |
| } |
| if (local_pRenderingInfo->pDepthAttachment) { |
| if (pRenderingInfo->pDepthAttachment->imageView) { |
| local_pRenderingInfo->pDepthAttachment->imageView = |
| layer_data->Unwrap(pRenderingInfo->pDepthAttachment->imageView); |
| } |
| if (pRenderingInfo->pDepthAttachment->resolveImageView) { |
| local_pRenderingInfo->pDepthAttachment->resolveImageView = |
| layer_data->Unwrap(pRenderingInfo->pDepthAttachment->resolveImageView); |
| } |
| } |
| if (local_pRenderingInfo->pStencilAttachment) { |
| if (pRenderingInfo->pStencilAttachment->imageView) { |
| local_pRenderingInfo->pStencilAttachment->imageView = |
| layer_data->Unwrap(pRenderingInfo->pStencilAttachment->imageView); |
| } |
| if (pRenderingInfo->pStencilAttachment->resolveImageView) { |
| local_pRenderingInfo->pStencilAttachment->resolveImageView = |
| layer_data->Unwrap(pRenderingInfo->pStencilAttachment->resolveImageView); |
| } |
| } |
| WrapPnextChainHandles(layer_data, local_pRenderingInfo->pNext); |
| } |
| } |
| layer_data->device_dispatch_table.CmdBeginRendering(commandBuffer, (const VkRenderingInfo*)local_pRenderingInfo); |
| } |
| |
| void DispatchCmdEndRendering(VkCommandBuffer commandBuffer) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdEndRendering(commandBuffer); |
| } |
| |
| void DispatchCmdSetCullMode(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetCullMode(commandBuffer, cullMode); |
| } |
| |
| void DispatchCmdSetFrontFace(VkCommandBuffer commandBuffer, VkFrontFace frontFace) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetFrontFace(commandBuffer, frontFace); |
| } |
| |
| void DispatchCmdSetPrimitiveTopology(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetPrimitiveTopology(commandBuffer, primitiveTopology); |
| } |
| |
| void DispatchCmdSetViewportWithCount(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetViewportWithCount(commandBuffer, viewportCount, pViewports); |
| } |
| |
| void DispatchCmdSetScissorWithCount(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetScissorWithCount(commandBuffer, scissorCount, pScissors); |
| } |
| |
| void DispatchCmdBindVertexBuffers2(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, |
| const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, |
| const VkDeviceSize* pStrides) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdBindVertexBuffers2(commandBuffer, firstBinding, bindingCount, pBuffers, |
| pOffsets, pSizes, pStrides); |
| VkBuffer var_local_pBuffers[DISPATCH_MAX_STACK_ALLOCATIONS]; |
| VkBuffer* local_pBuffers = nullptr; |
| { |
| if (pBuffers) { |
| local_pBuffers = bindingCount > DISPATCH_MAX_STACK_ALLOCATIONS ? new VkBuffer[bindingCount] : var_local_pBuffers; |
| for (uint32_t index0 = 0; index0 < bindingCount; ++index0) { |
| local_pBuffers[index0] = layer_data->Unwrap(pBuffers[index0]); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdBindVertexBuffers2(commandBuffer, firstBinding, bindingCount, |
| (const VkBuffer*)local_pBuffers, pOffsets, pSizes, pStrides); |
| if (local_pBuffers != var_local_pBuffers) delete[] local_pBuffers; |
| } |
| |
| void DispatchCmdSetDepthTestEnable(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetDepthTestEnable(commandBuffer, depthTestEnable); |
| } |
| |
| void DispatchCmdSetDepthWriteEnable(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetDepthWriteEnable(commandBuffer, depthWriteEnable); |
| } |
| |
| void DispatchCmdSetDepthCompareOp(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetDepthCompareOp(commandBuffer, depthCompareOp); |
| } |
| |
| void DispatchCmdSetDepthBoundsTestEnable(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetDepthBoundsTestEnable(commandBuffer, depthBoundsTestEnable); |
| } |
| |
| void DispatchCmdSetStencilTestEnable(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetStencilTestEnable(commandBuffer, stencilTestEnable); |
| } |
| |
| void DispatchCmdSetStencilOp(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, |
| VkStencilOp depthFailOp, VkCompareOp compareOp) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetStencilOp(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp); |
| } |
| |
| void DispatchCmdSetRasterizerDiscardEnable(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetRasterizerDiscardEnable(commandBuffer, rasterizerDiscardEnable); |
| } |
| |
| void DispatchCmdSetDepthBiasEnable(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetDepthBiasEnable(commandBuffer, depthBiasEnable); |
| } |
| |
| void DispatchCmdSetPrimitiveRestartEnable(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetPrimitiveRestartEnable(commandBuffer, primitiveRestartEnable); |
| } |
| |
| void DispatchGetDeviceBufferMemoryRequirements(VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, |
| VkMemoryRequirements2* pMemoryRequirements) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| layer_data->device_dispatch_table.GetDeviceBufferMemoryRequirements(device, pInfo, pMemoryRequirements); |
| } |
| |
| void DispatchGetDeviceImageMemoryRequirements(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, |
| VkMemoryRequirements2* pMemoryRequirements) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| layer_data->device_dispatch_table.GetDeviceImageMemoryRequirements(device, pInfo, pMemoryRequirements); |
| } |
| |
| void DispatchGetDeviceImageSparseMemoryRequirements(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, |
| uint32_t* pSparseMemoryRequirementCount, |
| VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| layer_data->device_dispatch_table.GetDeviceImageSparseMemoryRequirements(device, pInfo, pSparseMemoryRequirementCount, |
| pSparseMemoryRequirements); |
| } |
| |
| void DispatchDestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| if (!wrap_handles) return layer_data->instance_dispatch_table.DestroySurfaceKHR(instance, surface, pAllocator); |
| |
| uint64_t surface_id = CastToUint64(surface); |
| auto iter = unique_id_mapping.pop(surface_id); |
| if (iter != unique_id_mapping.end()) { |
| surface = (VkSurfaceKHR)iter->second; |
| } else { |
| surface = (VkSurfaceKHR)0; |
| } |
| layer_data->instance_dispatch_table.DestroySurfaceKHR(instance, surface, pAllocator); |
| } |
| |
| VkResult DispatchGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, |
| VkSurfaceKHR surface, VkBool32* pSupported) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, |
| pSupported); |
| { surface = layer_data->Unwrap(surface); } |
| VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, |
| surface, pSupported); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, |
| VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, |
| pSurfaceCapabilities); |
| { surface = layer_data->Unwrap(surface); } |
| VkResult result = |
| layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, |
| uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, |
| pSurfaceFormats); |
| { surface = layer_data->Unwrap(surface); } |
| VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, |
| pSurfaceFormatCount, pSurfaceFormats); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, |
| uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.GetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, |
| pPresentModeCount, pPresentModes); |
| { surface = layer_data->Unwrap(surface); } |
| VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, |
| pPresentModeCount, pPresentModes); |
| |
| return result; |
| } |
| |
| VkResult DispatchAcquireNextImageKHR(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, |
| VkFence fence, uint32_t* pImageIndex) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.AcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex); |
| { |
| swapchain = layer_data->Unwrap(swapchain); |
| semaphore = layer_data->Unwrap(semaphore); |
| fence = layer_data->Unwrap(fence); |
| } |
| VkResult result = |
| layer_data->device_dispatch_table.AcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetDeviceGroupPresentCapabilitiesKHR(VkDevice device, |
| VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| VkResult result = |
| layer_data->device_dispatch_table.GetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetDeviceGroupSurfacePresentModesKHR(VkDevice device, VkSurfaceKHR surface, |
| VkDeviceGroupPresentModeFlagsKHR* pModes) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetDeviceGroupSurfacePresentModesKHR(device, surface, pModes); |
| { surface = layer_data->Unwrap(surface); } |
| VkResult result = layer_data->device_dispatch_table.GetDeviceGroupSurfacePresentModesKHR(device, surface, pModes); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetPhysicalDevicePresentRectanglesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, |
| VkRect2D* pRects) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.GetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, |
| pRects); |
| { surface = layer_data->Unwrap(surface); } |
| VkResult result = |
| layer_data->instance_dispatch_table.GetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects); |
| |
| return result; |
| } |
| |
| VkResult DispatchAcquireNextImage2KHR(VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.AcquireNextImage2KHR(device, pAcquireInfo, pImageIndex); |
| safe_VkAcquireNextImageInfoKHR var_local_pAcquireInfo; |
| safe_VkAcquireNextImageInfoKHR* local_pAcquireInfo = nullptr; |
| { |
| if (pAcquireInfo) { |
| local_pAcquireInfo = &var_local_pAcquireInfo; |
| local_pAcquireInfo->initialize(pAcquireInfo); |
| |
| if (pAcquireInfo->swapchain) { |
| local_pAcquireInfo->swapchain = layer_data->Unwrap(pAcquireInfo->swapchain); |
| } |
| if (pAcquireInfo->semaphore) { |
| local_pAcquireInfo->semaphore = layer_data->Unwrap(pAcquireInfo->semaphore); |
| } |
| if (pAcquireInfo->fence) { |
| local_pAcquireInfo->fence = layer_data->Unwrap(pAcquireInfo->fence); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.AcquireNextImage2KHR( |
| device, (const VkAcquireNextImageInfoKHR*)local_pAcquireInfo, pImageIndex); |
| |
| return result; |
| } |
| |
| VkResult DispatchCreateDisplayModeKHR(VkPhysicalDevice physicalDevice, VkDisplayKHR display, |
| const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, |
| VkDisplayModeKHR* pMode) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.CreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode); |
| { display = layer_data->Unwrap(display); } |
| VkResult result = |
| layer_data->instance_dispatch_table.CreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode); |
| if (VK_SUCCESS == result) { |
| *pMode = layer_data->WrapNew(*pMode); |
| } |
| return result; |
| } |
| |
| VkResult DispatchGetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, |
| VkDisplayPlaneCapabilitiesKHR* pCapabilities) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.GetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities); |
| { mode = layer_data->Unwrap(mode); } |
| VkResult result = |
| layer_data->instance_dispatch_table.GetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities); |
| |
| return result; |
| } |
| |
| VkResult DispatchCreateDisplayPlaneSurfaceKHR(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.CreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface); |
| safe_VkDisplaySurfaceCreateInfoKHR var_local_pCreateInfo; |
| safe_VkDisplaySurfaceCreateInfoKHR* local_pCreateInfo = nullptr; |
| { |
| if (pCreateInfo) { |
| local_pCreateInfo = &var_local_pCreateInfo; |
| local_pCreateInfo->initialize(pCreateInfo); |
| |
| if (pCreateInfo->displayMode) { |
| local_pCreateInfo->displayMode = layer_data->Unwrap(pCreateInfo->displayMode); |
| } |
| } |
| } |
| VkResult result = layer_data->instance_dispatch_table.CreateDisplayPlaneSurfaceKHR( |
| instance, (const VkDisplaySurfaceCreateInfoKHR*)local_pCreateInfo, pAllocator, pSurface); |
| if (VK_SUCCESS == result) { |
| *pSurface = layer_data->WrapNew(*pSurface); |
| } |
| return result; |
| } |
| #ifdef VK_USE_PLATFORM_XLIB_KHR |
| |
| VkResult DispatchCreateXlibSurfaceKHR(VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| if (!wrap_handles) return layer_data->instance_dispatch_table.CreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface); |
| |
| VkResult result = layer_data->instance_dispatch_table.CreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface); |
| if (VK_SUCCESS == result) { |
| *pSurface = layer_data->WrapNew(*pSurface); |
| } |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_XLIB_KHR |
| #ifdef VK_USE_PLATFORM_XLIB_KHR |
| |
| VkBool32 DispatchGetPhysicalDeviceXlibPresentationSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, |
| Display* dpy, VisualID visualID) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| VkBool32 result = layer_data->instance_dispatch_table.GetPhysicalDeviceXlibPresentationSupportKHR( |
| physicalDevice, queueFamilyIndex, dpy, visualID); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_XLIB_KHR |
| #ifdef VK_USE_PLATFORM_XCB_KHR |
| |
| VkResult DispatchCreateXcbSurfaceKHR(VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| if (!wrap_handles) return layer_data->instance_dispatch_table.CreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface); |
| |
| VkResult result = layer_data->instance_dispatch_table.CreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface); |
| if (VK_SUCCESS == result) { |
| *pSurface = layer_data->WrapNew(*pSurface); |
| } |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_XCB_KHR |
| #ifdef VK_USE_PLATFORM_XCB_KHR |
| |
| VkBool32 DispatchGetPhysicalDeviceXcbPresentationSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, |
| xcb_connection_t* connection, xcb_visualid_t visual_id) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| VkBool32 result = layer_data->instance_dispatch_table.GetPhysicalDeviceXcbPresentationSupportKHR( |
| physicalDevice, queueFamilyIndex, connection, visual_id); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_XCB_KHR |
| #ifdef VK_USE_PLATFORM_WAYLAND_KHR |
| |
| VkResult DispatchCreateWaylandSurfaceKHR(VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.CreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface); |
| |
| VkResult result = layer_data->instance_dispatch_table.CreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface); |
| if (VK_SUCCESS == result) { |
| *pSurface = layer_data->WrapNew(*pSurface); |
| } |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_WAYLAND_KHR |
| #ifdef VK_USE_PLATFORM_WAYLAND_KHR |
| |
| VkBool32 DispatchGetPhysicalDeviceWaylandPresentationSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, |
| struct wl_display* display) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| VkBool32 result = layer_data->instance_dispatch_table.GetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, |
| queueFamilyIndex, display); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_WAYLAND_KHR |
| #ifdef VK_USE_PLATFORM_ANDROID_KHR |
| |
| VkResult DispatchCreateAndroidSurfaceKHR(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.CreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface); |
| |
| VkResult result = layer_data->instance_dispatch_table.CreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface); |
| if (VK_SUCCESS == result) { |
| *pSurface = layer_data->WrapNew(*pSurface); |
| } |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_ANDROID_KHR |
| #ifdef VK_USE_PLATFORM_WIN32_KHR |
| |
| VkResult DispatchCreateWin32SurfaceKHR(VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.CreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface); |
| |
| VkResult result = layer_data->instance_dispatch_table.CreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface); |
| if (VK_SUCCESS == result) { |
| *pSurface = layer_data->WrapNew(*pSurface); |
| } |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_WIN32_KHR |
| #ifdef VK_USE_PLATFORM_WIN32_KHR |
| |
| VkBool32 DispatchGetPhysicalDeviceWin32PresentationSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| VkBool32 result = |
| layer_data->instance_dispatch_table.GetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_WIN32_KHR |
| |
| VkResult DispatchGetPhysicalDeviceVideoCapabilitiesKHR(VkPhysicalDevice physicalDevice, const VkVideoProfileInfoKHR* pVideoProfile, |
| VkVideoCapabilitiesKHR* pCapabilities) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| VkResult result = |
| layer_data->instance_dispatch_table.GetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetPhysicalDeviceVideoFormatPropertiesKHR(VkPhysicalDevice physicalDevice, |
| const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, |
| uint32_t* pVideoFormatPropertyCount, |
| VkVideoFormatPropertiesKHR* pVideoFormatProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceVideoFormatPropertiesKHR( |
| physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties); |
| |
| return result; |
| } |
| |
| VkResult DispatchCreateVideoSessionKHR(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession); |
| |
| VkResult result = layer_data->device_dispatch_table.CreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession); |
| if (VK_SUCCESS == result) { |
| *pVideoSession = layer_data->WrapNew(*pVideoSession); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyVideoSessionKHR(VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyVideoSessionKHR(device, videoSession, pAllocator); |
| |
| uint64_t videoSession_id = CastToUint64(videoSession); |
| auto iter = unique_id_mapping.pop(videoSession_id); |
| if (iter != unique_id_mapping.end()) { |
| videoSession = (VkVideoSessionKHR)iter->second; |
| } else { |
| videoSession = (VkVideoSessionKHR)0; |
| } |
| layer_data->device_dispatch_table.DestroyVideoSessionKHR(device, videoSession, pAllocator); |
| } |
| |
| VkResult DispatchGetVideoSessionMemoryRequirementsKHR(VkDevice device, VkVideoSessionKHR videoSession, |
| uint32_t* pMemoryRequirementsCount, |
| VkVideoSessionMemoryRequirementsKHR* pMemoryRequirements) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetVideoSessionMemoryRequirementsKHR( |
| device, videoSession, pMemoryRequirementsCount, pMemoryRequirements); |
| { videoSession = layer_data->Unwrap(videoSession); } |
| VkResult result = layer_data->device_dispatch_table.GetVideoSessionMemoryRequirementsKHR( |
| device, videoSession, pMemoryRequirementsCount, pMemoryRequirements); |
| |
| return result; |
| } |
| |
| VkResult DispatchBindVideoSessionMemoryKHR(VkDevice device, VkVideoSessionKHR videoSession, uint32_t bindSessionMemoryInfoCount, |
| const VkBindVideoSessionMemoryInfoKHR* pBindSessionMemoryInfos) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.BindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, |
| pBindSessionMemoryInfos); |
| safe_VkBindVideoSessionMemoryInfoKHR* local_pBindSessionMemoryInfos = nullptr; |
| { |
| videoSession = layer_data->Unwrap(videoSession); |
| if (pBindSessionMemoryInfos) { |
| local_pBindSessionMemoryInfos = new safe_VkBindVideoSessionMemoryInfoKHR[bindSessionMemoryInfoCount]; |
| for (uint32_t index0 = 0; index0 < bindSessionMemoryInfoCount; ++index0) { |
| local_pBindSessionMemoryInfos[index0].initialize(&pBindSessionMemoryInfos[index0]); |
| |
| if (pBindSessionMemoryInfos[index0].memory) { |
| local_pBindSessionMemoryInfos[index0].memory = layer_data->Unwrap(pBindSessionMemoryInfos[index0].memory); |
| } |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.BindVideoSessionMemoryKHR( |
| device, videoSession, bindSessionMemoryInfoCount, (const VkBindVideoSessionMemoryInfoKHR*)local_pBindSessionMemoryInfos); |
| if (local_pBindSessionMemoryInfos) { |
| delete[] local_pBindSessionMemoryInfos; |
| } |
| return result; |
| } |
| |
| VkResult DispatchCreateVideoSessionParametersKHR(VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkVideoSessionParametersKHR* pVideoSessionParameters) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, |
| pVideoSessionParameters); |
| safe_VkVideoSessionParametersCreateInfoKHR var_local_pCreateInfo; |
| safe_VkVideoSessionParametersCreateInfoKHR* local_pCreateInfo = nullptr; |
| { |
| if (pCreateInfo) { |
| local_pCreateInfo = &var_local_pCreateInfo; |
| local_pCreateInfo->initialize(pCreateInfo); |
| |
| if (pCreateInfo->videoSessionParametersTemplate) { |
| local_pCreateInfo->videoSessionParametersTemplate = layer_data->Unwrap(pCreateInfo->videoSessionParametersTemplate); |
| } |
| if (pCreateInfo->videoSession) { |
| local_pCreateInfo->videoSession = layer_data->Unwrap(pCreateInfo->videoSession); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CreateVideoSessionParametersKHR( |
| device, (const VkVideoSessionParametersCreateInfoKHR*)local_pCreateInfo, pAllocator, pVideoSessionParameters); |
| if (VK_SUCCESS == result) { |
| *pVideoSessionParameters = layer_data->WrapNew(*pVideoSessionParameters); |
| } |
| return result; |
| } |
| |
| VkResult DispatchUpdateVideoSessionParametersKHR(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, |
| const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.UpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo); |
| { videoSessionParameters = layer_data->Unwrap(videoSessionParameters); } |
| VkResult result = |
| layer_data->device_dispatch_table.UpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo); |
| |
| return result; |
| } |
| |
| void DispatchDestroyVideoSessionParametersKHR(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, |
| const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.DestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator); |
| |
| uint64_t videoSessionParameters_id = CastToUint64(videoSessionParameters); |
| auto iter = unique_id_mapping.pop(videoSessionParameters_id); |
| if (iter != unique_id_mapping.end()) { |
| videoSessionParameters = (VkVideoSessionParametersKHR)iter->second; |
| } else { |
| videoSessionParameters = (VkVideoSessionParametersKHR)0; |
| } |
| layer_data->device_dispatch_table.DestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator); |
| } |
| |
| void DispatchCmdBeginVideoCodingKHR(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdBeginVideoCodingKHR(commandBuffer, pBeginInfo); |
| safe_VkVideoBeginCodingInfoKHR var_local_pBeginInfo; |
| safe_VkVideoBeginCodingInfoKHR* local_pBeginInfo = nullptr; |
| { |
| if (pBeginInfo) { |
| local_pBeginInfo = &var_local_pBeginInfo; |
| local_pBeginInfo->initialize(pBeginInfo); |
| |
| if (pBeginInfo->videoSession) { |
| local_pBeginInfo->videoSession = layer_data->Unwrap(pBeginInfo->videoSession); |
| } |
| if (pBeginInfo->videoSessionParameters) { |
| local_pBeginInfo->videoSessionParameters = layer_data->Unwrap(pBeginInfo->videoSessionParameters); |
| } |
| if (local_pBeginInfo->pReferenceSlots) { |
| for (uint32_t index1 = 0; index1 < local_pBeginInfo->referenceSlotCount; ++index1) { |
| if (local_pBeginInfo->pReferenceSlots[index1].pPictureResource) { |
| if (pBeginInfo->pReferenceSlots[index1].pPictureResource->imageViewBinding) { |
| local_pBeginInfo->pReferenceSlots[index1].pPictureResource->imageViewBinding = |
| layer_data->Unwrap(pBeginInfo->pReferenceSlots[index1].pPictureResource->imageViewBinding); |
| } |
| } |
| } |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdBeginVideoCodingKHR(commandBuffer, (const VkVideoBeginCodingInfoKHR*)local_pBeginInfo); |
| } |
| |
| void DispatchCmdEndVideoCodingKHR(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo); |
| } |
| |
| void DispatchCmdControlVideoCodingKHR(VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo); |
| } |
| |
| void DispatchCmdDecodeVideoKHR(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pDecodeInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdDecodeVideoKHR(commandBuffer, pDecodeInfo); |
| safe_VkVideoDecodeInfoKHR var_local_pDecodeInfo; |
| safe_VkVideoDecodeInfoKHR* local_pDecodeInfo = nullptr; |
| { |
| if (pDecodeInfo) { |
| local_pDecodeInfo = &var_local_pDecodeInfo; |
| local_pDecodeInfo->initialize(pDecodeInfo); |
| |
| if (pDecodeInfo->srcBuffer) { |
| local_pDecodeInfo->srcBuffer = layer_data->Unwrap(pDecodeInfo->srcBuffer); |
| } |
| if (pDecodeInfo->dstPictureResource.imageViewBinding) { |
| local_pDecodeInfo->dstPictureResource.imageViewBinding = |
| layer_data->Unwrap(pDecodeInfo->dstPictureResource.imageViewBinding); |
| } |
| if (local_pDecodeInfo->pSetupReferenceSlot) { |
| if (local_pDecodeInfo->pSetupReferenceSlot->pPictureResource) { |
| if (pDecodeInfo->pSetupReferenceSlot->pPictureResource->imageViewBinding) { |
| local_pDecodeInfo->pSetupReferenceSlot->pPictureResource->imageViewBinding = |
| layer_data->Unwrap(pDecodeInfo->pSetupReferenceSlot->pPictureResource->imageViewBinding); |
| } |
| } |
| } |
| if (local_pDecodeInfo->pReferenceSlots) { |
| for (uint32_t index1 = 0; index1 < local_pDecodeInfo->referenceSlotCount; ++index1) { |
| if (local_pDecodeInfo->pReferenceSlots[index1].pPictureResource) { |
| if (pDecodeInfo->pReferenceSlots[index1].pPictureResource->imageViewBinding) { |
| local_pDecodeInfo->pReferenceSlots[index1].pPictureResource->imageViewBinding = |
| layer_data->Unwrap(pDecodeInfo->pReferenceSlots[index1].pPictureResource->imageViewBinding); |
| } |
| } |
| } |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdDecodeVideoKHR(commandBuffer, (const VkVideoDecodeInfoKHR*)local_pDecodeInfo); |
| } |
| |
| void DispatchCmdBeginRenderingKHR(VkCommandBuffer commandBuffer, const VkRenderingInfo* pRenderingInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdBeginRenderingKHR(commandBuffer, pRenderingInfo); |
| safe_VkRenderingInfo var_local_pRenderingInfo; |
| safe_VkRenderingInfo* local_pRenderingInfo = nullptr; |
| { |
| if (pRenderingInfo) { |
| local_pRenderingInfo = &var_local_pRenderingInfo; |
| local_pRenderingInfo->initialize(pRenderingInfo); |
| if (local_pRenderingInfo->pColorAttachments) { |
| for (uint32_t index1 = 0; index1 < local_pRenderingInfo->colorAttachmentCount; ++index1) { |
| if (pRenderingInfo->pColorAttachments[index1].imageView) { |
| local_pRenderingInfo->pColorAttachments[index1].imageView = |
| layer_data->Unwrap(pRenderingInfo->pColorAttachments[index1].imageView); |
| } |
| if (pRenderingInfo->pColorAttachments[index1].resolveImageView) { |
| local_pRenderingInfo->pColorAttachments[index1].resolveImageView = |
| layer_data->Unwrap(pRenderingInfo->pColorAttachments[index1].resolveImageView); |
| } |
| } |
| } |
| if (local_pRenderingInfo->pDepthAttachment) { |
| if (pRenderingInfo->pDepthAttachment->imageView) { |
| local_pRenderingInfo->pDepthAttachment->imageView = |
| layer_data->Unwrap(pRenderingInfo->pDepthAttachment->imageView); |
| } |
| if (pRenderingInfo->pDepthAttachment->resolveImageView) { |
| local_pRenderingInfo->pDepthAttachment->resolveImageView = |
| layer_data->Unwrap(pRenderingInfo->pDepthAttachment->resolveImageView); |
| } |
| } |
| if (local_pRenderingInfo->pStencilAttachment) { |
| if (pRenderingInfo->pStencilAttachment->imageView) { |
| local_pRenderingInfo->pStencilAttachment->imageView = |
| layer_data->Unwrap(pRenderingInfo->pStencilAttachment->imageView); |
| } |
| if (pRenderingInfo->pStencilAttachment->resolveImageView) { |
| local_pRenderingInfo->pStencilAttachment->resolveImageView = |
| layer_data->Unwrap(pRenderingInfo->pStencilAttachment->resolveImageView); |
| } |
| } |
| WrapPnextChainHandles(layer_data, local_pRenderingInfo->pNext); |
| } |
| } |
| layer_data->device_dispatch_table.CmdBeginRenderingKHR(commandBuffer, (const VkRenderingInfo*)local_pRenderingInfo); |
| } |
| |
| void DispatchCmdEndRenderingKHR(VkCommandBuffer commandBuffer) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdEndRenderingKHR(commandBuffer); |
| } |
| |
| void DispatchGetPhysicalDeviceFeatures2KHR(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures); |
| } |
| |
| void DispatchGetPhysicalDeviceProperties2KHR(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceProperties2KHR(physicalDevice, pProperties); |
| } |
| |
| void DispatchGetPhysicalDeviceFormatProperties2KHR(VkPhysicalDevice physicalDevice, VkFormat format, |
| VkFormatProperties2* pFormatProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties); |
| } |
| |
| VkResult DispatchGetPhysicalDeviceImageFormatProperties2KHR(VkPhysicalDevice physicalDevice, |
| const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, |
| VkImageFormatProperties2* pImageFormatProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceImageFormatProperties2KHR( |
| physicalDevice, pImageFormatInfo, pImageFormatProperties); |
| |
| return result; |
| } |
| |
| void DispatchGetPhysicalDeviceQueueFamilyProperties2KHR(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, |
| VkQueueFamilyProperties2* pQueueFamilyProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, |
| pQueueFamilyProperties); |
| } |
| |
| void DispatchGetPhysicalDeviceMemoryProperties2KHR(VkPhysicalDevice physicalDevice, |
| VkPhysicalDeviceMemoryProperties2* pMemoryProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties); |
| } |
| |
| void DispatchGetPhysicalDeviceSparseImageFormatProperties2KHR(VkPhysicalDevice physicalDevice, |
| const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, |
| uint32_t* pPropertyCount, |
| VkSparseImageFormatProperties2* pProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, |
| pPropertyCount, pProperties); |
| } |
| |
| void DispatchGetDeviceGroupPeerMemoryFeaturesKHR(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, |
| uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| layer_data->device_dispatch_table.GetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, |
| pPeerMemoryFeatures); |
| } |
| |
| void DispatchCmdSetDeviceMaskKHR(VkCommandBuffer commandBuffer, uint32_t deviceMask) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetDeviceMaskKHR(commandBuffer, deviceMask); |
| } |
| |
| void DispatchCmdDispatchBaseKHR(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, |
| uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, |
| groupCountY, groupCountZ); |
| } |
| |
| void DispatchTrimCommandPoolKHR(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.TrimCommandPoolKHR(device, commandPool, flags); |
| { commandPool = layer_data->Unwrap(commandPool); } |
| layer_data->device_dispatch_table.TrimCommandPoolKHR(device, commandPool, flags); |
| } |
| |
| VkResult DispatchEnumeratePhysicalDeviceGroupsKHR(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, |
| VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| |
| VkResult result = layer_data->instance_dispatch_table.EnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, |
| pPhysicalDeviceGroupProperties); |
| |
| return result; |
| } |
| |
| void DispatchGetPhysicalDeviceExternalBufferPropertiesKHR(VkPhysicalDevice physicalDevice, |
| const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, |
| VkExternalBufferProperties* pExternalBufferProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, |
| pExternalBufferProperties); |
| } |
| #ifdef VK_USE_PLATFORM_WIN32_KHR |
| |
| VkResult DispatchGetMemoryWin32HandleKHR(VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, |
| HANDLE* pHandle) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle); |
| safe_VkMemoryGetWin32HandleInfoKHR var_local_pGetWin32HandleInfo; |
| safe_VkMemoryGetWin32HandleInfoKHR* local_pGetWin32HandleInfo = nullptr; |
| { |
| if (pGetWin32HandleInfo) { |
| local_pGetWin32HandleInfo = &var_local_pGetWin32HandleInfo; |
| local_pGetWin32HandleInfo->initialize(pGetWin32HandleInfo); |
| |
| if (pGetWin32HandleInfo->memory) { |
| local_pGetWin32HandleInfo->memory = layer_data->Unwrap(pGetWin32HandleInfo->memory); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.GetMemoryWin32HandleKHR( |
| device, (const VkMemoryGetWin32HandleInfoKHR*)local_pGetWin32HandleInfo, pHandle); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_WIN32_KHR |
| #ifdef VK_USE_PLATFORM_WIN32_KHR |
| |
| VkResult DispatchGetMemoryWin32HandlePropertiesKHR(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, |
| VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| VkResult result = layer_data->device_dispatch_table.GetMemoryWin32HandlePropertiesKHR(device, handleType, handle, |
| pMemoryWin32HandleProperties); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_WIN32_KHR |
| |
| VkResult DispatchGetMemoryFdKHR(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetMemoryFdKHR(device, pGetFdInfo, pFd); |
| safe_VkMemoryGetFdInfoKHR var_local_pGetFdInfo; |
| safe_VkMemoryGetFdInfoKHR* local_pGetFdInfo = nullptr; |
| { |
| if (pGetFdInfo) { |
| local_pGetFdInfo = &var_local_pGetFdInfo; |
| local_pGetFdInfo->initialize(pGetFdInfo); |
| |
| if (pGetFdInfo->memory) { |
| local_pGetFdInfo->memory = layer_data->Unwrap(pGetFdInfo->memory); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.GetMemoryFdKHR(device, (const VkMemoryGetFdInfoKHR*)local_pGetFdInfo, pFd); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetMemoryFdPropertiesKHR(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, |
| VkMemoryFdPropertiesKHR* pMemoryFdProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| VkResult result = layer_data->device_dispatch_table.GetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties); |
| |
| return result; |
| } |
| |
| void DispatchGetPhysicalDeviceExternalSemaphorePropertiesKHR(VkPhysicalDevice physicalDevice, |
| const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, |
| VkExternalSemaphoreProperties* pExternalSemaphoreProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, |
| pExternalSemaphoreProperties); |
| } |
| #ifdef VK_USE_PLATFORM_WIN32_KHR |
| |
| VkResult DispatchImportSemaphoreWin32HandleKHR(VkDevice device, |
| const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.ImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo); |
| safe_VkImportSemaphoreWin32HandleInfoKHR var_local_pImportSemaphoreWin32HandleInfo; |
| safe_VkImportSemaphoreWin32HandleInfoKHR* local_pImportSemaphoreWin32HandleInfo = nullptr; |
| { |
| if (pImportSemaphoreWin32HandleInfo) { |
| local_pImportSemaphoreWin32HandleInfo = &var_local_pImportSemaphoreWin32HandleInfo; |
| local_pImportSemaphoreWin32HandleInfo->initialize(pImportSemaphoreWin32HandleInfo); |
| |
| if (pImportSemaphoreWin32HandleInfo->semaphore) { |
| local_pImportSemaphoreWin32HandleInfo->semaphore = layer_data->Unwrap(pImportSemaphoreWin32HandleInfo->semaphore); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.ImportSemaphoreWin32HandleKHR( |
| device, (const VkImportSemaphoreWin32HandleInfoKHR*)local_pImportSemaphoreWin32HandleInfo); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_WIN32_KHR |
| #ifdef VK_USE_PLATFORM_WIN32_KHR |
| |
| VkResult DispatchGetSemaphoreWin32HandleKHR(VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, |
| HANDLE* pHandle) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle); |
| safe_VkSemaphoreGetWin32HandleInfoKHR var_local_pGetWin32HandleInfo; |
| safe_VkSemaphoreGetWin32HandleInfoKHR* local_pGetWin32HandleInfo = nullptr; |
| { |
| if (pGetWin32HandleInfo) { |
| local_pGetWin32HandleInfo = &var_local_pGetWin32HandleInfo; |
| local_pGetWin32HandleInfo->initialize(pGetWin32HandleInfo); |
| |
| if (pGetWin32HandleInfo->semaphore) { |
| local_pGetWin32HandleInfo->semaphore = layer_data->Unwrap(pGetWin32HandleInfo->semaphore); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.GetSemaphoreWin32HandleKHR( |
| device, (const VkSemaphoreGetWin32HandleInfoKHR*)local_pGetWin32HandleInfo, pHandle); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_WIN32_KHR |
| |
| VkResult DispatchImportSemaphoreFdKHR(VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.ImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo); |
| safe_VkImportSemaphoreFdInfoKHR var_local_pImportSemaphoreFdInfo; |
| safe_VkImportSemaphoreFdInfoKHR* local_pImportSemaphoreFdInfo = nullptr; |
| { |
| if (pImportSemaphoreFdInfo) { |
| local_pImportSemaphoreFdInfo = &var_local_pImportSemaphoreFdInfo; |
| local_pImportSemaphoreFdInfo->initialize(pImportSemaphoreFdInfo); |
| |
| if (pImportSemaphoreFdInfo->semaphore) { |
| local_pImportSemaphoreFdInfo->semaphore = layer_data->Unwrap(pImportSemaphoreFdInfo->semaphore); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.ImportSemaphoreFdKHR( |
| device, (const VkImportSemaphoreFdInfoKHR*)local_pImportSemaphoreFdInfo); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetSemaphoreFdKHR(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetSemaphoreFdKHR(device, pGetFdInfo, pFd); |
| safe_VkSemaphoreGetFdInfoKHR var_local_pGetFdInfo; |
| safe_VkSemaphoreGetFdInfoKHR* local_pGetFdInfo = nullptr; |
| { |
| if (pGetFdInfo) { |
| local_pGetFdInfo = &var_local_pGetFdInfo; |
| local_pGetFdInfo->initialize(pGetFdInfo); |
| |
| if (pGetFdInfo->semaphore) { |
| local_pGetFdInfo->semaphore = layer_data->Unwrap(pGetFdInfo->semaphore); |
| } |
| } |
| } |
| VkResult result = |
| layer_data->device_dispatch_table.GetSemaphoreFdKHR(device, (const VkSemaphoreGetFdInfoKHR*)local_pGetFdInfo, pFd); |
| |
| return result; |
| } |
| |
| void DispatchCmdPushDescriptorSetKHR(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, |
| uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, |
| descriptorWriteCount, pDescriptorWrites); |
| safe_VkWriteDescriptorSet* local_pDescriptorWrites = nullptr; |
| { |
| layout = layer_data->Unwrap(layout); |
| if (pDescriptorWrites) { |
| local_pDescriptorWrites = new safe_VkWriteDescriptorSet[descriptorWriteCount]; |
| for (uint32_t index0 = 0; index0 < descriptorWriteCount; ++index0) { |
| local_pDescriptorWrites[index0].initialize(&pDescriptorWrites[index0]); |
| WrapPnextChainHandles(layer_data, local_pDescriptorWrites[index0].pNext); |
| |
| if (pDescriptorWrites[index0].dstSet) { |
| local_pDescriptorWrites[index0].dstSet = layer_data->Unwrap(pDescriptorWrites[index0].dstSet); |
| } |
| if (local_pDescriptorWrites[index0].pImageInfo) { |
| for (uint32_t index1 = 0; index1 < local_pDescriptorWrites[index0].descriptorCount; ++index1) { |
| if (pDescriptorWrites[index0].pImageInfo[index1].sampler) { |
| local_pDescriptorWrites[index0].pImageInfo[index1].sampler = |
| layer_data->Unwrap(pDescriptorWrites[index0].pImageInfo[index1].sampler); |
| } |
| if (pDescriptorWrites[index0].pImageInfo[index1].imageView) { |
| local_pDescriptorWrites[index0].pImageInfo[index1].imageView = |
| layer_data->Unwrap(pDescriptorWrites[index0].pImageInfo[index1].imageView); |
| } |
| } |
| } |
| if (local_pDescriptorWrites[index0].pBufferInfo) { |
| for (uint32_t index1 = 0; index1 < local_pDescriptorWrites[index0].descriptorCount; ++index1) { |
| if (pDescriptorWrites[index0].pBufferInfo[index1].buffer) { |
| local_pDescriptorWrites[index0].pBufferInfo[index1].buffer = |
| layer_data->Unwrap(pDescriptorWrites[index0].pBufferInfo[index1].buffer); |
| } |
| } |
| } |
| if (local_pDescriptorWrites[index0].pTexelBufferView) { |
| for (uint32_t index1 = 0; index1 < local_pDescriptorWrites[index0].descriptorCount; ++index1) { |
| local_pDescriptorWrites[index0].pTexelBufferView[index1] = |
| layer_data->Unwrap(local_pDescriptorWrites[index0].pTexelBufferView[index1]); |
| } |
| } |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, |
| (const VkWriteDescriptorSet*)local_pDescriptorWrites); |
| if (local_pDescriptorWrites) { |
| delete[] local_pDescriptorWrites; |
| } |
| } |
| |
| void DispatchCmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, |
| const VkSubpassBeginInfo* pSubpassBeginInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo); |
| safe_VkRenderPassBeginInfo var_local_pRenderPassBegin; |
| safe_VkRenderPassBeginInfo* local_pRenderPassBegin = nullptr; |
| { |
| if (pRenderPassBegin) { |
| local_pRenderPassBegin = &var_local_pRenderPassBegin; |
| local_pRenderPassBegin->initialize(pRenderPassBegin); |
| |
| if (pRenderPassBegin->renderPass) { |
| local_pRenderPassBegin->renderPass = layer_data->Unwrap(pRenderPassBegin->renderPass); |
| } |
| if (pRenderPassBegin->framebuffer) { |
| local_pRenderPassBegin->framebuffer = layer_data->Unwrap(pRenderPassBegin->framebuffer); |
| } |
| WrapPnextChainHandles(layer_data, local_pRenderPassBegin->pNext); |
| } |
| } |
| layer_data->device_dispatch_table.CmdBeginRenderPass2KHR(commandBuffer, (const VkRenderPassBeginInfo*)local_pRenderPassBegin, |
| pSubpassBeginInfo); |
| } |
| |
| void DispatchCmdNextSubpass2KHR(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, |
| const VkSubpassEndInfo* pSubpassEndInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo); |
| } |
| |
| void DispatchCmdEndRenderPass2KHR(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo); |
| } |
| |
| VkResult DispatchGetSwapchainStatusKHR(VkDevice device, VkSwapchainKHR swapchain) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetSwapchainStatusKHR(device, swapchain); |
| { swapchain = layer_data->Unwrap(swapchain); } |
| VkResult result = layer_data->device_dispatch_table.GetSwapchainStatusKHR(device, swapchain); |
| |
| return result; |
| } |
| |
| void DispatchGetPhysicalDeviceExternalFencePropertiesKHR(VkPhysicalDevice physicalDevice, |
| const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, |
| VkExternalFenceProperties* pExternalFenceProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, |
| pExternalFenceProperties); |
| } |
| #ifdef VK_USE_PLATFORM_WIN32_KHR |
| |
| VkResult DispatchImportFenceWin32HandleKHR(VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.ImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo); |
| safe_VkImportFenceWin32HandleInfoKHR var_local_pImportFenceWin32HandleInfo; |
| safe_VkImportFenceWin32HandleInfoKHR* local_pImportFenceWin32HandleInfo = nullptr; |
| { |
| if (pImportFenceWin32HandleInfo) { |
| local_pImportFenceWin32HandleInfo = &var_local_pImportFenceWin32HandleInfo; |
| local_pImportFenceWin32HandleInfo->initialize(pImportFenceWin32HandleInfo); |
| |
| if (pImportFenceWin32HandleInfo->fence) { |
| local_pImportFenceWin32HandleInfo->fence = layer_data->Unwrap(pImportFenceWin32HandleInfo->fence); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.ImportFenceWin32HandleKHR( |
| device, (const VkImportFenceWin32HandleInfoKHR*)local_pImportFenceWin32HandleInfo); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_WIN32_KHR |
| #ifdef VK_USE_PLATFORM_WIN32_KHR |
| |
| VkResult DispatchGetFenceWin32HandleKHR(VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle); |
| safe_VkFenceGetWin32HandleInfoKHR var_local_pGetWin32HandleInfo; |
| safe_VkFenceGetWin32HandleInfoKHR* local_pGetWin32HandleInfo = nullptr; |
| { |
| if (pGetWin32HandleInfo) { |
| local_pGetWin32HandleInfo = &var_local_pGetWin32HandleInfo; |
| local_pGetWin32HandleInfo->initialize(pGetWin32HandleInfo); |
| |
| if (pGetWin32HandleInfo->fence) { |
| local_pGetWin32HandleInfo->fence = layer_data->Unwrap(pGetWin32HandleInfo->fence); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.GetFenceWin32HandleKHR( |
| device, (const VkFenceGetWin32HandleInfoKHR*)local_pGetWin32HandleInfo, pHandle); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_WIN32_KHR |
| |
| VkResult DispatchImportFenceFdKHR(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.ImportFenceFdKHR(device, pImportFenceFdInfo); |
| safe_VkImportFenceFdInfoKHR var_local_pImportFenceFdInfo; |
| safe_VkImportFenceFdInfoKHR* local_pImportFenceFdInfo = nullptr; |
| { |
| if (pImportFenceFdInfo) { |
| local_pImportFenceFdInfo = &var_local_pImportFenceFdInfo; |
| local_pImportFenceFdInfo->initialize(pImportFenceFdInfo); |
| |
| if (pImportFenceFdInfo->fence) { |
| local_pImportFenceFdInfo->fence = layer_data->Unwrap(pImportFenceFdInfo->fence); |
| } |
| } |
| } |
| VkResult result = |
| layer_data->device_dispatch_table.ImportFenceFdKHR(device, (const VkImportFenceFdInfoKHR*)local_pImportFenceFdInfo); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetFenceFdKHR(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetFenceFdKHR(device, pGetFdInfo, pFd); |
| safe_VkFenceGetFdInfoKHR var_local_pGetFdInfo; |
| safe_VkFenceGetFdInfoKHR* local_pGetFdInfo = nullptr; |
| { |
| if (pGetFdInfo) { |
| local_pGetFdInfo = &var_local_pGetFdInfo; |
| local_pGetFdInfo->initialize(pGetFdInfo); |
| |
| if (pGetFdInfo->fence) { |
| local_pGetFdInfo->fence = layer_data->Unwrap(pGetFdInfo->fence); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.GetFenceFdKHR(device, (const VkFenceGetFdInfoKHR*)local_pGetFdInfo, pFd); |
| |
| return result; |
| } |
| |
| VkResult DispatchEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( |
| VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, uint32_t* pCounterCount, VkPerformanceCounterKHR* pCounters, |
| VkPerformanceCounterDescriptionKHR* pCounterDescriptions) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| VkResult result = layer_data->instance_dispatch_table.EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( |
| physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions); |
| |
| return result; |
| } |
| |
| void DispatchGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( |
| VkPhysicalDevice physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, uint32_t* pNumPasses) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( |
| physicalDevice, pPerformanceQueryCreateInfo, pNumPasses); |
| } |
| |
| VkResult DispatchAcquireProfilingLockKHR(VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| VkResult result = layer_data->device_dispatch_table.AcquireProfilingLockKHR(device, pInfo); |
| |
| return result; |
| } |
| |
| void DispatchReleaseProfilingLockKHR(VkDevice device) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| layer_data->device_dispatch_table.ReleaseProfilingLockKHR(device); |
| } |
| |
| VkResult DispatchGetPhysicalDeviceSurfaceCapabilities2KHR(VkPhysicalDevice physicalDevice, |
| const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, |
| VkSurfaceCapabilities2KHR* pSurfaceCapabilities) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, |
| pSurfaceCapabilities); |
| safe_VkPhysicalDeviceSurfaceInfo2KHR var_local_pSurfaceInfo; |
| safe_VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo = nullptr; |
| { |
| if (pSurfaceInfo) { |
| local_pSurfaceInfo = &var_local_pSurfaceInfo; |
| local_pSurfaceInfo->initialize(pSurfaceInfo); |
| |
| if (pSurfaceInfo->surface) { |
| local_pSurfaceInfo->surface = layer_data->Unwrap(pSurfaceInfo->surface); |
| } |
| } |
| } |
| VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceCapabilities2KHR( |
| physicalDevice, (const VkPhysicalDeviceSurfaceInfo2KHR*)local_pSurfaceInfo, pSurfaceCapabilities); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetPhysicalDeviceSurfaceFormats2KHR(VkPhysicalDevice physicalDevice, |
| const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, |
| uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, |
| pSurfaceFormatCount, pSurfaceFormats); |
| safe_VkPhysicalDeviceSurfaceInfo2KHR var_local_pSurfaceInfo; |
| safe_VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo = nullptr; |
| { |
| if (pSurfaceInfo) { |
| local_pSurfaceInfo = &var_local_pSurfaceInfo; |
| local_pSurfaceInfo->initialize(pSurfaceInfo); |
| |
| if (pSurfaceInfo->surface) { |
| local_pSurfaceInfo->surface = layer_data->Unwrap(pSurfaceInfo->surface); |
| } |
| } |
| } |
| VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceFormats2KHR( |
| physicalDevice, (const VkPhysicalDeviceSurfaceInfo2KHR*)local_pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetDisplayPlaneCapabilities2KHR(VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, |
| VkDisplayPlaneCapabilities2KHR* pCapabilities) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.GetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, |
| pCapabilities); |
| safe_VkDisplayPlaneInfo2KHR var_local_pDisplayPlaneInfo; |
| safe_VkDisplayPlaneInfo2KHR* local_pDisplayPlaneInfo = nullptr; |
| { |
| if (pDisplayPlaneInfo) { |
| local_pDisplayPlaneInfo = &var_local_pDisplayPlaneInfo; |
| local_pDisplayPlaneInfo->initialize(pDisplayPlaneInfo); |
| |
| if (pDisplayPlaneInfo->mode) { |
| local_pDisplayPlaneInfo->mode = layer_data->Unwrap(pDisplayPlaneInfo->mode); |
| } |
| } |
| } |
| VkResult result = layer_data->instance_dispatch_table.GetDisplayPlaneCapabilities2KHR( |
| physicalDevice, (const VkDisplayPlaneInfo2KHR*)local_pDisplayPlaneInfo, pCapabilities); |
| |
| return result; |
| } |
| |
| void DispatchGetImageMemoryRequirements2KHR(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, |
| VkMemoryRequirements2* pMemoryRequirements) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements); |
| safe_VkImageMemoryRequirementsInfo2 var_local_pInfo; |
| safe_VkImageMemoryRequirementsInfo2* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->image) { |
| local_pInfo->image = layer_data->Unwrap(pInfo->image); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.GetImageMemoryRequirements2KHR(device, (const VkImageMemoryRequirementsInfo2*)local_pInfo, |
| pMemoryRequirements); |
| } |
| |
| void DispatchGetBufferMemoryRequirements2KHR(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, |
| VkMemoryRequirements2* pMemoryRequirements) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements); |
| safe_VkBufferMemoryRequirementsInfo2 var_local_pInfo; |
| safe_VkBufferMemoryRequirementsInfo2* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->buffer) { |
| local_pInfo->buffer = layer_data->Unwrap(pInfo->buffer); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.GetBufferMemoryRequirements2KHR(device, (const VkBufferMemoryRequirementsInfo2*)local_pInfo, |
| pMemoryRequirements); |
| } |
| |
| void DispatchGetImageSparseMemoryRequirements2KHR(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, |
| uint32_t* pSparseMemoryRequirementCount, |
| VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, |
| pSparseMemoryRequirements); |
| safe_VkImageSparseMemoryRequirementsInfo2 var_local_pInfo; |
| safe_VkImageSparseMemoryRequirementsInfo2* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->image) { |
| local_pInfo->image = layer_data->Unwrap(pInfo->image); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.GetImageSparseMemoryRequirements2KHR( |
| device, (const VkImageSparseMemoryRequirementsInfo2*)local_pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements); |
| } |
| |
| VkResult DispatchCreateSamplerYcbcrConversionKHR(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkSamplerYcbcrConversion* pYcbcrConversion) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion); |
| |
| VkResult result = |
| layer_data->device_dispatch_table.CreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion); |
| if (VK_SUCCESS == result) { |
| *pYcbcrConversion = layer_data->WrapNew(*pYcbcrConversion); |
| } |
| return result; |
| } |
| |
| void DispatchDestroySamplerYcbcrConversionKHR(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, |
| const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.DestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator); |
| |
| uint64_t ycbcrConversion_id = CastToUint64(ycbcrConversion); |
| auto iter = unique_id_mapping.pop(ycbcrConversion_id); |
| if (iter != unique_id_mapping.end()) { |
| ycbcrConversion = (VkSamplerYcbcrConversion)iter->second; |
| } else { |
| ycbcrConversion = (VkSamplerYcbcrConversion)0; |
| } |
| layer_data->device_dispatch_table.DestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator); |
| } |
| |
| VkResult DispatchBindBufferMemory2KHR(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.BindBufferMemory2KHR(device, bindInfoCount, pBindInfos); |
| safe_VkBindBufferMemoryInfo* local_pBindInfos = nullptr; |
| { |
| if (pBindInfos) { |
| local_pBindInfos = new safe_VkBindBufferMemoryInfo[bindInfoCount]; |
| for (uint32_t index0 = 0; index0 < bindInfoCount; ++index0) { |
| local_pBindInfos[index0].initialize(&pBindInfos[index0]); |
| |
| if (pBindInfos[index0].buffer) { |
| local_pBindInfos[index0].buffer = layer_data->Unwrap(pBindInfos[index0].buffer); |
| } |
| if (pBindInfos[index0].memory) { |
| local_pBindInfos[index0].memory = layer_data->Unwrap(pBindInfos[index0].memory); |
| } |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.BindBufferMemory2KHR(device, bindInfoCount, |
| (const VkBindBufferMemoryInfo*)local_pBindInfos); |
| if (local_pBindInfos) { |
| delete[] local_pBindInfos; |
| } |
| return result; |
| } |
| |
| VkResult DispatchBindImageMemory2KHR(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.BindImageMemory2KHR(device, bindInfoCount, pBindInfos); |
| safe_VkBindImageMemoryInfo* local_pBindInfos = nullptr; |
| { |
| if (pBindInfos) { |
| local_pBindInfos = new safe_VkBindImageMemoryInfo[bindInfoCount]; |
| for (uint32_t index0 = 0; index0 < bindInfoCount; ++index0) { |
| local_pBindInfos[index0].initialize(&pBindInfos[index0]); |
| WrapPnextChainHandles(layer_data, local_pBindInfos[index0].pNext); |
| |
| if (pBindInfos[index0].image) { |
| local_pBindInfos[index0].image = layer_data->Unwrap(pBindInfos[index0].image); |
| } |
| if (pBindInfos[index0].memory) { |
| local_pBindInfos[index0].memory = layer_data->Unwrap(pBindInfos[index0].memory); |
| } |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.BindImageMemory2KHR(device, bindInfoCount, |
| (const VkBindImageMemoryInfo*)local_pBindInfos); |
| if (local_pBindInfos) { |
| delete[] local_pBindInfos; |
| } |
| return result; |
| } |
| |
| void DispatchGetDescriptorSetLayoutSupportKHR(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, |
| VkDescriptorSetLayoutSupport* pSupport) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport); |
| safe_VkDescriptorSetLayoutCreateInfo var_local_pCreateInfo; |
| safe_VkDescriptorSetLayoutCreateInfo* local_pCreateInfo = nullptr; |
| { |
| if (pCreateInfo) { |
| local_pCreateInfo = &var_local_pCreateInfo; |
| local_pCreateInfo->initialize(pCreateInfo); |
| if (local_pCreateInfo->pBindings) { |
| for (uint32_t index1 = 0; index1 < local_pCreateInfo->bindingCount; ++index1) { |
| if (local_pCreateInfo->pBindings[index1].pImmutableSamplers) { |
| for (uint32_t index2 = 0; index2 < local_pCreateInfo->pBindings[index1].descriptorCount; ++index2) { |
| local_pCreateInfo->pBindings[index1].pImmutableSamplers[index2] = |
| layer_data->Unwrap(local_pCreateInfo->pBindings[index1].pImmutableSamplers[index2]); |
| } |
| } |
| } |
| } |
| } |
| } |
| layer_data->device_dispatch_table.GetDescriptorSetLayoutSupportKHR( |
| device, (const VkDescriptorSetLayoutCreateInfo*)local_pCreateInfo, pSupport); |
| } |
| |
| void DispatchCmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, |
| VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, |
| countBufferOffset, maxDrawCount, stride); |
| { |
| buffer = layer_data->Unwrap(buffer); |
| countBuffer = layer_data->Unwrap(countBuffer); |
| } |
| layer_data->device_dispatch_table.CmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, |
| maxDrawCount, stride); |
| } |
| |
| void DispatchCmdDrawIndexedIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, |
| VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, |
| uint32_t stride) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, |
| countBufferOffset, maxDrawCount, stride); |
| { |
| buffer = layer_data->Unwrap(buffer); |
| countBuffer = layer_data->Unwrap(countBuffer); |
| } |
| layer_data->device_dispatch_table.CmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, |
| maxDrawCount, stride); |
| } |
| |
| VkResult DispatchGetSemaphoreCounterValueKHR(VkDevice device, VkSemaphore semaphore, uint64_t* pValue) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetSemaphoreCounterValueKHR(device, semaphore, pValue); |
| { semaphore = layer_data->Unwrap(semaphore); } |
| VkResult result = layer_data->device_dispatch_table.GetSemaphoreCounterValueKHR(device, semaphore, pValue); |
| |
| return result; |
| } |
| |
| VkResult DispatchWaitSemaphoresKHR(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.WaitSemaphoresKHR(device, pWaitInfo, timeout); |
| safe_VkSemaphoreWaitInfo var_local_pWaitInfo; |
| safe_VkSemaphoreWaitInfo* local_pWaitInfo = nullptr; |
| { |
| if (pWaitInfo) { |
| local_pWaitInfo = &var_local_pWaitInfo; |
| local_pWaitInfo->initialize(pWaitInfo); |
| if (local_pWaitInfo->pSemaphores) { |
| for (uint32_t index1 = 0; index1 < local_pWaitInfo->semaphoreCount; ++index1) { |
| local_pWaitInfo->pSemaphores[index1] = layer_data->Unwrap(local_pWaitInfo->pSemaphores[index1]); |
| } |
| } |
| } |
| } |
| VkResult result = |
| layer_data->device_dispatch_table.WaitSemaphoresKHR(device, (const VkSemaphoreWaitInfo*)local_pWaitInfo, timeout); |
| |
| return result; |
| } |
| |
| VkResult DispatchSignalSemaphoreKHR(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.SignalSemaphoreKHR(device, pSignalInfo); |
| safe_VkSemaphoreSignalInfo var_local_pSignalInfo; |
| safe_VkSemaphoreSignalInfo* local_pSignalInfo = nullptr; |
| { |
| if (pSignalInfo) { |
| local_pSignalInfo = &var_local_pSignalInfo; |
| local_pSignalInfo->initialize(pSignalInfo); |
| |
| if (pSignalInfo->semaphore) { |
| local_pSignalInfo->semaphore = layer_data->Unwrap(pSignalInfo->semaphore); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.SignalSemaphoreKHR(device, (const VkSemaphoreSignalInfo*)local_pSignalInfo); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetPhysicalDeviceFragmentShadingRatesKHR(VkPhysicalDevice physicalDevice, uint32_t* pFragmentShadingRateCount, |
| VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceFragmentShadingRatesKHR( |
| physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates); |
| |
| return result; |
| } |
| |
| void DispatchCmdSetFragmentShadingRateKHR(VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize, |
| const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps); |
| } |
| |
| VkResult DispatchWaitForPresentKHR(VkDevice device, VkSwapchainKHR swapchain, uint64_t presentId, uint64_t timeout) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.WaitForPresentKHR(device, swapchain, presentId, timeout); |
| { swapchain = layer_data->Unwrap(swapchain); } |
| VkResult result = layer_data->device_dispatch_table.WaitForPresentKHR(device, swapchain, presentId, timeout); |
| |
| return result; |
| } |
| |
| VkDeviceAddress DispatchGetBufferDeviceAddressKHR(VkDevice device, const VkBufferDeviceAddressInfo* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetBufferDeviceAddressKHR(device, pInfo); |
| safe_VkBufferDeviceAddressInfo var_local_pInfo; |
| safe_VkBufferDeviceAddressInfo* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->buffer) { |
| local_pInfo->buffer = layer_data->Unwrap(pInfo->buffer); |
| } |
| } |
| } |
| VkDeviceAddress result = |
| layer_data->device_dispatch_table.GetBufferDeviceAddressKHR(device, (const VkBufferDeviceAddressInfo*)local_pInfo); |
| |
| return result; |
| } |
| |
| uint64_t DispatchGetBufferOpaqueCaptureAddressKHR(VkDevice device, const VkBufferDeviceAddressInfo* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetBufferOpaqueCaptureAddressKHR(device, pInfo); |
| safe_VkBufferDeviceAddressInfo var_local_pInfo; |
| safe_VkBufferDeviceAddressInfo* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->buffer) { |
| local_pInfo->buffer = layer_data->Unwrap(pInfo->buffer); |
| } |
| } |
| } |
| uint64_t result = |
| layer_data->device_dispatch_table.GetBufferOpaqueCaptureAddressKHR(device, (const VkBufferDeviceAddressInfo*)local_pInfo); |
| |
| return result; |
| } |
| |
| uint64_t DispatchGetDeviceMemoryOpaqueCaptureAddressKHR(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo); |
| safe_VkDeviceMemoryOpaqueCaptureAddressInfo var_local_pInfo; |
| safe_VkDeviceMemoryOpaqueCaptureAddressInfo* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->memory) { |
| local_pInfo->memory = layer_data->Unwrap(pInfo->memory); |
| } |
| } |
| } |
| uint64_t result = layer_data->device_dispatch_table.GetDeviceMemoryOpaqueCaptureAddressKHR( |
| device, (const VkDeviceMemoryOpaqueCaptureAddressInfo*)local_pInfo); |
| |
| return result; |
| } |
| |
| VkResult DispatchCreateDeferredOperationKHR(VkDevice device, const VkAllocationCallbacks* pAllocator, |
| VkDeferredOperationKHR* pDeferredOperation) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CreateDeferredOperationKHR(device, pAllocator, pDeferredOperation); |
| |
| VkResult result = layer_data->device_dispatch_table.CreateDeferredOperationKHR(device, pAllocator, pDeferredOperation); |
| if (VK_SUCCESS == result) { |
| *pDeferredOperation = layer_data->WrapNew(*pDeferredOperation); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyDeferredOperationKHR(VkDevice device, VkDeferredOperationKHR operation, |
| const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyDeferredOperationKHR(device, operation, pAllocator); |
| |
| uint64_t operation_id = CastToUint64(operation); |
| auto iter = unique_id_mapping.pop(operation_id); |
| if (iter != unique_id_mapping.end()) { |
| operation = (VkDeferredOperationKHR)iter->second; |
| } else { |
| operation = (VkDeferredOperationKHR)0; |
| } |
| layer_data->device_dispatch_table.DestroyDeferredOperationKHR(device, operation, pAllocator); |
| } |
| |
| uint32_t DispatchGetDeferredOperationMaxConcurrencyKHR(VkDevice device, VkDeferredOperationKHR operation) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetDeferredOperationMaxConcurrencyKHR(device, operation); |
| { operation = layer_data->Unwrap(operation); } |
| uint32_t result = layer_data->device_dispatch_table.GetDeferredOperationMaxConcurrencyKHR(device, operation); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetPipelineExecutablePropertiesKHR(VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, |
| uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, |
| pProperties); |
| safe_VkPipelineInfoKHR var_local_pPipelineInfo; |
| safe_VkPipelineInfoKHR* local_pPipelineInfo = nullptr; |
| { |
| if (pPipelineInfo) { |
| local_pPipelineInfo = &var_local_pPipelineInfo; |
| local_pPipelineInfo->initialize(pPipelineInfo); |
| |
| if (pPipelineInfo->pipeline) { |
| local_pPipelineInfo->pipeline = layer_data->Unwrap(pPipelineInfo->pipeline); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.GetPipelineExecutablePropertiesKHR( |
| device, (const VkPipelineInfoKHR*)local_pPipelineInfo, pExecutableCount, pProperties); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetPipelineExecutableStatisticsKHR(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, |
| uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, |
| pStatistics); |
| safe_VkPipelineExecutableInfoKHR var_local_pExecutableInfo; |
| safe_VkPipelineExecutableInfoKHR* local_pExecutableInfo = nullptr; |
| { |
| if (pExecutableInfo) { |
| local_pExecutableInfo = &var_local_pExecutableInfo; |
| local_pExecutableInfo->initialize(pExecutableInfo); |
| |
| if (pExecutableInfo->pipeline) { |
| local_pExecutableInfo->pipeline = layer_data->Unwrap(pExecutableInfo->pipeline); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.GetPipelineExecutableStatisticsKHR( |
| device, (const VkPipelineExecutableInfoKHR*)local_pExecutableInfo, pStatisticCount, pStatistics); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetPipelineExecutableInternalRepresentationsKHR( |
| VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, |
| VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetPipelineExecutableInternalRepresentationsKHR( |
| device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations); |
| safe_VkPipelineExecutableInfoKHR var_local_pExecutableInfo; |
| safe_VkPipelineExecutableInfoKHR* local_pExecutableInfo = nullptr; |
| { |
| if (pExecutableInfo) { |
| local_pExecutableInfo = &var_local_pExecutableInfo; |
| local_pExecutableInfo->initialize(pExecutableInfo); |
| |
| if (pExecutableInfo->pipeline) { |
| local_pExecutableInfo->pipeline = layer_data->Unwrap(pExecutableInfo->pipeline); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.GetPipelineExecutableInternalRepresentationsKHR( |
| device, (const VkPipelineExecutableInfoKHR*)local_pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations); |
| |
| return result; |
| } |
| |
| VkResult DispatchMapMemory2KHR(VkDevice device, const VkMemoryMapInfoKHR* pMemoryMapInfo, void** ppData) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.MapMemory2KHR(device, pMemoryMapInfo, ppData); |
| safe_VkMemoryMapInfoKHR var_local_pMemoryMapInfo; |
| safe_VkMemoryMapInfoKHR* local_pMemoryMapInfo = nullptr; |
| { |
| if (pMemoryMapInfo) { |
| local_pMemoryMapInfo = &var_local_pMemoryMapInfo; |
| local_pMemoryMapInfo->initialize(pMemoryMapInfo); |
| |
| if (pMemoryMapInfo->memory) { |
| local_pMemoryMapInfo->memory = layer_data->Unwrap(pMemoryMapInfo->memory); |
| } |
| } |
| } |
| VkResult result = |
| layer_data->device_dispatch_table.MapMemory2KHR(device, (const VkMemoryMapInfoKHR*)local_pMemoryMapInfo, ppData); |
| |
| return result; |
| } |
| |
| VkResult DispatchUnmapMemory2KHR(VkDevice device, const VkMemoryUnmapInfoKHR* pMemoryUnmapInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.UnmapMemory2KHR(device, pMemoryUnmapInfo); |
| safe_VkMemoryUnmapInfoKHR var_local_pMemoryUnmapInfo; |
| safe_VkMemoryUnmapInfoKHR* local_pMemoryUnmapInfo = nullptr; |
| { |
| if (pMemoryUnmapInfo) { |
| local_pMemoryUnmapInfo = &var_local_pMemoryUnmapInfo; |
| local_pMemoryUnmapInfo->initialize(pMemoryUnmapInfo); |
| |
| if (pMemoryUnmapInfo->memory) { |
| local_pMemoryUnmapInfo->memory = layer_data->Unwrap(pMemoryUnmapInfo->memory); |
| } |
| } |
| } |
| VkResult result = |
| layer_data->device_dispatch_table.UnmapMemory2KHR(device, (const VkMemoryUnmapInfoKHR*)local_pMemoryUnmapInfo); |
| |
| return result; |
| } |
| #ifdef VK_ENABLE_BETA_EXTENSIONS |
| |
| VkResult DispatchGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR( |
| VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR* pQualityLevelInfo, |
| VkVideoEncodeQualityLevelPropertiesKHR* pQualityLevelProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR( |
| physicalDevice, pQualityLevelInfo, pQualityLevelProperties); |
| |
| return result; |
| } |
| #endif // VK_ENABLE_BETA_EXTENSIONS |
| #ifdef VK_ENABLE_BETA_EXTENSIONS |
| |
| VkResult DispatchGetEncodedVideoSessionParametersKHR(VkDevice device, |
| const VkVideoEncodeSessionParametersGetInfoKHR* pVideoSessionParametersInfo, |
| VkVideoEncodeSessionParametersFeedbackInfoKHR* pFeedbackInfo, |
| size_t* pDataSize, void* pData) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, |
| pFeedbackInfo, pDataSize, pData); |
| safe_VkVideoEncodeSessionParametersGetInfoKHR var_local_pVideoSessionParametersInfo; |
| safe_VkVideoEncodeSessionParametersGetInfoKHR* local_pVideoSessionParametersInfo = nullptr; |
| { |
| if (pVideoSessionParametersInfo) { |
| local_pVideoSessionParametersInfo = &var_local_pVideoSessionParametersInfo; |
| local_pVideoSessionParametersInfo->initialize(pVideoSessionParametersInfo); |
| |
| if (pVideoSessionParametersInfo->videoSessionParameters) { |
| local_pVideoSessionParametersInfo->videoSessionParameters = |
| layer_data->Unwrap(pVideoSessionParametersInfo->videoSessionParameters); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.GetEncodedVideoSessionParametersKHR( |
| device, (const VkVideoEncodeSessionParametersGetInfoKHR*)local_pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, |
| pData); |
| |
| return result; |
| } |
| #endif // VK_ENABLE_BETA_EXTENSIONS |
| #ifdef VK_ENABLE_BETA_EXTENSIONS |
| |
| void DispatchCmdEncodeVideoKHR(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdEncodeVideoKHR(commandBuffer, pEncodeInfo); |
| safe_VkVideoEncodeInfoKHR var_local_pEncodeInfo; |
| safe_VkVideoEncodeInfoKHR* local_pEncodeInfo = nullptr; |
| { |
| if (pEncodeInfo) { |
| local_pEncodeInfo = &var_local_pEncodeInfo; |
| local_pEncodeInfo->initialize(pEncodeInfo); |
| |
| if (pEncodeInfo->dstBuffer) { |
| local_pEncodeInfo->dstBuffer = layer_data->Unwrap(pEncodeInfo->dstBuffer); |
| } |
| if (pEncodeInfo->srcPictureResource.imageViewBinding) { |
| local_pEncodeInfo->srcPictureResource.imageViewBinding = |
| layer_data->Unwrap(pEncodeInfo->srcPictureResource.imageViewBinding); |
| } |
| if (local_pEncodeInfo->pSetupReferenceSlot) { |
| if (local_pEncodeInfo->pSetupReferenceSlot->pPictureResource) { |
| if (pEncodeInfo->pSetupReferenceSlot->pPictureResource->imageViewBinding) { |
| local_pEncodeInfo->pSetupReferenceSlot->pPictureResource->imageViewBinding = |
| layer_data->Unwrap(pEncodeInfo->pSetupReferenceSlot->pPictureResource->imageViewBinding); |
| } |
| } |
| } |
| if (local_pEncodeInfo->pReferenceSlots) { |
| for (uint32_t index1 = 0; index1 < local_pEncodeInfo->referenceSlotCount; ++index1) { |
| if (local_pEncodeInfo->pReferenceSlots[index1].pPictureResource) { |
| if (pEncodeInfo->pReferenceSlots[index1].pPictureResource->imageViewBinding) { |
| local_pEncodeInfo->pReferenceSlots[index1].pPictureResource->imageViewBinding = |
| layer_data->Unwrap(pEncodeInfo->pReferenceSlots[index1].pPictureResource->imageViewBinding); |
| } |
| } |
| } |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdEncodeVideoKHR(commandBuffer, (const VkVideoEncodeInfoKHR*)local_pEncodeInfo); |
| } |
| #endif // VK_ENABLE_BETA_EXTENSIONS |
| |
| void DispatchCmdSetEvent2KHR(VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfo* pDependencyInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdSetEvent2KHR(commandBuffer, event, pDependencyInfo); |
| safe_VkDependencyInfo var_local_pDependencyInfo; |
| safe_VkDependencyInfo* local_pDependencyInfo = nullptr; |
| { |
| event = layer_data->Unwrap(event); |
| if (pDependencyInfo) { |
| local_pDependencyInfo = &var_local_pDependencyInfo; |
| local_pDependencyInfo->initialize(pDependencyInfo); |
| if (local_pDependencyInfo->pBufferMemoryBarriers) { |
| for (uint32_t index1 = 0; index1 < local_pDependencyInfo->bufferMemoryBarrierCount; ++index1) { |
| if (pDependencyInfo->pBufferMemoryBarriers[index1].buffer) { |
| local_pDependencyInfo->pBufferMemoryBarriers[index1].buffer = |
| layer_data->Unwrap(pDependencyInfo->pBufferMemoryBarriers[index1].buffer); |
| } |
| } |
| } |
| if (local_pDependencyInfo->pImageMemoryBarriers) { |
| for (uint32_t index1 = 0; index1 < local_pDependencyInfo->imageMemoryBarrierCount; ++index1) { |
| if (pDependencyInfo->pImageMemoryBarriers[index1].image) { |
| local_pDependencyInfo->pImageMemoryBarriers[index1].image = |
| layer_data->Unwrap(pDependencyInfo->pImageMemoryBarriers[index1].image); |
| } |
| } |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdSetEvent2KHR(commandBuffer, event, (const VkDependencyInfo*)local_pDependencyInfo); |
| } |
| |
| void DispatchCmdResetEvent2KHR(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdResetEvent2KHR(commandBuffer, event, stageMask); |
| { event = layer_data->Unwrap(event); } |
| layer_data->device_dispatch_table.CmdResetEvent2KHR(commandBuffer, event, stageMask); |
| } |
| |
| void DispatchCmdWaitEvents2KHR(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, |
| const VkDependencyInfo* pDependencyInfos) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos); |
| VkEvent var_local_pEvents[DISPATCH_MAX_STACK_ALLOCATIONS]; |
| VkEvent* local_pEvents = nullptr; |
| safe_VkDependencyInfo* local_pDependencyInfos = nullptr; |
| { |
| if (pEvents) { |
| local_pEvents = eventCount > DISPATCH_MAX_STACK_ALLOCATIONS ? new VkEvent[eventCount] : var_local_pEvents; |
| for (uint32_t index0 = 0; index0 < eventCount; ++index0) { |
| local_pEvents[index0] = layer_data->Unwrap(pEvents[index0]); |
| } |
| } |
| if (pDependencyInfos) { |
| local_pDependencyInfos = new safe_VkDependencyInfo[eventCount]; |
| for (uint32_t index0 = 0; index0 < eventCount; ++index0) { |
| local_pDependencyInfos[index0].initialize(&pDependencyInfos[index0]); |
| if (local_pDependencyInfos[index0].pBufferMemoryBarriers) { |
| for (uint32_t index1 = 0; index1 < local_pDependencyInfos[index0].bufferMemoryBarrierCount; ++index1) { |
| if (pDependencyInfos[index0].pBufferMemoryBarriers[index1].buffer) { |
| local_pDependencyInfos[index0].pBufferMemoryBarriers[index1].buffer = |
| layer_data->Unwrap(pDependencyInfos[index0].pBufferMemoryBarriers[index1].buffer); |
| } |
| } |
| } |
| if (local_pDependencyInfos[index0].pImageMemoryBarriers) { |
| for (uint32_t index1 = 0; index1 < local_pDependencyInfos[index0].imageMemoryBarrierCount; ++index1) { |
| if (pDependencyInfos[index0].pImageMemoryBarriers[index1].image) { |
| local_pDependencyInfos[index0].pImageMemoryBarriers[index1].image = |
| layer_data->Unwrap(pDependencyInfos[index0].pImageMemoryBarriers[index1].image); |
| } |
| } |
| } |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdWaitEvents2KHR(commandBuffer, eventCount, (const VkEvent*)local_pEvents, |
| (const VkDependencyInfo*)local_pDependencyInfos); |
| if (local_pEvents != var_local_pEvents) delete[] local_pEvents; |
| if (local_pDependencyInfos) { |
| delete[] local_pDependencyInfos; |
| } |
| } |
| |
| void DispatchCmdPipelineBarrier2KHR(VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo); |
| safe_VkDependencyInfo var_local_pDependencyInfo; |
| safe_VkDependencyInfo* local_pDependencyInfo = nullptr; |
| { |
| if (pDependencyInfo) { |
| local_pDependencyInfo = &var_local_pDependencyInfo; |
| local_pDependencyInfo->initialize(pDependencyInfo); |
| if (local_pDependencyInfo->pBufferMemoryBarriers) { |
| for (uint32_t index1 = 0; index1 < local_pDependencyInfo->bufferMemoryBarrierCount; ++index1) { |
| if (pDependencyInfo->pBufferMemoryBarriers[index1].buffer) { |
| local_pDependencyInfo->pBufferMemoryBarriers[index1].buffer = |
| layer_data->Unwrap(pDependencyInfo->pBufferMemoryBarriers[index1].buffer); |
| } |
| } |
| } |
| if (local_pDependencyInfo->pImageMemoryBarriers) { |
| for (uint32_t index1 = 0; index1 < local_pDependencyInfo->imageMemoryBarrierCount; ++index1) { |
| if (pDependencyInfo->pImageMemoryBarriers[index1].image) { |
| local_pDependencyInfo->pImageMemoryBarriers[index1].image = |
| layer_data->Unwrap(pDependencyInfo->pImageMemoryBarriers[index1].image); |
| } |
| } |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdPipelineBarrier2KHR(commandBuffer, (const VkDependencyInfo*)local_pDependencyInfo); |
| } |
| |
| void DispatchCmdWriteTimestamp2KHR(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkQueryPool queryPool, |
| uint32_t query) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query); |
| { queryPool = layer_data->Unwrap(queryPool); } |
| layer_data->device_dispatch_table.CmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query); |
| } |
| |
| VkResult DispatchQueueSubmit2KHR(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.QueueSubmit2KHR(queue, submitCount, pSubmits, fence); |
| safe_VkSubmitInfo2* local_pSubmits = nullptr; |
| { |
| if (pSubmits) { |
| local_pSubmits = new safe_VkSubmitInfo2[submitCount]; |
| for (uint32_t index0 = 0; index0 < submitCount; ++index0) { |
| local_pSubmits[index0].initialize(&pSubmits[index0]); |
| WrapPnextChainHandles(layer_data, local_pSubmits[index0].pNext); |
| if (local_pSubmits[index0].pWaitSemaphoreInfos) { |
| for (uint32_t index1 = 0; index1 < local_pSubmits[index0].waitSemaphoreInfoCount; ++index1) { |
| if (pSubmits[index0].pWaitSemaphoreInfos[index1].semaphore) { |
| local_pSubmits[index0].pWaitSemaphoreInfos[index1].semaphore = |
| layer_data->Unwrap(pSubmits[index0].pWaitSemaphoreInfos[index1].semaphore); |
| } |
| } |
| } |
| if (local_pSubmits[index0].pSignalSemaphoreInfos) { |
| for (uint32_t index1 = 0; index1 < local_pSubmits[index0].signalSemaphoreInfoCount; ++index1) { |
| if (pSubmits[index0].pSignalSemaphoreInfos[index1].semaphore) { |
| local_pSubmits[index0].pSignalSemaphoreInfos[index1].semaphore = |
| layer_data->Unwrap(pSubmits[index0].pSignalSemaphoreInfos[index1].semaphore); |
| } |
| } |
| } |
| } |
| } |
| fence = layer_data->Unwrap(fence); |
| } |
| VkResult result = |
| layer_data->device_dispatch_table.QueueSubmit2KHR(queue, submitCount, (const VkSubmitInfo2*)local_pSubmits, fence); |
| if (local_pSubmits) { |
| delete[] local_pSubmits; |
| } |
| return result; |
| } |
| |
| void DispatchCmdWriteBufferMarker2AMD(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkBuffer dstBuffer, |
| VkDeviceSize dstOffset, uint32_t marker) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker); |
| { dstBuffer = layer_data->Unwrap(dstBuffer); } |
| layer_data->device_dispatch_table.CmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker); |
| } |
| |
| void DispatchGetQueueCheckpointData2NV(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map); |
| |
| layer_data->device_dispatch_table.GetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData); |
| } |
| |
| void DispatchCmdCopyBuffer2KHR(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo); |
| safe_VkCopyBufferInfo2 var_local_pCopyBufferInfo; |
| safe_VkCopyBufferInfo2* local_pCopyBufferInfo = nullptr; |
| { |
| if (pCopyBufferInfo) { |
| local_pCopyBufferInfo = &var_local_pCopyBufferInfo; |
| local_pCopyBufferInfo->initialize(pCopyBufferInfo); |
| |
| if (pCopyBufferInfo->srcBuffer) { |
| local_pCopyBufferInfo->srcBuffer = layer_data->Unwrap(pCopyBufferInfo->srcBuffer); |
| } |
| if (pCopyBufferInfo->dstBuffer) { |
| local_pCopyBufferInfo->dstBuffer = layer_data->Unwrap(pCopyBufferInfo->dstBuffer); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdCopyBuffer2KHR(commandBuffer, (const VkCopyBufferInfo2*)local_pCopyBufferInfo); |
| } |
| |
| void DispatchCmdCopyImage2KHR(VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdCopyImage2KHR(commandBuffer, pCopyImageInfo); |
| safe_VkCopyImageInfo2 var_local_pCopyImageInfo; |
| safe_VkCopyImageInfo2* local_pCopyImageInfo = nullptr; |
| { |
| if (pCopyImageInfo) { |
| local_pCopyImageInfo = &var_local_pCopyImageInfo; |
| local_pCopyImageInfo->initialize(pCopyImageInfo); |
| |
| if (pCopyImageInfo->srcImage) { |
| local_pCopyImageInfo->srcImage = layer_data->Unwrap(pCopyImageInfo->srcImage); |
| } |
| if (pCopyImageInfo->dstImage) { |
| local_pCopyImageInfo->dstImage = layer_data->Unwrap(pCopyImageInfo->dstImage); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdCopyImage2KHR(commandBuffer, (const VkCopyImageInfo2*)local_pCopyImageInfo); |
| } |
| |
| void DispatchCmdCopyBufferToImage2KHR(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo); |
| safe_VkCopyBufferToImageInfo2 var_local_pCopyBufferToImageInfo; |
| safe_VkCopyBufferToImageInfo2* local_pCopyBufferToImageInfo = nullptr; |
| { |
| if (pCopyBufferToImageInfo) { |
| local_pCopyBufferToImageInfo = &var_local_pCopyBufferToImageInfo; |
| local_pCopyBufferToImageInfo->initialize(pCopyBufferToImageInfo); |
| |
| if (pCopyBufferToImageInfo->srcBuffer) { |
| local_pCopyBufferToImageInfo->srcBuffer = layer_data->Unwrap(pCopyBufferToImageInfo->srcBuffer); |
| } |
| if (pCopyBufferToImageInfo->dstImage) { |
| local_pCopyBufferToImageInfo->dstImage = layer_data->Unwrap(pCopyBufferToImageInfo->dstImage); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdCopyBufferToImage2KHR(commandBuffer, |
| (const VkCopyBufferToImageInfo2*)local_pCopyBufferToImageInfo); |
| } |
| |
| void DispatchCmdCopyImageToBuffer2KHR(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo); |
| safe_VkCopyImageToBufferInfo2 var_local_pCopyImageToBufferInfo; |
| safe_VkCopyImageToBufferInfo2* local_pCopyImageToBufferInfo = nullptr; |
| { |
| if (pCopyImageToBufferInfo) { |
| local_pCopyImageToBufferInfo = &var_local_pCopyImageToBufferInfo; |
| local_pCopyImageToBufferInfo->initialize(pCopyImageToBufferInfo); |
| |
| if (pCopyImageToBufferInfo->srcImage) { |
| local_pCopyImageToBufferInfo->srcImage = layer_data->Unwrap(pCopyImageToBufferInfo->srcImage); |
| } |
| if (pCopyImageToBufferInfo->dstBuffer) { |
| local_pCopyImageToBufferInfo->dstBuffer = layer_data->Unwrap(pCopyImageToBufferInfo->dstBuffer); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdCopyImageToBuffer2KHR(commandBuffer, |
| (const VkCopyImageToBufferInfo2*)local_pCopyImageToBufferInfo); |
| } |
| |
| void DispatchCmdBlitImage2KHR(VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdBlitImage2KHR(commandBuffer, pBlitImageInfo); |
| safe_VkBlitImageInfo2 var_local_pBlitImageInfo; |
| safe_VkBlitImageInfo2* local_pBlitImageInfo = nullptr; |
| { |
| if (pBlitImageInfo) { |
| local_pBlitImageInfo = &var_local_pBlitImageInfo; |
| local_pBlitImageInfo->initialize(pBlitImageInfo); |
| |
| if (pBlitImageInfo->srcImage) { |
| local_pBlitImageInfo->srcImage = layer_data->Unwrap(pBlitImageInfo->srcImage); |
| } |
| if (pBlitImageInfo->dstImage) { |
| local_pBlitImageInfo->dstImage = layer_data->Unwrap(pBlitImageInfo->dstImage); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdBlitImage2KHR(commandBuffer, (const VkBlitImageInfo2*)local_pBlitImageInfo); |
| } |
| |
| void DispatchCmdResolveImage2KHR(VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdResolveImage2KHR(commandBuffer, pResolveImageInfo); |
| safe_VkResolveImageInfo2 var_local_pResolveImageInfo; |
| safe_VkResolveImageInfo2* local_pResolveImageInfo = nullptr; |
| { |
| if (pResolveImageInfo) { |
| local_pResolveImageInfo = &var_local_pResolveImageInfo; |
| local_pResolveImageInfo->initialize(pResolveImageInfo); |
| |
| if (pResolveImageInfo->srcImage) { |
| local_pResolveImageInfo->srcImage = layer_data->Unwrap(pResolveImageInfo->srcImage); |
| } |
| if (pResolveImageInfo->dstImage) { |
| local_pResolveImageInfo->dstImage = layer_data->Unwrap(pResolveImageInfo->dstImage); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdResolveImage2KHR(commandBuffer, (const VkResolveImageInfo2*)local_pResolveImageInfo); |
| } |
| |
| void DispatchCmdTraceRaysIndirect2KHR(VkCommandBuffer commandBuffer, VkDeviceAddress indirectDeviceAddress) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress); |
| } |
| |
| void DispatchGetDeviceBufferMemoryRequirementsKHR(VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, |
| VkMemoryRequirements2* pMemoryRequirements) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| layer_data->device_dispatch_table.GetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements); |
| } |
| |
| void DispatchGetDeviceImageMemoryRequirementsKHR(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, |
| VkMemoryRequirements2* pMemoryRequirements) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| layer_data->device_dispatch_table.GetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements); |
| } |
| |
| void DispatchGetDeviceImageSparseMemoryRequirementsKHR(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, |
| uint32_t* pSparseMemoryRequirementCount, |
| VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| layer_data->device_dispatch_table.GetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, |
| pSparseMemoryRequirements); |
| } |
| |
| void DispatchCmdBindIndexBuffer2KHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkDeviceSize size, |
| VkIndexType indexType) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType); |
| { buffer = layer_data->Unwrap(buffer); } |
| layer_data->device_dispatch_table.CmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType); |
| } |
| |
| void DispatchGetRenderingAreaGranularityKHR(VkDevice device, const VkRenderingAreaInfoKHR* pRenderingAreaInfo, |
| VkExtent2D* pGranularity) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| layer_data->device_dispatch_table.GetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity); |
| } |
| |
| void DispatchGetDeviceImageSubresourceLayoutKHR(VkDevice device, const VkDeviceImageSubresourceInfoKHR* pInfo, |
| VkSubresourceLayout2KHR* pLayout) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| layer_data->device_dispatch_table.GetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout); |
| } |
| |
| void DispatchGetImageSubresourceLayout2KHR(VkDevice device, VkImage image, const VkImageSubresource2KHR* pSubresource, |
| VkSubresourceLayout2KHR* pLayout) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout); |
| { image = layer_data->Unwrap(image); } |
| layer_data->device_dispatch_table.GetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout); |
| } |
| |
| VkResult DispatchGetPhysicalDeviceCooperativeMatrixPropertiesKHR(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, |
| VkCooperativeMatrixPropertiesKHR* pProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceCooperativeMatrixPropertiesKHR( |
| physicalDevice, pPropertyCount, pProperties); |
| |
| return result; |
| } |
| |
| VkResult DispatchCreateDebugReportCallbackEXT(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.CreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback); |
| |
| VkResult result = |
| layer_data->instance_dispatch_table.CreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback); |
| if (VK_SUCCESS == result) { |
| *pCallback = layer_data->WrapNew(*pCallback); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyDebugReportCallbackEXT(VkInstance instance, VkDebugReportCallbackEXT callback, |
| const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| if (!wrap_handles) return layer_data->instance_dispatch_table.DestroyDebugReportCallbackEXT(instance, callback, pAllocator); |
| |
| uint64_t callback_id = CastToUint64(callback); |
| auto iter = unique_id_mapping.pop(callback_id); |
| if (iter != unique_id_mapping.end()) { |
| callback = (VkDebugReportCallbackEXT)iter->second; |
| } else { |
| callback = (VkDebugReportCallbackEXT)0; |
| } |
| layer_data->instance_dispatch_table.DestroyDebugReportCallbackEXT(instance, callback, pAllocator); |
| } |
| |
| void DispatchDebugReportMessageEXT(VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, |
| uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, |
| const char* pMessage) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| |
| layer_data->instance_dispatch_table.DebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, |
| pLayerPrefix, pMessage); |
| } |
| |
| void DispatchCmdDebugMarkerBeginEXT(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo); |
| } |
| |
| void DispatchCmdDebugMarkerEndEXT(VkCommandBuffer commandBuffer) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdDebugMarkerEndEXT(commandBuffer); |
| } |
| |
| void DispatchCmdDebugMarkerInsertEXT(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo); |
| } |
| |
| void DispatchCmdBindTransformFeedbackBuffersEXT(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, |
| const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, |
| const VkDeviceSize* pSizes) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, |
| pBuffers, pOffsets, pSizes); |
| VkBuffer var_local_pBuffers[DISPATCH_MAX_STACK_ALLOCATIONS]; |
| VkBuffer* local_pBuffers = nullptr; |
| { |
| if (pBuffers) { |
| local_pBuffers = bindingCount > DISPATCH_MAX_STACK_ALLOCATIONS ? new VkBuffer[bindingCount] : var_local_pBuffers; |
| for (uint32_t index0 = 0; index0 < bindingCount; ++index0) { |
| local_pBuffers[index0] = layer_data->Unwrap(pBuffers[index0]); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, |
| (const VkBuffer*)local_pBuffers, pOffsets, pSizes); |
| if (local_pBuffers != var_local_pBuffers) delete[] local_pBuffers; |
| } |
| |
| void DispatchCmdBeginTransformFeedbackEXT(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, |
| const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, |
| pCounterBuffers, pCounterBufferOffsets); |
| VkBuffer var_local_pCounterBuffers[DISPATCH_MAX_STACK_ALLOCATIONS]; |
| VkBuffer* local_pCounterBuffers = nullptr; |
| { |
| if (pCounterBuffers) { |
| local_pCounterBuffers = |
| counterBufferCount > DISPATCH_MAX_STACK_ALLOCATIONS ? new VkBuffer[counterBufferCount] : var_local_pCounterBuffers; |
| for (uint32_t index0 = 0; index0 < counterBufferCount; ++index0) { |
| local_pCounterBuffers[index0] = layer_data->Unwrap(pCounterBuffers[index0]); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, |
| (const VkBuffer*)local_pCounterBuffers, pCounterBufferOffsets); |
| if (local_pCounterBuffers != var_local_pCounterBuffers) delete[] local_pCounterBuffers; |
| } |
| |
| void DispatchCmdEndTransformFeedbackEXT(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, |
| const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, |
| pCounterBuffers, pCounterBufferOffsets); |
| VkBuffer var_local_pCounterBuffers[DISPATCH_MAX_STACK_ALLOCATIONS]; |
| VkBuffer* local_pCounterBuffers = nullptr; |
| { |
| if (pCounterBuffers) { |
| local_pCounterBuffers = |
| counterBufferCount > DISPATCH_MAX_STACK_ALLOCATIONS ? new VkBuffer[counterBufferCount] : var_local_pCounterBuffers; |
| for (uint32_t index0 = 0; index0 < counterBufferCount; ++index0) { |
| local_pCounterBuffers[index0] = layer_data->Unwrap(pCounterBuffers[index0]); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, |
| (const VkBuffer*)local_pCounterBuffers, pCounterBufferOffsets); |
| if (local_pCounterBuffers != var_local_pCounterBuffers) delete[] local_pCounterBuffers; |
| } |
| |
| void DispatchCmdBeginQueryIndexedEXT(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, |
| VkQueryControlFlags flags, uint32_t index) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index); |
| { queryPool = layer_data->Unwrap(queryPool); } |
| layer_data->device_dispatch_table.CmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index); |
| } |
| |
| void DispatchCmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, uint32_t index) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index); |
| { queryPool = layer_data->Unwrap(queryPool); } |
| layer_data->device_dispatch_table.CmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index); |
| } |
| |
| void DispatchCmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, |
| VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset, |
| uint32_t vertexStride) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdDrawIndirectByteCountEXT( |
| commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride); |
| { counterBuffer = layer_data->Unwrap(counterBuffer); } |
| layer_data->device_dispatch_table.CmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, |
| counterBufferOffset, counterOffset, vertexStride); |
| } |
| |
| VkResult DispatchCreateCuModuleNVX(VkDevice device, const VkCuModuleCreateInfoNVX* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkCuModuleNVX* pModule) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule); |
| |
| VkResult result = layer_data->device_dispatch_table.CreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule); |
| if (VK_SUCCESS == result) { |
| *pModule = layer_data->WrapNew(*pModule); |
| } |
| return result; |
| } |
| |
| VkResult DispatchCreateCuFunctionNVX(VkDevice device, const VkCuFunctionCreateInfoNVX* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkCuFunctionNVX* pFunction) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction); |
| safe_VkCuFunctionCreateInfoNVX var_local_pCreateInfo; |
| safe_VkCuFunctionCreateInfoNVX* local_pCreateInfo = nullptr; |
| { |
| if (pCreateInfo) { |
| local_pCreateInfo = &var_local_pCreateInfo; |
| local_pCreateInfo->initialize(pCreateInfo); |
| |
| if (pCreateInfo->module) { |
| local_pCreateInfo->module = layer_data->Unwrap(pCreateInfo->module); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CreateCuFunctionNVX( |
| device, (const VkCuFunctionCreateInfoNVX*)local_pCreateInfo, pAllocator, pFunction); |
| if (VK_SUCCESS == result) { |
| *pFunction = layer_data->WrapNew(*pFunction); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyCuModuleNVX(VkDevice device, VkCuModuleNVX module, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyCuModuleNVX(device, module, pAllocator); |
| |
| uint64_t module_id = CastToUint64(module); |
| auto iter = unique_id_mapping.pop(module_id); |
| if (iter != unique_id_mapping.end()) { |
| module = (VkCuModuleNVX)iter->second; |
| } else { |
| module = (VkCuModuleNVX)0; |
| } |
| layer_data->device_dispatch_table.DestroyCuModuleNVX(device, module, pAllocator); |
| } |
| |
| void DispatchDestroyCuFunctionNVX(VkDevice device, VkCuFunctionNVX function, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyCuFunctionNVX(device, function, pAllocator); |
| |
| uint64_t function_id = CastToUint64(function); |
| auto iter = unique_id_mapping.pop(function_id); |
| if (iter != unique_id_mapping.end()) { |
| function = (VkCuFunctionNVX)iter->second; |
| } else { |
| function = (VkCuFunctionNVX)0; |
| } |
| layer_data->device_dispatch_table.DestroyCuFunctionNVX(device, function, pAllocator); |
| } |
| |
| void DispatchCmdCuLaunchKernelNVX(VkCommandBuffer commandBuffer, const VkCuLaunchInfoNVX* pLaunchInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo); |
| safe_VkCuLaunchInfoNVX var_local_pLaunchInfo; |
| safe_VkCuLaunchInfoNVX* local_pLaunchInfo = nullptr; |
| { |
| if (pLaunchInfo) { |
| local_pLaunchInfo = &var_local_pLaunchInfo; |
| local_pLaunchInfo->initialize(pLaunchInfo); |
| |
| if (pLaunchInfo->function) { |
| local_pLaunchInfo->function = layer_data->Unwrap(pLaunchInfo->function); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdCuLaunchKernelNVX(commandBuffer, (const VkCuLaunchInfoNVX*)local_pLaunchInfo); |
| } |
| |
| uint32_t DispatchGetImageViewHandleNVX(VkDevice device, const VkImageViewHandleInfoNVX* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetImageViewHandleNVX(device, pInfo); |
| safe_VkImageViewHandleInfoNVX var_local_pInfo; |
| safe_VkImageViewHandleInfoNVX* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->imageView) { |
| local_pInfo->imageView = layer_data->Unwrap(pInfo->imageView); |
| } |
| if (pInfo->sampler) { |
| local_pInfo->sampler = layer_data->Unwrap(pInfo->sampler); |
| } |
| } |
| } |
| uint32_t result = layer_data->device_dispatch_table.GetImageViewHandleNVX(device, (const VkImageViewHandleInfoNVX*)local_pInfo); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetImageViewAddressNVX(VkDevice device, VkImageView imageView, VkImageViewAddressPropertiesNVX* pProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetImageViewAddressNVX(device, imageView, pProperties); |
| { imageView = layer_data->Unwrap(imageView); } |
| VkResult result = layer_data->device_dispatch_table.GetImageViewAddressNVX(device, imageView, pProperties); |
| |
| return result; |
| } |
| |
| void DispatchCmdDrawIndirectCountAMD(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, |
| VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, |
| countBufferOffset, maxDrawCount, stride); |
| { |
| buffer = layer_data->Unwrap(buffer); |
| countBuffer = layer_data->Unwrap(countBuffer); |
| } |
| layer_data->device_dispatch_table.CmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, |
| maxDrawCount, stride); |
| } |
| |
| void DispatchCmdDrawIndexedIndirectCountAMD(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, |
| VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, |
| uint32_t stride) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, |
| countBufferOffset, maxDrawCount, stride); |
| { |
| buffer = layer_data->Unwrap(buffer); |
| countBuffer = layer_data->Unwrap(countBuffer); |
| } |
| layer_data->device_dispatch_table.CmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, |
| maxDrawCount, stride); |
| } |
| |
| VkResult DispatchGetShaderInfoAMD(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, |
| VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo); |
| { pipeline = layer_data->Unwrap(pipeline); } |
| VkResult result = layer_data->device_dispatch_table.GetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo); |
| |
| return result; |
| } |
| #ifdef VK_USE_PLATFORM_GGP |
| |
| VkResult DispatchCreateStreamDescriptorSurfaceGGP(VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.CreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, pSurface); |
| |
| VkResult result = |
| layer_data->instance_dispatch_table.CreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, pSurface); |
| if (VK_SUCCESS == result) { |
| *pSurface = layer_data->WrapNew(*pSurface); |
| } |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_GGP |
| |
| VkResult DispatchGetPhysicalDeviceExternalImageFormatPropertiesNV( |
| VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, |
| VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, |
| VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceExternalImageFormatPropertiesNV( |
| physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties); |
| |
| return result; |
| } |
| #ifdef VK_USE_PLATFORM_WIN32_KHR |
| |
| VkResult DispatchGetMemoryWin32HandleNV(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, |
| HANDLE* pHandle) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetMemoryWin32HandleNV(device, memory, handleType, pHandle); |
| { memory = layer_data->Unwrap(memory); } |
| VkResult result = layer_data->device_dispatch_table.GetMemoryWin32HandleNV(device, memory, handleType, pHandle); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_WIN32_KHR |
| #ifdef VK_USE_PLATFORM_VI_NN |
| |
| VkResult DispatchCreateViSurfaceNN(VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| if (!wrap_handles) return layer_data->instance_dispatch_table.CreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface); |
| |
| VkResult result = layer_data->instance_dispatch_table.CreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface); |
| if (VK_SUCCESS == result) { |
| *pSurface = layer_data->WrapNew(*pSurface); |
| } |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_VI_NN |
| |
| void DispatchCmdBeginConditionalRenderingEXT(VkCommandBuffer commandBuffer, |
| const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin); |
| safe_VkConditionalRenderingBeginInfoEXT var_local_pConditionalRenderingBegin; |
| safe_VkConditionalRenderingBeginInfoEXT* local_pConditionalRenderingBegin = nullptr; |
| { |
| if (pConditionalRenderingBegin) { |
| local_pConditionalRenderingBegin = &var_local_pConditionalRenderingBegin; |
| local_pConditionalRenderingBegin->initialize(pConditionalRenderingBegin); |
| |
| if (pConditionalRenderingBegin->buffer) { |
| local_pConditionalRenderingBegin->buffer = layer_data->Unwrap(pConditionalRenderingBegin->buffer); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdBeginConditionalRenderingEXT( |
| commandBuffer, (const VkConditionalRenderingBeginInfoEXT*)local_pConditionalRenderingBegin); |
| } |
| |
| void DispatchCmdEndConditionalRenderingEXT(VkCommandBuffer commandBuffer) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdEndConditionalRenderingEXT(commandBuffer); |
| } |
| |
| void DispatchCmdSetViewportWScalingNV(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, |
| const VkViewportWScalingNV* pViewportWScalings) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings); |
| } |
| |
| VkResult DispatchReleaseDisplayEXT(VkPhysicalDevice physicalDevice, VkDisplayKHR display) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| if (!wrap_handles) return layer_data->instance_dispatch_table.ReleaseDisplayEXT(physicalDevice, display); |
| { display = layer_data->Unwrap(display); } |
| VkResult result = layer_data->instance_dispatch_table.ReleaseDisplayEXT(physicalDevice, display); |
| |
| return result; |
| } |
| #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT |
| |
| VkResult DispatchAcquireXlibDisplayEXT(VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| if (!wrap_handles) return layer_data->instance_dispatch_table.AcquireXlibDisplayEXT(physicalDevice, dpy, display); |
| { display = layer_data->Unwrap(display); } |
| VkResult result = layer_data->instance_dispatch_table.AcquireXlibDisplayEXT(physicalDevice, dpy, display); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT |
| #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT |
| |
| VkResult DispatchGetRandROutputDisplayEXT(VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput, |
| VkDisplayKHR* pDisplay) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| if (!wrap_handles) return layer_data->instance_dispatch_table.GetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay); |
| |
| VkResult result = layer_data->instance_dispatch_table.GetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay); |
| if (VK_SUCCESS == result) { |
| *pDisplay = layer_data->WrapNew(*pDisplay); |
| } |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT |
| |
| VkResult DispatchGetPhysicalDeviceSurfaceCapabilities2EXT(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, |
| VkSurfaceCapabilities2EXT* pSurfaceCapabilities) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, |
| pSurfaceCapabilities); |
| { surface = layer_data->Unwrap(surface); } |
| VkResult result = |
| layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities); |
| |
| return result; |
| } |
| |
| VkResult DispatchDisplayPowerControlEXT(VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DisplayPowerControlEXT(device, display, pDisplayPowerInfo); |
| { display = layer_data->Unwrap(display); } |
| VkResult result = layer_data->device_dispatch_table.DisplayPowerControlEXT(device, display, pDisplayPowerInfo); |
| |
| return result; |
| } |
| |
| VkResult DispatchRegisterDeviceEventEXT(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, |
| const VkAllocationCallbacks* pAllocator, VkFence* pFence) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.RegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence); |
| |
| VkResult result = layer_data->device_dispatch_table.RegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence); |
| if (VK_SUCCESS == result) { |
| *pFence = layer_data->WrapNew(*pFence); |
| } |
| return result; |
| } |
| |
| VkResult DispatchRegisterDisplayEventEXT(VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, |
| const VkAllocationCallbacks* pAllocator, VkFence* pFence) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.RegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence); |
| { display = layer_data->Unwrap(display); } |
| VkResult result = |
| layer_data->device_dispatch_table.RegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence); |
| if (VK_SUCCESS == result) { |
| *pFence = layer_data->WrapNew(*pFence); |
| } |
| return result; |
| } |
| |
| VkResult DispatchGetSwapchainCounterEXT(VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, |
| uint64_t* pCounterValue) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetSwapchainCounterEXT(device, swapchain, counter, pCounterValue); |
| { swapchain = layer_data->Unwrap(swapchain); } |
| VkResult result = layer_data->device_dispatch_table.GetSwapchainCounterEXT(device, swapchain, counter, pCounterValue); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetRefreshCycleDurationGOOGLE(VkDevice device, VkSwapchainKHR swapchain, |
| VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties); |
| { swapchain = layer_data->Unwrap(swapchain); } |
| VkResult result = layer_data->device_dispatch_table.GetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetPastPresentationTimingGOOGLE(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, |
| VkPastPresentationTimingGOOGLE* pPresentationTimings) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, |
| pPresentationTimings); |
| { swapchain = layer_data->Unwrap(swapchain); } |
| VkResult result = layer_data->device_dispatch_table.GetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, |
| pPresentationTimings); |
| |
| return result; |
| } |
| |
| void DispatchCmdSetDiscardRectangleEXT(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, |
| uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, |
| pDiscardRectangles); |
| } |
| |
| void DispatchCmdSetDiscardRectangleEnableEXT(VkCommandBuffer commandBuffer, VkBool32 discardRectangleEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable); |
| } |
| |
| void DispatchCmdSetDiscardRectangleModeEXT(VkCommandBuffer commandBuffer, VkDiscardRectangleModeEXT discardRectangleMode) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode); |
| } |
| |
| void DispatchSetHdrMetadataEXT(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, |
| const VkHdrMetadataEXT* pMetadata) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.SetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata); |
| VkSwapchainKHR var_local_pSwapchains[DISPATCH_MAX_STACK_ALLOCATIONS]; |
| VkSwapchainKHR* local_pSwapchains = nullptr; |
| { |
| if (pSwapchains) { |
| local_pSwapchains = |
| swapchainCount > DISPATCH_MAX_STACK_ALLOCATIONS ? new VkSwapchainKHR[swapchainCount] : var_local_pSwapchains; |
| for (uint32_t index0 = 0; index0 < swapchainCount; ++index0) { |
| local_pSwapchains[index0] = layer_data->Unwrap(pSwapchains[index0]); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.SetHdrMetadataEXT(device, swapchainCount, (const VkSwapchainKHR*)local_pSwapchains, |
| pMetadata); |
| if (local_pSwapchains != var_local_pSwapchains) delete[] local_pSwapchains; |
| } |
| #ifdef VK_USE_PLATFORM_IOS_MVK |
| |
| VkResult DispatchCreateIOSSurfaceMVK(VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| if (!wrap_handles) return layer_data->instance_dispatch_table.CreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface); |
| |
| VkResult result = layer_data->instance_dispatch_table.CreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface); |
| if (VK_SUCCESS == result) { |
| *pSurface = layer_data->WrapNew(*pSurface); |
| } |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_IOS_MVK |
| #ifdef VK_USE_PLATFORM_MACOS_MVK |
| |
| VkResult DispatchCreateMacOSSurfaceMVK(VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.CreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface); |
| |
| VkResult result = layer_data->instance_dispatch_table.CreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface); |
| if (VK_SUCCESS == result) { |
| *pSurface = layer_data->WrapNew(*pSurface); |
| } |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_MACOS_MVK |
| |
| void DispatchQueueBeginDebugUtilsLabelEXT(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map); |
| |
| layer_data->device_dispatch_table.QueueBeginDebugUtilsLabelEXT(queue, pLabelInfo); |
| } |
| |
| void DispatchQueueEndDebugUtilsLabelEXT(VkQueue queue) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map); |
| |
| layer_data->device_dispatch_table.QueueEndDebugUtilsLabelEXT(queue); |
| } |
| |
| void DispatchQueueInsertDebugUtilsLabelEXT(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map); |
| |
| layer_data->device_dispatch_table.QueueInsertDebugUtilsLabelEXT(queue, pLabelInfo); |
| } |
| |
| void DispatchCmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo); |
| } |
| |
| void DispatchCmdEndDebugUtilsLabelEXT(VkCommandBuffer commandBuffer) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdEndDebugUtilsLabelEXT(commandBuffer); |
| } |
| |
| void DispatchCmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo); |
| } |
| |
| VkResult DispatchCreateDebugUtilsMessengerEXT(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.CreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger); |
| |
| VkResult result = |
| layer_data->instance_dispatch_table.CreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger); |
| if (VK_SUCCESS == result) { |
| *pMessenger = layer_data->WrapNew(*pMessenger); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyDebugUtilsMessengerEXT(VkInstance instance, VkDebugUtilsMessengerEXT messenger, |
| const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| if (!wrap_handles) return layer_data->instance_dispatch_table.DestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator); |
| |
| uint64_t messenger_id = CastToUint64(messenger); |
| auto iter = unique_id_mapping.pop(messenger_id); |
| if (iter != unique_id_mapping.end()) { |
| messenger = (VkDebugUtilsMessengerEXT)iter->second; |
| } else { |
| messenger = (VkDebugUtilsMessengerEXT)0; |
| } |
| layer_data->instance_dispatch_table.DestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator); |
| } |
| |
| void DispatchSubmitDebugUtilsMessageEXT(VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, |
| VkDebugUtilsMessageTypeFlagsEXT messageTypes, |
| const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| |
| layer_data->instance_dispatch_table.SubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData); |
| } |
| #ifdef VK_USE_PLATFORM_ANDROID_KHR |
| |
| VkResult DispatchGetAndroidHardwareBufferPropertiesANDROID(VkDevice device, const struct AHardwareBuffer* buffer, |
| VkAndroidHardwareBufferPropertiesANDROID* pProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| VkResult result = layer_data->device_dispatch_table.GetAndroidHardwareBufferPropertiesANDROID(device, buffer, pProperties); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_ANDROID_KHR |
| #ifdef VK_USE_PLATFORM_ANDROID_KHR |
| |
| VkResult DispatchGetMemoryAndroidHardwareBufferANDROID(VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, |
| struct AHardwareBuffer** pBuffer) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetMemoryAndroidHardwareBufferANDROID(device, pInfo, pBuffer); |
| safe_VkMemoryGetAndroidHardwareBufferInfoANDROID var_local_pInfo; |
| safe_VkMemoryGetAndroidHardwareBufferInfoANDROID* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->memory) { |
| local_pInfo->memory = layer_data->Unwrap(pInfo->memory); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.GetMemoryAndroidHardwareBufferANDROID( |
| device, (const VkMemoryGetAndroidHardwareBufferInfoANDROID*)local_pInfo, pBuffer); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_ANDROID_KHR |
| #ifdef VK_ENABLE_BETA_EXTENSIONS |
| |
| VkResult DispatchCreateExecutionGraphPipelinesAMDX(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, |
| const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos, |
| const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CreateExecutionGraphPipelinesAMDX(device, pipelineCache, createInfoCount, |
| pCreateInfos, pAllocator, pPipelines); |
| safe_VkExecutionGraphPipelineCreateInfoAMDX* local_pCreateInfos = nullptr; |
| { |
| pipelineCache = layer_data->Unwrap(pipelineCache); |
| if (pCreateInfos) { |
| local_pCreateInfos = new safe_VkExecutionGraphPipelineCreateInfoAMDX[createInfoCount]; |
| for (uint32_t index0 = 0; index0 < createInfoCount; ++index0) { |
| local_pCreateInfos[index0].initialize(&pCreateInfos[index0]); |
| if (local_pCreateInfos[index0].pStages) { |
| for (uint32_t index1 = 0; index1 < local_pCreateInfos[index0].stageCount; ++index1) { |
| if (pCreateInfos[index0].pStages[index1].module) { |
| local_pCreateInfos[index0].pStages[index1].module = |
| layer_data->Unwrap(pCreateInfos[index0].pStages[index1].module); |
| } |
| } |
| } |
| if (local_pCreateInfos[index0].pLibraryInfo) { |
| if (local_pCreateInfos[index0].pLibraryInfo->pLibraries) { |
| for (uint32_t index2 = 0; index2 < local_pCreateInfos[index0].pLibraryInfo->libraryCount; ++index2) { |
| local_pCreateInfos[index0].pLibraryInfo->pLibraries[index2] = |
| layer_data->Unwrap(local_pCreateInfos[index0].pLibraryInfo->pLibraries[index2]); |
| } |
| } |
| } |
| |
| if (pCreateInfos[index0].layout) { |
| local_pCreateInfos[index0].layout = layer_data->Unwrap(pCreateInfos[index0].layout); |
| } |
| if (pCreateInfos[index0].basePipelineHandle) { |
| local_pCreateInfos[index0].basePipelineHandle = layer_data->Unwrap(pCreateInfos[index0].basePipelineHandle); |
| } |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CreateExecutionGraphPipelinesAMDX( |
| device, pipelineCache, createInfoCount, (const VkExecutionGraphPipelineCreateInfoAMDX*)local_pCreateInfos, pAllocator, |
| pPipelines); |
| if (local_pCreateInfos) { |
| delete[] local_pCreateInfos; |
| } |
| if (VK_SUCCESS == result) { |
| for (uint32_t index0 = 0; index0 < createInfoCount; index0++) { |
| pPipelines[index0] = layer_data->WrapNew(pPipelines[index0]); |
| } |
| } |
| return result; |
| } |
| #endif // VK_ENABLE_BETA_EXTENSIONS |
| #ifdef VK_ENABLE_BETA_EXTENSIONS |
| |
| VkResult DispatchGetExecutionGraphPipelineScratchSizeAMDX(VkDevice device, VkPipeline executionGraph, |
| VkExecutionGraphPipelineScratchSizeAMDX* pSizeInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetExecutionGraphPipelineScratchSizeAMDX(device, executionGraph, pSizeInfo); |
| { executionGraph = layer_data->Unwrap(executionGraph); } |
| VkResult result = layer_data->device_dispatch_table.GetExecutionGraphPipelineScratchSizeAMDX(device, executionGraph, pSizeInfo); |
| |
| return result; |
| } |
| #endif // VK_ENABLE_BETA_EXTENSIONS |
| #ifdef VK_ENABLE_BETA_EXTENSIONS |
| |
| VkResult DispatchGetExecutionGraphPipelineNodeIndexAMDX(VkDevice device, VkPipeline executionGraph, |
| const VkPipelineShaderStageNodeCreateInfoAMDX* pNodeInfo, |
| uint32_t* pNodeIndex) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetExecutionGraphPipelineNodeIndexAMDX(device, executionGraph, pNodeInfo, |
| pNodeIndex); |
| { executionGraph = layer_data->Unwrap(executionGraph); } |
| VkResult result = |
| layer_data->device_dispatch_table.GetExecutionGraphPipelineNodeIndexAMDX(device, executionGraph, pNodeInfo, pNodeIndex); |
| |
| return result; |
| } |
| #endif // VK_ENABLE_BETA_EXTENSIONS |
| #ifdef VK_ENABLE_BETA_EXTENSIONS |
| |
| void DispatchCmdInitializeGraphScratchMemoryAMDX(VkCommandBuffer commandBuffer, VkDeviceAddress scratch) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdInitializeGraphScratchMemoryAMDX(commandBuffer, scratch); |
| } |
| #endif // VK_ENABLE_BETA_EXTENSIONS |
| #ifdef VK_ENABLE_BETA_EXTENSIONS |
| |
| void DispatchCmdDispatchGraphAMDX(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, |
| const VkDispatchGraphCountInfoAMDX* pCountInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdDispatchGraphAMDX(commandBuffer, scratch, pCountInfo); |
| } |
| #endif // VK_ENABLE_BETA_EXTENSIONS |
| #ifdef VK_ENABLE_BETA_EXTENSIONS |
| |
| void DispatchCmdDispatchGraphIndirectAMDX(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, |
| const VkDispatchGraphCountInfoAMDX* pCountInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdDispatchGraphIndirectAMDX(commandBuffer, scratch, pCountInfo); |
| } |
| #endif // VK_ENABLE_BETA_EXTENSIONS |
| #ifdef VK_ENABLE_BETA_EXTENSIONS |
| |
| void DispatchCmdDispatchGraphIndirectCountAMDX(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, VkDeviceAddress countInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdDispatchGraphIndirectCountAMDX(commandBuffer, scratch, countInfo); |
| } |
| #endif // VK_ENABLE_BETA_EXTENSIONS |
| |
| void DispatchCmdSetSampleLocationsEXT(VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo); |
| } |
| |
| void DispatchGetPhysicalDeviceMultisamplePropertiesEXT(VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, |
| VkMultisamplePropertiesEXT* pMultisampleProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| layer_data->instance_dispatch_table.GetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties); |
| } |
| |
| VkResult DispatchGetImageDrmFormatModifierPropertiesEXT(VkDevice device, VkImage image, |
| VkImageDrmFormatModifierPropertiesEXT* pProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetImageDrmFormatModifierPropertiesEXT(device, image, pProperties); |
| { image = layer_data->Unwrap(image); } |
| VkResult result = layer_data->device_dispatch_table.GetImageDrmFormatModifierPropertiesEXT(device, image, pProperties); |
| |
| return result; |
| } |
| |
| VkResult DispatchCreateValidationCacheEXT(VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache); |
| |
| VkResult result = layer_data->device_dispatch_table.CreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache); |
| if (VK_SUCCESS == result) { |
| *pValidationCache = layer_data->WrapNew(*pValidationCache); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyValidationCacheEXT(VkDevice device, VkValidationCacheEXT validationCache, |
| const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyValidationCacheEXT(device, validationCache, pAllocator); |
| |
| uint64_t validationCache_id = CastToUint64(validationCache); |
| auto iter = unique_id_mapping.pop(validationCache_id); |
| if (iter != unique_id_mapping.end()) { |
| validationCache = (VkValidationCacheEXT)iter->second; |
| } else { |
| validationCache = (VkValidationCacheEXT)0; |
| } |
| layer_data->device_dispatch_table.DestroyValidationCacheEXT(device, validationCache, pAllocator); |
| } |
| |
| VkResult DispatchMergeValidationCachesEXT(VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, |
| const VkValidationCacheEXT* pSrcCaches) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.MergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches); |
| VkValidationCacheEXT var_local_pSrcCaches[DISPATCH_MAX_STACK_ALLOCATIONS]; |
| VkValidationCacheEXT* local_pSrcCaches = nullptr; |
| { |
| dstCache = layer_data->Unwrap(dstCache); |
| if (pSrcCaches) { |
| local_pSrcCaches = |
| srcCacheCount > DISPATCH_MAX_STACK_ALLOCATIONS ? new VkValidationCacheEXT[srcCacheCount] : var_local_pSrcCaches; |
| for (uint32_t index0 = 0; index0 < srcCacheCount; ++index0) { |
| local_pSrcCaches[index0] = layer_data->Unwrap(pSrcCaches[index0]); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.MergeValidationCachesEXT(device, dstCache, srcCacheCount, |
| (const VkValidationCacheEXT*)local_pSrcCaches); |
| if (local_pSrcCaches != var_local_pSrcCaches) delete[] local_pSrcCaches; |
| return result; |
| } |
| |
| VkResult DispatchGetValidationCacheDataEXT(VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetValidationCacheDataEXT(device, validationCache, pDataSize, pData); |
| { validationCache = layer_data->Unwrap(validationCache); } |
| VkResult result = layer_data->device_dispatch_table.GetValidationCacheDataEXT(device, validationCache, pDataSize, pData); |
| |
| return result; |
| } |
| |
| void DispatchCmdBindShadingRateImageNV(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout); |
| { imageView = layer_data->Unwrap(imageView); } |
| layer_data->device_dispatch_table.CmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout); |
| } |
| |
| void DispatchCmdSetViewportShadingRatePaletteNV(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, |
| const VkShadingRatePaletteNV* pShadingRatePalettes) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, |
| pShadingRatePalettes); |
| } |
| |
| void DispatchCmdSetCoarseSampleOrderNV(VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, |
| uint32_t customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, |
| pCustomSampleOrders); |
| } |
| |
| VkResult DispatchCreateAccelerationStructureNV(VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkAccelerationStructureNV* pAccelerationStructure) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CreateAccelerationStructureNV(device, pCreateInfo, pAllocator, |
| pAccelerationStructure); |
| safe_VkAccelerationStructureCreateInfoNV var_local_pCreateInfo; |
| safe_VkAccelerationStructureCreateInfoNV* local_pCreateInfo = nullptr; |
| { |
| if (pCreateInfo) { |
| local_pCreateInfo = &var_local_pCreateInfo; |
| local_pCreateInfo->initialize(pCreateInfo); |
| if (local_pCreateInfo->info.pGeometries) { |
| for (uint32_t index2 = 0; index2 < local_pCreateInfo->info.geometryCount; ++index2) { |
| if (pCreateInfo->info.pGeometries[index2].geometry.triangles.vertexData) { |
| local_pCreateInfo->info.pGeometries[index2].geometry.triangles.vertexData = |
| layer_data->Unwrap(pCreateInfo->info.pGeometries[index2].geometry.triangles.vertexData); |
| } |
| if (pCreateInfo->info.pGeometries[index2].geometry.triangles.indexData) { |
| local_pCreateInfo->info.pGeometries[index2].geometry.triangles.indexData = |
| layer_data->Unwrap(pCreateInfo->info.pGeometries[index2].geometry.triangles.indexData); |
| } |
| if (pCreateInfo->info.pGeometries[index2].geometry.triangles.transformData) { |
| local_pCreateInfo->info.pGeometries[index2].geometry.triangles.transformData = |
| layer_data->Unwrap(pCreateInfo->info.pGeometries[index2].geometry.triangles.transformData); |
| } |
| if (pCreateInfo->info.pGeometries[index2].geometry.aabbs.aabbData) { |
| local_pCreateInfo->info.pGeometries[index2].geometry.aabbs.aabbData = |
| layer_data->Unwrap(pCreateInfo->info.pGeometries[index2].geometry.aabbs.aabbData); |
| } |
| } |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CreateAccelerationStructureNV( |
| device, (const VkAccelerationStructureCreateInfoNV*)local_pCreateInfo, pAllocator, pAccelerationStructure); |
| if (VK_SUCCESS == result) { |
| *pAccelerationStructure = layer_data->WrapNew(*pAccelerationStructure); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyAccelerationStructureNV(VkDevice device, VkAccelerationStructureNV accelerationStructure, |
| const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.DestroyAccelerationStructureNV(device, accelerationStructure, pAllocator); |
| |
| uint64_t accelerationStructure_id = CastToUint64(accelerationStructure); |
| auto iter = unique_id_mapping.pop(accelerationStructure_id); |
| if (iter != unique_id_mapping.end()) { |
| accelerationStructure = (VkAccelerationStructureNV)iter->second; |
| } else { |
| accelerationStructure = (VkAccelerationStructureNV)0; |
| } |
| layer_data->device_dispatch_table.DestroyAccelerationStructureNV(device, accelerationStructure, pAllocator); |
| } |
| |
| void DispatchGetAccelerationStructureMemoryRequirementsNV(VkDevice device, |
| const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, |
| VkMemoryRequirements2KHR* pMemoryRequirements) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements); |
| safe_VkAccelerationStructureMemoryRequirementsInfoNV var_local_pInfo; |
| safe_VkAccelerationStructureMemoryRequirementsInfoNV* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->accelerationStructure) { |
| local_pInfo->accelerationStructure = layer_data->Unwrap(pInfo->accelerationStructure); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.GetAccelerationStructureMemoryRequirementsNV( |
| device, (const VkAccelerationStructureMemoryRequirementsInfoNV*)local_pInfo, pMemoryRequirements); |
| } |
| |
| VkResult DispatchBindAccelerationStructureMemoryNV(VkDevice device, uint32_t bindInfoCount, |
| const VkBindAccelerationStructureMemoryInfoNV* pBindInfos) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.BindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos); |
| safe_VkBindAccelerationStructureMemoryInfoNV* local_pBindInfos = nullptr; |
| { |
| if (pBindInfos) { |
| local_pBindInfos = new safe_VkBindAccelerationStructureMemoryInfoNV[bindInfoCount]; |
| for (uint32_t index0 = 0; index0 < bindInfoCount; ++index0) { |
| local_pBindInfos[index0].initialize(&pBindInfos[index0]); |
| |
| if (pBindInfos[index0].accelerationStructure) { |
| local_pBindInfos[index0].accelerationStructure = layer_data->Unwrap(pBindInfos[index0].accelerationStructure); |
| } |
| if (pBindInfos[index0].memory) { |
| local_pBindInfos[index0].memory = layer_data->Unwrap(pBindInfos[index0].memory); |
| } |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.BindAccelerationStructureMemoryNV( |
| device, bindInfoCount, (const VkBindAccelerationStructureMemoryInfoNV*)local_pBindInfos); |
| if (local_pBindInfos) { |
| delete[] local_pBindInfos; |
| } |
| return result; |
| } |
| |
| void DispatchCmdBuildAccelerationStructureNV(VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, |
| VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, |
| VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, |
| VkDeviceSize scratchOffset) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, |
| update, dst, src, scratch, scratchOffset); |
| safe_VkAccelerationStructureInfoNV var_local_pInfo; |
| safe_VkAccelerationStructureInfoNV* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| if (local_pInfo->pGeometries) { |
| for (uint32_t index1 = 0; index1 < local_pInfo->geometryCount; ++index1) { |
| if (pInfo->pGeometries[index1].geometry.triangles.vertexData) { |
| local_pInfo->pGeometries[index1].geometry.triangles.vertexData = |
| layer_data->Unwrap(pInfo->pGeometries[index1].geometry.triangles.vertexData); |
| } |
| if (pInfo->pGeometries[index1].geometry.triangles.indexData) { |
| local_pInfo->pGeometries[index1].geometry.triangles.indexData = |
| layer_data->Unwrap(pInfo->pGeometries[index1].geometry.triangles.indexData); |
| } |
| if (pInfo->pGeometries[index1].geometry.triangles.transformData) { |
| local_pInfo->pGeometries[index1].geometry.triangles.transformData = |
| layer_data->Unwrap(pInfo->pGeometries[index1].geometry.triangles.transformData); |
| } |
| if (pInfo->pGeometries[index1].geometry.aabbs.aabbData) { |
| local_pInfo->pGeometries[index1].geometry.aabbs.aabbData = |
| layer_data->Unwrap(pInfo->pGeometries[index1].geometry.aabbs.aabbData); |
| } |
| } |
| } |
| } |
| instanceData = layer_data->Unwrap(instanceData); |
| dst = layer_data->Unwrap(dst); |
| src = layer_data->Unwrap(src); |
| scratch = layer_data->Unwrap(scratch); |
| } |
| layer_data->device_dispatch_table.CmdBuildAccelerationStructureNV( |
| commandBuffer, (const VkAccelerationStructureInfoNV*)local_pInfo, instanceData, instanceOffset, update, dst, src, scratch, |
| scratchOffset); |
| } |
| |
| void DispatchCmdCopyAccelerationStructureNV(VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, |
| VkAccelerationStructureNV src, VkCopyAccelerationStructureModeKHR mode) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode); |
| { |
| dst = layer_data->Unwrap(dst); |
| src = layer_data->Unwrap(src); |
| } |
| layer_data->device_dispatch_table.CmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode); |
| } |
| |
| void DispatchCmdTraceRaysNV(VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, |
| VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, |
| VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, |
| VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, |
| VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer, |
| VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride, uint32_t width, |
| uint32_t height, uint32_t depth) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdTraceRaysNV( |
| commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, |
| missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, |
| hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, |
| width, height, depth); |
| { |
| raygenShaderBindingTableBuffer = layer_data->Unwrap(raygenShaderBindingTableBuffer); |
| missShaderBindingTableBuffer = layer_data->Unwrap(missShaderBindingTableBuffer); |
| hitShaderBindingTableBuffer = layer_data->Unwrap(hitShaderBindingTableBuffer); |
| callableShaderBindingTableBuffer = layer_data->Unwrap(callableShaderBindingTableBuffer); |
| } |
| layer_data->device_dispatch_table.CmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, |
| missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, |
| hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, |
| callableShaderBindingTableBuffer, callableShaderBindingOffset, |
| callableShaderBindingStride, width, height, depth); |
| } |
| |
| VkResult DispatchGetRayTracingShaderGroupHandlesKHR(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, |
| size_t dataSize, void* pData) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, |
| dataSize, pData); |
| { pipeline = layer_data->Unwrap(pipeline); } |
| VkResult result = layer_data->device_dispatch_table.GetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, |
| dataSize, pData); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetRayTracingShaderGroupHandlesNV(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, |
| size_t dataSize, void* pData) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, |
| dataSize, pData); |
| { pipeline = layer_data->Unwrap(pipeline); } |
| VkResult result = layer_data->device_dispatch_table.GetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, |
| dataSize, pData); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetAccelerationStructureHandleNV(VkDevice device, VkAccelerationStructureNV accelerationStructure, size_t dataSize, |
| void* pData) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData); |
| { accelerationStructure = layer_data->Unwrap(accelerationStructure); } |
| VkResult result = |
| layer_data->device_dispatch_table.GetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData); |
| |
| return result; |
| } |
| |
| void DispatchCmdWriteAccelerationStructuresPropertiesNV(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, |
| const VkAccelerationStructureNV* pAccelerationStructures, |
| VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdWriteAccelerationStructuresPropertiesNV( |
| commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery); |
| VkAccelerationStructureNV var_local_pAccelerationStructures[DISPATCH_MAX_STACK_ALLOCATIONS]; |
| VkAccelerationStructureNV* local_pAccelerationStructures = nullptr; |
| { |
| if (pAccelerationStructures) { |
| local_pAccelerationStructures = accelerationStructureCount > DISPATCH_MAX_STACK_ALLOCATIONS |
| ? new VkAccelerationStructureNV[accelerationStructureCount] |
| : var_local_pAccelerationStructures; |
| for (uint32_t index0 = 0; index0 < accelerationStructureCount; ++index0) { |
| local_pAccelerationStructures[index0] = layer_data->Unwrap(pAccelerationStructures[index0]); |
| } |
| } |
| queryPool = layer_data->Unwrap(queryPool); |
| } |
| layer_data->device_dispatch_table.CmdWriteAccelerationStructuresPropertiesNV( |
| commandBuffer, accelerationStructureCount, (const VkAccelerationStructureNV*)local_pAccelerationStructures, queryType, |
| queryPool, firstQuery); |
| if (local_pAccelerationStructures != var_local_pAccelerationStructures) delete[] local_pAccelerationStructures; |
| } |
| |
| VkResult DispatchCompileDeferredNV(VkDevice device, VkPipeline pipeline, uint32_t shader) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CompileDeferredNV(device, pipeline, shader); |
| { pipeline = layer_data->Unwrap(pipeline); } |
| VkResult result = layer_data->device_dispatch_table.CompileDeferredNV(device, pipeline, shader); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetMemoryHostPointerPropertiesEXT(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, |
| const void* pHostPointer, |
| VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| VkResult result = layer_data->device_dispatch_table.GetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, |
| pMemoryHostPointerProperties); |
| |
| return result; |
| } |
| |
| void DispatchCmdWriteBufferMarkerAMD(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, |
| VkDeviceSize dstOffset, uint32_t marker) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, |
| marker); |
| { dstBuffer = layer_data->Unwrap(dstBuffer); } |
| layer_data->device_dispatch_table.CmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker); |
| } |
| |
| VkResult DispatchGetPhysicalDeviceCalibrateableTimeDomainsEXT(VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, |
| VkTimeDomainEXT* pTimeDomains) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceCalibrateableTimeDomainsEXT( |
| physicalDevice, pTimeDomainCount, pTimeDomains); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetCalibratedTimestampsEXT(VkDevice device, uint32_t timestampCount, |
| const VkCalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, |
| uint64_t* pMaxDeviation) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| VkResult result = layer_data->device_dispatch_table.GetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, |
| pTimestamps, pMaxDeviation); |
| |
| return result; |
| } |
| |
| void DispatchCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask); |
| } |
| |
| void DispatchCmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, |
| uint32_t stride) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride); |
| { buffer = layer_data->Unwrap(buffer); } |
| layer_data->device_dispatch_table.CmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride); |
| } |
| |
| void DispatchCmdDrawMeshTasksIndirectCountNV(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, |
| VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, |
| uint32_t stride) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, |
| countBufferOffset, maxDrawCount, stride); |
| { |
| buffer = layer_data->Unwrap(buffer); |
| countBuffer = layer_data->Unwrap(countBuffer); |
| } |
| layer_data->device_dispatch_table.CmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, |
| maxDrawCount, stride); |
| } |
| |
| void DispatchCmdSetExclusiveScissorEnableNV(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, |
| uint32_t exclusiveScissorCount, const VkBool32* pExclusiveScissorEnables) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, |
| pExclusiveScissorEnables); |
| } |
| |
| void DispatchCmdSetExclusiveScissorNV(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, |
| const VkRect2D* pExclusiveScissors) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, |
| pExclusiveScissors); |
| } |
| |
| void DispatchCmdSetCheckpointNV(VkCommandBuffer commandBuffer, const void* pCheckpointMarker) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetCheckpointNV(commandBuffer, pCheckpointMarker); |
| } |
| |
| void DispatchGetQueueCheckpointDataNV(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map); |
| |
| layer_data->device_dispatch_table.GetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData); |
| } |
| |
| VkResult DispatchInitializePerformanceApiINTEL(VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| VkResult result = layer_data->device_dispatch_table.InitializePerformanceApiINTEL(device, pInitializeInfo); |
| |
| return result; |
| } |
| |
| void DispatchUninitializePerformanceApiINTEL(VkDevice device) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| layer_data->device_dispatch_table.UninitializePerformanceApiINTEL(device); |
| } |
| |
| VkResult DispatchCmdSetPerformanceMarkerINTEL(VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| VkResult result = layer_data->device_dispatch_table.CmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo); |
| |
| return result; |
| } |
| |
| VkResult DispatchCmdSetPerformanceStreamMarkerINTEL(VkCommandBuffer commandBuffer, |
| const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| VkResult result = layer_data->device_dispatch_table.CmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo); |
| |
| return result; |
| } |
| |
| VkResult DispatchCmdSetPerformanceOverrideINTEL(VkCommandBuffer commandBuffer, |
| const VkPerformanceOverrideInfoINTEL* pOverrideInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| VkResult result = layer_data->device_dispatch_table.CmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo); |
| |
| return result; |
| } |
| |
| VkResult DispatchAcquirePerformanceConfigurationINTEL(VkDevice device, |
| const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, |
| VkPerformanceConfigurationINTEL* pConfiguration) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.AcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration); |
| |
| VkResult result = layer_data->device_dispatch_table.AcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration); |
| if (VK_SUCCESS == result) { |
| *pConfiguration = layer_data->WrapNew(*pConfiguration); |
| } |
| return result; |
| } |
| |
| VkResult DispatchQueueSetPerformanceConfigurationINTEL(VkQueue queue, VkPerformanceConfigurationINTEL configuration) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.QueueSetPerformanceConfigurationINTEL(queue, configuration); |
| { configuration = layer_data->Unwrap(configuration); } |
| VkResult result = layer_data->device_dispatch_table.QueueSetPerformanceConfigurationINTEL(queue, configuration); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetPerformanceParameterINTEL(VkDevice device, VkPerformanceParameterTypeINTEL parameter, |
| VkPerformanceValueINTEL* pValue) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| VkResult result = layer_data->device_dispatch_table.GetPerformanceParameterINTEL(device, parameter, pValue); |
| |
| return result; |
| } |
| |
| void DispatchSetLocalDimmingAMD(VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.SetLocalDimmingAMD(device, swapChain, localDimmingEnable); |
| { swapChain = layer_data->Unwrap(swapChain); } |
| layer_data->device_dispatch_table.SetLocalDimmingAMD(device, swapChain, localDimmingEnable); |
| } |
| #ifdef VK_USE_PLATFORM_FUCHSIA |
| |
| VkResult DispatchCreateImagePipeSurfaceFUCHSIA(VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.CreateImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, pSurface); |
| |
| VkResult result = |
| layer_data->instance_dispatch_table.CreateImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, pSurface); |
| if (VK_SUCCESS == result) { |
| *pSurface = layer_data->WrapNew(*pSurface); |
| } |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_FUCHSIA |
| #ifdef VK_USE_PLATFORM_METAL_EXT |
| |
| VkResult DispatchCreateMetalSurfaceEXT(VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.CreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface); |
| |
| VkResult result = layer_data->instance_dispatch_table.CreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface); |
| if (VK_SUCCESS == result) { |
| *pSurface = layer_data->WrapNew(*pSurface); |
| } |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_METAL_EXT |
| |
| VkDeviceAddress DispatchGetBufferDeviceAddressEXT(VkDevice device, const VkBufferDeviceAddressInfo* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetBufferDeviceAddressEXT(device, pInfo); |
| safe_VkBufferDeviceAddressInfo var_local_pInfo; |
| safe_VkBufferDeviceAddressInfo* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->buffer) { |
| local_pInfo->buffer = layer_data->Unwrap(pInfo->buffer); |
| } |
| } |
| } |
| VkDeviceAddress result = |
| layer_data->device_dispatch_table.GetBufferDeviceAddressEXT(device, (const VkBufferDeviceAddressInfo*)local_pInfo); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetPhysicalDeviceCooperativeMatrixPropertiesNV(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, |
| VkCooperativeMatrixPropertiesNV* pProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceCooperativeMatrixPropertiesNV( |
| physicalDevice, pPropertyCount, pProperties); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( |
| VkPhysicalDevice physicalDevice, uint32_t* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( |
| physicalDevice, pCombinationCount, pCombinations); |
| |
| return result; |
| } |
| #ifdef VK_USE_PLATFORM_WIN32_KHR |
| |
| VkResult DispatchGetPhysicalDeviceSurfacePresentModes2EXT(VkPhysicalDevice physicalDevice, |
| const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, |
| uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.GetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, |
| pPresentModeCount, pPresentModes); |
| safe_VkPhysicalDeviceSurfaceInfo2KHR var_local_pSurfaceInfo; |
| safe_VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo = nullptr; |
| { |
| if (pSurfaceInfo) { |
| local_pSurfaceInfo = &var_local_pSurfaceInfo; |
| local_pSurfaceInfo->initialize(pSurfaceInfo); |
| |
| if (pSurfaceInfo->surface) { |
| local_pSurfaceInfo->surface = layer_data->Unwrap(pSurfaceInfo->surface); |
| } |
| } |
| } |
| VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceSurfacePresentModes2EXT( |
| physicalDevice, (const VkPhysicalDeviceSurfaceInfo2KHR*)local_pSurfaceInfo, pPresentModeCount, pPresentModes); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_WIN32_KHR |
| #ifdef VK_USE_PLATFORM_WIN32_KHR |
| |
| VkResult DispatchAcquireFullScreenExclusiveModeEXT(VkDevice device, VkSwapchainKHR swapchain) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.AcquireFullScreenExclusiveModeEXT(device, swapchain); |
| { swapchain = layer_data->Unwrap(swapchain); } |
| VkResult result = layer_data->device_dispatch_table.AcquireFullScreenExclusiveModeEXT(device, swapchain); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_WIN32_KHR |
| #ifdef VK_USE_PLATFORM_WIN32_KHR |
| |
| VkResult DispatchReleaseFullScreenExclusiveModeEXT(VkDevice device, VkSwapchainKHR swapchain) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.ReleaseFullScreenExclusiveModeEXT(device, swapchain); |
| { swapchain = layer_data->Unwrap(swapchain); } |
| VkResult result = layer_data->device_dispatch_table.ReleaseFullScreenExclusiveModeEXT(device, swapchain); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_WIN32_KHR |
| #ifdef VK_USE_PLATFORM_WIN32_KHR |
| |
| VkResult DispatchGetDeviceGroupSurfacePresentModes2EXT(VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, |
| VkDeviceGroupPresentModeFlagsKHR* pModes) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes); |
| safe_VkPhysicalDeviceSurfaceInfo2KHR var_local_pSurfaceInfo; |
| safe_VkPhysicalDeviceSurfaceInfo2KHR* local_pSurfaceInfo = nullptr; |
| { |
| if (pSurfaceInfo) { |
| local_pSurfaceInfo = &var_local_pSurfaceInfo; |
| local_pSurfaceInfo->initialize(pSurfaceInfo); |
| |
| if (pSurfaceInfo->surface) { |
| local_pSurfaceInfo->surface = layer_data->Unwrap(pSurfaceInfo->surface); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.GetDeviceGroupSurfacePresentModes2EXT( |
| device, (const VkPhysicalDeviceSurfaceInfo2KHR*)local_pSurfaceInfo, pModes); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_WIN32_KHR |
| |
| VkResult DispatchCreateHeadlessSurfaceEXT(VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.CreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface); |
| |
| VkResult result = layer_data->instance_dispatch_table.CreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface); |
| if (VK_SUCCESS == result) { |
| *pSurface = layer_data->WrapNew(*pSurface); |
| } |
| return result; |
| } |
| |
| void DispatchCmdSetLineStippleEXT(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern); |
| } |
| |
| void DispatchResetQueryPoolEXT(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.ResetQueryPoolEXT(device, queryPool, firstQuery, queryCount); |
| { queryPool = layer_data->Unwrap(queryPool); } |
| layer_data->device_dispatch_table.ResetQueryPoolEXT(device, queryPool, firstQuery, queryCount); |
| } |
| |
| void DispatchCmdSetCullModeEXT(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetCullModeEXT(commandBuffer, cullMode); |
| } |
| |
| void DispatchCmdSetFrontFaceEXT(VkCommandBuffer commandBuffer, VkFrontFace frontFace) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetFrontFaceEXT(commandBuffer, frontFace); |
| } |
| |
| void DispatchCmdSetPrimitiveTopologyEXT(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology); |
| } |
| |
| void DispatchCmdSetViewportWithCountEXT(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports); |
| } |
| |
| void DispatchCmdSetScissorWithCountEXT(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors); |
| } |
| |
| void DispatchCmdBindVertexBuffers2EXT(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, |
| const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, |
| const VkDeviceSize* pStrides) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, |
| pOffsets, pSizes, pStrides); |
| VkBuffer var_local_pBuffers[DISPATCH_MAX_STACK_ALLOCATIONS]; |
| VkBuffer* local_pBuffers = nullptr; |
| { |
| if (pBuffers) { |
| local_pBuffers = bindingCount > DISPATCH_MAX_STACK_ALLOCATIONS ? new VkBuffer[bindingCount] : var_local_pBuffers; |
| for (uint32_t index0 = 0; index0 < bindingCount; ++index0) { |
| local_pBuffers[index0] = layer_data->Unwrap(pBuffers[index0]); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, |
| (const VkBuffer*)local_pBuffers, pOffsets, pSizes, pStrides); |
| if (local_pBuffers != var_local_pBuffers) delete[] local_pBuffers; |
| } |
| |
| void DispatchCmdSetDepthTestEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable); |
| } |
| |
| void DispatchCmdSetDepthWriteEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable); |
| } |
| |
| void DispatchCmdSetDepthCompareOpEXT(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp); |
| } |
| |
| void DispatchCmdSetDepthBoundsTestEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable); |
| } |
| |
| void DispatchCmdSetStencilTestEnableEXT(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable); |
| } |
| |
| void DispatchCmdSetStencilOpEXT(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, |
| VkStencilOp depthFailOp, VkCompareOp compareOp) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp); |
| } |
| |
| VkResult DispatchCopyMemoryToImageEXT(VkDevice device, const VkCopyMemoryToImageInfoEXT* pCopyMemoryToImageInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CopyMemoryToImageEXT(device, pCopyMemoryToImageInfo); |
| safe_VkCopyMemoryToImageInfoEXT var_local_pCopyMemoryToImageInfo; |
| safe_VkCopyMemoryToImageInfoEXT* local_pCopyMemoryToImageInfo = nullptr; |
| { |
| if (pCopyMemoryToImageInfo) { |
| local_pCopyMemoryToImageInfo = &var_local_pCopyMemoryToImageInfo; |
| local_pCopyMemoryToImageInfo->initialize(pCopyMemoryToImageInfo); |
| |
| if (pCopyMemoryToImageInfo->dstImage) { |
| local_pCopyMemoryToImageInfo->dstImage = layer_data->Unwrap(pCopyMemoryToImageInfo->dstImage); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CopyMemoryToImageEXT( |
| device, (const VkCopyMemoryToImageInfoEXT*)local_pCopyMemoryToImageInfo); |
| |
| return result; |
| } |
| |
| VkResult DispatchCopyImageToMemoryEXT(VkDevice device, const VkCopyImageToMemoryInfoEXT* pCopyImageToMemoryInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CopyImageToMemoryEXT(device, pCopyImageToMemoryInfo); |
| safe_VkCopyImageToMemoryInfoEXT var_local_pCopyImageToMemoryInfo; |
| safe_VkCopyImageToMemoryInfoEXT* local_pCopyImageToMemoryInfo = nullptr; |
| { |
| if (pCopyImageToMemoryInfo) { |
| local_pCopyImageToMemoryInfo = &var_local_pCopyImageToMemoryInfo; |
| local_pCopyImageToMemoryInfo->initialize(pCopyImageToMemoryInfo); |
| |
| if (pCopyImageToMemoryInfo->srcImage) { |
| local_pCopyImageToMemoryInfo->srcImage = layer_data->Unwrap(pCopyImageToMemoryInfo->srcImage); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CopyImageToMemoryEXT( |
| device, (const VkCopyImageToMemoryInfoEXT*)local_pCopyImageToMemoryInfo); |
| |
| return result; |
| } |
| |
| VkResult DispatchCopyImageToImageEXT(VkDevice device, const VkCopyImageToImageInfoEXT* pCopyImageToImageInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CopyImageToImageEXT(device, pCopyImageToImageInfo); |
| safe_VkCopyImageToImageInfoEXT var_local_pCopyImageToImageInfo; |
| safe_VkCopyImageToImageInfoEXT* local_pCopyImageToImageInfo = nullptr; |
| { |
| if (pCopyImageToImageInfo) { |
| local_pCopyImageToImageInfo = &var_local_pCopyImageToImageInfo; |
| local_pCopyImageToImageInfo->initialize(pCopyImageToImageInfo); |
| |
| if (pCopyImageToImageInfo->srcImage) { |
| local_pCopyImageToImageInfo->srcImage = layer_data->Unwrap(pCopyImageToImageInfo->srcImage); |
| } |
| if (pCopyImageToImageInfo->dstImage) { |
| local_pCopyImageToImageInfo->dstImage = layer_data->Unwrap(pCopyImageToImageInfo->dstImage); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CopyImageToImageEXT( |
| device, (const VkCopyImageToImageInfoEXT*)local_pCopyImageToImageInfo); |
| |
| return result; |
| } |
| |
| VkResult DispatchTransitionImageLayoutEXT(VkDevice device, uint32_t transitionCount, |
| const VkHostImageLayoutTransitionInfoEXT* pTransitions) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.TransitionImageLayoutEXT(device, transitionCount, pTransitions); |
| safe_VkHostImageLayoutTransitionInfoEXT* local_pTransitions = nullptr; |
| { |
| if (pTransitions) { |
| local_pTransitions = new safe_VkHostImageLayoutTransitionInfoEXT[transitionCount]; |
| for (uint32_t index0 = 0; index0 < transitionCount; ++index0) { |
| local_pTransitions[index0].initialize(&pTransitions[index0]); |
| |
| if (pTransitions[index0].image) { |
| local_pTransitions[index0].image = layer_data->Unwrap(pTransitions[index0].image); |
| } |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.TransitionImageLayoutEXT( |
| device, transitionCount, (const VkHostImageLayoutTransitionInfoEXT*)local_pTransitions); |
| if (local_pTransitions) { |
| delete[] local_pTransitions; |
| } |
| return result; |
| } |
| |
| void DispatchGetImageSubresourceLayout2EXT(VkDevice device, VkImage image, const VkImageSubresource2KHR* pSubresource, |
| VkSubresourceLayout2KHR* pLayout) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout); |
| { image = layer_data->Unwrap(image); } |
| layer_data->device_dispatch_table.GetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout); |
| } |
| |
| VkResult DispatchReleaseSwapchainImagesEXT(VkDevice device, const VkReleaseSwapchainImagesInfoEXT* pReleaseInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.ReleaseSwapchainImagesEXT(device, pReleaseInfo); |
| safe_VkReleaseSwapchainImagesInfoEXT var_local_pReleaseInfo; |
| safe_VkReleaseSwapchainImagesInfoEXT* local_pReleaseInfo = nullptr; |
| { |
| if (pReleaseInfo) { |
| local_pReleaseInfo = &var_local_pReleaseInfo; |
| local_pReleaseInfo->initialize(pReleaseInfo); |
| |
| if (pReleaseInfo->swapchain) { |
| local_pReleaseInfo->swapchain = layer_data->Unwrap(pReleaseInfo->swapchain); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.ReleaseSwapchainImagesEXT( |
| device, (const VkReleaseSwapchainImagesInfoEXT*)local_pReleaseInfo); |
| |
| return result; |
| } |
| |
| void DispatchGetGeneratedCommandsMemoryRequirementsNV(VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, |
| VkMemoryRequirements2* pMemoryRequirements) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements); |
| safe_VkGeneratedCommandsMemoryRequirementsInfoNV var_local_pInfo; |
| safe_VkGeneratedCommandsMemoryRequirementsInfoNV* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->pipeline) { |
| local_pInfo->pipeline = layer_data->Unwrap(pInfo->pipeline); |
| } |
| if (pInfo->indirectCommandsLayout) { |
| local_pInfo->indirectCommandsLayout = layer_data->Unwrap(pInfo->indirectCommandsLayout); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.GetGeneratedCommandsMemoryRequirementsNV( |
| device, (const VkGeneratedCommandsMemoryRequirementsInfoNV*)local_pInfo, pMemoryRequirements); |
| } |
| |
| void DispatchCmdPreprocessGeneratedCommandsNV(VkCommandBuffer commandBuffer, |
| const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo); |
| safe_VkGeneratedCommandsInfoNV var_local_pGeneratedCommandsInfo; |
| safe_VkGeneratedCommandsInfoNV* local_pGeneratedCommandsInfo = nullptr; |
| { |
| if (pGeneratedCommandsInfo) { |
| local_pGeneratedCommandsInfo = &var_local_pGeneratedCommandsInfo; |
| local_pGeneratedCommandsInfo->initialize(pGeneratedCommandsInfo); |
| |
| if (pGeneratedCommandsInfo->pipeline) { |
| local_pGeneratedCommandsInfo->pipeline = layer_data->Unwrap(pGeneratedCommandsInfo->pipeline); |
| } |
| if (pGeneratedCommandsInfo->indirectCommandsLayout) { |
| local_pGeneratedCommandsInfo->indirectCommandsLayout = |
| layer_data->Unwrap(pGeneratedCommandsInfo->indirectCommandsLayout); |
| } |
| if (local_pGeneratedCommandsInfo->pStreams) { |
| for (uint32_t index1 = 0; index1 < local_pGeneratedCommandsInfo->streamCount; ++index1) { |
| if (pGeneratedCommandsInfo->pStreams[index1].buffer) { |
| local_pGeneratedCommandsInfo->pStreams[index1].buffer = |
| layer_data->Unwrap(pGeneratedCommandsInfo->pStreams[index1].buffer); |
| } |
| } |
| } |
| |
| if (pGeneratedCommandsInfo->preprocessBuffer) { |
| local_pGeneratedCommandsInfo->preprocessBuffer = layer_data->Unwrap(pGeneratedCommandsInfo->preprocessBuffer); |
| } |
| if (pGeneratedCommandsInfo->sequencesCountBuffer) { |
| local_pGeneratedCommandsInfo->sequencesCountBuffer = |
| layer_data->Unwrap(pGeneratedCommandsInfo->sequencesCountBuffer); |
| } |
| if (pGeneratedCommandsInfo->sequencesIndexBuffer) { |
| local_pGeneratedCommandsInfo->sequencesIndexBuffer = |
| layer_data->Unwrap(pGeneratedCommandsInfo->sequencesIndexBuffer); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdPreprocessGeneratedCommandsNV( |
| commandBuffer, (const VkGeneratedCommandsInfoNV*)local_pGeneratedCommandsInfo); |
| } |
| |
| void DispatchCmdExecuteGeneratedCommandsNV(VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, |
| const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, |
| pGeneratedCommandsInfo); |
| safe_VkGeneratedCommandsInfoNV var_local_pGeneratedCommandsInfo; |
| safe_VkGeneratedCommandsInfoNV* local_pGeneratedCommandsInfo = nullptr; |
| { |
| if (pGeneratedCommandsInfo) { |
| local_pGeneratedCommandsInfo = &var_local_pGeneratedCommandsInfo; |
| local_pGeneratedCommandsInfo->initialize(pGeneratedCommandsInfo); |
| |
| if (pGeneratedCommandsInfo->pipeline) { |
| local_pGeneratedCommandsInfo->pipeline = layer_data->Unwrap(pGeneratedCommandsInfo->pipeline); |
| } |
| if (pGeneratedCommandsInfo->indirectCommandsLayout) { |
| local_pGeneratedCommandsInfo->indirectCommandsLayout = |
| layer_data->Unwrap(pGeneratedCommandsInfo->indirectCommandsLayout); |
| } |
| if (local_pGeneratedCommandsInfo->pStreams) { |
| for (uint32_t index1 = 0; index1 < local_pGeneratedCommandsInfo->streamCount; ++index1) { |
| if (pGeneratedCommandsInfo->pStreams[index1].buffer) { |
| local_pGeneratedCommandsInfo->pStreams[index1].buffer = |
| layer_data->Unwrap(pGeneratedCommandsInfo->pStreams[index1].buffer); |
| } |
| } |
| } |
| |
| if (pGeneratedCommandsInfo->preprocessBuffer) { |
| local_pGeneratedCommandsInfo->preprocessBuffer = layer_data->Unwrap(pGeneratedCommandsInfo->preprocessBuffer); |
| } |
| if (pGeneratedCommandsInfo->sequencesCountBuffer) { |
| local_pGeneratedCommandsInfo->sequencesCountBuffer = |
| layer_data->Unwrap(pGeneratedCommandsInfo->sequencesCountBuffer); |
| } |
| if (pGeneratedCommandsInfo->sequencesIndexBuffer) { |
| local_pGeneratedCommandsInfo->sequencesIndexBuffer = |
| layer_data->Unwrap(pGeneratedCommandsInfo->sequencesIndexBuffer); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, |
| (const VkGeneratedCommandsInfoNV*)local_pGeneratedCommandsInfo); |
| } |
| |
| void DispatchCmdBindPipelineShaderGroupNV(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline, |
| uint32_t groupIndex) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, |
| groupIndex); |
| { pipeline = layer_data->Unwrap(pipeline); } |
| layer_data->device_dispatch_table.CmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex); |
| } |
| |
| VkResult DispatchCreateIndirectCommandsLayoutNV(VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkIndirectCommandsLayoutNV* pIndirectCommandsLayout) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, |
| pIndirectCommandsLayout); |
| safe_VkIndirectCommandsLayoutCreateInfoNV var_local_pCreateInfo; |
| safe_VkIndirectCommandsLayoutCreateInfoNV* local_pCreateInfo = nullptr; |
| { |
| if (pCreateInfo) { |
| local_pCreateInfo = &var_local_pCreateInfo; |
| local_pCreateInfo->initialize(pCreateInfo); |
| if (local_pCreateInfo->pTokens) { |
| for (uint32_t index1 = 0; index1 < local_pCreateInfo->tokenCount; ++index1) { |
| if (pCreateInfo->pTokens[index1].pushconstantPipelineLayout) { |
| local_pCreateInfo->pTokens[index1].pushconstantPipelineLayout = |
| layer_data->Unwrap(pCreateInfo->pTokens[index1].pushconstantPipelineLayout); |
| } |
| } |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CreateIndirectCommandsLayoutNV( |
| device, (const VkIndirectCommandsLayoutCreateInfoNV*)local_pCreateInfo, pAllocator, pIndirectCommandsLayout); |
| if (VK_SUCCESS == result) { |
| *pIndirectCommandsLayout = layer_data->WrapNew(*pIndirectCommandsLayout); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyIndirectCommandsLayoutNV(VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout, |
| const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.DestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator); |
| |
| uint64_t indirectCommandsLayout_id = CastToUint64(indirectCommandsLayout); |
| auto iter = unique_id_mapping.pop(indirectCommandsLayout_id); |
| if (iter != unique_id_mapping.end()) { |
| indirectCommandsLayout = (VkIndirectCommandsLayoutNV)iter->second; |
| } else { |
| indirectCommandsLayout = (VkIndirectCommandsLayoutNV)0; |
| } |
| layer_data->device_dispatch_table.DestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator); |
| } |
| |
| void DispatchCmdSetDepthBias2EXT(VkCommandBuffer commandBuffer, const VkDepthBiasInfoEXT* pDepthBiasInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo); |
| } |
| |
| VkResult DispatchAcquireDrmDisplayEXT(VkPhysicalDevice physicalDevice, int32_t drmFd, VkDisplayKHR display) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| if (!wrap_handles) return layer_data->instance_dispatch_table.AcquireDrmDisplayEXT(physicalDevice, drmFd, display); |
| { display = layer_data->Unwrap(display); } |
| VkResult result = layer_data->instance_dispatch_table.AcquireDrmDisplayEXT(physicalDevice, drmFd, display); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetDrmDisplayEXT(VkPhysicalDevice physicalDevice, int32_t drmFd, uint32_t connectorId, VkDisplayKHR* display) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| if (!wrap_handles) return layer_data->instance_dispatch_table.GetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display); |
| |
| VkResult result = layer_data->instance_dispatch_table.GetDrmDisplayEXT(physicalDevice, drmFd, connectorId, display); |
| if (VK_SUCCESS == result) { |
| *display = layer_data->WrapNew(*display); |
| } |
| return result; |
| } |
| |
| VkResult DispatchCreatePrivateDataSlotEXT(VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkPrivateDataSlot* pPrivateDataSlot) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot); |
| |
| VkResult result = layer_data->device_dispatch_table.CreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot); |
| if (VK_SUCCESS == result) { |
| *pPrivateDataSlot = layer_data->WrapNew(*pPrivateDataSlot); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyPrivateDataSlotEXT(VkDevice device, VkPrivateDataSlot privateDataSlot, |
| const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator); |
| |
| uint64_t privateDataSlot_id = CastToUint64(privateDataSlot); |
| auto iter = unique_id_mapping.pop(privateDataSlot_id); |
| if (iter != unique_id_mapping.end()) { |
| privateDataSlot = (VkPrivateDataSlot)iter->second; |
| } else { |
| privateDataSlot = (VkPrivateDataSlot)0; |
| } |
| layer_data->device_dispatch_table.DestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator); |
| } |
| |
| void DispatchGetDescriptorSetLayoutSizeEXT(VkDevice device, VkDescriptorSetLayout layout, VkDeviceSize* pLayoutSizeInBytes) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes); |
| { layout = layer_data->Unwrap(layout); } |
| layer_data->device_dispatch_table.GetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes); |
| } |
| |
| void DispatchGetDescriptorSetLayoutBindingOffsetEXT(VkDevice device, VkDescriptorSetLayout layout, uint32_t binding, |
| VkDeviceSize* pOffset) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset); |
| { layout = layer_data->Unwrap(layout); } |
| layer_data->device_dispatch_table.GetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset); |
| } |
| |
| void DispatchCmdBindDescriptorBuffersEXT(VkCommandBuffer commandBuffer, uint32_t bufferCount, |
| const VkDescriptorBufferBindingInfoEXT* pBindingInfos) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos); |
| safe_VkDescriptorBufferBindingInfoEXT* local_pBindingInfos = nullptr; |
| { |
| if (pBindingInfos) { |
| local_pBindingInfos = new safe_VkDescriptorBufferBindingInfoEXT[bufferCount]; |
| for (uint32_t index0 = 0; index0 < bufferCount; ++index0) { |
| local_pBindingInfos[index0].initialize(&pBindingInfos[index0]); |
| WrapPnextChainHandles(layer_data, local_pBindingInfos[index0].pNext); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, |
| (const VkDescriptorBufferBindingInfoEXT*)local_pBindingInfos); |
| if (local_pBindingInfos) { |
| delete[] local_pBindingInfos; |
| } |
| } |
| |
| void DispatchCmdSetDescriptorBufferOffsetsEXT(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, |
| VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, |
| const uint32_t* pBufferIndices, const VkDeviceSize* pOffsets) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, |
| firstSet, setCount, pBufferIndices, pOffsets); |
| { layout = layer_data->Unwrap(layout); } |
| layer_data->device_dispatch_table.CmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, |
| pBufferIndices, pOffsets); |
| } |
| |
| void DispatchCmdBindDescriptorBufferEmbeddedSamplersEXT(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, |
| VkPipelineLayout layout, uint32_t set) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, |
| layout, set); |
| { layout = layer_data->Unwrap(layout); } |
| layer_data->device_dispatch_table.CmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set); |
| } |
| |
| VkResult DispatchGetBufferOpaqueCaptureDescriptorDataEXT(VkDevice device, const VkBufferCaptureDescriptorDataInfoEXT* pInfo, |
| void* pData) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData); |
| safe_VkBufferCaptureDescriptorDataInfoEXT var_local_pInfo; |
| safe_VkBufferCaptureDescriptorDataInfoEXT* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->buffer) { |
| local_pInfo->buffer = layer_data->Unwrap(pInfo->buffer); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.GetBufferOpaqueCaptureDescriptorDataEXT( |
| device, (const VkBufferCaptureDescriptorDataInfoEXT*)local_pInfo, pData); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetImageOpaqueCaptureDescriptorDataEXT(VkDevice device, const VkImageCaptureDescriptorDataInfoEXT* pInfo, |
| void* pData) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData); |
| safe_VkImageCaptureDescriptorDataInfoEXT var_local_pInfo; |
| safe_VkImageCaptureDescriptorDataInfoEXT* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->image) { |
| local_pInfo->image = layer_data->Unwrap(pInfo->image); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.GetImageOpaqueCaptureDescriptorDataEXT( |
| device, (const VkImageCaptureDescriptorDataInfoEXT*)local_pInfo, pData); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetImageViewOpaqueCaptureDescriptorDataEXT(VkDevice device, const VkImageViewCaptureDescriptorDataInfoEXT* pInfo, |
| void* pData) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData); |
| safe_VkImageViewCaptureDescriptorDataInfoEXT var_local_pInfo; |
| safe_VkImageViewCaptureDescriptorDataInfoEXT* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->imageView) { |
| local_pInfo->imageView = layer_data->Unwrap(pInfo->imageView); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.GetImageViewOpaqueCaptureDescriptorDataEXT( |
| device, (const VkImageViewCaptureDescriptorDataInfoEXT*)local_pInfo, pData); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetSamplerOpaqueCaptureDescriptorDataEXT(VkDevice device, const VkSamplerCaptureDescriptorDataInfoEXT* pInfo, |
| void* pData) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData); |
| safe_VkSamplerCaptureDescriptorDataInfoEXT var_local_pInfo; |
| safe_VkSamplerCaptureDescriptorDataInfoEXT* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->sampler) { |
| local_pInfo->sampler = layer_data->Unwrap(pInfo->sampler); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.GetSamplerOpaqueCaptureDescriptorDataEXT( |
| device, (const VkSamplerCaptureDescriptorDataInfoEXT*)local_pInfo, pData); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetAccelerationStructureOpaqueCaptureDescriptorDataEXT( |
| VkDevice device, const VkAccelerationStructureCaptureDescriptorDataInfoEXT* pInfo, void* pData) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData); |
| safe_VkAccelerationStructureCaptureDescriptorDataInfoEXT var_local_pInfo; |
| safe_VkAccelerationStructureCaptureDescriptorDataInfoEXT* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->accelerationStructure) { |
| local_pInfo->accelerationStructure = layer_data->Unwrap(pInfo->accelerationStructure); |
| } |
| if (pInfo->accelerationStructureNV) { |
| local_pInfo->accelerationStructureNV = layer_data->Unwrap(pInfo->accelerationStructureNV); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.GetAccelerationStructureOpaqueCaptureDescriptorDataEXT( |
| device, (const VkAccelerationStructureCaptureDescriptorDataInfoEXT*)local_pInfo, pData); |
| |
| return result; |
| } |
| |
| void DispatchCmdSetFragmentShadingRateEnumNV(VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, |
| const VkFragmentShadingRateCombinerOpKHR combinerOps[2]) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps); |
| } |
| |
| VkResult DispatchGetDeviceFaultInfoEXT(VkDevice device, VkDeviceFaultCountsEXT* pFaultCounts, VkDeviceFaultInfoEXT* pFaultInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| VkResult result = layer_data->device_dispatch_table.GetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo); |
| |
| return result; |
| } |
| #ifdef VK_USE_PLATFORM_WIN32_KHR |
| |
| VkResult DispatchAcquireWinrtDisplayNV(VkPhysicalDevice physicalDevice, VkDisplayKHR display) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| if (!wrap_handles) return layer_data->instance_dispatch_table.AcquireWinrtDisplayNV(physicalDevice, display); |
| { display = layer_data->Unwrap(display); } |
| VkResult result = layer_data->instance_dispatch_table.AcquireWinrtDisplayNV(physicalDevice, display); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_WIN32_KHR |
| #ifdef VK_USE_PLATFORM_WIN32_KHR |
| |
| VkResult DispatchGetWinrtDisplayNV(VkPhysicalDevice physicalDevice, uint32_t deviceRelativeId, VkDisplayKHR* pDisplay) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| if (!wrap_handles) return layer_data->instance_dispatch_table.GetWinrtDisplayNV(physicalDevice, deviceRelativeId, pDisplay); |
| { pDisplay = layer_data->Unwrap(pDisplay); } |
| VkResult result = layer_data->instance_dispatch_table.GetWinrtDisplayNV(physicalDevice, deviceRelativeId, pDisplay); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_WIN32_KHR |
| #ifdef VK_USE_PLATFORM_DIRECTFB_EXT |
| |
| VkResult DispatchCreateDirectFBSurfaceEXT(VkInstance instance, const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.CreateDirectFBSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface); |
| |
| VkResult result = layer_data->instance_dispatch_table.CreateDirectFBSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface); |
| if (VK_SUCCESS == result) { |
| *pSurface = layer_data->WrapNew(*pSurface); |
| } |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_DIRECTFB_EXT |
| #ifdef VK_USE_PLATFORM_DIRECTFB_EXT |
| |
| VkBool32 DispatchGetPhysicalDeviceDirectFBPresentationSupportEXT(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, |
| IDirectFB* dfb) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| VkBool32 result = |
| layer_data->instance_dispatch_table.GetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice, queueFamilyIndex, dfb); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_DIRECTFB_EXT |
| |
| void DispatchCmdSetVertexInputEXT(VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount, |
| const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, |
| uint32_t vertexAttributeDescriptionCount, |
| const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, |
| vertexAttributeDescriptionCount, pVertexAttributeDescriptions); |
| } |
| #ifdef VK_USE_PLATFORM_FUCHSIA |
| |
| VkResult DispatchGetMemoryZirconHandleFUCHSIA(VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, |
| zx_handle_t* pZirconHandle) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetMemoryZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle); |
| safe_VkMemoryGetZirconHandleInfoFUCHSIA var_local_pGetZirconHandleInfo; |
| safe_VkMemoryGetZirconHandleInfoFUCHSIA* local_pGetZirconHandleInfo = nullptr; |
| { |
| if (pGetZirconHandleInfo) { |
| local_pGetZirconHandleInfo = &var_local_pGetZirconHandleInfo; |
| local_pGetZirconHandleInfo->initialize(pGetZirconHandleInfo); |
| |
| if (pGetZirconHandleInfo->memory) { |
| local_pGetZirconHandleInfo->memory = layer_data->Unwrap(pGetZirconHandleInfo->memory); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.GetMemoryZirconHandleFUCHSIA( |
| device, (const VkMemoryGetZirconHandleInfoFUCHSIA*)local_pGetZirconHandleInfo, pZirconHandle); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_FUCHSIA |
| #ifdef VK_USE_PLATFORM_FUCHSIA |
| |
| VkResult DispatchGetMemoryZirconHandlePropertiesFUCHSIA(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, |
| zx_handle_t zirconHandle, |
| VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| VkResult result = layer_data->device_dispatch_table.GetMemoryZirconHandlePropertiesFUCHSIA(device, handleType, zirconHandle, |
| pMemoryZirconHandleProperties); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_FUCHSIA |
| #ifdef VK_USE_PLATFORM_FUCHSIA |
| |
| VkResult DispatchImportSemaphoreZirconHandleFUCHSIA( |
| VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.ImportSemaphoreZirconHandleFUCHSIA(device, pImportSemaphoreZirconHandleInfo); |
| safe_VkImportSemaphoreZirconHandleInfoFUCHSIA var_local_pImportSemaphoreZirconHandleInfo; |
| safe_VkImportSemaphoreZirconHandleInfoFUCHSIA* local_pImportSemaphoreZirconHandleInfo = nullptr; |
| { |
| if (pImportSemaphoreZirconHandleInfo) { |
| local_pImportSemaphoreZirconHandleInfo = &var_local_pImportSemaphoreZirconHandleInfo; |
| local_pImportSemaphoreZirconHandleInfo->initialize(pImportSemaphoreZirconHandleInfo); |
| |
| if (pImportSemaphoreZirconHandleInfo->semaphore) { |
| local_pImportSemaphoreZirconHandleInfo->semaphore = layer_data->Unwrap(pImportSemaphoreZirconHandleInfo->semaphore); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.ImportSemaphoreZirconHandleFUCHSIA( |
| device, (const VkImportSemaphoreZirconHandleInfoFUCHSIA*)local_pImportSemaphoreZirconHandleInfo); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_FUCHSIA |
| #ifdef VK_USE_PLATFORM_FUCHSIA |
| |
| VkResult DispatchGetSemaphoreZirconHandleFUCHSIA(VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, |
| zx_handle_t* pZirconHandle) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetSemaphoreZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle); |
| safe_VkSemaphoreGetZirconHandleInfoFUCHSIA var_local_pGetZirconHandleInfo; |
| safe_VkSemaphoreGetZirconHandleInfoFUCHSIA* local_pGetZirconHandleInfo = nullptr; |
| { |
| if (pGetZirconHandleInfo) { |
| local_pGetZirconHandleInfo = &var_local_pGetZirconHandleInfo; |
| local_pGetZirconHandleInfo->initialize(pGetZirconHandleInfo); |
| |
| if (pGetZirconHandleInfo->semaphore) { |
| local_pGetZirconHandleInfo->semaphore = layer_data->Unwrap(pGetZirconHandleInfo->semaphore); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.GetSemaphoreZirconHandleFUCHSIA( |
| device, (const VkSemaphoreGetZirconHandleInfoFUCHSIA*)local_pGetZirconHandleInfo, pZirconHandle); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_FUCHSIA |
| #ifdef VK_USE_PLATFORM_FUCHSIA |
| |
| VkResult DispatchCreateBufferCollectionFUCHSIA(VkDevice device, const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkBufferCollectionFUCHSIA* pCollection) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CreateBufferCollectionFUCHSIA(device, pCreateInfo, pAllocator, pCollection); |
| |
| VkResult result = layer_data->device_dispatch_table.CreateBufferCollectionFUCHSIA(device, pCreateInfo, pAllocator, pCollection); |
| if (VK_SUCCESS == result) { |
| *pCollection = layer_data->WrapNew(*pCollection); |
| } |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_FUCHSIA |
| #ifdef VK_USE_PLATFORM_FUCHSIA |
| |
| VkResult DispatchSetBufferCollectionImageConstraintsFUCHSIA(VkDevice device, VkBufferCollectionFUCHSIA collection, |
| const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.SetBufferCollectionImageConstraintsFUCHSIA(device, collection, |
| pImageConstraintsInfo); |
| { collection = layer_data->Unwrap(collection); } |
| VkResult result = |
| layer_data->device_dispatch_table.SetBufferCollectionImageConstraintsFUCHSIA(device, collection, pImageConstraintsInfo); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_FUCHSIA |
| #ifdef VK_USE_PLATFORM_FUCHSIA |
| |
| VkResult DispatchSetBufferCollectionBufferConstraintsFUCHSIA(VkDevice device, VkBufferCollectionFUCHSIA collection, |
| const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.SetBufferCollectionBufferConstraintsFUCHSIA(device, collection, |
| pBufferConstraintsInfo); |
| { collection = layer_data->Unwrap(collection); } |
| VkResult result = |
| layer_data->device_dispatch_table.SetBufferCollectionBufferConstraintsFUCHSIA(device, collection, pBufferConstraintsInfo); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_FUCHSIA |
| #ifdef VK_USE_PLATFORM_FUCHSIA |
| |
| void DispatchDestroyBufferCollectionFUCHSIA(VkDevice device, VkBufferCollectionFUCHSIA collection, |
| const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyBufferCollectionFUCHSIA(device, collection, pAllocator); |
| |
| uint64_t collection_id = CastToUint64(collection); |
| auto iter = unique_id_mapping.pop(collection_id); |
| if (iter != unique_id_mapping.end()) { |
| collection = (VkBufferCollectionFUCHSIA)iter->second; |
| } else { |
| collection = (VkBufferCollectionFUCHSIA)0; |
| } |
| layer_data->device_dispatch_table.DestroyBufferCollectionFUCHSIA(device, collection, pAllocator); |
| } |
| #endif // VK_USE_PLATFORM_FUCHSIA |
| #ifdef VK_USE_PLATFORM_FUCHSIA |
| |
| VkResult DispatchGetBufferCollectionPropertiesFUCHSIA(VkDevice device, VkBufferCollectionFUCHSIA collection, |
| VkBufferCollectionPropertiesFUCHSIA* pProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetBufferCollectionPropertiesFUCHSIA(device, collection, pProperties); |
| { collection = layer_data->Unwrap(collection); } |
| VkResult result = layer_data->device_dispatch_table.GetBufferCollectionPropertiesFUCHSIA(device, collection, pProperties); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_FUCHSIA |
| |
| VkResult DispatchGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(VkDevice device, VkRenderPass renderpass, |
| VkExtent2D* pMaxWorkgroupSize) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, |
| pMaxWorkgroupSize); |
| { renderpass = layer_data->Unwrap(renderpass); } |
| VkResult result = |
| layer_data->device_dispatch_table.GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize); |
| |
| return result; |
| } |
| |
| void DispatchCmdSubpassShadingHUAWEI(VkCommandBuffer commandBuffer) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSubpassShadingHUAWEI(commandBuffer); |
| } |
| |
| void DispatchCmdBindInvocationMaskHUAWEI(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout); |
| { imageView = layer_data->Unwrap(imageView); } |
| layer_data->device_dispatch_table.CmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout); |
| } |
| |
| VkResult DispatchGetMemoryRemoteAddressNV(VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, |
| VkRemoteAddressNV* pAddress) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress); |
| safe_VkMemoryGetRemoteAddressInfoNV var_local_pMemoryGetRemoteAddressInfo; |
| safe_VkMemoryGetRemoteAddressInfoNV* local_pMemoryGetRemoteAddressInfo = nullptr; |
| { |
| if (pMemoryGetRemoteAddressInfo) { |
| local_pMemoryGetRemoteAddressInfo = &var_local_pMemoryGetRemoteAddressInfo; |
| local_pMemoryGetRemoteAddressInfo->initialize(pMemoryGetRemoteAddressInfo); |
| |
| if (pMemoryGetRemoteAddressInfo->memory) { |
| local_pMemoryGetRemoteAddressInfo->memory = layer_data->Unwrap(pMemoryGetRemoteAddressInfo->memory); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.GetMemoryRemoteAddressNV( |
| device, (const VkMemoryGetRemoteAddressInfoNV*)local_pMemoryGetRemoteAddressInfo, pAddress); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetPipelinePropertiesEXT(VkDevice device, const VkPipelineInfoEXT* pPipelineInfo, |
| VkBaseOutStructure* pPipelineProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| VkResult result = layer_data->device_dispatch_table.GetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties); |
| |
| return result; |
| } |
| |
| void DispatchCmdSetPatchControlPointsEXT(VkCommandBuffer commandBuffer, uint32_t patchControlPoints) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints); |
| } |
| |
| void DispatchCmdSetRasterizerDiscardEnableEXT(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable); |
| } |
| |
| void DispatchCmdSetDepthBiasEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable); |
| } |
| |
| void DispatchCmdSetLogicOpEXT(VkCommandBuffer commandBuffer, VkLogicOp logicOp) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetLogicOpEXT(commandBuffer, logicOp); |
| } |
| |
| void DispatchCmdSetPrimitiveRestartEnableEXT(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable); |
| } |
| #ifdef VK_USE_PLATFORM_SCREEN_QNX |
| |
| VkResult DispatchCreateScreenSurfaceQNX(VkInstance instance, const VkScreenSurfaceCreateInfoQNX* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->instance_dispatch_table.CreateScreenSurfaceQNX(instance, pCreateInfo, pAllocator, pSurface); |
| |
| VkResult result = layer_data->instance_dispatch_table.CreateScreenSurfaceQNX(instance, pCreateInfo, pAllocator, pSurface); |
| if (VK_SUCCESS == result) { |
| *pSurface = layer_data->WrapNew(*pSurface); |
| } |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_SCREEN_QNX |
| #ifdef VK_USE_PLATFORM_SCREEN_QNX |
| |
| VkBool32 DispatchGetPhysicalDeviceScreenPresentationSupportQNX(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, |
| struct _screen_window* window) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| VkBool32 result = |
| layer_data->instance_dispatch_table.GetPhysicalDeviceScreenPresentationSupportQNX(physicalDevice, queueFamilyIndex, window); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_SCREEN_QNX |
| |
| void DispatchCmdSetColorWriteEnableEXT(VkCommandBuffer commandBuffer, uint32_t attachmentCount, |
| const VkBool32* pColorWriteEnables) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables); |
| } |
| |
| void DispatchCmdDrawMultiEXT(VkCommandBuffer commandBuffer, uint32_t drawCount, const VkMultiDrawInfoEXT* pVertexInfo, |
| uint32_t instanceCount, uint32_t firstInstance, uint32_t stride) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride); |
| } |
| |
| void DispatchCmdDrawMultiIndexedEXT(VkCommandBuffer commandBuffer, uint32_t drawCount, const VkMultiDrawIndexedInfoEXT* pIndexInfo, |
| uint32_t instanceCount, uint32_t firstInstance, uint32_t stride, const int32_t* pVertexOffset) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, |
| stride, pVertexOffset); |
| } |
| |
| VkResult DispatchCreateMicromapEXT(VkDevice device, const VkMicromapCreateInfoEXT* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkMicromapEXT* pMicromap) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap); |
| safe_VkMicromapCreateInfoEXT var_local_pCreateInfo; |
| safe_VkMicromapCreateInfoEXT* local_pCreateInfo = nullptr; |
| { |
| if (pCreateInfo) { |
| local_pCreateInfo = &var_local_pCreateInfo; |
| local_pCreateInfo->initialize(pCreateInfo); |
| |
| if (pCreateInfo->buffer) { |
| local_pCreateInfo->buffer = layer_data->Unwrap(pCreateInfo->buffer); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CreateMicromapEXT(device, (const VkMicromapCreateInfoEXT*)local_pCreateInfo, |
| pAllocator, pMicromap); |
| if (VK_SUCCESS == result) { |
| *pMicromap = layer_data->WrapNew(*pMicromap); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyMicromapEXT(VkDevice device, VkMicromapEXT micromap, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyMicromapEXT(device, micromap, pAllocator); |
| |
| uint64_t micromap_id = CastToUint64(micromap); |
| auto iter = unique_id_mapping.pop(micromap_id); |
| if (iter != unique_id_mapping.end()) { |
| micromap = (VkMicromapEXT)iter->second; |
| } else { |
| micromap = (VkMicromapEXT)0; |
| } |
| layer_data->device_dispatch_table.DestroyMicromapEXT(device, micromap, pAllocator); |
| } |
| |
| void DispatchCmdBuildMicromapsEXT(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkMicromapBuildInfoEXT* pInfos) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos); |
| safe_VkMicromapBuildInfoEXT* local_pInfos = nullptr; |
| { |
| if (pInfos) { |
| local_pInfos = new safe_VkMicromapBuildInfoEXT[infoCount]; |
| for (uint32_t index0 = 0; index0 < infoCount; ++index0) { |
| local_pInfos[index0].initialize(&pInfos[index0]); |
| |
| if (pInfos[index0].dstMicromap) { |
| local_pInfos[index0].dstMicromap = layer_data->Unwrap(pInfos[index0].dstMicromap); |
| } |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdBuildMicromapsEXT(commandBuffer, infoCount, (const VkMicromapBuildInfoEXT*)local_pInfos); |
| if (local_pInfos) { |
| delete[] local_pInfos; |
| } |
| } |
| |
| VkResult DispatchBuildMicromapsEXT(VkDevice device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount, |
| const VkMicromapBuildInfoEXT* pInfos) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.BuildMicromapsEXT(device, deferredOperation, infoCount, pInfos); |
| safe_VkMicromapBuildInfoEXT* local_pInfos = nullptr; |
| { |
| deferredOperation = layer_data->Unwrap(deferredOperation); |
| if (pInfos) { |
| local_pInfos = new safe_VkMicromapBuildInfoEXT[infoCount]; |
| for (uint32_t index0 = 0; index0 < infoCount; ++index0) { |
| local_pInfos[index0].initialize(&pInfos[index0]); |
| |
| if (pInfos[index0].dstMicromap) { |
| local_pInfos[index0].dstMicromap = layer_data->Unwrap(pInfos[index0].dstMicromap); |
| } |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.BuildMicromapsEXT(device, deferredOperation, infoCount, |
| (const VkMicromapBuildInfoEXT*)local_pInfos); |
| if (local_pInfos) { |
| // Fix check for deferred ray tracing pipeline creation |
| // https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/5817 |
| const bool is_operation_deferred = (deferredOperation != VK_NULL_HANDLE) && (result == VK_OPERATION_DEFERRED_KHR); |
| if (is_operation_deferred) { |
| std::vector<std::function<void()>> cleanup{[local_pInfos]() { delete[] local_pInfos; }}; |
| layer_data->deferred_operation_post_completion.insert(deferredOperation, cleanup); |
| } else { |
| delete[] local_pInfos; |
| } |
| } |
| return result; |
| } |
| |
| VkResult DispatchCopyMicromapEXT(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMicromapInfoEXT* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CopyMicromapEXT(device, deferredOperation, pInfo); |
| safe_VkCopyMicromapInfoEXT* local_pInfo = nullptr; |
| { |
| deferredOperation = layer_data->Unwrap(deferredOperation); |
| if (pInfo) { |
| local_pInfo = new safe_VkCopyMicromapInfoEXT; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->src) { |
| local_pInfo->src = layer_data->Unwrap(pInfo->src); |
| } |
| if (pInfo->dst) { |
| local_pInfo->dst = layer_data->Unwrap(pInfo->dst); |
| } |
| } |
| } |
| VkResult result = |
| layer_data->device_dispatch_table.CopyMicromapEXT(device, deferredOperation, (const VkCopyMicromapInfoEXT*)local_pInfo); |
| if (local_pInfo) { |
| // Fix check for deferred ray tracing pipeline creation |
| // https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/5817 |
| const bool is_operation_deferred = (deferredOperation != VK_NULL_HANDLE) && (result == VK_OPERATION_DEFERRED_KHR); |
| if (is_operation_deferred) { |
| std::vector<std::function<void()>> cleanup{[local_pInfo]() { delete local_pInfo; }}; |
| layer_data->deferred_operation_post_completion.insert(deferredOperation, cleanup); |
| } else { |
| delete local_pInfo; |
| } |
| } |
| return result; |
| } |
| |
| VkResult DispatchCopyMicromapToMemoryEXT(VkDevice device, VkDeferredOperationKHR deferredOperation, |
| const VkCopyMicromapToMemoryInfoEXT* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CopyMicromapToMemoryEXT(device, deferredOperation, pInfo); |
| safe_VkCopyMicromapToMemoryInfoEXT* local_pInfo = nullptr; |
| { |
| deferredOperation = layer_data->Unwrap(deferredOperation); |
| if (pInfo) { |
| local_pInfo = new safe_VkCopyMicromapToMemoryInfoEXT; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->src) { |
| local_pInfo->src = layer_data->Unwrap(pInfo->src); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CopyMicromapToMemoryEXT(device, deferredOperation, |
| (const VkCopyMicromapToMemoryInfoEXT*)local_pInfo); |
| if (local_pInfo) { |
| // Fix check for deferred ray tracing pipeline creation |
| // https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/5817 |
| const bool is_operation_deferred = (deferredOperation != VK_NULL_HANDLE) && (result == VK_OPERATION_DEFERRED_KHR); |
| if (is_operation_deferred) { |
| std::vector<std::function<void()>> cleanup{[local_pInfo]() { delete local_pInfo; }}; |
| layer_data->deferred_operation_post_completion.insert(deferredOperation, cleanup); |
| } else { |
| delete local_pInfo; |
| } |
| } |
| return result; |
| } |
| |
| VkResult DispatchCopyMemoryToMicromapEXT(VkDevice device, VkDeferredOperationKHR deferredOperation, |
| const VkCopyMemoryToMicromapInfoEXT* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CopyMemoryToMicromapEXT(device, deferredOperation, pInfo); |
| safe_VkCopyMemoryToMicromapInfoEXT* local_pInfo = nullptr; |
| { |
| deferredOperation = layer_data->Unwrap(deferredOperation); |
| if (pInfo) { |
| local_pInfo = new safe_VkCopyMemoryToMicromapInfoEXT; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->dst) { |
| local_pInfo->dst = layer_data->Unwrap(pInfo->dst); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CopyMemoryToMicromapEXT(device, deferredOperation, |
| (const VkCopyMemoryToMicromapInfoEXT*)local_pInfo); |
| if (local_pInfo) { |
| // Fix check for deferred ray tracing pipeline creation |
| // https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/5817 |
| const bool is_operation_deferred = (deferredOperation != VK_NULL_HANDLE) && (result == VK_OPERATION_DEFERRED_KHR); |
| if (is_operation_deferred) { |
| std::vector<std::function<void()>> cleanup{[local_pInfo]() { delete local_pInfo; }}; |
| layer_data->deferred_operation_post_completion.insert(deferredOperation, cleanup); |
| } else { |
| delete local_pInfo; |
| } |
| } |
| return result; |
| } |
| |
| VkResult DispatchWriteMicromapsPropertiesEXT(VkDevice device, uint32_t micromapCount, const VkMicromapEXT* pMicromaps, |
| VkQueryType queryType, size_t dataSize, void* pData, size_t stride) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.WriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, |
| pData, stride); |
| VkMicromapEXT var_local_pMicromaps[DISPATCH_MAX_STACK_ALLOCATIONS]; |
| VkMicromapEXT* local_pMicromaps = nullptr; |
| { |
| if (pMicromaps) { |
| local_pMicromaps = |
| micromapCount > DISPATCH_MAX_STACK_ALLOCATIONS ? new VkMicromapEXT[micromapCount] : var_local_pMicromaps; |
| for (uint32_t index0 = 0; index0 < micromapCount; ++index0) { |
| local_pMicromaps[index0] = layer_data->Unwrap(pMicromaps[index0]); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.WriteMicromapsPropertiesEXT( |
| device, micromapCount, (const VkMicromapEXT*)local_pMicromaps, queryType, dataSize, pData, stride); |
| if (local_pMicromaps != var_local_pMicromaps) delete[] local_pMicromaps; |
| return result; |
| } |
| |
| void DispatchCmdCopyMicromapEXT(VkCommandBuffer commandBuffer, const VkCopyMicromapInfoEXT* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdCopyMicromapEXT(commandBuffer, pInfo); |
| safe_VkCopyMicromapInfoEXT var_local_pInfo; |
| safe_VkCopyMicromapInfoEXT* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->src) { |
| local_pInfo->src = layer_data->Unwrap(pInfo->src); |
| } |
| if (pInfo->dst) { |
| local_pInfo->dst = layer_data->Unwrap(pInfo->dst); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdCopyMicromapEXT(commandBuffer, (const VkCopyMicromapInfoEXT*)local_pInfo); |
| } |
| |
| void DispatchCmdCopyMicromapToMemoryEXT(VkCommandBuffer commandBuffer, const VkCopyMicromapToMemoryInfoEXT* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdCopyMicromapToMemoryEXT(commandBuffer, pInfo); |
| safe_VkCopyMicromapToMemoryInfoEXT var_local_pInfo; |
| safe_VkCopyMicromapToMemoryInfoEXT* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->src) { |
| local_pInfo->src = layer_data->Unwrap(pInfo->src); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdCopyMicromapToMemoryEXT(commandBuffer, (const VkCopyMicromapToMemoryInfoEXT*)local_pInfo); |
| } |
| |
| void DispatchCmdCopyMemoryToMicromapEXT(VkCommandBuffer commandBuffer, const VkCopyMemoryToMicromapInfoEXT* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdCopyMemoryToMicromapEXT(commandBuffer, pInfo); |
| safe_VkCopyMemoryToMicromapInfoEXT var_local_pInfo; |
| safe_VkCopyMemoryToMicromapInfoEXT* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->dst) { |
| local_pInfo->dst = layer_data->Unwrap(pInfo->dst); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdCopyMemoryToMicromapEXT(commandBuffer, (const VkCopyMemoryToMicromapInfoEXT*)local_pInfo); |
| } |
| |
| void DispatchCmdWriteMicromapsPropertiesEXT(VkCommandBuffer commandBuffer, uint32_t micromapCount, const VkMicromapEXT* pMicromaps, |
| VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, |
| queryPool, firstQuery); |
| VkMicromapEXT var_local_pMicromaps[DISPATCH_MAX_STACK_ALLOCATIONS]; |
| VkMicromapEXT* local_pMicromaps = nullptr; |
| { |
| if (pMicromaps) { |
| local_pMicromaps = |
| micromapCount > DISPATCH_MAX_STACK_ALLOCATIONS ? new VkMicromapEXT[micromapCount] : var_local_pMicromaps; |
| for (uint32_t index0 = 0; index0 < micromapCount; ++index0) { |
| local_pMicromaps[index0] = layer_data->Unwrap(pMicromaps[index0]); |
| } |
| } |
| queryPool = layer_data->Unwrap(queryPool); |
| } |
| layer_data->device_dispatch_table.CmdWriteMicromapsPropertiesEXT( |
| commandBuffer, micromapCount, (const VkMicromapEXT*)local_pMicromaps, queryType, queryPool, firstQuery); |
| if (local_pMicromaps != var_local_pMicromaps) delete[] local_pMicromaps; |
| } |
| |
| void DispatchGetDeviceMicromapCompatibilityEXT(VkDevice device, const VkMicromapVersionInfoEXT* pVersionInfo, |
| VkAccelerationStructureCompatibilityKHR* pCompatibility) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| layer_data->device_dispatch_table.GetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility); |
| } |
| |
| void DispatchGetMicromapBuildSizesEXT(VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, |
| const VkMicromapBuildInfoEXT* pBuildInfo, VkMicromapBuildSizesInfoEXT* pSizeInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo); |
| safe_VkMicromapBuildInfoEXT var_local_pBuildInfo; |
| safe_VkMicromapBuildInfoEXT* local_pBuildInfo = nullptr; |
| { |
| if (pBuildInfo) { |
| local_pBuildInfo = &var_local_pBuildInfo; |
| local_pBuildInfo->initialize(pBuildInfo); |
| |
| if (pBuildInfo->dstMicromap) { |
| local_pBuildInfo->dstMicromap = layer_data->Unwrap(pBuildInfo->dstMicromap); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.GetMicromapBuildSizesEXT(device, buildType, (const VkMicromapBuildInfoEXT*)local_pBuildInfo, |
| pSizeInfo); |
| } |
| |
| void DispatchCmdDrawClusterHUAWEI(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ); |
| } |
| |
| void DispatchCmdDrawClusterIndirectHUAWEI(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset); |
| { buffer = layer_data->Unwrap(buffer); } |
| layer_data->device_dispatch_table.CmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset); |
| } |
| |
| void DispatchSetDeviceMemoryPriorityEXT(VkDevice device, VkDeviceMemory memory, float priority) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.SetDeviceMemoryPriorityEXT(device, memory, priority); |
| { memory = layer_data->Unwrap(memory); } |
| layer_data->device_dispatch_table.SetDeviceMemoryPriorityEXT(device, memory, priority); |
| } |
| |
| void DispatchGetDescriptorSetLayoutHostMappingInfoVALVE(VkDevice device, |
| const VkDescriptorSetBindingReferenceVALVE* pBindingReference, |
| VkDescriptorSetLayoutHostMappingInfoVALVE* pHostMapping) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, |
| pHostMapping); |
| safe_VkDescriptorSetBindingReferenceVALVE var_local_pBindingReference; |
| safe_VkDescriptorSetBindingReferenceVALVE* local_pBindingReference = nullptr; |
| { |
| if (pBindingReference) { |
| local_pBindingReference = &var_local_pBindingReference; |
| local_pBindingReference->initialize(pBindingReference); |
| |
| if (pBindingReference->descriptorSetLayout) { |
| local_pBindingReference->descriptorSetLayout = layer_data->Unwrap(pBindingReference->descriptorSetLayout); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.GetDescriptorSetLayoutHostMappingInfoVALVE( |
| device, (const VkDescriptorSetBindingReferenceVALVE*)local_pBindingReference, pHostMapping); |
| } |
| |
| void DispatchGetDescriptorSetHostMappingVALVE(VkDevice device, VkDescriptorSet descriptorSet, void** ppData) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData); |
| { descriptorSet = layer_data->Unwrap(descriptorSet); } |
| layer_data->device_dispatch_table.GetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData); |
| } |
| |
| void DispatchCmdCopyMemoryIndirectNV(VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress, uint32_t copyCount, |
| uint32_t stride) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride); |
| } |
| |
| void DispatchCmdCopyMemoryToImageIndirectNV(VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress, uint32_t copyCount, |
| uint32_t stride, VkImage dstImage, VkImageLayout dstImageLayout, |
| const VkImageSubresourceLayers* pImageSubresources) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, |
| dstImage, dstImageLayout, pImageSubresources); |
| { dstImage = layer_data->Unwrap(dstImage); } |
| layer_data->device_dispatch_table.CmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, |
| dstImageLayout, pImageSubresources); |
| } |
| |
| void DispatchCmdDecompressMemoryNV(VkCommandBuffer commandBuffer, uint32_t decompressRegionCount, |
| const VkDecompressMemoryRegionNV* pDecompressMemoryRegions) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions); |
| } |
| |
| void DispatchCmdDecompressMemoryIndirectCountNV(VkCommandBuffer commandBuffer, VkDeviceAddress indirectCommandsAddress, |
| VkDeviceAddress indirectCommandsCountAddress, uint32_t stride) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, |
| indirectCommandsCountAddress, stride); |
| } |
| |
| void DispatchGetPipelineIndirectMemoryRequirementsNV(VkDevice device, const VkComputePipelineCreateInfo* pCreateInfo, |
| VkMemoryRequirements2* pMemoryRequirements) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements); |
| safe_VkComputePipelineCreateInfo var_local_pCreateInfo; |
| safe_VkComputePipelineCreateInfo* local_pCreateInfo = nullptr; |
| { |
| if (pCreateInfo) { |
| local_pCreateInfo = &var_local_pCreateInfo; |
| local_pCreateInfo->initialize(pCreateInfo); |
| |
| if (pCreateInfo->stage.module) { |
| local_pCreateInfo->stage.module = layer_data->Unwrap(pCreateInfo->stage.module); |
| } |
| WrapPnextChainHandles(layer_data, local_pCreateInfo->stage.pNext); |
| |
| if (pCreateInfo->layout) { |
| local_pCreateInfo->layout = layer_data->Unwrap(pCreateInfo->layout); |
| } |
| if (pCreateInfo->basePipelineHandle) { |
| local_pCreateInfo->basePipelineHandle = layer_data->Unwrap(pCreateInfo->basePipelineHandle); |
| } |
| WrapPnextChainHandles(layer_data, local_pCreateInfo->pNext); |
| } |
| } |
| layer_data->device_dispatch_table.GetPipelineIndirectMemoryRequirementsNV( |
| device, (const VkComputePipelineCreateInfo*)local_pCreateInfo, pMemoryRequirements); |
| } |
| |
| void DispatchCmdUpdatePipelineIndirectBufferNV(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, |
| VkPipeline pipeline) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline); |
| { pipeline = layer_data->Unwrap(pipeline); } |
| layer_data->device_dispatch_table.CmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline); |
| } |
| |
| VkDeviceAddress DispatchGetPipelineIndirectDeviceAddressNV(VkDevice device, const VkPipelineIndirectDeviceAddressInfoNV* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetPipelineIndirectDeviceAddressNV(device, pInfo); |
| safe_VkPipelineIndirectDeviceAddressInfoNV var_local_pInfo; |
| safe_VkPipelineIndirectDeviceAddressInfoNV* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->pipeline) { |
| local_pInfo->pipeline = layer_data->Unwrap(pInfo->pipeline); |
| } |
| } |
| } |
| VkDeviceAddress result = layer_data->device_dispatch_table.GetPipelineIndirectDeviceAddressNV( |
| device, (const VkPipelineIndirectDeviceAddressInfoNV*)local_pInfo); |
| |
| return result; |
| } |
| |
| void DispatchCmdSetTessellationDomainOriginEXT(VkCommandBuffer commandBuffer, VkTessellationDomainOrigin domainOrigin) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin); |
| } |
| |
| void DispatchCmdSetDepthClampEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthClampEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable); |
| } |
| |
| void DispatchCmdSetPolygonModeEXT(VkCommandBuffer commandBuffer, VkPolygonMode polygonMode) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetPolygonModeEXT(commandBuffer, polygonMode); |
| } |
| |
| void DispatchCmdSetRasterizationSamplesEXT(VkCommandBuffer commandBuffer, VkSampleCountFlagBits rasterizationSamples) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples); |
| } |
| |
| void DispatchCmdSetSampleMaskEXT(VkCommandBuffer commandBuffer, VkSampleCountFlagBits samples, const VkSampleMask* pSampleMask) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask); |
| } |
| |
| void DispatchCmdSetAlphaToCoverageEnableEXT(VkCommandBuffer commandBuffer, VkBool32 alphaToCoverageEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable); |
| } |
| |
| void DispatchCmdSetAlphaToOneEnableEXT(VkCommandBuffer commandBuffer, VkBool32 alphaToOneEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable); |
| } |
| |
| void DispatchCmdSetLogicOpEnableEXT(VkCommandBuffer commandBuffer, VkBool32 logicOpEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable); |
| } |
| |
| void DispatchCmdSetColorBlendEnableEXT(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, |
| const VkBool32* pColorBlendEnables) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, |
| pColorBlendEnables); |
| } |
| |
| void DispatchCmdSetColorBlendEquationEXT(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, |
| const VkColorBlendEquationEXT* pColorBlendEquations) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, |
| pColorBlendEquations); |
| } |
| |
| void DispatchCmdSetColorWriteMaskEXT(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, |
| const VkColorComponentFlags* pColorWriteMasks) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks); |
| } |
| |
| void DispatchCmdSetRasterizationStreamEXT(VkCommandBuffer commandBuffer, uint32_t rasterizationStream) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream); |
| } |
| |
| void DispatchCmdSetConservativeRasterizationModeEXT(VkCommandBuffer commandBuffer, |
| VkConservativeRasterizationModeEXT conservativeRasterizationMode) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode); |
| } |
| |
| void DispatchCmdSetExtraPrimitiveOverestimationSizeEXT(VkCommandBuffer commandBuffer, float extraPrimitiveOverestimationSize) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize); |
| } |
| |
| void DispatchCmdSetDepthClipEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthClipEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable); |
| } |
| |
| void DispatchCmdSetSampleLocationsEnableEXT(VkCommandBuffer commandBuffer, VkBool32 sampleLocationsEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable); |
| } |
| |
| void DispatchCmdSetColorBlendAdvancedEXT(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, |
| const VkColorBlendAdvancedEXT* pColorBlendAdvanced) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, |
| pColorBlendAdvanced); |
| } |
| |
| void DispatchCmdSetProvokingVertexModeEXT(VkCommandBuffer commandBuffer, VkProvokingVertexModeEXT provokingVertexMode) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode); |
| } |
| |
| void DispatchCmdSetLineRasterizationModeEXT(VkCommandBuffer commandBuffer, VkLineRasterizationModeEXT lineRasterizationMode) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode); |
| } |
| |
| void DispatchCmdSetLineStippleEnableEXT(VkCommandBuffer commandBuffer, VkBool32 stippledLineEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable); |
| } |
| |
| void DispatchCmdSetDepthClipNegativeOneToOneEXT(VkCommandBuffer commandBuffer, VkBool32 negativeOneToOne) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne); |
| } |
| |
| void DispatchCmdSetViewportWScalingEnableNV(VkCommandBuffer commandBuffer, VkBool32 viewportWScalingEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable); |
| } |
| |
| void DispatchCmdSetViewportSwizzleNV(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, |
| const VkViewportSwizzleNV* pViewportSwizzles) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles); |
| } |
| |
| void DispatchCmdSetCoverageToColorEnableNV(VkCommandBuffer commandBuffer, VkBool32 coverageToColorEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable); |
| } |
| |
| void DispatchCmdSetCoverageToColorLocationNV(VkCommandBuffer commandBuffer, uint32_t coverageToColorLocation) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation); |
| } |
| |
| void DispatchCmdSetCoverageModulationModeNV(VkCommandBuffer commandBuffer, VkCoverageModulationModeNV coverageModulationMode) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode); |
| } |
| |
| void DispatchCmdSetCoverageModulationTableEnableNV(VkCommandBuffer commandBuffer, VkBool32 coverageModulationTableEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable); |
| } |
| |
| void DispatchCmdSetCoverageModulationTableNV(VkCommandBuffer commandBuffer, uint32_t coverageModulationTableCount, |
| const float* pCoverageModulationTable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, |
| pCoverageModulationTable); |
| } |
| |
| void DispatchCmdSetShadingRateImageEnableNV(VkCommandBuffer commandBuffer, VkBool32 shadingRateImageEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable); |
| } |
| |
| void DispatchCmdSetRepresentativeFragmentTestEnableNV(VkCommandBuffer commandBuffer, VkBool32 representativeFragmentTestEnable) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable); |
| } |
| |
| void DispatchCmdSetCoverageReductionModeNV(VkCommandBuffer commandBuffer, VkCoverageReductionModeNV coverageReductionMode) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode); |
| } |
| |
| void DispatchGetShaderModuleIdentifierEXT(VkDevice device, VkShaderModule shaderModule, VkShaderModuleIdentifierEXT* pIdentifier) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier); |
| { shaderModule = layer_data->Unwrap(shaderModule); } |
| layer_data->device_dispatch_table.GetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier); |
| } |
| |
| void DispatchGetShaderModuleCreateInfoIdentifierEXT(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, |
| VkShaderModuleIdentifierEXT* pIdentifier) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier); |
| safe_VkShaderModuleCreateInfo var_local_pCreateInfo; |
| safe_VkShaderModuleCreateInfo* local_pCreateInfo = nullptr; |
| { |
| if (pCreateInfo) { |
| local_pCreateInfo = &var_local_pCreateInfo; |
| local_pCreateInfo->initialize(pCreateInfo); |
| WrapPnextChainHandles(layer_data, local_pCreateInfo->pNext); |
| } |
| } |
| layer_data->device_dispatch_table.GetShaderModuleCreateInfoIdentifierEXT( |
| device, (const VkShaderModuleCreateInfo*)local_pCreateInfo, pIdentifier); |
| } |
| |
| VkResult DispatchGetPhysicalDeviceOpticalFlowImageFormatsNV(VkPhysicalDevice physicalDevice, |
| const VkOpticalFlowImageFormatInfoNV* pOpticalFlowImageFormatInfo, |
| uint32_t* pFormatCount, |
| VkOpticalFlowImageFormatPropertiesNV* pImageFormatProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map); |
| |
| VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceOpticalFlowImageFormatsNV( |
| physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties); |
| |
| return result; |
| } |
| |
| VkResult DispatchCreateOpticalFlowSessionNV(VkDevice device, const VkOpticalFlowSessionCreateInfoNV* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, VkOpticalFlowSessionNV* pSession) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession); |
| |
| VkResult result = layer_data->device_dispatch_table.CreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession); |
| if (VK_SUCCESS == result) { |
| *pSession = layer_data->WrapNew(*pSession); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyOpticalFlowSessionNV(VkDevice device, VkOpticalFlowSessionNV session, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyOpticalFlowSessionNV(device, session, pAllocator); |
| |
| uint64_t session_id = CastToUint64(session); |
| auto iter = unique_id_mapping.pop(session_id); |
| if (iter != unique_id_mapping.end()) { |
| session = (VkOpticalFlowSessionNV)iter->second; |
| } else { |
| session = (VkOpticalFlowSessionNV)0; |
| } |
| layer_data->device_dispatch_table.DestroyOpticalFlowSessionNV(device, session, pAllocator); |
| } |
| |
| VkResult DispatchBindOpticalFlowSessionImageNV(VkDevice device, VkOpticalFlowSessionNV session, |
| VkOpticalFlowSessionBindingPointNV bindingPoint, VkImageView view, |
| VkImageLayout layout) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.BindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout); |
| { |
| session = layer_data->Unwrap(session); |
| view = layer_data->Unwrap(view); |
| } |
| VkResult result = layer_data->device_dispatch_table.BindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout); |
| |
| return result; |
| } |
| |
| void DispatchCmdOpticalFlowExecuteNV(VkCommandBuffer commandBuffer, VkOpticalFlowSessionNV session, |
| const VkOpticalFlowExecuteInfoNV* pExecuteInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo); |
| { session = layer_data->Unwrap(session); } |
| layer_data->device_dispatch_table.CmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo); |
| } |
| |
| VkResult DispatchCreateShadersEXT(VkDevice device, uint32_t createInfoCount, const VkShaderCreateInfoEXT* pCreateInfos, |
| const VkAllocationCallbacks* pAllocator, VkShaderEXT* pShaders) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders); |
| safe_VkShaderCreateInfoEXT* local_pCreateInfos = nullptr; |
| { |
| if (pCreateInfos) { |
| local_pCreateInfos = new safe_VkShaderCreateInfoEXT[createInfoCount]; |
| for (uint32_t index0 = 0; index0 < createInfoCount; ++index0) { |
| local_pCreateInfos[index0].initialize(&pCreateInfos[index0]); |
| if (local_pCreateInfos[index0].pSetLayouts) { |
| for (uint32_t index1 = 0; index1 < local_pCreateInfos[index0].setLayoutCount; ++index1) { |
| local_pCreateInfos[index0].pSetLayouts[index1] = |
| layer_data->Unwrap(local_pCreateInfos[index0].pSetLayouts[index1]); |
| } |
| } |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CreateShadersEXT( |
| device, createInfoCount, (const VkShaderCreateInfoEXT*)local_pCreateInfos, pAllocator, pShaders); |
| if (local_pCreateInfos) { |
| delete[] local_pCreateInfos; |
| } |
| if (VK_SUCCESS == result) { |
| for (uint32_t index0 = 0; index0 < createInfoCount; index0++) { |
| pShaders[index0] = layer_data->WrapNew(pShaders[index0]); |
| } |
| } |
| return result; |
| } |
| |
| void DispatchDestroyShaderEXT(VkDevice device, VkShaderEXT shader, const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.DestroyShaderEXT(device, shader, pAllocator); |
| |
| uint64_t shader_id = CastToUint64(shader); |
| auto iter = unique_id_mapping.pop(shader_id); |
| if (iter != unique_id_mapping.end()) { |
| shader = (VkShaderEXT)iter->second; |
| } else { |
| shader = (VkShaderEXT)0; |
| } |
| layer_data->device_dispatch_table.DestroyShaderEXT(device, shader, pAllocator); |
| } |
| |
| VkResult DispatchGetShaderBinaryDataEXT(VkDevice device, VkShaderEXT shader, size_t* pDataSize, void* pData) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetShaderBinaryDataEXT(device, shader, pDataSize, pData); |
| { shader = layer_data->Unwrap(shader); } |
| VkResult result = layer_data->device_dispatch_table.GetShaderBinaryDataEXT(device, shader, pDataSize, pData); |
| |
| return result; |
| } |
| |
| void DispatchCmdBindShadersEXT(VkCommandBuffer commandBuffer, uint32_t stageCount, const VkShaderStageFlagBits* pStages, |
| const VkShaderEXT* pShaders) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders); |
| VkShaderEXT var_local_pShaders[DISPATCH_MAX_STACK_ALLOCATIONS]; |
| VkShaderEXT* local_pShaders = nullptr; |
| { |
| if (pShaders) { |
| local_pShaders = stageCount > DISPATCH_MAX_STACK_ALLOCATIONS ? new VkShaderEXT[stageCount] : var_local_pShaders; |
| for (uint32_t index0 = 0; index0 < stageCount; ++index0) { |
| local_pShaders[index0] = layer_data->Unwrap(pShaders[index0]); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdBindShadersEXT(commandBuffer, stageCount, pStages, (const VkShaderEXT*)local_pShaders); |
| if (local_pShaders != var_local_pShaders) delete[] local_pShaders; |
| } |
| |
| VkResult DispatchGetFramebufferTilePropertiesQCOM(VkDevice device, VkFramebuffer framebuffer, uint32_t* pPropertiesCount, |
| VkTilePropertiesQCOM* pProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, |
| pProperties); |
| { framebuffer = layer_data->Unwrap(framebuffer); } |
| VkResult result = |
| layer_data->device_dispatch_table.GetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties); |
| |
| return result; |
| } |
| |
| VkResult DispatchGetDynamicRenderingTilePropertiesQCOM(VkDevice device, const VkRenderingInfo* pRenderingInfo, |
| VkTilePropertiesQCOM* pProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties); |
| safe_VkRenderingInfo var_local_pRenderingInfo; |
| safe_VkRenderingInfo* local_pRenderingInfo = nullptr; |
| { |
| if (pRenderingInfo) { |
| local_pRenderingInfo = &var_local_pRenderingInfo; |
| local_pRenderingInfo->initialize(pRenderingInfo); |
| if (local_pRenderingInfo->pColorAttachments) { |
| for (uint32_t index1 = 0; index1 < local_pRenderingInfo->colorAttachmentCount; ++index1) { |
| if (pRenderingInfo->pColorAttachments[index1].imageView) { |
| local_pRenderingInfo->pColorAttachments[index1].imageView = |
| layer_data->Unwrap(pRenderingInfo->pColorAttachments[index1].imageView); |
| } |
| if (pRenderingInfo->pColorAttachments[index1].resolveImageView) { |
| local_pRenderingInfo->pColorAttachments[index1].resolveImageView = |
| layer_data->Unwrap(pRenderingInfo->pColorAttachments[index1].resolveImageView); |
| } |
| } |
| } |
| if (local_pRenderingInfo->pDepthAttachment) { |
| if (pRenderingInfo->pDepthAttachment->imageView) { |
| local_pRenderingInfo->pDepthAttachment->imageView = |
| layer_data->Unwrap(pRenderingInfo->pDepthAttachment->imageView); |
| } |
| if (pRenderingInfo->pDepthAttachment->resolveImageView) { |
| local_pRenderingInfo->pDepthAttachment->resolveImageView = |
| layer_data->Unwrap(pRenderingInfo->pDepthAttachment->resolveImageView); |
| } |
| } |
| if (local_pRenderingInfo->pStencilAttachment) { |
| if (pRenderingInfo->pStencilAttachment->imageView) { |
| local_pRenderingInfo->pStencilAttachment->imageView = |
| layer_data->Unwrap(pRenderingInfo->pStencilAttachment->imageView); |
| } |
| if (pRenderingInfo->pStencilAttachment->resolveImageView) { |
| local_pRenderingInfo->pStencilAttachment->resolveImageView = |
| layer_data->Unwrap(pRenderingInfo->pStencilAttachment->resolveImageView); |
| } |
| } |
| WrapPnextChainHandles(layer_data, local_pRenderingInfo->pNext); |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.GetDynamicRenderingTilePropertiesQCOM( |
| device, (const VkRenderingInfo*)local_pRenderingInfo, pProperties); |
| |
| return result; |
| } |
| |
| VkResult DispatchSetLatencySleepModeNV(VkDevice device, VkSwapchainKHR swapchain, const VkLatencySleepModeInfoNV* pSleepModeInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.SetLatencySleepModeNV(device, swapchain, pSleepModeInfo); |
| { swapchain = layer_data->Unwrap(swapchain); } |
| VkResult result = layer_data->device_dispatch_table.SetLatencySleepModeNV(device, swapchain, pSleepModeInfo); |
| |
| return result; |
| } |
| |
| VkResult DispatchLatencySleepNV(VkDevice device, VkSwapchainKHR swapchain, const VkLatencySleepInfoNV* pSleepInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.LatencySleepNV(device, swapchain, pSleepInfo); |
| safe_VkLatencySleepInfoNV var_local_pSleepInfo; |
| safe_VkLatencySleepInfoNV* local_pSleepInfo = nullptr; |
| { |
| swapchain = layer_data->Unwrap(swapchain); |
| if (pSleepInfo) { |
| local_pSleepInfo = &var_local_pSleepInfo; |
| local_pSleepInfo->initialize(pSleepInfo); |
| |
| if (pSleepInfo->signalSemaphore) { |
| local_pSleepInfo->signalSemaphore = layer_data->Unwrap(pSleepInfo->signalSemaphore); |
| } |
| } |
| } |
| VkResult result = |
| layer_data->device_dispatch_table.LatencySleepNV(device, swapchain, (const VkLatencySleepInfoNV*)local_pSleepInfo); |
| |
| return result; |
| } |
| |
| void DispatchSetLatencyMarkerNV(VkDevice device, VkSwapchainKHR swapchain, const VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.SetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo); |
| { swapchain = layer_data->Unwrap(swapchain); } |
| layer_data->device_dispatch_table.SetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo); |
| } |
| |
| void DispatchGetLatencyTimingsNV(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pTimingCount, |
| VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetLatencyTimingsNV(device, swapchain, pTimingCount, pLatencyMarkerInfo); |
| { swapchain = layer_data->Unwrap(swapchain); } |
| layer_data->device_dispatch_table.GetLatencyTimingsNV(device, swapchain, pTimingCount, pLatencyMarkerInfo); |
| } |
| |
| void DispatchQueueNotifyOutOfBandNV(VkQueue queue, const VkOutOfBandQueueTypeInfoNV* pQueueTypeInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map); |
| |
| layer_data->device_dispatch_table.QueueNotifyOutOfBandNV(queue, pQueueTypeInfo); |
| } |
| |
| void DispatchCmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask); |
| } |
| #ifdef VK_USE_PLATFORM_SCREEN_QNX |
| |
| VkResult DispatchGetScreenBufferPropertiesQNX(VkDevice device, const struct _screen_buffer* buffer, |
| VkScreenBufferPropertiesQNX* pProperties) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| VkResult result = layer_data->device_dispatch_table.GetScreenBufferPropertiesQNX(device, buffer, pProperties); |
| |
| return result; |
| } |
| #endif // VK_USE_PLATFORM_SCREEN_QNX |
| |
| VkResult DispatchCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, |
| const VkAllocationCallbacks* pAllocator, |
| VkAccelerationStructureKHR* pAccelerationStructure) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, |
| pAccelerationStructure); |
| safe_VkAccelerationStructureCreateInfoKHR var_local_pCreateInfo; |
| safe_VkAccelerationStructureCreateInfoKHR* local_pCreateInfo = nullptr; |
| { |
| if (pCreateInfo) { |
| local_pCreateInfo = &var_local_pCreateInfo; |
| local_pCreateInfo->initialize(pCreateInfo); |
| |
| if (pCreateInfo->buffer) { |
| local_pCreateInfo->buffer = layer_data->Unwrap(pCreateInfo->buffer); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CreateAccelerationStructureKHR( |
| device, (const VkAccelerationStructureCreateInfoKHR*)local_pCreateInfo, pAllocator, pAccelerationStructure); |
| if (VK_SUCCESS == result) { |
| *pAccelerationStructure = layer_data->WrapNew(*pAccelerationStructure); |
| } |
| return result; |
| } |
| |
| void DispatchDestroyAccelerationStructureKHR(VkDevice device, VkAccelerationStructureKHR accelerationStructure, |
| const VkAllocationCallbacks* pAllocator) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.DestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator); |
| |
| uint64_t accelerationStructure_id = CastToUint64(accelerationStructure); |
| auto iter = unique_id_mapping.pop(accelerationStructure_id); |
| if (iter != unique_id_mapping.end()) { |
| accelerationStructure = (VkAccelerationStructureKHR)iter->second; |
| } else { |
| accelerationStructure = (VkAccelerationStructureKHR)0; |
| } |
| layer_data->device_dispatch_table.DestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator); |
| } |
| |
| void DispatchCmdBuildAccelerationStructuresKHR(VkCommandBuffer commandBuffer, uint32_t infoCount, |
| const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, |
| const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, |
| ppBuildRangeInfos); |
| safe_VkAccelerationStructureBuildGeometryInfoKHR* local_pInfos = nullptr; |
| { |
| if (pInfos) { |
| local_pInfos = new safe_VkAccelerationStructureBuildGeometryInfoKHR[infoCount]; |
| for (uint32_t index0 = 0; index0 < infoCount; ++index0) { |
| local_pInfos[index0].initialize(&pInfos[index0], false, nullptr); |
| |
| if (pInfos[index0].srcAccelerationStructure) { |
| local_pInfos[index0].srcAccelerationStructure = layer_data->Unwrap(pInfos[index0].srcAccelerationStructure); |
| } |
| if (pInfos[index0].dstAccelerationStructure) { |
| local_pInfos[index0].dstAccelerationStructure = layer_data->Unwrap(pInfos[index0].dstAccelerationStructure); |
| } |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdBuildAccelerationStructuresKHR( |
| commandBuffer, infoCount, (const VkAccelerationStructureBuildGeometryInfoKHR*)local_pInfos, ppBuildRangeInfos); |
| if (local_pInfos) { |
| delete[] local_pInfos; |
| } |
| } |
| |
| void DispatchCmdBuildAccelerationStructuresIndirectKHR(VkCommandBuffer commandBuffer, uint32_t infoCount, |
| const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, |
| const VkDeviceAddress* pIndirectDeviceAddresses, |
| const uint32_t* pIndirectStrides, |
| const uint32_t* const* ppMaxPrimitiveCounts) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdBuildAccelerationStructuresIndirectKHR( |
| commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts); |
| safe_VkAccelerationStructureBuildGeometryInfoKHR* local_pInfos = nullptr; |
| { |
| if (pInfos) { |
| local_pInfos = new safe_VkAccelerationStructureBuildGeometryInfoKHR[infoCount]; |
| for (uint32_t index0 = 0; index0 < infoCount; ++index0) { |
| local_pInfos[index0].initialize(&pInfos[index0], false, nullptr); |
| |
| if (pInfos[index0].srcAccelerationStructure) { |
| local_pInfos[index0].srcAccelerationStructure = layer_data->Unwrap(pInfos[index0].srcAccelerationStructure); |
| } |
| if (pInfos[index0].dstAccelerationStructure) { |
| local_pInfos[index0].dstAccelerationStructure = layer_data->Unwrap(pInfos[index0].dstAccelerationStructure); |
| } |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdBuildAccelerationStructuresIndirectKHR( |
| commandBuffer, infoCount, (const VkAccelerationStructureBuildGeometryInfoKHR*)local_pInfos, pIndirectDeviceAddresses, |
| pIndirectStrides, ppMaxPrimitiveCounts); |
| if (local_pInfos) { |
| delete[] local_pInfos; |
| } |
| } |
| |
| VkResult DispatchCopyAccelerationStructureKHR(VkDevice device, VkDeferredOperationKHR deferredOperation, |
| const VkCopyAccelerationStructureInfoKHR* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CopyAccelerationStructureKHR(device, deferredOperation, pInfo); |
| safe_VkCopyAccelerationStructureInfoKHR* local_pInfo = nullptr; |
| { |
| deferredOperation = layer_data->Unwrap(deferredOperation); |
| if (pInfo) { |
| local_pInfo = new safe_VkCopyAccelerationStructureInfoKHR; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->src) { |
| local_pInfo->src = layer_data->Unwrap(pInfo->src); |
| } |
| if (pInfo->dst) { |
| local_pInfo->dst = layer_data->Unwrap(pInfo->dst); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CopyAccelerationStructureKHR( |
| device, deferredOperation, (const VkCopyAccelerationStructureInfoKHR*)local_pInfo); |
| if (local_pInfo) { |
| // Fix check for deferred ray tracing pipeline creation |
| // https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/5817 |
| const bool is_operation_deferred = (deferredOperation != VK_NULL_HANDLE) && (result == VK_OPERATION_DEFERRED_KHR); |
| if (is_operation_deferred) { |
| std::vector<std::function<void()>> cleanup{[local_pInfo]() { delete local_pInfo; }}; |
| layer_data->deferred_operation_post_completion.insert(deferredOperation, cleanup); |
| } else { |
| delete local_pInfo; |
| } |
| } |
| return result; |
| } |
| |
| VkResult DispatchCopyAccelerationStructureToMemoryKHR(VkDevice device, VkDeferredOperationKHR deferredOperation, |
| const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo); |
| safe_VkCopyAccelerationStructureToMemoryInfoKHR* local_pInfo = nullptr; |
| { |
| deferredOperation = layer_data->Unwrap(deferredOperation); |
| if (pInfo) { |
| local_pInfo = new safe_VkCopyAccelerationStructureToMemoryInfoKHR; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->src) { |
| local_pInfo->src = layer_data->Unwrap(pInfo->src); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CopyAccelerationStructureToMemoryKHR( |
| device, deferredOperation, (const VkCopyAccelerationStructureToMemoryInfoKHR*)local_pInfo); |
| if (local_pInfo) { |
| // Fix check for deferred ray tracing pipeline creation |
| // https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/5817 |
| const bool is_operation_deferred = (deferredOperation != VK_NULL_HANDLE) && (result == VK_OPERATION_DEFERRED_KHR); |
| if (is_operation_deferred) { |
| std::vector<std::function<void()>> cleanup{[local_pInfo]() { delete local_pInfo; }}; |
| layer_data->deferred_operation_post_completion.insert(deferredOperation, cleanup); |
| } else { |
| delete local_pInfo; |
| } |
| } |
| return result; |
| } |
| |
| VkResult DispatchCopyMemoryToAccelerationStructureKHR(VkDevice device, VkDeferredOperationKHR deferredOperation, |
| const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo); |
| safe_VkCopyMemoryToAccelerationStructureInfoKHR* local_pInfo = nullptr; |
| { |
| deferredOperation = layer_data->Unwrap(deferredOperation); |
| if (pInfo) { |
| local_pInfo = new safe_VkCopyMemoryToAccelerationStructureInfoKHR; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->dst) { |
| local_pInfo->dst = layer_data->Unwrap(pInfo->dst); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.CopyMemoryToAccelerationStructureKHR( |
| device, deferredOperation, (const VkCopyMemoryToAccelerationStructureInfoKHR*)local_pInfo); |
| if (local_pInfo) { |
| // Fix check for deferred ray tracing pipeline creation |
| // https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/5817 |
| const bool is_operation_deferred = (deferredOperation != VK_NULL_HANDLE) && (result == VK_OPERATION_DEFERRED_KHR); |
| if (is_operation_deferred) { |
| std::vector<std::function<void()>> cleanup{[local_pInfo]() { delete local_pInfo; }}; |
| layer_data->deferred_operation_post_completion.insert(deferredOperation, cleanup); |
| } else { |
| delete local_pInfo; |
| } |
| } |
| return result; |
| } |
| |
| VkResult DispatchWriteAccelerationStructuresPropertiesKHR(VkDevice device, uint32_t accelerationStructureCount, |
| const VkAccelerationStructureKHR* pAccelerationStructures, |
| VkQueryType queryType, size_t dataSize, void* pData, size_t stride) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.WriteAccelerationStructuresPropertiesKHR( |
| device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride); |
| VkAccelerationStructureKHR var_local_pAccelerationStructures[DISPATCH_MAX_STACK_ALLOCATIONS]; |
| VkAccelerationStructureKHR* local_pAccelerationStructures = nullptr; |
| { |
| if (pAccelerationStructures) { |
| local_pAccelerationStructures = accelerationStructureCount > DISPATCH_MAX_STACK_ALLOCATIONS |
| ? new VkAccelerationStructureKHR[accelerationStructureCount] |
| : var_local_pAccelerationStructures; |
| for (uint32_t index0 = 0; index0 < accelerationStructureCount; ++index0) { |
| local_pAccelerationStructures[index0] = layer_data->Unwrap(pAccelerationStructures[index0]); |
| } |
| } |
| } |
| VkResult result = layer_data->device_dispatch_table.WriteAccelerationStructuresPropertiesKHR( |
| device, accelerationStructureCount, (const VkAccelerationStructureKHR*)local_pAccelerationStructures, queryType, dataSize, |
| pData, stride); |
| if (local_pAccelerationStructures != var_local_pAccelerationStructures) delete[] local_pAccelerationStructures; |
| return result; |
| } |
| |
| void DispatchCmdCopyAccelerationStructureKHR(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdCopyAccelerationStructureKHR(commandBuffer, pInfo); |
| safe_VkCopyAccelerationStructureInfoKHR var_local_pInfo; |
| safe_VkCopyAccelerationStructureInfoKHR* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->src) { |
| local_pInfo->src = layer_data->Unwrap(pInfo->src); |
| } |
| if (pInfo->dst) { |
| local_pInfo->dst = layer_data->Unwrap(pInfo->dst); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdCopyAccelerationStructureKHR(commandBuffer, |
| (const VkCopyAccelerationStructureInfoKHR*)local_pInfo); |
| } |
| |
| void DispatchCmdCopyAccelerationStructureToMemoryKHR(VkCommandBuffer commandBuffer, |
| const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo); |
| safe_VkCopyAccelerationStructureToMemoryInfoKHR var_local_pInfo; |
| safe_VkCopyAccelerationStructureToMemoryInfoKHR* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->src) { |
| local_pInfo->src = layer_data->Unwrap(pInfo->src); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdCopyAccelerationStructureToMemoryKHR( |
| commandBuffer, (const VkCopyAccelerationStructureToMemoryInfoKHR*)local_pInfo); |
| } |
| |
| void DispatchCmdCopyMemoryToAccelerationStructureKHR(VkCommandBuffer commandBuffer, |
| const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.CmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo); |
| safe_VkCopyMemoryToAccelerationStructureInfoKHR var_local_pInfo; |
| safe_VkCopyMemoryToAccelerationStructureInfoKHR* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->dst) { |
| local_pInfo->dst = layer_data->Unwrap(pInfo->dst); |
| } |
| } |
| } |
| layer_data->device_dispatch_table.CmdCopyMemoryToAccelerationStructureKHR( |
| commandBuffer, (const VkCopyMemoryToAccelerationStructureInfoKHR*)local_pInfo); |
| } |
| |
| VkDeviceAddress DispatchGetAccelerationStructureDeviceAddressKHR(VkDevice device, |
| const VkAccelerationStructureDeviceAddressInfoKHR* pInfo) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) return layer_data->device_dispatch_table.GetAccelerationStructureDeviceAddressKHR(device, pInfo); |
| safe_VkAccelerationStructureDeviceAddressInfoKHR var_local_pInfo; |
| safe_VkAccelerationStructureDeviceAddressInfoKHR* local_pInfo = nullptr; |
| { |
| if (pInfo) { |
| local_pInfo = &var_local_pInfo; |
| local_pInfo->initialize(pInfo); |
| |
| if (pInfo->accelerationStructure) { |
| local_pInfo->accelerationStructure = layer_data->Unwrap(pInfo->accelerationStructure); |
| } |
| } |
| } |
| VkDeviceAddress result = layer_data->device_dispatch_table.GetAccelerationStructureDeviceAddressKHR( |
| device, (const VkAccelerationStructureDeviceAddressInfoKHR*)local_pInfo); |
| |
| return result; |
| } |
| |
| void DispatchCmdWriteAccelerationStructuresPropertiesKHR(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, |
| const VkAccelerationStructureKHR* pAccelerationStructures, |
| VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdWriteAccelerationStructuresPropertiesKHR( |
| commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery); |
| VkAccelerationStructureKHR var_local_pAccelerationStructures[DISPATCH_MAX_STACK_ALLOCATIONS]; |
| VkAccelerationStructureKHR* local_pAccelerationStructures = nullptr; |
| { |
| if (pAccelerationStructures) { |
| local_pAccelerationStructures = accelerationStructureCount > DISPATCH_MAX_STACK_ALLOCATIONS |
| ? new VkAccelerationStructureKHR[accelerationStructureCount] |
| : var_local_pAccelerationStructures; |
| for (uint32_t index0 = 0; index0 < accelerationStructureCount; ++index0) { |
| local_pAccelerationStructures[index0] = layer_data->Unwrap(pAccelerationStructures[index0]); |
| } |
| } |
| queryPool = layer_data->Unwrap(queryPool); |
| } |
| layer_data->device_dispatch_table.CmdWriteAccelerationStructuresPropertiesKHR( |
| commandBuffer, accelerationStructureCount, (const VkAccelerationStructureKHR*)local_pAccelerationStructures, queryType, |
| queryPool, firstQuery); |
| if (local_pAccelerationStructures != var_local_pAccelerationStructures) delete[] local_pAccelerationStructures; |
| } |
| |
| void DispatchGetDeviceAccelerationStructureCompatibilityKHR(VkDevice device, |
| const VkAccelerationStructureVersionInfoKHR* pVersionInfo, |
| VkAccelerationStructureCompatibilityKHR* pCompatibility) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| |
| layer_data->device_dispatch_table.GetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility); |
| } |
| |
| void DispatchCmdTraceRaysKHR(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, |
| const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, |
| const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, |
| const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width, uint32_t height, |
| uint32_t depth) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, |
| pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth); |
| } |
| |
| VkResult DispatchGetRayTracingCaptureReplayShaderGroupHandlesKHR(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, |
| uint32_t groupCount, size_t dataSize, void* pData) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, |
| groupCount, dataSize, pData); |
| { pipeline = layer_data->Unwrap(pipeline); } |
| VkResult result = layer_data->device_dispatch_table.GetRayTracingCaptureReplayShaderGroupHandlesKHR( |
| device, pipeline, firstGroup, groupCount, dataSize, pData); |
| |
| return result; |
| } |
| |
| void DispatchCmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer, |
| const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, |
| const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, |
| const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, |
| const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, |
| VkDeviceAddress indirectDeviceAddress) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, |
| pHitShaderBindingTable, pCallableShaderBindingTable, |
| indirectDeviceAddress); |
| } |
| |
| VkDeviceSize DispatchGetRayTracingShaderGroupStackSizeKHR(VkDevice device, VkPipeline pipeline, uint32_t group, |
| VkShaderGroupShaderKHR groupShader) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.GetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader); |
| { pipeline = layer_data->Unwrap(pipeline); } |
| VkDeviceSize result = |
| layer_data->device_dispatch_table.GetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader); |
| |
| return result; |
| } |
| |
| void DispatchCmdSetRayTracingPipelineStackSizeKHR(VkCommandBuffer commandBuffer, uint32_t pipelineStackSize) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize); |
| } |
| |
| void DispatchCmdDrawMeshTasksEXT(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| |
| layer_data->device_dispatch_table.CmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ); |
| } |
| |
| void DispatchCmdDrawMeshTasksIndirectEXT(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, |
| uint32_t stride) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride); |
| { buffer = layer_data->Unwrap(buffer); } |
| layer_data->device_dispatch_table.CmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride); |
| } |
| |
| void DispatchCmdDrawMeshTasksIndirectCountEXT(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, |
| VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, |
| uint32_t stride) { |
| auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map); |
| if (!wrap_handles) |
| return layer_data->device_dispatch_table.CmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, |
| countBufferOffset, maxDrawCount, stride); |
| { |
| buffer = layer_data->Unwrap(buffer); |
| countBuffer = layer_data->Unwrap(countBuffer); |
| } |
| layer_data->device_dispatch_table.CmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, |
| countBufferOffset, maxDrawCount, stride); |
| } |
| |
| // NOLINTEND |