1*b7893ccfSSadaf Ebrahimi
2*b7893ccfSSadaf Ebrahimi // This file is ***GENERATED***. Do Not Edit.
3*b7893ccfSSadaf Ebrahimi // See layer_chassis_dispatch_generator.py for modifications.
4*b7893ccfSSadaf Ebrahimi
5*b7893ccfSSadaf Ebrahimi /* Copyright (c) 2015-2019 The Khronos Group Inc.
6*b7893ccfSSadaf Ebrahimi * Copyright (c) 2015-2019 Valve Corporation
7*b7893ccfSSadaf Ebrahimi * Copyright (c) 2015-2019 LunarG, Inc.
8*b7893ccfSSadaf Ebrahimi * Copyright (c) 2015-2019 Google Inc.
9*b7893ccfSSadaf Ebrahimi *
10*b7893ccfSSadaf Ebrahimi * Licensed under the Apache License, Version 2.0 (the "License");
11*b7893ccfSSadaf Ebrahimi * you may not use this file except in compliance with the License.
12*b7893ccfSSadaf Ebrahimi * You may obtain a copy of the License at
13*b7893ccfSSadaf Ebrahimi *
14*b7893ccfSSadaf Ebrahimi * http://www.apache.org/licenses/LICENSE-2.0
15*b7893ccfSSadaf Ebrahimi *
16*b7893ccfSSadaf Ebrahimi * Unless required by applicable law or agreed to in writing, software
17*b7893ccfSSadaf Ebrahimi * distributed under the License is distributed on an "AS IS" BASIS,
18*b7893ccfSSadaf Ebrahimi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19*b7893ccfSSadaf Ebrahimi * See the License for the specific language governing permissions and
20*b7893ccfSSadaf Ebrahimi * limitations under the License.
21*b7893ccfSSadaf Ebrahimi *
22*b7893ccfSSadaf Ebrahimi * Author: Mark Lobodzinski <[email protected]>
23*b7893ccfSSadaf Ebrahimi */
24*b7893ccfSSadaf Ebrahimi
25*b7893ccfSSadaf Ebrahimi #include <mutex>
26*b7893ccfSSadaf Ebrahimi #include "chassis.h"
27*b7893ccfSSadaf Ebrahimi #include "layer_chassis_dispatch.h"
28*b7893ccfSSadaf Ebrahimi #include "vk_layer_utils.h"
29*b7893ccfSSadaf Ebrahimi
30*b7893ccfSSadaf Ebrahimi // This intentionally includes a cpp file
31*b7893ccfSSadaf Ebrahimi #include "vk_safe_struct.cpp"
32*b7893ccfSSadaf Ebrahimi
33*b7893ccfSSadaf Ebrahimi // shared_mutex support added in MSVC 2015 update 2
34*b7893ccfSSadaf Ebrahimi #if defined(_MSC_FULL_VER) && _MSC_FULL_VER >= 190023918 && NTDDI_VERSION > NTDDI_WIN10_RS2
35*b7893ccfSSadaf Ebrahimi #include <shared_mutex>
36*b7893ccfSSadaf Ebrahimi typedef std::shared_mutex dispatch_lock_t;
37*b7893ccfSSadaf Ebrahimi typedef std::shared_lock<dispatch_lock_t> read_dispatch_lock_guard_t;
38*b7893ccfSSadaf Ebrahimi typedef std::unique_lock<dispatch_lock_t> write_dispatch_lock_guard_t;
39*b7893ccfSSadaf Ebrahimi #else
40*b7893ccfSSadaf Ebrahimi typedef std::mutex dispatch_lock_t;
41*b7893ccfSSadaf Ebrahimi typedef std::unique_lock<dispatch_lock_t> read_dispatch_lock_guard_t;
42*b7893ccfSSadaf Ebrahimi typedef std::unique_lock<dispatch_lock_t> write_dispatch_lock_guard_t;
43*b7893ccfSSadaf Ebrahimi #endif
44*b7893ccfSSadaf Ebrahimi dispatch_lock_t dispatch_lock;
45*b7893ccfSSadaf Ebrahimi
46*b7893ccfSSadaf Ebrahimi // Unique Objects pNext extension handling function
WrapPnextChainHandles(ValidationObject * layer_data,const void * pNext)47*b7893ccfSSadaf Ebrahimi void WrapPnextChainHandles(ValidationObject *layer_data, const void *pNext) {
48*b7893ccfSSadaf Ebrahimi void *cur_pnext = const_cast<void *>(pNext);
49*b7893ccfSSadaf Ebrahimi while (cur_pnext != NULL) {
50*b7893ccfSSadaf Ebrahimi VkBaseOutStructure *header = reinterpret_cast<VkBaseOutStructure *>(cur_pnext);
51*b7893ccfSSadaf Ebrahimi
52*b7893ccfSSadaf Ebrahimi switch (header->sType) {
53*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
54*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR: {
55*b7893ccfSSadaf Ebrahimi safe_VkWin32KeyedMutexAcquireReleaseInfoKHR *safe_struct = reinterpret_cast<safe_VkWin32KeyedMutexAcquireReleaseInfoKHR *>(cur_pnext);
56*b7893ccfSSadaf Ebrahimi if (safe_struct->pAcquireSyncs) {
57*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < safe_struct->acquireCount; ++index0) {
58*b7893ccfSSadaf Ebrahimi safe_struct->pAcquireSyncs[index0] = layer_data->Unwrap(safe_struct->pAcquireSyncs[index0]);
59*b7893ccfSSadaf Ebrahimi }
60*b7893ccfSSadaf Ebrahimi }
61*b7893ccfSSadaf Ebrahimi if (safe_struct->pReleaseSyncs) {
62*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < safe_struct->releaseCount; ++index0) {
63*b7893ccfSSadaf Ebrahimi safe_struct->pReleaseSyncs[index0] = layer_data->Unwrap(safe_struct->pReleaseSyncs[index0]);
64*b7893ccfSSadaf Ebrahimi }
65*b7893ccfSSadaf Ebrahimi }
66*b7893ccfSSadaf Ebrahimi } break;
67*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
68*b7893ccfSSadaf Ebrahimi
69*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
70*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV: {
71*b7893ccfSSadaf Ebrahimi safe_VkWin32KeyedMutexAcquireReleaseInfoNV *safe_struct = reinterpret_cast<safe_VkWin32KeyedMutexAcquireReleaseInfoNV *>(cur_pnext);
72*b7893ccfSSadaf Ebrahimi if (safe_struct->pAcquireSyncs) {
73*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < safe_struct->acquireCount; ++index0) {
74*b7893ccfSSadaf Ebrahimi safe_struct->pAcquireSyncs[index0] = layer_data->Unwrap(safe_struct->pAcquireSyncs[index0]);
75*b7893ccfSSadaf Ebrahimi }
76*b7893ccfSSadaf Ebrahimi }
77*b7893ccfSSadaf Ebrahimi if (safe_struct->pReleaseSyncs) {
78*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < safe_struct->releaseCount; ++index0) {
79*b7893ccfSSadaf Ebrahimi safe_struct->pReleaseSyncs[index0] = layer_data->Unwrap(safe_struct->pReleaseSyncs[index0]);
80*b7893ccfSSadaf Ebrahimi }
81*b7893ccfSSadaf Ebrahimi }
82*b7893ccfSSadaf Ebrahimi } break;
83*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
84*b7893ccfSSadaf Ebrahimi
85*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV: {
86*b7893ccfSSadaf Ebrahimi safe_VkDedicatedAllocationMemoryAllocateInfoNV *safe_struct = reinterpret_cast<safe_VkDedicatedAllocationMemoryAllocateInfoNV *>(cur_pnext);
87*b7893ccfSSadaf Ebrahimi if (safe_struct->image) {
88*b7893ccfSSadaf Ebrahimi safe_struct->image = layer_data->Unwrap(safe_struct->image);
89*b7893ccfSSadaf Ebrahimi }
90*b7893ccfSSadaf Ebrahimi if (safe_struct->buffer) {
91*b7893ccfSSadaf Ebrahimi safe_struct->buffer = layer_data->Unwrap(safe_struct->buffer);
92*b7893ccfSSadaf Ebrahimi }
93*b7893ccfSSadaf Ebrahimi } break;
94*b7893ccfSSadaf Ebrahimi
95*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO: {
96*b7893ccfSSadaf Ebrahimi safe_VkMemoryDedicatedAllocateInfo *safe_struct = reinterpret_cast<safe_VkMemoryDedicatedAllocateInfo *>(cur_pnext);
97*b7893ccfSSadaf Ebrahimi if (safe_struct->image) {
98*b7893ccfSSadaf Ebrahimi safe_struct->image = layer_data->Unwrap(safe_struct->image);
99*b7893ccfSSadaf Ebrahimi }
100*b7893ccfSSadaf Ebrahimi if (safe_struct->buffer) {
101*b7893ccfSSadaf Ebrahimi safe_struct->buffer = layer_data->Unwrap(safe_struct->buffer);
102*b7893ccfSSadaf Ebrahimi }
103*b7893ccfSSadaf Ebrahimi } break;
104*b7893ccfSSadaf Ebrahimi
105*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR: {
106*b7893ccfSSadaf Ebrahimi safe_VkImageSwapchainCreateInfoKHR *safe_struct = reinterpret_cast<safe_VkImageSwapchainCreateInfoKHR *>(cur_pnext);
107*b7893ccfSSadaf Ebrahimi if (safe_struct->swapchain) {
108*b7893ccfSSadaf Ebrahimi safe_struct->swapchain = layer_data->Unwrap(safe_struct->swapchain);
109*b7893ccfSSadaf Ebrahimi }
110*b7893ccfSSadaf Ebrahimi } break;
111*b7893ccfSSadaf Ebrahimi
112*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO: {
113*b7893ccfSSadaf Ebrahimi safe_VkSamplerYcbcrConversionInfo *safe_struct = reinterpret_cast<safe_VkSamplerYcbcrConversionInfo *>(cur_pnext);
114*b7893ccfSSadaf Ebrahimi if (safe_struct->conversion) {
115*b7893ccfSSadaf Ebrahimi safe_struct->conversion = layer_data->Unwrap(safe_struct->conversion);
116*b7893ccfSSadaf Ebrahimi }
117*b7893ccfSSadaf Ebrahimi } break;
118*b7893ccfSSadaf Ebrahimi
119*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT: {
120*b7893ccfSSadaf Ebrahimi safe_VkShaderModuleValidationCacheCreateInfoEXT *safe_struct = reinterpret_cast<safe_VkShaderModuleValidationCacheCreateInfoEXT *>(cur_pnext);
121*b7893ccfSSadaf Ebrahimi if (safe_struct->validationCache) {
122*b7893ccfSSadaf Ebrahimi safe_struct->validationCache = layer_data->Unwrap(safe_struct->validationCache);
123*b7893ccfSSadaf Ebrahimi }
124*b7893ccfSSadaf Ebrahimi } break;
125*b7893ccfSSadaf Ebrahimi
126*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV: {
127*b7893ccfSSadaf Ebrahimi safe_VkWriteDescriptorSetAccelerationStructureNV *safe_struct = reinterpret_cast<safe_VkWriteDescriptorSetAccelerationStructureNV *>(cur_pnext);
128*b7893ccfSSadaf Ebrahimi if (safe_struct->pAccelerationStructures) {
129*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < safe_struct->accelerationStructureCount; ++index0) {
130*b7893ccfSSadaf Ebrahimi safe_struct->pAccelerationStructures[index0] = layer_data->Unwrap(safe_struct->pAccelerationStructures[index0]);
131*b7893ccfSSadaf Ebrahimi }
132*b7893ccfSSadaf Ebrahimi }
133*b7893ccfSSadaf Ebrahimi } break;
134*b7893ccfSSadaf Ebrahimi
135*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR: {
136*b7893ccfSSadaf Ebrahimi safe_VkRenderPassAttachmentBeginInfoKHR *safe_struct = reinterpret_cast<safe_VkRenderPassAttachmentBeginInfoKHR *>(cur_pnext);
137*b7893ccfSSadaf Ebrahimi if (safe_struct->pAttachments) {
138*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < safe_struct->attachmentCount; ++index0) {
139*b7893ccfSSadaf Ebrahimi safe_struct->pAttachments[index0] = layer_data->Unwrap(safe_struct->pAttachments[index0]);
140*b7893ccfSSadaf Ebrahimi }
141*b7893ccfSSadaf Ebrahimi }
142*b7893ccfSSadaf Ebrahimi } break;
143*b7893ccfSSadaf Ebrahimi
144*b7893ccfSSadaf Ebrahimi case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR: {
145*b7893ccfSSadaf Ebrahimi safe_VkBindImageMemorySwapchainInfoKHR *safe_struct = reinterpret_cast<safe_VkBindImageMemorySwapchainInfoKHR *>(cur_pnext);
146*b7893ccfSSadaf Ebrahimi if (safe_struct->swapchain) {
147*b7893ccfSSadaf Ebrahimi safe_struct->swapchain = layer_data->Unwrap(safe_struct->swapchain);
148*b7893ccfSSadaf Ebrahimi }
149*b7893ccfSSadaf Ebrahimi } break;
150*b7893ccfSSadaf Ebrahimi
151*b7893ccfSSadaf Ebrahimi default:
152*b7893ccfSSadaf Ebrahimi break;
153*b7893ccfSSadaf Ebrahimi }
154*b7893ccfSSadaf Ebrahimi
155*b7893ccfSSadaf Ebrahimi // Process the next structure in the chain
156*b7893ccfSSadaf Ebrahimi cur_pnext = header->pNext;
157*b7893ccfSSadaf Ebrahimi }
158*b7893ccfSSadaf Ebrahimi }
159*b7893ccfSSadaf Ebrahimi
160*b7893ccfSSadaf Ebrahimi
161*b7893ccfSSadaf Ebrahimi // Manually written Dispatch routines
162*b7893ccfSSadaf Ebrahimi
DispatchCreateComputePipelines(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkComputePipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)163*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount,
164*b7893ccfSSadaf Ebrahimi const VkComputePipelineCreateInfo *pCreateInfos,
165*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks *pAllocator, VkPipeline *pPipelines) {
166*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
167*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateComputePipelines(device, pipelineCache, createInfoCount,
168*b7893ccfSSadaf Ebrahimi pCreateInfos, pAllocator, pPipelines);
169*b7893ccfSSadaf Ebrahimi safe_VkComputePipelineCreateInfo *local_pCreateInfos = NULL;
170*b7893ccfSSadaf Ebrahimi if (pCreateInfos) {
171*b7893ccfSSadaf Ebrahimi local_pCreateInfos = new safe_VkComputePipelineCreateInfo[createInfoCount];
172*b7893ccfSSadaf Ebrahimi for (uint32_t idx0 = 0; idx0 < createInfoCount; ++idx0) {
173*b7893ccfSSadaf Ebrahimi local_pCreateInfos[idx0].initialize(&pCreateInfos[idx0]);
174*b7893ccfSSadaf Ebrahimi if (pCreateInfos[idx0].basePipelineHandle) {
175*b7893ccfSSadaf Ebrahimi local_pCreateInfos[idx0].basePipelineHandle = layer_data->Unwrap(pCreateInfos[idx0].basePipelineHandle);
176*b7893ccfSSadaf Ebrahimi }
177*b7893ccfSSadaf Ebrahimi if (pCreateInfos[idx0].layout) {
178*b7893ccfSSadaf Ebrahimi local_pCreateInfos[idx0].layout = layer_data->Unwrap(pCreateInfos[idx0].layout);
179*b7893ccfSSadaf Ebrahimi }
180*b7893ccfSSadaf Ebrahimi if (pCreateInfos[idx0].stage.module) {
181*b7893ccfSSadaf Ebrahimi local_pCreateInfos[idx0].stage.module = layer_data->Unwrap(pCreateInfos[idx0].stage.module);
182*b7893ccfSSadaf Ebrahimi }
183*b7893ccfSSadaf Ebrahimi }
184*b7893ccfSSadaf Ebrahimi }
185*b7893ccfSSadaf Ebrahimi if (pipelineCache) {
186*b7893ccfSSadaf Ebrahimi pipelineCache = layer_data->Unwrap(pipelineCache);
187*b7893ccfSSadaf Ebrahimi }
188*b7893ccfSSadaf Ebrahimi
189*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateComputePipelines(device, pipelineCache, createInfoCount,
190*b7893ccfSSadaf Ebrahimi local_pCreateInfos->ptr(), pAllocator, pPipelines);
191*b7893ccfSSadaf Ebrahimi delete[] local_pCreateInfos;
192*b7893ccfSSadaf Ebrahimi {
193*b7893ccfSSadaf Ebrahimi for (uint32_t i = 0; i < createInfoCount; ++i) {
194*b7893ccfSSadaf Ebrahimi if (pPipelines[i] != VK_NULL_HANDLE) {
195*b7893ccfSSadaf Ebrahimi pPipelines[i] = layer_data->WrapNew(pPipelines[i]);
196*b7893ccfSSadaf Ebrahimi }
197*b7893ccfSSadaf Ebrahimi }
198*b7893ccfSSadaf Ebrahimi }
199*b7893ccfSSadaf Ebrahimi return result;
200*b7893ccfSSadaf Ebrahimi }
201*b7893ccfSSadaf Ebrahimi
DispatchCreateGraphicsPipelines(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkGraphicsPipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)202*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount,
203*b7893ccfSSadaf Ebrahimi const VkGraphicsPipelineCreateInfo *pCreateInfos,
204*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks *pAllocator, VkPipeline *pPipelines) {
205*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
206*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateGraphicsPipelines(device, pipelineCache, createInfoCount,
207*b7893ccfSSadaf Ebrahimi pCreateInfos, pAllocator, pPipelines);
208*b7893ccfSSadaf Ebrahimi safe_VkGraphicsPipelineCreateInfo *local_pCreateInfos = nullptr;
209*b7893ccfSSadaf Ebrahimi if (pCreateInfos) {
210*b7893ccfSSadaf Ebrahimi local_pCreateInfos = new safe_VkGraphicsPipelineCreateInfo[createInfoCount];
211*b7893ccfSSadaf Ebrahimi read_dispatch_lock_guard_t lock(dispatch_lock);
212*b7893ccfSSadaf Ebrahimi for (uint32_t idx0 = 0; idx0 < createInfoCount; ++idx0) {
213*b7893ccfSSadaf Ebrahimi bool uses_color_attachment = false;
214*b7893ccfSSadaf Ebrahimi bool uses_depthstencil_attachment = false;
215*b7893ccfSSadaf Ebrahimi {
216*b7893ccfSSadaf Ebrahimi const auto subpasses_uses_it = layer_data->renderpasses_states.find(layer_data->Unwrap(pCreateInfos[idx0].renderPass));
217*b7893ccfSSadaf Ebrahimi if (subpasses_uses_it != layer_data->renderpasses_states.end()) {
218*b7893ccfSSadaf Ebrahimi const auto &subpasses_uses = subpasses_uses_it->second;
219*b7893ccfSSadaf Ebrahimi if (subpasses_uses.subpasses_using_color_attachment.count(pCreateInfos[idx0].subpass))
220*b7893ccfSSadaf Ebrahimi uses_color_attachment = true;
221*b7893ccfSSadaf Ebrahimi if (subpasses_uses.subpasses_using_depthstencil_attachment.count(pCreateInfos[idx0].subpass))
222*b7893ccfSSadaf Ebrahimi uses_depthstencil_attachment = true;
223*b7893ccfSSadaf Ebrahimi }
224*b7893ccfSSadaf Ebrahimi }
225*b7893ccfSSadaf Ebrahimi
226*b7893ccfSSadaf Ebrahimi local_pCreateInfos[idx0].initialize(&pCreateInfos[idx0], uses_color_attachment, uses_depthstencil_attachment);
227*b7893ccfSSadaf Ebrahimi
228*b7893ccfSSadaf Ebrahimi if (pCreateInfos[idx0].basePipelineHandle) {
229*b7893ccfSSadaf Ebrahimi local_pCreateInfos[idx0].basePipelineHandle = layer_data->Unwrap(pCreateInfos[idx0].basePipelineHandle);
230*b7893ccfSSadaf Ebrahimi }
231*b7893ccfSSadaf Ebrahimi if (pCreateInfos[idx0].layout) {
232*b7893ccfSSadaf Ebrahimi local_pCreateInfos[idx0].layout = layer_data->Unwrap(pCreateInfos[idx0].layout);
233*b7893ccfSSadaf Ebrahimi }
234*b7893ccfSSadaf Ebrahimi if (pCreateInfos[idx0].pStages) {
235*b7893ccfSSadaf Ebrahimi for (uint32_t idx1 = 0; idx1 < pCreateInfos[idx0].stageCount; ++idx1) {
236*b7893ccfSSadaf Ebrahimi if (pCreateInfos[idx0].pStages[idx1].module) {
237*b7893ccfSSadaf Ebrahimi local_pCreateInfos[idx0].pStages[idx1].module = layer_data->Unwrap(pCreateInfos[idx0].pStages[idx1].module);
238*b7893ccfSSadaf Ebrahimi }
239*b7893ccfSSadaf Ebrahimi }
240*b7893ccfSSadaf Ebrahimi }
241*b7893ccfSSadaf Ebrahimi if (pCreateInfos[idx0].renderPass) {
242*b7893ccfSSadaf Ebrahimi local_pCreateInfos[idx0].renderPass = layer_data->Unwrap(pCreateInfos[idx0].renderPass);
243*b7893ccfSSadaf Ebrahimi }
244*b7893ccfSSadaf Ebrahimi }
245*b7893ccfSSadaf Ebrahimi }
246*b7893ccfSSadaf Ebrahimi if (pipelineCache) {
247*b7893ccfSSadaf Ebrahimi pipelineCache = layer_data->Unwrap(pipelineCache);
248*b7893ccfSSadaf Ebrahimi }
249*b7893ccfSSadaf Ebrahimi
250*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateGraphicsPipelines(device, pipelineCache, createInfoCount,
251*b7893ccfSSadaf Ebrahimi local_pCreateInfos->ptr(), pAllocator, pPipelines);
252*b7893ccfSSadaf Ebrahimi delete[] local_pCreateInfos;
253*b7893ccfSSadaf Ebrahimi {
254*b7893ccfSSadaf Ebrahimi for (uint32_t i = 0; i < createInfoCount; ++i) {
255*b7893ccfSSadaf Ebrahimi if (pPipelines[i] != VK_NULL_HANDLE) {
256*b7893ccfSSadaf Ebrahimi pPipelines[i] = layer_data->WrapNew(pPipelines[i]);
257*b7893ccfSSadaf Ebrahimi }
258*b7893ccfSSadaf Ebrahimi }
259*b7893ccfSSadaf Ebrahimi }
260*b7893ccfSSadaf Ebrahimi return result;
261*b7893ccfSSadaf Ebrahimi }
262*b7893ccfSSadaf Ebrahimi
263*b7893ccfSSadaf Ebrahimi template <typename T>
UpdateCreateRenderPassState(ValidationObject * layer_data,const T * pCreateInfo,VkRenderPass renderPass)264*b7893ccfSSadaf Ebrahimi static void UpdateCreateRenderPassState(ValidationObject *layer_data, const T *pCreateInfo, VkRenderPass renderPass) {
265*b7893ccfSSadaf Ebrahimi auto &renderpass_state = layer_data->renderpasses_states[renderPass];
266*b7893ccfSSadaf Ebrahimi
267*b7893ccfSSadaf Ebrahimi for (uint32_t subpass = 0; subpass < pCreateInfo->subpassCount; ++subpass) {
268*b7893ccfSSadaf Ebrahimi bool uses_color = false;
269*b7893ccfSSadaf Ebrahimi for (uint32_t i = 0; i < pCreateInfo->pSubpasses[subpass].colorAttachmentCount && !uses_color; ++i)
270*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pSubpasses[subpass].pColorAttachments[i].attachment != VK_ATTACHMENT_UNUSED) uses_color = true;
271*b7893ccfSSadaf Ebrahimi
272*b7893ccfSSadaf Ebrahimi bool uses_depthstencil = false;
273*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pSubpasses[subpass].pDepthStencilAttachment)
274*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pSubpasses[subpass].pDepthStencilAttachment->attachment != VK_ATTACHMENT_UNUSED)
275*b7893ccfSSadaf Ebrahimi uses_depthstencil = true;
276*b7893ccfSSadaf Ebrahimi
277*b7893ccfSSadaf Ebrahimi if (uses_color) renderpass_state.subpasses_using_color_attachment.insert(subpass);
278*b7893ccfSSadaf Ebrahimi if (uses_depthstencil) renderpass_state.subpasses_using_depthstencil_attachment.insert(subpass);
279*b7893ccfSSadaf Ebrahimi }
280*b7893ccfSSadaf Ebrahimi }
281*b7893ccfSSadaf Ebrahimi
DispatchCreateRenderPass(VkDevice device,const VkRenderPassCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)282*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateRenderPass(VkDevice device, const VkRenderPassCreateInfo *pCreateInfo,
283*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks *pAllocator, VkRenderPass *pRenderPass) {
284*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
285*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass);
286*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return result;
287*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
288*b7893ccfSSadaf Ebrahimi write_dispatch_lock_guard_t lock(dispatch_lock);
289*b7893ccfSSadaf Ebrahimi UpdateCreateRenderPassState(layer_data, pCreateInfo, *pRenderPass);
290*b7893ccfSSadaf Ebrahimi *pRenderPass = layer_data->WrapNew(*pRenderPass);
291*b7893ccfSSadaf Ebrahimi }
292*b7893ccfSSadaf Ebrahimi return result;
293*b7893ccfSSadaf Ebrahimi }
294*b7893ccfSSadaf Ebrahimi
DispatchCreateRenderPass2KHR(VkDevice device,const VkRenderPassCreateInfo2KHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)295*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateRenderPass2KHR(VkDevice device, const VkRenderPassCreateInfo2KHR *pCreateInfo,
296*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks *pAllocator, VkRenderPass *pRenderPass) {
297*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
298*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass);
299*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return result;
300*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
301*b7893ccfSSadaf Ebrahimi write_dispatch_lock_guard_t lock(dispatch_lock);
302*b7893ccfSSadaf Ebrahimi UpdateCreateRenderPassState(layer_data, pCreateInfo, *pRenderPass);
303*b7893ccfSSadaf Ebrahimi *pRenderPass = layer_data->WrapNew(*pRenderPass);
304*b7893ccfSSadaf Ebrahimi }
305*b7893ccfSSadaf Ebrahimi return result;
306*b7893ccfSSadaf Ebrahimi }
307*b7893ccfSSadaf Ebrahimi
DispatchDestroyRenderPass(VkDevice device,VkRenderPass renderPass,const VkAllocationCallbacks * pAllocator)308*b7893ccfSSadaf Ebrahimi void DispatchDestroyRenderPass(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks *pAllocator) {
309*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
310*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroyRenderPass(device, renderPass, pAllocator);
311*b7893ccfSSadaf Ebrahimi uint64_t renderPass_id = reinterpret_cast<uint64_t &>(renderPass);
312*b7893ccfSSadaf Ebrahimi
313*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(renderPass_id);
314*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
315*b7893ccfSSadaf Ebrahimi renderPass = (VkRenderPass)iter->second;
316*b7893ccfSSadaf Ebrahimi } else {
317*b7893ccfSSadaf Ebrahimi renderPass = (VkRenderPass)0;
318*b7893ccfSSadaf Ebrahimi }
319*b7893ccfSSadaf Ebrahimi
320*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyRenderPass(device, renderPass, pAllocator);
321*b7893ccfSSadaf Ebrahimi
322*b7893ccfSSadaf Ebrahimi write_dispatch_lock_guard_t lock(dispatch_lock);
323*b7893ccfSSadaf Ebrahimi layer_data->renderpasses_states.erase(renderPass);
324*b7893ccfSSadaf Ebrahimi }
325*b7893ccfSSadaf Ebrahimi
DispatchCreateSwapchainKHR(VkDevice device,const VkSwapchainCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSwapchainKHR * pSwapchain)326*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateSwapchainKHR(VkDevice device, const VkSwapchainCreateInfoKHR *pCreateInfo,
327*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks *pAllocator, VkSwapchainKHR *pSwapchain) {
328*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
329*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain);
330*b7893ccfSSadaf Ebrahimi safe_VkSwapchainCreateInfoKHR *local_pCreateInfo = NULL;
331*b7893ccfSSadaf Ebrahimi if (pCreateInfo) {
332*b7893ccfSSadaf Ebrahimi local_pCreateInfo = new safe_VkSwapchainCreateInfoKHR(pCreateInfo);
333*b7893ccfSSadaf Ebrahimi local_pCreateInfo->oldSwapchain = layer_data->Unwrap(pCreateInfo->oldSwapchain);
334*b7893ccfSSadaf Ebrahimi // Surface is instance-level object
335*b7893ccfSSadaf Ebrahimi local_pCreateInfo->surface = layer_data->Unwrap(pCreateInfo->surface);
336*b7893ccfSSadaf Ebrahimi }
337*b7893ccfSSadaf Ebrahimi
338*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateSwapchainKHR(device, local_pCreateInfo->ptr(), pAllocator, pSwapchain);
339*b7893ccfSSadaf Ebrahimi delete local_pCreateInfo;
340*b7893ccfSSadaf Ebrahimi
341*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
342*b7893ccfSSadaf Ebrahimi *pSwapchain = layer_data->WrapNew(*pSwapchain);
343*b7893ccfSSadaf Ebrahimi }
344*b7893ccfSSadaf Ebrahimi return result;
345*b7893ccfSSadaf Ebrahimi }
346*b7893ccfSSadaf Ebrahimi
DispatchCreateSharedSwapchainsKHR(VkDevice device,uint32_t swapchainCount,const VkSwapchainCreateInfoKHR * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkSwapchainKHR * pSwapchains)347*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateSharedSwapchainsKHR(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR *pCreateInfos,
348*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks *pAllocator, VkSwapchainKHR *pSwapchains) {
349*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
350*b7893ccfSSadaf Ebrahimi if (!wrap_handles)
351*b7893ccfSSadaf Ebrahimi return layer_data->device_dispatch_table.CreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator,
352*b7893ccfSSadaf Ebrahimi pSwapchains);
353*b7893ccfSSadaf Ebrahimi safe_VkSwapchainCreateInfoKHR *local_pCreateInfos = NULL;
354*b7893ccfSSadaf Ebrahimi {
355*b7893ccfSSadaf Ebrahimi if (pCreateInfos) {
356*b7893ccfSSadaf Ebrahimi local_pCreateInfos = new safe_VkSwapchainCreateInfoKHR[swapchainCount];
357*b7893ccfSSadaf Ebrahimi for (uint32_t i = 0; i < swapchainCount; ++i) {
358*b7893ccfSSadaf Ebrahimi local_pCreateInfos[i].initialize(&pCreateInfos[i]);
359*b7893ccfSSadaf Ebrahimi if (pCreateInfos[i].surface) {
360*b7893ccfSSadaf Ebrahimi // Surface is instance-level object
361*b7893ccfSSadaf Ebrahimi local_pCreateInfos[i].surface = layer_data->Unwrap(pCreateInfos[i].surface);
362*b7893ccfSSadaf Ebrahimi }
363*b7893ccfSSadaf Ebrahimi if (pCreateInfos[i].oldSwapchain) {
364*b7893ccfSSadaf Ebrahimi local_pCreateInfos[i].oldSwapchain = layer_data->Unwrap(pCreateInfos[i].oldSwapchain);
365*b7893ccfSSadaf Ebrahimi }
366*b7893ccfSSadaf Ebrahimi }
367*b7893ccfSSadaf Ebrahimi }
368*b7893ccfSSadaf Ebrahimi }
369*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateSharedSwapchainsKHR(device, swapchainCount, local_pCreateInfos->ptr(),
370*b7893ccfSSadaf Ebrahimi pAllocator, pSwapchains);
371*b7893ccfSSadaf Ebrahimi delete[] local_pCreateInfos;
372*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
373*b7893ccfSSadaf Ebrahimi for (uint32_t i = 0; i < swapchainCount; i++) {
374*b7893ccfSSadaf Ebrahimi pSwapchains[i] = layer_data->WrapNew(pSwapchains[i]);
375*b7893ccfSSadaf Ebrahimi }
376*b7893ccfSSadaf Ebrahimi }
377*b7893ccfSSadaf Ebrahimi return result;
378*b7893ccfSSadaf Ebrahimi }
379*b7893ccfSSadaf Ebrahimi
DispatchGetSwapchainImagesKHR(VkDevice device,VkSwapchainKHR swapchain,uint32_t * pSwapchainImageCount,VkImage * pSwapchainImages)380*b7893ccfSSadaf Ebrahimi VkResult DispatchGetSwapchainImagesKHR(VkDevice device, VkSwapchainKHR swapchain, uint32_t *pSwapchainImageCount,
381*b7893ccfSSadaf Ebrahimi VkImage *pSwapchainImages) {
382*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
383*b7893ccfSSadaf Ebrahimi if (!wrap_handles)
384*b7893ccfSSadaf Ebrahimi return layer_data->device_dispatch_table.GetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages);
385*b7893ccfSSadaf Ebrahimi VkSwapchainKHR wrapped_swapchain_handle = swapchain;
386*b7893ccfSSadaf Ebrahimi if (VK_NULL_HANDLE != swapchain) {
387*b7893ccfSSadaf Ebrahimi swapchain = layer_data->Unwrap(swapchain);
388*b7893ccfSSadaf Ebrahimi }
389*b7893ccfSSadaf Ebrahimi VkResult result =
390*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.GetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages);
391*b7893ccfSSadaf Ebrahimi if ((VK_SUCCESS == result) || (VK_INCOMPLETE == result)) {
392*b7893ccfSSadaf Ebrahimi if ((*pSwapchainImageCount > 0) && pSwapchainImages) {
393*b7893ccfSSadaf Ebrahimi write_dispatch_lock_guard_t lock(dispatch_lock);
394*b7893ccfSSadaf Ebrahimi auto &wrapped_swapchain_image_handles = layer_data->swapchain_wrapped_image_handle_map[wrapped_swapchain_handle];
395*b7893ccfSSadaf Ebrahimi for (uint32_t i = static_cast<uint32_t>(wrapped_swapchain_image_handles.size()); i < *pSwapchainImageCount; i++) {
396*b7893ccfSSadaf Ebrahimi wrapped_swapchain_image_handles.emplace_back(layer_data->WrapNew(pSwapchainImages[i]));
397*b7893ccfSSadaf Ebrahimi }
398*b7893ccfSSadaf Ebrahimi for (uint32_t i = 0; i < *pSwapchainImageCount; i++) {
399*b7893ccfSSadaf Ebrahimi pSwapchainImages[i] = wrapped_swapchain_image_handles[i];
400*b7893ccfSSadaf Ebrahimi }
401*b7893ccfSSadaf Ebrahimi }
402*b7893ccfSSadaf Ebrahimi }
403*b7893ccfSSadaf Ebrahimi return result;
404*b7893ccfSSadaf Ebrahimi }
405*b7893ccfSSadaf Ebrahimi
DispatchDestroySwapchainKHR(VkDevice device,VkSwapchainKHR swapchain,const VkAllocationCallbacks * pAllocator)406*b7893ccfSSadaf Ebrahimi void DispatchDestroySwapchainKHR(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks *pAllocator) {
407*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
408*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroySwapchainKHR(device, swapchain, pAllocator);
409*b7893ccfSSadaf Ebrahimi write_dispatch_lock_guard_t lock(dispatch_lock);
410*b7893ccfSSadaf Ebrahimi
411*b7893ccfSSadaf Ebrahimi auto &image_array = layer_data->swapchain_wrapped_image_handle_map[swapchain];
412*b7893ccfSSadaf Ebrahimi for (auto &image_handle : image_array) {
413*b7893ccfSSadaf Ebrahimi unique_id_mapping.erase(HandleToUint64(image_handle));
414*b7893ccfSSadaf Ebrahimi }
415*b7893ccfSSadaf Ebrahimi layer_data->swapchain_wrapped_image_handle_map.erase(swapchain);
416*b7893ccfSSadaf Ebrahimi lock.unlock();
417*b7893ccfSSadaf Ebrahimi
418*b7893ccfSSadaf Ebrahimi uint64_t swapchain_id = HandleToUint64(swapchain);
419*b7893ccfSSadaf Ebrahimi
420*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(swapchain_id);
421*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
422*b7893ccfSSadaf Ebrahimi swapchain = (VkSwapchainKHR)iter->second;
423*b7893ccfSSadaf Ebrahimi } else {
424*b7893ccfSSadaf Ebrahimi swapchain = (VkSwapchainKHR)0;
425*b7893ccfSSadaf Ebrahimi }
426*b7893ccfSSadaf Ebrahimi
427*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroySwapchainKHR(device, swapchain, pAllocator);
428*b7893ccfSSadaf Ebrahimi }
429*b7893ccfSSadaf Ebrahimi
DispatchQueuePresentKHR(VkQueue queue,const VkPresentInfoKHR * pPresentInfo)430*b7893ccfSSadaf Ebrahimi VkResult DispatchQueuePresentKHR(VkQueue queue, const VkPresentInfoKHR *pPresentInfo) {
431*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map);
432*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.QueuePresentKHR(queue, pPresentInfo);
433*b7893ccfSSadaf Ebrahimi safe_VkPresentInfoKHR *local_pPresentInfo = NULL;
434*b7893ccfSSadaf Ebrahimi {
435*b7893ccfSSadaf Ebrahimi if (pPresentInfo) {
436*b7893ccfSSadaf Ebrahimi local_pPresentInfo = new safe_VkPresentInfoKHR(pPresentInfo);
437*b7893ccfSSadaf Ebrahimi if (local_pPresentInfo->pWaitSemaphores) {
438*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pPresentInfo->waitSemaphoreCount; ++index1) {
439*b7893ccfSSadaf Ebrahimi local_pPresentInfo->pWaitSemaphores[index1] = layer_data->Unwrap(pPresentInfo->pWaitSemaphores[index1]);
440*b7893ccfSSadaf Ebrahimi }
441*b7893ccfSSadaf Ebrahimi }
442*b7893ccfSSadaf Ebrahimi if (local_pPresentInfo->pSwapchains) {
443*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pPresentInfo->swapchainCount; ++index1) {
444*b7893ccfSSadaf Ebrahimi local_pPresentInfo->pSwapchains[index1] = layer_data->Unwrap(pPresentInfo->pSwapchains[index1]);
445*b7893ccfSSadaf Ebrahimi }
446*b7893ccfSSadaf Ebrahimi }
447*b7893ccfSSadaf Ebrahimi }
448*b7893ccfSSadaf Ebrahimi }
449*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.QueuePresentKHR(queue, local_pPresentInfo->ptr());
450*b7893ccfSSadaf Ebrahimi
451*b7893ccfSSadaf Ebrahimi // pResults is an output array embedded in a structure. The code generator neglects to copy back from the safe_* version,
452*b7893ccfSSadaf Ebrahimi // so handle it as a special case here:
453*b7893ccfSSadaf Ebrahimi if (pPresentInfo && pPresentInfo->pResults) {
454*b7893ccfSSadaf Ebrahimi for (uint32_t i = 0; i < pPresentInfo->swapchainCount; i++) {
455*b7893ccfSSadaf Ebrahimi pPresentInfo->pResults[i] = local_pPresentInfo->pResults[i];
456*b7893ccfSSadaf Ebrahimi }
457*b7893ccfSSadaf Ebrahimi }
458*b7893ccfSSadaf Ebrahimi delete local_pPresentInfo;
459*b7893ccfSSadaf Ebrahimi return result;
460*b7893ccfSSadaf Ebrahimi }
461*b7893ccfSSadaf Ebrahimi
DispatchDestroyDescriptorPool(VkDevice device,VkDescriptorPool descriptorPool,const VkAllocationCallbacks * pAllocator)462*b7893ccfSSadaf Ebrahimi void DispatchDestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks *pAllocator) {
463*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
464*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroyDescriptorPool(device, descriptorPool, pAllocator);
465*b7893ccfSSadaf Ebrahimi write_dispatch_lock_guard_t lock(dispatch_lock);
466*b7893ccfSSadaf Ebrahimi
467*b7893ccfSSadaf Ebrahimi // remove references to implicitly freed descriptor sets
468*b7893ccfSSadaf Ebrahimi for(auto descriptor_set : layer_data->pool_descriptor_sets_map[descriptorPool]) {
469*b7893ccfSSadaf Ebrahimi unique_id_mapping.erase(reinterpret_cast<uint64_t &>(descriptor_set));
470*b7893ccfSSadaf Ebrahimi }
471*b7893ccfSSadaf Ebrahimi layer_data->pool_descriptor_sets_map.erase(descriptorPool);
472*b7893ccfSSadaf Ebrahimi lock.unlock();
473*b7893ccfSSadaf Ebrahimi
474*b7893ccfSSadaf Ebrahimi uint64_t descriptorPool_id = reinterpret_cast<uint64_t &>(descriptorPool);
475*b7893ccfSSadaf Ebrahimi
476*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(descriptorPool_id);
477*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
478*b7893ccfSSadaf Ebrahimi descriptorPool = (VkDescriptorPool)iter->second;
479*b7893ccfSSadaf Ebrahimi } else {
480*b7893ccfSSadaf Ebrahimi descriptorPool = (VkDescriptorPool)0;
481*b7893ccfSSadaf Ebrahimi }
482*b7893ccfSSadaf Ebrahimi
483*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyDescriptorPool(device, descriptorPool, pAllocator);
484*b7893ccfSSadaf Ebrahimi }
485*b7893ccfSSadaf Ebrahimi
DispatchResetDescriptorPool(VkDevice device,VkDescriptorPool descriptorPool,VkDescriptorPoolResetFlags flags)486*b7893ccfSSadaf Ebrahimi VkResult DispatchResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags) {
487*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
488*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.ResetDescriptorPool(device, descriptorPool, flags);
489*b7893ccfSSadaf Ebrahimi VkDescriptorPool local_descriptor_pool = VK_NULL_HANDLE;
490*b7893ccfSSadaf Ebrahimi {
491*b7893ccfSSadaf Ebrahimi local_descriptor_pool = layer_data->Unwrap(descriptorPool);
492*b7893ccfSSadaf Ebrahimi }
493*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.ResetDescriptorPool(device, local_descriptor_pool, flags);
494*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
495*b7893ccfSSadaf Ebrahimi write_dispatch_lock_guard_t lock(dispatch_lock);
496*b7893ccfSSadaf Ebrahimi // remove references to implicitly freed descriptor sets
497*b7893ccfSSadaf Ebrahimi for(auto descriptor_set : layer_data->pool_descriptor_sets_map[descriptorPool]) {
498*b7893ccfSSadaf Ebrahimi unique_id_mapping.erase(reinterpret_cast<uint64_t &>(descriptor_set));
499*b7893ccfSSadaf Ebrahimi }
500*b7893ccfSSadaf Ebrahimi layer_data->pool_descriptor_sets_map[descriptorPool].clear();
501*b7893ccfSSadaf Ebrahimi }
502*b7893ccfSSadaf Ebrahimi
503*b7893ccfSSadaf Ebrahimi return result;
504*b7893ccfSSadaf Ebrahimi }
505*b7893ccfSSadaf Ebrahimi
DispatchAllocateDescriptorSets(VkDevice device,const VkDescriptorSetAllocateInfo * pAllocateInfo,VkDescriptorSet * pDescriptorSets)506*b7893ccfSSadaf Ebrahimi VkResult DispatchAllocateDescriptorSets(VkDevice device, const VkDescriptorSetAllocateInfo *pAllocateInfo,
507*b7893ccfSSadaf Ebrahimi VkDescriptorSet *pDescriptorSets) {
508*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
509*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.AllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets);
510*b7893ccfSSadaf Ebrahimi safe_VkDescriptorSetAllocateInfo *local_pAllocateInfo = NULL;
511*b7893ccfSSadaf Ebrahimi {
512*b7893ccfSSadaf Ebrahimi if (pAllocateInfo) {
513*b7893ccfSSadaf Ebrahimi local_pAllocateInfo = new safe_VkDescriptorSetAllocateInfo(pAllocateInfo);
514*b7893ccfSSadaf Ebrahimi if (pAllocateInfo->descriptorPool) {
515*b7893ccfSSadaf Ebrahimi local_pAllocateInfo->descriptorPool = layer_data->Unwrap(pAllocateInfo->descriptorPool);
516*b7893ccfSSadaf Ebrahimi }
517*b7893ccfSSadaf Ebrahimi if (local_pAllocateInfo->pSetLayouts) {
518*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pAllocateInfo->descriptorSetCount; ++index1) {
519*b7893ccfSSadaf Ebrahimi local_pAllocateInfo->pSetLayouts[index1] = layer_data->Unwrap(local_pAllocateInfo->pSetLayouts[index1]);
520*b7893ccfSSadaf Ebrahimi }
521*b7893ccfSSadaf Ebrahimi }
522*b7893ccfSSadaf Ebrahimi }
523*b7893ccfSSadaf Ebrahimi }
524*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.AllocateDescriptorSets(
525*b7893ccfSSadaf Ebrahimi device, (const VkDescriptorSetAllocateInfo *)local_pAllocateInfo, pDescriptorSets);
526*b7893ccfSSadaf Ebrahimi if (local_pAllocateInfo) {
527*b7893ccfSSadaf Ebrahimi delete local_pAllocateInfo;
528*b7893ccfSSadaf Ebrahimi }
529*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
530*b7893ccfSSadaf Ebrahimi write_dispatch_lock_guard_t lock(dispatch_lock);
531*b7893ccfSSadaf Ebrahimi auto &pool_descriptor_sets = layer_data->pool_descriptor_sets_map[pAllocateInfo->descriptorPool];
532*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < pAllocateInfo->descriptorSetCount; index0++) {
533*b7893ccfSSadaf Ebrahimi pDescriptorSets[index0] = layer_data->WrapNew(pDescriptorSets[index0]);
534*b7893ccfSSadaf Ebrahimi pool_descriptor_sets.insert(pDescriptorSets[index0]);
535*b7893ccfSSadaf Ebrahimi }
536*b7893ccfSSadaf Ebrahimi }
537*b7893ccfSSadaf Ebrahimi return result;
538*b7893ccfSSadaf Ebrahimi }
539*b7893ccfSSadaf Ebrahimi
DispatchFreeDescriptorSets(VkDevice device,VkDescriptorPool descriptorPool,uint32_t descriptorSetCount,const VkDescriptorSet * pDescriptorSets)540*b7893ccfSSadaf Ebrahimi VkResult DispatchFreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount,
541*b7893ccfSSadaf Ebrahimi const VkDescriptorSet *pDescriptorSets) {
542*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
543*b7893ccfSSadaf Ebrahimi if (!wrap_handles)
544*b7893ccfSSadaf Ebrahimi return layer_data->device_dispatch_table.FreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets);
545*b7893ccfSSadaf Ebrahimi VkDescriptorSet *local_pDescriptorSets = NULL;
546*b7893ccfSSadaf Ebrahimi VkDescriptorPool local_descriptor_pool = VK_NULL_HANDLE;
547*b7893ccfSSadaf Ebrahimi {
548*b7893ccfSSadaf Ebrahimi local_descriptor_pool = layer_data->Unwrap(descriptorPool);
549*b7893ccfSSadaf Ebrahimi if (pDescriptorSets) {
550*b7893ccfSSadaf Ebrahimi local_pDescriptorSets = new VkDescriptorSet[descriptorSetCount];
551*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < descriptorSetCount; ++index0) {
552*b7893ccfSSadaf Ebrahimi local_pDescriptorSets[index0] = layer_data->Unwrap(pDescriptorSets[index0]);
553*b7893ccfSSadaf Ebrahimi }
554*b7893ccfSSadaf Ebrahimi }
555*b7893ccfSSadaf Ebrahimi }
556*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.FreeDescriptorSets(device, local_descriptor_pool, descriptorSetCount,
557*b7893ccfSSadaf Ebrahimi (const VkDescriptorSet *)local_pDescriptorSets);
558*b7893ccfSSadaf Ebrahimi if (local_pDescriptorSets) delete[] local_pDescriptorSets;
559*b7893ccfSSadaf Ebrahimi if ((VK_SUCCESS == result) && (pDescriptorSets)) {
560*b7893ccfSSadaf Ebrahimi write_dispatch_lock_guard_t lock(dispatch_lock);
561*b7893ccfSSadaf Ebrahimi auto &pool_descriptor_sets = layer_data->pool_descriptor_sets_map[descriptorPool];
562*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < descriptorSetCount; index0++) {
563*b7893ccfSSadaf Ebrahimi VkDescriptorSet handle = pDescriptorSets[index0];
564*b7893ccfSSadaf Ebrahimi pool_descriptor_sets.erase(handle);
565*b7893ccfSSadaf Ebrahimi uint64_t unique_id = reinterpret_cast<uint64_t &>(handle);
566*b7893ccfSSadaf Ebrahimi unique_id_mapping.erase(unique_id);
567*b7893ccfSSadaf Ebrahimi }
568*b7893ccfSSadaf Ebrahimi }
569*b7893ccfSSadaf Ebrahimi return result;
570*b7893ccfSSadaf Ebrahimi }
571*b7893ccfSSadaf Ebrahimi
572*b7893ccfSSadaf Ebrahimi // This is the core version of this routine. The extension version is below.
DispatchCreateDescriptorUpdateTemplate(VkDevice device,const VkDescriptorUpdateTemplateCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplateKHR * pDescriptorUpdateTemplate)573*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateDescriptorUpdateTemplate(VkDevice device, const VkDescriptorUpdateTemplateCreateInfoKHR *pCreateInfo,
574*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks *pAllocator,
575*b7893ccfSSadaf Ebrahimi VkDescriptorUpdateTemplateKHR *pDescriptorUpdateTemplate) {
576*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
577*b7893ccfSSadaf Ebrahimi if (!wrap_handles)
578*b7893ccfSSadaf Ebrahimi return layer_data->device_dispatch_table.CreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator,
579*b7893ccfSSadaf Ebrahimi pDescriptorUpdateTemplate);
580*b7893ccfSSadaf Ebrahimi safe_VkDescriptorUpdateTemplateCreateInfo *local_create_info = NULL;
581*b7893ccfSSadaf Ebrahimi {
582*b7893ccfSSadaf Ebrahimi if (pCreateInfo) {
583*b7893ccfSSadaf Ebrahimi local_create_info = new safe_VkDescriptorUpdateTemplateCreateInfo(pCreateInfo);
584*b7893ccfSSadaf Ebrahimi if (pCreateInfo->descriptorSetLayout) {
585*b7893ccfSSadaf Ebrahimi local_create_info->descriptorSetLayout = layer_data->Unwrap(pCreateInfo->descriptorSetLayout);
586*b7893ccfSSadaf Ebrahimi }
587*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pipelineLayout) {
588*b7893ccfSSadaf Ebrahimi local_create_info->pipelineLayout = layer_data->Unwrap(pCreateInfo->pipelineLayout);
589*b7893ccfSSadaf Ebrahimi }
590*b7893ccfSSadaf Ebrahimi }
591*b7893ccfSSadaf Ebrahimi }
592*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateDescriptorUpdateTemplate(device, local_create_info->ptr(), pAllocator,
593*b7893ccfSSadaf Ebrahimi pDescriptorUpdateTemplate);
594*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
595*b7893ccfSSadaf Ebrahimi write_dispatch_lock_guard_t lock(dispatch_lock);
596*b7893ccfSSadaf Ebrahimi *pDescriptorUpdateTemplate = layer_data->WrapNew(*pDescriptorUpdateTemplate);
597*b7893ccfSSadaf Ebrahimi
598*b7893ccfSSadaf Ebrahimi // Shadow template createInfo for later updates
599*b7893ccfSSadaf Ebrahimi std::unique_ptr<TEMPLATE_STATE> template_state(new TEMPLATE_STATE(*pDescriptorUpdateTemplate, local_create_info));
600*b7893ccfSSadaf Ebrahimi layer_data->desc_template_createinfo_map[(uint64_t)*pDescriptorUpdateTemplate] = std::move(template_state);
601*b7893ccfSSadaf Ebrahimi }
602*b7893ccfSSadaf Ebrahimi return result;
603*b7893ccfSSadaf Ebrahimi }
604*b7893ccfSSadaf Ebrahimi
605*b7893ccfSSadaf Ebrahimi // This is the extension version of this routine. The core version is above.
DispatchCreateDescriptorUpdateTemplateKHR(VkDevice device,const VkDescriptorUpdateTemplateCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplateKHR * pDescriptorUpdateTemplate)606*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateDescriptorUpdateTemplateKHR(VkDevice device, const VkDescriptorUpdateTemplateCreateInfoKHR *pCreateInfo,
607*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks *pAllocator,
608*b7893ccfSSadaf Ebrahimi VkDescriptorUpdateTemplateKHR *pDescriptorUpdateTemplate) {
609*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
610*b7893ccfSSadaf Ebrahimi if (!wrap_handles)
611*b7893ccfSSadaf Ebrahimi return layer_data->device_dispatch_table.CreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator,
612*b7893ccfSSadaf Ebrahimi pDescriptorUpdateTemplate);
613*b7893ccfSSadaf Ebrahimi safe_VkDescriptorUpdateTemplateCreateInfo *local_create_info = NULL;
614*b7893ccfSSadaf Ebrahimi {
615*b7893ccfSSadaf Ebrahimi if (pCreateInfo) {
616*b7893ccfSSadaf Ebrahimi local_create_info = new safe_VkDescriptorUpdateTemplateCreateInfo(pCreateInfo);
617*b7893ccfSSadaf Ebrahimi if (pCreateInfo->descriptorSetLayout) {
618*b7893ccfSSadaf Ebrahimi local_create_info->descriptorSetLayout = layer_data->Unwrap(pCreateInfo->descriptorSetLayout);
619*b7893ccfSSadaf Ebrahimi }
620*b7893ccfSSadaf Ebrahimi if (pCreateInfo->pipelineLayout) {
621*b7893ccfSSadaf Ebrahimi local_create_info->pipelineLayout = layer_data->Unwrap(pCreateInfo->pipelineLayout);
622*b7893ccfSSadaf Ebrahimi }
623*b7893ccfSSadaf Ebrahimi }
624*b7893ccfSSadaf Ebrahimi }
625*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateDescriptorUpdateTemplateKHR(device, local_create_info->ptr(), pAllocator,
626*b7893ccfSSadaf Ebrahimi pDescriptorUpdateTemplate);
627*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
628*b7893ccfSSadaf Ebrahimi write_dispatch_lock_guard_t lock(dispatch_lock);
629*b7893ccfSSadaf Ebrahimi *pDescriptorUpdateTemplate = layer_data->WrapNew(*pDescriptorUpdateTemplate);
630*b7893ccfSSadaf Ebrahimi
631*b7893ccfSSadaf Ebrahimi // Shadow template createInfo for later updates
632*b7893ccfSSadaf Ebrahimi std::unique_ptr<TEMPLATE_STATE> template_state(new TEMPLATE_STATE(*pDescriptorUpdateTemplate, local_create_info));
633*b7893ccfSSadaf Ebrahimi layer_data->desc_template_createinfo_map[(uint64_t)*pDescriptorUpdateTemplate] = std::move(template_state);
634*b7893ccfSSadaf Ebrahimi }
635*b7893ccfSSadaf Ebrahimi return result;
636*b7893ccfSSadaf Ebrahimi }
637*b7893ccfSSadaf Ebrahimi
638*b7893ccfSSadaf Ebrahimi // This is the core version of this routine. The extension version is below.
DispatchDestroyDescriptorUpdateTemplate(VkDevice device,VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)639*b7893ccfSSadaf Ebrahimi void DispatchDestroyDescriptorUpdateTemplate(VkDevice device, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
640*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks *pAllocator) {
641*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
642*b7893ccfSSadaf Ebrahimi if (!wrap_handles)
643*b7893ccfSSadaf Ebrahimi return layer_data->device_dispatch_table.DestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator);
644*b7893ccfSSadaf Ebrahimi write_dispatch_lock_guard_t lock(dispatch_lock);
645*b7893ccfSSadaf Ebrahimi uint64_t descriptor_update_template_id = reinterpret_cast<uint64_t &>(descriptorUpdateTemplate);
646*b7893ccfSSadaf Ebrahimi layer_data->desc_template_createinfo_map.erase(descriptor_update_template_id);
647*b7893ccfSSadaf Ebrahimi lock.unlock();
648*b7893ccfSSadaf Ebrahimi
649*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(descriptor_update_template_id);
650*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
651*b7893ccfSSadaf Ebrahimi descriptorUpdateTemplate = (VkDescriptorUpdateTemplate)iter->second;
652*b7893ccfSSadaf Ebrahimi } else {
653*b7893ccfSSadaf Ebrahimi descriptorUpdateTemplate = (VkDescriptorUpdateTemplate)0;
654*b7893ccfSSadaf Ebrahimi }
655*b7893ccfSSadaf Ebrahimi
656*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator);
657*b7893ccfSSadaf Ebrahimi }
658*b7893ccfSSadaf Ebrahimi
659*b7893ccfSSadaf Ebrahimi // This is the extension version of this routine. The core version is above.
DispatchDestroyDescriptorUpdateTemplateKHR(VkDevice device,VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)660*b7893ccfSSadaf Ebrahimi void DispatchDestroyDescriptorUpdateTemplateKHR(VkDevice device, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
661*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks *pAllocator) {
662*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
663*b7893ccfSSadaf Ebrahimi if (!wrap_handles)
664*b7893ccfSSadaf Ebrahimi return layer_data->device_dispatch_table.DestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator);
665*b7893ccfSSadaf Ebrahimi write_dispatch_lock_guard_t lock(dispatch_lock);
666*b7893ccfSSadaf Ebrahimi uint64_t descriptor_update_template_id = reinterpret_cast<uint64_t &>(descriptorUpdateTemplate);
667*b7893ccfSSadaf Ebrahimi layer_data->desc_template_createinfo_map.erase(descriptor_update_template_id);
668*b7893ccfSSadaf Ebrahimi lock.unlock();
669*b7893ccfSSadaf Ebrahimi
670*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(descriptor_update_template_id);
671*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
672*b7893ccfSSadaf Ebrahimi descriptorUpdateTemplate = (VkDescriptorUpdateTemplate)iter->second;
673*b7893ccfSSadaf Ebrahimi } else {
674*b7893ccfSSadaf Ebrahimi descriptorUpdateTemplate = (VkDescriptorUpdateTemplate)0;
675*b7893ccfSSadaf Ebrahimi }
676*b7893ccfSSadaf Ebrahimi
677*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator);
678*b7893ccfSSadaf Ebrahimi }
679*b7893ccfSSadaf Ebrahimi
BuildUnwrappedUpdateTemplateBuffer(ValidationObject * layer_data,uint64_t descriptorUpdateTemplate,const void * pData)680*b7893ccfSSadaf Ebrahimi void *BuildUnwrappedUpdateTemplateBuffer(ValidationObject *layer_data, uint64_t descriptorUpdateTemplate, const void *pData) {
681*b7893ccfSSadaf Ebrahimi auto const template_map_entry = layer_data->desc_template_createinfo_map.find(descriptorUpdateTemplate);
682*b7893ccfSSadaf Ebrahimi if (template_map_entry == layer_data->desc_template_createinfo_map.end()) {
683*b7893ccfSSadaf Ebrahimi assert(0);
684*b7893ccfSSadaf Ebrahimi }
685*b7893ccfSSadaf Ebrahimi auto const &create_info = template_map_entry->second->create_info;
686*b7893ccfSSadaf Ebrahimi size_t allocation_size = 0;
687*b7893ccfSSadaf Ebrahimi std::vector<std::tuple<size_t, VulkanObjectType, uint64_t, size_t>> template_entries;
688*b7893ccfSSadaf Ebrahimi
689*b7893ccfSSadaf Ebrahimi for (uint32_t i = 0; i < create_info.descriptorUpdateEntryCount; i++) {
690*b7893ccfSSadaf Ebrahimi for (uint32_t j = 0; j < create_info.pDescriptorUpdateEntries[i].descriptorCount; j++) {
691*b7893ccfSSadaf Ebrahimi size_t offset = create_info.pDescriptorUpdateEntries[i].offset + j * create_info.pDescriptorUpdateEntries[i].stride;
692*b7893ccfSSadaf Ebrahimi char *update_entry = (char *)(pData) + offset;
693*b7893ccfSSadaf Ebrahimi
694*b7893ccfSSadaf Ebrahimi switch (create_info.pDescriptorUpdateEntries[i].descriptorType) {
695*b7893ccfSSadaf Ebrahimi case VK_DESCRIPTOR_TYPE_SAMPLER:
696*b7893ccfSSadaf Ebrahimi case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
697*b7893ccfSSadaf Ebrahimi case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
698*b7893ccfSSadaf Ebrahimi case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
699*b7893ccfSSadaf Ebrahimi case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT: {
700*b7893ccfSSadaf Ebrahimi auto image_entry = reinterpret_cast<VkDescriptorImageInfo *>(update_entry);
701*b7893ccfSSadaf Ebrahimi allocation_size = std::max(allocation_size, offset + sizeof(VkDescriptorImageInfo));
702*b7893ccfSSadaf Ebrahimi
703*b7893ccfSSadaf Ebrahimi VkDescriptorImageInfo *wrapped_entry = new VkDescriptorImageInfo(*image_entry);
704*b7893ccfSSadaf Ebrahimi wrapped_entry->sampler = layer_data->Unwrap(image_entry->sampler);
705*b7893ccfSSadaf Ebrahimi wrapped_entry->imageView = layer_data->Unwrap(image_entry->imageView);
706*b7893ccfSSadaf Ebrahimi template_entries.emplace_back(offset, kVulkanObjectTypeImage, CastToUint64(wrapped_entry), 0);
707*b7893ccfSSadaf Ebrahimi } break;
708*b7893ccfSSadaf Ebrahimi
709*b7893ccfSSadaf Ebrahimi case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
710*b7893ccfSSadaf Ebrahimi case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
711*b7893ccfSSadaf Ebrahimi case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
712*b7893ccfSSadaf Ebrahimi case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC: {
713*b7893ccfSSadaf Ebrahimi auto buffer_entry = reinterpret_cast<VkDescriptorBufferInfo *>(update_entry);
714*b7893ccfSSadaf Ebrahimi allocation_size = std::max(allocation_size, offset + sizeof(VkDescriptorBufferInfo));
715*b7893ccfSSadaf Ebrahimi
716*b7893ccfSSadaf Ebrahimi VkDescriptorBufferInfo *wrapped_entry = new VkDescriptorBufferInfo(*buffer_entry);
717*b7893ccfSSadaf Ebrahimi wrapped_entry->buffer = layer_data->Unwrap(buffer_entry->buffer);
718*b7893ccfSSadaf Ebrahimi template_entries.emplace_back(offset, kVulkanObjectTypeBuffer, CastToUint64(wrapped_entry), 0);
719*b7893ccfSSadaf Ebrahimi } break;
720*b7893ccfSSadaf Ebrahimi
721*b7893ccfSSadaf Ebrahimi case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
722*b7893ccfSSadaf Ebrahimi case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER: {
723*b7893ccfSSadaf Ebrahimi auto buffer_view_handle = reinterpret_cast<VkBufferView *>(update_entry);
724*b7893ccfSSadaf Ebrahimi allocation_size = std::max(allocation_size, offset + sizeof(VkBufferView));
725*b7893ccfSSadaf Ebrahimi
726*b7893ccfSSadaf Ebrahimi VkBufferView wrapped_entry = layer_data->Unwrap(*buffer_view_handle);
727*b7893ccfSSadaf Ebrahimi template_entries.emplace_back(offset, kVulkanObjectTypeBufferView, CastToUint64(wrapped_entry), 0);
728*b7893ccfSSadaf Ebrahimi } break;
729*b7893ccfSSadaf Ebrahimi case VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT: {
730*b7893ccfSSadaf Ebrahimi size_t numBytes = create_info.pDescriptorUpdateEntries[i].descriptorCount;
731*b7893ccfSSadaf Ebrahimi allocation_size = std::max(allocation_size, offset + numBytes);
732*b7893ccfSSadaf Ebrahimi // nothing to unwrap, just plain data
733*b7893ccfSSadaf Ebrahimi template_entries.emplace_back(offset, kVulkanObjectTypeUnknown, CastToUint64(update_entry),
734*b7893ccfSSadaf Ebrahimi numBytes);
735*b7893ccfSSadaf Ebrahimi // to break out of the loop
736*b7893ccfSSadaf Ebrahimi j = create_info.pDescriptorUpdateEntries[i].descriptorCount;
737*b7893ccfSSadaf Ebrahimi } break;
738*b7893ccfSSadaf Ebrahimi default:
739*b7893ccfSSadaf Ebrahimi assert(0);
740*b7893ccfSSadaf Ebrahimi break;
741*b7893ccfSSadaf Ebrahimi }
742*b7893ccfSSadaf Ebrahimi }
743*b7893ccfSSadaf Ebrahimi }
744*b7893ccfSSadaf Ebrahimi // Allocate required buffer size and populate with source/unwrapped data
745*b7893ccfSSadaf Ebrahimi void *unwrapped_data = malloc(allocation_size);
746*b7893ccfSSadaf Ebrahimi for (auto &this_entry : template_entries) {
747*b7893ccfSSadaf Ebrahimi VulkanObjectType type = std::get<1>(this_entry);
748*b7893ccfSSadaf Ebrahimi void *destination = (char *)unwrapped_data + std::get<0>(this_entry);
749*b7893ccfSSadaf Ebrahimi uint64_t source = std::get<2>(this_entry);
750*b7893ccfSSadaf Ebrahimi size_t size = std::get<3>(this_entry);
751*b7893ccfSSadaf Ebrahimi
752*b7893ccfSSadaf Ebrahimi if (size != 0) {
753*b7893ccfSSadaf Ebrahimi assert(type == kVulkanObjectTypeUnknown);
754*b7893ccfSSadaf Ebrahimi memcpy(destination, CastFromUint64<void *>(source), size);
755*b7893ccfSSadaf Ebrahimi } else {
756*b7893ccfSSadaf Ebrahimi switch (type) {
757*b7893ccfSSadaf Ebrahimi case kVulkanObjectTypeImage:
758*b7893ccfSSadaf Ebrahimi *(reinterpret_cast<VkDescriptorImageInfo *>(destination)) =
759*b7893ccfSSadaf Ebrahimi *(reinterpret_cast<VkDescriptorImageInfo *>(source));
760*b7893ccfSSadaf Ebrahimi delete CastFromUint64<VkDescriptorImageInfo *>(source);
761*b7893ccfSSadaf Ebrahimi break;
762*b7893ccfSSadaf Ebrahimi case kVulkanObjectTypeBuffer:
763*b7893ccfSSadaf Ebrahimi *(reinterpret_cast<VkDescriptorBufferInfo *>(destination)) =
764*b7893ccfSSadaf Ebrahimi *(CastFromUint64<VkDescriptorBufferInfo *>(source));
765*b7893ccfSSadaf Ebrahimi delete CastFromUint64<VkDescriptorBufferInfo *>(source);
766*b7893ccfSSadaf Ebrahimi break;
767*b7893ccfSSadaf Ebrahimi case kVulkanObjectTypeBufferView:
768*b7893ccfSSadaf Ebrahimi *(reinterpret_cast<VkBufferView *>(destination)) = CastFromUint64<VkBufferView>(source);
769*b7893ccfSSadaf Ebrahimi break;
770*b7893ccfSSadaf Ebrahimi default:
771*b7893ccfSSadaf Ebrahimi assert(0);
772*b7893ccfSSadaf Ebrahimi break;
773*b7893ccfSSadaf Ebrahimi }
774*b7893ccfSSadaf Ebrahimi }
775*b7893ccfSSadaf Ebrahimi }
776*b7893ccfSSadaf Ebrahimi return (void *)unwrapped_data;
777*b7893ccfSSadaf Ebrahimi }
778*b7893ccfSSadaf Ebrahimi
DispatchUpdateDescriptorSetWithTemplate(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,const void * pData)779*b7893ccfSSadaf Ebrahimi void DispatchUpdateDescriptorSetWithTemplate(VkDevice device, VkDescriptorSet descriptorSet,
780*b7893ccfSSadaf Ebrahimi VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void *pData) {
781*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
782*b7893ccfSSadaf Ebrahimi if (!wrap_handles)
783*b7893ccfSSadaf Ebrahimi return layer_data->device_dispatch_table.UpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate,
784*b7893ccfSSadaf Ebrahimi pData);
785*b7893ccfSSadaf Ebrahimi uint64_t template_handle = reinterpret_cast<uint64_t &>(descriptorUpdateTemplate);
786*b7893ccfSSadaf Ebrahimi void *unwrapped_buffer = nullptr;
787*b7893ccfSSadaf Ebrahimi {
788*b7893ccfSSadaf Ebrahimi read_dispatch_lock_guard_t lock(dispatch_lock);
789*b7893ccfSSadaf Ebrahimi descriptorSet = layer_data->Unwrap(descriptorSet);
790*b7893ccfSSadaf Ebrahimi descriptorUpdateTemplate = (VkDescriptorUpdateTemplate)layer_data->Unwrap(descriptorUpdateTemplate);
791*b7893ccfSSadaf Ebrahimi unwrapped_buffer = BuildUnwrappedUpdateTemplateBuffer(layer_data, template_handle, pData);
792*b7893ccfSSadaf Ebrahimi }
793*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.UpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, unwrapped_buffer);
794*b7893ccfSSadaf Ebrahimi free(unwrapped_buffer);
795*b7893ccfSSadaf Ebrahimi }
796*b7893ccfSSadaf Ebrahimi
DispatchUpdateDescriptorSetWithTemplateKHR(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,const void * pData)797*b7893ccfSSadaf Ebrahimi void DispatchUpdateDescriptorSetWithTemplateKHR(VkDevice device, VkDescriptorSet descriptorSet,
798*b7893ccfSSadaf Ebrahimi VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void *pData) {
799*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
800*b7893ccfSSadaf Ebrahimi if (!wrap_handles)
801*b7893ccfSSadaf Ebrahimi return layer_data->device_dispatch_table.UpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate,
802*b7893ccfSSadaf Ebrahimi pData);
803*b7893ccfSSadaf Ebrahimi uint64_t template_handle = reinterpret_cast<uint64_t &>(descriptorUpdateTemplate);
804*b7893ccfSSadaf Ebrahimi void *unwrapped_buffer = nullptr;
805*b7893ccfSSadaf Ebrahimi {
806*b7893ccfSSadaf Ebrahimi read_dispatch_lock_guard_t lock(dispatch_lock);
807*b7893ccfSSadaf Ebrahimi descriptorSet = layer_data->Unwrap(descriptorSet);
808*b7893ccfSSadaf Ebrahimi descriptorUpdateTemplate = layer_data->Unwrap(descriptorUpdateTemplate);
809*b7893ccfSSadaf Ebrahimi unwrapped_buffer = BuildUnwrappedUpdateTemplateBuffer(layer_data, template_handle, pData);
810*b7893ccfSSadaf Ebrahimi }
811*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.UpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, unwrapped_buffer);
812*b7893ccfSSadaf Ebrahimi free(unwrapped_buffer);
813*b7893ccfSSadaf Ebrahimi }
814*b7893ccfSSadaf Ebrahimi
DispatchCmdPushDescriptorSetWithTemplateKHR(VkCommandBuffer commandBuffer,VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,VkPipelineLayout layout,uint32_t set,const void * pData)815*b7893ccfSSadaf Ebrahimi void DispatchCmdPushDescriptorSetWithTemplateKHR(VkCommandBuffer commandBuffer,
816*b7893ccfSSadaf Ebrahimi VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, VkPipelineLayout layout,
817*b7893ccfSSadaf Ebrahimi uint32_t set, const void *pData) {
818*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
819*b7893ccfSSadaf Ebrahimi if (!wrap_handles)
820*b7893ccfSSadaf Ebrahimi return layer_data->device_dispatch_table.CmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate,
821*b7893ccfSSadaf Ebrahimi layout, set, pData);
822*b7893ccfSSadaf Ebrahimi uint64_t template_handle = reinterpret_cast<uint64_t &>(descriptorUpdateTemplate);
823*b7893ccfSSadaf Ebrahimi void *unwrapped_buffer = nullptr;
824*b7893ccfSSadaf Ebrahimi {
825*b7893ccfSSadaf Ebrahimi read_dispatch_lock_guard_t lock(dispatch_lock);
826*b7893ccfSSadaf Ebrahimi descriptorUpdateTemplate = layer_data->Unwrap(descriptorUpdateTemplate);
827*b7893ccfSSadaf Ebrahimi layout = layer_data->Unwrap(layout);
828*b7893ccfSSadaf Ebrahimi unwrapped_buffer = BuildUnwrappedUpdateTemplateBuffer(layer_data, template_handle, pData);
829*b7893ccfSSadaf Ebrahimi }
830*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set,
831*b7893ccfSSadaf Ebrahimi unwrapped_buffer);
832*b7893ccfSSadaf Ebrahimi free(unwrapped_buffer);
833*b7893ccfSSadaf Ebrahimi }
834*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayPropertiesKHR * pProperties)835*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPhysicalDeviceDisplayPropertiesKHR(VkPhysicalDevice physicalDevice, uint32_t *pPropertyCount,
836*b7893ccfSSadaf Ebrahimi VkDisplayPropertiesKHR *pProperties) {
837*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
838*b7893ccfSSadaf Ebrahimi VkResult result =
839*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties);
840*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return result;
841*b7893ccfSSadaf Ebrahimi if ((result == VK_SUCCESS || result == VK_INCOMPLETE) && pProperties) {
842*b7893ccfSSadaf Ebrahimi for (uint32_t idx0 = 0; idx0 < *pPropertyCount; ++idx0) {
843*b7893ccfSSadaf Ebrahimi pProperties[idx0].display = layer_data->MaybeWrapDisplay(pProperties[idx0].display, layer_data);
844*b7893ccfSSadaf Ebrahimi }
845*b7893ccfSSadaf Ebrahimi }
846*b7893ccfSSadaf Ebrahimi return result;
847*b7893ccfSSadaf Ebrahimi }
848*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceDisplayProperties2KHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayProperties2KHR * pProperties)849*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPhysicalDeviceDisplayProperties2KHR(VkPhysicalDevice physicalDevice, uint32_t *pPropertyCount,
850*b7893ccfSSadaf Ebrahimi VkDisplayProperties2KHR *pProperties) {
851*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
852*b7893ccfSSadaf Ebrahimi VkResult result =
853*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties);
854*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return result;
855*b7893ccfSSadaf Ebrahimi if ((result == VK_SUCCESS || result == VK_INCOMPLETE) && pProperties) {
856*b7893ccfSSadaf Ebrahimi for (uint32_t idx0 = 0; idx0 < *pPropertyCount; ++idx0) {
857*b7893ccfSSadaf Ebrahimi pProperties[idx0].displayProperties.display =
858*b7893ccfSSadaf Ebrahimi layer_data->MaybeWrapDisplay(pProperties[idx0].displayProperties.display, layer_data);
859*b7893ccfSSadaf Ebrahimi }
860*b7893ccfSSadaf Ebrahimi }
861*b7893ccfSSadaf Ebrahimi return result;
862*b7893ccfSSadaf Ebrahimi }
863*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceDisplayPlanePropertiesKHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayPlanePropertiesKHR * pProperties)864*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPhysicalDeviceDisplayPlanePropertiesKHR(VkPhysicalDevice physicalDevice, uint32_t *pPropertyCount,
865*b7893ccfSSadaf Ebrahimi VkDisplayPlanePropertiesKHR *pProperties) {
866*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
867*b7893ccfSSadaf Ebrahimi VkResult result =
868*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties);
869*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return result;
870*b7893ccfSSadaf Ebrahimi if ((result == VK_SUCCESS || result == VK_INCOMPLETE) && pProperties) {
871*b7893ccfSSadaf Ebrahimi for (uint32_t idx0 = 0; idx0 < *pPropertyCount; ++idx0) {
872*b7893ccfSSadaf Ebrahimi VkDisplayKHR &opt_display = pProperties[idx0].currentDisplay;
873*b7893ccfSSadaf Ebrahimi if (opt_display) opt_display = layer_data->MaybeWrapDisplay(opt_display, layer_data);
874*b7893ccfSSadaf Ebrahimi }
875*b7893ccfSSadaf Ebrahimi }
876*b7893ccfSSadaf Ebrahimi return result;
877*b7893ccfSSadaf Ebrahimi }
878*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceDisplayPlaneProperties2KHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkDisplayPlaneProperties2KHR * pProperties)879*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPhysicalDeviceDisplayPlaneProperties2KHR(VkPhysicalDevice physicalDevice, uint32_t *pPropertyCount,
880*b7893ccfSSadaf Ebrahimi VkDisplayPlaneProperties2KHR *pProperties) {
881*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
882*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice,
883*b7893ccfSSadaf Ebrahimi pPropertyCount, pProperties);
884*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return result;
885*b7893ccfSSadaf Ebrahimi if ((result == VK_SUCCESS || result == VK_INCOMPLETE) && pProperties) {
886*b7893ccfSSadaf Ebrahimi for (uint32_t idx0 = 0; idx0 < *pPropertyCount; ++idx0) {
887*b7893ccfSSadaf Ebrahimi VkDisplayKHR &opt_display = pProperties[idx0].displayPlaneProperties.currentDisplay;
888*b7893ccfSSadaf Ebrahimi if (opt_display) opt_display = layer_data->MaybeWrapDisplay(opt_display, layer_data);
889*b7893ccfSSadaf Ebrahimi }
890*b7893ccfSSadaf Ebrahimi }
891*b7893ccfSSadaf Ebrahimi return result;
892*b7893ccfSSadaf Ebrahimi }
893*b7893ccfSSadaf Ebrahimi
DispatchGetDisplayPlaneSupportedDisplaysKHR(VkPhysicalDevice physicalDevice,uint32_t planeIndex,uint32_t * pDisplayCount,VkDisplayKHR * pDisplays)894*b7893ccfSSadaf Ebrahimi VkResult DispatchGetDisplayPlaneSupportedDisplaysKHR(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t *pDisplayCount,
895*b7893ccfSSadaf Ebrahimi VkDisplayKHR *pDisplays) {
896*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
897*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex,
898*b7893ccfSSadaf Ebrahimi pDisplayCount, pDisplays);
899*b7893ccfSSadaf Ebrahimi if ((result == VK_SUCCESS || result == VK_INCOMPLETE) && pDisplays) {
900*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return result;
901*b7893ccfSSadaf Ebrahimi for (uint32_t i = 0; i < *pDisplayCount; ++i) {
902*b7893ccfSSadaf Ebrahimi if (pDisplays[i]) pDisplays[i] = layer_data->MaybeWrapDisplay(pDisplays[i], layer_data);
903*b7893ccfSSadaf Ebrahimi }
904*b7893ccfSSadaf Ebrahimi }
905*b7893ccfSSadaf Ebrahimi return result;
906*b7893ccfSSadaf Ebrahimi }
907*b7893ccfSSadaf Ebrahimi
DispatchGetDisplayModePropertiesKHR(VkPhysicalDevice physicalDevice,VkDisplayKHR display,uint32_t * pPropertyCount,VkDisplayModePropertiesKHR * pProperties)908*b7893ccfSSadaf Ebrahimi VkResult DispatchGetDisplayModePropertiesKHR(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t *pPropertyCount,
909*b7893ccfSSadaf Ebrahimi VkDisplayModePropertiesKHR *pProperties) {
910*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
911*b7893ccfSSadaf Ebrahimi if (!wrap_handles)
912*b7893ccfSSadaf Ebrahimi return layer_data->instance_dispatch_table.GetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount,
913*b7893ccfSSadaf Ebrahimi pProperties);
914*b7893ccfSSadaf Ebrahimi {
915*b7893ccfSSadaf Ebrahimi display = layer_data->Unwrap(display);
916*b7893ccfSSadaf Ebrahimi }
917*b7893ccfSSadaf Ebrahimi
918*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties);
919*b7893ccfSSadaf Ebrahimi if ((result == VK_SUCCESS || result == VK_INCOMPLETE) && pProperties) {
920*b7893ccfSSadaf Ebrahimi for (uint32_t idx0 = 0; idx0 < *pPropertyCount; ++idx0) {
921*b7893ccfSSadaf Ebrahimi pProperties[idx0].displayMode = layer_data->WrapNew(pProperties[idx0].displayMode);
922*b7893ccfSSadaf Ebrahimi }
923*b7893ccfSSadaf Ebrahimi }
924*b7893ccfSSadaf Ebrahimi return result;
925*b7893ccfSSadaf Ebrahimi }
926*b7893ccfSSadaf Ebrahimi
DispatchGetDisplayModeProperties2KHR(VkPhysicalDevice physicalDevice,VkDisplayKHR display,uint32_t * pPropertyCount,VkDisplayModeProperties2KHR * pProperties)927*b7893ccfSSadaf Ebrahimi VkResult DispatchGetDisplayModeProperties2KHR(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t *pPropertyCount,
928*b7893ccfSSadaf Ebrahimi VkDisplayModeProperties2KHR *pProperties) {
929*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
930*b7893ccfSSadaf Ebrahimi if (!wrap_handles)
931*b7893ccfSSadaf Ebrahimi return layer_data->instance_dispatch_table.GetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount,
932*b7893ccfSSadaf Ebrahimi pProperties);
933*b7893ccfSSadaf Ebrahimi {
934*b7893ccfSSadaf Ebrahimi display = layer_data->Unwrap(display);
935*b7893ccfSSadaf Ebrahimi }
936*b7893ccfSSadaf Ebrahimi
937*b7893ccfSSadaf Ebrahimi VkResult result =
938*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties);
939*b7893ccfSSadaf Ebrahimi if ((result == VK_SUCCESS || result == VK_INCOMPLETE) && pProperties) {
940*b7893ccfSSadaf Ebrahimi for (uint32_t idx0 = 0; idx0 < *pPropertyCount; ++idx0) {
941*b7893ccfSSadaf Ebrahimi pProperties[idx0].displayModeProperties.displayMode = layer_data->WrapNew(pProperties[idx0].displayModeProperties.displayMode);
942*b7893ccfSSadaf Ebrahimi }
943*b7893ccfSSadaf Ebrahimi }
944*b7893ccfSSadaf Ebrahimi return result;
945*b7893ccfSSadaf Ebrahimi }
946*b7893ccfSSadaf Ebrahimi
DispatchDebugMarkerSetObjectTagEXT(VkDevice device,const VkDebugMarkerObjectTagInfoEXT * pTagInfo)947*b7893ccfSSadaf Ebrahimi VkResult DispatchDebugMarkerSetObjectTagEXT(VkDevice device, const VkDebugMarkerObjectTagInfoEXT *pTagInfo) {
948*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
949*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DebugMarkerSetObjectTagEXT(device, pTagInfo);
950*b7893ccfSSadaf Ebrahimi safe_VkDebugMarkerObjectTagInfoEXT local_tag_info(pTagInfo);
951*b7893ccfSSadaf Ebrahimi {
952*b7893ccfSSadaf Ebrahimi auto it = unique_id_mapping.find(reinterpret_cast<uint64_t &>(local_tag_info.object));
953*b7893ccfSSadaf Ebrahimi if (it != unique_id_mapping.end()) {
954*b7893ccfSSadaf Ebrahimi local_tag_info.object = it->second;
955*b7893ccfSSadaf Ebrahimi }
956*b7893ccfSSadaf Ebrahimi }
957*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.DebugMarkerSetObjectTagEXT(device,
958*b7893ccfSSadaf Ebrahimi reinterpret_cast<VkDebugMarkerObjectTagInfoEXT *>(&local_tag_info));
959*b7893ccfSSadaf Ebrahimi return result;
960*b7893ccfSSadaf Ebrahimi }
961*b7893ccfSSadaf Ebrahimi
DispatchDebugMarkerSetObjectNameEXT(VkDevice device,const VkDebugMarkerObjectNameInfoEXT * pNameInfo)962*b7893ccfSSadaf Ebrahimi VkResult DispatchDebugMarkerSetObjectNameEXT(VkDevice device, const VkDebugMarkerObjectNameInfoEXT *pNameInfo) {
963*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
964*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DebugMarkerSetObjectNameEXT(device, pNameInfo);
965*b7893ccfSSadaf Ebrahimi safe_VkDebugMarkerObjectNameInfoEXT local_name_info(pNameInfo);
966*b7893ccfSSadaf Ebrahimi {
967*b7893ccfSSadaf Ebrahimi auto it = unique_id_mapping.find(reinterpret_cast<uint64_t &>(local_name_info.object));
968*b7893ccfSSadaf Ebrahimi if (it != unique_id_mapping.end()) {
969*b7893ccfSSadaf Ebrahimi local_name_info.object = it->second;
970*b7893ccfSSadaf Ebrahimi }
971*b7893ccfSSadaf Ebrahimi }
972*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.DebugMarkerSetObjectNameEXT(
973*b7893ccfSSadaf Ebrahimi device, reinterpret_cast<VkDebugMarkerObjectNameInfoEXT *>(&local_name_info));
974*b7893ccfSSadaf Ebrahimi return result;
975*b7893ccfSSadaf Ebrahimi }
976*b7893ccfSSadaf Ebrahimi
977*b7893ccfSSadaf Ebrahimi // VK_EXT_debug_utils
DispatchSetDebugUtilsObjectTagEXT(VkDevice device,const VkDebugUtilsObjectTagInfoEXT * pTagInfo)978*b7893ccfSSadaf Ebrahimi VkResult DispatchSetDebugUtilsObjectTagEXT(VkDevice device, const VkDebugUtilsObjectTagInfoEXT *pTagInfo) {
979*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
980*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.SetDebugUtilsObjectTagEXT(device, pTagInfo);
981*b7893ccfSSadaf Ebrahimi safe_VkDebugUtilsObjectTagInfoEXT local_tag_info(pTagInfo);
982*b7893ccfSSadaf Ebrahimi {
983*b7893ccfSSadaf Ebrahimi auto it = unique_id_mapping.find(reinterpret_cast<uint64_t &>(local_tag_info.objectHandle));
984*b7893ccfSSadaf Ebrahimi if (it != unique_id_mapping.end()) {
985*b7893ccfSSadaf Ebrahimi local_tag_info.objectHandle = it->second;
986*b7893ccfSSadaf Ebrahimi }
987*b7893ccfSSadaf Ebrahimi }
988*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.SetDebugUtilsObjectTagEXT(
989*b7893ccfSSadaf Ebrahimi device, reinterpret_cast<const VkDebugUtilsObjectTagInfoEXT *>(&local_tag_info));
990*b7893ccfSSadaf Ebrahimi return result;
991*b7893ccfSSadaf Ebrahimi }
992*b7893ccfSSadaf Ebrahimi
DispatchSetDebugUtilsObjectNameEXT(VkDevice device,const VkDebugUtilsObjectNameInfoEXT * pNameInfo)993*b7893ccfSSadaf Ebrahimi VkResult DispatchSetDebugUtilsObjectNameEXT(VkDevice device, const VkDebugUtilsObjectNameInfoEXT *pNameInfo) {
994*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
995*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.SetDebugUtilsObjectNameEXT(device, pNameInfo);
996*b7893ccfSSadaf Ebrahimi safe_VkDebugUtilsObjectNameInfoEXT local_name_info(pNameInfo);
997*b7893ccfSSadaf Ebrahimi {
998*b7893ccfSSadaf Ebrahimi auto it = unique_id_mapping.find(reinterpret_cast<uint64_t &>(local_name_info.objectHandle));
999*b7893ccfSSadaf Ebrahimi if (it != unique_id_mapping.end()) {
1000*b7893ccfSSadaf Ebrahimi local_name_info.objectHandle = it->second;
1001*b7893ccfSSadaf Ebrahimi }
1002*b7893ccfSSadaf Ebrahimi }
1003*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.SetDebugUtilsObjectNameEXT(
1004*b7893ccfSSadaf Ebrahimi device, reinterpret_cast<const VkDebugUtilsObjectNameInfoEXT *>(&local_name_info));
1005*b7893ccfSSadaf Ebrahimi return result;
1006*b7893ccfSSadaf Ebrahimi }
1007*b7893ccfSSadaf Ebrahimi
1008*b7893ccfSSadaf Ebrahimi
1009*b7893ccfSSadaf Ebrahimi
1010*b7893ccfSSadaf Ebrahimi
1011*b7893ccfSSadaf Ebrahimi // Skip vkCreateInstance dispatch, manually generated
1012*b7893ccfSSadaf Ebrahimi
1013*b7893ccfSSadaf Ebrahimi // Skip vkDestroyInstance dispatch, manually generated
1014*b7893ccfSSadaf Ebrahimi
DispatchEnumeratePhysicalDevices(VkInstance instance,uint32_t * pPhysicalDeviceCount,VkPhysicalDevice * pPhysicalDevices)1015*b7893ccfSSadaf Ebrahimi VkResult DispatchEnumeratePhysicalDevices(
1016*b7893ccfSSadaf Ebrahimi VkInstance instance,
1017*b7893ccfSSadaf Ebrahimi uint32_t* pPhysicalDeviceCount,
1018*b7893ccfSSadaf Ebrahimi VkPhysicalDevice* pPhysicalDevices)
1019*b7893ccfSSadaf Ebrahimi {
1020*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
1021*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.EnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices);
1022*b7893ccfSSadaf Ebrahimi
1023*b7893ccfSSadaf Ebrahimi return result;
1024*b7893ccfSSadaf Ebrahimi }
1025*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures * pFeatures)1026*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceFeatures(
1027*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
1028*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceFeatures* pFeatures)
1029*b7893ccfSSadaf Ebrahimi {
1030*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
1031*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceFeatures(physicalDevice, pFeatures);
1032*b7893ccfSSadaf Ebrahimi
1033*b7893ccfSSadaf Ebrahimi }
1034*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties * pFormatProperties)1035*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceFormatProperties(
1036*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
1037*b7893ccfSSadaf Ebrahimi VkFormat format,
1038*b7893ccfSSadaf Ebrahimi VkFormatProperties* pFormatProperties)
1039*b7893ccfSSadaf Ebrahimi {
1040*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
1041*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties);
1042*b7893ccfSSadaf Ebrahimi
1043*b7893ccfSSadaf Ebrahimi }
1044*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkImageTiling tiling,VkImageUsageFlags usage,VkImageCreateFlags flags,VkImageFormatProperties * pImageFormatProperties)1045*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPhysicalDeviceImageFormatProperties(
1046*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
1047*b7893ccfSSadaf Ebrahimi VkFormat format,
1048*b7893ccfSSadaf Ebrahimi VkImageType type,
1049*b7893ccfSSadaf Ebrahimi VkImageTiling tiling,
1050*b7893ccfSSadaf Ebrahimi VkImageUsageFlags usage,
1051*b7893ccfSSadaf Ebrahimi VkImageCreateFlags flags,
1052*b7893ccfSSadaf Ebrahimi VkImageFormatProperties* pImageFormatProperties)
1053*b7893ccfSSadaf Ebrahimi {
1054*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
1055*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties);
1056*b7893ccfSSadaf Ebrahimi
1057*b7893ccfSSadaf Ebrahimi return result;
1058*b7893ccfSSadaf Ebrahimi }
1059*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties * pProperties)1060*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceProperties(
1061*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
1062*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceProperties* pProperties)
1063*b7893ccfSSadaf Ebrahimi {
1064*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
1065*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceProperties(physicalDevice, pProperties);
1066*b7893ccfSSadaf Ebrahimi
1067*b7893ccfSSadaf Ebrahimi }
1068*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties * pQueueFamilyProperties)1069*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceQueueFamilyProperties(
1070*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
1071*b7893ccfSSadaf Ebrahimi uint32_t* pQueueFamilyPropertyCount,
1072*b7893ccfSSadaf Ebrahimi VkQueueFamilyProperties* pQueueFamilyProperties)
1073*b7893ccfSSadaf Ebrahimi {
1074*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
1075*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
1076*b7893ccfSSadaf Ebrahimi
1077*b7893ccfSSadaf Ebrahimi }
1078*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties * pMemoryProperties)1079*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceMemoryProperties(
1080*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
1081*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceMemoryProperties* pMemoryProperties)
1082*b7893ccfSSadaf Ebrahimi {
1083*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
1084*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties);
1085*b7893ccfSSadaf Ebrahimi
1086*b7893ccfSSadaf Ebrahimi }
1087*b7893ccfSSadaf Ebrahimi
DispatchGetInstanceProcAddr(VkInstance instance,const char * pName)1088*b7893ccfSSadaf Ebrahimi PFN_vkVoidFunction DispatchGetInstanceProcAddr(
1089*b7893ccfSSadaf Ebrahimi VkInstance instance,
1090*b7893ccfSSadaf Ebrahimi const char* pName)
1091*b7893ccfSSadaf Ebrahimi {
1092*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
1093*b7893ccfSSadaf Ebrahimi PFN_vkVoidFunction result = layer_data->instance_dispatch_table.GetInstanceProcAddr(instance, pName);
1094*b7893ccfSSadaf Ebrahimi
1095*b7893ccfSSadaf Ebrahimi return result;
1096*b7893ccfSSadaf Ebrahimi }
1097*b7893ccfSSadaf Ebrahimi
DispatchGetDeviceProcAddr(VkDevice device,const char * pName)1098*b7893ccfSSadaf Ebrahimi PFN_vkVoidFunction DispatchGetDeviceProcAddr(
1099*b7893ccfSSadaf Ebrahimi VkDevice device,
1100*b7893ccfSSadaf Ebrahimi const char* pName)
1101*b7893ccfSSadaf Ebrahimi {
1102*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1103*b7893ccfSSadaf Ebrahimi PFN_vkVoidFunction result = layer_data->device_dispatch_table.GetDeviceProcAddr(device, pName);
1104*b7893ccfSSadaf Ebrahimi
1105*b7893ccfSSadaf Ebrahimi return result;
1106*b7893ccfSSadaf Ebrahimi }
1107*b7893ccfSSadaf Ebrahimi
1108*b7893ccfSSadaf Ebrahimi // Skip vkCreateDevice dispatch, manually generated
1109*b7893ccfSSadaf Ebrahimi
1110*b7893ccfSSadaf Ebrahimi // Skip vkDestroyDevice dispatch, manually generated
1111*b7893ccfSSadaf Ebrahimi
1112*b7893ccfSSadaf Ebrahimi // Skip vkEnumerateInstanceExtensionProperties dispatch, manually generated
1113*b7893ccfSSadaf Ebrahimi
1114*b7893ccfSSadaf Ebrahimi // Skip vkEnumerateDeviceExtensionProperties dispatch, manually generated
1115*b7893ccfSSadaf Ebrahimi
1116*b7893ccfSSadaf Ebrahimi // Skip vkEnumerateInstanceLayerProperties dispatch, manually generated
1117*b7893ccfSSadaf Ebrahimi
1118*b7893ccfSSadaf Ebrahimi // Skip vkEnumerateDeviceLayerProperties dispatch, manually generated
1119*b7893ccfSSadaf Ebrahimi
DispatchGetDeviceQueue(VkDevice device,uint32_t queueFamilyIndex,uint32_t queueIndex,VkQueue * pQueue)1120*b7893ccfSSadaf Ebrahimi void DispatchGetDeviceQueue(
1121*b7893ccfSSadaf Ebrahimi VkDevice device,
1122*b7893ccfSSadaf Ebrahimi uint32_t queueFamilyIndex,
1123*b7893ccfSSadaf Ebrahimi uint32_t queueIndex,
1124*b7893ccfSSadaf Ebrahimi VkQueue* pQueue)
1125*b7893ccfSSadaf Ebrahimi {
1126*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1127*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.GetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue);
1128*b7893ccfSSadaf Ebrahimi
1129*b7893ccfSSadaf Ebrahimi }
1130*b7893ccfSSadaf Ebrahimi
DispatchQueueSubmit(VkQueue queue,uint32_t submitCount,const VkSubmitInfo * pSubmits,VkFence fence)1131*b7893ccfSSadaf Ebrahimi VkResult DispatchQueueSubmit(
1132*b7893ccfSSadaf Ebrahimi VkQueue queue,
1133*b7893ccfSSadaf Ebrahimi uint32_t submitCount,
1134*b7893ccfSSadaf Ebrahimi const VkSubmitInfo* pSubmits,
1135*b7893ccfSSadaf Ebrahimi VkFence fence)
1136*b7893ccfSSadaf Ebrahimi {
1137*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map);
1138*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.QueueSubmit(queue, submitCount, pSubmits, fence);
1139*b7893ccfSSadaf Ebrahimi safe_VkSubmitInfo *local_pSubmits = NULL;
1140*b7893ccfSSadaf Ebrahimi {
1141*b7893ccfSSadaf Ebrahimi if (pSubmits) {
1142*b7893ccfSSadaf Ebrahimi local_pSubmits = new safe_VkSubmitInfo[submitCount];
1143*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < submitCount; ++index0) {
1144*b7893ccfSSadaf Ebrahimi local_pSubmits[index0].initialize(&pSubmits[index0]);
1145*b7893ccfSSadaf Ebrahimi WrapPnextChainHandles(layer_data, local_pSubmits[index0].pNext);
1146*b7893ccfSSadaf Ebrahimi if (local_pSubmits[index0].pWaitSemaphores) {
1147*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pSubmits[index0].waitSemaphoreCount; ++index1) {
1148*b7893ccfSSadaf Ebrahimi local_pSubmits[index0].pWaitSemaphores[index1] = layer_data->Unwrap(local_pSubmits[index0].pWaitSemaphores[index1]);
1149*b7893ccfSSadaf Ebrahimi }
1150*b7893ccfSSadaf Ebrahimi }
1151*b7893ccfSSadaf Ebrahimi if (local_pSubmits[index0].pSignalSemaphores) {
1152*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pSubmits[index0].signalSemaphoreCount; ++index1) {
1153*b7893ccfSSadaf Ebrahimi local_pSubmits[index0].pSignalSemaphores[index1] = layer_data->Unwrap(local_pSubmits[index0].pSignalSemaphores[index1]);
1154*b7893ccfSSadaf Ebrahimi }
1155*b7893ccfSSadaf Ebrahimi }
1156*b7893ccfSSadaf Ebrahimi }
1157*b7893ccfSSadaf Ebrahimi }
1158*b7893ccfSSadaf Ebrahimi fence = layer_data->Unwrap(fence);
1159*b7893ccfSSadaf Ebrahimi }
1160*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.QueueSubmit(queue, submitCount, (const VkSubmitInfo*)local_pSubmits, fence);
1161*b7893ccfSSadaf Ebrahimi if (local_pSubmits) {
1162*b7893ccfSSadaf Ebrahimi delete[] local_pSubmits;
1163*b7893ccfSSadaf Ebrahimi }
1164*b7893ccfSSadaf Ebrahimi return result;
1165*b7893ccfSSadaf Ebrahimi }
1166*b7893ccfSSadaf Ebrahimi
DispatchQueueWaitIdle(VkQueue queue)1167*b7893ccfSSadaf Ebrahimi VkResult DispatchQueueWaitIdle(
1168*b7893ccfSSadaf Ebrahimi VkQueue queue)
1169*b7893ccfSSadaf Ebrahimi {
1170*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map);
1171*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.QueueWaitIdle(queue);
1172*b7893ccfSSadaf Ebrahimi
1173*b7893ccfSSadaf Ebrahimi return result;
1174*b7893ccfSSadaf Ebrahimi }
1175*b7893ccfSSadaf Ebrahimi
DispatchDeviceWaitIdle(VkDevice device)1176*b7893ccfSSadaf Ebrahimi VkResult DispatchDeviceWaitIdle(
1177*b7893ccfSSadaf Ebrahimi VkDevice device)
1178*b7893ccfSSadaf Ebrahimi {
1179*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1180*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.DeviceWaitIdle(device);
1181*b7893ccfSSadaf Ebrahimi
1182*b7893ccfSSadaf Ebrahimi return result;
1183*b7893ccfSSadaf Ebrahimi }
1184*b7893ccfSSadaf Ebrahimi
DispatchAllocateMemory(VkDevice device,const VkMemoryAllocateInfo * pAllocateInfo,const VkAllocationCallbacks * pAllocator,VkDeviceMemory * pMemory)1185*b7893ccfSSadaf Ebrahimi VkResult DispatchAllocateMemory(
1186*b7893ccfSSadaf Ebrahimi VkDevice device,
1187*b7893ccfSSadaf Ebrahimi const VkMemoryAllocateInfo* pAllocateInfo,
1188*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
1189*b7893ccfSSadaf Ebrahimi VkDeviceMemory* pMemory)
1190*b7893ccfSSadaf Ebrahimi {
1191*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1192*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.AllocateMemory(device, pAllocateInfo, pAllocator, pMemory);
1193*b7893ccfSSadaf Ebrahimi safe_VkMemoryAllocateInfo *local_pAllocateInfo = NULL;
1194*b7893ccfSSadaf Ebrahimi {
1195*b7893ccfSSadaf Ebrahimi if (pAllocateInfo) {
1196*b7893ccfSSadaf Ebrahimi local_pAllocateInfo = new safe_VkMemoryAllocateInfo(pAllocateInfo);
1197*b7893ccfSSadaf Ebrahimi WrapPnextChainHandles(layer_data, local_pAllocateInfo->pNext);
1198*b7893ccfSSadaf Ebrahimi }
1199*b7893ccfSSadaf Ebrahimi }
1200*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.AllocateMemory(device, (const VkMemoryAllocateInfo*)local_pAllocateInfo, pAllocator, pMemory);
1201*b7893ccfSSadaf Ebrahimi if (local_pAllocateInfo) {
1202*b7893ccfSSadaf Ebrahimi delete local_pAllocateInfo;
1203*b7893ccfSSadaf Ebrahimi }
1204*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
1205*b7893ccfSSadaf Ebrahimi *pMemory = layer_data->WrapNew(*pMemory);
1206*b7893ccfSSadaf Ebrahimi }
1207*b7893ccfSSadaf Ebrahimi return result;
1208*b7893ccfSSadaf Ebrahimi }
1209*b7893ccfSSadaf Ebrahimi
DispatchFreeMemory(VkDevice device,VkDeviceMemory memory,const VkAllocationCallbacks * pAllocator)1210*b7893ccfSSadaf Ebrahimi void DispatchFreeMemory(
1211*b7893ccfSSadaf Ebrahimi VkDevice device,
1212*b7893ccfSSadaf Ebrahimi VkDeviceMemory memory,
1213*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
1214*b7893ccfSSadaf Ebrahimi {
1215*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1216*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.FreeMemory(device, memory, pAllocator);
1217*b7893ccfSSadaf Ebrahimi uint64_t memory_id = reinterpret_cast<uint64_t &>(memory);
1218*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(memory_id);
1219*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
1220*b7893ccfSSadaf Ebrahimi memory = (VkDeviceMemory)iter->second;
1221*b7893ccfSSadaf Ebrahimi } else {
1222*b7893ccfSSadaf Ebrahimi memory = (VkDeviceMemory)0;
1223*b7893ccfSSadaf Ebrahimi }
1224*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.FreeMemory(device, memory, pAllocator);
1225*b7893ccfSSadaf Ebrahimi
1226*b7893ccfSSadaf Ebrahimi }
1227*b7893ccfSSadaf Ebrahimi
DispatchMapMemory(VkDevice device,VkDeviceMemory memory,VkDeviceSize offset,VkDeviceSize size,VkMemoryMapFlags flags,void ** ppData)1228*b7893ccfSSadaf Ebrahimi VkResult DispatchMapMemory(
1229*b7893ccfSSadaf Ebrahimi VkDevice device,
1230*b7893ccfSSadaf Ebrahimi VkDeviceMemory memory,
1231*b7893ccfSSadaf Ebrahimi VkDeviceSize offset,
1232*b7893ccfSSadaf Ebrahimi VkDeviceSize size,
1233*b7893ccfSSadaf Ebrahimi VkMemoryMapFlags flags,
1234*b7893ccfSSadaf Ebrahimi void** ppData)
1235*b7893ccfSSadaf Ebrahimi {
1236*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1237*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.MapMemory(device, memory, offset, size, flags, ppData);
1238*b7893ccfSSadaf Ebrahimi {
1239*b7893ccfSSadaf Ebrahimi memory = layer_data->Unwrap(memory);
1240*b7893ccfSSadaf Ebrahimi }
1241*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.MapMemory(device, memory, offset, size, flags, ppData);
1242*b7893ccfSSadaf Ebrahimi
1243*b7893ccfSSadaf Ebrahimi return result;
1244*b7893ccfSSadaf Ebrahimi }
1245*b7893ccfSSadaf Ebrahimi
DispatchUnmapMemory(VkDevice device,VkDeviceMemory memory)1246*b7893ccfSSadaf Ebrahimi void DispatchUnmapMemory(
1247*b7893ccfSSadaf Ebrahimi VkDevice device,
1248*b7893ccfSSadaf Ebrahimi VkDeviceMemory memory)
1249*b7893ccfSSadaf Ebrahimi {
1250*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1251*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.UnmapMemory(device, memory);
1252*b7893ccfSSadaf Ebrahimi {
1253*b7893ccfSSadaf Ebrahimi memory = layer_data->Unwrap(memory);
1254*b7893ccfSSadaf Ebrahimi }
1255*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.UnmapMemory(device, memory);
1256*b7893ccfSSadaf Ebrahimi
1257*b7893ccfSSadaf Ebrahimi }
1258*b7893ccfSSadaf Ebrahimi
DispatchFlushMappedMemoryRanges(VkDevice device,uint32_t memoryRangeCount,const VkMappedMemoryRange * pMemoryRanges)1259*b7893ccfSSadaf Ebrahimi VkResult DispatchFlushMappedMemoryRanges(
1260*b7893ccfSSadaf Ebrahimi VkDevice device,
1261*b7893ccfSSadaf Ebrahimi uint32_t memoryRangeCount,
1262*b7893ccfSSadaf Ebrahimi const VkMappedMemoryRange* pMemoryRanges)
1263*b7893ccfSSadaf Ebrahimi {
1264*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1265*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.FlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);
1266*b7893ccfSSadaf Ebrahimi safe_VkMappedMemoryRange *local_pMemoryRanges = NULL;
1267*b7893ccfSSadaf Ebrahimi {
1268*b7893ccfSSadaf Ebrahimi if (pMemoryRanges) {
1269*b7893ccfSSadaf Ebrahimi local_pMemoryRanges = new safe_VkMappedMemoryRange[memoryRangeCount];
1270*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < memoryRangeCount; ++index0) {
1271*b7893ccfSSadaf Ebrahimi local_pMemoryRanges[index0].initialize(&pMemoryRanges[index0]);
1272*b7893ccfSSadaf Ebrahimi if (pMemoryRanges[index0].memory) {
1273*b7893ccfSSadaf Ebrahimi local_pMemoryRanges[index0].memory = layer_data->Unwrap(pMemoryRanges[index0].memory);
1274*b7893ccfSSadaf Ebrahimi }
1275*b7893ccfSSadaf Ebrahimi }
1276*b7893ccfSSadaf Ebrahimi }
1277*b7893ccfSSadaf Ebrahimi }
1278*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.FlushMappedMemoryRanges(device, memoryRangeCount, (const VkMappedMemoryRange*)local_pMemoryRanges);
1279*b7893ccfSSadaf Ebrahimi if (local_pMemoryRanges) {
1280*b7893ccfSSadaf Ebrahimi delete[] local_pMemoryRanges;
1281*b7893ccfSSadaf Ebrahimi }
1282*b7893ccfSSadaf Ebrahimi return result;
1283*b7893ccfSSadaf Ebrahimi }
1284*b7893ccfSSadaf Ebrahimi
DispatchInvalidateMappedMemoryRanges(VkDevice device,uint32_t memoryRangeCount,const VkMappedMemoryRange * pMemoryRanges)1285*b7893ccfSSadaf Ebrahimi VkResult DispatchInvalidateMappedMemoryRanges(
1286*b7893ccfSSadaf Ebrahimi VkDevice device,
1287*b7893ccfSSadaf Ebrahimi uint32_t memoryRangeCount,
1288*b7893ccfSSadaf Ebrahimi const VkMappedMemoryRange* pMemoryRanges)
1289*b7893ccfSSadaf Ebrahimi {
1290*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1291*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.InvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges);
1292*b7893ccfSSadaf Ebrahimi safe_VkMappedMemoryRange *local_pMemoryRanges = NULL;
1293*b7893ccfSSadaf Ebrahimi {
1294*b7893ccfSSadaf Ebrahimi if (pMemoryRanges) {
1295*b7893ccfSSadaf Ebrahimi local_pMemoryRanges = new safe_VkMappedMemoryRange[memoryRangeCount];
1296*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < memoryRangeCount; ++index0) {
1297*b7893ccfSSadaf Ebrahimi local_pMemoryRanges[index0].initialize(&pMemoryRanges[index0]);
1298*b7893ccfSSadaf Ebrahimi if (pMemoryRanges[index0].memory) {
1299*b7893ccfSSadaf Ebrahimi local_pMemoryRanges[index0].memory = layer_data->Unwrap(pMemoryRanges[index0].memory);
1300*b7893ccfSSadaf Ebrahimi }
1301*b7893ccfSSadaf Ebrahimi }
1302*b7893ccfSSadaf Ebrahimi }
1303*b7893ccfSSadaf Ebrahimi }
1304*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.InvalidateMappedMemoryRanges(device, memoryRangeCount, (const VkMappedMemoryRange*)local_pMemoryRanges);
1305*b7893ccfSSadaf Ebrahimi if (local_pMemoryRanges) {
1306*b7893ccfSSadaf Ebrahimi delete[] local_pMemoryRanges;
1307*b7893ccfSSadaf Ebrahimi }
1308*b7893ccfSSadaf Ebrahimi return result;
1309*b7893ccfSSadaf Ebrahimi }
1310*b7893ccfSSadaf Ebrahimi
DispatchGetDeviceMemoryCommitment(VkDevice device,VkDeviceMemory memory,VkDeviceSize * pCommittedMemoryInBytes)1311*b7893ccfSSadaf Ebrahimi void DispatchGetDeviceMemoryCommitment(
1312*b7893ccfSSadaf Ebrahimi VkDevice device,
1313*b7893ccfSSadaf Ebrahimi VkDeviceMemory memory,
1314*b7893ccfSSadaf Ebrahimi VkDeviceSize* pCommittedMemoryInBytes)
1315*b7893ccfSSadaf Ebrahimi {
1316*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1317*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes);
1318*b7893ccfSSadaf Ebrahimi {
1319*b7893ccfSSadaf Ebrahimi memory = layer_data->Unwrap(memory);
1320*b7893ccfSSadaf Ebrahimi }
1321*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.GetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes);
1322*b7893ccfSSadaf Ebrahimi
1323*b7893ccfSSadaf Ebrahimi }
1324*b7893ccfSSadaf Ebrahimi
DispatchBindBufferMemory(VkDevice device,VkBuffer buffer,VkDeviceMemory memory,VkDeviceSize memoryOffset)1325*b7893ccfSSadaf Ebrahimi VkResult DispatchBindBufferMemory(
1326*b7893ccfSSadaf Ebrahimi VkDevice device,
1327*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
1328*b7893ccfSSadaf Ebrahimi VkDeviceMemory memory,
1329*b7893ccfSSadaf Ebrahimi VkDeviceSize memoryOffset)
1330*b7893ccfSSadaf Ebrahimi {
1331*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1332*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.BindBufferMemory(device, buffer, memory, memoryOffset);
1333*b7893ccfSSadaf Ebrahimi {
1334*b7893ccfSSadaf Ebrahimi buffer = layer_data->Unwrap(buffer);
1335*b7893ccfSSadaf Ebrahimi memory = layer_data->Unwrap(memory);
1336*b7893ccfSSadaf Ebrahimi }
1337*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.BindBufferMemory(device, buffer, memory, memoryOffset);
1338*b7893ccfSSadaf Ebrahimi
1339*b7893ccfSSadaf Ebrahimi return result;
1340*b7893ccfSSadaf Ebrahimi }
1341*b7893ccfSSadaf Ebrahimi
DispatchBindImageMemory(VkDevice device,VkImage image,VkDeviceMemory memory,VkDeviceSize memoryOffset)1342*b7893ccfSSadaf Ebrahimi VkResult DispatchBindImageMemory(
1343*b7893ccfSSadaf Ebrahimi VkDevice device,
1344*b7893ccfSSadaf Ebrahimi VkImage image,
1345*b7893ccfSSadaf Ebrahimi VkDeviceMemory memory,
1346*b7893ccfSSadaf Ebrahimi VkDeviceSize memoryOffset)
1347*b7893ccfSSadaf Ebrahimi {
1348*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1349*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.BindImageMemory(device, image, memory, memoryOffset);
1350*b7893ccfSSadaf Ebrahimi {
1351*b7893ccfSSadaf Ebrahimi image = layer_data->Unwrap(image);
1352*b7893ccfSSadaf Ebrahimi memory = layer_data->Unwrap(memory);
1353*b7893ccfSSadaf Ebrahimi }
1354*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.BindImageMemory(device, image, memory, memoryOffset);
1355*b7893ccfSSadaf Ebrahimi
1356*b7893ccfSSadaf Ebrahimi return result;
1357*b7893ccfSSadaf Ebrahimi }
1358*b7893ccfSSadaf Ebrahimi
DispatchGetBufferMemoryRequirements(VkDevice device,VkBuffer buffer,VkMemoryRequirements * pMemoryRequirements)1359*b7893ccfSSadaf Ebrahimi void DispatchGetBufferMemoryRequirements(
1360*b7893ccfSSadaf Ebrahimi VkDevice device,
1361*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
1362*b7893ccfSSadaf Ebrahimi VkMemoryRequirements* pMemoryRequirements)
1363*b7893ccfSSadaf Ebrahimi {
1364*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1365*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetBufferMemoryRequirements(device, buffer, pMemoryRequirements);
1366*b7893ccfSSadaf Ebrahimi {
1367*b7893ccfSSadaf Ebrahimi buffer = layer_data->Unwrap(buffer);
1368*b7893ccfSSadaf Ebrahimi }
1369*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.GetBufferMemoryRequirements(device, buffer, pMemoryRequirements);
1370*b7893ccfSSadaf Ebrahimi
1371*b7893ccfSSadaf Ebrahimi }
1372*b7893ccfSSadaf Ebrahimi
DispatchGetImageMemoryRequirements(VkDevice device,VkImage image,VkMemoryRequirements * pMemoryRequirements)1373*b7893ccfSSadaf Ebrahimi void DispatchGetImageMemoryRequirements(
1374*b7893ccfSSadaf Ebrahimi VkDevice device,
1375*b7893ccfSSadaf Ebrahimi VkImage image,
1376*b7893ccfSSadaf Ebrahimi VkMemoryRequirements* pMemoryRequirements)
1377*b7893ccfSSadaf Ebrahimi {
1378*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1379*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetImageMemoryRequirements(device, image, pMemoryRequirements);
1380*b7893ccfSSadaf Ebrahimi {
1381*b7893ccfSSadaf Ebrahimi image = layer_data->Unwrap(image);
1382*b7893ccfSSadaf Ebrahimi }
1383*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.GetImageMemoryRequirements(device, image, pMemoryRequirements);
1384*b7893ccfSSadaf Ebrahimi
1385*b7893ccfSSadaf Ebrahimi }
1386*b7893ccfSSadaf Ebrahimi
DispatchGetImageSparseMemoryRequirements(VkDevice device,VkImage image,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements * pSparseMemoryRequirements)1387*b7893ccfSSadaf Ebrahimi void DispatchGetImageSparseMemoryRequirements(
1388*b7893ccfSSadaf Ebrahimi VkDevice device,
1389*b7893ccfSSadaf Ebrahimi VkImage image,
1390*b7893ccfSSadaf Ebrahimi uint32_t* pSparseMemoryRequirementCount,
1391*b7893ccfSSadaf Ebrahimi VkSparseImageMemoryRequirements* pSparseMemoryRequirements)
1392*b7893ccfSSadaf Ebrahimi {
1393*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1394*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
1395*b7893ccfSSadaf Ebrahimi {
1396*b7893ccfSSadaf Ebrahimi image = layer_data->Unwrap(image);
1397*b7893ccfSSadaf Ebrahimi }
1398*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.GetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
1399*b7893ccfSSadaf Ebrahimi
1400*b7893ccfSSadaf Ebrahimi }
1401*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkSampleCountFlagBits samples,VkImageUsageFlags usage,VkImageTiling tiling,uint32_t * pPropertyCount,VkSparseImageFormatProperties * pProperties)1402*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceSparseImageFormatProperties(
1403*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
1404*b7893ccfSSadaf Ebrahimi VkFormat format,
1405*b7893ccfSSadaf Ebrahimi VkImageType type,
1406*b7893ccfSSadaf Ebrahimi VkSampleCountFlagBits samples,
1407*b7893ccfSSadaf Ebrahimi VkImageUsageFlags usage,
1408*b7893ccfSSadaf Ebrahimi VkImageTiling tiling,
1409*b7893ccfSSadaf Ebrahimi uint32_t* pPropertyCount,
1410*b7893ccfSSadaf Ebrahimi VkSparseImageFormatProperties* pProperties)
1411*b7893ccfSSadaf Ebrahimi {
1412*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
1413*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties);
1414*b7893ccfSSadaf Ebrahimi
1415*b7893ccfSSadaf Ebrahimi }
1416*b7893ccfSSadaf Ebrahimi
DispatchQueueBindSparse(VkQueue queue,uint32_t bindInfoCount,const VkBindSparseInfo * pBindInfo,VkFence fence)1417*b7893ccfSSadaf Ebrahimi VkResult DispatchQueueBindSparse(
1418*b7893ccfSSadaf Ebrahimi VkQueue queue,
1419*b7893ccfSSadaf Ebrahimi uint32_t bindInfoCount,
1420*b7893ccfSSadaf Ebrahimi const VkBindSparseInfo* pBindInfo,
1421*b7893ccfSSadaf Ebrahimi VkFence fence)
1422*b7893ccfSSadaf Ebrahimi {
1423*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map);
1424*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.QueueBindSparse(queue, bindInfoCount, pBindInfo, fence);
1425*b7893ccfSSadaf Ebrahimi safe_VkBindSparseInfo *local_pBindInfo = NULL;
1426*b7893ccfSSadaf Ebrahimi {
1427*b7893ccfSSadaf Ebrahimi if (pBindInfo) {
1428*b7893ccfSSadaf Ebrahimi local_pBindInfo = new safe_VkBindSparseInfo[bindInfoCount];
1429*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < bindInfoCount; ++index0) {
1430*b7893ccfSSadaf Ebrahimi local_pBindInfo[index0].initialize(&pBindInfo[index0]);
1431*b7893ccfSSadaf Ebrahimi if (local_pBindInfo[index0].pWaitSemaphores) {
1432*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pBindInfo[index0].waitSemaphoreCount; ++index1) {
1433*b7893ccfSSadaf Ebrahimi local_pBindInfo[index0].pWaitSemaphores[index1] = layer_data->Unwrap(local_pBindInfo[index0].pWaitSemaphores[index1]);
1434*b7893ccfSSadaf Ebrahimi }
1435*b7893ccfSSadaf Ebrahimi }
1436*b7893ccfSSadaf Ebrahimi if (local_pBindInfo[index0].pBufferBinds) {
1437*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pBindInfo[index0].bufferBindCount; ++index1) {
1438*b7893ccfSSadaf Ebrahimi if (pBindInfo[index0].pBufferBinds[index1].buffer) {
1439*b7893ccfSSadaf Ebrahimi local_pBindInfo[index0].pBufferBinds[index1].buffer = layer_data->Unwrap(pBindInfo[index0].pBufferBinds[index1].buffer);
1440*b7893ccfSSadaf Ebrahimi }
1441*b7893ccfSSadaf Ebrahimi if (local_pBindInfo[index0].pBufferBinds[index1].pBinds) {
1442*b7893ccfSSadaf Ebrahimi for (uint32_t index2 = 0; index2 < local_pBindInfo[index0].pBufferBinds[index1].bindCount; ++index2) {
1443*b7893ccfSSadaf Ebrahimi if (pBindInfo[index0].pBufferBinds[index1].pBinds[index2].memory) {
1444*b7893ccfSSadaf Ebrahimi local_pBindInfo[index0].pBufferBinds[index1].pBinds[index2].memory = layer_data->Unwrap(pBindInfo[index0].pBufferBinds[index1].pBinds[index2].memory);
1445*b7893ccfSSadaf Ebrahimi }
1446*b7893ccfSSadaf Ebrahimi }
1447*b7893ccfSSadaf Ebrahimi }
1448*b7893ccfSSadaf Ebrahimi }
1449*b7893ccfSSadaf Ebrahimi }
1450*b7893ccfSSadaf Ebrahimi if (local_pBindInfo[index0].pImageOpaqueBinds) {
1451*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pBindInfo[index0].imageOpaqueBindCount; ++index1) {
1452*b7893ccfSSadaf Ebrahimi if (pBindInfo[index0].pImageOpaqueBinds[index1].image) {
1453*b7893ccfSSadaf Ebrahimi local_pBindInfo[index0].pImageOpaqueBinds[index1].image = layer_data->Unwrap(pBindInfo[index0].pImageOpaqueBinds[index1].image);
1454*b7893ccfSSadaf Ebrahimi }
1455*b7893ccfSSadaf Ebrahimi if (local_pBindInfo[index0].pImageOpaqueBinds[index1].pBinds) {
1456*b7893ccfSSadaf Ebrahimi for (uint32_t index2 = 0; index2 < local_pBindInfo[index0].pImageOpaqueBinds[index1].bindCount; ++index2) {
1457*b7893ccfSSadaf Ebrahimi if (pBindInfo[index0].pImageOpaqueBinds[index1].pBinds[index2].memory) {
1458*b7893ccfSSadaf Ebrahimi local_pBindInfo[index0].pImageOpaqueBinds[index1].pBinds[index2].memory = layer_data->Unwrap(pBindInfo[index0].pImageOpaqueBinds[index1].pBinds[index2].memory);
1459*b7893ccfSSadaf Ebrahimi }
1460*b7893ccfSSadaf Ebrahimi }
1461*b7893ccfSSadaf Ebrahimi }
1462*b7893ccfSSadaf Ebrahimi }
1463*b7893ccfSSadaf Ebrahimi }
1464*b7893ccfSSadaf Ebrahimi if (local_pBindInfo[index0].pImageBinds) {
1465*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pBindInfo[index0].imageBindCount; ++index1) {
1466*b7893ccfSSadaf Ebrahimi if (pBindInfo[index0].pImageBinds[index1].image) {
1467*b7893ccfSSadaf Ebrahimi local_pBindInfo[index0].pImageBinds[index1].image = layer_data->Unwrap(pBindInfo[index0].pImageBinds[index1].image);
1468*b7893ccfSSadaf Ebrahimi }
1469*b7893ccfSSadaf Ebrahimi if (local_pBindInfo[index0].pImageBinds[index1].pBinds) {
1470*b7893ccfSSadaf Ebrahimi for (uint32_t index2 = 0; index2 < local_pBindInfo[index0].pImageBinds[index1].bindCount; ++index2) {
1471*b7893ccfSSadaf Ebrahimi if (pBindInfo[index0].pImageBinds[index1].pBinds[index2].memory) {
1472*b7893ccfSSadaf Ebrahimi local_pBindInfo[index0].pImageBinds[index1].pBinds[index2].memory = layer_data->Unwrap(pBindInfo[index0].pImageBinds[index1].pBinds[index2].memory);
1473*b7893ccfSSadaf Ebrahimi }
1474*b7893ccfSSadaf Ebrahimi }
1475*b7893ccfSSadaf Ebrahimi }
1476*b7893ccfSSadaf Ebrahimi }
1477*b7893ccfSSadaf Ebrahimi }
1478*b7893ccfSSadaf Ebrahimi if (local_pBindInfo[index0].pSignalSemaphores) {
1479*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pBindInfo[index0].signalSemaphoreCount; ++index1) {
1480*b7893ccfSSadaf Ebrahimi local_pBindInfo[index0].pSignalSemaphores[index1] = layer_data->Unwrap(local_pBindInfo[index0].pSignalSemaphores[index1]);
1481*b7893ccfSSadaf Ebrahimi }
1482*b7893ccfSSadaf Ebrahimi }
1483*b7893ccfSSadaf Ebrahimi }
1484*b7893ccfSSadaf Ebrahimi }
1485*b7893ccfSSadaf Ebrahimi fence = layer_data->Unwrap(fence);
1486*b7893ccfSSadaf Ebrahimi }
1487*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.QueueBindSparse(queue, bindInfoCount, (const VkBindSparseInfo*)local_pBindInfo, fence);
1488*b7893ccfSSadaf Ebrahimi if (local_pBindInfo) {
1489*b7893ccfSSadaf Ebrahimi delete[] local_pBindInfo;
1490*b7893ccfSSadaf Ebrahimi }
1491*b7893ccfSSadaf Ebrahimi return result;
1492*b7893ccfSSadaf Ebrahimi }
1493*b7893ccfSSadaf Ebrahimi
DispatchCreateFence(VkDevice device,const VkFenceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)1494*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateFence(
1495*b7893ccfSSadaf Ebrahimi VkDevice device,
1496*b7893ccfSSadaf Ebrahimi const VkFenceCreateInfo* pCreateInfo,
1497*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
1498*b7893ccfSSadaf Ebrahimi VkFence* pFence)
1499*b7893ccfSSadaf Ebrahimi {
1500*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1501*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateFence(device, pCreateInfo, pAllocator, pFence);
1502*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateFence(device, pCreateInfo, pAllocator, pFence);
1503*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
1504*b7893ccfSSadaf Ebrahimi *pFence = layer_data->WrapNew(*pFence);
1505*b7893ccfSSadaf Ebrahimi }
1506*b7893ccfSSadaf Ebrahimi return result;
1507*b7893ccfSSadaf Ebrahimi }
1508*b7893ccfSSadaf Ebrahimi
DispatchDestroyFence(VkDevice device,VkFence fence,const VkAllocationCallbacks * pAllocator)1509*b7893ccfSSadaf Ebrahimi void DispatchDestroyFence(
1510*b7893ccfSSadaf Ebrahimi VkDevice device,
1511*b7893ccfSSadaf Ebrahimi VkFence fence,
1512*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
1513*b7893ccfSSadaf Ebrahimi {
1514*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1515*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroyFence(device, fence, pAllocator);
1516*b7893ccfSSadaf Ebrahimi uint64_t fence_id = reinterpret_cast<uint64_t &>(fence);
1517*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(fence_id);
1518*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
1519*b7893ccfSSadaf Ebrahimi fence = (VkFence)iter->second;
1520*b7893ccfSSadaf Ebrahimi } else {
1521*b7893ccfSSadaf Ebrahimi fence = (VkFence)0;
1522*b7893ccfSSadaf Ebrahimi }
1523*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyFence(device, fence, pAllocator);
1524*b7893ccfSSadaf Ebrahimi
1525*b7893ccfSSadaf Ebrahimi }
1526*b7893ccfSSadaf Ebrahimi
DispatchResetFences(VkDevice device,uint32_t fenceCount,const VkFence * pFences)1527*b7893ccfSSadaf Ebrahimi VkResult DispatchResetFences(
1528*b7893ccfSSadaf Ebrahimi VkDevice device,
1529*b7893ccfSSadaf Ebrahimi uint32_t fenceCount,
1530*b7893ccfSSadaf Ebrahimi const VkFence* pFences)
1531*b7893ccfSSadaf Ebrahimi {
1532*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1533*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.ResetFences(device, fenceCount, pFences);
1534*b7893ccfSSadaf Ebrahimi VkFence *local_pFences = NULL;
1535*b7893ccfSSadaf Ebrahimi {
1536*b7893ccfSSadaf Ebrahimi if (pFences) {
1537*b7893ccfSSadaf Ebrahimi local_pFences = new VkFence[fenceCount];
1538*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < fenceCount; ++index0) {
1539*b7893ccfSSadaf Ebrahimi local_pFences[index0] = layer_data->Unwrap(pFences[index0]);
1540*b7893ccfSSadaf Ebrahimi }
1541*b7893ccfSSadaf Ebrahimi }
1542*b7893ccfSSadaf Ebrahimi }
1543*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.ResetFences(device, fenceCount, (const VkFence*)local_pFences);
1544*b7893ccfSSadaf Ebrahimi if (local_pFences)
1545*b7893ccfSSadaf Ebrahimi delete[] local_pFences;
1546*b7893ccfSSadaf Ebrahimi return result;
1547*b7893ccfSSadaf Ebrahimi }
1548*b7893ccfSSadaf Ebrahimi
DispatchGetFenceStatus(VkDevice device,VkFence fence)1549*b7893ccfSSadaf Ebrahimi VkResult DispatchGetFenceStatus(
1550*b7893ccfSSadaf Ebrahimi VkDevice device,
1551*b7893ccfSSadaf Ebrahimi VkFence fence)
1552*b7893ccfSSadaf Ebrahimi {
1553*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1554*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetFenceStatus(device, fence);
1555*b7893ccfSSadaf Ebrahimi {
1556*b7893ccfSSadaf Ebrahimi fence = layer_data->Unwrap(fence);
1557*b7893ccfSSadaf Ebrahimi }
1558*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetFenceStatus(device, fence);
1559*b7893ccfSSadaf Ebrahimi
1560*b7893ccfSSadaf Ebrahimi return result;
1561*b7893ccfSSadaf Ebrahimi }
1562*b7893ccfSSadaf Ebrahimi
DispatchWaitForFences(VkDevice device,uint32_t fenceCount,const VkFence * pFences,VkBool32 waitAll,uint64_t timeout)1563*b7893ccfSSadaf Ebrahimi VkResult DispatchWaitForFences(
1564*b7893ccfSSadaf Ebrahimi VkDevice device,
1565*b7893ccfSSadaf Ebrahimi uint32_t fenceCount,
1566*b7893ccfSSadaf Ebrahimi const VkFence* pFences,
1567*b7893ccfSSadaf Ebrahimi VkBool32 waitAll,
1568*b7893ccfSSadaf Ebrahimi uint64_t timeout)
1569*b7893ccfSSadaf Ebrahimi {
1570*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1571*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.WaitForFences(device, fenceCount, pFences, waitAll, timeout);
1572*b7893ccfSSadaf Ebrahimi VkFence *local_pFences = NULL;
1573*b7893ccfSSadaf Ebrahimi {
1574*b7893ccfSSadaf Ebrahimi if (pFences) {
1575*b7893ccfSSadaf Ebrahimi local_pFences = new VkFence[fenceCount];
1576*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < fenceCount; ++index0) {
1577*b7893ccfSSadaf Ebrahimi local_pFences[index0] = layer_data->Unwrap(pFences[index0]);
1578*b7893ccfSSadaf Ebrahimi }
1579*b7893ccfSSadaf Ebrahimi }
1580*b7893ccfSSadaf Ebrahimi }
1581*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.WaitForFences(device, fenceCount, (const VkFence*)local_pFences, waitAll, timeout);
1582*b7893ccfSSadaf Ebrahimi if (local_pFences)
1583*b7893ccfSSadaf Ebrahimi delete[] local_pFences;
1584*b7893ccfSSadaf Ebrahimi return result;
1585*b7893ccfSSadaf Ebrahimi }
1586*b7893ccfSSadaf Ebrahimi
DispatchCreateSemaphore(VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)1587*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateSemaphore(
1588*b7893ccfSSadaf Ebrahimi VkDevice device,
1589*b7893ccfSSadaf Ebrahimi const VkSemaphoreCreateInfo* pCreateInfo,
1590*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
1591*b7893ccfSSadaf Ebrahimi VkSemaphore* pSemaphore)
1592*b7893ccfSSadaf Ebrahimi {
1593*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1594*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore);
1595*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore);
1596*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
1597*b7893ccfSSadaf Ebrahimi *pSemaphore = layer_data->WrapNew(*pSemaphore);
1598*b7893ccfSSadaf Ebrahimi }
1599*b7893ccfSSadaf Ebrahimi return result;
1600*b7893ccfSSadaf Ebrahimi }
1601*b7893ccfSSadaf Ebrahimi
DispatchDestroySemaphore(VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)1602*b7893ccfSSadaf Ebrahimi void DispatchDestroySemaphore(
1603*b7893ccfSSadaf Ebrahimi VkDevice device,
1604*b7893ccfSSadaf Ebrahimi VkSemaphore semaphore,
1605*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
1606*b7893ccfSSadaf Ebrahimi {
1607*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1608*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroySemaphore(device, semaphore, pAllocator);
1609*b7893ccfSSadaf Ebrahimi uint64_t semaphore_id = reinterpret_cast<uint64_t &>(semaphore);
1610*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(semaphore_id);
1611*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
1612*b7893ccfSSadaf Ebrahimi semaphore = (VkSemaphore)iter->second;
1613*b7893ccfSSadaf Ebrahimi } else {
1614*b7893ccfSSadaf Ebrahimi semaphore = (VkSemaphore)0;
1615*b7893ccfSSadaf Ebrahimi }
1616*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroySemaphore(device, semaphore, pAllocator);
1617*b7893ccfSSadaf Ebrahimi
1618*b7893ccfSSadaf Ebrahimi }
1619*b7893ccfSSadaf Ebrahimi
DispatchCreateEvent(VkDevice device,const VkEventCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkEvent * pEvent)1620*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateEvent(
1621*b7893ccfSSadaf Ebrahimi VkDevice device,
1622*b7893ccfSSadaf Ebrahimi const VkEventCreateInfo* pCreateInfo,
1623*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
1624*b7893ccfSSadaf Ebrahimi VkEvent* pEvent)
1625*b7893ccfSSadaf Ebrahimi {
1626*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1627*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateEvent(device, pCreateInfo, pAllocator, pEvent);
1628*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateEvent(device, pCreateInfo, pAllocator, pEvent);
1629*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
1630*b7893ccfSSadaf Ebrahimi *pEvent = layer_data->WrapNew(*pEvent);
1631*b7893ccfSSadaf Ebrahimi }
1632*b7893ccfSSadaf Ebrahimi return result;
1633*b7893ccfSSadaf Ebrahimi }
1634*b7893ccfSSadaf Ebrahimi
DispatchDestroyEvent(VkDevice device,VkEvent event,const VkAllocationCallbacks * pAllocator)1635*b7893ccfSSadaf Ebrahimi void DispatchDestroyEvent(
1636*b7893ccfSSadaf Ebrahimi VkDevice device,
1637*b7893ccfSSadaf Ebrahimi VkEvent event,
1638*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
1639*b7893ccfSSadaf Ebrahimi {
1640*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1641*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroyEvent(device, event, pAllocator);
1642*b7893ccfSSadaf Ebrahimi uint64_t event_id = reinterpret_cast<uint64_t &>(event);
1643*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(event_id);
1644*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
1645*b7893ccfSSadaf Ebrahimi event = (VkEvent)iter->second;
1646*b7893ccfSSadaf Ebrahimi } else {
1647*b7893ccfSSadaf Ebrahimi event = (VkEvent)0;
1648*b7893ccfSSadaf Ebrahimi }
1649*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyEvent(device, event, pAllocator);
1650*b7893ccfSSadaf Ebrahimi
1651*b7893ccfSSadaf Ebrahimi }
1652*b7893ccfSSadaf Ebrahimi
DispatchGetEventStatus(VkDevice device,VkEvent event)1653*b7893ccfSSadaf Ebrahimi VkResult DispatchGetEventStatus(
1654*b7893ccfSSadaf Ebrahimi VkDevice device,
1655*b7893ccfSSadaf Ebrahimi VkEvent event)
1656*b7893ccfSSadaf Ebrahimi {
1657*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1658*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetEventStatus(device, event);
1659*b7893ccfSSadaf Ebrahimi {
1660*b7893ccfSSadaf Ebrahimi event = layer_data->Unwrap(event);
1661*b7893ccfSSadaf Ebrahimi }
1662*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetEventStatus(device, event);
1663*b7893ccfSSadaf Ebrahimi
1664*b7893ccfSSadaf Ebrahimi return result;
1665*b7893ccfSSadaf Ebrahimi }
1666*b7893ccfSSadaf Ebrahimi
DispatchSetEvent(VkDevice device,VkEvent event)1667*b7893ccfSSadaf Ebrahimi VkResult DispatchSetEvent(
1668*b7893ccfSSadaf Ebrahimi VkDevice device,
1669*b7893ccfSSadaf Ebrahimi VkEvent event)
1670*b7893ccfSSadaf Ebrahimi {
1671*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1672*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.SetEvent(device, event);
1673*b7893ccfSSadaf Ebrahimi {
1674*b7893ccfSSadaf Ebrahimi event = layer_data->Unwrap(event);
1675*b7893ccfSSadaf Ebrahimi }
1676*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.SetEvent(device, event);
1677*b7893ccfSSadaf Ebrahimi
1678*b7893ccfSSadaf Ebrahimi return result;
1679*b7893ccfSSadaf Ebrahimi }
1680*b7893ccfSSadaf Ebrahimi
DispatchResetEvent(VkDevice device,VkEvent event)1681*b7893ccfSSadaf Ebrahimi VkResult DispatchResetEvent(
1682*b7893ccfSSadaf Ebrahimi VkDevice device,
1683*b7893ccfSSadaf Ebrahimi VkEvent event)
1684*b7893ccfSSadaf Ebrahimi {
1685*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1686*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.ResetEvent(device, event);
1687*b7893ccfSSadaf Ebrahimi {
1688*b7893ccfSSadaf Ebrahimi event = layer_data->Unwrap(event);
1689*b7893ccfSSadaf Ebrahimi }
1690*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.ResetEvent(device, event);
1691*b7893ccfSSadaf Ebrahimi
1692*b7893ccfSSadaf Ebrahimi return result;
1693*b7893ccfSSadaf Ebrahimi }
1694*b7893ccfSSadaf Ebrahimi
DispatchCreateQueryPool(VkDevice device,const VkQueryPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkQueryPool * pQueryPool)1695*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateQueryPool(
1696*b7893ccfSSadaf Ebrahimi VkDevice device,
1697*b7893ccfSSadaf Ebrahimi const VkQueryPoolCreateInfo* pCreateInfo,
1698*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
1699*b7893ccfSSadaf Ebrahimi VkQueryPool* pQueryPool)
1700*b7893ccfSSadaf Ebrahimi {
1701*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1702*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool);
1703*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool);
1704*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
1705*b7893ccfSSadaf Ebrahimi *pQueryPool = layer_data->WrapNew(*pQueryPool);
1706*b7893ccfSSadaf Ebrahimi }
1707*b7893ccfSSadaf Ebrahimi return result;
1708*b7893ccfSSadaf Ebrahimi }
1709*b7893ccfSSadaf Ebrahimi
DispatchDestroyQueryPool(VkDevice device,VkQueryPool queryPool,const VkAllocationCallbacks * pAllocator)1710*b7893ccfSSadaf Ebrahimi void DispatchDestroyQueryPool(
1711*b7893ccfSSadaf Ebrahimi VkDevice device,
1712*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
1713*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
1714*b7893ccfSSadaf Ebrahimi {
1715*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1716*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroyQueryPool(device, queryPool, pAllocator);
1717*b7893ccfSSadaf Ebrahimi uint64_t queryPool_id = reinterpret_cast<uint64_t &>(queryPool);
1718*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(queryPool_id);
1719*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
1720*b7893ccfSSadaf Ebrahimi queryPool = (VkQueryPool)iter->second;
1721*b7893ccfSSadaf Ebrahimi } else {
1722*b7893ccfSSadaf Ebrahimi queryPool = (VkQueryPool)0;
1723*b7893ccfSSadaf Ebrahimi }
1724*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyQueryPool(device, queryPool, pAllocator);
1725*b7893ccfSSadaf Ebrahimi
1726*b7893ccfSSadaf Ebrahimi }
1727*b7893ccfSSadaf Ebrahimi
DispatchGetQueryPoolResults(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount,size_t dataSize,void * pData,VkDeviceSize stride,VkQueryResultFlags flags)1728*b7893ccfSSadaf Ebrahimi VkResult DispatchGetQueryPoolResults(
1729*b7893ccfSSadaf Ebrahimi VkDevice device,
1730*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
1731*b7893ccfSSadaf Ebrahimi uint32_t firstQuery,
1732*b7893ccfSSadaf Ebrahimi uint32_t queryCount,
1733*b7893ccfSSadaf Ebrahimi size_t dataSize,
1734*b7893ccfSSadaf Ebrahimi void* pData,
1735*b7893ccfSSadaf Ebrahimi VkDeviceSize stride,
1736*b7893ccfSSadaf Ebrahimi VkQueryResultFlags flags)
1737*b7893ccfSSadaf Ebrahimi {
1738*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1739*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags);
1740*b7893ccfSSadaf Ebrahimi {
1741*b7893ccfSSadaf Ebrahimi queryPool = layer_data->Unwrap(queryPool);
1742*b7893ccfSSadaf Ebrahimi }
1743*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags);
1744*b7893ccfSSadaf Ebrahimi
1745*b7893ccfSSadaf Ebrahimi return result;
1746*b7893ccfSSadaf Ebrahimi }
1747*b7893ccfSSadaf Ebrahimi
DispatchCreateBuffer(VkDevice device,const VkBufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBuffer * pBuffer)1748*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateBuffer(
1749*b7893ccfSSadaf Ebrahimi VkDevice device,
1750*b7893ccfSSadaf Ebrahimi const VkBufferCreateInfo* pCreateInfo,
1751*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
1752*b7893ccfSSadaf Ebrahimi VkBuffer* pBuffer)
1753*b7893ccfSSadaf Ebrahimi {
1754*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1755*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateBuffer(device, pCreateInfo, pAllocator, pBuffer);
1756*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateBuffer(device, pCreateInfo, pAllocator, pBuffer);
1757*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
1758*b7893ccfSSadaf Ebrahimi *pBuffer = layer_data->WrapNew(*pBuffer);
1759*b7893ccfSSadaf Ebrahimi }
1760*b7893ccfSSadaf Ebrahimi return result;
1761*b7893ccfSSadaf Ebrahimi }
1762*b7893ccfSSadaf Ebrahimi
DispatchDestroyBuffer(VkDevice device,VkBuffer buffer,const VkAllocationCallbacks * pAllocator)1763*b7893ccfSSadaf Ebrahimi void DispatchDestroyBuffer(
1764*b7893ccfSSadaf Ebrahimi VkDevice device,
1765*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
1766*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
1767*b7893ccfSSadaf Ebrahimi {
1768*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1769*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroyBuffer(device, buffer, pAllocator);
1770*b7893ccfSSadaf Ebrahimi uint64_t buffer_id = reinterpret_cast<uint64_t &>(buffer);
1771*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(buffer_id);
1772*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
1773*b7893ccfSSadaf Ebrahimi buffer = (VkBuffer)iter->second;
1774*b7893ccfSSadaf Ebrahimi } else {
1775*b7893ccfSSadaf Ebrahimi buffer = (VkBuffer)0;
1776*b7893ccfSSadaf Ebrahimi }
1777*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyBuffer(device, buffer, pAllocator);
1778*b7893ccfSSadaf Ebrahimi
1779*b7893ccfSSadaf Ebrahimi }
1780*b7893ccfSSadaf Ebrahimi
DispatchCreateBufferView(VkDevice device,const VkBufferViewCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBufferView * pView)1781*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateBufferView(
1782*b7893ccfSSadaf Ebrahimi VkDevice device,
1783*b7893ccfSSadaf Ebrahimi const VkBufferViewCreateInfo* pCreateInfo,
1784*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
1785*b7893ccfSSadaf Ebrahimi VkBufferView* pView)
1786*b7893ccfSSadaf Ebrahimi {
1787*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1788*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateBufferView(device, pCreateInfo, pAllocator, pView);
1789*b7893ccfSSadaf Ebrahimi safe_VkBufferViewCreateInfo *local_pCreateInfo = NULL;
1790*b7893ccfSSadaf Ebrahimi {
1791*b7893ccfSSadaf Ebrahimi if (pCreateInfo) {
1792*b7893ccfSSadaf Ebrahimi local_pCreateInfo = new safe_VkBufferViewCreateInfo(pCreateInfo);
1793*b7893ccfSSadaf Ebrahimi if (pCreateInfo->buffer) {
1794*b7893ccfSSadaf Ebrahimi local_pCreateInfo->buffer = layer_data->Unwrap(pCreateInfo->buffer);
1795*b7893ccfSSadaf Ebrahimi }
1796*b7893ccfSSadaf Ebrahimi }
1797*b7893ccfSSadaf Ebrahimi }
1798*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateBufferView(device, (const VkBufferViewCreateInfo*)local_pCreateInfo, pAllocator, pView);
1799*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo) {
1800*b7893ccfSSadaf Ebrahimi delete local_pCreateInfo;
1801*b7893ccfSSadaf Ebrahimi }
1802*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
1803*b7893ccfSSadaf Ebrahimi *pView = layer_data->WrapNew(*pView);
1804*b7893ccfSSadaf Ebrahimi }
1805*b7893ccfSSadaf Ebrahimi return result;
1806*b7893ccfSSadaf Ebrahimi }
1807*b7893ccfSSadaf Ebrahimi
DispatchDestroyBufferView(VkDevice device,VkBufferView bufferView,const VkAllocationCallbacks * pAllocator)1808*b7893ccfSSadaf Ebrahimi void DispatchDestroyBufferView(
1809*b7893ccfSSadaf Ebrahimi VkDevice device,
1810*b7893ccfSSadaf Ebrahimi VkBufferView bufferView,
1811*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
1812*b7893ccfSSadaf Ebrahimi {
1813*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1814*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroyBufferView(device, bufferView, pAllocator);
1815*b7893ccfSSadaf Ebrahimi uint64_t bufferView_id = reinterpret_cast<uint64_t &>(bufferView);
1816*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(bufferView_id);
1817*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
1818*b7893ccfSSadaf Ebrahimi bufferView = (VkBufferView)iter->second;
1819*b7893ccfSSadaf Ebrahimi } else {
1820*b7893ccfSSadaf Ebrahimi bufferView = (VkBufferView)0;
1821*b7893ccfSSadaf Ebrahimi }
1822*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyBufferView(device, bufferView, pAllocator);
1823*b7893ccfSSadaf Ebrahimi
1824*b7893ccfSSadaf Ebrahimi }
1825*b7893ccfSSadaf Ebrahimi
DispatchCreateImage(VkDevice device,const VkImageCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImage * pImage)1826*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateImage(
1827*b7893ccfSSadaf Ebrahimi VkDevice device,
1828*b7893ccfSSadaf Ebrahimi const VkImageCreateInfo* pCreateInfo,
1829*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
1830*b7893ccfSSadaf Ebrahimi VkImage* pImage)
1831*b7893ccfSSadaf Ebrahimi {
1832*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1833*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateImage(device, pCreateInfo, pAllocator, pImage);
1834*b7893ccfSSadaf Ebrahimi safe_VkImageCreateInfo *local_pCreateInfo = NULL;
1835*b7893ccfSSadaf Ebrahimi {
1836*b7893ccfSSadaf Ebrahimi if (pCreateInfo) {
1837*b7893ccfSSadaf Ebrahimi local_pCreateInfo = new safe_VkImageCreateInfo(pCreateInfo);
1838*b7893ccfSSadaf Ebrahimi WrapPnextChainHandles(layer_data, local_pCreateInfo->pNext);
1839*b7893ccfSSadaf Ebrahimi }
1840*b7893ccfSSadaf Ebrahimi }
1841*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateImage(device, (const VkImageCreateInfo*)local_pCreateInfo, pAllocator, pImage);
1842*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo) {
1843*b7893ccfSSadaf Ebrahimi delete local_pCreateInfo;
1844*b7893ccfSSadaf Ebrahimi }
1845*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
1846*b7893ccfSSadaf Ebrahimi *pImage = layer_data->WrapNew(*pImage);
1847*b7893ccfSSadaf Ebrahimi }
1848*b7893ccfSSadaf Ebrahimi return result;
1849*b7893ccfSSadaf Ebrahimi }
1850*b7893ccfSSadaf Ebrahimi
DispatchDestroyImage(VkDevice device,VkImage image,const VkAllocationCallbacks * pAllocator)1851*b7893ccfSSadaf Ebrahimi void DispatchDestroyImage(
1852*b7893ccfSSadaf Ebrahimi VkDevice device,
1853*b7893ccfSSadaf Ebrahimi VkImage image,
1854*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
1855*b7893ccfSSadaf Ebrahimi {
1856*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1857*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroyImage(device, image, pAllocator);
1858*b7893ccfSSadaf Ebrahimi uint64_t image_id = reinterpret_cast<uint64_t &>(image);
1859*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(image_id);
1860*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
1861*b7893ccfSSadaf Ebrahimi image = (VkImage)iter->second;
1862*b7893ccfSSadaf Ebrahimi } else {
1863*b7893ccfSSadaf Ebrahimi image = (VkImage)0;
1864*b7893ccfSSadaf Ebrahimi }
1865*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyImage(device, image, pAllocator);
1866*b7893ccfSSadaf Ebrahimi
1867*b7893ccfSSadaf Ebrahimi }
1868*b7893ccfSSadaf Ebrahimi
DispatchGetImageSubresourceLayout(VkDevice device,VkImage image,const VkImageSubresource * pSubresource,VkSubresourceLayout * pLayout)1869*b7893ccfSSadaf Ebrahimi void DispatchGetImageSubresourceLayout(
1870*b7893ccfSSadaf Ebrahimi VkDevice device,
1871*b7893ccfSSadaf Ebrahimi VkImage image,
1872*b7893ccfSSadaf Ebrahimi const VkImageSubresource* pSubresource,
1873*b7893ccfSSadaf Ebrahimi VkSubresourceLayout* pLayout)
1874*b7893ccfSSadaf Ebrahimi {
1875*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1876*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetImageSubresourceLayout(device, image, pSubresource, pLayout);
1877*b7893ccfSSadaf Ebrahimi {
1878*b7893ccfSSadaf Ebrahimi image = layer_data->Unwrap(image);
1879*b7893ccfSSadaf Ebrahimi }
1880*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.GetImageSubresourceLayout(device, image, pSubresource, pLayout);
1881*b7893ccfSSadaf Ebrahimi
1882*b7893ccfSSadaf Ebrahimi }
1883*b7893ccfSSadaf Ebrahimi
DispatchCreateImageView(VkDevice device,const VkImageViewCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImageView * pView)1884*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateImageView(
1885*b7893ccfSSadaf Ebrahimi VkDevice device,
1886*b7893ccfSSadaf Ebrahimi const VkImageViewCreateInfo* pCreateInfo,
1887*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
1888*b7893ccfSSadaf Ebrahimi VkImageView* pView)
1889*b7893ccfSSadaf Ebrahimi {
1890*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1891*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateImageView(device, pCreateInfo, pAllocator, pView);
1892*b7893ccfSSadaf Ebrahimi safe_VkImageViewCreateInfo *local_pCreateInfo = NULL;
1893*b7893ccfSSadaf Ebrahimi {
1894*b7893ccfSSadaf Ebrahimi if (pCreateInfo) {
1895*b7893ccfSSadaf Ebrahimi local_pCreateInfo = new safe_VkImageViewCreateInfo(pCreateInfo);
1896*b7893ccfSSadaf Ebrahimi if (pCreateInfo->image) {
1897*b7893ccfSSadaf Ebrahimi local_pCreateInfo->image = layer_data->Unwrap(pCreateInfo->image);
1898*b7893ccfSSadaf Ebrahimi }
1899*b7893ccfSSadaf Ebrahimi WrapPnextChainHandles(layer_data, local_pCreateInfo->pNext);
1900*b7893ccfSSadaf Ebrahimi }
1901*b7893ccfSSadaf Ebrahimi }
1902*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateImageView(device, (const VkImageViewCreateInfo*)local_pCreateInfo, pAllocator, pView);
1903*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo) {
1904*b7893ccfSSadaf Ebrahimi delete local_pCreateInfo;
1905*b7893ccfSSadaf Ebrahimi }
1906*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
1907*b7893ccfSSadaf Ebrahimi *pView = layer_data->WrapNew(*pView);
1908*b7893ccfSSadaf Ebrahimi }
1909*b7893ccfSSadaf Ebrahimi return result;
1910*b7893ccfSSadaf Ebrahimi }
1911*b7893ccfSSadaf Ebrahimi
DispatchDestroyImageView(VkDevice device,VkImageView imageView,const VkAllocationCallbacks * pAllocator)1912*b7893ccfSSadaf Ebrahimi void DispatchDestroyImageView(
1913*b7893ccfSSadaf Ebrahimi VkDevice device,
1914*b7893ccfSSadaf Ebrahimi VkImageView imageView,
1915*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
1916*b7893ccfSSadaf Ebrahimi {
1917*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1918*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroyImageView(device, imageView, pAllocator);
1919*b7893ccfSSadaf Ebrahimi uint64_t imageView_id = reinterpret_cast<uint64_t &>(imageView);
1920*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(imageView_id);
1921*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
1922*b7893ccfSSadaf Ebrahimi imageView = (VkImageView)iter->second;
1923*b7893ccfSSadaf Ebrahimi } else {
1924*b7893ccfSSadaf Ebrahimi imageView = (VkImageView)0;
1925*b7893ccfSSadaf Ebrahimi }
1926*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyImageView(device, imageView, pAllocator);
1927*b7893ccfSSadaf Ebrahimi
1928*b7893ccfSSadaf Ebrahimi }
1929*b7893ccfSSadaf Ebrahimi
DispatchCreateShaderModule(VkDevice device,const VkShaderModuleCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkShaderModule * pShaderModule)1930*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateShaderModule(
1931*b7893ccfSSadaf Ebrahimi VkDevice device,
1932*b7893ccfSSadaf Ebrahimi const VkShaderModuleCreateInfo* pCreateInfo,
1933*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
1934*b7893ccfSSadaf Ebrahimi VkShaderModule* pShaderModule)
1935*b7893ccfSSadaf Ebrahimi {
1936*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1937*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule);
1938*b7893ccfSSadaf Ebrahimi safe_VkShaderModuleCreateInfo *local_pCreateInfo = NULL;
1939*b7893ccfSSadaf Ebrahimi {
1940*b7893ccfSSadaf Ebrahimi if (pCreateInfo) {
1941*b7893ccfSSadaf Ebrahimi local_pCreateInfo = new safe_VkShaderModuleCreateInfo(pCreateInfo);
1942*b7893ccfSSadaf Ebrahimi WrapPnextChainHandles(layer_data, local_pCreateInfo->pNext);
1943*b7893ccfSSadaf Ebrahimi }
1944*b7893ccfSSadaf Ebrahimi }
1945*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateShaderModule(device, (const VkShaderModuleCreateInfo*)local_pCreateInfo, pAllocator, pShaderModule);
1946*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo) {
1947*b7893ccfSSadaf Ebrahimi delete local_pCreateInfo;
1948*b7893ccfSSadaf Ebrahimi }
1949*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
1950*b7893ccfSSadaf Ebrahimi *pShaderModule = layer_data->WrapNew(*pShaderModule);
1951*b7893ccfSSadaf Ebrahimi }
1952*b7893ccfSSadaf Ebrahimi return result;
1953*b7893ccfSSadaf Ebrahimi }
1954*b7893ccfSSadaf Ebrahimi
DispatchDestroyShaderModule(VkDevice device,VkShaderModule shaderModule,const VkAllocationCallbacks * pAllocator)1955*b7893ccfSSadaf Ebrahimi void DispatchDestroyShaderModule(
1956*b7893ccfSSadaf Ebrahimi VkDevice device,
1957*b7893ccfSSadaf Ebrahimi VkShaderModule shaderModule,
1958*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
1959*b7893ccfSSadaf Ebrahimi {
1960*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1961*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroyShaderModule(device, shaderModule, pAllocator);
1962*b7893ccfSSadaf Ebrahimi uint64_t shaderModule_id = reinterpret_cast<uint64_t &>(shaderModule);
1963*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(shaderModule_id);
1964*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
1965*b7893ccfSSadaf Ebrahimi shaderModule = (VkShaderModule)iter->second;
1966*b7893ccfSSadaf Ebrahimi } else {
1967*b7893ccfSSadaf Ebrahimi shaderModule = (VkShaderModule)0;
1968*b7893ccfSSadaf Ebrahimi }
1969*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyShaderModule(device, shaderModule, pAllocator);
1970*b7893ccfSSadaf Ebrahimi
1971*b7893ccfSSadaf Ebrahimi }
1972*b7893ccfSSadaf Ebrahimi
DispatchCreatePipelineCache(VkDevice device,const VkPipelineCacheCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPipelineCache * pPipelineCache)1973*b7893ccfSSadaf Ebrahimi VkResult DispatchCreatePipelineCache(
1974*b7893ccfSSadaf Ebrahimi VkDevice device,
1975*b7893ccfSSadaf Ebrahimi const VkPipelineCacheCreateInfo* pCreateInfo,
1976*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
1977*b7893ccfSSadaf Ebrahimi VkPipelineCache* pPipelineCache)
1978*b7893ccfSSadaf Ebrahimi {
1979*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1980*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache);
1981*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache);
1982*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
1983*b7893ccfSSadaf Ebrahimi *pPipelineCache = layer_data->WrapNew(*pPipelineCache);
1984*b7893ccfSSadaf Ebrahimi }
1985*b7893ccfSSadaf Ebrahimi return result;
1986*b7893ccfSSadaf Ebrahimi }
1987*b7893ccfSSadaf Ebrahimi
DispatchDestroyPipelineCache(VkDevice device,VkPipelineCache pipelineCache,const VkAllocationCallbacks * pAllocator)1988*b7893ccfSSadaf Ebrahimi void DispatchDestroyPipelineCache(
1989*b7893ccfSSadaf Ebrahimi VkDevice device,
1990*b7893ccfSSadaf Ebrahimi VkPipelineCache pipelineCache,
1991*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
1992*b7893ccfSSadaf Ebrahimi {
1993*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
1994*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroyPipelineCache(device, pipelineCache, pAllocator);
1995*b7893ccfSSadaf Ebrahimi uint64_t pipelineCache_id = reinterpret_cast<uint64_t &>(pipelineCache);
1996*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(pipelineCache_id);
1997*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
1998*b7893ccfSSadaf Ebrahimi pipelineCache = (VkPipelineCache)iter->second;
1999*b7893ccfSSadaf Ebrahimi } else {
2000*b7893ccfSSadaf Ebrahimi pipelineCache = (VkPipelineCache)0;
2001*b7893ccfSSadaf Ebrahimi }
2002*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyPipelineCache(device, pipelineCache, pAllocator);
2003*b7893ccfSSadaf Ebrahimi
2004*b7893ccfSSadaf Ebrahimi }
2005*b7893ccfSSadaf Ebrahimi
DispatchGetPipelineCacheData(VkDevice device,VkPipelineCache pipelineCache,size_t * pDataSize,void * pData)2006*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPipelineCacheData(
2007*b7893ccfSSadaf Ebrahimi VkDevice device,
2008*b7893ccfSSadaf Ebrahimi VkPipelineCache pipelineCache,
2009*b7893ccfSSadaf Ebrahimi size_t* pDataSize,
2010*b7893ccfSSadaf Ebrahimi void* pData)
2011*b7893ccfSSadaf Ebrahimi {
2012*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
2013*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetPipelineCacheData(device, pipelineCache, pDataSize, pData);
2014*b7893ccfSSadaf Ebrahimi {
2015*b7893ccfSSadaf Ebrahimi pipelineCache = layer_data->Unwrap(pipelineCache);
2016*b7893ccfSSadaf Ebrahimi }
2017*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetPipelineCacheData(device, pipelineCache, pDataSize, pData);
2018*b7893ccfSSadaf Ebrahimi
2019*b7893ccfSSadaf Ebrahimi return result;
2020*b7893ccfSSadaf Ebrahimi }
2021*b7893ccfSSadaf Ebrahimi
DispatchMergePipelineCaches(VkDevice device,VkPipelineCache dstCache,uint32_t srcCacheCount,const VkPipelineCache * pSrcCaches)2022*b7893ccfSSadaf Ebrahimi VkResult DispatchMergePipelineCaches(
2023*b7893ccfSSadaf Ebrahimi VkDevice device,
2024*b7893ccfSSadaf Ebrahimi VkPipelineCache dstCache,
2025*b7893ccfSSadaf Ebrahimi uint32_t srcCacheCount,
2026*b7893ccfSSadaf Ebrahimi const VkPipelineCache* pSrcCaches)
2027*b7893ccfSSadaf Ebrahimi {
2028*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
2029*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.MergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches);
2030*b7893ccfSSadaf Ebrahimi VkPipelineCache *local_pSrcCaches = NULL;
2031*b7893ccfSSadaf Ebrahimi {
2032*b7893ccfSSadaf Ebrahimi dstCache = layer_data->Unwrap(dstCache);
2033*b7893ccfSSadaf Ebrahimi if (pSrcCaches) {
2034*b7893ccfSSadaf Ebrahimi local_pSrcCaches = new VkPipelineCache[srcCacheCount];
2035*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < srcCacheCount; ++index0) {
2036*b7893ccfSSadaf Ebrahimi local_pSrcCaches[index0] = layer_data->Unwrap(pSrcCaches[index0]);
2037*b7893ccfSSadaf Ebrahimi }
2038*b7893ccfSSadaf Ebrahimi }
2039*b7893ccfSSadaf Ebrahimi }
2040*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.MergePipelineCaches(device, dstCache, srcCacheCount, (const VkPipelineCache*)local_pSrcCaches);
2041*b7893ccfSSadaf Ebrahimi if (local_pSrcCaches)
2042*b7893ccfSSadaf Ebrahimi delete[] local_pSrcCaches;
2043*b7893ccfSSadaf Ebrahimi return result;
2044*b7893ccfSSadaf Ebrahimi }
2045*b7893ccfSSadaf Ebrahimi
2046*b7893ccfSSadaf Ebrahimi // Skip vkCreateGraphicsPipelines dispatch, manually generated
2047*b7893ccfSSadaf Ebrahimi
2048*b7893ccfSSadaf Ebrahimi // Skip vkCreateComputePipelines dispatch, manually generated
2049*b7893ccfSSadaf Ebrahimi
DispatchDestroyPipeline(VkDevice device,VkPipeline pipeline,const VkAllocationCallbacks * pAllocator)2050*b7893ccfSSadaf Ebrahimi void DispatchDestroyPipeline(
2051*b7893ccfSSadaf Ebrahimi VkDevice device,
2052*b7893ccfSSadaf Ebrahimi VkPipeline pipeline,
2053*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
2054*b7893ccfSSadaf Ebrahimi {
2055*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
2056*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroyPipeline(device, pipeline, pAllocator);
2057*b7893ccfSSadaf Ebrahimi uint64_t pipeline_id = reinterpret_cast<uint64_t &>(pipeline);
2058*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(pipeline_id);
2059*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
2060*b7893ccfSSadaf Ebrahimi pipeline = (VkPipeline)iter->second;
2061*b7893ccfSSadaf Ebrahimi } else {
2062*b7893ccfSSadaf Ebrahimi pipeline = (VkPipeline)0;
2063*b7893ccfSSadaf Ebrahimi }
2064*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyPipeline(device, pipeline, pAllocator);
2065*b7893ccfSSadaf Ebrahimi
2066*b7893ccfSSadaf Ebrahimi }
2067*b7893ccfSSadaf Ebrahimi
DispatchCreatePipelineLayout(VkDevice device,const VkPipelineLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPipelineLayout * pPipelineLayout)2068*b7893ccfSSadaf Ebrahimi VkResult DispatchCreatePipelineLayout(
2069*b7893ccfSSadaf Ebrahimi VkDevice device,
2070*b7893ccfSSadaf Ebrahimi const VkPipelineLayoutCreateInfo* pCreateInfo,
2071*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
2072*b7893ccfSSadaf Ebrahimi VkPipelineLayout* pPipelineLayout)
2073*b7893ccfSSadaf Ebrahimi {
2074*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
2075*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout);
2076*b7893ccfSSadaf Ebrahimi safe_VkPipelineLayoutCreateInfo *local_pCreateInfo = NULL;
2077*b7893ccfSSadaf Ebrahimi {
2078*b7893ccfSSadaf Ebrahimi if (pCreateInfo) {
2079*b7893ccfSSadaf Ebrahimi local_pCreateInfo = new safe_VkPipelineLayoutCreateInfo(pCreateInfo);
2080*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo->pSetLayouts) {
2081*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pCreateInfo->setLayoutCount; ++index1) {
2082*b7893ccfSSadaf Ebrahimi local_pCreateInfo->pSetLayouts[index1] = layer_data->Unwrap(local_pCreateInfo->pSetLayouts[index1]);
2083*b7893ccfSSadaf Ebrahimi }
2084*b7893ccfSSadaf Ebrahimi }
2085*b7893ccfSSadaf Ebrahimi }
2086*b7893ccfSSadaf Ebrahimi }
2087*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreatePipelineLayout(device, (const VkPipelineLayoutCreateInfo*)local_pCreateInfo, pAllocator, pPipelineLayout);
2088*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo) {
2089*b7893ccfSSadaf Ebrahimi delete local_pCreateInfo;
2090*b7893ccfSSadaf Ebrahimi }
2091*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
2092*b7893ccfSSadaf Ebrahimi *pPipelineLayout = layer_data->WrapNew(*pPipelineLayout);
2093*b7893ccfSSadaf Ebrahimi }
2094*b7893ccfSSadaf Ebrahimi return result;
2095*b7893ccfSSadaf Ebrahimi }
2096*b7893ccfSSadaf Ebrahimi
DispatchDestroyPipelineLayout(VkDevice device,VkPipelineLayout pipelineLayout,const VkAllocationCallbacks * pAllocator)2097*b7893ccfSSadaf Ebrahimi void DispatchDestroyPipelineLayout(
2098*b7893ccfSSadaf Ebrahimi VkDevice device,
2099*b7893ccfSSadaf Ebrahimi VkPipelineLayout pipelineLayout,
2100*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
2101*b7893ccfSSadaf Ebrahimi {
2102*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
2103*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroyPipelineLayout(device, pipelineLayout, pAllocator);
2104*b7893ccfSSadaf Ebrahimi uint64_t pipelineLayout_id = reinterpret_cast<uint64_t &>(pipelineLayout);
2105*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(pipelineLayout_id);
2106*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
2107*b7893ccfSSadaf Ebrahimi pipelineLayout = (VkPipelineLayout)iter->second;
2108*b7893ccfSSadaf Ebrahimi } else {
2109*b7893ccfSSadaf Ebrahimi pipelineLayout = (VkPipelineLayout)0;
2110*b7893ccfSSadaf Ebrahimi }
2111*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyPipelineLayout(device, pipelineLayout, pAllocator);
2112*b7893ccfSSadaf Ebrahimi
2113*b7893ccfSSadaf Ebrahimi }
2114*b7893ccfSSadaf Ebrahimi
DispatchCreateSampler(VkDevice device,const VkSamplerCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSampler * pSampler)2115*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateSampler(
2116*b7893ccfSSadaf Ebrahimi VkDevice device,
2117*b7893ccfSSadaf Ebrahimi const VkSamplerCreateInfo* pCreateInfo,
2118*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
2119*b7893ccfSSadaf Ebrahimi VkSampler* pSampler)
2120*b7893ccfSSadaf Ebrahimi {
2121*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
2122*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateSampler(device, pCreateInfo, pAllocator, pSampler);
2123*b7893ccfSSadaf Ebrahimi safe_VkSamplerCreateInfo *local_pCreateInfo = NULL;
2124*b7893ccfSSadaf Ebrahimi {
2125*b7893ccfSSadaf Ebrahimi if (pCreateInfo) {
2126*b7893ccfSSadaf Ebrahimi local_pCreateInfo = new safe_VkSamplerCreateInfo(pCreateInfo);
2127*b7893ccfSSadaf Ebrahimi WrapPnextChainHandles(layer_data, local_pCreateInfo->pNext);
2128*b7893ccfSSadaf Ebrahimi }
2129*b7893ccfSSadaf Ebrahimi }
2130*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateSampler(device, (const VkSamplerCreateInfo*)local_pCreateInfo, pAllocator, pSampler);
2131*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo) {
2132*b7893ccfSSadaf Ebrahimi delete local_pCreateInfo;
2133*b7893ccfSSadaf Ebrahimi }
2134*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
2135*b7893ccfSSadaf Ebrahimi *pSampler = layer_data->WrapNew(*pSampler);
2136*b7893ccfSSadaf Ebrahimi }
2137*b7893ccfSSadaf Ebrahimi return result;
2138*b7893ccfSSadaf Ebrahimi }
2139*b7893ccfSSadaf Ebrahimi
DispatchDestroySampler(VkDevice device,VkSampler sampler,const VkAllocationCallbacks * pAllocator)2140*b7893ccfSSadaf Ebrahimi void DispatchDestroySampler(
2141*b7893ccfSSadaf Ebrahimi VkDevice device,
2142*b7893ccfSSadaf Ebrahimi VkSampler sampler,
2143*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
2144*b7893ccfSSadaf Ebrahimi {
2145*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
2146*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroySampler(device, sampler, pAllocator);
2147*b7893ccfSSadaf Ebrahimi uint64_t sampler_id = reinterpret_cast<uint64_t &>(sampler);
2148*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(sampler_id);
2149*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
2150*b7893ccfSSadaf Ebrahimi sampler = (VkSampler)iter->second;
2151*b7893ccfSSadaf Ebrahimi } else {
2152*b7893ccfSSadaf Ebrahimi sampler = (VkSampler)0;
2153*b7893ccfSSadaf Ebrahimi }
2154*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroySampler(device, sampler, pAllocator);
2155*b7893ccfSSadaf Ebrahimi
2156*b7893ccfSSadaf Ebrahimi }
2157*b7893ccfSSadaf Ebrahimi
DispatchCreateDescriptorSetLayout(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorSetLayout * pSetLayout)2158*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateDescriptorSetLayout(
2159*b7893ccfSSadaf Ebrahimi VkDevice device,
2160*b7893ccfSSadaf Ebrahimi const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2161*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
2162*b7893ccfSSadaf Ebrahimi VkDescriptorSetLayout* pSetLayout)
2163*b7893ccfSSadaf Ebrahimi {
2164*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
2165*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout);
2166*b7893ccfSSadaf Ebrahimi safe_VkDescriptorSetLayoutCreateInfo *local_pCreateInfo = NULL;
2167*b7893ccfSSadaf Ebrahimi {
2168*b7893ccfSSadaf Ebrahimi if (pCreateInfo) {
2169*b7893ccfSSadaf Ebrahimi local_pCreateInfo = new safe_VkDescriptorSetLayoutCreateInfo(pCreateInfo);
2170*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo->pBindings) {
2171*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pCreateInfo->bindingCount; ++index1) {
2172*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo->pBindings[index1].pImmutableSamplers) {
2173*b7893ccfSSadaf Ebrahimi for (uint32_t index2 = 0; index2 < local_pCreateInfo->pBindings[index1].descriptorCount; ++index2) {
2174*b7893ccfSSadaf Ebrahimi local_pCreateInfo->pBindings[index1].pImmutableSamplers[index2] = layer_data->Unwrap(local_pCreateInfo->pBindings[index1].pImmutableSamplers[index2]);
2175*b7893ccfSSadaf Ebrahimi }
2176*b7893ccfSSadaf Ebrahimi }
2177*b7893ccfSSadaf Ebrahimi }
2178*b7893ccfSSadaf Ebrahimi }
2179*b7893ccfSSadaf Ebrahimi }
2180*b7893ccfSSadaf Ebrahimi }
2181*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateDescriptorSetLayout(device, (const VkDescriptorSetLayoutCreateInfo*)local_pCreateInfo, pAllocator, pSetLayout);
2182*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo) {
2183*b7893ccfSSadaf Ebrahimi delete local_pCreateInfo;
2184*b7893ccfSSadaf Ebrahimi }
2185*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
2186*b7893ccfSSadaf Ebrahimi *pSetLayout = layer_data->WrapNew(*pSetLayout);
2187*b7893ccfSSadaf Ebrahimi }
2188*b7893ccfSSadaf Ebrahimi return result;
2189*b7893ccfSSadaf Ebrahimi }
2190*b7893ccfSSadaf Ebrahimi
DispatchDestroyDescriptorSetLayout(VkDevice device,VkDescriptorSetLayout descriptorSetLayout,const VkAllocationCallbacks * pAllocator)2191*b7893ccfSSadaf Ebrahimi void DispatchDestroyDescriptorSetLayout(
2192*b7893ccfSSadaf Ebrahimi VkDevice device,
2193*b7893ccfSSadaf Ebrahimi VkDescriptorSetLayout descriptorSetLayout,
2194*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
2195*b7893ccfSSadaf Ebrahimi {
2196*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
2197*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator);
2198*b7893ccfSSadaf Ebrahimi uint64_t descriptorSetLayout_id = reinterpret_cast<uint64_t &>(descriptorSetLayout);
2199*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(descriptorSetLayout_id);
2200*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
2201*b7893ccfSSadaf Ebrahimi descriptorSetLayout = (VkDescriptorSetLayout)iter->second;
2202*b7893ccfSSadaf Ebrahimi } else {
2203*b7893ccfSSadaf Ebrahimi descriptorSetLayout = (VkDescriptorSetLayout)0;
2204*b7893ccfSSadaf Ebrahimi }
2205*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator);
2206*b7893ccfSSadaf Ebrahimi
2207*b7893ccfSSadaf Ebrahimi }
2208*b7893ccfSSadaf Ebrahimi
DispatchCreateDescriptorPool(VkDevice device,const VkDescriptorPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorPool * pDescriptorPool)2209*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateDescriptorPool(
2210*b7893ccfSSadaf Ebrahimi VkDevice device,
2211*b7893ccfSSadaf Ebrahimi const VkDescriptorPoolCreateInfo* pCreateInfo,
2212*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
2213*b7893ccfSSadaf Ebrahimi VkDescriptorPool* pDescriptorPool)
2214*b7893ccfSSadaf Ebrahimi {
2215*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
2216*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool);
2217*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool);
2218*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
2219*b7893ccfSSadaf Ebrahimi *pDescriptorPool = layer_data->WrapNew(*pDescriptorPool);
2220*b7893ccfSSadaf Ebrahimi }
2221*b7893ccfSSadaf Ebrahimi return result;
2222*b7893ccfSSadaf Ebrahimi }
2223*b7893ccfSSadaf Ebrahimi
2224*b7893ccfSSadaf Ebrahimi // Skip vkDestroyDescriptorPool dispatch, manually generated
2225*b7893ccfSSadaf Ebrahimi
2226*b7893ccfSSadaf Ebrahimi // Skip vkResetDescriptorPool dispatch, manually generated
2227*b7893ccfSSadaf Ebrahimi
2228*b7893ccfSSadaf Ebrahimi // Skip vkAllocateDescriptorSets dispatch, manually generated
2229*b7893ccfSSadaf Ebrahimi
2230*b7893ccfSSadaf Ebrahimi // Skip vkFreeDescriptorSets dispatch, manually generated
2231*b7893ccfSSadaf Ebrahimi
DispatchUpdateDescriptorSets(VkDevice device,uint32_t descriptorWriteCount,const VkWriteDescriptorSet * pDescriptorWrites,uint32_t descriptorCopyCount,const VkCopyDescriptorSet * pDescriptorCopies)2232*b7893ccfSSadaf Ebrahimi void DispatchUpdateDescriptorSets(
2233*b7893ccfSSadaf Ebrahimi VkDevice device,
2234*b7893ccfSSadaf Ebrahimi uint32_t descriptorWriteCount,
2235*b7893ccfSSadaf Ebrahimi const VkWriteDescriptorSet* pDescriptorWrites,
2236*b7893ccfSSadaf Ebrahimi uint32_t descriptorCopyCount,
2237*b7893ccfSSadaf Ebrahimi const VkCopyDescriptorSet* pDescriptorCopies)
2238*b7893ccfSSadaf Ebrahimi {
2239*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
2240*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.UpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies);
2241*b7893ccfSSadaf Ebrahimi safe_VkWriteDescriptorSet *local_pDescriptorWrites = NULL;
2242*b7893ccfSSadaf Ebrahimi safe_VkCopyDescriptorSet *local_pDescriptorCopies = NULL;
2243*b7893ccfSSadaf Ebrahimi {
2244*b7893ccfSSadaf Ebrahimi if (pDescriptorWrites) {
2245*b7893ccfSSadaf Ebrahimi local_pDescriptorWrites = new safe_VkWriteDescriptorSet[descriptorWriteCount];
2246*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < descriptorWriteCount; ++index0) {
2247*b7893ccfSSadaf Ebrahimi local_pDescriptorWrites[index0].initialize(&pDescriptorWrites[index0]);
2248*b7893ccfSSadaf Ebrahimi WrapPnextChainHandles(layer_data, local_pDescriptorWrites[index0].pNext);
2249*b7893ccfSSadaf Ebrahimi if (pDescriptorWrites[index0].dstSet) {
2250*b7893ccfSSadaf Ebrahimi local_pDescriptorWrites[index0].dstSet = layer_data->Unwrap(pDescriptorWrites[index0].dstSet);
2251*b7893ccfSSadaf Ebrahimi }
2252*b7893ccfSSadaf Ebrahimi if (local_pDescriptorWrites[index0].pImageInfo) {
2253*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pDescriptorWrites[index0].descriptorCount; ++index1) {
2254*b7893ccfSSadaf Ebrahimi if (pDescriptorWrites[index0].pImageInfo[index1].sampler) {
2255*b7893ccfSSadaf Ebrahimi local_pDescriptorWrites[index0].pImageInfo[index1].sampler = layer_data->Unwrap(pDescriptorWrites[index0].pImageInfo[index1].sampler);
2256*b7893ccfSSadaf Ebrahimi }
2257*b7893ccfSSadaf Ebrahimi if (pDescriptorWrites[index0].pImageInfo[index1].imageView) {
2258*b7893ccfSSadaf Ebrahimi local_pDescriptorWrites[index0].pImageInfo[index1].imageView = layer_data->Unwrap(pDescriptorWrites[index0].pImageInfo[index1].imageView);
2259*b7893ccfSSadaf Ebrahimi }
2260*b7893ccfSSadaf Ebrahimi }
2261*b7893ccfSSadaf Ebrahimi }
2262*b7893ccfSSadaf Ebrahimi if (local_pDescriptorWrites[index0].pBufferInfo) {
2263*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pDescriptorWrites[index0].descriptorCount; ++index1) {
2264*b7893ccfSSadaf Ebrahimi if (pDescriptorWrites[index0].pBufferInfo[index1].buffer) {
2265*b7893ccfSSadaf Ebrahimi local_pDescriptorWrites[index0].pBufferInfo[index1].buffer = layer_data->Unwrap(pDescriptorWrites[index0].pBufferInfo[index1].buffer);
2266*b7893ccfSSadaf Ebrahimi }
2267*b7893ccfSSadaf Ebrahimi }
2268*b7893ccfSSadaf Ebrahimi }
2269*b7893ccfSSadaf Ebrahimi if (local_pDescriptorWrites[index0].pTexelBufferView) {
2270*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pDescriptorWrites[index0].descriptorCount; ++index1) {
2271*b7893ccfSSadaf Ebrahimi local_pDescriptorWrites[index0].pTexelBufferView[index1] = layer_data->Unwrap(local_pDescriptorWrites[index0].pTexelBufferView[index1]);
2272*b7893ccfSSadaf Ebrahimi }
2273*b7893ccfSSadaf Ebrahimi }
2274*b7893ccfSSadaf Ebrahimi }
2275*b7893ccfSSadaf Ebrahimi }
2276*b7893ccfSSadaf Ebrahimi if (pDescriptorCopies) {
2277*b7893ccfSSadaf Ebrahimi local_pDescriptorCopies = new safe_VkCopyDescriptorSet[descriptorCopyCount];
2278*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < descriptorCopyCount; ++index0) {
2279*b7893ccfSSadaf Ebrahimi local_pDescriptorCopies[index0].initialize(&pDescriptorCopies[index0]);
2280*b7893ccfSSadaf Ebrahimi if (pDescriptorCopies[index0].srcSet) {
2281*b7893ccfSSadaf Ebrahimi local_pDescriptorCopies[index0].srcSet = layer_data->Unwrap(pDescriptorCopies[index0].srcSet);
2282*b7893ccfSSadaf Ebrahimi }
2283*b7893ccfSSadaf Ebrahimi if (pDescriptorCopies[index0].dstSet) {
2284*b7893ccfSSadaf Ebrahimi local_pDescriptorCopies[index0].dstSet = layer_data->Unwrap(pDescriptorCopies[index0].dstSet);
2285*b7893ccfSSadaf Ebrahimi }
2286*b7893ccfSSadaf Ebrahimi }
2287*b7893ccfSSadaf Ebrahimi }
2288*b7893ccfSSadaf Ebrahimi }
2289*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.UpdateDescriptorSets(device, descriptorWriteCount, (const VkWriteDescriptorSet*)local_pDescriptorWrites, descriptorCopyCount, (const VkCopyDescriptorSet*)local_pDescriptorCopies);
2290*b7893ccfSSadaf Ebrahimi if (local_pDescriptorWrites) {
2291*b7893ccfSSadaf Ebrahimi delete[] local_pDescriptorWrites;
2292*b7893ccfSSadaf Ebrahimi }
2293*b7893ccfSSadaf Ebrahimi if (local_pDescriptorCopies) {
2294*b7893ccfSSadaf Ebrahimi delete[] local_pDescriptorCopies;
2295*b7893ccfSSadaf Ebrahimi }
2296*b7893ccfSSadaf Ebrahimi }
2297*b7893ccfSSadaf Ebrahimi
DispatchCreateFramebuffer(VkDevice device,const VkFramebufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFramebuffer * pFramebuffer)2298*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateFramebuffer(
2299*b7893ccfSSadaf Ebrahimi VkDevice device,
2300*b7893ccfSSadaf Ebrahimi const VkFramebufferCreateInfo* pCreateInfo,
2301*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
2302*b7893ccfSSadaf Ebrahimi VkFramebuffer* pFramebuffer)
2303*b7893ccfSSadaf Ebrahimi {
2304*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
2305*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer);
2306*b7893ccfSSadaf Ebrahimi safe_VkFramebufferCreateInfo *local_pCreateInfo = NULL;
2307*b7893ccfSSadaf Ebrahimi {
2308*b7893ccfSSadaf Ebrahimi if (pCreateInfo) {
2309*b7893ccfSSadaf Ebrahimi local_pCreateInfo = new safe_VkFramebufferCreateInfo(pCreateInfo);
2310*b7893ccfSSadaf Ebrahimi if (pCreateInfo->renderPass) {
2311*b7893ccfSSadaf Ebrahimi local_pCreateInfo->renderPass = layer_data->Unwrap(pCreateInfo->renderPass);
2312*b7893ccfSSadaf Ebrahimi }
2313*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo->pAttachments) {
2314*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pCreateInfo->attachmentCount; ++index1) {
2315*b7893ccfSSadaf Ebrahimi local_pCreateInfo->pAttachments[index1] = layer_data->Unwrap(local_pCreateInfo->pAttachments[index1]);
2316*b7893ccfSSadaf Ebrahimi }
2317*b7893ccfSSadaf Ebrahimi }
2318*b7893ccfSSadaf Ebrahimi }
2319*b7893ccfSSadaf Ebrahimi }
2320*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateFramebuffer(device, (const VkFramebufferCreateInfo*)local_pCreateInfo, pAllocator, pFramebuffer);
2321*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo) {
2322*b7893ccfSSadaf Ebrahimi delete local_pCreateInfo;
2323*b7893ccfSSadaf Ebrahimi }
2324*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
2325*b7893ccfSSadaf Ebrahimi *pFramebuffer = layer_data->WrapNew(*pFramebuffer);
2326*b7893ccfSSadaf Ebrahimi }
2327*b7893ccfSSadaf Ebrahimi return result;
2328*b7893ccfSSadaf Ebrahimi }
2329*b7893ccfSSadaf Ebrahimi
DispatchDestroyFramebuffer(VkDevice device,VkFramebuffer framebuffer,const VkAllocationCallbacks * pAllocator)2330*b7893ccfSSadaf Ebrahimi void DispatchDestroyFramebuffer(
2331*b7893ccfSSadaf Ebrahimi VkDevice device,
2332*b7893ccfSSadaf Ebrahimi VkFramebuffer framebuffer,
2333*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
2334*b7893ccfSSadaf Ebrahimi {
2335*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
2336*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroyFramebuffer(device, framebuffer, pAllocator);
2337*b7893ccfSSadaf Ebrahimi uint64_t framebuffer_id = reinterpret_cast<uint64_t &>(framebuffer);
2338*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(framebuffer_id);
2339*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
2340*b7893ccfSSadaf Ebrahimi framebuffer = (VkFramebuffer)iter->second;
2341*b7893ccfSSadaf Ebrahimi } else {
2342*b7893ccfSSadaf Ebrahimi framebuffer = (VkFramebuffer)0;
2343*b7893ccfSSadaf Ebrahimi }
2344*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyFramebuffer(device, framebuffer, pAllocator);
2345*b7893ccfSSadaf Ebrahimi
2346*b7893ccfSSadaf Ebrahimi }
2347*b7893ccfSSadaf Ebrahimi
2348*b7893ccfSSadaf Ebrahimi // Skip vkCreateRenderPass dispatch, manually generated
2349*b7893ccfSSadaf Ebrahimi
2350*b7893ccfSSadaf Ebrahimi // Skip vkDestroyRenderPass dispatch, manually generated
2351*b7893ccfSSadaf Ebrahimi
DispatchGetRenderAreaGranularity(VkDevice device,VkRenderPass renderPass,VkExtent2D * pGranularity)2352*b7893ccfSSadaf Ebrahimi void DispatchGetRenderAreaGranularity(
2353*b7893ccfSSadaf Ebrahimi VkDevice device,
2354*b7893ccfSSadaf Ebrahimi VkRenderPass renderPass,
2355*b7893ccfSSadaf Ebrahimi VkExtent2D* pGranularity)
2356*b7893ccfSSadaf Ebrahimi {
2357*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
2358*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetRenderAreaGranularity(device, renderPass, pGranularity);
2359*b7893ccfSSadaf Ebrahimi {
2360*b7893ccfSSadaf Ebrahimi renderPass = layer_data->Unwrap(renderPass);
2361*b7893ccfSSadaf Ebrahimi }
2362*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.GetRenderAreaGranularity(device, renderPass, pGranularity);
2363*b7893ccfSSadaf Ebrahimi
2364*b7893ccfSSadaf Ebrahimi }
2365*b7893ccfSSadaf Ebrahimi
DispatchCreateCommandPool(VkDevice device,const VkCommandPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkCommandPool * pCommandPool)2366*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateCommandPool(
2367*b7893ccfSSadaf Ebrahimi VkDevice device,
2368*b7893ccfSSadaf Ebrahimi const VkCommandPoolCreateInfo* pCreateInfo,
2369*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
2370*b7893ccfSSadaf Ebrahimi VkCommandPool* pCommandPool)
2371*b7893ccfSSadaf Ebrahimi {
2372*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
2373*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool);
2374*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool);
2375*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
2376*b7893ccfSSadaf Ebrahimi *pCommandPool = layer_data->WrapNew(*pCommandPool);
2377*b7893ccfSSadaf Ebrahimi }
2378*b7893ccfSSadaf Ebrahimi return result;
2379*b7893ccfSSadaf Ebrahimi }
2380*b7893ccfSSadaf Ebrahimi
DispatchDestroyCommandPool(VkDevice device,VkCommandPool commandPool,const VkAllocationCallbacks * pAllocator)2381*b7893ccfSSadaf Ebrahimi void DispatchDestroyCommandPool(
2382*b7893ccfSSadaf Ebrahimi VkDevice device,
2383*b7893ccfSSadaf Ebrahimi VkCommandPool commandPool,
2384*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
2385*b7893ccfSSadaf Ebrahimi {
2386*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
2387*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroyCommandPool(device, commandPool, pAllocator);
2388*b7893ccfSSadaf Ebrahimi uint64_t commandPool_id = reinterpret_cast<uint64_t &>(commandPool);
2389*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(commandPool_id);
2390*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
2391*b7893ccfSSadaf Ebrahimi commandPool = (VkCommandPool)iter->second;
2392*b7893ccfSSadaf Ebrahimi } else {
2393*b7893ccfSSadaf Ebrahimi commandPool = (VkCommandPool)0;
2394*b7893ccfSSadaf Ebrahimi }
2395*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyCommandPool(device, commandPool, pAllocator);
2396*b7893ccfSSadaf Ebrahimi
2397*b7893ccfSSadaf Ebrahimi }
2398*b7893ccfSSadaf Ebrahimi
DispatchResetCommandPool(VkDevice device,VkCommandPool commandPool,VkCommandPoolResetFlags flags)2399*b7893ccfSSadaf Ebrahimi VkResult DispatchResetCommandPool(
2400*b7893ccfSSadaf Ebrahimi VkDevice device,
2401*b7893ccfSSadaf Ebrahimi VkCommandPool commandPool,
2402*b7893ccfSSadaf Ebrahimi VkCommandPoolResetFlags flags)
2403*b7893ccfSSadaf Ebrahimi {
2404*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
2405*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.ResetCommandPool(device, commandPool, flags);
2406*b7893ccfSSadaf Ebrahimi {
2407*b7893ccfSSadaf Ebrahimi commandPool = layer_data->Unwrap(commandPool);
2408*b7893ccfSSadaf Ebrahimi }
2409*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.ResetCommandPool(device, commandPool, flags);
2410*b7893ccfSSadaf Ebrahimi
2411*b7893ccfSSadaf Ebrahimi return result;
2412*b7893ccfSSadaf Ebrahimi }
2413*b7893ccfSSadaf Ebrahimi
DispatchAllocateCommandBuffers(VkDevice device,const VkCommandBufferAllocateInfo * pAllocateInfo,VkCommandBuffer * pCommandBuffers)2414*b7893ccfSSadaf Ebrahimi VkResult DispatchAllocateCommandBuffers(
2415*b7893ccfSSadaf Ebrahimi VkDevice device,
2416*b7893ccfSSadaf Ebrahimi const VkCommandBufferAllocateInfo* pAllocateInfo,
2417*b7893ccfSSadaf Ebrahimi VkCommandBuffer* pCommandBuffers)
2418*b7893ccfSSadaf Ebrahimi {
2419*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
2420*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.AllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers);
2421*b7893ccfSSadaf Ebrahimi safe_VkCommandBufferAllocateInfo *local_pAllocateInfo = NULL;
2422*b7893ccfSSadaf Ebrahimi {
2423*b7893ccfSSadaf Ebrahimi if (pAllocateInfo) {
2424*b7893ccfSSadaf Ebrahimi local_pAllocateInfo = new safe_VkCommandBufferAllocateInfo(pAllocateInfo);
2425*b7893ccfSSadaf Ebrahimi if (pAllocateInfo->commandPool) {
2426*b7893ccfSSadaf Ebrahimi local_pAllocateInfo->commandPool = layer_data->Unwrap(pAllocateInfo->commandPool);
2427*b7893ccfSSadaf Ebrahimi }
2428*b7893ccfSSadaf Ebrahimi }
2429*b7893ccfSSadaf Ebrahimi }
2430*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.AllocateCommandBuffers(device, (const VkCommandBufferAllocateInfo*)local_pAllocateInfo, pCommandBuffers);
2431*b7893ccfSSadaf Ebrahimi if (local_pAllocateInfo) {
2432*b7893ccfSSadaf Ebrahimi delete local_pAllocateInfo;
2433*b7893ccfSSadaf Ebrahimi }
2434*b7893ccfSSadaf Ebrahimi return result;
2435*b7893ccfSSadaf Ebrahimi }
2436*b7893ccfSSadaf Ebrahimi
DispatchFreeCommandBuffers(VkDevice device,VkCommandPool commandPool,uint32_t commandBufferCount,const VkCommandBuffer * pCommandBuffers)2437*b7893ccfSSadaf Ebrahimi void DispatchFreeCommandBuffers(
2438*b7893ccfSSadaf Ebrahimi VkDevice device,
2439*b7893ccfSSadaf Ebrahimi VkCommandPool commandPool,
2440*b7893ccfSSadaf Ebrahimi uint32_t commandBufferCount,
2441*b7893ccfSSadaf Ebrahimi const VkCommandBuffer* pCommandBuffers)
2442*b7893ccfSSadaf Ebrahimi {
2443*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
2444*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.FreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers);
2445*b7893ccfSSadaf Ebrahimi {
2446*b7893ccfSSadaf Ebrahimi commandPool = layer_data->Unwrap(commandPool);
2447*b7893ccfSSadaf Ebrahimi }
2448*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.FreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers);
2449*b7893ccfSSadaf Ebrahimi
2450*b7893ccfSSadaf Ebrahimi }
2451*b7893ccfSSadaf Ebrahimi
DispatchBeginCommandBuffer(VkCommandBuffer commandBuffer,const VkCommandBufferBeginInfo * pBeginInfo)2452*b7893ccfSSadaf Ebrahimi VkResult DispatchBeginCommandBuffer(
2453*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2454*b7893ccfSSadaf Ebrahimi const VkCommandBufferBeginInfo* pBeginInfo)
2455*b7893ccfSSadaf Ebrahimi {
2456*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2457*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.BeginCommandBuffer(commandBuffer, pBeginInfo);
2458*b7893ccfSSadaf Ebrahimi safe_VkCommandBufferBeginInfo *local_pBeginInfo = NULL;
2459*b7893ccfSSadaf Ebrahimi {
2460*b7893ccfSSadaf Ebrahimi if (pBeginInfo) {
2461*b7893ccfSSadaf Ebrahimi local_pBeginInfo = new safe_VkCommandBufferBeginInfo(pBeginInfo);
2462*b7893ccfSSadaf Ebrahimi if (local_pBeginInfo->pInheritanceInfo) {
2463*b7893ccfSSadaf Ebrahimi if (pBeginInfo->pInheritanceInfo->renderPass) {
2464*b7893ccfSSadaf Ebrahimi local_pBeginInfo->pInheritanceInfo->renderPass = layer_data->Unwrap(pBeginInfo->pInheritanceInfo->renderPass);
2465*b7893ccfSSadaf Ebrahimi }
2466*b7893ccfSSadaf Ebrahimi if (pBeginInfo->pInheritanceInfo->framebuffer) {
2467*b7893ccfSSadaf Ebrahimi local_pBeginInfo->pInheritanceInfo->framebuffer = layer_data->Unwrap(pBeginInfo->pInheritanceInfo->framebuffer);
2468*b7893ccfSSadaf Ebrahimi }
2469*b7893ccfSSadaf Ebrahimi }
2470*b7893ccfSSadaf Ebrahimi }
2471*b7893ccfSSadaf Ebrahimi }
2472*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.BeginCommandBuffer(commandBuffer, (const VkCommandBufferBeginInfo*)local_pBeginInfo);
2473*b7893ccfSSadaf Ebrahimi if (local_pBeginInfo) {
2474*b7893ccfSSadaf Ebrahimi delete local_pBeginInfo;
2475*b7893ccfSSadaf Ebrahimi }
2476*b7893ccfSSadaf Ebrahimi return result;
2477*b7893ccfSSadaf Ebrahimi }
2478*b7893ccfSSadaf Ebrahimi
DispatchEndCommandBuffer(VkCommandBuffer commandBuffer)2479*b7893ccfSSadaf Ebrahimi VkResult DispatchEndCommandBuffer(
2480*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer)
2481*b7893ccfSSadaf Ebrahimi {
2482*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2483*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.EndCommandBuffer(commandBuffer);
2484*b7893ccfSSadaf Ebrahimi
2485*b7893ccfSSadaf Ebrahimi return result;
2486*b7893ccfSSadaf Ebrahimi }
2487*b7893ccfSSadaf Ebrahimi
DispatchResetCommandBuffer(VkCommandBuffer commandBuffer,VkCommandBufferResetFlags flags)2488*b7893ccfSSadaf Ebrahimi VkResult DispatchResetCommandBuffer(
2489*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2490*b7893ccfSSadaf Ebrahimi VkCommandBufferResetFlags flags)
2491*b7893ccfSSadaf Ebrahimi {
2492*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2493*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.ResetCommandBuffer(commandBuffer, flags);
2494*b7893ccfSSadaf Ebrahimi
2495*b7893ccfSSadaf Ebrahimi return result;
2496*b7893ccfSSadaf Ebrahimi }
2497*b7893ccfSSadaf Ebrahimi
DispatchCmdBindPipeline(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipeline pipeline)2498*b7893ccfSSadaf Ebrahimi void DispatchCmdBindPipeline(
2499*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2500*b7893ccfSSadaf Ebrahimi VkPipelineBindPoint pipelineBindPoint,
2501*b7893ccfSSadaf Ebrahimi VkPipeline pipeline)
2502*b7893ccfSSadaf Ebrahimi {
2503*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2504*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline);
2505*b7893ccfSSadaf Ebrahimi {
2506*b7893ccfSSadaf Ebrahimi pipeline = layer_data->Unwrap(pipeline);
2507*b7893ccfSSadaf Ebrahimi }
2508*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline);
2509*b7893ccfSSadaf Ebrahimi
2510*b7893ccfSSadaf Ebrahimi }
2511*b7893ccfSSadaf Ebrahimi
DispatchCmdSetViewport(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewport * pViewports)2512*b7893ccfSSadaf Ebrahimi void DispatchCmdSetViewport(
2513*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2514*b7893ccfSSadaf Ebrahimi uint32_t firstViewport,
2515*b7893ccfSSadaf Ebrahimi uint32_t viewportCount,
2516*b7893ccfSSadaf Ebrahimi const VkViewport* pViewports)
2517*b7893ccfSSadaf Ebrahimi {
2518*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2519*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports);
2520*b7893ccfSSadaf Ebrahimi
2521*b7893ccfSSadaf Ebrahimi }
2522*b7893ccfSSadaf Ebrahimi
DispatchCmdSetScissor(VkCommandBuffer commandBuffer,uint32_t firstScissor,uint32_t scissorCount,const VkRect2D * pScissors)2523*b7893ccfSSadaf Ebrahimi void DispatchCmdSetScissor(
2524*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2525*b7893ccfSSadaf Ebrahimi uint32_t firstScissor,
2526*b7893ccfSSadaf Ebrahimi uint32_t scissorCount,
2527*b7893ccfSSadaf Ebrahimi const VkRect2D* pScissors)
2528*b7893ccfSSadaf Ebrahimi {
2529*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2530*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors);
2531*b7893ccfSSadaf Ebrahimi
2532*b7893ccfSSadaf Ebrahimi }
2533*b7893ccfSSadaf Ebrahimi
DispatchCmdSetLineWidth(VkCommandBuffer commandBuffer,float lineWidth)2534*b7893ccfSSadaf Ebrahimi void DispatchCmdSetLineWidth(
2535*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2536*b7893ccfSSadaf Ebrahimi float lineWidth)
2537*b7893ccfSSadaf Ebrahimi {
2538*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2539*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdSetLineWidth(commandBuffer, lineWidth);
2540*b7893ccfSSadaf Ebrahimi
2541*b7893ccfSSadaf Ebrahimi }
2542*b7893ccfSSadaf Ebrahimi
DispatchCmdSetDepthBias(VkCommandBuffer commandBuffer,float depthBiasConstantFactor,float depthBiasClamp,float depthBiasSlopeFactor)2543*b7893ccfSSadaf Ebrahimi void DispatchCmdSetDepthBias(
2544*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2545*b7893ccfSSadaf Ebrahimi float depthBiasConstantFactor,
2546*b7893ccfSSadaf Ebrahimi float depthBiasClamp,
2547*b7893ccfSSadaf Ebrahimi float depthBiasSlopeFactor)
2548*b7893ccfSSadaf Ebrahimi {
2549*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2550*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor);
2551*b7893ccfSSadaf Ebrahimi
2552*b7893ccfSSadaf Ebrahimi }
2553*b7893ccfSSadaf Ebrahimi
DispatchCmdSetBlendConstants(VkCommandBuffer commandBuffer,const float blendConstants[4])2554*b7893ccfSSadaf Ebrahimi void DispatchCmdSetBlendConstants(
2555*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2556*b7893ccfSSadaf Ebrahimi const float blendConstants[4])
2557*b7893ccfSSadaf Ebrahimi {
2558*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2559*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdSetBlendConstants(commandBuffer, blendConstants);
2560*b7893ccfSSadaf Ebrahimi
2561*b7893ccfSSadaf Ebrahimi }
2562*b7893ccfSSadaf Ebrahimi
DispatchCmdSetDepthBounds(VkCommandBuffer commandBuffer,float minDepthBounds,float maxDepthBounds)2563*b7893ccfSSadaf Ebrahimi void DispatchCmdSetDepthBounds(
2564*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2565*b7893ccfSSadaf Ebrahimi float minDepthBounds,
2566*b7893ccfSSadaf Ebrahimi float maxDepthBounds)
2567*b7893ccfSSadaf Ebrahimi {
2568*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2569*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds);
2570*b7893ccfSSadaf Ebrahimi
2571*b7893ccfSSadaf Ebrahimi }
2572*b7893ccfSSadaf Ebrahimi
DispatchCmdSetStencilCompareMask(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t compareMask)2573*b7893ccfSSadaf Ebrahimi void DispatchCmdSetStencilCompareMask(
2574*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2575*b7893ccfSSadaf Ebrahimi VkStencilFaceFlags faceMask,
2576*b7893ccfSSadaf Ebrahimi uint32_t compareMask)
2577*b7893ccfSSadaf Ebrahimi {
2578*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2579*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdSetStencilCompareMask(commandBuffer, faceMask, compareMask);
2580*b7893ccfSSadaf Ebrahimi
2581*b7893ccfSSadaf Ebrahimi }
2582*b7893ccfSSadaf Ebrahimi
DispatchCmdSetStencilWriteMask(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t writeMask)2583*b7893ccfSSadaf Ebrahimi void DispatchCmdSetStencilWriteMask(
2584*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2585*b7893ccfSSadaf Ebrahimi VkStencilFaceFlags faceMask,
2586*b7893ccfSSadaf Ebrahimi uint32_t writeMask)
2587*b7893ccfSSadaf Ebrahimi {
2588*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2589*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdSetStencilWriteMask(commandBuffer, faceMask, writeMask);
2590*b7893ccfSSadaf Ebrahimi
2591*b7893ccfSSadaf Ebrahimi }
2592*b7893ccfSSadaf Ebrahimi
DispatchCmdSetStencilReference(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t reference)2593*b7893ccfSSadaf Ebrahimi void DispatchCmdSetStencilReference(
2594*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2595*b7893ccfSSadaf Ebrahimi VkStencilFaceFlags faceMask,
2596*b7893ccfSSadaf Ebrahimi uint32_t reference)
2597*b7893ccfSSadaf Ebrahimi {
2598*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2599*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdSetStencilReference(commandBuffer, faceMask, reference);
2600*b7893ccfSSadaf Ebrahimi
2601*b7893ccfSSadaf Ebrahimi }
2602*b7893ccfSSadaf Ebrahimi
DispatchCmdBindDescriptorSets(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t firstSet,uint32_t descriptorSetCount,const VkDescriptorSet * pDescriptorSets,uint32_t dynamicOffsetCount,const uint32_t * pDynamicOffsets)2603*b7893ccfSSadaf Ebrahimi void DispatchCmdBindDescriptorSets(
2604*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2605*b7893ccfSSadaf Ebrahimi VkPipelineBindPoint pipelineBindPoint,
2606*b7893ccfSSadaf Ebrahimi VkPipelineLayout layout,
2607*b7893ccfSSadaf Ebrahimi uint32_t firstSet,
2608*b7893ccfSSadaf Ebrahimi uint32_t descriptorSetCount,
2609*b7893ccfSSadaf Ebrahimi const VkDescriptorSet* pDescriptorSets,
2610*b7893ccfSSadaf Ebrahimi uint32_t dynamicOffsetCount,
2611*b7893ccfSSadaf Ebrahimi const uint32_t* pDynamicOffsets)
2612*b7893ccfSSadaf Ebrahimi {
2613*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2614*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
2615*b7893ccfSSadaf Ebrahimi VkDescriptorSet *local_pDescriptorSets = NULL;
2616*b7893ccfSSadaf Ebrahimi {
2617*b7893ccfSSadaf Ebrahimi layout = layer_data->Unwrap(layout);
2618*b7893ccfSSadaf Ebrahimi if (pDescriptorSets) {
2619*b7893ccfSSadaf Ebrahimi local_pDescriptorSets = new VkDescriptorSet[descriptorSetCount];
2620*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < descriptorSetCount; ++index0) {
2621*b7893ccfSSadaf Ebrahimi local_pDescriptorSets[index0] = layer_data->Unwrap(pDescriptorSets[index0]);
2622*b7893ccfSSadaf Ebrahimi }
2623*b7893ccfSSadaf Ebrahimi }
2624*b7893ccfSSadaf Ebrahimi }
2625*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, (const VkDescriptorSet*)local_pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
2626*b7893ccfSSadaf Ebrahimi if (local_pDescriptorSets)
2627*b7893ccfSSadaf Ebrahimi delete[] local_pDescriptorSets;
2628*b7893ccfSSadaf Ebrahimi }
2629*b7893ccfSSadaf Ebrahimi
DispatchCmdBindIndexBuffer(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkIndexType indexType)2630*b7893ccfSSadaf Ebrahimi void DispatchCmdBindIndexBuffer(
2631*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2632*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
2633*b7893ccfSSadaf Ebrahimi VkDeviceSize offset,
2634*b7893ccfSSadaf Ebrahimi VkIndexType indexType)
2635*b7893ccfSSadaf Ebrahimi {
2636*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2637*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdBindIndexBuffer(commandBuffer, buffer, offset, indexType);
2638*b7893ccfSSadaf Ebrahimi {
2639*b7893ccfSSadaf Ebrahimi buffer = layer_data->Unwrap(buffer);
2640*b7893ccfSSadaf Ebrahimi }
2641*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdBindIndexBuffer(commandBuffer, buffer, offset, indexType);
2642*b7893ccfSSadaf Ebrahimi
2643*b7893ccfSSadaf Ebrahimi }
2644*b7893ccfSSadaf Ebrahimi
DispatchCmdBindVertexBuffers(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets)2645*b7893ccfSSadaf Ebrahimi void DispatchCmdBindVertexBuffers(
2646*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2647*b7893ccfSSadaf Ebrahimi uint32_t firstBinding,
2648*b7893ccfSSadaf Ebrahimi uint32_t bindingCount,
2649*b7893ccfSSadaf Ebrahimi const VkBuffer* pBuffers,
2650*b7893ccfSSadaf Ebrahimi const VkDeviceSize* pOffsets)
2651*b7893ccfSSadaf Ebrahimi {
2652*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2653*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets);
2654*b7893ccfSSadaf Ebrahimi VkBuffer *local_pBuffers = NULL;
2655*b7893ccfSSadaf Ebrahimi {
2656*b7893ccfSSadaf Ebrahimi if (pBuffers) {
2657*b7893ccfSSadaf Ebrahimi local_pBuffers = new VkBuffer[bindingCount];
2658*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < bindingCount; ++index0) {
2659*b7893ccfSSadaf Ebrahimi local_pBuffers[index0] = layer_data->Unwrap(pBuffers[index0]);
2660*b7893ccfSSadaf Ebrahimi }
2661*b7893ccfSSadaf Ebrahimi }
2662*b7893ccfSSadaf Ebrahimi }
2663*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, (const VkBuffer*)local_pBuffers, pOffsets);
2664*b7893ccfSSadaf Ebrahimi if (local_pBuffers)
2665*b7893ccfSSadaf Ebrahimi delete[] local_pBuffers;
2666*b7893ccfSSadaf Ebrahimi }
2667*b7893ccfSSadaf Ebrahimi
DispatchCmdDraw(VkCommandBuffer commandBuffer,uint32_t vertexCount,uint32_t instanceCount,uint32_t firstVertex,uint32_t firstInstance)2668*b7893ccfSSadaf Ebrahimi void DispatchCmdDraw(
2669*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2670*b7893ccfSSadaf Ebrahimi uint32_t vertexCount,
2671*b7893ccfSSadaf Ebrahimi uint32_t instanceCount,
2672*b7893ccfSSadaf Ebrahimi uint32_t firstVertex,
2673*b7893ccfSSadaf Ebrahimi uint32_t firstInstance)
2674*b7893ccfSSadaf Ebrahimi {
2675*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2676*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance);
2677*b7893ccfSSadaf Ebrahimi
2678*b7893ccfSSadaf Ebrahimi }
2679*b7893ccfSSadaf Ebrahimi
DispatchCmdDrawIndexed(VkCommandBuffer commandBuffer,uint32_t indexCount,uint32_t instanceCount,uint32_t firstIndex,int32_t vertexOffset,uint32_t firstInstance)2680*b7893ccfSSadaf Ebrahimi void DispatchCmdDrawIndexed(
2681*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2682*b7893ccfSSadaf Ebrahimi uint32_t indexCount,
2683*b7893ccfSSadaf Ebrahimi uint32_t instanceCount,
2684*b7893ccfSSadaf Ebrahimi uint32_t firstIndex,
2685*b7893ccfSSadaf Ebrahimi int32_t vertexOffset,
2686*b7893ccfSSadaf Ebrahimi uint32_t firstInstance)
2687*b7893ccfSSadaf Ebrahimi {
2688*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2689*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
2690*b7893ccfSSadaf Ebrahimi
2691*b7893ccfSSadaf Ebrahimi }
2692*b7893ccfSSadaf Ebrahimi
DispatchCmdDrawIndirect(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)2693*b7893ccfSSadaf Ebrahimi void DispatchCmdDrawIndirect(
2694*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2695*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
2696*b7893ccfSSadaf Ebrahimi VkDeviceSize offset,
2697*b7893ccfSSadaf Ebrahimi uint32_t drawCount,
2698*b7893ccfSSadaf Ebrahimi uint32_t stride)
2699*b7893ccfSSadaf Ebrahimi {
2700*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2701*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride);
2702*b7893ccfSSadaf Ebrahimi {
2703*b7893ccfSSadaf Ebrahimi buffer = layer_data->Unwrap(buffer);
2704*b7893ccfSSadaf Ebrahimi }
2705*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride);
2706*b7893ccfSSadaf Ebrahimi
2707*b7893ccfSSadaf Ebrahimi }
2708*b7893ccfSSadaf Ebrahimi
DispatchCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)2709*b7893ccfSSadaf Ebrahimi void DispatchCmdDrawIndexedIndirect(
2710*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2711*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
2712*b7893ccfSSadaf Ebrahimi VkDeviceSize offset,
2713*b7893ccfSSadaf Ebrahimi uint32_t drawCount,
2714*b7893ccfSSadaf Ebrahimi uint32_t stride)
2715*b7893ccfSSadaf Ebrahimi {
2716*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2717*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride);
2718*b7893ccfSSadaf Ebrahimi {
2719*b7893ccfSSadaf Ebrahimi buffer = layer_data->Unwrap(buffer);
2720*b7893ccfSSadaf Ebrahimi }
2721*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride);
2722*b7893ccfSSadaf Ebrahimi
2723*b7893ccfSSadaf Ebrahimi }
2724*b7893ccfSSadaf Ebrahimi
DispatchCmdDispatch(VkCommandBuffer commandBuffer,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)2725*b7893ccfSSadaf Ebrahimi void DispatchCmdDispatch(
2726*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2727*b7893ccfSSadaf Ebrahimi uint32_t groupCountX,
2728*b7893ccfSSadaf Ebrahimi uint32_t groupCountY,
2729*b7893ccfSSadaf Ebrahimi uint32_t groupCountZ)
2730*b7893ccfSSadaf Ebrahimi {
2731*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2732*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ);
2733*b7893ccfSSadaf Ebrahimi
2734*b7893ccfSSadaf Ebrahimi }
2735*b7893ccfSSadaf Ebrahimi
DispatchCmdDispatchIndirect(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset)2736*b7893ccfSSadaf Ebrahimi void DispatchCmdDispatchIndirect(
2737*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2738*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
2739*b7893ccfSSadaf Ebrahimi VkDeviceSize offset)
2740*b7893ccfSSadaf Ebrahimi {
2741*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2742*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdDispatchIndirect(commandBuffer, buffer, offset);
2743*b7893ccfSSadaf Ebrahimi {
2744*b7893ccfSSadaf Ebrahimi buffer = layer_data->Unwrap(buffer);
2745*b7893ccfSSadaf Ebrahimi }
2746*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdDispatchIndirect(commandBuffer, buffer, offset);
2747*b7893ccfSSadaf Ebrahimi
2748*b7893ccfSSadaf Ebrahimi }
2749*b7893ccfSSadaf Ebrahimi
DispatchCmdCopyBuffer(VkCommandBuffer commandBuffer,VkBuffer srcBuffer,VkBuffer dstBuffer,uint32_t regionCount,const VkBufferCopy * pRegions)2750*b7893ccfSSadaf Ebrahimi void DispatchCmdCopyBuffer(
2751*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2752*b7893ccfSSadaf Ebrahimi VkBuffer srcBuffer,
2753*b7893ccfSSadaf Ebrahimi VkBuffer dstBuffer,
2754*b7893ccfSSadaf Ebrahimi uint32_t regionCount,
2755*b7893ccfSSadaf Ebrahimi const VkBufferCopy* pRegions)
2756*b7893ccfSSadaf Ebrahimi {
2757*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2758*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions);
2759*b7893ccfSSadaf Ebrahimi {
2760*b7893ccfSSadaf Ebrahimi srcBuffer = layer_data->Unwrap(srcBuffer);
2761*b7893ccfSSadaf Ebrahimi dstBuffer = layer_data->Unwrap(dstBuffer);
2762*b7893ccfSSadaf Ebrahimi }
2763*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions);
2764*b7893ccfSSadaf Ebrahimi
2765*b7893ccfSSadaf Ebrahimi }
2766*b7893ccfSSadaf Ebrahimi
DispatchCmdCopyImage(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageCopy * pRegions)2767*b7893ccfSSadaf Ebrahimi void DispatchCmdCopyImage(
2768*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2769*b7893ccfSSadaf Ebrahimi VkImage srcImage,
2770*b7893ccfSSadaf Ebrahimi VkImageLayout srcImageLayout,
2771*b7893ccfSSadaf Ebrahimi VkImage dstImage,
2772*b7893ccfSSadaf Ebrahimi VkImageLayout dstImageLayout,
2773*b7893ccfSSadaf Ebrahimi uint32_t regionCount,
2774*b7893ccfSSadaf Ebrahimi const VkImageCopy* pRegions)
2775*b7893ccfSSadaf Ebrahimi {
2776*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2777*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
2778*b7893ccfSSadaf Ebrahimi {
2779*b7893ccfSSadaf Ebrahimi srcImage = layer_data->Unwrap(srcImage);
2780*b7893ccfSSadaf Ebrahimi dstImage = layer_data->Unwrap(dstImage);
2781*b7893ccfSSadaf Ebrahimi }
2782*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
2783*b7893ccfSSadaf Ebrahimi
2784*b7893ccfSSadaf Ebrahimi }
2785*b7893ccfSSadaf Ebrahimi
DispatchCmdBlitImage(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageBlit * pRegions,VkFilter filter)2786*b7893ccfSSadaf Ebrahimi void DispatchCmdBlitImage(
2787*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2788*b7893ccfSSadaf Ebrahimi VkImage srcImage,
2789*b7893ccfSSadaf Ebrahimi VkImageLayout srcImageLayout,
2790*b7893ccfSSadaf Ebrahimi VkImage dstImage,
2791*b7893ccfSSadaf Ebrahimi VkImageLayout dstImageLayout,
2792*b7893ccfSSadaf Ebrahimi uint32_t regionCount,
2793*b7893ccfSSadaf Ebrahimi const VkImageBlit* pRegions,
2794*b7893ccfSSadaf Ebrahimi VkFilter filter)
2795*b7893ccfSSadaf Ebrahimi {
2796*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2797*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter);
2798*b7893ccfSSadaf Ebrahimi {
2799*b7893ccfSSadaf Ebrahimi srcImage = layer_data->Unwrap(srcImage);
2800*b7893ccfSSadaf Ebrahimi dstImage = layer_data->Unwrap(dstImage);
2801*b7893ccfSSadaf Ebrahimi }
2802*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter);
2803*b7893ccfSSadaf Ebrahimi
2804*b7893ccfSSadaf Ebrahimi }
2805*b7893ccfSSadaf Ebrahimi
DispatchCmdCopyBufferToImage(VkCommandBuffer commandBuffer,VkBuffer srcBuffer,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkBufferImageCopy * pRegions)2806*b7893ccfSSadaf Ebrahimi void DispatchCmdCopyBufferToImage(
2807*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2808*b7893ccfSSadaf Ebrahimi VkBuffer srcBuffer,
2809*b7893ccfSSadaf Ebrahimi VkImage dstImage,
2810*b7893ccfSSadaf Ebrahimi VkImageLayout dstImageLayout,
2811*b7893ccfSSadaf Ebrahimi uint32_t regionCount,
2812*b7893ccfSSadaf Ebrahimi const VkBufferImageCopy* pRegions)
2813*b7893ccfSSadaf Ebrahimi {
2814*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2815*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions);
2816*b7893ccfSSadaf Ebrahimi {
2817*b7893ccfSSadaf Ebrahimi srcBuffer = layer_data->Unwrap(srcBuffer);
2818*b7893ccfSSadaf Ebrahimi dstImage = layer_data->Unwrap(dstImage);
2819*b7893ccfSSadaf Ebrahimi }
2820*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions);
2821*b7893ccfSSadaf Ebrahimi
2822*b7893ccfSSadaf Ebrahimi }
2823*b7893ccfSSadaf Ebrahimi
DispatchCmdCopyImageToBuffer(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkBuffer dstBuffer,uint32_t regionCount,const VkBufferImageCopy * pRegions)2824*b7893ccfSSadaf Ebrahimi void DispatchCmdCopyImageToBuffer(
2825*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2826*b7893ccfSSadaf Ebrahimi VkImage srcImage,
2827*b7893ccfSSadaf Ebrahimi VkImageLayout srcImageLayout,
2828*b7893ccfSSadaf Ebrahimi VkBuffer dstBuffer,
2829*b7893ccfSSadaf Ebrahimi uint32_t regionCount,
2830*b7893ccfSSadaf Ebrahimi const VkBufferImageCopy* pRegions)
2831*b7893ccfSSadaf Ebrahimi {
2832*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2833*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions);
2834*b7893ccfSSadaf Ebrahimi {
2835*b7893ccfSSadaf Ebrahimi srcImage = layer_data->Unwrap(srcImage);
2836*b7893ccfSSadaf Ebrahimi dstBuffer = layer_data->Unwrap(dstBuffer);
2837*b7893ccfSSadaf Ebrahimi }
2838*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions);
2839*b7893ccfSSadaf Ebrahimi
2840*b7893ccfSSadaf Ebrahimi }
2841*b7893ccfSSadaf Ebrahimi
DispatchCmdUpdateBuffer(VkCommandBuffer commandBuffer,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize dataSize,const void * pData)2842*b7893ccfSSadaf Ebrahimi void DispatchCmdUpdateBuffer(
2843*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2844*b7893ccfSSadaf Ebrahimi VkBuffer dstBuffer,
2845*b7893ccfSSadaf Ebrahimi VkDeviceSize dstOffset,
2846*b7893ccfSSadaf Ebrahimi VkDeviceSize dataSize,
2847*b7893ccfSSadaf Ebrahimi const void* pData)
2848*b7893ccfSSadaf Ebrahimi {
2849*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2850*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData);
2851*b7893ccfSSadaf Ebrahimi {
2852*b7893ccfSSadaf Ebrahimi dstBuffer = layer_data->Unwrap(dstBuffer);
2853*b7893ccfSSadaf Ebrahimi }
2854*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData);
2855*b7893ccfSSadaf Ebrahimi
2856*b7893ccfSSadaf Ebrahimi }
2857*b7893ccfSSadaf Ebrahimi
DispatchCmdFillBuffer(VkCommandBuffer commandBuffer,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize size,uint32_t data)2858*b7893ccfSSadaf Ebrahimi void DispatchCmdFillBuffer(
2859*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2860*b7893ccfSSadaf Ebrahimi VkBuffer dstBuffer,
2861*b7893ccfSSadaf Ebrahimi VkDeviceSize dstOffset,
2862*b7893ccfSSadaf Ebrahimi VkDeviceSize size,
2863*b7893ccfSSadaf Ebrahimi uint32_t data)
2864*b7893ccfSSadaf Ebrahimi {
2865*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2866*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data);
2867*b7893ccfSSadaf Ebrahimi {
2868*b7893ccfSSadaf Ebrahimi dstBuffer = layer_data->Unwrap(dstBuffer);
2869*b7893ccfSSadaf Ebrahimi }
2870*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data);
2871*b7893ccfSSadaf Ebrahimi
2872*b7893ccfSSadaf Ebrahimi }
2873*b7893ccfSSadaf Ebrahimi
DispatchCmdClearColorImage(VkCommandBuffer commandBuffer,VkImage image,VkImageLayout imageLayout,const VkClearColorValue * pColor,uint32_t rangeCount,const VkImageSubresourceRange * pRanges)2874*b7893ccfSSadaf Ebrahimi void DispatchCmdClearColorImage(
2875*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2876*b7893ccfSSadaf Ebrahimi VkImage image,
2877*b7893ccfSSadaf Ebrahimi VkImageLayout imageLayout,
2878*b7893ccfSSadaf Ebrahimi const VkClearColorValue* pColor,
2879*b7893ccfSSadaf Ebrahimi uint32_t rangeCount,
2880*b7893ccfSSadaf Ebrahimi const VkImageSubresourceRange* pRanges)
2881*b7893ccfSSadaf Ebrahimi {
2882*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2883*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges);
2884*b7893ccfSSadaf Ebrahimi {
2885*b7893ccfSSadaf Ebrahimi image = layer_data->Unwrap(image);
2886*b7893ccfSSadaf Ebrahimi }
2887*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges);
2888*b7893ccfSSadaf Ebrahimi
2889*b7893ccfSSadaf Ebrahimi }
2890*b7893ccfSSadaf Ebrahimi
DispatchCmdClearDepthStencilImage(VkCommandBuffer commandBuffer,VkImage image,VkImageLayout imageLayout,const VkClearDepthStencilValue * pDepthStencil,uint32_t rangeCount,const VkImageSubresourceRange * pRanges)2891*b7893ccfSSadaf Ebrahimi void DispatchCmdClearDepthStencilImage(
2892*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2893*b7893ccfSSadaf Ebrahimi VkImage image,
2894*b7893ccfSSadaf Ebrahimi VkImageLayout imageLayout,
2895*b7893ccfSSadaf Ebrahimi const VkClearDepthStencilValue* pDepthStencil,
2896*b7893ccfSSadaf Ebrahimi uint32_t rangeCount,
2897*b7893ccfSSadaf Ebrahimi const VkImageSubresourceRange* pRanges)
2898*b7893ccfSSadaf Ebrahimi {
2899*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2900*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges);
2901*b7893ccfSSadaf Ebrahimi {
2902*b7893ccfSSadaf Ebrahimi image = layer_data->Unwrap(image);
2903*b7893ccfSSadaf Ebrahimi }
2904*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges);
2905*b7893ccfSSadaf Ebrahimi
2906*b7893ccfSSadaf Ebrahimi }
2907*b7893ccfSSadaf Ebrahimi
DispatchCmdClearAttachments(VkCommandBuffer commandBuffer,uint32_t attachmentCount,const VkClearAttachment * pAttachments,uint32_t rectCount,const VkClearRect * pRects)2908*b7893ccfSSadaf Ebrahimi void DispatchCmdClearAttachments(
2909*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2910*b7893ccfSSadaf Ebrahimi uint32_t attachmentCount,
2911*b7893ccfSSadaf Ebrahimi const VkClearAttachment* pAttachments,
2912*b7893ccfSSadaf Ebrahimi uint32_t rectCount,
2913*b7893ccfSSadaf Ebrahimi const VkClearRect* pRects)
2914*b7893ccfSSadaf Ebrahimi {
2915*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2916*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects);
2917*b7893ccfSSadaf Ebrahimi
2918*b7893ccfSSadaf Ebrahimi }
2919*b7893ccfSSadaf Ebrahimi
DispatchCmdResolveImage(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageResolve * pRegions)2920*b7893ccfSSadaf Ebrahimi void DispatchCmdResolveImage(
2921*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2922*b7893ccfSSadaf Ebrahimi VkImage srcImage,
2923*b7893ccfSSadaf Ebrahimi VkImageLayout srcImageLayout,
2924*b7893ccfSSadaf Ebrahimi VkImage dstImage,
2925*b7893ccfSSadaf Ebrahimi VkImageLayout dstImageLayout,
2926*b7893ccfSSadaf Ebrahimi uint32_t regionCount,
2927*b7893ccfSSadaf Ebrahimi const VkImageResolve* pRegions)
2928*b7893ccfSSadaf Ebrahimi {
2929*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2930*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
2931*b7893ccfSSadaf Ebrahimi {
2932*b7893ccfSSadaf Ebrahimi srcImage = layer_data->Unwrap(srcImage);
2933*b7893ccfSSadaf Ebrahimi dstImage = layer_data->Unwrap(dstImage);
2934*b7893ccfSSadaf Ebrahimi }
2935*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions);
2936*b7893ccfSSadaf Ebrahimi
2937*b7893ccfSSadaf Ebrahimi }
2938*b7893ccfSSadaf Ebrahimi
DispatchCmdSetEvent(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags stageMask)2939*b7893ccfSSadaf Ebrahimi void DispatchCmdSetEvent(
2940*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2941*b7893ccfSSadaf Ebrahimi VkEvent event,
2942*b7893ccfSSadaf Ebrahimi VkPipelineStageFlags stageMask)
2943*b7893ccfSSadaf Ebrahimi {
2944*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2945*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdSetEvent(commandBuffer, event, stageMask);
2946*b7893ccfSSadaf Ebrahimi {
2947*b7893ccfSSadaf Ebrahimi event = layer_data->Unwrap(event);
2948*b7893ccfSSadaf Ebrahimi }
2949*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdSetEvent(commandBuffer, event, stageMask);
2950*b7893ccfSSadaf Ebrahimi
2951*b7893ccfSSadaf Ebrahimi }
2952*b7893ccfSSadaf Ebrahimi
DispatchCmdResetEvent(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags stageMask)2953*b7893ccfSSadaf Ebrahimi void DispatchCmdResetEvent(
2954*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2955*b7893ccfSSadaf Ebrahimi VkEvent event,
2956*b7893ccfSSadaf Ebrahimi VkPipelineStageFlags stageMask)
2957*b7893ccfSSadaf Ebrahimi {
2958*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2959*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdResetEvent(commandBuffer, event, stageMask);
2960*b7893ccfSSadaf Ebrahimi {
2961*b7893ccfSSadaf Ebrahimi event = layer_data->Unwrap(event);
2962*b7893ccfSSadaf Ebrahimi }
2963*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdResetEvent(commandBuffer, event, stageMask);
2964*b7893ccfSSadaf Ebrahimi
2965*b7893ccfSSadaf Ebrahimi }
2966*b7893ccfSSadaf Ebrahimi
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)2967*b7893ccfSSadaf Ebrahimi void DispatchCmdWaitEvents(
2968*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
2969*b7893ccfSSadaf Ebrahimi uint32_t eventCount,
2970*b7893ccfSSadaf Ebrahimi const VkEvent* pEvents,
2971*b7893ccfSSadaf Ebrahimi VkPipelineStageFlags srcStageMask,
2972*b7893ccfSSadaf Ebrahimi VkPipelineStageFlags dstStageMask,
2973*b7893ccfSSadaf Ebrahimi uint32_t memoryBarrierCount,
2974*b7893ccfSSadaf Ebrahimi const VkMemoryBarrier* pMemoryBarriers,
2975*b7893ccfSSadaf Ebrahimi uint32_t bufferMemoryBarrierCount,
2976*b7893ccfSSadaf Ebrahimi const VkBufferMemoryBarrier* pBufferMemoryBarriers,
2977*b7893ccfSSadaf Ebrahimi uint32_t imageMemoryBarrierCount,
2978*b7893ccfSSadaf Ebrahimi const VkImageMemoryBarrier* pImageMemoryBarriers)
2979*b7893ccfSSadaf Ebrahimi {
2980*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
2981*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
2982*b7893ccfSSadaf Ebrahimi VkEvent *local_pEvents = NULL;
2983*b7893ccfSSadaf Ebrahimi safe_VkBufferMemoryBarrier *local_pBufferMemoryBarriers = NULL;
2984*b7893ccfSSadaf Ebrahimi safe_VkImageMemoryBarrier *local_pImageMemoryBarriers = NULL;
2985*b7893ccfSSadaf Ebrahimi {
2986*b7893ccfSSadaf Ebrahimi if (pEvents) {
2987*b7893ccfSSadaf Ebrahimi local_pEvents = new VkEvent[eventCount];
2988*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < eventCount; ++index0) {
2989*b7893ccfSSadaf Ebrahimi local_pEvents[index0] = layer_data->Unwrap(pEvents[index0]);
2990*b7893ccfSSadaf Ebrahimi }
2991*b7893ccfSSadaf Ebrahimi }
2992*b7893ccfSSadaf Ebrahimi if (pBufferMemoryBarriers) {
2993*b7893ccfSSadaf Ebrahimi local_pBufferMemoryBarriers = new safe_VkBufferMemoryBarrier[bufferMemoryBarrierCount];
2994*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < bufferMemoryBarrierCount; ++index0) {
2995*b7893ccfSSadaf Ebrahimi local_pBufferMemoryBarriers[index0].initialize(&pBufferMemoryBarriers[index0]);
2996*b7893ccfSSadaf Ebrahimi if (pBufferMemoryBarriers[index0].buffer) {
2997*b7893ccfSSadaf Ebrahimi local_pBufferMemoryBarriers[index0].buffer = layer_data->Unwrap(pBufferMemoryBarriers[index0].buffer);
2998*b7893ccfSSadaf Ebrahimi }
2999*b7893ccfSSadaf Ebrahimi }
3000*b7893ccfSSadaf Ebrahimi }
3001*b7893ccfSSadaf Ebrahimi if (pImageMemoryBarriers) {
3002*b7893ccfSSadaf Ebrahimi local_pImageMemoryBarriers = new safe_VkImageMemoryBarrier[imageMemoryBarrierCount];
3003*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < imageMemoryBarrierCount; ++index0) {
3004*b7893ccfSSadaf Ebrahimi local_pImageMemoryBarriers[index0].initialize(&pImageMemoryBarriers[index0]);
3005*b7893ccfSSadaf Ebrahimi if (pImageMemoryBarriers[index0].image) {
3006*b7893ccfSSadaf Ebrahimi local_pImageMemoryBarriers[index0].image = layer_data->Unwrap(pImageMemoryBarriers[index0].image);
3007*b7893ccfSSadaf Ebrahimi }
3008*b7893ccfSSadaf Ebrahimi }
3009*b7893ccfSSadaf Ebrahimi }
3010*b7893ccfSSadaf Ebrahimi }
3011*b7893ccfSSadaf Ebrahimi 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);
3012*b7893ccfSSadaf Ebrahimi if (local_pEvents)
3013*b7893ccfSSadaf Ebrahimi delete[] local_pEvents;
3014*b7893ccfSSadaf Ebrahimi if (local_pBufferMemoryBarriers) {
3015*b7893ccfSSadaf Ebrahimi delete[] local_pBufferMemoryBarriers;
3016*b7893ccfSSadaf Ebrahimi }
3017*b7893ccfSSadaf Ebrahimi if (local_pImageMemoryBarriers) {
3018*b7893ccfSSadaf Ebrahimi delete[] local_pImageMemoryBarriers;
3019*b7893ccfSSadaf Ebrahimi }
3020*b7893ccfSSadaf Ebrahimi }
3021*b7893ccfSSadaf Ebrahimi
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)3022*b7893ccfSSadaf Ebrahimi void DispatchCmdPipelineBarrier(
3023*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
3024*b7893ccfSSadaf Ebrahimi VkPipelineStageFlags srcStageMask,
3025*b7893ccfSSadaf Ebrahimi VkPipelineStageFlags dstStageMask,
3026*b7893ccfSSadaf Ebrahimi VkDependencyFlags dependencyFlags,
3027*b7893ccfSSadaf Ebrahimi uint32_t memoryBarrierCount,
3028*b7893ccfSSadaf Ebrahimi const VkMemoryBarrier* pMemoryBarriers,
3029*b7893ccfSSadaf Ebrahimi uint32_t bufferMemoryBarrierCount,
3030*b7893ccfSSadaf Ebrahimi const VkBufferMemoryBarrier* pBufferMemoryBarriers,
3031*b7893ccfSSadaf Ebrahimi uint32_t imageMemoryBarrierCount,
3032*b7893ccfSSadaf Ebrahimi const VkImageMemoryBarrier* pImageMemoryBarriers)
3033*b7893ccfSSadaf Ebrahimi {
3034*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
3035*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers);
3036*b7893ccfSSadaf Ebrahimi safe_VkBufferMemoryBarrier *local_pBufferMemoryBarriers = NULL;
3037*b7893ccfSSadaf Ebrahimi safe_VkImageMemoryBarrier *local_pImageMemoryBarriers = NULL;
3038*b7893ccfSSadaf Ebrahimi {
3039*b7893ccfSSadaf Ebrahimi if (pBufferMemoryBarriers) {
3040*b7893ccfSSadaf Ebrahimi local_pBufferMemoryBarriers = new safe_VkBufferMemoryBarrier[bufferMemoryBarrierCount];
3041*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < bufferMemoryBarrierCount; ++index0) {
3042*b7893ccfSSadaf Ebrahimi local_pBufferMemoryBarriers[index0].initialize(&pBufferMemoryBarriers[index0]);
3043*b7893ccfSSadaf Ebrahimi if (pBufferMemoryBarriers[index0].buffer) {
3044*b7893ccfSSadaf Ebrahimi local_pBufferMemoryBarriers[index0].buffer = layer_data->Unwrap(pBufferMemoryBarriers[index0].buffer);
3045*b7893ccfSSadaf Ebrahimi }
3046*b7893ccfSSadaf Ebrahimi }
3047*b7893ccfSSadaf Ebrahimi }
3048*b7893ccfSSadaf Ebrahimi if (pImageMemoryBarriers) {
3049*b7893ccfSSadaf Ebrahimi local_pImageMemoryBarriers = new safe_VkImageMemoryBarrier[imageMemoryBarrierCount];
3050*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < imageMemoryBarrierCount; ++index0) {
3051*b7893ccfSSadaf Ebrahimi local_pImageMemoryBarriers[index0].initialize(&pImageMemoryBarriers[index0]);
3052*b7893ccfSSadaf Ebrahimi if (pImageMemoryBarriers[index0].image) {
3053*b7893ccfSSadaf Ebrahimi local_pImageMemoryBarriers[index0].image = layer_data->Unwrap(pImageMemoryBarriers[index0].image);
3054*b7893ccfSSadaf Ebrahimi }
3055*b7893ccfSSadaf Ebrahimi }
3056*b7893ccfSSadaf Ebrahimi }
3057*b7893ccfSSadaf Ebrahimi }
3058*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, (const VkBufferMemoryBarrier*)local_pBufferMemoryBarriers, imageMemoryBarrierCount, (const VkImageMemoryBarrier*)local_pImageMemoryBarriers);
3059*b7893ccfSSadaf Ebrahimi if (local_pBufferMemoryBarriers) {
3060*b7893ccfSSadaf Ebrahimi delete[] local_pBufferMemoryBarriers;
3061*b7893ccfSSadaf Ebrahimi }
3062*b7893ccfSSadaf Ebrahimi if (local_pImageMemoryBarriers) {
3063*b7893ccfSSadaf Ebrahimi delete[] local_pImageMemoryBarriers;
3064*b7893ccfSSadaf Ebrahimi }
3065*b7893ccfSSadaf Ebrahimi }
3066*b7893ccfSSadaf Ebrahimi
DispatchCmdBeginQuery(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,VkQueryControlFlags flags)3067*b7893ccfSSadaf Ebrahimi void DispatchCmdBeginQuery(
3068*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
3069*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
3070*b7893ccfSSadaf Ebrahimi uint32_t query,
3071*b7893ccfSSadaf Ebrahimi VkQueryControlFlags flags)
3072*b7893ccfSSadaf Ebrahimi {
3073*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
3074*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdBeginQuery(commandBuffer, queryPool, query, flags);
3075*b7893ccfSSadaf Ebrahimi {
3076*b7893ccfSSadaf Ebrahimi queryPool = layer_data->Unwrap(queryPool);
3077*b7893ccfSSadaf Ebrahimi }
3078*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdBeginQuery(commandBuffer, queryPool, query, flags);
3079*b7893ccfSSadaf Ebrahimi
3080*b7893ccfSSadaf Ebrahimi }
3081*b7893ccfSSadaf Ebrahimi
DispatchCmdEndQuery(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query)3082*b7893ccfSSadaf Ebrahimi void DispatchCmdEndQuery(
3083*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
3084*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
3085*b7893ccfSSadaf Ebrahimi uint32_t query)
3086*b7893ccfSSadaf Ebrahimi {
3087*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
3088*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdEndQuery(commandBuffer, queryPool, query);
3089*b7893ccfSSadaf Ebrahimi {
3090*b7893ccfSSadaf Ebrahimi queryPool = layer_data->Unwrap(queryPool);
3091*b7893ccfSSadaf Ebrahimi }
3092*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdEndQuery(commandBuffer, queryPool, query);
3093*b7893ccfSSadaf Ebrahimi
3094*b7893ccfSSadaf Ebrahimi }
3095*b7893ccfSSadaf Ebrahimi
DispatchCmdResetQueryPool(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)3096*b7893ccfSSadaf Ebrahimi void DispatchCmdResetQueryPool(
3097*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
3098*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
3099*b7893ccfSSadaf Ebrahimi uint32_t firstQuery,
3100*b7893ccfSSadaf Ebrahimi uint32_t queryCount)
3101*b7893ccfSSadaf Ebrahimi {
3102*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
3103*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount);
3104*b7893ccfSSadaf Ebrahimi {
3105*b7893ccfSSadaf Ebrahimi queryPool = layer_data->Unwrap(queryPool);
3106*b7893ccfSSadaf Ebrahimi }
3107*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount);
3108*b7893ccfSSadaf Ebrahimi
3109*b7893ccfSSadaf Ebrahimi }
3110*b7893ccfSSadaf Ebrahimi
DispatchCmdWriteTimestamp(VkCommandBuffer commandBuffer,VkPipelineStageFlagBits pipelineStage,VkQueryPool queryPool,uint32_t query)3111*b7893ccfSSadaf Ebrahimi void DispatchCmdWriteTimestamp(
3112*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
3113*b7893ccfSSadaf Ebrahimi VkPipelineStageFlagBits pipelineStage,
3114*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
3115*b7893ccfSSadaf Ebrahimi uint32_t query)
3116*b7893ccfSSadaf Ebrahimi {
3117*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
3118*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query);
3119*b7893ccfSSadaf Ebrahimi {
3120*b7893ccfSSadaf Ebrahimi queryPool = layer_data->Unwrap(queryPool);
3121*b7893ccfSSadaf Ebrahimi }
3122*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query);
3123*b7893ccfSSadaf Ebrahimi
3124*b7893ccfSSadaf Ebrahimi }
3125*b7893ccfSSadaf Ebrahimi
DispatchCmdCopyQueryPoolResults(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize stride,VkQueryResultFlags flags)3126*b7893ccfSSadaf Ebrahimi void DispatchCmdCopyQueryPoolResults(
3127*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
3128*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
3129*b7893ccfSSadaf Ebrahimi uint32_t firstQuery,
3130*b7893ccfSSadaf Ebrahimi uint32_t queryCount,
3131*b7893ccfSSadaf Ebrahimi VkBuffer dstBuffer,
3132*b7893ccfSSadaf Ebrahimi VkDeviceSize dstOffset,
3133*b7893ccfSSadaf Ebrahimi VkDeviceSize stride,
3134*b7893ccfSSadaf Ebrahimi VkQueryResultFlags flags)
3135*b7893ccfSSadaf Ebrahimi {
3136*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
3137*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags);
3138*b7893ccfSSadaf Ebrahimi {
3139*b7893ccfSSadaf Ebrahimi queryPool = layer_data->Unwrap(queryPool);
3140*b7893ccfSSadaf Ebrahimi dstBuffer = layer_data->Unwrap(dstBuffer);
3141*b7893ccfSSadaf Ebrahimi }
3142*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags);
3143*b7893ccfSSadaf Ebrahimi
3144*b7893ccfSSadaf Ebrahimi }
3145*b7893ccfSSadaf Ebrahimi
DispatchCmdPushConstants(VkCommandBuffer commandBuffer,VkPipelineLayout layout,VkShaderStageFlags stageFlags,uint32_t offset,uint32_t size,const void * pValues)3146*b7893ccfSSadaf Ebrahimi void DispatchCmdPushConstants(
3147*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
3148*b7893ccfSSadaf Ebrahimi VkPipelineLayout layout,
3149*b7893ccfSSadaf Ebrahimi VkShaderStageFlags stageFlags,
3150*b7893ccfSSadaf Ebrahimi uint32_t offset,
3151*b7893ccfSSadaf Ebrahimi uint32_t size,
3152*b7893ccfSSadaf Ebrahimi const void* pValues)
3153*b7893ccfSSadaf Ebrahimi {
3154*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
3155*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues);
3156*b7893ccfSSadaf Ebrahimi {
3157*b7893ccfSSadaf Ebrahimi layout = layer_data->Unwrap(layout);
3158*b7893ccfSSadaf Ebrahimi }
3159*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues);
3160*b7893ccfSSadaf Ebrahimi
3161*b7893ccfSSadaf Ebrahimi }
3162*b7893ccfSSadaf Ebrahimi
DispatchCmdBeginRenderPass(VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,VkSubpassContents contents)3163*b7893ccfSSadaf Ebrahimi void DispatchCmdBeginRenderPass(
3164*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
3165*b7893ccfSSadaf Ebrahimi const VkRenderPassBeginInfo* pRenderPassBegin,
3166*b7893ccfSSadaf Ebrahimi VkSubpassContents contents)
3167*b7893ccfSSadaf Ebrahimi {
3168*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
3169*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents);
3170*b7893ccfSSadaf Ebrahimi safe_VkRenderPassBeginInfo *local_pRenderPassBegin = NULL;
3171*b7893ccfSSadaf Ebrahimi {
3172*b7893ccfSSadaf Ebrahimi if (pRenderPassBegin) {
3173*b7893ccfSSadaf Ebrahimi local_pRenderPassBegin = new safe_VkRenderPassBeginInfo(pRenderPassBegin);
3174*b7893ccfSSadaf Ebrahimi if (pRenderPassBegin->renderPass) {
3175*b7893ccfSSadaf Ebrahimi local_pRenderPassBegin->renderPass = layer_data->Unwrap(pRenderPassBegin->renderPass);
3176*b7893ccfSSadaf Ebrahimi }
3177*b7893ccfSSadaf Ebrahimi if (pRenderPassBegin->framebuffer) {
3178*b7893ccfSSadaf Ebrahimi local_pRenderPassBegin->framebuffer = layer_data->Unwrap(pRenderPassBegin->framebuffer);
3179*b7893ccfSSadaf Ebrahimi }
3180*b7893ccfSSadaf Ebrahimi WrapPnextChainHandles(layer_data, local_pRenderPassBegin->pNext);
3181*b7893ccfSSadaf Ebrahimi }
3182*b7893ccfSSadaf Ebrahimi }
3183*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdBeginRenderPass(commandBuffer, (const VkRenderPassBeginInfo*)local_pRenderPassBegin, contents);
3184*b7893ccfSSadaf Ebrahimi if (local_pRenderPassBegin) {
3185*b7893ccfSSadaf Ebrahimi delete local_pRenderPassBegin;
3186*b7893ccfSSadaf Ebrahimi }
3187*b7893ccfSSadaf Ebrahimi }
3188*b7893ccfSSadaf Ebrahimi
DispatchCmdNextSubpass(VkCommandBuffer commandBuffer,VkSubpassContents contents)3189*b7893ccfSSadaf Ebrahimi void DispatchCmdNextSubpass(
3190*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
3191*b7893ccfSSadaf Ebrahimi VkSubpassContents contents)
3192*b7893ccfSSadaf Ebrahimi {
3193*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
3194*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdNextSubpass(commandBuffer, contents);
3195*b7893ccfSSadaf Ebrahimi
3196*b7893ccfSSadaf Ebrahimi }
3197*b7893ccfSSadaf Ebrahimi
DispatchCmdEndRenderPass(VkCommandBuffer commandBuffer)3198*b7893ccfSSadaf Ebrahimi void DispatchCmdEndRenderPass(
3199*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer)
3200*b7893ccfSSadaf Ebrahimi {
3201*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
3202*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdEndRenderPass(commandBuffer);
3203*b7893ccfSSadaf Ebrahimi
3204*b7893ccfSSadaf Ebrahimi }
3205*b7893ccfSSadaf Ebrahimi
DispatchCmdExecuteCommands(VkCommandBuffer commandBuffer,uint32_t commandBufferCount,const VkCommandBuffer * pCommandBuffers)3206*b7893ccfSSadaf Ebrahimi void DispatchCmdExecuteCommands(
3207*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
3208*b7893ccfSSadaf Ebrahimi uint32_t commandBufferCount,
3209*b7893ccfSSadaf Ebrahimi const VkCommandBuffer* pCommandBuffers)
3210*b7893ccfSSadaf Ebrahimi {
3211*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
3212*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers);
3213*b7893ccfSSadaf Ebrahimi
3214*b7893ccfSSadaf Ebrahimi }
3215*b7893ccfSSadaf Ebrahimi
3216*b7893ccfSSadaf Ebrahimi // Skip vkEnumerateInstanceVersion dispatch, manually generated
3217*b7893ccfSSadaf Ebrahimi
DispatchBindBufferMemory2(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)3218*b7893ccfSSadaf Ebrahimi VkResult DispatchBindBufferMemory2(
3219*b7893ccfSSadaf Ebrahimi VkDevice device,
3220*b7893ccfSSadaf Ebrahimi uint32_t bindInfoCount,
3221*b7893ccfSSadaf Ebrahimi const VkBindBufferMemoryInfo* pBindInfos)
3222*b7893ccfSSadaf Ebrahimi {
3223*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
3224*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.BindBufferMemory2(device, bindInfoCount, pBindInfos);
3225*b7893ccfSSadaf Ebrahimi safe_VkBindBufferMemoryInfo *local_pBindInfos = NULL;
3226*b7893ccfSSadaf Ebrahimi {
3227*b7893ccfSSadaf Ebrahimi if (pBindInfos) {
3228*b7893ccfSSadaf Ebrahimi local_pBindInfos = new safe_VkBindBufferMemoryInfo[bindInfoCount];
3229*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < bindInfoCount; ++index0) {
3230*b7893ccfSSadaf Ebrahimi local_pBindInfos[index0].initialize(&pBindInfos[index0]);
3231*b7893ccfSSadaf Ebrahimi if (pBindInfos[index0].buffer) {
3232*b7893ccfSSadaf Ebrahimi local_pBindInfos[index0].buffer = layer_data->Unwrap(pBindInfos[index0].buffer);
3233*b7893ccfSSadaf Ebrahimi }
3234*b7893ccfSSadaf Ebrahimi if (pBindInfos[index0].memory) {
3235*b7893ccfSSadaf Ebrahimi local_pBindInfos[index0].memory = layer_data->Unwrap(pBindInfos[index0].memory);
3236*b7893ccfSSadaf Ebrahimi }
3237*b7893ccfSSadaf Ebrahimi }
3238*b7893ccfSSadaf Ebrahimi }
3239*b7893ccfSSadaf Ebrahimi }
3240*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.BindBufferMemory2(device, bindInfoCount, (const VkBindBufferMemoryInfo*)local_pBindInfos);
3241*b7893ccfSSadaf Ebrahimi if (local_pBindInfos) {
3242*b7893ccfSSadaf Ebrahimi delete[] local_pBindInfos;
3243*b7893ccfSSadaf Ebrahimi }
3244*b7893ccfSSadaf Ebrahimi return result;
3245*b7893ccfSSadaf Ebrahimi }
3246*b7893ccfSSadaf Ebrahimi
DispatchBindImageMemory2(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)3247*b7893ccfSSadaf Ebrahimi VkResult DispatchBindImageMemory2(
3248*b7893ccfSSadaf Ebrahimi VkDevice device,
3249*b7893ccfSSadaf Ebrahimi uint32_t bindInfoCount,
3250*b7893ccfSSadaf Ebrahimi const VkBindImageMemoryInfo* pBindInfos)
3251*b7893ccfSSadaf Ebrahimi {
3252*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
3253*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.BindImageMemory2(device, bindInfoCount, pBindInfos);
3254*b7893ccfSSadaf Ebrahimi safe_VkBindImageMemoryInfo *local_pBindInfos = NULL;
3255*b7893ccfSSadaf Ebrahimi {
3256*b7893ccfSSadaf Ebrahimi if (pBindInfos) {
3257*b7893ccfSSadaf Ebrahimi local_pBindInfos = new safe_VkBindImageMemoryInfo[bindInfoCount];
3258*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < bindInfoCount; ++index0) {
3259*b7893ccfSSadaf Ebrahimi local_pBindInfos[index0].initialize(&pBindInfos[index0]);
3260*b7893ccfSSadaf Ebrahimi WrapPnextChainHandles(layer_data, local_pBindInfos[index0].pNext);
3261*b7893ccfSSadaf Ebrahimi if (pBindInfos[index0].image) {
3262*b7893ccfSSadaf Ebrahimi local_pBindInfos[index0].image = layer_data->Unwrap(pBindInfos[index0].image);
3263*b7893ccfSSadaf Ebrahimi }
3264*b7893ccfSSadaf Ebrahimi if (pBindInfos[index0].memory) {
3265*b7893ccfSSadaf Ebrahimi local_pBindInfos[index0].memory = layer_data->Unwrap(pBindInfos[index0].memory);
3266*b7893ccfSSadaf Ebrahimi }
3267*b7893ccfSSadaf Ebrahimi }
3268*b7893ccfSSadaf Ebrahimi }
3269*b7893ccfSSadaf Ebrahimi }
3270*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.BindImageMemory2(device, bindInfoCount, (const VkBindImageMemoryInfo*)local_pBindInfos);
3271*b7893ccfSSadaf Ebrahimi if (local_pBindInfos) {
3272*b7893ccfSSadaf Ebrahimi delete[] local_pBindInfos;
3273*b7893ccfSSadaf Ebrahimi }
3274*b7893ccfSSadaf Ebrahimi return result;
3275*b7893ccfSSadaf Ebrahimi }
3276*b7893ccfSSadaf Ebrahimi
DispatchGetDeviceGroupPeerMemoryFeatures(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)3277*b7893ccfSSadaf Ebrahimi void DispatchGetDeviceGroupPeerMemoryFeatures(
3278*b7893ccfSSadaf Ebrahimi VkDevice device,
3279*b7893ccfSSadaf Ebrahimi uint32_t heapIndex,
3280*b7893ccfSSadaf Ebrahimi uint32_t localDeviceIndex,
3281*b7893ccfSSadaf Ebrahimi uint32_t remoteDeviceIndex,
3282*b7893ccfSSadaf Ebrahimi VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
3283*b7893ccfSSadaf Ebrahimi {
3284*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
3285*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.GetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
3286*b7893ccfSSadaf Ebrahimi
3287*b7893ccfSSadaf Ebrahimi }
3288*b7893ccfSSadaf Ebrahimi
DispatchCmdSetDeviceMask(VkCommandBuffer commandBuffer,uint32_t deviceMask)3289*b7893ccfSSadaf Ebrahimi void DispatchCmdSetDeviceMask(
3290*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
3291*b7893ccfSSadaf Ebrahimi uint32_t deviceMask)
3292*b7893ccfSSadaf Ebrahimi {
3293*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
3294*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdSetDeviceMask(commandBuffer, deviceMask);
3295*b7893ccfSSadaf Ebrahimi
3296*b7893ccfSSadaf Ebrahimi }
3297*b7893ccfSSadaf Ebrahimi
DispatchCmdDispatchBase(VkCommandBuffer commandBuffer,uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)3298*b7893ccfSSadaf Ebrahimi void DispatchCmdDispatchBase(
3299*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
3300*b7893ccfSSadaf Ebrahimi uint32_t baseGroupX,
3301*b7893ccfSSadaf Ebrahimi uint32_t baseGroupY,
3302*b7893ccfSSadaf Ebrahimi uint32_t baseGroupZ,
3303*b7893ccfSSadaf Ebrahimi uint32_t groupCountX,
3304*b7893ccfSSadaf Ebrahimi uint32_t groupCountY,
3305*b7893ccfSSadaf Ebrahimi uint32_t groupCountZ)
3306*b7893ccfSSadaf Ebrahimi {
3307*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
3308*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
3309*b7893ccfSSadaf Ebrahimi
3310*b7893ccfSSadaf Ebrahimi }
3311*b7893ccfSSadaf Ebrahimi
DispatchEnumeratePhysicalDeviceGroups(VkInstance instance,uint32_t * pPhysicalDeviceGroupCount,VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties)3312*b7893ccfSSadaf Ebrahimi VkResult DispatchEnumeratePhysicalDeviceGroups(
3313*b7893ccfSSadaf Ebrahimi VkInstance instance,
3314*b7893ccfSSadaf Ebrahimi uint32_t* pPhysicalDeviceGroupCount,
3315*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
3316*b7893ccfSSadaf Ebrahimi {
3317*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
3318*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.EnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
3319*b7893ccfSSadaf Ebrahimi
3320*b7893ccfSSadaf Ebrahimi return result;
3321*b7893ccfSSadaf Ebrahimi }
3322*b7893ccfSSadaf Ebrahimi
DispatchGetImageMemoryRequirements2(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3323*b7893ccfSSadaf Ebrahimi void DispatchGetImageMemoryRequirements2(
3324*b7893ccfSSadaf Ebrahimi VkDevice device,
3325*b7893ccfSSadaf Ebrahimi const VkImageMemoryRequirementsInfo2* pInfo,
3326*b7893ccfSSadaf Ebrahimi VkMemoryRequirements2* pMemoryRequirements)
3327*b7893ccfSSadaf Ebrahimi {
3328*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
3329*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetImageMemoryRequirements2(device, pInfo, pMemoryRequirements);
3330*b7893ccfSSadaf Ebrahimi safe_VkImageMemoryRequirementsInfo2 *local_pInfo = NULL;
3331*b7893ccfSSadaf Ebrahimi {
3332*b7893ccfSSadaf Ebrahimi if (pInfo) {
3333*b7893ccfSSadaf Ebrahimi local_pInfo = new safe_VkImageMemoryRequirementsInfo2(pInfo);
3334*b7893ccfSSadaf Ebrahimi if (pInfo->image) {
3335*b7893ccfSSadaf Ebrahimi local_pInfo->image = layer_data->Unwrap(pInfo->image);
3336*b7893ccfSSadaf Ebrahimi }
3337*b7893ccfSSadaf Ebrahimi }
3338*b7893ccfSSadaf Ebrahimi }
3339*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.GetImageMemoryRequirements2(device, (const VkImageMemoryRequirementsInfo2*)local_pInfo, pMemoryRequirements);
3340*b7893ccfSSadaf Ebrahimi if (local_pInfo) {
3341*b7893ccfSSadaf Ebrahimi delete local_pInfo;
3342*b7893ccfSSadaf Ebrahimi }
3343*b7893ccfSSadaf Ebrahimi }
3344*b7893ccfSSadaf Ebrahimi
DispatchGetBufferMemoryRequirements2(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3345*b7893ccfSSadaf Ebrahimi void DispatchGetBufferMemoryRequirements2(
3346*b7893ccfSSadaf Ebrahimi VkDevice device,
3347*b7893ccfSSadaf Ebrahimi const VkBufferMemoryRequirementsInfo2* pInfo,
3348*b7893ccfSSadaf Ebrahimi VkMemoryRequirements2* pMemoryRequirements)
3349*b7893ccfSSadaf Ebrahimi {
3350*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
3351*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements);
3352*b7893ccfSSadaf Ebrahimi safe_VkBufferMemoryRequirementsInfo2 *local_pInfo = NULL;
3353*b7893ccfSSadaf Ebrahimi {
3354*b7893ccfSSadaf Ebrahimi if (pInfo) {
3355*b7893ccfSSadaf Ebrahimi local_pInfo = new safe_VkBufferMemoryRequirementsInfo2(pInfo);
3356*b7893ccfSSadaf Ebrahimi if (pInfo->buffer) {
3357*b7893ccfSSadaf Ebrahimi local_pInfo->buffer = layer_data->Unwrap(pInfo->buffer);
3358*b7893ccfSSadaf Ebrahimi }
3359*b7893ccfSSadaf Ebrahimi }
3360*b7893ccfSSadaf Ebrahimi }
3361*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.GetBufferMemoryRequirements2(device, (const VkBufferMemoryRequirementsInfo2*)local_pInfo, pMemoryRequirements);
3362*b7893ccfSSadaf Ebrahimi if (local_pInfo) {
3363*b7893ccfSSadaf Ebrahimi delete local_pInfo;
3364*b7893ccfSSadaf Ebrahimi }
3365*b7893ccfSSadaf Ebrahimi }
3366*b7893ccfSSadaf Ebrahimi
DispatchGetImageSparseMemoryRequirements2(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)3367*b7893ccfSSadaf Ebrahimi void DispatchGetImageSparseMemoryRequirements2(
3368*b7893ccfSSadaf Ebrahimi VkDevice device,
3369*b7893ccfSSadaf Ebrahimi const VkImageSparseMemoryRequirementsInfo2* pInfo,
3370*b7893ccfSSadaf Ebrahimi uint32_t* pSparseMemoryRequirementCount,
3371*b7893ccfSSadaf Ebrahimi VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
3372*b7893ccfSSadaf Ebrahimi {
3373*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
3374*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
3375*b7893ccfSSadaf Ebrahimi safe_VkImageSparseMemoryRequirementsInfo2 *local_pInfo = NULL;
3376*b7893ccfSSadaf Ebrahimi {
3377*b7893ccfSSadaf Ebrahimi if (pInfo) {
3378*b7893ccfSSadaf Ebrahimi local_pInfo = new safe_VkImageSparseMemoryRequirementsInfo2(pInfo);
3379*b7893ccfSSadaf Ebrahimi if (pInfo->image) {
3380*b7893ccfSSadaf Ebrahimi local_pInfo->image = layer_data->Unwrap(pInfo->image);
3381*b7893ccfSSadaf Ebrahimi }
3382*b7893ccfSSadaf Ebrahimi }
3383*b7893ccfSSadaf Ebrahimi }
3384*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.GetImageSparseMemoryRequirements2(device, (const VkImageSparseMemoryRequirementsInfo2*)local_pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
3385*b7893ccfSSadaf Ebrahimi if (local_pInfo) {
3386*b7893ccfSSadaf Ebrahimi delete local_pInfo;
3387*b7893ccfSSadaf Ebrahimi }
3388*b7893ccfSSadaf Ebrahimi }
3389*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures2 * pFeatures)3390*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceFeatures2(
3391*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
3392*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceFeatures2* pFeatures)
3393*b7893ccfSSadaf Ebrahimi {
3394*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
3395*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceFeatures2(physicalDevice, pFeatures);
3396*b7893ccfSSadaf Ebrahimi
3397*b7893ccfSSadaf Ebrahimi }
3398*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties2 * pProperties)3399*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceProperties2(
3400*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
3401*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceProperties2* pProperties)
3402*b7893ccfSSadaf Ebrahimi {
3403*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
3404*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceProperties2(physicalDevice, pProperties);
3405*b7893ccfSSadaf Ebrahimi
3406*b7893ccfSSadaf Ebrahimi }
3407*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceFormatProperties2(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties2 * pFormatProperties)3408*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceFormatProperties2(
3409*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
3410*b7893ccfSSadaf Ebrahimi VkFormat format,
3411*b7893ccfSSadaf Ebrahimi VkFormatProperties2* pFormatProperties)
3412*b7893ccfSSadaf Ebrahimi {
3413*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
3414*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties);
3415*b7893ccfSSadaf Ebrahimi
3416*b7893ccfSSadaf Ebrahimi }
3417*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceImageFormatProperties2(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo,VkImageFormatProperties2 * pImageFormatProperties)3418*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPhysicalDeviceImageFormatProperties2(
3419*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
3420*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
3421*b7893ccfSSadaf Ebrahimi VkImageFormatProperties2* pImageFormatProperties)
3422*b7893ccfSSadaf Ebrahimi {
3423*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
3424*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.GetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties);
3425*b7893ccfSSadaf Ebrahimi safe_VkPhysicalDeviceImageFormatInfo2 *local_pImageFormatInfo = NULL;
3426*b7893ccfSSadaf Ebrahimi {
3427*b7893ccfSSadaf Ebrahimi if (pImageFormatInfo) {
3428*b7893ccfSSadaf Ebrahimi local_pImageFormatInfo = new safe_VkPhysicalDeviceImageFormatInfo2(pImageFormatInfo);
3429*b7893ccfSSadaf Ebrahimi WrapPnextChainHandles(layer_data, local_pImageFormatInfo->pNext);
3430*b7893ccfSSadaf Ebrahimi }
3431*b7893ccfSSadaf Ebrahimi }
3432*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceImageFormatProperties2(physicalDevice, (const VkPhysicalDeviceImageFormatInfo2*)local_pImageFormatInfo, pImageFormatProperties);
3433*b7893ccfSSadaf Ebrahimi if (local_pImageFormatInfo) {
3434*b7893ccfSSadaf Ebrahimi delete local_pImageFormatInfo;
3435*b7893ccfSSadaf Ebrahimi }
3436*b7893ccfSSadaf Ebrahimi return result;
3437*b7893ccfSSadaf Ebrahimi }
3438*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceQueueFamilyProperties2(VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties2 * pQueueFamilyProperties)3439*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceQueueFamilyProperties2(
3440*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
3441*b7893ccfSSadaf Ebrahimi uint32_t* pQueueFamilyPropertyCount,
3442*b7893ccfSSadaf Ebrahimi VkQueueFamilyProperties2* pQueueFamilyProperties)
3443*b7893ccfSSadaf Ebrahimi {
3444*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
3445*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
3446*b7893ccfSSadaf Ebrahimi
3447*b7893ccfSSadaf Ebrahimi }
3448*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceMemoryProperties2(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties2 * pMemoryProperties)3449*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceMemoryProperties2(
3450*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
3451*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
3452*b7893ccfSSadaf Ebrahimi {
3453*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
3454*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties);
3455*b7893ccfSSadaf Ebrahimi
3456*b7893ccfSSadaf Ebrahimi }
3457*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceSparseImageFormatProperties2(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo,uint32_t * pPropertyCount,VkSparseImageFormatProperties2 * pProperties)3458*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceSparseImageFormatProperties2(
3459*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
3460*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
3461*b7893ccfSSadaf Ebrahimi uint32_t* pPropertyCount,
3462*b7893ccfSSadaf Ebrahimi VkSparseImageFormatProperties2* pProperties)
3463*b7893ccfSSadaf Ebrahimi {
3464*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
3465*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties);
3466*b7893ccfSSadaf Ebrahimi
3467*b7893ccfSSadaf Ebrahimi }
3468*b7893ccfSSadaf Ebrahimi
DispatchTrimCommandPool(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)3469*b7893ccfSSadaf Ebrahimi void DispatchTrimCommandPool(
3470*b7893ccfSSadaf Ebrahimi VkDevice device,
3471*b7893ccfSSadaf Ebrahimi VkCommandPool commandPool,
3472*b7893ccfSSadaf Ebrahimi VkCommandPoolTrimFlags flags)
3473*b7893ccfSSadaf Ebrahimi {
3474*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
3475*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.TrimCommandPool(device, commandPool, flags);
3476*b7893ccfSSadaf Ebrahimi {
3477*b7893ccfSSadaf Ebrahimi commandPool = layer_data->Unwrap(commandPool);
3478*b7893ccfSSadaf Ebrahimi }
3479*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.TrimCommandPool(device, commandPool, flags);
3480*b7893ccfSSadaf Ebrahimi
3481*b7893ccfSSadaf Ebrahimi }
3482*b7893ccfSSadaf Ebrahimi
DispatchGetDeviceQueue2(VkDevice device,const VkDeviceQueueInfo2 * pQueueInfo,VkQueue * pQueue)3483*b7893ccfSSadaf Ebrahimi void DispatchGetDeviceQueue2(
3484*b7893ccfSSadaf Ebrahimi VkDevice device,
3485*b7893ccfSSadaf Ebrahimi const VkDeviceQueueInfo2* pQueueInfo,
3486*b7893ccfSSadaf Ebrahimi VkQueue* pQueue)
3487*b7893ccfSSadaf Ebrahimi {
3488*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
3489*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.GetDeviceQueue2(device, pQueueInfo, pQueue);
3490*b7893ccfSSadaf Ebrahimi
3491*b7893ccfSSadaf Ebrahimi }
3492*b7893ccfSSadaf Ebrahimi
DispatchCreateSamplerYcbcrConversion(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)3493*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateSamplerYcbcrConversion(
3494*b7893ccfSSadaf Ebrahimi VkDevice device,
3495*b7893ccfSSadaf Ebrahimi const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3496*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
3497*b7893ccfSSadaf Ebrahimi VkSamplerYcbcrConversion* pYcbcrConversion)
3498*b7893ccfSSadaf Ebrahimi {
3499*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
3500*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion);
3501*b7893ccfSSadaf Ebrahimi safe_VkSamplerYcbcrConversionCreateInfo *local_pCreateInfo = NULL;
3502*b7893ccfSSadaf Ebrahimi {
3503*b7893ccfSSadaf Ebrahimi if (pCreateInfo) {
3504*b7893ccfSSadaf Ebrahimi local_pCreateInfo = new safe_VkSamplerYcbcrConversionCreateInfo(pCreateInfo);
3505*b7893ccfSSadaf Ebrahimi WrapPnextChainHandles(layer_data, local_pCreateInfo->pNext);
3506*b7893ccfSSadaf Ebrahimi }
3507*b7893ccfSSadaf Ebrahimi }
3508*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateSamplerYcbcrConversion(device, (const VkSamplerYcbcrConversionCreateInfo*)local_pCreateInfo, pAllocator, pYcbcrConversion);
3509*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo) {
3510*b7893ccfSSadaf Ebrahimi delete local_pCreateInfo;
3511*b7893ccfSSadaf Ebrahimi }
3512*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
3513*b7893ccfSSadaf Ebrahimi *pYcbcrConversion = layer_data->WrapNew(*pYcbcrConversion);
3514*b7893ccfSSadaf Ebrahimi }
3515*b7893ccfSSadaf Ebrahimi return result;
3516*b7893ccfSSadaf Ebrahimi }
3517*b7893ccfSSadaf Ebrahimi
DispatchDestroySamplerYcbcrConversion(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)3518*b7893ccfSSadaf Ebrahimi void DispatchDestroySamplerYcbcrConversion(
3519*b7893ccfSSadaf Ebrahimi VkDevice device,
3520*b7893ccfSSadaf Ebrahimi VkSamplerYcbcrConversion ycbcrConversion,
3521*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
3522*b7893ccfSSadaf Ebrahimi {
3523*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
3524*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator);
3525*b7893ccfSSadaf Ebrahimi uint64_t ycbcrConversion_id = reinterpret_cast<uint64_t &>(ycbcrConversion);
3526*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(ycbcrConversion_id);
3527*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
3528*b7893ccfSSadaf Ebrahimi ycbcrConversion = (VkSamplerYcbcrConversion)iter->second;
3529*b7893ccfSSadaf Ebrahimi } else {
3530*b7893ccfSSadaf Ebrahimi ycbcrConversion = (VkSamplerYcbcrConversion)0;
3531*b7893ccfSSadaf Ebrahimi }
3532*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator);
3533*b7893ccfSSadaf Ebrahimi
3534*b7893ccfSSadaf Ebrahimi }
3535*b7893ccfSSadaf Ebrahimi
3536*b7893ccfSSadaf Ebrahimi // Skip vkCreateDescriptorUpdateTemplate dispatch, manually generated
3537*b7893ccfSSadaf Ebrahimi
3538*b7893ccfSSadaf Ebrahimi // Skip vkDestroyDescriptorUpdateTemplate dispatch, manually generated
3539*b7893ccfSSadaf Ebrahimi
3540*b7893ccfSSadaf Ebrahimi // Skip vkUpdateDescriptorSetWithTemplate dispatch, manually generated
3541*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceExternalBufferProperties(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo,VkExternalBufferProperties * pExternalBufferProperties)3542*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceExternalBufferProperties(
3543*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
3544*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
3545*b7893ccfSSadaf Ebrahimi VkExternalBufferProperties* pExternalBufferProperties)
3546*b7893ccfSSadaf Ebrahimi {
3547*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
3548*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
3549*b7893ccfSSadaf Ebrahimi
3550*b7893ccfSSadaf Ebrahimi }
3551*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceExternalFenceProperties(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo,VkExternalFenceProperties * pExternalFenceProperties)3552*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceExternalFenceProperties(
3553*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
3554*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
3555*b7893ccfSSadaf Ebrahimi VkExternalFenceProperties* pExternalFenceProperties)
3556*b7893ccfSSadaf Ebrahimi {
3557*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
3558*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
3559*b7893ccfSSadaf Ebrahimi
3560*b7893ccfSSadaf Ebrahimi }
3561*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceExternalSemaphoreProperties(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo,VkExternalSemaphoreProperties * pExternalSemaphoreProperties)3562*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceExternalSemaphoreProperties(
3563*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
3564*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
3565*b7893ccfSSadaf Ebrahimi VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
3566*b7893ccfSSadaf Ebrahimi {
3567*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
3568*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
3569*b7893ccfSSadaf Ebrahimi
3570*b7893ccfSSadaf Ebrahimi }
3571*b7893ccfSSadaf Ebrahimi
DispatchGetDescriptorSetLayoutSupport(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)3572*b7893ccfSSadaf Ebrahimi void DispatchGetDescriptorSetLayoutSupport(
3573*b7893ccfSSadaf Ebrahimi VkDevice device,
3574*b7893ccfSSadaf Ebrahimi const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3575*b7893ccfSSadaf Ebrahimi VkDescriptorSetLayoutSupport* pSupport)
3576*b7893ccfSSadaf Ebrahimi {
3577*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
3578*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport);
3579*b7893ccfSSadaf Ebrahimi safe_VkDescriptorSetLayoutCreateInfo *local_pCreateInfo = NULL;
3580*b7893ccfSSadaf Ebrahimi {
3581*b7893ccfSSadaf Ebrahimi if (pCreateInfo) {
3582*b7893ccfSSadaf Ebrahimi local_pCreateInfo = new safe_VkDescriptorSetLayoutCreateInfo(pCreateInfo);
3583*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo->pBindings) {
3584*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pCreateInfo->bindingCount; ++index1) {
3585*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo->pBindings[index1].pImmutableSamplers) {
3586*b7893ccfSSadaf Ebrahimi for (uint32_t index2 = 0; index2 < local_pCreateInfo->pBindings[index1].descriptorCount; ++index2) {
3587*b7893ccfSSadaf Ebrahimi local_pCreateInfo->pBindings[index1].pImmutableSamplers[index2] = layer_data->Unwrap(local_pCreateInfo->pBindings[index1].pImmutableSamplers[index2]);
3588*b7893ccfSSadaf Ebrahimi }
3589*b7893ccfSSadaf Ebrahimi }
3590*b7893ccfSSadaf Ebrahimi }
3591*b7893ccfSSadaf Ebrahimi }
3592*b7893ccfSSadaf Ebrahimi }
3593*b7893ccfSSadaf Ebrahimi }
3594*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.GetDescriptorSetLayoutSupport(device, (const VkDescriptorSetLayoutCreateInfo*)local_pCreateInfo, pSupport);
3595*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo) {
3596*b7893ccfSSadaf Ebrahimi delete local_pCreateInfo;
3597*b7893ccfSSadaf Ebrahimi }
3598*b7893ccfSSadaf Ebrahimi }
3599*b7893ccfSSadaf Ebrahimi
DispatchDestroySurfaceKHR(VkInstance instance,VkSurfaceKHR surface,const VkAllocationCallbacks * pAllocator)3600*b7893ccfSSadaf Ebrahimi void DispatchDestroySurfaceKHR(
3601*b7893ccfSSadaf Ebrahimi VkInstance instance,
3602*b7893ccfSSadaf Ebrahimi VkSurfaceKHR surface,
3603*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
3604*b7893ccfSSadaf Ebrahimi {
3605*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
3606*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.DestroySurfaceKHR(instance, surface, pAllocator);
3607*b7893ccfSSadaf Ebrahimi uint64_t surface_id = reinterpret_cast<uint64_t &>(surface);
3608*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(surface_id);
3609*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
3610*b7893ccfSSadaf Ebrahimi surface = (VkSurfaceKHR)iter->second;
3611*b7893ccfSSadaf Ebrahimi } else {
3612*b7893ccfSSadaf Ebrahimi surface = (VkSurfaceKHR)0;
3613*b7893ccfSSadaf Ebrahimi }
3614*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.DestroySurfaceKHR(instance, surface, pAllocator);
3615*b7893ccfSSadaf Ebrahimi
3616*b7893ccfSSadaf Ebrahimi }
3617*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,VkSurfaceKHR surface,VkBool32 * pSupported)3618*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPhysicalDeviceSurfaceSupportKHR(
3619*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
3620*b7893ccfSSadaf Ebrahimi uint32_t queueFamilyIndex,
3621*b7893ccfSSadaf Ebrahimi VkSurfaceKHR surface,
3622*b7893ccfSSadaf Ebrahimi VkBool32* pSupported)
3623*b7893ccfSSadaf Ebrahimi {
3624*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
3625*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported);
3626*b7893ccfSSadaf Ebrahimi {
3627*b7893ccfSSadaf Ebrahimi surface = layer_data->Unwrap(surface);
3628*b7893ccfSSadaf Ebrahimi }
3629*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported);
3630*b7893ccfSSadaf Ebrahimi
3631*b7893ccfSSadaf Ebrahimi return result;
3632*b7893ccfSSadaf Ebrahimi }
3633*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,VkSurfaceCapabilitiesKHR * pSurfaceCapabilities)3634*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPhysicalDeviceSurfaceCapabilitiesKHR(
3635*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
3636*b7893ccfSSadaf Ebrahimi VkSurfaceKHR surface,
3637*b7893ccfSSadaf Ebrahimi VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
3638*b7893ccfSSadaf Ebrahimi {
3639*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
3640*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities);
3641*b7893ccfSSadaf Ebrahimi {
3642*b7893ccfSSadaf Ebrahimi surface = layer_data->Unwrap(surface);
3643*b7893ccfSSadaf Ebrahimi }
3644*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities);
3645*b7893ccfSSadaf Ebrahimi
3646*b7893ccfSSadaf Ebrahimi return result;
3647*b7893ccfSSadaf Ebrahimi }
3648*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,uint32_t * pSurfaceFormatCount,VkSurfaceFormatKHR * pSurfaceFormats)3649*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPhysicalDeviceSurfaceFormatsKHR(
3650*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
3651*b7893ccfSSadaf Ebrahimi VkSurfaceKHR surface,
3652*b7893ccfSSadaf Ebrahimi uint32_t* pSurfaceFormatCount,
3653*b7893ccfSSadaf Ebrahimi VkSurfaceFormatKHR* pSurfaceFormats)
3654*b7893ccfSSadaf Ebrahimi {
3655*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
3656*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats);
3657*b7893ccfSSadaf Ebrahimi {
3658*b7893ccfSSadaf Ebrahimi surface = layer_data->Unwrap(surface);
3659*b7893ccfSSadaf Ebrahimi }
3660*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats);
3661*b7893ccfSSadaf Ebrahimi
3662*b7893ccfSSadaf Ebrahimi return result;
3663*b7893ccfSSadaf Ebrahimi }
3664*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceSurfacePresentModesKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,uint32_t * pPresentModeCount,VkPresentModeKHR * pPresentModes)3665*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPhysicalDeviceSurfacePresentModesKHR(
3666*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
3667*b7893ccfSSadaf Ebrahimi VkSurfaceKHR surface,
3668*b7893ccfSSadaf Ebrahimi uint32_t* pPresentModeCount,
3669*b7893ccfSSadaf Ebrahimi VkPresentModeKHR* pPresentModes)
3670*b7893ccfSSadaf Ebrahimi {
3671*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
3672*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.GetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes);
3673*b7893ccfSSadaf Ebrahimi {
3674*b7893ccfSSadaf Ebrahimi surface = layer_data->Unwrap(surface);
3675*b7893ccfSSadaf Ebrahimi }
3676*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes);
3677*b7893ccfSSadaf Ebrahimi
3678*b7893ccfSSadaf Ebrahimi return result;
3679*b7893ccfSSadaf Ebrahimi }
3680*b7893ccfSSadaf Ebrahimi
3681*b7893ccfSSadaf Ebrahimi // Skip vkCreateSwapchainKHR dispatch, manually generated
3682*b7893ccfSSadaf Ebrahimi
3683*b7893ccfSSadaf Ebrahimi // Skip vkDestroySwapchainKHR dispatch, manually generated
3684*b7893ccfSSadaf Ebrahimi
3685*b7893ccfSSadaf Ebrahimi // Skip vkGetSwapchainImagesKHR dispatch, manually generated
3686*b7893ccfSSadaf Ebrahimi
DispatchAcquireNextImageKHR(VkDevice device,VkSwapchainKHR swapchain,uint64_t timeout,VkSemaphore semaphore,VkFence fence,uint32_t * pImageIndex)3687*b7893ccfSSadaf Ebrahimi VkResult DispatchAcquireNextImageKHR(
3688*b7893ccfSSadaf Ebrahimi VkDevice device,
3689*b7893ccfSSadaf Ebrahimi VkSwapchainKHR swapchain,
3690*b7893ccfSSadaf Ebrahimi uint64_t timeout,
3691*b7893ccfSSadaf Ebrahimi VkSemaphore semaphore,
3692*b7893ccfSSadaf Ebrahimi VkFence fence,
3693*b7893ccfSSadaf Ebrahimi uint32_t* pImageIndex)
3694*b7893ccfSSadaf Ebrahimi {
3695*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
3696*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.AcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex);
3697*b7893ccfSSadaf Ebrahimi {
3698*b7893ccfSSadaf Ebrahimi swapchain = layer_data->Unwrap(swapchain);
3699*b7893ccfSSadaf Ebrahimi semaphore = layer_data->Unwrap(semaphore);
3700*b7893ccfSSadaf Ebrahimi fence = layer_data->Unwrap(fence);
3701*b7893ccfSSadaf Ebrahimi }
3702*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.AcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex);
3703*b7893ccfSSadaf Ebrahimi
3704*b7893ccfSSadaf Ebrahimi return result;
3705*b7893ccfSSadaf Ebrahimi }
3706*b7893ccfSSadaf Ebrahimi
3707*b7893ccfSSadaf Ebrahimi // Skip vkQueuePresentKHR dispatch, manually generated
3708*b7893ccfSSadaf Ebrahimi
DispatchGetDeviceGroupPresentCapabilitiesKHR(VkDevice device,VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities)3709*b7893ccfSSadaf Ebrahimi VkResult DispatchGetDeviceGroupPresentCapabilitiesKHR(
3710*b7893ccfSSadaf Ebrahimi VkDevice device,
3711*b7893ccfSSadaf Ebrahimi VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities)
3712*b7893ccfSSadaf Ebrahimi {
3713*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
3714*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities);
3715*b7893ccfSSadaf Ebrahimi
3716*b7893ccfSSadaf Ebrahimi return result;
3717*b7893ccfSSadaf Ebrahimi }
3718*b7893ccfSSadaf Ebrahimi
DispatchGetDeviceGroupSurfacePresentModesKHR(VkDevice device,VkSurfaceKHR surface,VkDeviceGroupPresentModeFlagsKHR * pModes)3719*b7893ccfSSadaf Ebrahimi VkResult DispatchGetDeviceGroupSurfacePresentModesKHR(
3720*b7893ccfSSadaf Ebrahimi VkDevice device,
3721*b7893ccfSSadaf Ebrahimi VkSurfaceKHR surface,
3722*b7893ccfSSadaf Ebrahimi VkDeviceGroupPresentModeFlagsKHR* pModes)
3723*b7893ccfSSadaf Ebrahimi {
3724*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
3725*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetDeviceGroupSurfacePresentModesKHR(device, surface, pModes);
3726*b7893ccfSSadaf Ebrahimi {
3727*b7893ccfSSadaf Ebrahimi surface = layer_data->Unwrap(surface);
3728*b7893ccfSSadaf Ebrahimi }
3729*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetDeviceGroupSurfacePresentModesKHR(device, surface, pModes);
3730*b7893ccfSSadaf Ebrahimi
3731*b7893ccfSSadaf Ebrahimi return result;
3732*b7893ccfSSadaf Ebrahimi }
3733*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDevicePresentRectanglesKHR(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,uint32_t * pRectCount,VkRect2D * pRects)3734*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPhysicalDevicePresentRectanglesKHR(
3735*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
3736*b7893ccfSSadaf Ebrahimi VkSurfaceKHR surface,
3737*b7893ccfSSadaf Ebrahimi uint32_t* pRectCount,
3738*b7893ccfSSadaf Ebrahimi VkRect2D* pRects)
3739*b7893ccfSSadaf Ebrahimi {
3740*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
3741*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.GetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects);
3742*b7893ccfSSadaf Ebrahimi {
3743*b7893ccfSSadaf Ebrahimi surface = layer_data->Unwrap(surface);
3744*b7893ccfSSadaf Ebrahimi }
3745*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects);
3746*b7893ccfSSadaf Ebrahimi
3747*b7893ccfSSadaf Ebrahimi return result;
3748*b7893ccfSSadaf Ebrahimi }
3749*b7893ccfSSadaf Ebrahimi
DispatchAcquireNextImage2KHR(VkDevice device,const VkAcquireNextImageInfoKHR * pAcquireInfo,uint32_t * pImageIndex)3750*b7893ccfSSadaf Ebrahimi VkResult DispatchAcquireNextImage2KHR(
3751*b7893ccfSSadaf Ebrahimi VkDevice device,
3752*b7893ccfSSadaf Ebrahimi const VkAcquireNextImageInfoKHR* pAcquireInfo,
3753*b7893ccfSSadaf Ebrahimi uint32_t* pImageIndex)
3754*b7893ccfSSadaf Ebrahimi {
3755*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
3756*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.AcquireNextImage2KHR(device, pAcquireInfo, pImageIndex);
3757*b7893ccfSSadaf Ebrahimi safe_VkAcquireNextImageInfoKHR *local_pAcquireInfo = NULL;
3758*b7893ccfSSadaf Ebrahimi {
3759*b7893ccfSSadaf Ebrahimi if (pAcquireInfo) {
3760*b7893ccfSSadaf Ebrahimi local_pAcquireInfo = new safe_VkAcquireNextImageInfoKHR(pAcquireInfo);
3761*b7893ccfSSadaf Ebrahimi if (pAcquireInfo->swapchain) {
3762*b7893ccfSSadaf Ebrahimi local_pAcquireInfo->swapchain = layer_data->Unwrap(pAcquireInfo->swapchain);
3763*b7893ccfSSadaf Ebrahimi }
3764*b7893ccfSSadaf Ebrahimi if (pAcquireInfo->semaphore) {
3765*b7893ccfSSadaf Ebrahimi local_pAcquireInfo->semaphore = layer_data->Unwrap(pAcquireInfo->semaphore);
3766*b7893ccfSSadaf Ebrahimi }
3767*b7893ccfSSadaf Ebrahimi if (pAcquireInfo->fence) {
3768*b7893ccfSSadaf Ebrahimi local_pAcquireInfo->fence = layer_data->Unwrap(pAcquireInfo->fence);
3769*b7893ccfSSadaf Ebrahimi }
3770*b7893ccfSSadaf Ebrahimi }
3771*b7893ccfSSadaf Ebrahimi }
3772*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.AcquireNextImage2KHR(device, (const VkAcquireNextImageInfoKHR*)local_pAcquireInfo, pImageIndex);
3773*b7893ccfSSadaf Ebrahimi if (local_pAcquireInfo) {
3774*b7893ccfSSadaf Ebrahimi delete local_pAcquireInfo;
3775*b7893ccfSSadaf Ebrahimi }
3776*b7893ccfSSadaf Ebrahimi return result;
3777*b7893ccfSSadaf Ebrahimi }
3778*b7893ccfSSadaf Ebrahimi
3779*b7893ccfSSadaf Ebrahimi // Skip vkGetPhysicalDeviceDisplayPropertiesKHR dispatch, manually generated
3780*b7893ccfSSadaf Ebrahimi
3781*b7893ccfSSadaf Ebrahimi // Skip vkGetPhysicalDeviceDisplayPlanePropertiesKHR dispatch, manually generated
3782*b7893ccfSSadaf Ebrahimi
3783*b7893ccfSSadaf Ebrahimi // Skip vkGetDisplayPlaneSupportedDisplaysKHR dispatch, manually generated
3784*b7893ccfSSadaf Ebrahimi
3785*b7893ccfSSadaf Ebrahimi // Skip vkGetDisplayModePropertiesKHR dispatch, manually generated
3786*b7893ccfSSadaf Ebrahimi
DispatchCreateDisplayModeKHR(VkPhysicalDevice physicalDevice,VkDisplayKHR display,const VkDisplayModeCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDisplayModeKHR * pMode)3787*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateDisplayModeKHR(
3788*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
3789*b7893ccfSSadaf Ebrahimi VkDisplayKHR display,
3790*b7893ccfSSadaf Ebrahimi const VkDisplayModeCreateInfoKHR* pCreateInfo,
3791*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
3792*b7893ccfSSadaf Ebrahimi VkDisplayModeKHR* pMode)
3793*b7893ccfSSadaf Ebrahimi {
3794*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
3795*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.CreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode);
3796*b7893ccfSSadaf Ebrahimi {
3797*b7893ccfSSadaf Ebrahimi display = layer_data->Unwrap(display);
3798*b7893ccfSSadaf Ebrahimi }
3799*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.CreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode);
3800*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
3801*b7893ccfSSadaf Ebrahimi *pMode = layer_data->WrapNew(*pMode);
3802*b7893ccfSSadaf Ebrahimi }
3803*b7893ccfSSadaf Ebrahimi return result;
3804*b7893ccfSSadaf Ebrahimi }
3805*b7893ccfSSadaf Ebrahimi
DispatchGetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice physicalDevice,VkDisplayModeKHR mode,uint32_t planeIndex,VkDisplayPlaneCapabilitiesKHR * pCapabilities)3806*b7893ccfSSadaf Ebrahimi VkResult DispatchGetDisplayPlaneCapabilitiesKHR(
3807*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
3808*b7893ccfSSadaf Ebrahimi VkDisplayModeKHR mode,
3809*b7893ccfSSadaf Ebrahimi uint32_t planeIndex,
3810*b7893ccfSSadaf Ebrahimi VkDisplayPlaneCapabilitiesKHR* pCapabilities)
3811*b7893ccfSSadaf Ebrahimi {
3812*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
3813*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.GetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities);
3814*b7893ccfSSadaf Ebrahimi {
3815*b7893ccfSSadaf Ebrahimi mode = layer_data->Unwrap(mode);
3816*b7893ccfSSadaf Ebrahimi }
3817*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities);
3818*b7893ccfSSadaf Ebrahimi
3819*b7893ccfSSadaf Ebrahimi return result;
3820*b7893ccfSSadaf Ebrahimi }
3821*b7893ccfSSadaf Ebrahimi
DispatchCreateDisplayPlaneSurfaceKHR(VkInstance instance,const VkDisplaySurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)3822*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateDisplayPlaneSurfaceKHR(
3823*b7893ccfSSadaf Ebrahimi VkInstance instance,
3824*b7893ccfSSadaf Ebrahimi const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
3825*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
3826*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface)
3827*b7893ccfSSadaf Ebrahimi {
3828*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
3829*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.CreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
3830*b7893ccfSSadaf Ebrahimi safe_VkDisplaySurfaceCreateInfoKHR *local_pCreateInfo = NULL;
3831*b7893ccfSSadaf Ebrahimi {
3832*b7893ccfSSadaf Ebrahimi if (pCreateInfo) {
3833*b7893ccfSSadaf Ebrahimi local_pCreateInfo = new safe_VkDisplaySurfaceCreateInfoKHR(pCreateInfo);
3834*b7893ccfSSadaf Ebrahimi if (pCreateInfo->displayMode) {
3835*b7893ccfSSadaf Ebrahimi local_pCreateInfo->displayMode = layer_data->Unwrap(pCreateInfo->displayMode);
3836*b7893ccfSSadaf Ebrahimi }
3837*b7893ccfSSadaf Ebrahimi }
3838*b7893ccfSSadaf Ebrahimi }
3839*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.CreateDisplayPlaneSurfaceKHR(instance, (const VkDisplaySurfaceCreateInfoKHR*)local_pCreateInfo, pAllocator, pSurface);
3840*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo) {
3841*b7893ccfSSadaf Ebrahimi delete local_pCreateInfo;
3842*b7893ccfSSadaf Ebrahimi }
3843*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
3844*b7893ccfSSadaf Ebrahimi *pSurface = layer_data->WrapNew(*pSurface);
3845*b7893ccfSSadaf Ebrahimi }
3846*b7893ccfSSadaf Ebrahimi return result;
3847*b7893ccfSSadaf Ebrahimi }
3848*b7893ccfSSadaf Ebrahimi
3849*b7893ccfSSadaf Ebrahimi // Skip vkCreateSharedSwapchainsKHR dispatch, manually generated
3850*b7893ccfSSadaf Ebrahimi
3851*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_XLIB_KHR
3852*b7893ccfSSadaf Ebrahimi
DispatchCreateXlibSurfaceKHR(VkInstance instance,const VkXlibSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)3853*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateXlibSurfaceKHR(
3854*b7893ccfSSadaf Ebrahimi VkInstance instance,
3855*b7893ccfSSadaf Ebrahimi const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
3856*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
3857*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface)
3858*b7893ccfSSadaf Ebrahimi {
3859*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
3860*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.CreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
3861*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.CreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
3862*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
3863*b7893ccfSSadaf Ebrahimi *pSurface = layer_data->WrapNew(*pSurface);
3864*b7893ccfSSadaf Ebrahimi }
3865*b7893ccfSSadaf Ebrahimi return result;
3866*b7893ccfSSadaf Ebrahimi }
3867*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_XLIB_KHR
3868*b7893ccfSSadaf Ebrahimi
3869*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_XLIB_KHR
3870*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceXlibPresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,Display * dpy,VisualID visualID)3871*b7893ccfSSadaf Ebrahimi VkBool32 DispatchGetPhysicalDeviceXlibPresentationSupportKHR(
3872*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
3873*b7893ccfSSadaf Ebrahimi uint32_t queueFamilyIndex,
3874*b7893ccfSSadaf Ebrahimi Display* dpy,
3875*b7893ccfSSadaf Ebrahimi VisualID visualID)
3876*b7893ccfSSadaf Ebrahimi {
3877*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
3878*b7893ccfSSadaf Ebrahimi VkBool32 result = layer_data->instance_dispatch_table.GetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID);
3879*b7893ccfSSadaf Ebrahimi
3880*b7893ccfSSadaf Ebrahimi return result;
3881*b7893ccfSSadaf Ebrahimi }
3882*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_XLIB_KHR
3883*b7893ccfSSadaf Ebrahimi
3884*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_XCB_KHR
3885*b7893ccfSSadaf Ebrahimi
DispatchCreateXcbSurfaceKHR(VkInstance instance,const VkXcbSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)3886*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateXcbSurfaceKHR(
3887*b7893ccfSSadaf Ebrahimi VkInstance instance,
3888*b7893ccfSSadaf Ebrahimi const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
3889*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
3890*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface)
3891*b7893ccfSSadaf Ebrahimi {
3892*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
3893*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.CreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
3894*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.CreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
3895*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
3896*b7893ccfSSadaf Ebrahimi *pSurface = layer_data->WrapNew(*pSurface);
3897*b7893ccfSSadaf Ebrahimi }
3898*b7893ccfSSadaf Ebrahimi return result;
3899*b7893ccfSSadaf Ebrahimi }
3900*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_XCB_KHR
3901*b7893ccfSSadaf Ebrahimi
3902*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_XCB_KHR
3903*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceXcbPresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,xcb_connection_t * connection,xcb_visualid_t visual_id)3904*b7893ccfSSadaf Ebrahimi VkBool32 DispatchGetPhysicalDeviceXcbPresentationSupportKHR(
3905*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
3906*b7893ccfSSadaf Ebrahimi uint32_t queueFamilyIndex,
3907*b7893ccfSSadaf Ebrahimi xcb_connection_t* connection,
3908*b7893ccfSSadaf Ebrahimi xcb_visualid_t visual_id)
3909*b7893ccfSSadaf Ebrahimi {
3910*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
3911*b7893ccfSSadaf Ebrahimi VkBool32 result = layer_data->instance_dispatch_table.GetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id);
3912*b7893ccfSSadaf Ebrahimi
3913*b7893ccfSSadaf Ebrahimi return result;
3914*b7893ccfSSadaf Ebrahimi }
3915*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_XCB_KHR
3916*b7893ccfSSadaf Ebrahimi
3917*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WAYLAND_KHR
3918*b7893ccfSSadaf Ebrahimi
DispatchCreateWaylandSurfaceKHR(VkInstance instance,const VkWaylandSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)3919*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateWaylandSurfaceKHR(
3920*b7893ccfSSadaf Ebrahimi VkInstance instance,
3921*b7893ccfSSadaf Ebrahimi const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
3922*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
3923*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface)
3924*b7893ccfSSadaf Ebrahimi {
3925*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
3926*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.CreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
3927*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.CreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
3928*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
3929*b7893ccfSSadaf Ebrahimi *pSurface = layer_data->WrapNew(*pSurface);
3930*b7893ccfSSadaf Ebrahimi }
3931*b7893ccfSSadaf Ebrahimi return result;
3932*b7893ccfSSadaf Ebrahimi }
3933*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WAYLAND_KHR
3934*b7893ccfSSadaf Ebrahimi
3935*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WAYLAND_KHR
3936*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceWaylandPresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,struct wl_display * display)3937*b7893ccfSSadaf Ebrahimi VkBool32 DispatchGetPhysicalDeviceWaylandPresentationSupportKHR(
3938*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
3939*b7893ccfSSadaf Ebrahimi uint32_t queueFamilyIndex,
3940*b7893ccfSSadaf Ebrahimi struct wl_display* display)
3941*b7893ccfSSadaf Ebrahimi {
3942*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
3943*b7893ccfSSadaf Ebrahimi VkBool32 result = layer_data->instance_dispatch_table.GetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display);
3944*b7893ccfSSadaf Ebrahimi
3945*b7893ccfSSadaf Ebrahimi return result;
3946*b7893ccfSSadaf Ebrahimi }
3947*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WAYLAND_KHR
3948*b7893ccfSSadaf Ebrahimi
3949*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_ANDROID_KHR
3950*b7893ccfSSadaf Ebrahimi
DispatchCreateAndroidSurfaceKHR(VkInstance instance,const VkAndroidSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)3951*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateAndroidSurfaceKHR(
3952*b7893ccfSSadaf Ebrahimi VkInstance instance,
3953*b7893ccfSSadaf Ebrahimi const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
3954*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
3955*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface)
3956*b7893ccfSSadaf Ebrahimi {
3957*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
3958*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.CreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
3959*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.CreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
3960*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
3961*b7893ccfSSadaf Ebrahimi *pSurface = layer_data->WrapNew(*pSurface);
3962*b7893ccfSSadaf Ebrahimi }
3963*b7893ccfSSadaf Ebrahimi return result;
3964*b7893ccfSSadaf Ebrahimi }
3965*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_ANDROID_KHR
3966*b7893ccfSSadaf Ebrahimi
3967*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
3968*b7893ccfSSadaf Ebrahimi
DispatchCreateWin32SurfaceKHR(VkInstance instance,const VkWin32SurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)3969*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateWin32SurfaceKHR(
3970*b7893ccfSSadaf Ebrahimi VkInstance instance,
3971*b7893ccfSSadaf Ebrahimi const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
3972*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
3973*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface)
3974*b7893ccfSSadaf Ebrahimi {
3975*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
3976*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.CreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
3977*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.CreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface);
3978*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
3979*b7893ccfSSadaf Ebrahimi *pSurface = layer_data->WrapNew(*pSurface);
3980*b7893ccfSSadaf Ebrahimi }
3981*b7893ccfSSadaf Ebrahimi return result;
3982*b7893ccfSSadaf Ebrahimi }
3983*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
3984*b7893ccfSSadaf Ebrahimi
3985*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
3986*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceWin32PresentationSupportKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex)3987*b7893ccfSSadaf Ebrahimi VkBool32 DispatchGetPhysicalDeviceWin32PresentationSupportKHR(
3988*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
3989*b7893ccfSSadaf Ebrahimi uint32_t queueFamilyIndex)
3990*b7893ccfSSadaf Ebrahimi {
3991*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
3992*b7893ccfSSadaf Ebrahimi VkBool32 result = layer_data->instance_dispatch_table.GetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex);
3993*b7893ccfSSadaf Ebrahimi
3994*b7893ccfSSadaf Ebrahimi return result;
3995*b7893ccfSSadaf Ebrahimi }
3996*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
3997*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceFeatures2KHR(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures2 * pFeatures)3998*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceFeatures2KHR(
3999*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
4000*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceFeatures2* pFeatures)
4001*b7893ccfSSadaf Ebrahimi {
4002*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
4003*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures);
4004*b7893ccfSSadaf Ebrahimi
4005*b7893ccfSSadaf Ebrahimi }
4006*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceProperties2KHR(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties2 * pProperties)4007*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceProperties2KHR(
4008*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
4009*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceProperties2* pProperties)
4010*b7893ccfSSadaf Ebrahimi {
4011*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
4012*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceProperties2KHR(physicalDevice, pProperties);
4013*b7893ccfSSadaf Ebrahimi
4014*b7893ccfSSadaf Ebrahimi }
4015*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceFormatProperties2KHR(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties2 * pFormatProperties)4016*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceFormatProperties2KHR(
4017*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
4018*b7893ccfSSadaf Ebrahimi VkFormat format,
4019*b7893ccfSSadaf Ebrahimi VkFormatProperties2* pFormatProperties)
4020*b7893ccfSSadaf Ebrahimi {
4021*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
4022*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties);
4023*b7893ccfSSadaf Ebrahimi
4024*b7893ccfSSadaf Ebrahimi }
4025*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceImageFormatProperties2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo,VkImageFormatProperties2 * pImageFormatProperties)4026*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPhysicalDeviceImageFormatProperties2KHR(
4027*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
4028*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
4029*b7893ccfSSadaf Ebrahimi VkImageFormatProperties2* pImageFormatProperties)
4030*b7893ccfSSadaf Ebrahimi {
4031*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
4032*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.GetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties);
4033*b7893ccfSSadaf Ebrahimi safe_VkPhysicalDeviceImageFormatInfo2 *local_pImageFormatInfo = NULL;
4034*b7893ccfSSadaf Ebrahimi {
4035*b7893ccfSSadaf Ebrahimi if (pImageFormatInfo) {
4036*b7893ccfSSadaf Ebrahimi local_pImageFormatInfo = new safe_VkPhysicalDeviceImageFormatInfo2(pImageFormatInfo);
4037*b7893ccfSSadaf Ebrahimi WrapPnextChainHandles(layer_data, local_pImageFormatInfo->pNext);
4038*b7893ccfSSadaf Ebrahimi }
4039*b7893ccfSSadaf Ebrahimi }
4040*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, (const VkPhysicalDeviceImageFormatInfo2*)local_pImageFormatInfo, pImageFormatProperties);
4041*b7893ccfSSadaf Ebrahimi if (local_pImageFormatInfo) {
4042*b7893ccfSSadaf Ebrahimi delete local_pImageFormatInfo;
4043*b7893ccfSSadaf Ebrahimi }
4044*b7893ccfSSadaf Ebrahimi return result;
4045*b7893ccfSSadaf Ebrahimi }
4046*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceQueueFamilyProperties2KHR(VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties2 * pQueueFamilyProperties)4047*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceQueueFamilyProperties2KHR(
4048*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
4049*b7893ccfSSadaf Ebrahimi uint32_t* pQueueFamilyPropertyCount,
4050*b7893ccfSSadaf Ebrahimi VkQueueFamilyProperties2* pQueueFamilyProperties)
4051*b7893ccfSSadaf Ebrahimi {
4052*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
4053*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties);
4054*b7893ccfSSadaf Ebrahimi
4055*b7893ccfSSadaf Ebrahimi }
4056*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceMemoryProperties2KHR(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties2 * pMemoryProperties)4057*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceMemoryProperties2KHR(
4058*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
4059*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceMemoryProperties2* pMemoryProperties)
4060*b7893ccfSSadaf Ebrahimi {
4061*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
4062*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties);
4063*b7893ccfSSadaf Ebrahimi
4064*b7893ccfSSadaf Ebrahimi }
4065*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceSparseImageFormatProperties2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo,uint32_t * pPropertyCount,VkSparseImageFormatProperties2 * pProperties)4066*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceSparseImageFormatProperties2KHR(
4067*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
4068*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
4069*b7893ccfSSadaf Ebrahimi uint32_t* pPropertyCount,
4070*b7893ccfSSadaf Ebrahimi VkSparseImageFormatProperties2* pProperties)
4071*b7893ccfSSadaf Ebrahimi {
4072*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
4073*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties);
4074*b7893ccfSSadaf Ebrahimi
4075*b7893ccfSSadaf Ebrahimi }
4076*b7893ccfSSadaf Ebrahimi
DispatchGetDeviceGroupPeerMemoryFeaturesKHR(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)4077*b7893ccfSSadaf Ebrahimi void DispatchGetDeviceGroupPeerMemoryFeaturesKHR(
4078*b7893ccfSSadaf Ebrahimi VkDevice device,
4079*b7893ccfSSadaf Ebrahimi uint32_t heapIndex,
4080*b7893ccfSSadaf Ebrahimi uint32_t localDeviceIndex,
4081*b7893ccfSSadaf Ebrahimi uint32_t remoteDeviceIndex,
4082*b7893ccfSSadaf Ebrahimi VkPeerMemoryFeatureFlags* pPeerMemoryFeatures)
4083*b7893ccfSSadaf Ebrahimi {
4084*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4085*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.GetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
4086*b7893ccfSSadaf Ebrahimi
4087*b7893ccfSSadaf Ebrahimi }
4088*b7893ccfSSadaf Ebrahimi
DispatchCmdSetDeviceMaskKHR(VkCommandBuffer commandBuffer,uint32_t deviceMask)4089*b7893ccfSSadaf Ebrahimi void DispatchCmdSetDeviceMaskKHR(
4090*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4091*b7893ccfSSadaf Ebrahimi uint32_t deviceMask)
4092*b7893ccfSSadaf Ebrahimi {
4093*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
4094*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdSetDeviceMaskKHR(commandBuffer, deviceMask);
4095*b7893ccfSSadaf Ebrahimi
4096*b7893ccfSSadaf Ebrahimi }
4097*b7893ccfSSadaf Ebrahimi
DispatchCmdDispatchBaseKHR(VkCommandBuffer commandBuffer,uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)4098*b7893ccfSSadaf Ebrahimi void DispatchCmdDispatchBaseKHR(
4099*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4100*b7893ccfSSadaf Ebrahimi uint32_t baseGroupX,
4101*b7893ccfSSadaf Ebrahimi uint32_t baseGroupY,
4102*b7893ccfSSadaf Ebrahimi uint32_t baseGroupZ,
4103*b7893ccfSSadaf Ebrahimi uint32_t groupCountX,
4104*b7893ccfSSadaf Ebrahimi uint32_t groupCountY,
4105*b7893ccfSSadaf Ebrahimi uint32_t groupCountZ)
4106*b7893ccfSSadaf Ebrahimi {
4107*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
4108*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
4109*b7893ccfSSadaf Ebrahimi
4110*b7893ccfSSadaf Ebrahimi }
4111*b7893ccfSSadaf Ebrahimi
DispatchTrimCommandPoolKHR(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)4112*b7893ccfSSadaf Ebrahimi void DispatchTrimCommandPoolKHR(
4113*b7893ccfSSadaf Ebrahimi VkDevice device,
4114*b7893ccfSSadaf Ebrahimi VkCommandPool commandPool,
4115*b7893ccfSSadaf Ebrahimi VkCommandPoolTrimFlags flags)
4116*b7893ccfSSadaf Ebrahimi {
4117*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4118*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.TrimCommandPoolKHR(device, commandPool, flags);
4119*b7893ccfSSadaf Ebrahimi {
4120*b7893ccfSSadaf Ebrahimi commandPool = layer_data->Unwrap(commandPool);
4121*b7893ccfSSadaf Ebrahimi }
4122*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.TrimCommandPoolKHR(device, commandPool, flags);
4123*b7893ccfSSadaf Ebrahimi
4124*b7893ccfSSadaf Ebrahimi }
4125*b7893ccfSSadaf Ebrahimi
DispatchEnumeratePhysicalDeviceGroupsKHR(VkInstance instance,uint32_t * pPhysicalDeviceGroupCount,VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties)4126*b7893ccfSSadaf Ebrahimi VkResult DispatchEnumeratePhysicalDeviceGroupsKHR(
4127*b7893ccfSSadaf Ebrahimi VkInstance instance,
4128*b7893ccfSSadaf Ebrahimi uint32_t* pPhysicalDeviceGroupCount,
4129*b7893ccfSSadaf Ebrahimi VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties)
4130*b7893ccfSSadaf Ebrahimi {
4131*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
4132*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.EnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties);
4133*b7893ccfSSadaf Ebrahimi
4134*b7893ccfSSadaf Ebrahimi return result;
4135*b7893ccfSSadaf Ebrahimi }
4136*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceExternalBufferPropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo,VkExternalBufferProperties * pExternalBufferProperties)4137*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceExternalBufferPropertiesKHR(
4138*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
4139*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
4140*b7893ccfSSadaf Ebrahimi VkExternalBufferProperties* pExternalBufferProperties)
4141*b7893ccfSSadaf Ebrahimi {
4142*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
4143*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties);
4144*b7893ccfSSadaf Ebrahimi
4145*b7893ccfSSadaf Ebrahimi }
4146*b7893ccfSSadaf Ebrahimi
4147*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
4148*b7893ccfSSadaf Ebrahimi
DispatchGetMemoryWin32HandleKHR(VkDevice device,const VkMemoryGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)4149*b7893ccfSSadaf Ebrahimi VkResult DispatchGetMemoryWin32HandleKHR(
4150*b7893ccfSSadaf Ebrahimi VkDevice device,
4151*b7893ccfSSadaf Ebrahimi const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
4152*b7893ccfSSadaf Ebrahimi HANDLE* pHandle)
4153*b7893ccfSSadaf Ebrahimi {
4154*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4155*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
4156*b7893ccfSSadaf Ebrahimi safe_VkMemoryGetWin32HandleInfoKHR *local_pGetWin32HandleInfo = NULL;
4157*b7893ccfSSadaf Ebrahimi {
4158*b7893ccfSSadaf Ebrahimi if (pGetWin32HandleInfo) {
4159*b7893ccfSSadaf Ebrahimi local_pGetWin32HandleInfo = new safe_VkMemoryGetWin32HandleInfoKHR(pGetWin32HandleInfo);
4160*b7893ccfSSadaf Ebrahimi if (pGetWin32HandleInfo->memory) {
4161*b7893ccfSSadaf Ebrahimi local_pGetWin32HandleInfo->memory = layer_data->Unwrap(pGetWin32HandleInfo->memory);
4162*b7893ccfSSadaf Ebrahimi }
4163*b7893ccfSSadaf Ebrahimi }
4164*b7893ccfSSadaf Ebrahimi }
4165*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetMemoryWin32HandleKHR(device, (const VkMemoryGetWin32HandleInfoKHR*)local_pGetWin32HandleInfo, pHandle);
4166*b7893ccfSSadaf Ebrahimi if (local_pGetWin32HandleInfo) {
4167*b7893ccfSSadaf Ebrahimi delete local_pGetWin32HandleInfo;
4168*b7893ccfSSadaf Ebrahimi }
4169*b7893ccfSSadaf Ebrahimi return result;
4170*b7893ccfSSadaf Ebrahimi }
4171*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
4172*b7893ccfSSadaf Ebrahimi
4173*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
4174*b7893ccfSSadaf Ebrahimi
DispatchGetMemoryWin32HandlePropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,HANDLE handle,VkMemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties)4175*b7893ccfSSadaf Ebrahimi VkResult DispatchGetMemoryWin32HandlePropertiesKHR(
4176*b7893ccfSSadaf Ebrahimi VkDevice device,
4177*b7893ccfSSadaf Ebrahimi VkExternalMemoryHandleTypeFlagBits handleType,
4178*b7893ccfSSadaf Ebrahimi HANDLE handle,
4179*b7893ccfSSadaf Ebrahimi VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties)
4180*b7893ccfSSadaf Ebrahimi {
4181*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4182*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties);
4183*b7893ccfSSadaf Ebrahimi
4184*b7893ccfSSadaf Ebrahimi return result;
4185*b7893ccfSSadaf Ebrahimi }
4186*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
4187*b7893ccfSSadaf Ebrahimi
DispatchGetMemoryFdKHR(VkDevice device,const VkMemoryGetFdInfoKHR * pGetFdInfo,int * pFd)4188*b7893ccfSSadaf Ebrahimi VkResult DispatchGetMemoryFdKHR(
4189*b7893ccfSSadaf Ebrahimi VkDevice device,
4190*b7893ccfSSadaf Ebrahimi const VkMemoryGetFdInfoKHR* pGetFdInfo,
4191*b7893ccfSSadaf Ebrahimi int* pFd)
4192*b7893ccfSSadaf Ebrahimi {
4193*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4194*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetMemoryFdKHR(device, pGetFdInfo, pFd);
4195*b7893ccfSSadaf Ebrahimi safe_VkMemoryGetFdInfoKHR *local_pGetFdInfo = NULL;
4196*b7893ccfSSadaf Ebrahimi {
4197*b7893ccfSSadaf Ebrahimi if (pGetFdInfo) {
4198*b7893ccfSSadaf Ebrahimi local_pGetFdInfo = new safe_VkMemoryGetFdInfoKHR(pGetFdInfo);
4199*b7893ccfSSadaf Ebrahimi if (pGetFdInfo->memory) {
4200*b7893ccfSSadaf Ebrahimi local_pGetFdInfo->memory = layer_data->Unwrap(pGetFdInfo->memory);
4201*b7893ccfSSadaf Ebrahimi }
4202*b7893ccfSSadaf Ebrahimi }
4203*b7893ccfSSadaf Ebrahimi }
4204*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetMemoryFdKHR(device, (const VkMemoryGetFdInfoKHR*)local_pGetFdInfo, pFd);
4205*b7893ccfSSadaf Ebrahimi if (local_pGetFdInfo) {
4206*b7893ccfSSadaf Ebrahimi delete local_pGetFdInfo;
4207*b7893ccfSSadaf Ebrahimi }
4208*b7893ccfSSadaf Ebrahimi return result;
4209*b7893ccfSSadaf Ebrahimi }
4210*b7893ccfSSadaf Ebrahimi
DispatchGetMemoryFdPropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,int fd,VkMemoryFdPropertiesKHR * pMemoryFdProperties)4211*b7893ccfSSadaf Ebrahimi VkResult DispatchGetMemoryFdPropertiesKHR(
4212*b7893ccfSSadaf Ebrahimi VkDevice device,
4213*b7893ccfSSadaf Ebrahimi VkExternalMemoryHandleTypeFlagBits handleType,
4214*b7893ccfSSadaf Ebrahimi int fd,
4215*b7893ccfSSadaf Ebrahimi VkMemoryFdPropertiesKHR* pMemoryFdProperties)
4216*b7893ccfSSadaf Ebrahimi {
4217*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4218*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties);
4219*b7893ccfSSadaf Ebrahimi
4220*b7893ccfSSadaf Ebrahimi return result;
4221*b7893ccfSSadaf Ebrahimi }
4222*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceExternalSemaphorePropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo,VkExternalSemaphoreProperties * pExternalSemaphoreProperties)4223*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceExternalSemaphorePropertiesKHR(
4224*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
4225*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
4226*b7893ccfSSadaf Ebrahimi VkExternalSemaphoreProperties* pExternalSemaphoreProperties)
4227*b7893ccfSSadaf Ebrahimi {
4228*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
4229*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties);
4230*b7893ccfSSadaf Ebrahimi
4231*b7893ccfSSadaf Ebrahimi }
4232*b7893ccfSSadaf Ebrahimi
4233*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
4234*b7893ccfSSadaf Ebrahimi
DispatchImportSemaphoreWin32HandleKHR(VkDevice device,const VkImportSemaphoreWin32HandleInfoKHR * pImportSemaphoreWin32HandleInfo)4235*b7893ccfSSadaf Ebrahimi VkResult DispatchImportSemaphoreWin32HandleKHR(
4236*b7893ccfSSadaf Ebrahimi VkDevice device,
4237*b7893ccfSSadaf Ebrahimi const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo)
4238*b7893ccfSSadaf Ebrahimi {
4239*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4240*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.ImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo);
4241*b7893ccfSSadaf Ebrahimi safe_VkImportSemaphoreWin32HandleInfoKHR *local_pImportSemaphoreWin32HandleInfo = NULL;
4242*b7893ccfSSadaf Ebrahimi {
4243*b7893ccfSSadaf Ebrahimi if (pImportSemaphoreWin32HandleInfo) {
4244*b7893ccfSSadaf Ebrahimi local_pImportSemaphoreWin32HandleInfo = new safe_VkImportSemaphoreWin32HandleInfoKHR(pImportSemaphoreWin32HandleInfo);
4245*b7893ccfSSadaf Ebrahimi if (pImportSemaphoreWin32HandleInfo->semaphore) {
4246*b7893ccfSSadaf Ebrahimi local_pImportSemaphoreWin32HandleInfo->semaphore = layer_data->Unwrap(pImportSemaphoreWin32HandleInfo->semaphore);
4247*b7893ccfSSadaf Ebrahimi }
4248*b7893ccfSSadaf Ebrahimi }
4249*b7893ccfSSadaf Ebrahimi }
4250*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.ImportSemaphoreWin32HandleKHR(device, (const VkImportSemaphoreWin32HandleInfoKHR*)local_pImportSemaphoreWin32HandleInfo);
4251*b7893ccfSSadaf Ebrahimi if (local_pImportSemaphoreWin32HandleInfo) {
4252*b7893ccfSSadaf Ebrahimi delete local_pImportSemaphoreWin32HandleInfo;
4253*b7893ccfSSadaf Ebrahimi }
4254*b7893ccfSSadaf Ebrahimi return result;
4255*b7893ccfSSadaf Ebrahimi }
4256*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
4257*b7893ccfSSadaf Ebrahimi
4258*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
4259*b7893ccfSSadaf Ebrahimi
DispatchGetSemaphoreWin32HandleKHR(VkDevice device,const VkSemaphoreGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)4260*b7893ccfSSadaf Ebrahimi VkResult DispatchGetSemaphoreWin32HandleKHR(
4261*b7893ccfSSadaf Ebrahimi VkDevice device,
4262*b7893ccfSSadaf Ebrahimi const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
4263*b7893ccfSSadaf Ebrahimi HANDLE* pHandle)
4264*b7893ccfSSadaf Ebrahimi {
4265*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4266*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
4267*b7893ccfSSadaf Ebrahimi safe_VkSemaphoreGetWin32HandleInfoKHR *local_pGetWin32HandleInfo = NULL;
4268*b7893ccfSSadaf Ebrahimi {
4269*b7893ccfSSadaf Ebrahimi if (pGetWin32HandleInfo) {
4270*b7893ccfSSadaf Ebrahimi local_pGetWin32HandleInfo = new safe_VkSemaphoreGetWin32HandleInfoKHR(pGetWin32HandleInfo);
4271*b7893ccfSSadaf Ebrahimi if (pGetWin32HandleInfo->semaphore) {
4272*b7893ccfSSadaf Ebrahimi local_pGetWin32HandleInfo->semaphore = layer_data->Unwrap(pGetWin32HandleInfo->semaphore);
4273*b7893ccfSSadaf Ebrahimi }
4274*b7893ccfSSadaf Ebrahimi }
4275*b7893ccfSSadaf Ebrahimi }
4276*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetSemaphoreWin32HandleKHR(device, (const VkSemaphoreGetWin32HandleInfoKHR*)local_pGetWin32HandleInfo, pHandle);
4277*b7893ccfSSadaf Ebrahimi if (local_pGetWin32HandleInfo) {
4278*b7893ccfSSadaf Ebrahimi delete local_pGetWin32HandleInfo;
4279*b7893ccfSSadaf Ebrahimi }
4280*b7893ccfSSadaf Ebrahimi return result;
4281*b7893ccfSSadaf Ebrahimi }
4282*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
4283*b7893ccfSSadaf Ebrahimi
DispatchImportSemaphoreFdKHR(VkDevice device,const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo)4284*b7893ccfSSadaf Ebrahimi VkResult DispatchImportSemaphoreFdKHR(
4285*b7893ccfSSadaf Ebrahimi VkDevice device,
4286*b7893ccfSSadaf Ebrahimi const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo)
4287*b7893ccfSSadaf Ebrahimi {
4288*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4289*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.ImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo);
4290*b7893ccfSSadaf Ebrahimi safe_VkImportSemaphoreFdInfoKHR *local_pImportSemaphoreFdInfo = NULL;
4291*b7893ccfSSadaf Ebrahimi {
4292*b7893ccfSSadaf Ebrahimi if (pImportSemaphoreFdInfo) {
4293*b7893ccfSSadaf Ebrahimi local_pImportSemaphoreFdInfo = new safe_VkImportSemaphoreFdInfoKHR(pImportSemaphoreFdInfo);
4294*b7893ccfSSadaf Ebrahimi if (pImportSemaphoreFdInfo->semaphore) {
4295*b7893ccfSSadaf Ebrahimi local_pImportSemaphoreFdInfo->semaphore = layer_data->Unwrap(pImportSemaphoreFdInfo->semaphore);
4296*b7893ccfSSadaf Ebrahimi }
4297*b7893ccfSSadaf Ebrahimi }
4298*b7893ccfSSadaf Ebrahimi }
4299*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.ImportSemaphoreFdKHR(device, (const VkImportSemaphoreFdInfoKHR*)local_pImportSemaphoreFdInfo);
4300*b7893ccfSSadaf Ebrahimi if (local_pImportSemaphoreFdInfo) {
4301*b7893ccfSSadaf Ebrahimi delete local_pImportSemaphoreFdInfo;
4302*b7893ccfSSadaf Ebrahimi }
4303*b7893ccfSSadaf Ebrahimi return result;
4304*b7893ccfSSadaf Ebrahimi }
4305*b7893ccfSSadaf Ebrahimi
DispatchGetSemaphoreFdKHR(VkDevice device,const VkSemaphoreGetFdInfoKHR * pGetFdInfo,int * pFd)4306*b7893ccfSSadaf Ebrahimi VkResult DispatchGetSemaphoreFdKHR(
4307*b7893ccfSSadaf Ebrahimi VkDevice device,
4308*b7893ccfSSadaf Ebrahimi const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
4309*b7893ccfSSadaf Ebrahimi int* pFd)
4310*b7893ccfSSadaf Ebrahimi {
4311*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4312*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetSemaphoreFdKHR(device, pGetFdInfo, pFd);
4313*b7893ccfSSadaf Ebrahimi safe_VkSemaphoreGetFdInfoKHR *local_pGetFdInfo = NULL;
4314*b7893ccfSSadaf Ebrahimi {
4315*b7893ccfSSadaf Ebrahimi if (pGetFdInfo) {
4316*b7893ccfSSadaf Ebrahimi local_pGetFdInfo = new safe_VkSemaphoreGetFdInfoKHR(pGetFdInfo);
4317*b7893ccfSSadaf Ebrahimi if (pGetFdInfo->semaphore) {
4318*b7893ccfSSadaf Ebrahimi local_pGetFdInfo->semaphore = layer_data->Unwrap(pGetFdInfo->semaphore);
4319*b7893ccfSSadaf Ebrahimi }
4320*b7893ccfSSadaf Ebrahimi }
4321*b7893ccfSSadaf Ebrahimi }
4322*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetSemaphoreFdKHR(device, (const VkSemaphoreGetFdInfoKHR*)local_pGetFdInfo, pFd);
4323*b7893ccfSSadaf Ebrahimi if (local_pGetFdInfo) {
4324*b7893ccfSSadaf Ebrahimi delete local_pGetFdInfo;
4325*b7893ccfSSadaf Ebrahimi }
4326*b7893ccfSSadaf Ebrahimi return result;
4327*b7893ccfSSadaf Ebrahimi }
4328*b7893ccfSSadaf Ebrahimi
DispatchCmdPushDescriptorSetKHR(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t set,uint32_t descriptorWriteCount,const VkWriteDescriptorSet * pDescriptorWrites)4329*b7893ccfSSadaf Ebrahimi void DispatchCmdPushDescriptorSetKHR(
4330*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4331*b7893ccfSSadaf Ebrahimi VkPipelineBindPoint pipelineBindPoint,
4332*b7893ccfSSadaf Ebrahimi VkPipelineLayout layout,
4333*b7893ccfSSadaf Ebrahimi uint32_t set,
4334*b7893ccfSSadaf Ebrahimi uint32_t descriptorWriteCount,
4335*b7893ccfSSadaf Ebrahimi const VkWriteDescriptorSet* pDescriptorWrites)
4336*b7893ccfSSadaf Ebrahimi {
4337*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
4338*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites);
4339*b7893ccfSSadaf Ebrahimi safe_VkWriteDescriptorSet *local_pDescriptorWrites = NULL;
4340*b7893ccfSSadaf Ebrahimi {
4341*b7893ccfSSadaf Ebrahimi layout = layer_data->Unwrap(layout);
4342*b7893ccfSSadaf Ebrahimi if (pDescriptorWrites) {
4343*b7893ccfSSadaf Ebrahimi local_pDescriptorWrites = new safe_VkWriteDescriptorSet[descriptorWriteCount];
4344*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < descriptorWriteCount; ++index0) {
4345*b7893ccfSSadaf Ebrahimi local_pDescriptorWrites[index0].initialize(&pDescriptorWrites[index0]);
4346*b7893ccfSSadaf Ebrahimi WrapPnextChainHandles(layer_data, local_pDescriptorWrites[index0].pNext);
4347*b7893ccfSSadaf Ebrahimi if (pDescriptorWrites[index0].dstSet) {
4348*b7893ccfSSadaf Ebrahimi local_pDescriptorWrites[index0].dstSet = layer_data->Unwrap(pDescriptorWrites[index0].dstSet);
4349*b7893ccfSSadaf Ebrahimi }
4350*b7893ccfSSadaf Ebrahimi if (local_pDescriptorWrites[index0].pImageInfo) {
4351*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pDescriptorWrites[index0].descriptorCount; ++index1) {
4352*b7893ccfSSadaf Ebrahimi if (pDescriptorWrites[index0].pImageInfo[index1].sampler) {
4353*b7893ccfSSadaf Ebrahimi local_pDescriptorWrites[index0].pImageInfo[index1].sampler = layer_data->Unwrap(pDescriptorWrites[index0].pImageInfo[index1].sampler);
4354*b7893ccfSSadaf Ebrahimi }
4355*b7893ccfSSadaf Ebrahimi if (pDescriptorWrites[index0].pImageInfo[index1].imageView) {
4356*b7893ccfSSadaf Ebrahimi local_pDescriptorWrites[index0].pImageInfo[index1].imageView = layer_data->Unwrap(pDescriptorWrites[index0].pImageInfo[index1].imageView);
4357*b7893ccfSSadaf Ebrahimi }
4358*b7893ccfSSadaf Ebrahimi }
4359*b7893ccfSSadaf Ebrahimi }
4360*b7893ccfSSadaf Ebrahimi if (local_pDescriptorWrites[index0].pBufferInfo) {
4361*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pDescriptorWrites[index0].descriptorCount; ++index1) {
4362*b7893ccfSSadaf Ebrahimi if (pDescriptorWrites[index0].pBufferInfo[index1].buffer) {
4363*b7893ccfSSadaf Ebrahimi local_pDescriptorWrites[index0].pBufferInfo[index1].buffer = layer_data->Unwrap(pDescriptorWrites[index0].pBufferInfo[index1].buffer);
4364*b7893ccfSSadaf Ebrahimi }
4365*b7893ccfSSadaf Ebrahimi }
4366*b7893ccfSSadaf Ebrahimi }
4367*b7893ccfSSadaf Ebrahimi if (local_pDescriptorWrites[index0].pTexelBufferView) {
4368*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pDescriptorWrites[index0].descriptorCount; ++index1) {
4369*b7893ccfSSadaf Ebrahimi local_pDescriptorWrites[index0].pTexelBufferView[index1] = layer_data->Unwrap(local_pDescriptorWrites[index0].pTexelBufferView[index1]);
4370*b7893ccfSSadaf Ebrahimi }
4371*b7893ccfSSadaf Ebrahimi }
4372*b7893ccfSSadaf Ebrahimi }
4373*b7893ccfSSadaf Ebrahimi }
4374*b7893ccfSSadaf Ebrahimi }
4375*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, (const VkWriteDescriptorSet*)local_pDescriptorWrites);
4376*b7893ccfSSadaf Ebrahimi if (local_pDescriptorWrites) {
4377*b7893ccfSSadaf Ebrahimi delete[] local_pDescriptorWrites;
4378*b7893ccfSSadaf Ebrahimi }
4379*b7893ccfSSadaf Ebrahimi }
4380*b7893ccfSSadaf Ebrahimi
4381*b7893ccfSSadaf Ebrahimi // Skip vkCmdPushDescriptorSetWithTemplateKHR dispatch, manually generated
4382*b7893ccfSSadaf Ebrahimi
4383*b7893ccfSSadaf Ebrahimi // Skip vkCreateDescriptorUpdateTemplateKHR dispatch, manually generated
4384*b7893ccfSSadaf Ebrahimi
4385*b7893ccfSSadaf Ebrahimi // Skip vkDestroyDescriptorUpdateTemplateKHR dispatch, manually generated
4386*b7893ccfSSadaf Ebrahimi
4387*b7893ccfSSadaf Ebrahimi // Skip vkUpdateDescriptorSetWithTemplateKHR dispatch, manually generated
4388*b7893ccfSSadaf Ebrahimi
4389*b7893ccfSSadaf Ebrahimi // Skip vkCreateRenderPass2KHR dispatch, manually generated
4390*b7893ccfSSadaf Ebrahimi
DispatchCmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,const VkSubpassBeginInfoKHR * pSubpassBeginInfo)4391*b7893ccfSSadaf Ebrahimi void DispatchCmdBeginRenderPass2KHR(
4392*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4393*b7893ccfSSadaf Ebrahimi const VkRenderPassBeginInfo* pRenderPassBegin,
4394*b7893ccfSSadaf Ebrahimi const VkSubpassBeginInfoKHR* pSubpassBeginInfo)
4395*b7893ccfSSadaf Ebrahimi {
4396*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
4397*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
4398*b7893ccfSSadaf Ebrahimi safe_VkRenderPassBeginInfo *local_pRenderPassBegin = NULL;
4399*b7893ccfSSadaf Ebrahimi {
4400*b7893ccfSSadaf Ebrahimi if (pRenderPassBegin) {
4401*b7893ccfSSadaf Ebrahimi local_pRenderPassBegin = new safe_VkRenderPassBeginInfo(pRenderPassBegin);
4402*b7893ccfSSadaf Ebrahimi if (pRenderPassBegin->renderPass) {
4403*b7893ccfSSadaf Ebrahimi local_pRenderPassBegin->renderPass = layer_data->Unwrap(pRenderPassBegin->renderPass);
4404*b7893ccfSSadaf Ebrahimi }
4405*b7893ccfSSadaf Ebrahimi if (pRenderPassBegin->framebuffer) {
4406*b7893ccfSSadaf Ebrahimi local_pRenderPassBegin->framebuffer = layer_data->Unwrap(pRenderPassBegin->framebuffer);
4407*b7893ccfSSadaf Ebrahimi }
4408*b7893ccfSSadaf Ebrahimi WrapPnextChainHandles(layer_data, local_pRenderPassBegin->pNext);
4409*b7893ccfSSadaf Ebrahimi }
4410*b7893ccfSSadaf Ebrahimi }
4411*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdBeginRenderPass2KHR(commandBuffer, (const VkRenderPassBeginInfo*)local_pRenderPassBegin, pSubpassBeginInfo);
4412*b7893ccfSSadaf Ebrahimi if (local_pRenderPassBegin) {
4413*b7893ccfSSadaf Ebrahimi delete local_pRenderPassBegin;
4414*b7893ccfSSadaf Ebrahimi }
4415*b7893ccfSSadaf Ebrahimi }
4416*b7893ccfSSadaf Ebrahimi
DispatchCmdNextSubpass2KHR(VkCommandBuffer commandBuffer,const VkSubpassBeginInfoKHR * pSubpassBeginInfo,const VkSubpassEndInfoKHR * pSubpassEndInfo)4417*b7893ccfSSadaf Ebrahimi void DispatchCmdNextSubpass2KHR(
4418*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4419*b7893ccfSSadaf Ebrahimi const VkSubpassBeginInfoKHR* pSubpassBeginInfo,
4420*b7893ccfSSadaf Ebrahimi const VkSubpassEndInfoKHR* pSubpassEndInfo)
4421*b7893ccfSSadaf Ebrahimi {
4422*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
4423*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
4424*b7893ccfSSadaf Ebrahimi
4425*b7893ccfSSadaf Ebrahimi }
4426*b7893ccfSSadaf Ebrahimi
DispatchCmdEndRenderPass2KHR(VkCommandBuffer commandBuffer,const VkSubpassEndInfoKHR * pSubpassEndInfo)4427*b7893ccfSSadaf Ebrahimi void DispatchCmdEndRenderPass2KHR(
4428*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4429*b7893ccfSSadaf Ebrahimi const VkSubpassEndInfoKHR* pSubpassEndInfo)
4430*b7893ccfSSadaf Ebrahimi {
4431*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
4432*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo);
4433*b7893ccfSSadaf Ebrahimi
4434*b7893ccfSSadaf Ebrahimi }
4435*b7893ccfSSadaf Ebrahimi
DispatchGetSwapchainStatusKHR(VkDevice device,VkSwapchainKHR swapchain)4436*b7893ccfSSadaf Ebrahimi VkResult DispatchGetSwapchainStatusKHR(
4437*b7893ccfSSadaf Ebrahimi VkDevice device,
4438*b7893ccfSSadaf Ebrahimi VkSwapchainKHR swapchain)
4439*b7893ccfSSadaf Ebrahimi {
4440*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4441*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetSwapchainStatusKHR(device, swapchain);
4442*b7893ccfSSadaf Ebrahimi {
4443*b7893ccfSSadaf Ebrahimi swapchain = layer_data->Unwrap(swapchain);
4444*b7893ccfSSadaf Ebrahimi }
4445*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetSwapchainStatusKHR(device, swapchain);
4446*b7893ccfSSadaf Ebrahimi
4447*b7893ccfSSadaf Ebrahimi return result;
4448*b7893ccfSSadaf Ebrahimi }
4449*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceExternalFencePropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo,VkExternalFenceProperties * pExternalFenceProperties)4450*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceExternalFencePropertiesKHR(
4451*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
4452*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
4453*b7893ccfSSadaf Ebrahimi VkExternalFenceProperties* pExternalFenceProperties)
4454*b7893ccfSSadaf Ebrahimi {
4455*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
4456*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties);
4457*b7893ccfSSadaf Ebrahimi
4458*b7893ccfSSadaf Ebrahimi }
4459*b7893ccfSSadaf Ebrahimi
4460*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
4461*b7893ccfSSadaf Ebrahimi
DispatchImportFenceWin32HandleKHR(VkDevice device,const VkImportFenceWin32HandleInfoKHR * pImportFenceWin32HandleInfo)4462*b7893ccfSSadaf Ebrahimi VkResult DispatchImportFenceWin32HandleKHR(
4463*b7893ccfSSadaf Ebrahimi VkDevice device,
4464*b7893ccfSSadaf Ebrahimi const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo)
4465*b7893ccfSSadaf Ebrahimi {
4466*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4467*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.ImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo);
4468*b7893ccfSSadaf Ebrahimi safe_VkImportFenceWin32HandleInfoKHR *local_pImportFenceWin32HandleInfo = NULL;
4469*b7893ccfSSadaf Ebrahimi {
4470*b7893ccfSSadaf Ebrahimi if (pImportFenceWin32HandleInfo) {
4471*b7893ccfSSadaf Ebrahimi local_pImportFenceWin32HandleInfo = new safe_VkImportFenceWin32HandleInfoKHR(pImportFenceWin32HandleInfo);
4472*b7893ccfSSadaf Ebrahimi if (pImportFenceWin32HandleInfo->fence) {
4473*b7893ccfSSadaf Ebrahimi local_pImportFenceWin32HandleInfo->fence = layer_data->Unwrap(pImportFenceWin32HandleInfo->fence);
4474*b7893ccfSSadaf Ebrahimi }
4475*b7893ccfSSadaf Ebrahimi }
4476*b7893ccfSSadaf Ebrahimi }
4477*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.ImportFenceWin32HandleKHR(device, (const VkImportFenceWin32HandleInfoKHR*)local_pImportFenceWin32HandleInfo);
4478*b7893ccfSSadaf Ebrahimi if (local_pImportFenceWin32HandleInfo) {
4479*b7893ccfSSadaf Ebrahimi delete local_pImportFenceWin32HandleInfo;
4480*b7893ccfSSadaf Ebrahimi }
4481*b7893ccfSSadaf Ebrahimi return result;
4482*b7893ccfSSadaf Ebrahimi }
4483*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
4484*b7893ccfSSadaf Ebrahimi
4485*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
4486*b7893ccfSSadaf Ebrahimi
DispatchGetFenceWin32HandleKHR(VkDevice device,const VkFenceGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)4487*b7893ccfSSadaf Ebrahimi VkResult DispatchGetFenceWin32HandleKHR(
4488*b7893ccfSSadaf Ebrahimi VkDevice device,
4489*b7893ccfSSadaf Ebrahimi const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
4490*b7893ccfSSadaf Ebrahimi HANDLE* pHandle)
4491*b7893ccfSSadaf Ebrahimi {
4492*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4493*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
4494*b7893ccfSSadaf Ebrahimi safe_VkFenceGetWin32HandleInfoKHR *local_pGetWin32HandleInfo = NULL;
4495*b7893ccfSSadaf Ebrahimi {
4496*b7893ccfSSadaf Ebrahimi if (pGetWin32HandleInfo) {
4497*b7893ccfSSadaf Ebrahimi local_pGetWin32HandleInfo = new safe_VkFenceGetWin32HandleInfoKHR(pGetWin32HandleInfo);
4498*b7893ccfSSadaf Ebrahimi if (pGetWin32HandleInfo->fence) {
4499*b7893ccfSSadaf Ebrahimi local_pGetWin32HandleInfo->fence = layer_data->Unwrap(pGetWin32HandleInfo->fence);
4500*b7893ccfSSadaf Ebrahimi }
4501*b7893ccfSSadaf Ebrahimi }
4502*b7893ccfSSadaf Ebrahimi }
4503*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetFenceWin32HandleKHR(device, (const VkFenceGetWin32HandleInfoKHR*)local_pGetWin32HandleInfo, pHandle);
4504*b7893ccfSSadaf Ebrahimi if (local_pGetWin32HandleInfo) {
4505*b7893ccfSSadaf Ebrahimi delete local_pGetWin32HandleInfo;
4506*b7893ccfSSadaf Ebrahimi }
4507*b7893ccfSSadaf Ebrahimi return result;
4508*b7893ccfSSadaf Ebrahimi }
4509*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
4510*b7893ccfSSadaf Ebrahimi
DispatchImportFenceFdKHR(VkDevice device,const VkImportFenceFdInfoKHR * pImportFenceFdInfo)4511*b7893ccfSSadaf Ebrahimi VkResult DispatchImportFenceFdKHR(
4512*b7893ccfSSadaf Ebrahimi VkDevice device,
4513*b7893ccfSSadaf Ebrahimi const VkImportFenceFdInfoKHR* pImportFenceFdInfo)
4514*b7893ccfSSadaf Ebrahimi {
4515*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4516*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.ImportFenceFdKHR(device, pImportFenceFdInfo);
4517*b7893ccfSSadaf Ebrahimi safe_VkImportFenceFdInfoKHR *local_pImportFenceFdInfo = NULL;
4518*b7893ccfSSadaf Ebrahimi {
4519*b7893ccfSSadaf Ebrahimi if (pImportFenceFdInfo) {
4520*b7893ccfSSadaf Ebrahimi local_pImportFenceFdInfo = new safe_VkImportFenceFdInfoKHR(pImportFenceFdInfo);
4521*b7893ccfSSadaf Ebrahimi if (pImportFenceFdInfo->fence) {
4522*b7893ccfSSadaf Ebrahimi local_pImportFenceFdInfo->fence = layer_data->Unwrap(pImportFenceFdInfo->fence);
4523*b7893ccfSSadaf Ebrahimi }
4524*b7893ccfSSadaf Ebrahimi }
4525*b7893ccfSSadaf Ebrahimi }
4526*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.ImportFenceFdKHR(device, (const VkImportFenceFdInfoKHR*)local_pImportFenceFdInfo);
4527*b7893ccfSSadaf Ebrahimi if (local_pImportFenceFdInfo) {
4528*b7893ccfSSadaf Ebrahimi delete local_pImportFenceFdInfo;
4529*b7893ccfSSadaf Ebrahimi }
4530*b7893ccfSSadaf Ebrahimi return result;
4531*b7893ccfSSadaf Ebrahimi }
4532*b7893ccfSSadaf Ebrahimi
DispatchGetFenceFdKHR(VkDevice device,const VkFenceGetFdInfoKHR * pGetFdInfo,int * pFd)4533*b7893ccfSSadaf Ebrahimi VkResult DispatchGetFenceFdKHR(
4534*b7893ccfSSadaf Ebrahimi VkDevice device,
4535*b7893ccfSSadaf Ebrahimi const VkFenceGetFdInfoKHR* pGetFdInfo,
4536*b7893ccfSSadaf Ebrahimi int* pFd)
4537*b7893ccfSSadaf Ebrahimi {
4538*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4539*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetFenceFdKHR(device, pGetFdInfo, pFd);
4540*b7893ccfSSadaf Ebrahimi safe_VkFenceGetFdInfoKHR *local_pGetFdInfo = NULL;
4541*b7893ccfSSadaf Ebrahimi {
4542*b7893ccfSSadaf Ebrahimi if (pGetFdInfo) {
4543*b7893ccfSSadaf Ebrahimi local_pGetFdInfo = new safe_VkFenceGetFdInfoKHR(pGetFdInfo);
4544*b7893ccfSSadaf Ebrahimi if (pGetFdInfo->fence) {
4545*b7893ccfSSadaf Ebrahimi local_pGetFdInfo->fence = layer_data->Unwrap(pGetFdInfo->fence);
4546*b7893ccfSSadaf Ebrahimi }
4547*b7893ccfSSadaf Ebrahimi }
4548*b7893ccfSSadaf Ebrahimi }
4549*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetFenceFdKHR(device, (const VkFenceGetFdInfoKHR*)local_pGetFdInfo, pFd);
4550*b7893ccfSSadaf Ebrahimi if (local_pGetFdInfo) {
4551*b7893ccfSSadaf Ebrahimi delete local_pGetFdInfo;
4552*b7893ccfSSadaf Ebrahimi }
4553*b7893ccfSSadaf Ebrahimi return result;
4554*b7893ccfSSadaf Ebrahimi }
4555*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceSurfaceCapabilities2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,VkSurfaceCapabilities2KHR * pSurfaceCapabilities)4556*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPhysicalDeviceSurfaceCapabilities2KHR(
4557*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
4558*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
4559*b7893ccfSSadaf Ebrahimi VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
4560*b7893ccfSSadaf Ebrahimi {
4561*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
4562*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities);
4563*b7893ccfSSadaf Ebrahimi safe_VkPhysicalDeviceSurfaceInfo2KHR *local_pSurfaceInfo = NULL;
4564*b7893ccfSSadaf Ebrahimi {
4565*b7893ccfSSadaf Ebrahimi if (pSurfaceInfo) {
4566*b7893ccfSSadaf Ebrahimi local_pSurfaceInfo = new safe_VkPhysicalDeviceSurfaceInfo2KHR(pSurfaceInfo);
4567*b7893ccfSSadaf Ebrahimi if (pSurfaceInfo->surface) {
4568*b7893ccfSSadaf Ebrahimi local_pSurfaceInfo->surface = layer_data->Unwrap(pSurfaceInfo->surface);
4569*b7893ccfSSadaf Ebrahimi }
4570*b7893ccfSSadaf Ebrahimi }
4571*b7893ccfSSadaf Ebrahimi }
4572*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, (const VkPhysicalDeviceSurfaceInfo2KHR*)local_pSurfaceInfo, pSurfaceCapabilities);
4573*b7893ccfSSadaf Ebrahimi if (local_pSurfaceInfo) {
4574*b7893ccfSSadaf Ebrahimi delete local_pSurfaceInfo;
4575*b7893ccfSSadaf Ebrahimi }
4576*b7893ccfSSadaf Ebrahimi return result;
4577*b7893ccfSSadaf Ebrahimi }
4578*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceSurfaceFormats2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,uint32_t * pSurfaceFormatCount,VkSurfaceFormat2KHR * pSurfaceFormats)4579*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPhysicalDeviceSurfaceFormats2KHR(
4580*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
4581*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
4582*b7893ccfSSadaf Ebrahimi uint32_t* pSurfaceFormatCount,
4583*b7893ccfSSadaf Ebrahimi VkSurfaceFormat2KHR* pSurfaceFormats)
4584*b7893ccfSSadaf Ebrahimi {
4585*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
4586*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats);
4587*b7893ccfSSadaf Ebrahimi safe_VkPhysicalDeviceSurfaceInfo2KHR *local_pSurfaceInfo = NULL;
4588*b7893ccfSSadaf Ebrahimi {
4589*b7893ccfSSadaf Ebrahimi if (pSurfaceInfo) {
4590*b7893ccfSSadaf Ebrahimi local_pSurfaceInfo = new safe_VkPhysicalDeviceSurfaceInfo2KHR(pSurfaceInfo);
4591*b7893ccfSSadaf Ebrahimi if (pSurfaceInfo->surface) {
4592*b7893ccfSSadaf Ebrahimi local_pSurfaceInfo->surface = layer_data->Unwrap(pSurfaceInfo->surface);
4593*b7893ccfSSadaf Ebrahimi }
4594*b7893ccfSSadaf Ebrahimi }
4595*b7893ccfSSadaf Ebrahimi }
4596*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, (const VkPhysicalDeviceSurfaceInfo2KHR*)local_pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats);
4597*b7893ccfSSadaf Ebrahimi if (local_pSurfaceInfo) {
4598*b7893ccfSSadaf Ebrahimi delete local_pSurfaceInfo;
4599*b7893ccfSSadaf Ebrahimi }
4600*b7893ccfSSadaf Ebrahimi return result;
4601*b7893ccfSSadaf Ebrahimi }
4602*b7893ccfSSadaf Ebrahimi
4603*b7893ccfSSadaf Ebrahimi // Skip vkGetPhysicalDeviceDisplayProperties2KHR dispatch, manually generated
4604*b7893ccfSSadaf Ebrahimi
4605*b7893ccfSSadaf Ebrahimi // Skip vkGetPhysicalDeviceDisplayPlaneProperties2KHR dispatch, manually generated
4606*b7893ccfSSadaf Ebrahimi
4607*b7893ccfSSadaf Ebrahimi // Skip vkGetDisplayModeProperties2KHR dispatch, manually generated
4608*b7893ccfSSadaf Ebrahimi
DispatchGetDisplayPlaneCapabilities2KHR(VkPhysicalDevice physicalDevice,const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo,VkDisplayPlaneCapabilities2KHR * pCapabilities)4609*b7893ccfSSadaf Ebrahimi VkResult DispatchGetDisplayPlaneCapabilities2KHR(
4610*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
4611*b7893ccfSSadaf Ebrahimi const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo,
4612*b7893ccfSSadaf Ebrahimi VkDisplayPlaneCapabilities2KHR* pCapabilities)
4613*b7893ccfSSadaf Ebrahimi {
4614*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
4615*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.GetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities);
4616*b7893ccfSSadaf Ebrahimi safe_VkDisplayPlaneInfo2KHR *local_pDisplayPlaneInfo = NULL;
4617*b7893ccfSSadaf Ebrahimi {
4618*b7893ccfSSadaf Ebrahimi if (pDisplayPlaneInfo) {
4619*b7893ccfSSadaf Ebrahimi local_pDisplayPlaneInfo = new safe_VkDisplayPlaneInfo2KHR(pDisplayPlaneInfo);
4620*b7893ccfSSadaf Ebrahimi if (pDisplayPlaneInfo->mode) {
4621*b7893ccfSSadaf Ebrahimi local_pDisplayPlaneInfo->mode = layer_data->Unwrap(pDisplayPlaneInfo->mode);
4622*b7893ccfSSadaf Ebrahimi }
4623*b7893ccfSSadaf Ebrahimi }
4624*b7893ccfSSadaf Ebrahimi }
4625*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetDisplayPlaneCapabilities2KHR(physicalDevice, (const VkDisplayPlaneInfo2KHR*)local_pDisplayPlaneInfo, pCapabilities);
4626*b7893ccfSSadaf Ebrahimi if (local_pDisplayPlaneInfo) {
4627*b7893ccfSSadaf Ebrahimi delete local_pDisplayPlaneInfo;
4628*b7893ccfSSadaf Ebrahimi }
4629*b7893ccfSSadaf Ebrahimi return result;
4630*b7893ccfSSadaf Ebrahimi }
4631*b7893ccfSSadaf Ebrahimi
DispatchGetImageMemoryRequirements2KHR(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)4632*b7893ccfSSadaf Ebrahimi void DispatchGetImageMemoryRequirements2KHR(
4633*b7893ccfSSadaf Ebrahimi VkDevice device,
4634*b7893ccfSSadaf Ebrahimi const VkImageMemoryRequirementsInfo2* pInfo,
4635*b7893ccfSSadaf Ebrahimi VkMemoryRequirements2* pMemoryRequirements)
4636*b7893ccfSSadaf Ebrahimi {
4637*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4638*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements);
4639*b7893ccfSSadaf Ebrahimi safe_VkImageMemoryRequirementsInfo2 *local_pInfo = NULL;
4640*b7893ccfSSadaf Ebrahimi {
4641*b7893ccfSSadaf Ebrahimi if (pInfo) {
4642*b7893ccfSSadaf Ebrahimi local_pInfo = new safe_VkImageMemoryRequirementsInfo2(pInfo);
4643*b7893ccfSSadaf Ebrahimi if (pInfo->image) {
4644*b7893ccfSSadaf Ebrahimi local_pInfo->image = layer_data->Unwrap(pInfo->image);
4645*b7893ccfSSadaf Ebrahimi }
4646*b7893ccfSSadaf Ebrahimi }
4647*b7893ccfSSadaf Ebrahimi }
4648*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.GetImageMemoryRequirements2KHR(device, (const VkImageMemoryRequirementsInfo2*)local_pInfo, pMemoryRequirements);
4649*b7893ccfSSadaf Ebrahimi if (local_pInfo) {
4650*b7893ccfSSadaf Ebrahimi delete local_pInfo;
4651*b7893ccfSSadaf Ebrahimi }
4652*b7893ccfSSadaf Ebrahimi }
4653*b7893ccfSSadaf Ebrahimi
DispatchGetBufferMemoryRequirements2KHR(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)4654*b7893ccfSSadaf Ebrahimi void DispatchGetBufferMemoryRequirements2KHR(
4655*b7893ccfSSadaf Ebrahimi VkDevice device,
4656*b7893ccfSSadaf Ebrahimi const VkBufferMemoryRequirementsInfo2* pInfo,
4657*b7893ccfSSadaf Ebrahimi VkMemoryRequirements2* pMemoryRequirements)
4658*b7893ccfSSadaf Ebrahimi {
4659*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4660*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements);
4661*b7893ccfSSadaf Ebrahimi safe_VkBufferMemoryRequirementsInfo2 *local_pInfo = NULL;
4662*b7893ccfSSadaf Ebrahimi {
4663*b7893ccfSSadaf Ebrahimi if (pInfo) {
4664*b7893ccfSSadaf Ebrahimi local_pInfo = new safe_VkBufferMemoryRequirementsInfo2(pInfo);
4665*b7893ccfSSadaf Ebrahimi if (pInfo->buffer) {
4666*b7893ccfSSadaf Ebrahimi local_pInfo->buffer = layer_data->Unwrap(pInfo->buffer);
4667*b7893ccfSSadaf Ebrahimi }
4668*b7893ccfSSadaf Ebrahimi }
4669*b7893ccfSSadaf Ebrahimi }
4670*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.GetBufferMemoryRequirements2KHR(device, (const VkBufferMemoryRequirementsInfo2*)local_pInfo, pMemoryRequirements);
4671*b7893ccfSSadaf Ebrahimi if (local_pInfo) {
4672*b7893ccfSSadaf Ebrahimi delete local_pInfo;
4673*b7893ccfSSadaf Ebrahimi }
4674*b7893ccfSSadaf Ebrahimi }
4675*b7893ccfSSadaf Ebrahimi
DispatchGetImageSparseMemoryRequirements2KHR(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)4676*b7893ccfSSadaf Ebrahimi void DispatchGetImageSparseMemoryRequirements2KHR(
4677*b7893ccfSSadaf Ebrahimi VkDevice device,
4678*b7893ccfSSadaf Ebrahimi const VkImageSparseMemoryRequirementsInfo2* pInfo,
4679*b7893ccfSSadaf Ebrahimi uint32_t* pSparseMemoryRequirementCount,
4680*b7893ccfSSadaf Ebrahimi VkSparseImageMemoryRequirements2* pSparseMemoryRequirements)
4681*b7893ccfSSadaf Ebrahimi {
4682*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4683*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
4684*b7893ccfSSadaf Ebrahimi safe_VkImageSparseMemoryRequirementsInfo2 *local_pInfo = NULL;
4685*b7893ccfSSadaf Ebrahimi {
4686*b7893ccfSSadaf Ebrahimi if (pInfo) {
4687*b7893ccfSSadaf Ebrahimi local_pInfo = new safe_VkImageSparseMemoryRequirementsInfo2(pInfo);
4688*b7893ccfSSadaf Ebrahimi if (pInfo->image) {
4689*b7893ccfSSadaf Ebrahimi local_pInfo->image = layer_data->Unwrap(pInfo->image);
4690*b7893ccfSSadaf Ebrahimi }
4691*b7893ccfSSadaf Ebrahimi }
4692*b7893ccfSSadaf Ebrahimi }
4693*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.GetImageSparseMemoryRequirements2KHR(device, (const VkImageSparseMemoryRequirementsInfo2*)local_pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
4694*b7893ccfSSadaf Ebrahimi if (local_pInfo) {
4695*b7893ccfSSadaf Ebrahimi delete local_pInfo;
4696*b7893ccfSSadaf Ebrahimi }
4697*b7893ccfSSadaf Ebrahimi }
4698*b7893ccfSSadaf Ebrahimi
DispatchCreateSamplerYcbcrConversionKHR(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)4699*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateSamplerYcbcrConversionKHR(
4700*b7893ccfSSadaf Ebrahimi VkDevice device,
4701*b7893ccfSSadaf Ebrahimi const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
4702*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
4703*b7893ccfSSadaf Ebrahimi VkSamplerYcbcrConversion* pYcbcrConversion)
4704*b7893ccfSSadaf Ebrahimi {
4705*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4706*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion);
4707*b7893ccfSSadaf Ebrahimi safe_VkSamplerYcbcrConversionCreateInfo *local_pCreateInfo = NULL;
4708*b7893ccfSSadaf Ebrahimi {
4709*b7893ccfSSadaf Ebrahimi if (pCreateInfo) {
4710*b7893ccfSSadaf Ebrahimi local_pCreateInfo = new safe_VkSamplerYcbcrConversionCreateInfo(pCreateInfo);
4711*b7893ccfSSadaf Ebrahimi WrapPnextChainHandles(layer_data, local_pCreateInfo->pNext);
4712*b7893ccfSSadaf Ebrahimi }
4713*b7893ccfSSadaf Ebrahimi }
4714*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateSamplerYcbcrConversionKHR(device, (const VkSamplerYcbcrConversionCreateInfo*)local_pCreateInfo, pAllocator, pYcbcrConversion);
4715*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo) {
4716*b7893ccfSSadaf Ebrahimi delete local_pCreateInfo;
4717*b7893ccfSSadaf Ebrahimi }
4718*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
4719*b7893ccfSSadaf Ebrahimi *pYcbcrConversion = layer_data->WrapNew(*pYcbcrConversion);
4720*b7893ccfSSadaf Ebrahimi }
4721*b7893ccfSSadaf Ebrahimi return result;
4722*b7893ccfSSadaf Ebrahimi }
4723*b7893ccfSSadaf Ebrahimi
DispatchDestroySamplerYcbcrConversionKHR(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)4724*b7893ccfSSadaf Ebrahimi void DispatchDestroySamplerYcbcrConversionKHR(
4725*b7893ccfSSadaf Ebrahimi VkDevice device,
4726*b7893ccfSSadaf Ebrahimi VkSamplerYcbcrConversion ycbcrConversion,
4727*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
4728*b7893ccfSSadaf Ebrahimi {
4729*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4730*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator);
4731*b7893ccfSSadaf Ebrahimi uint64_t ycbcrConversion_id = reinterpret_cast<uint64_t &>(ycbcrConversion);
4732*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(ycbcrConversion_id);
4733*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
4734*b7893ccfSSadaf Ebrahimi ycbcrConversion = (VkSamplerYcbcrConversion)iter->second;
4735*b7893ccfSSadaf Ebrahimi } else {
4736*b7893ccfSSadaf Ebrahimi ycbcrConversion = (VkSamplerYcbcrConversion)0;
4737*b7893ccfSSadaf Ebrahimi }
4738*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator);
4739*b7893ccfSSadaf Ebrahimi
4740*b7893ccfSSadaf Ebrahimi }
4741*b7893ccfSSadaf Ebrahimi
DispatchBindBufferMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)4742*b7893ccfSSadaf Ebrahimi VkResult DispatchBindBufferMemory2KHR(
4743*b7893ccfSSadaf Ebrahimi VkDevice device,
4744*b7893ccfSSadaf Ebrahimi uint32_t bindInfoCount,
4745*b7893ccfSSadaf Ebrahimi const VkBindBufferMemoryInfo* pBindInfos)
4746*b7893ccfSSadaf Ebrahimi {
4747*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4748*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.BindBufferMemory2KHR(device, bindInfoCount, pBindInfos);
4749*b7893ccfSSadaf Ebrahimi safe_VkBindBufferMemoryInfo *local_pBindInfos = NULL;
4750*b7893ccfSSadaf Ebrahimi {
4751*b7893ccfSSadaf Ebrahimi if (pBindInfos) {
4752*b7893ccfSSadaf Ebrahimi local_pBindInfos = new safe_VkBindBufferMemoryInfo[bindInfoCount];
4753*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < bindInfoCount; ++index0) {
4754*b7893ccfSSadaf Ebrahimi local_pBindInfos[index0].initialize(&pBindInfos[index0]);
4755*b7893ccfSSadaf Ebrahimi if (pBindInfos[index0].buffer) {
4756*b7893ccfSSadaf Ebrahimi local_pBindInfos[index0].buffer = layer_data->Unwrap(pBindInfos[index0].buffer);
4757*b7893ccfSSadaf Ebrahimi }
4758*b7893ccfSSadaf Ebrahimi if (pBindInfos[index0].memory) {
4759*b7893ccfSSadaf Ebrahimi local_pBindInfos[index0].memory = layer_data->Unwrap(pBindInfos[index0].memory);
4760*b7893ccfSSadaf Ebrahimi }
4761*b7893ccfSSadaf Ebrahimi }
4762*b7893ccfSSadaf Ebrahimi }
4763*b7893ccfSSadaf Ebrahimi }
4764*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.BindBufferMemory2KHR(device, bindInfoCount, (const VkBindBufferMemoryInfo*)local_pBindInfos);
4765*b7893ccfSSadaf Ebrahimi if (local_pBindInfos) {
4766*b7893ccfSSadaf Ebrahimi delete[] local_pBindInfos;
4767*b7893ccfSSadaf Ebrahimi }
4768*b7893ccfSSadaf Ebrahimi return result;
4769*b7893ccfSSadaf Ebrahimi }
4770*b7893ccfSSadaf Ebrahimi
DispatchBindImageMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)4771*b7893ccfSSadaf Ebrahimi VkResult DispatchBindImageMemory2KHR(
4772*b7893ccfSSadaf Ebrahimi VkDevice device,
4773*b7893ccfSSadaf Ebrahimi uint32_t bindInfoCount,
4774*b7893ccfSSadaf Ebrahimi const VkBindImageMemoryInfo* pBindInfos)
4775*b7893ccfSSadaf Ebrahimi {
4776*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4777*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.BindImageMemory2KHR(device, bindInfoCount, pBindInfos);
4778*b7893ccfSSadaf Ebrahimi safe_VkBindImageMemoryInfo *local_pBindInfos = NULL;
4779*b7893ccfSSadaf Ebrahimi {
4780*b7893ccfSSadaf Ebrahimi if (pBindInfos) {
4781*b7893ccfSSadaf Ebrahimi local_pBindInfos = new safe_VkBindImageMemoryInfo[bindInfoCount];
4782*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < bindInfoCount; ++index0) {
4783*b7893ccfSSadaf Ebrahimi local_pBindInfos[index0].initialize(&pBindInfos[index0]);
4784*b7893ccfSSadaf Ebrahimi WrapPnextChainHandles(layer_data, local_pBindInfos[index0].pNext);
4785*b7893ccfSSadaf Ebrahimi if (pBindInfos[index0].image) {
4786*b7893ccfSSadaf Ebrahimi local_pBindInfos[index0].image = layer_data->Unwrap(pBindInfos[index0].image);
4787*b7893ccfSSadaf Ebrahimi }
4788*b7893ccfSSadaf Ebrahimi if (pBindInfos[index0].memory) {
4789*b7893ccfSSadaf Ebrahimi local_pBindInfos[index0].memory = layer_data->Unwrap(pBindInfos[index0].memory);
4790*b7893ccfSSadaf Ebrahimi }
4791*b7893ccfSSadaf Ebrahimi }
4792*b7893ccfSSadaf Ebrahimi }
4793*b7893ccfSSadaf Ebrahimi }
4794*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.BindImageMemory2KHR(device, bindInfoCount, (const VkBindImageMemoryInfo*)local_pBindInfos);
4795*b7893ccfSSadaf Ebrahimi if (local_pBindInfos) {
4796*b7893ccfSSadaf Ebrahimi delete[] local_pBindInfos;
4797*b7893ccfSSadaf Ebrahimi }
4798*b7893ccfSSadaf Ebrahimi return result;
4799*b7893ccfSSadaf Ebrahimi }
4800*b7893ccfSSadaf Ebrahimi
DispatchGetDescriptorSetLayoutSupportKHR(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)4801*b7893ccfSSadaf Ebrahimi void DispatchGetDescriptorSetLayoutSupportKHR(
4802*b7893ccfSSadaf Ebrahimi VkDevice device,
4803*b7893ccfSSadaf Ebrahimi const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
4804*b7893ccfSSadaf Ebrahimi VkDescriptorSetLayoutSupport* pSupport)
4805*b7893ccfSSadaf Ebrahimi {
4806*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4807*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport);
4808*b7893ccfSSadaf Ebrahimi safe_VkDescriptorSetLayoutCreateInfo *local_pCreateInfo = NULL;
4809*b7893ccfSSadaf Ebrahimi {
4810*b7893ccfSSadaf Ebrahimi if (pCreateInfo) {
4811*b7893ccfSSadaf Ebrahimi local_pCreateInfo = new safe_VkDescriptorSetLayoutCreateInfo(pCreateInfo);
4812*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo->pBindings) {
4813*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pCreateInfo->bindingCount; ++index1) {
4814*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo->pBindings[index1].pImmutableSamplers) {
4815*b7893ccfSSadaf Ebrahimi for (uint32_t index2 = 0; index2 < local_pCreateInfo->pBindings[index1].descriptorCount; ++index2) {
4816*b7893ccfSSadaf Ebrahimi local_pCreateInfo->pBindings[index1].pImmutableSamplers[index2] = layer_data->Unwrap(local_pCreateInfo->pBindings[index1].pImmutableSamplers[index2]);
4817*b7893ccfSSadaf Ebrahimi }
4818*b7893ccfSSadaf Ebrahimi }
4819*b7893ccfSSadaf Ebrahimi }
4820*b7893ccfSSadaf Ebrahimi }
4821*b7893ccfSSadaf Ebrahimi }
4822*b7893ccfSSadaf Ebrahimi }
4823*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.GetDescriptorSetLayoutSupportKHR(device, (const VkDescriptorSetLayoutCreateInfo*)local_pCreateInfo, pSupport);
4824*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo) {
4825*b7893ccfSSadaf Ebrahimi delete local_pCreateInfo;
4826*b7893ccfSSadaf Ebrahimi }
4827*b7893ccfSSadaf Ebrahimi }
4828*b7893ccfSSadaf Ebrahimi
DispatchCmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)4829*b7893ccfSSadaf Ebrahimi void DispatchCmdDrawIndirectCountKHR(
4830*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4831*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
4832*b7893ccfSSadaf Ebrahimi VkDeviceSize offset,
4833*b7893ccfSSadaf Ebrahimi VkBuffer countBuffer,
4834*b7893ccfSSadaf Ebrahimi VkDeviceSize countBufferOffset,
4835*b7893ccfSSadaf Ebrahimi uint32_t maxDrawCount,
4836*b7893ccfSSadaf Ebrahimi uint32_t stride)
4837*b7893ccfSSadaf Ebrahimi {
4838*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
4839*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
4840*b7893ccfSSadaf Ebrahimi {
4841*b7893ccfSSadaf Ebrahimi buffer = layer_data->Unwrap(buffer);
4842*b7893ccfSSadaf Ebrahimi countBuffer = layer_data->Unwrap(countBuffer);
4843*b7893ccfSSadaf Ebrahimi }
4844*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
4845*b7893ccfSSadaf Ebrahimi
4846*b7893ccfSSadaf Ebrahimi }
4847*b7893ccfSSadaf Ebrahimi
DispatchCmdDrawIndexedIndirectCountKHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)4848*b7893ccfSSadaf Ebrahimi void DispatchCmdDrawIndexedIndirectCountKHR(
4849*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4850*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
4851*b7893ccfSSadaf Ebrahimi VkDeviceSize offset,
4852*b7893ccfSSadaf Ebrahimi VkBuffer countBuffer,
4853*b7893ccfSSadaf Ebrahimi VkDeviceSize countBufferOffset,
4854*b7893ccfSSadaf Ebrahimi uint32_t maxDrawCount,
4855*b7893ccfSSadaf Ebrahimi uint32_t stride)
4856*b7893ccfSSadaf Ebrahimi {
4857*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
4858*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
4859*b7893ccfSSadaf Ebrahimi {
4860*b7893ccfSSadaf Ebrahimi buffer = layer_data->Unwrap(buffer);
4861*b7893ccfSSadaf Ebrahimi countBuffer = layer_data->Unwrap(countBuffer);
4862*b7893ccfSSadaf Ebrahimi }
4863*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
4864*b7893ccfSSadaf Ebrahimi
4865*b7893ccfSSadaf Ebrahimi }
4866*b7893ccfSSadaf Ebrahimi
DispatchGetPipelineExecutablePropertiesKHR(VkDevice device,const VkPipelineInfoKHR * pPipelineInfo,uint32_t * pExecutableCount,VkPipelineExecutablePropertiesKHR * pProperties)4867*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPipelineExecutablePropertiesKHR(
4868*b7893ccfSSadaf Ebrahimi VkDevice device,
4869*b7893ccfSSadaf Ebrahimi const VkPipelineInfoKHR* pPipelineInfo,
4870*b7893ccfSSadaf Ebrahimi uint32_t* pExecutableCount,
4871*b7893ccfSSadaf Ebrahimi VkPipelineExecutablePropertiesKHR* pProperties)
4872*b7893ccfSSadaf Ebrahimi {
4873*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4874*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties);
4875*b7893ccfSSadaf Ebrahimi safe_VkPipelineInfoKHR *local_pPipelineInfo = NULL;
4876*b7893ccfSSadaf Ebrahimi {
4877*b7893ccfSSadaf Ebrahimi if (pPipelineInfo) {
4878*b7893ccfSSadaf Ebrahimi local_pPipelineInfo = new safe_VkPipelineInfoKHR(pPipelineInfo);
4879*b7893ccfSSadaf Ebrahimi if (pPipelineInfo->pipeline) {
4880*b7893ccfSSadaf Ebrahimi local_pPipelineInfo->pipeline = layer_data->Unwrap(pPipelineInfo->pipeline);
4881*b7893ccfSSadaf Ebrahimi }
4882*b7893ccfSSadaf Ebrahimi }
4883*b7893ccfSSadaf Ebrahimi }
4884*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetPipelineExecutablePropertiesKHR(device, (const VkPipelineInfoKHR*)local_pPipelineInfo, pExecutableCount, pProperties);
4885*b7893ccfSSadaf Ebrahimi if (local_pPipelineInfo) {
4886*b7893ccfSSadaf Ebrahimi delete local_pPipelineInfo;
4887*b7893ccfSSadaf Ebrahimi }
4888*b7893ccfSSadaf Ebrahimi return result;
4889*b7893ccfSSadaf Ebrahimi }
4890*b7893ccfSSadaf Ebrahimi
DispatchGetPipelineExecutableStatisticsKHR(VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pStatisticCount,VkPipelineExecutableStatisticKHR * pStatistics)4891*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPipelineExecutableStatisticsKHR(
4892*b7893ccfSSadaf Ebrahimi VkDevice device,
4893*b7893ccfSSadaf Ebrahimi const VkPipelineExecutableInfoKHR* pExecutableInfo,
4894*b7893ccfSSadaf Ebrahimi uint32_t* pStatisticCount,
4895*b7893ccfSSadaf Ebrahimi VkPipelineExecutableStatisticKHR* pStatistics)
4896*b7893ccfSSadaf Ebrahimi {
4897*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4898*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics);
4899*b7893ccfSSadaf Ebrahimi safe_VkPipelineExecutableInfoKHR *local_pExecutableInfo = NULL;
4900*b7893ccfSSadaf Ebrahimi {
4901*b7893ccfSSadaf Ebrahimi if (pExecutableInfo) {
4902*b7893ccfSSadaf Ebrahimi local_pExecutableInfo = new safe_VkPipelineExecutableInfoKHR(pExecutableInfo);
4903*b7893ccfSSadaf Ebrahimi if (pExecutableInfo->pipeline) {
4904*b7893ccfSSadaf Ebrahimi local_pExecutableInfo->pipeline = layer_data->Unwrap(pExecutableInfo->pipeline);
4905*b7893ccfSSadaf Ebrahimi }
4906*b7893ccfSSadaf Ebrahimi }
4907*b7893ccfSSadaf Ebrahimi }
4908*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetPipelineExecutableStatisticsKHR(device, (const VkPipelineExecutableInfoKHR*)local_pExecutableInfo, pStatisticCount, pStatistics);
4909*b7893ccfSSadaf Ebrahimi if (local_pExecutableInfo) {
4910*b7893ccfSSadaf Ebrahimi delete local_pExecutableInfo;
4911*b7893ccfSSadaf Ebrahimi }
4912*b7893ccfSSadaf Ebrahimi return result;
4913*b7893ccfSSadaf Ebrahimi }
4914*b7893ccfSSadaf Ebrahimi
DispatchGetPipelineExecutableInternalRepresentationsKHR(VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pInternalRepresentationCount,VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations)4915*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPipelineExecutableInternalRepresentationsKHR(
4916*b7893ccfSSadaf Ebrahimi VkDevice device,
4917*b7893ccfSSadaf Ebrahimi const VkPipelineExecutableInfoKHR* pExecutableInfo,
4918*b7893ccfSSadaf Ebrahimi uint32_t* pInternalRepresentationCount,
4919*b7893ccfSSadaf Ebrahimi VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations)
4920*b7893ccfSSadaf Ebrahimi {
4921*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
4922*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations);
4923*b7893ccfSSadaf Ebrahimi safe_VkPipelineExecutableInfoKHR *local_pExecutableInfo = NULL;
4924*b7893ccfSSadaf Ebrahimi {
4925*b7893ccfSSadaf Ebrahimi if (pExecutableInfo) {
4926*b7893ccfSSadaf Ebrahimi local_pExecutableInfo = new safe_VkPipelineExecutableInfoKHR(pExecutableInfo);
4927*b7893ccfSSadaf Ebrahimi if (pExecutableInfo->pipeline) {
4928*b7893ccfSSadaf Ebrahimi local_pExecutableInfo->pipeline = layer_data->Unwrap(pExecutableInfo->pipeline);
4929*b7893ccfSSadaf Ebrahimi }
4930*b7893ccfSSadaf Ebrahimi }
4931*b7893ccfSSadaf Ebrahimi }
4932*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetPipelineExecutableInternalRepresentationsKHR(device, (const VkPipelineExecutableInfoKHR*)local_pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations);
4933*b7893ccfSSadaf Ebrahimi if (local_pExecutableInfo) {
4934*b7893ccfSSadaf Ebrahimi delete local_pExecutableInfo;
4935*b7893ccfSSadaf Ebrahimi }
4936*b7893ccfSSadaf Ebrahimi return result;
4937*b7893ccfSSadaf Ebrahimi }
4938*b7893ccfSSadaf Ebrahimi
DispatchCreateDebugReportCallbackEXT(VkInstance instance,const VkDebugReportCallbackCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDebugReportCallbackEXT * pCallback)4939*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateDebugReportCallbackEXT(
4940*b7893ccfSSadaf Ebrahimi VkInstance instance,
4941*b7893ccfSSadaf Ebrahimi const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
4942*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
4943*b7893ccfSSadaf Ebrahimi VkDebugReportCallbackEXT* pCallback)
4944*b7893ccfSSadaf Ebrahimi {
4945*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
4946*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.CreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback);
4947*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.CreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback);
4948*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
4949*b7893ccfSSadaf Ebrahimi *pCallback = layer_data->WrapNew(*pCallback);
4950*b7893ccfSSadaf Ebrahimi }
4951*b7893ccfSSadaf Ebrahimi return result;
4952*b7893ccfSSadaf Ebrahimi }
4953*b7893ccfSSadaf Ebrahimi
DispatchDestroyDebugReportCallbackEXT(VkInstance instance,VkDebugReportCallbackEXT callback,const VkAllocationCallbacks * pAllocator)4954*b7893ccfSSadaf Ebrahimi void DispatchDestroyDebugReportCallbackEXT(
4955*b7893ccfSSadaf Ebrahimi VkInstance instance,
4956*b7893ccfSSadaf Ebrahimi VkDebugReportCallbackEXT callback,
4957*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
4958*b7893ccfSSadaf Ebrahimi {
4959*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
4960*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.DestroyDebugReportCallbackEXT(instance, callback, pAllocator);
4961*b7893ccfSSadaf Ebrahimi uint64_t callback_id = reinterpret_cast<uint64_t &>(callback);
4962*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(callback_id);
4963*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
4964*b7893ccfSSadaf Ebrahimi callback = (VkDebugReportCallbackEXT)iter->second;
4965*b7893ccfSSadaf Ebrahimi } else {
4966*b7893ccfSSadaf Ebrahimi callback = (VkDebugReportCallbackEXT)0;
4967*b7893ccfSSadaf Ebrahimi }
4968*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.DestroyDebugReportCallbackEXT(instance, callback, pAllocator);
4969*b7893ccfSSadaf Ebrahimi
4970*b7893ccfSSadaf Ebrahimi }
4971*b7893ccfSSadaf Ebrahimi
DispatchDebugReportMessageEXT(VkInstance instance,VkDebugReportFlagsEXT flags,VkDebugReportObjectTypeEXT objectType,uint64_t object,size_t location,int32_t messageCode,const char * pLayerPrefix,const char * pMessage)4972*b7893ccfSSadaf Ebrahimi void DispatchDebugReportMessageEXT(
4973*b7893ccfSSadaf Ebrahimi VkInstance instance,
4974*b7893ccfSSadaf Ebrahimi VkDebugReportFlagsEXT flags,
4975*b7893ccfSSadaf Ebrahimi VkDebugReportObjectTypeEXT objectType,
4976*b7893ccfSSadaf Ebrahimi uint64_t object,
4977*b7893ccfSSadaf Ebrahimi size_t location,
4978*b7893ccfSSadaf Ebrahimi int32_t messageCode,
4979*b7893ccfSSadaf Ebrahimi const char* pLayerPrefix,
4980*b7893ccfSSadaf Ebrahimi const char* pMessage)
4981*b7893ccfSSadaf Ebrahimi {
4982*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
4983*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.DebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage);
4984*b7893ccfSSadaf Ebrahimi
4985*b7893ccfSSadaf Ebrahimi }
4986*b7893ccfSSadaf Ebrahimi
4987*b7893ccfSSadaf Ebrahimi // Skip vkDebugMarkerSetObjectTagEXT dispatch, manually generated
4988*b7893ccfSSadaf Ebrahimi
4989*b7893ccfSSadaf Ebrahimi // Skip vkDebugMarkerSetObjectNameEXT dispatch, manually generated
4990*b7893ccfSSadaf Ebrahimi
DispatchCmdDebugMarkerBeginEXT(VkCommandBuffer commandBuffer,const VkDebugMarkerMarkerInfoEXT * pMarkerInfo)4991*b7893ccfSSadaf Ebrahimi void DispatchCmdDebugMarkerBeginEXT(
4992*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
4993*b7893ccfSSadaf Ebrahimi const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
4994*b7893ccfSSadaf Ebrahimi {
4995*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
4996*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo);
4997*b7893ccfSSadaf Ebrahimi
4998*b7893ccfSSadaf Ebrahimi }
4999*b7893ccfSSadaf Ebrahimi
DispatchCmdDebugMarkerEndEXT(VkCommandBuffer commandBuffer)5000*b7893ccfSSadaf Ebrahimi void DispatchCmdDebugMarkerEndEXT(
5001*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer)
5002*b7893ccfSSadaf Ebrahimi {
5003*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5004*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdDebugMarkerEndEXT(commandBuffer);
5005*b7893ccfSSadaf Ebrahimi
5006*b7893ccfSSadaf Ebrahimi }
5007*b7893ccfSSadaf Ebrahimi
DispatchCmdDebugMarkerInsertEXT(VkCommandBuffer commandBuffer,const VkDebugMarkerMarkerInfoEXT * pMarkerInfo)5008*b7893ccfSSadaf Ebrahimi void DispatchCmdDebugMarkerInsertEXT(
5009*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
5010*b7893ccfSSadaf Ebrahimi const VkDebugMarkerMarkerInfoEXT* pMarkerInfo)
5011*b7893ccfSSadaf Ebrahimi {
5012*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5013*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo);
5014*b7893ccfSSadaf Ebrahimi
5015*b7893ccfSSadaf Ebrahimi }
5016*b7893ccfSSadaf Ebrahimi
DispatchCmdBindTransformFeedbackBuffersEXT(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets,const VkDeviceSize * pSizes)5017*b7893ccfSSadaf Ebrahimi void DispatchCmdBindTransformFeedbackBuffersEXT(
5018*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
5019*b7893ccfSSadaf Ebrahimi uint32_t firstBinding,
5020*b7893ccfSSadaf Ebrahimi uint32_t bindingCount,
5021*b7893ccfSSadaf Ebrahimi const VkBuffer* pBuffers,
5022*b7893ccfSSadaf Ebrahimi const VkDeviceSize* pOffsets,
5023*b7893ccfSSadaf Ebrahimi const VkDeviceSize* pSizes)
5024*b7893ccfSSadaf Ebrahimi {
5025*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5026*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes);
5027*b7893ccfSSadaf Ebrahimi VkBuffer *local_pBuffers = NULL;
5028*b7893ccfSSadaf Ebrahimi {
5029*b7893ccfSSadaf Ebrahimi if (pBuffers) {
5030*b7893ccfSSadaf Ebrahimi local_pBuffers = new VkBuffer[bindingCount];
5031*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < bindingCount; ++index0) {
5032*b7893ccfSSadaf Ebrahimi local_pBuffers[index0] = layer_data->Unwrap(pBuffers[index0]);
5033*b7893ccfSSadaf Ebrahimi }
5034*b7893ccfSSadaf Ebrahimi }
5035*b7893ccfSSadaf Ebrahimi }
5036*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, (const VkBuffer*)local_pBuffers, pOffsets, pSizes);
5037*b7893ccfSSadaf Ebrahimi if (local_pBuffers)
5038*b7893ccfSSadaf Ebrahimi delete[] local_pBuffers;
5039*b7893ccfSSadaf Ebrahimi }
5040*b7893ccfSSadaf Ebrahimi
DispatchCmdBeginTransformFeedbackEXT(VkCommandBuffer commandBuffer,uint32_t firstCounterBuffer,uint32_t counterBufferCount,const VkBuffer * pCounterBuffers,const VkDeviceSize * pCounterBufferOffsets)5041*b7893ccfSSadaf Ebrahimi void DispatchCmdBeginTransformFeedbackEXT(
5042*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
5043*b7893ccfSSadaf Ebrahimi uint32_t firstCounterBuffer,
5044*b7893ccfSSadaf Ebrahimi uint32_t counterBufferCount,
5045*b7893ccfSSadaf Ebrahimi const VkBuffer* pCounterBuffers,
5046*b7893ccfSSadaf Ebrahimi const VkDeviceSize* pCounterBufferOffsets)
5047*b7893ccfSSadaf Ebrahimi {
5048*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5049*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets);
5050*b7893ccfSSadaf Ebrahimi VkBuffer *local_pCounterBuffers = NULL;
5051*b7893ccfSSadaf Ebrahimi {
5052*b7893ccfSSadaf Ebrahimi if (pCounterBuffers) {
5053*b7893ccfSSadaf Ebrahimi local_pCounterBuffers = new VkBuffer[counterBufferCount];
5054*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < counterBufferCount; ++index0) {
5055*b7893ccfSSadaf Ebrahimi local_pCounterBuffers[index0] = layer_data->Unwrap(pCounterBuffers[index0]);
5056*b7893ccfSSadaf Ebrahimi }
5057*b7893ccfSSadaf Ebrahimi }
5058*b7893ccfSSadaf Ebrahimi }
5059*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, (const VkBuffer*)local_pCounterBuffers, pCounterBufferOffsets);
5060*b7893ccfSSadaf Ebrahimi if (local_pCounterBuffers)
5061*b7893ccfSSadaf Ebrahimi delete[] local_pCounterBuffers;
5062*b7893ccfSSadaf Ebrahimi }
5063*b7893ccfSSadaf Ebrahimi
DispatchCmdEndTransformFeedbackEXT(VkCommandBuffer commandBuffer,uint32_t firstCounterBuffer,uint32_t counterBufferCount,const VkBuffer * pCounterBuffers,const VkDeviceSize * pCounterBufferOffsets)5064*b7893ccfSSadaf Ebrahimi void DispatchCmdEndTransformFeedbackEXT(
5065*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
5066*b7893ccfSSadaf Ebrahimi uint32_t firstCounterBuffer,
5067*b7893ccfSSadaf Ebrahimi uint32_t counterBufferCount,
5068*b7893ccfSSadaf Ebrahimi const VkBuffer* pCounterBuffers,
5069*b7893ccfSSadaf Ebrahimi const VkDeviceSize* pCounterBufferOffsets)
5070*b7893ccfSSadaf Ebrahimi {
5071*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5072*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets);
5073*b7893ccfSSadaf Ebrahimi VkBuffer *local_pCounterBuffers = NULL;
5074*b7893ccfSSadaf Ebrahimi {
5075*b7893ccfSSadaf Ebrahimi if (pCounterBuffers) {
5076*b7893ccfSSadaf Ebrahimi local_pCounterBuffers = new VkBuffer[counterBufferCount];
5077*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < counterBufferCount; ++index0) {
5078*b7893ccfSSadaf Ebrahimi local_pCounterBuffers[index0] = layer_data->Unwrap(pCounterBuffers[index0]);
5079*b7893ccfSSadaf Ebrahimi }
5080*b7893ccfSSadaf Ebrahimi }
5081*b7893ccfSSadaf Ebrahimi }
5082*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, (const VkBuffer*)local_pCounterBuffers, pCounterBufferOffsets);
5083*b7893ccfSSadaf Ebrahimi if (local_pCounterBuffers)
5084*b7893ccfSSadaf Ebrahimi delete[] local_pCounterBuffers;
5085*b7893ccfSSadaf Ebrahimi }
5086*b7893ccfSSadaf Ebrahimi
DispatchCmdBeginQueryIndexedEXT(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,VkQueryControlFlags flags,uint32_t index)5087*b7893ccfSSadaf Ebrahimi void DispatchCmdBeginQueryIndexedEXT(
5088*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
5089*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
5090*b7893ccfSSadaf Ebrahimi uint32_t query,
5091*b7893ccfSSadaf Ebrahimi VkQueryControlFlags flags,
5092*b7893ccfSSadaf Ebrahimi uint32_t index)
5093*b7893ccfSSadaf Ebrahimi {
5094*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5095*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index);
5096*b7893ccfSSadaf Ebrahimi {
5097*b7893ccfSSadaf Ebrahimi queryPool = layer_data->Unwrap(queryPool);
5098*b7893ccfSSadaf Ebrahimi }
5099*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index);
5100*b7893ccfSSadaf Ebrahimi
5101*b7893ccfSSadaf Ebrahimi }
5102*b7893ccfSSadaf Ebrahimi
DispatchCmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,uint32_t index)5103*b7893ccfSSadaf Ebrahimi void DispatchCmdEndQueryIndexedEXT(
5104*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
5105*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
5106*b7893ccfSSadaf Ebrahimi uint32_t query,
5107*b7893ccfSSadaf Ebrahimi uint32_t index)
5108*b7893ccfSSadaf Ebrahimi {
5109*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5110*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index);
5111*b7893ccfSSadaf Ebrahimi {
5112*b7893ccfSSadaf Ebrahimi queryPool = layer_data->Unwrap(queryPool);
5113*b7893ccfSSadaf Ebrahimi }
5114*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index);
5115*b7893ccfSSadaf Ebrahimi
5116*b7893ccfSSadaf Ebrahimi }
5117*b7893ccfSSadaf Ebrahimi
DispatchCmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer,uint32_t instanceCount,uint32_t firstInstance,VkBuffer counterBuffer,VkDeviceSize counterBufferOffset,uint32_t counterOffset,uint32_t vertexStride)5118*b7893ccfSSadaf Ebrahimi void DispatchCmdDrawIndirectByteCountEXT(
5119*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
5120*b7893ccfSSadaf Ebrahimi uint32_t instanceCount,
5121*b7893ccfSSadaf Ebrahimi uint32_t firstInstance,
5122*b7893ccfSSadaf Ebrahimi VkBuffer counterBuffer,
5123*b7893ccfSSadaf Ebrahimi VkDeviceSize counterBufferOffset,
5124*b7893ccfSSadaf Ebrahimi uint32_t counterOffset,
5125*b7893ccfSSadaf Ebrahimi uint32_t vertexStride)
5126*b7893ccfSSadaf Ebrahimi {
5127*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5128*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride);
5129*b7893ccfSSadaf Ebrahimi {
5130*b7893ccfSSadaf Ebrahimi counterBuffer = layer_data->Unwrap(counterBuffer);
5131*b7893ccfSSadaf Ebrahimi }
5132*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride);
5133*b7893ccfSSadaf Ebrahimi
5134*b7893ccfSSadaf Ebrahimi }
5135*b7893ccfSSadaf Ebrahimi
DispatchGetImageViewHandleNVX(VkDevice device,const VkImageViewHandleInfoNVX * pInfo)5136*b7893ccfSSadaf Ebrahimi uint32_t DispatchGetImageViewHandleNVX(
5137*b7893ccfSSadaf Ebrahimi VkDevice device,
5138*b7893ccfSSadaf Ebrahimi const VkImageViewHandleInfoNVX* pInfo)
5139*b7893ccfSSadaf Ebrahimi {
5140*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5141*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetImageViewHandleNVX(device, pInfo);
5142*b7893ccfSSadaf Ebrahimi safe_VkImageViewHandleInfoNVX *local_pInfo = NULL;
5143*b7893ccfSSadaf Ebrahimi {
5144*b7893ccfSSadaf Ebrahimi if (pInfo) {
5145*b7893ccfSSadaf Ebrahimi local_pInfo = new safe_VkImageViewHandleInfoNVX(pInfo);
5146*b7893ccfSSadaf Ebrahimi if (pInfo->imageView) {
5147*b7893ccfSSadaf Ebrahimi local_pInfo->imageView = layer_data->Unwrap(pInfo->imageView);
5148*b7893ccfSSadaf Ebrahimi }
5149*b7893ccfSSadaf Ebrahimi if (pInfo->sampler) {
5150*b7893ccfSSadaf Ebrahimi local_pInfo->sampler = layer_data->Unwrap(pInfo->sampler);
5151*b7893ccfSSadaf Ebrahimi }
5152*b7893ccfSSadaf Ebrahimi }
5153*b7893ccfSSadaf Ebrahimi }
5154*b7893ccfSSadaf Ebrahimi uint32_t result = layer_data->device_dispatch_table.GetImageViewHandleNVX(device, (const VkImageViewHandleInfoNVX*)local_pInfo);
5155*b7893ccfSSadaf Ebrahimi if (local_pInfo) {
5156*b7893ccfSSadaf Ebrahimi delete local_pInfo;
5157*b7893ccfSSadaf Ebrahimi }
5158*b7893ccfSSadaf Ebrahimi return result;
5159*b7893ccfSSadaf Ebrahimi }
5160*b7893ccfSSadaf Ebrahimi
DispatchCmdDrawIndirectCountAMD(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)5161*b7893ccfSSadaf Ebrahimi void DispatchCmdDrawIndirectCountAMD(
5162*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
5163*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
5164*b7893ccfSSadaf Ebrahimi VkDeviceSize offset,
5165*b7893ccfSSadaf Ebrahimi VkBuffer countBuffer,
5166*b7893ccfSSadaf Ebrahimi VkDeviceSize countBufferOffset,
5167*b7893ccfSSadaf Ebrahimi uint32_t maxDrawCount,
5168*b7893ccfSSadaf Ebrahimi uint32_t stride)
5169*b7893ccfSSadaf Ebrahimi {
5170*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5171*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
5172*b7893ccfSSadaf Ebrahimi {
5173*b7893ccfSSadaf Ebrahimi buffer = layer_data->Unwrap(buffer);
5174*b7893ccfSSadaf Ebrahimi countBuffer = layer_data->Unwrap(countBuffer);
5175*b7893ccfSSadaf Ebrahimi }
5176*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
5177*b7893ccfSSadaf Ebrahimi
5178*b7893ccfSSadaf Ebrahimi }
5179*b7893ccfSSadaf Ebrahimi
DispatchCmdDrawIndexedIndirectCountAMD(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)5180*b7893ccfSSadaf Ebrahimi void DispatchCmdDrawIndexedIndirectCountAMD(
5181*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
5182*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
5183*b7893ccfSSadaf Ebrahimi VkDeviceSize offset,
5184*b7893ccfSSadaf Ebrahimi VkBuffer countBuffer,
5185*b7893ccfSSadaf Ebrahimi VkDeviceSize countBufferOffset,
5186*b7893ccfSSadaf Ebrahimi uint32_t maxDrawCount,
5187*b7893ccfSSadaf Ebrahimi uint32_t stride)
5188*b7893ccfSSadaf Ebrahimi {
5189*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5190*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
5191*b7893ccfSSadaf Ebrahimi {
5192*b7893ccfSSadaf Ebrahimi buffer = layer_data->Unwrap(buffer);
5193*b7893ccfSSadaf Ebrahimi countBuffer = layer_data->Unwrap(countBuffer);
5194*b7893ccfSSadaf Ebrahimi }
5195*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
5196*b7893ccfSSadaf Ebrahimi
5197*b7893ccfSSadaf Ebrahimi }
5198*b7893ccfSSadaf Ebrahimi
DispatchGetShaderInfoAMD(VkDevice device,VkPipeline pipeline,VkShaderStageFlagBits shaderStage,VkShaderInfoTypeAMD infoType,size_t * pInfoSize,void * pInfo)5199*b7893ccfSSadaf Ebrahimi VkResult DispatchGetShaderInfoAMD(
5200*b7893ccfSSadaf Ebrahimi VkDevice device,
5201*b7893ccfSSadaf Ebrahimi VkPipeline pipeline,
5202*b7893ccfSSadaf Ebrahimi VkShaderStageFlagBits shaderStage,
5203*b7893ccfSSadaf Ebrahimi VkShaderInfoTypeAMD infoType,
5204*b7893ccfSSadaf Ebrahimi size_t* pInfoSize,
5205*b7893ccfSSadaf Ebrahimi void* pInfo)
5206*b7893ccfSSadaf Ebrahimi {
5207*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5208*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
5209*b7893ccfSSadaf Ebrahimi {
5210*b7893ccfSSadaf Ebrahimi pipeline = layer_data->Unwrap(pipeline);
5211*b7893ccfSSadaf Ebrahimi }
5212*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
5213*b7893ccfSSadaf Ebrahimi
5214*b7893ccfSSadaf Ebrahimi return result;
5215*b7893ccfSSadaf Ebrahimi }
5216*b7893ccfSSadaf Ebrahimi
5217*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_GGP
5218*b7893ccfSSadaf Ebrahimi
DispatchCreateStreamDescriptorSurfaceGGP(VkInstance instance,const VkStreamDescriptorSurfaceCreateInfoGGP * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)5219*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateStreamDescriptorSurfaceGGP(
5220*b7893ccfSSadaf Ebrahimi VkInstance instance,
5221*b7893ccfSSadaf Ebrahimi const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo,
5222*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
5223*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface)
5224*b7893ccfSSadaf Ebrahimi {
5225*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
5226*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.CreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, pSurface);
5227*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.CreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, pSurface);
5228*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
5229*b7893ccfSSadaf Ebrahimi *pSurface = layer_data->WrapNew(*pSurface);
5230*b7893ccfSSadaf Ebrahimi }
5231*b7893ccfSSadaf Ebrahimi return result;
5232*b7893ccfSSadaf Ebrahimi }
5233*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_GGP
5234*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceExternalImageFormatPropertiesNV(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkImageTiling tiling,VkImageUsageFlags usage,VkImageCreateFlags flags,VkExternalMemoryHandleTypeFlagsNV externalHandleType,VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties)5235*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPhysicalDeviceExternalImageFormatPropertiesNV(
5236*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5237*b7893ccfSSadaf Ebrahimi VkFormat format,
5238*b7893ccfSSadaf Ebrahimi VkImageType type,
5239*b7893ccfSSadaf Ebrahimi VkImageTiling tiling,
5240*b7893ccfSSadaf Ebrahimi VkImageUsageFlags usage,
5241*b7893ccfSSadaf Ebrahimi VkImageCreateFlags flags,
5242*b7893ccfSSadaf Ebrahimi VkExternalMemoryHandleTypeFlagsNV externalHandleType,
5243*b7893ccfSSadaf Ebrahimi VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties)
5244*b7893ccfSSadaf Ebrahimi {
5245*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
5246*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties);
5247*b7893ccfSSadaf Ebrahimi
5248*b7893ccfSSadaf Ebrahimi return result;
5249*b7893ccfSSadaf Ebrahimi }
5250*b7893ccfSSadaf Ebrahimi
5251*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
5252*b7893ccfSSadaf Ebrahimi
DispatchGetMemoryWin32HandleNV(VkDevice device,VkDeviceMemory memory,VkExternalMemoryHandleTypeFlagsNV handleType,HANDLE * pHandle)5253*b7893ccfSSadaf Ebrahimi VkResult DispatchGetMemoryWin32HandleNV(
5254*b7893ccfSSadaf Ebrahimi VkDevice device,
5255*b7893ccfSSadaf Ebrahimi VkDeviceMemory memory,
5256*b7893ccfSSadaf Ebrahimi VkExternalMemoryHandleTypeFlagsNV handleType,
5257*b7893ccfSSadaf Ebrahimi HANDLE* pHandle)
5258*b7893ccfSSadaf Ebrahimi {
5259*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5260*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetMemoryWin32HandleNV(device, memory, handleType, pHandle);
5261*b7893ccfSSadaf Ebrahimi {
5262*b7893ccfSSadaf Ebrahimi memory = layer_data->Unwrap(memory);
5263*b7893ccfSSadaf Ebrahimi }
5264*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetMemoryWin32HandleNV(device, memory, handleType, pHandle);
5265*b7893ccfSSadaf Ebrahimi
5266*b7893ccfSSadaf Ebrahimi return result;
5267*b7893ccfSSadaf Ebrahimi }
5268*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
5269*b7893ccfSSadaf Ebrahimi
5270*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_VI_NN
5271*b7893ccfSSadaf Ebrahimi
DispatchCreateViSurfaceNN(VkInstance instance,const VkViSurfaceCreateInfoNN * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)5272*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateViSurfaceNN(
5273*b7893ccfSSadaf Ebrahimi VkInstance instance,
5274*b7893ccfSSadaf Ebrahimi const VkViSurfaceCreateInfoNN* pCreateInfo,
5275*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
5276*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface)
5277*b7893ccfSSadaf Ebrahimi {
5278*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
5279*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.CreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface);
5280*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.CreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface);
5281*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
5282*b7893ccfSSadaf Ebrahimi *pSurface = layer_data->WrapNew(*pSurface);
5283*b7893ccfSSadaf Ebrahimi }
5284*b7893ccfSSadaf Ebrahimi return result;
5285*b7893ccfSSadaf Ebrahimi }
5286*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_VI_NN
5287*b7893ccfSSadaf Ebrahimi
DispatchCmdBeginConditionalRenderingEXT(VkCommandBuffer commandBuffer,const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin)5288*b7893ccfSSadaf Ebrahimi void DispatchCmdBeginConditionalRenderingEXT(
5289*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
5290*b7893ccfSSadaf Ebrahimi const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin)
5291*b7893ccfSSadaf Ebrahimi {
5292*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5293*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin);
5294*b7893ccfSSadaf Ebrahimi safe_VkConditionalRenderingBeginInfoEXT *local_pConditionalRenderingBegin = NULL;
5295*b7893ccfSSadaf Ebrahimi {
5296*b7893ccfSSadaf Ebrahimi if (pConditionalRenderingBegin) {
5297*b7893ccfSSadaf Ebrahimi local_pConditionalRenderingBegin = new safe_VkConditionalRenderingBeginInfoEXT(pConditionalRenderingBegin);
5298*b7893ccfSSadaf Ebrahimi if (pConditionalRenderingBegin->buffer) {
5299*b7893ccfSSadaf Ebrahimi local_pConditionalRenderingBegin->buffer = layer_data->Unwrap(pConditionalRenderingBegin->buffer);
5300*b7893ccfSSadaf Ebrahimi }
5301*b7893ccfSSadaf Ebrahimi }
5302*b7893ccfSSadaf Ebrahimi }
5303*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdBeginConditionalRenderingEXT(commandBuffer, (const VkConditionalRenderingBeginInfoEXT*)local_pConditionalRenderingBegin);
5304*b7893ccfSSadaf Ebrahimi if (local_pConditionalRenderingBegin) {
5305*b7893ccfSSadaf Ebrahimi delete local_pConditionalRenderingBegin;
5306*b7893ccfSSadaf Ebrahimi }
5307*b7893ccfSSadaf Ebrahimi }
5308*b7893ccfSSadaf Ebrahimi
DispatchCmdEndConditionalRenderingEXT(VkCommandBuffer commandBuffer)5309*b7893ccfSSadaf Ebrahimi void DispatchCmdEndConditionalRenderingEXT(
5310*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer)
5311*b7893ccfSSadaf Ebrahimi {
5312*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5313*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdEndConditionalRenderingEXT(commandBuffer);
5314*b7893ccfSSadaf Ebrahimi
5315*b7893ccfSSadaf Ebrahimi }
5316*b7893ccfSSadaf Ebrahimi
DispatchCmdProcessCommandsNVX(VkCommandBuffer commandBuffer,const VkCmdProcessCommandsInfoNVX * pProcessCommandsInfo)5317*b7893ccfSSadaf Ebrahimi void DispatchCmdProcessCommandsNVX(
5318*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
5319*b7893ccfSSadaf Ebrahimi const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo)
5320*b7893ccfSSadaf Ebrahimi {
5321*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5322*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdProcessCommandsNVX(commandBuffer, pProcessCommandsInfo);
5323*b7893ccfSSadaf Ebrahimi safe_VkCmdProcessCommandsInfoNVX *local_pProcessCommandsInfo = NULL;
5324*b7893ccfSSadaf Ebrahimi {
5325*b7893ccfSSadaf Ebrahimi if (pProcessCommandsInfo) {
5326*b7893ccfSSadaf Ebrahimi local_pProcessCommandsInfo = new safe_VkCmdProcessCommandsInfoNVX(pProcessCommandsInfo);
5327*b7893ccfSSadaf Ebrahimi if (pProcessCommandsInfo->objectTable) {
5328*b7893ccfSSadaf Ebrahimi local_pProcessCommandsInfo->objectTable = layer_data->Unwrap(pProcessCommandsInfo->objectTable);
5329*b7893ccfSSadaf Ebrahimi }
5330*b7893ccfSSadaf Ebrahimi if (pProcessCommandsInfo->indirectCommandsLayout) {
5331*b7893ccfSSadaf Ebrahimi local_pProcessCommandsInfo->indirectCommandsLayout = layer_data->Unwrap(pProcessCommandsInfo->indirectCommandsLayout);
5332*b7893ccfSSadaf Ebrahimi }
5333*b7893ccfSSadaf Ebrahimi if (local_pProcessCommandsInfo->pIndirectCommandsTokens) {
5334*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pProcessCommandsInfo->indirectCommandsTokenCount; ++index1) {
5335*b7893ccfSSadaf Ebrahimi if (pProcessCommandsInfo->pIndirectCommandsTokens[index1].buffer) {
5336*b7893ccfSSadaf Ebrahimi local_pProcessCommandsInfo->pIndirectCommandsTokens[index1].buffer = layer_data->Unwrap(pProcessCommandsInfo->pIndirectCommandsTokens[index1].buffer);
5337*b7893ccfSSadaf Ebrahimi }
5338*b7893ccfSSadaf Ebrahimi }
5339*b7893ccfSSadaf Ebrahimi }
5340*b7893ccfSSadaf Ebrahimi if (pProcessCommandsInfo->sequencesCountBuffer) {
5341*b7893ccfSSadaf Ebrahimi local_pProcessCommandsInfo->sequencesCountBuffer = layer_data->Unwrap(pProcessCommandsInfo->sequencesCountBuffer);
5342*b7893ccfSSadaf Ebrahimi }
5343*b7893ccfSSadaf Ebrahimi if (pProcessCommandsInfo->sequencesIndexBuffer) {
5344*b7893ccfSSadaf Ebrahimi local_pProcessCommandsInfo->sequencesIndexBuffer = layer_data->Unwrap(pProcessCommandsInfo->sequencesIndexBuffer);
5345*b7893ccfSSadaf Ebrahimi }
5346*b7893ccfSSadaf Ebrahimi }
5347*b7893ccfSSadaf Ebrahimi }
5348*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdProcessCommandsNVX(commandBuffer, (const VkCmdProcessCommandsInfoNVX*)local_pProcessCommandsInfo);
5349*b7893ccfSSadaf Ebrahimi if (local_pProcessCommandsInfo) {
5350*b7893ccfSSadaf Ebrahimi delete local_pProcessCommandsInfo;
5351*b7893ccfSSadaf Ebrahimi }
5352*b7893ccfSSadaf Ebrahimi }
5353*b7893ccfSSadaf Ebrahimi
DispatchCmdReserveSpaceForCommandsNVX(VkCommandBuffer commandBuffer,const VkCmdReserveSpaceForCommandsInfoNVX * pReserveSpaceInfo)5354*b7893ccfSSadaf Ebrahimi void DispatchCmdReserveSpaceForCommandsNVX(
5355*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
5356*b7893ccfSSadaf Ebrahimi const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo)
5357*b7893ccfSSadaf Ebrahimi {
5358*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5359*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdReserveSpaceForCommandsNVX(commandBuffer, pReserveSpaceInfo);
5360*b7893ccfSSadaf Ebrahimi safe_VkCmdReserveSpaceForCommandsInfoNVX *local_pReserveSpaceInfo = NULL;
5361*b7893ccfSSadaf Ebrahimi {
5362*b7893ccfSSadaf Ebrahimi if (pReserveSpaceInfo) {
5363*b7893ccfSSadaf Ebrahimi local_pReserveSpaceInfo = new safe_VkCmdReserveSpaceForCommandsInfoNVX(pReserveSpaceInfo);
5364*b7893ccfSSadaf Ebrahimi if (pReserveSpaceInfo->objectTable) {
5365*b7893ccfSSadaf Ebrahimi local_pReserveSpaceInfo->objectTable = layer_data->Unwrap(pReserveSpaceInfo->objectTable);
5366*b7893ccfSSadaf Ebrahimi }
5367*b7893ccfSSadaf Ebrahimi if (pReserveSpaceInfo->indirectCommandsLayout) {
5368*b7893ccfSSadaf Ebrahimi local_pReserveSpaceInfo->indirectCommandsLayout = layer_data->Unwrap(pReserveSpaceInfo->indirectCommandsLayout);
5369*b7893ccfSSadaf Ebrahimi }
5370*b7893ccfSSadaf Ebrahimi }
5371*b7893ccfSSadaf Ebrahimi }
5372*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdReserveSpaceForCommandsNVX(commandBuffer, (const VkCmdReserveSpaceForCommandsInfoNVX*)local_pReserveSpaceInfo);
5373*b7893ccfSSadaf Ebrahimi if (local_pReserveSpaceInfo) {
5374*b7893ccfSSadaf Ebrahimi delete local_pReserveSpaceInfo;
5375*b7893ccfSSadaf Ebrahimi }
5376*b7893ccfSSadaf Ebrahimi }
5377*b7893ccfSSadaf Ebrahimi
DispatchCreateIndirectCommandsLayoutNVX(VkDevice device,const VkIndirectCommandsLayoutCreateInfoNVX * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkIndirectCommandsLayoutNVX * pIndirectCommandsLayout)5378*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateIndirectCommandsLayoutNVX(
5379*b7893ccfSSadaf Ebrahimi VkDevice device,
5380*b7893ccfSSadaf Ebrahimi const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
5381*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
5382*b7893ccfSSadaf Ebrahimi VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout)
5383*b7893ccfSSadaf Ebrahimi {
5384*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5385*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateIndirectCommandsLayoutNVX(device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
5386*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateIndirectCommandsLayoutNVX(device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
5387*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
5388*b7893ccfSSadaf Ebrahimi *pIndirectCommandsLayout = layer_data->WrapNew(*pIndirectCommandsLayout);
5389*b7893ccfSSadaf Ebrahimi }
5390*b7893ccfSSadaf Ebrahimi return result;
5391*b7893ccfSSadaf Ebrahimi }
5392*b7893ccfSSadaf Ebrahimi
DispatchDestroyIndirectCommandsLayoutNVX(VkDevice device,VkIndirectCommandsLayoutNVX indirectCommandsLayout,const VkAllocationCallbacks * pAllocator)5393*b7893ccfSSadaf Ebrahimi void DispatchDestroyIndirectCommandsLayoutNVX(
5394*b7893ccfSSadaf Ebrahimi VkDevice device,
5395*b7893ccfSSadaf Ebrahimi VkIndirectCommandsLayoutNVX indirectCommandsLayout,
5396*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
5397*b7893ccfSSadaf Ebrahimi {
5398*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5399*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroyIndirectCommandsLayoutNVX(device, indirectCommandsLayout, pAllocator);
5400*b7893ccfSSadaf Ebrahimi uint64_t indirectCommandsLayout_id = reinterpret_cast<uint64_t &>(indirectCommandsLayout);
5401*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(indirectCommandsLayout_id);
5402*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
5403*b7893ccfSSadaf Ebrahimi indirectCommandsLayout = (VkIndirectCommandsLayoutNVX)iter->second;
5404*b7893ccfSSadaf Ebrahimi } else {
5405*b7893ccfSSadaf Ebrahimi indirectCommandsLayout = (VkIndirectCommandsLayoutNVX)0;
5406*b7893ccfSSadaf Ebrahimi }
5407*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyIndirectCommandsLayoutNVX(device, indirectCommandsLayout, pAllocator);
5408*b7893ccfSSadaf Ebrahimi
5409*b7893ccfSSadaf Ebrahimi }
5410*b7893ccfSSadaf Ebrahimi
DispatchCreateObjectTableNVX(VkDevice device,const VkObjectTableCreateInfoNVX * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkObjectTableNVX * pObjectTable)5411*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateObjectTableNVX(
5412*b7893ccfSSadaf Ebrahimi VkDevice device,
5413*b7893ccfSSadaf Ebrahimi const VkObjectTableCreateInfoNVX* pCreateInfo,
5414*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
5415*b7893ccfSSadaf Ebrahimi VkObjectTableNVX* pObjectTable)
5416*b7893ccfSSadaf Ebrahimi {
5417*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5418*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateObjectTableNVX(device, pCreateInfo, pAllocator, pObjectTable);
5419*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateObjectTableNVX(device, pCreateInfo, pAllocator, pObjectTable);
5420*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
5421*b7893ccfSSadaf Ebrahimi *pObjectTable = layer_data->WrapNew(*pObjectTable);
5422*b7893ccfSSadaf Ebrahimi }
5423*b7893ccfSSadaf Ebrahimi return result;
5424*b7893ccfSSadaf Ebrahimi }
5425*b7893ccfSSadaf Ebrahimi
DispatchDestroyObjectTableNVX(VkDevice device,VkObjectTableNVX objectTable,const VkAllocationCallbacks * pAllocator)5426*b7893ccfSSadaf Ebrahimi void DispatchDestroyObjectTableNVX(
5427*b7893ccfSSadaf Ebrahimi VkDevice device,
5428*b7893ccfSSadaf Ebrahimi VkObjectTableNVX objectTable,
5429*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
5430*b7893ccfSSadaf Ebrahimi {
5431*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5432*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroyObjectTableNVX(device, objectTable, pAllocator);
5433*b7893ccfSSadaf Ebrahimi uint64_t objectTable_id = reinterpret_cast<uint64_t &>(objectTable);
5434*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(objectTable_id);
5435*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
5436*b7893ccfSSadaf Ebrahimi objectTable = (VkObjectTableNVX)iter->second;
5437*b7893ccfSSadaf Ebrahimi } else {
5438*b7893ccfSSadaf Ebrahimi objectTable = (VkObjectTableNVX)0;
5439*b7893ccfSSadaf Ebrahimi }
5440*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyObjectTableNVX(device, objectTable, pAllocator);
5441*b7893ccfSSadaf Ebrahimi
5442*b7893ccfSSadaf Ebrahimi }
5443*b7893ccfSSadaf Ebrahimi
DispatchRegisterObjectsNVX(VkDevice device,VkObjectTableNVX objectTable,uint32_t objectCount,const VkObjectTableEntryNVX * const * ppObjectTableEntries,const uint32_t * pObjectIndices)5444*b7893ccfSSadaf Ebrahimi VkResult DispatchRegisterObjectsNVX(
5445*b7893ccfSSadaf Ebrahimi VkDevice device,
5446*b7893ccfSSadaf Ebrahimi VkObjectTableNVX objectTable,
5447*b7893ccfSSadaf Ebrahimi uint32_t objectCount,
5448*b7893ccfSSadaf Ebrahimi const VkObjectTableEntryNVX* const* ppObjectTableEntries,
5449*b7893ccfSSadaf Ebrahimi const uint32_t* pObjectIndices)
5450*b7893ccfSSadaf Ebrahimi {
5451*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5452*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.RegisterObjectsNVX(device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices);
5453*b7893ccfSSadaf Ebrahimi {
5454*b7893ccfSSadaf Ebrahimi objectTable = layer_data->Unwrap(objectTable);
5455*b7893ccfSSadaf Ebrahimi }
5456*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.RegisterObjectsNVX(device, objectTable, objectCount, ppObjectTableEntries, pObjectIndices);
5457*b7893ccfSSadaf Ebrahimi
5458*b7893ccfSSadaf Ebrahimi return result;
5459*b7893ccfSSadaf Ebrahimi }
5460*b7893ccfSSadaf Ebrahimi
DispatchUnregisterObjectsNVX(VkDevice device,VkObjectTableNVX objectTable,uint32_t objectCount,const VkObjectEntryTypeNVX * pObjectEntryTypes,const uint32_t * pObjectIndices)5461*b7893ccfSSadaf Ebrahimi VkResult DispatchUnregisterObjectsNVX(
5462*b7893ccfSSadaf Ebrahimi VkDevice device,
5463*b7893ccfSSadaf Ebrahimi VkObjectTableNVX objectTable,
5464*b7893ccfSSadaf Ebrahimi uint32_t objectCount,
5465*b7893ccfSSadaf Ebrahimi const VkObjectEntryTypeNVX* pObjectEntryTypes,
5466*b7893ccfSSadaf Ebrahimi const uint32_t* pObjectIndices)
5467*b7893ccfSSadaf Ebrahimi {
5468*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5469*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.UnregisterObjectsNVX(device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices);
5470*b7893ccfSSadaf Ebrahimi {
5471*b7893ccfSSadaf Ebrahimi objectTable = layer_data->Unwrap(objectTable);
5472*b7893ccfSSadaf Ebrahimi }
5473*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.UnregisterObjectsNVX(device, objectTable, objectCount, pObjectEntryTypes, pObjectIndices);
5474*b7893ccfSSadaf Ebrahimi
5475*b7893ccfSSadaf Ebrahimi return result;
5476*b7893ccfSSadaf Ebrahimi }
5477*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceGeneratedCommandsPropertiesNVX(VkPhysicalDevice physicalDevice,VkDeviceGeneratedCommandsFeaturesNVX * pFeatures,VkDeviceGeneratedCommandsLimitsNVX * pLimits)5478*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
5479*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5480*b7893ccfSSadaf Ebrahimi VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
5481*b7893ccfSSadaf Ebrahimi VkDeviceGeneratedCommandsLimitsNVX* pLimits)
5482*b7893ccfSSadaf Ebrahimi {
5483*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
5484*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceGeneratedCommandsPropertiesNVX(physicalDevice, pFeatures, pLimits);
5485*b7893ccfSSadaf Ebrahimi
5486*b7893ccfSSadaf Ebrahimi }
5487*b7893ccfSSadaf Ebrahimi
DispatchCmdSetViewportWScalingNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewportWScalingNV * pViewportWScalings)5488*b7893ccfSSadaf Ebrahimi void DispatchCmdSetViewportWScalingNV(
5489*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
5490*b7893ccfSSadaf Ebrahimi uint32_t firstViewport,
5491*b7893ccfSSadaf Ebrahimi uint32_t viewportCount,
5492*b7893ccfSSadaf Ebrahimi const VkViewportWScalingNV* pViewportWScalings)
5493*b7893ccfSSadaf Ebrahimi {
5494*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5495*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings);
5496*b7893ccfSSadaf Ebrahimi
5497*b7893ccfSSadaf Ebrahimi }
5498*b7893ccfSSadaf Ebrahimi
DispatchReleaseDisplayEXT(VkPhysicalDevice physicalDevice,VkDisplayKHR display)5499*b7893ccfSSadaf Ebrahimi VkResult DispatchReleaseDisplayEXT(
5500*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5501*b7893ccfSSadaf Ebrahimi VkDisplayKHR display)
5502*b7893ccfSSadaf Ebrahimi {
5503*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
5504*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.ReleaseDisplayEXT(physicalDevice, display);
5505*b7893ccfSSadaf Ebrahimi {
5506*b7893ccfSSadaf Ebrahimi display = layer_data->Unwrap(display);
5507*b7893ccfSSadaf Ebrahimi }
5508*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.ReleaseDisplayEXT(physicalDevice, display);
5509*b7893ccfSSadaf Ebrahimi
5510*b7893ccfSSadaf Ebrahimi return result;
5511*b7893ccfSSadaf Ebrahimi }
5512*b7893ccfSSadaf Ebrahimi
5513*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
5514*b7893ccfSSadaf Ebrahimi
DispatchAcquireXlibDisplayEXT(VkPhysicalDevice physicalDevice,Display * dpy,VkDisplayKHR display)5515*b7893ccfSSadaf Ebrahimi VkResult DispatchAcquireXlibDisplayEXT(
5516*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5517*b7893ccfSSadaf Ebrahimi Display* dpy,
5518*b7893ccfSSadaf Ebrahimi VkDisplayKHR display)
5519*b7893ccfSSadaf Ebrahimi {
5520*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
5521*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.AcquireXlibDisplayEXT(physicalDevice, dpy, display);
5522*b7893ccfSSadaf Ebrahimi {
5523*b7893ccfSSadaf Ebrahimi display = layer_data->Unwrap(display);
5524*b7893ccfSSadaf Ebrahimi }
5525*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.AcquireXlibDisplayEXT(physicalDevice, dpy, display);
5526*b7893ccfSSadaf Ebrahimi
5527*b7893ccfSSadaf Ebrahimi return result;
5528*b7893ccfSSadaf Ebrahimi }
5529*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
5530*b7893ccfSSadaf Ebrahimi
5531*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
5532*b7893ccfSSadaf Ebrahimi
DispatchGetRandROutputDisplayEXT(VkPhysicalDevice physicalDevice,Display * dpy,RROutput rrOutput,VkDisplayKHR * pDisplay)5533*b7893ccfSSadaf Ebrahimi VkResult DispatchGetRandROutputDisplayEXT(
5534*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5535*b7893ccfSSadaf Ebrahimi Display* dpy,
5536*b7893ccfSSadaf Ebrahimi RROutput rrOutput,
5537*b7893ccfSSadaf Ebrahimi VkDisplayKHR* pDisplay)
5538*b7893ccfSSadaf Ebrahimi {
5539*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
5540*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.GetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay);
5541*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay);
5542*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
5543*b7893ccfSSadaf Ebrahimi *pDisplay = layer_data->WrapNew(*pDisplay);
5544*b7893ccfSSadaf Ebrahimi }
5545*b7893ccfSSadaf Ebrahimi return result;
5546*b7893ccfSSadaf Ebrahimi }
5547*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
5548*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceSurfaceCapabilities2EXT(VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,VkSurfaceCapabilities2EXT * pSurfaceCapabilities)5549*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPhysicalDeviceSurfaceCapabilities2EXT(
5550*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5551*b7893ccfSSadaf Ebrahimi VkSurfaceKHR surface,
5552*b7893ccfSSadaf Ebrahimi VkSurfaceCapabilities2EXT* pSurfaceCapabilities)
5553*b7893ccfSSadaf Ebrahimi {
5554*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
5555*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities);
5556*b7893ccfSSadaf Ebrahimi {
5557*b7893ccfSSadaf Ebrahimi surface = layer_data->Unwrap(surface);
5558*b7893ccfSSadaf Ebrahimi }
5559*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities);
5560*b7893ccfSSadaf Ebrahimi
5561*b7893ccfSSadaf Ebrahimi return result;
5562*b7893ccfSSadaf Ebrahimi }
5563*b7893ccfSSadaf Ebrahimi
DispatchDisplayPowerControlEXT(VkDevice device,VkDisplayKHR display,const VkDisplayPowerInfoEXT * pDisplayPowerInfo)5564*b7893ccfSSadaf Ebrahimi VkResult DispatchDisplayPowerControlEXT(
5565*b7893ccfSSadaf Ebrahimi VkDevice device,
5566*b7893ccfSSadaf Ebrahimi VkDisplayKHR display,
5567*b7893ccfSSadaf Ebrahimi const VkDisplayPowerInfoEXT* pDisplayPowerInfo)
5568*b7893ccfSSadaf Ebrahimi {
5569*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5570*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DisplayPowerControlEXT(device, display, pDisplayPowerInfo);
5571*b7893ccfSSadaf Ebrahimi {
5572*b7893ccfSSadaf Ebrahimi display = layer_data->Unwrap(display);
5573*b7893ccfSSadaf Ebrahimi }
5574*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.DisplayPowerControlEXT(device, display, pDisplayPowerInfo);
5575*b7893ccfSSadaf Ebrahimi
5576*b7893ccfSSadaf Ebrahimi return result;
5577*b7893ccfSSadaf Ebrahimi }
5578*b7893ccfSSadaf Ebrahimi
DispatchRegisterDeviceEventEXT(VkDevice device,const VkDeviceEventInfoEXT * pDeviceEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)5579*b7893ccfSSadaf Ebrahimi VkResult DispatchRegisterDeviceEventEXT(
5580*b7893ccfSSadaf Ebrahimi VkDevice device,
5581*b7893ccfSSadaf Ebrahimi const VkDeviceEventInfoEXT* pDeviceEventInfo,
5582*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
5583*b7893ccfSSadaf Ebrahimi VkFence* pFence)
5584*b7893ccfSSadaf Ebrahimi {
5585*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5586*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.RegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence);
5587*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.RegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence);
5588*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
5589*b7893ccfSSadaf Ebrahimi *pFence = layer_data->WrapNew(*pFence);
5590*b7893ccfSSadaf Ebrahimi }
5591*b7893ccfSSadaf Ebrahimi return result;
5592*b7893ccfSSadaf Ebrahimi }
5593*b7893ccfSSadaf Ebrahimi
DispatchRegisterDisplayEventEXT(VkDevice device,VkDisplayKHR display,const VkDisplayEventInfoEXT * pDisplayEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)5594*b7893ccfSSadaf Ebrahimi VkResult DispatchRegisterDisplayEventEXT(
5595*b7893ccfSSadaf Ebrahimi VkDevice device,
5596*b7893ccfSSadaf Ebrahimi VkDisplayKHR display,
5597*b7893ccfSSadaf Ebrahimi const VkDisplayEventInfoEXT* pDisplayEventInfo,
5598*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
5599*b7893ccfSSadaf Ebrahimi VkFence* pFence)
5600*b7893ccfSSadaf Ebrahimi {
5601*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5602*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.RegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence);
5603*b7893ccfSSadaf Ebrahimi {
5604*b7893ccfSSadaf Ebrahimi display = layer_data->Unwrap(display);
5605*b7893ccfSSadaf Ebrahimi }
5606*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.RegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence);
5607*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
5608*b7893ccfSSadaf Ebrahimi *pFence = layer_data->WrapNew(*pFence);
5609*b7893ccfSSadaf Ebrahimi }
5610*b7893ccfSSadaf Ebrahimi return result;
5611*b7893ccfSSadaf Ebrahimi }
5612*b7893ccfSSadaf Ebrahimi
DispatchGetSwapchainCounterEXT(VkDevice device,VkSwapchainKHR swapchain,VkSurfaceCounterFlagBitsEXT counter,uint64_t * pCounterValue)5613*b7893ccfSSadaf Ebrahimi VkResult DispatchGetSwapchainCounterEXT(
5614*b7893ccfSSadaf Ebrahimi VkDevice device,
5615*b7893ccfSSadaf Ebrahimi VkSwapchainKHR swapchain,
5616*b7893ccfSSadaf Ebrahimi VkSurfaceCounterFlagBitsEXT counter,
5617*b7893ccfSSadaf Ebrahimi uint64_t* pCounterValue)
5618*b7893ccfSSadaf Ebrahimi {
5619*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5620*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetSwapchainCounterEXT(device, swapchain, counter, pCounterValue);
5621*b7893ccfSSadaf Ebrahimi {
5622*b7893ccfSSadaf Ebrahimi swapchain = layer_data->Unwrap(swapchain);
5623*b7893ccfSSadaf Ebrahimi }
5624*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetSwapchainCounterEXT(device, swapchain, counter, pCounterValue);
5625*b7893ccfSSadaf Ebrahimi
5626*b7893ccfSSadaf Ebrahimi return result;
5627*b7893ccfSSadaf Ebrahimi }
5628*b7893ccfSSadaf Ebrahimi
DispatchGetRefreshCycleDurationGOOGLE(VkDevice device,VkSwapchainKHR swapchain,VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties)5629*b7893ccfSSadaf Ebrahimi VkResult DispatchGetRefreshCycleDurationGOOGLE(
5630*b7893ccfSSadaf Ebrahimi VkDevice device,
5631*b7893ccfSSadaf Ebrahimi VkSwapchainKHR swapchain,
5632*b7893ccfSSadaf Ebrahimi VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties)
5633*b7893ccfSSadaf Ebrahimi {
5634*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5635*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties);
5636*b7893ccfSSadaf Ebrahimi {
5637*b7893ccfSSadaf Ebrahimi swapchain = layer_data->Unwrap(swapchain);
5638*b7893ccfSSadaf Ebrahimi }
5639*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties);
5640*b7893ccfSSadaf Ebrahimi
5641*b7893ccfSSadaf Ebrahimi return result;
5642*b7893ccfSSadaf Ebrahimi }
5643*b7893ccfSSadaf Ebrahimi
DispatchGetPastPresentationTimingGOOGLE(VkDevice device,VkSwapchainKHR swapchain,uint32_t * pPresentationTimingCount,VkPastPresentationTimingGOOGLE * pPresentationTimings)5644*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPastPresentationTimingGOOGLE(
5645*b7893ccfSSadaf Ebrahimi VkDevice device,
5646*b7893ccfSSadaf Ebrahimi VkSwapchainKHR swapchain,
5647*b7893ccfSSadaf Ebrahimi uint32_t* pPresentationTimingCount,
5648*b7893ccfSSadaf Ebrahimi VkPastPresentationTimingGOOGLE* pPresentationTimings)
5649*b7893ccfSSadaf Ebrahimi {
5650*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5651*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings);
5652*b7893ccfSSadaf Ebrahimi {
5653*b7893ccfSSadaf Ebrahimi swapchain = layer_data->Unwrap(swapchain);
5654*b7893ccfSSadaf Ebrahimi }
5655*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings);
5656*b7893ccfSSadaf Ebrahimi
5657*b7893ccfSSadaf Ebrahimi return result;
5658*b7893ccfSSadaf Ebrahimi }
5659*b7893ccfSSadaf Ebrahimi
DispatchCmdSetDiscardRectangleEXT(VkCommandBuffer commandBuffer,uint32_t firstDiscardRectangle,uint32_t discardRectangleCount,const VkRect2D * pDiscardRectangles)5660*b7893ccfSSadaf Ebrahimi void DispatchCmdSetDiscardRectangleEXT(
5661*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
5662*b7893ccfSSadaf Ebrahimi uint32_t firstDiscardRectangle,
5663*b7893ccfSSadaf Ebrahimi uint32_t discardRectangleCount,
5664*b7893ccfSSadaf Ebrahimi const VkRect2D* pDiscardRectangles)
5665*b7893ccfSSadaf Ebrahimi {
5666*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5667*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles);
5668*b7893ccfSSadaf Ebrahimi
5669*b7893ccfSSadaf Ebrahimi }
5670*b7893ccfSSadaf Ebrahimi
DispatchSetHdrMetadataEXT(VkDevice device,uint32_t swapchainCount,const VkSwapchainKHR * pSwapchains,const VkHdrMetadataEXT * pMetadata)5671*b7893ccfSSadaf Ebrahimi void DispatchSetHdrMetadataEXT(
5672*b7893ccfSSadaf Ebrahimi VkDevice device,
5673*b7893ccfSSadaf Ebrahimi uint32_t swapchainCount,
5674*b7893ccfSSadaf Ebrahimi const VkSwapchainKHR* pSwapchains,
5675*b7893ccfSSadaf Ebrahimi const VkHdrMetadataEXT* pMetadata)
5676*b7893ccfSSadaf Ebrahimi {
5677*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5678*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.SetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata);
5679*b7893ccfSSadaf Ebrahimi VkSwapchainKHR *local_pSwapchains = NULL;
5680*b7893ccfSSadaf Ebrahimi {
5681*b7893ccfSSadaf Ebrahimi if (pSwapchains) {
5682*b7893ccfSSadaf Ebrahimi local_pSwapchains = new VkSwapchainKHR[swapchainCount];
5683*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < swapchainCount; ++index0) {
5684*b7893ccfSSadaf Ebrahimi local_pSwapchains[index0] = layer_data->Unwrap(pSwapchains[index0]);
5685*b7893ccfSSadaf Ebrahimi }
5686*b7893ccfSSadaf Ebrahimi }
5687*b7893ccfSSadaf Ebrahimi }
5688*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.SetHdrMetadataEXT(device, swapchainCount, (const VkSwapchainKHR*)local_pSwapchains, pMetadata);
5689*b7893ccfSSadaf Ebrahimi if (local_pSwapchains)
5690*b7893ccfSSadaf Ebrahimi delete[] local_pSwapchains;
5691*b7893ccfSSadaf Ebrahimi }
5692*b7893ccfSSadaf Ebrahimi
5693*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_IOS_MVK
5694*b7893ccfSSadaf Ebrahimi
DispatchCreateIOSSurfaceMVK(VkInstance instance,const VkIOSSurfaceCreateInfoMVK * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)5695*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateIOSSurfaceMVK(
5696*b7893ccfSSadaf Ebrahimi VkInstance instance,
5697*b7893ccfSSadaf Ebrahimi const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
5698*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
5699*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface)
5700*b7893ccfSSadaf Ebrahimi {
5701*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
5702*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.CreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
5703*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.CreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
5704*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
5705*b7893ccfSSadaf Ebrahimi *pSurface = layer_data->WrapNew(*pSurface);
5706*b7893ccfSSadaf Ebrahimi }
5707*b7893ccfSSadaf Ebrahimi return result;
5708*b7893ccfSSadaf Ebrahimi }
5709*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_IOS_MVK
5710*b7893ccfSSadaf Ebrahimi
5711*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_MACOS_MVK
5712*b7893ccfSSadaf Ebrahimi
DispatchCreateMacOSSurfaceMVK(VkInstance instance,const VkMacOSSurfaceCreateInfoMVK * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)5713*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateMacOSSurfaceMVK(
5714*b7893ccfSSadaf Ebrahimi VkInstance instance,
5715*b7893ccfSSadaf Ebrahimi const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
5716*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
5717*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface)
5718*b7893ccfSSadaf Ebrahimi {
5719*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
5720*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.CreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
5721*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.CreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface);
5722*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
5723*b7893ccfSSadaf Ebrahimi *pSurface = layer_data->WrapNew(*pSurface);
5724*b7893ccfSSadaf Ebrahimi }
5725*b7893ccfSSadaf Ebrahimi return result;
5726*b7893ccfSSadaf Ebrahimi }
5727*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_MACOS_MVK
5728*b7893ccfSSadaf Ebrahimi
5729*b7893ccfSSadaf Ebrahimi // Skip vkSetDebugUtilsObjectNameEXT dispatch, manually generated
5730*b7893ccfSSadaf Ebrahimi
5731*b7893ccfSSadaf Ebrahimi // Skip vkSetDebugUtilsObjectTagEXT dispatch, manually generated
5732*b7893ccfSSadaf Ebrahimi
DispatchQueueBeginDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)5733*b7893ccfSSadaf Ebrahimi void DispatchQueueBeginDebugUtilsLabelEXT(
5734*b7893ccfSSadaf Ebrahimi VkQueue queue,
5735*b7893ccfSSadaf Ebrahimi const VkDebugUtilsLabelEXT* pLabelInfo)
5736*b7893ccfSSadaf Ebrahimi {
5737*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map);
5738*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.QueueBeginDebugUtilsLabelEXT(queue, pLabelInfo);
5739*b7893ccfSSadaf Ebrahimi
5740*b7893ccfSSadaf Ebrahimi }
5741*b7893ccfSSadaf Ebrahimi
DispatchQueueEndDebugUtilsLabelEXT(VkQueue queue)5742*b7893ccfSSadaf Ebrahimi void DispatchQueueEndDebugUtilsLabelEXT(
5743*b7893ccfSSadaf Ebrahimi VkQueue queue)
5744*b7893ccfSSadaf Ebrahimi {
5745*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map);
5746*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.QueueEndDebugUtilsLabelEXT(queue);
5747*b7893ccfSSadaf Ebrahimi
5748*b7893ccfSSadaf Ebrahimi }
5749*b7893ccfSSadaf Ebrahimi
DispatchQueueInsertDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)5750*b7893ccfSSadaf Ebrahimi void DispatchQueueInsertDebugUtilsLabelEXT(
5751*b7893ccfSSadaf Ebrahimi VkQueue queue,
5752*b7893ccfSSadaf Ebrahimi const VkDebugUtilsLabelEXT* pLabelInfo)
5753*b7893ccfSSadaf Ebrahimi {
5754*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map);
5755*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.QueueInsertDebugUtilsLabelEXT(queue, pLabelInfo);
5756*b7893ccfSSadaf Ebrahimi
5757*b7893ccfSSadaf Ebrahimi }
5758*b7893ccfSSadaf Ebrahimi
DispatchCmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)5759*b7893ccfSSadaf Ebrahimi void DispatchCmdBeginDebugUtilsLabelEXT(
5760*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
5761*b7893ccfSSadaf Ebrahimi const VkDebugUtilsLabelEXT* pLabelInfo)
5762*b7893ccfSSadaf Ebrahimi {
5763*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5764*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
5765*b7893ccfSSadaf Ebrahimi
5766*b7893ccfSSadaf Ebrahimi }
5767*b7893ccfSSadaf Ebrahimi
DispatchCmdEndDebugUtilsLabelEXT(VkCommandBuffer commandBuffer)5768*b7893ccfSSadaf Ebrahimi void DispatchCmdEndDebugUtilsLabelEXT(
5769*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer)
5770*b7893ccfSSadaf Ebrahimi {
5771*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5772*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdEndDebugUtilsLabelEXT(commandBuffer);
5773*b7893ccfSSadaf Ebrahimi
5774*b7893ccfSSadaf Ebrahimi }
5775*b7893ccfSSadaf Ebrahimi
DispatchCmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)5776*b7893ccfSSadaf Ebrahimi void DispatchCmdInsertDebugUtilsLabelEXT(
5777*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
5778*b7893ccfSSadaf Ebrahimi const VkDebugUtilsLabelEXT* pLabelInfo)
5779*b7893ccfSSadaf Ebrahimi {
5780*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5781*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
5782*b7893ccfSSadaf Ebrahimi
5783*b7893ccfSSadaf Ebrahimi }
5784*b7893ccfSSadaf Ebrahimi
DispatchCreateDebugUtilsMessengerEXT(VkInstance instance,const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDebugUtilsMessengerEXT * pMessenger)5785*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateDebugUtilsMessengerEXT(
5786*b7893ccfSSadaf Ebrahimi VkInstance instance,
5787*b7893ccfSSadaf Ebrahimi const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
5788*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
5789*b7893ccfSSadaf Ebrahimi VkDebugUtilsMessengerEXT* pMessenger)
5790*b7893ccfSSadaf Ebrahimi {
5791*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
5792*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.CreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger);
5793*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.CreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger);
5794*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
5795*b7893ccfSSadaf Ebrahimi *pMessenger = layer_data->WrapNew(*pMessenger);
5796*b7893ccfSSadaf Ebrahimi }
5797*b7893ccfSSadaf Ebrahimi return result;
5798*b7893ccfSSadaf Ebrahimi }
5799*b7893ccfSSadaf Ebrahimi
DispatchDestroyDebugUtilsMessengerEXT(VkInstance instance,VkDebugUtilsMessengerEXT messenger,const VkAllocationCallbacks * pAllocator)5800*b7893ccfSSadaf Ebrahimi void DispatchDestroyDebugUtilsMessengerEXT(
5801*b7893ccfSSadaf Ebrahimi VkInstance instance,
5802*b7893ccfSSadaf Ebrahimi VkDebugUtilsMessengerEXT messenger,
5803*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
5804*b7893ccfSSadaf Ebrahimi {
5805*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
5806*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.DestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator);
5807*b7893ccfSSadaf Ebrahimi uint64_t messenger_id = reinterpret_cast<uint64_t &>(messenger);
5808*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(messenger_id);
5809*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
5810*b7893ccfSSadaf Ebrahimi messenger = (VkDebugUtilsMessengerEXT)iter->second;
5811*b7893ccfSSadaf Ebrahimi } else {
5812*b7893ccfSSadaf Ebrahimi messenger = (VkDebugUtilsMessengerEXT)0;
5813*b7893ccfSSadaf Ebrahimi }
5814*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.DestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator);
5815*b7893ccfSSadaf Ebrahimi
5816*b7893ccfSSadaf Ebrahimi }
5817*b7893ccfSSadaf Ebrahimi
DispatchSubmitDebugUtilsMessageEXT(VkInstance instance,VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,VkDebugUtilsMessageTypeFlagsEXT messageTypes,const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData)5818*b7893ccfSSadaf Ebrahimi void DispatchSubmitDebugUtilsMessageEXT(
5819*b7893ccfSSadaf Ebrahimi VkInstance instance,
5820*b7893ccfSSadaf Ebrahimi VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
5821*b7893ccfSSadaf Ebrahimi VkDebugUtilsMessageTypeFlagsEXT messageTypes,
5822*b7893ccfSSadaf Ebrahimi const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
5823*b7893ccfSSadaf Ebrahimi {
5824*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
5825*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.SubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData);
5826*b7893ccfSSadaf Ebrahimi
5827*b7893ccfSSadaf Ebrahimi }
5828*b7893ccfSSadaf Ebrahimi
5829*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_ANDROID_KHR
5830*b7893ccfSSadaf Ebrahimi
DispatchGetAndroidHardwareBufferPropertiesANDROID(VkDevice device,const struct AHardwareBuffer * buffer,VkAndroidHardwareBufferPropertiesANDROID * pProperties)5831*b7893ccfSSadaf Ebrahimi VkResult DispatchGetAndroidHardwareBufferPropertiesANDROID(
5832*b7893ccfSSadaf Ebrahimi VkDevice device,
5833*b7893ccfSSadaf Ebrahimi const struct AHardwareBuffer* buffer,
5834*b7893ccfSSadaf Ebrahimi VkAndroidHardwareBufferPropertiesANDROID* pProperties)
5835*b7893ccfSSadaf Ebrahimi {
5836*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5837*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetAndroidHardwareBufferPropertiesANDROID(device, buffer, pProperties);
5838*b7893ccfSSadaf Ebrahimi
5839*b7893ccfSSadaf Ebrahimi return result;
5840*b7893ccfSSadaf Ebrahimi }
5841*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_ANDROID_KHR
5842*b7893ccfSSadaf Ebrahimi
5843*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_ANDROID_KHR
5844*b7893ccfSSadaf Ebrahimi
DispatchGetMemoryAndroidHardwareBufferANDROID(VkDevice device,const VkMemoryGetAndroidHardwareBufferInfoANDROID * pInfo,struct AHardwareBuffer ** pBuffer)5845*b7893ccfSSadaf Ebrahimi VkResult DispatchGetMemoryAndroidHardwareBufferANDROID(
5846*b7893ccfSSadaf Ebrahimi VkDevice device,
5847*b7893ccfSSadaf Ebrahimi const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
5848*b7893ccfSSadaf Ebrahimi struct AHardwareBuffer** pBuffer)
5849*b7893ccfSSadaf Ebrahimi {
5850*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5851*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetMemoryAndroidHardwareBufferANDROID(device, pInfo, pBuffer);
5852*b7893ccfSSadaf Ebrahimi safe_VkMemoryGetAndroidHardwareBufferInfoANDROID *local_pInfo = NULL;
5853*b7893ccfSSadaf Ebrahimi {
5854*b7893ccfSSadaf Ebrahimi if (pInfo) {
5855*b7893ccfSSadaf Ebrahimi local_pInfo = new safe_VkMemoryGetAndroidHardwareBufferInfoANDROID(pInfo);
5856*b7893ccfSSadaf Ebrahimi if (pInfo->memory) {
5857*b7893ccfSSadaf Ebrahimi local_pInfo->memory = layer_data->Unwrap(pInfo->memory);
5858*b7893ccfSSadaf Ebrahimi }
5859*b7893ccfSSadaf Ebrahimi }
5860*b7893ccfSSadaf Ebrahimi }
5861*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetMemoryAndroidHardwareBufferANDROID(device, (const VkMemoryGetAndroidHardwareBufferInfoANDROID*)local_pInfo, pBuffer);
5862*b7893ccfSSadaf Ebrahimi if (local_pInfo) {
5863*b7893ccfSSadaf Ebrahimi delete local_pInfo;
5864*b7893ccfSSadaf Ebrahimi }
5865*b7893ccfSSadaf Ebrahimi return result;
5866*b7893ccfSSadaf Ebrahimi }
5867*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_ANDROID_KHR
5868*b7893ccfSSadaf Ebrahimi
DispatchCmdSetSampleLocationsEXT(VkCommandBuffer commandBuffer,const VkSampleLocationsInfoEXT * pSampleLocationsInfo)5869*b7893ccfSSadaf Ebrahimi void DispatchCmdSetSampleLocationsEXT(
5870*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
5871*b7893ccfSSadaf Ebrahimi const VkSampleLocationsInfoEXT* pSampleLocationsInfo)
5872*b7893ccfSSadaf Ebrahimi {
5873*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5874*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo);
5875*b7893ccfSSadaf Ebrahimi
5876*b7893ccfSSadaf Ebrahimi }
5877*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceMultisamplePropertiesEXT(VkPhysicalDevice physicalDevice,VkSampleCountFlagBits samples,VkMultisamplePropertiesEXT * pMultisampleProperties)5878*b7893ccfSSadaf Ebrahimi void DispatchGetPhysicalDeviceMultisamplePropertiesEXT(
5879*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
5880*b7893ccfSSadaf Ebrahimi VkSampleCountFlagBits samples,
5881*b7893ccfSSadaf Ebrahimi VkMultisamplePropertiesEXT* pMultisampleProperties)
5882*b7893ccfSSadaf Ebrahimi {
5883*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
5884*b7893ccfSSadaf Ebrahimi layer_data->instance_dispatch_table.GetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties);
5885*b7893ccfSSadaf Ebrahimi
5886*b7893ccfSSadaf Ebrahimi }
5887*b7893ccfSSadaf Ebrahimi
DispatchGetImageDrmFormatModifierPropertiesEXT(VkDevice device,VkImage image,VkImageDrmFormatModifierPropertiesEXT * pProperties)5888*b7893ccfSSadaf Ebrahimi VkResult DispatchGetImageDrmFormatModifierPropertiesEXT(
5889*b7893ccfSSadaf Ebrahimi VkDevice device,
5890*b7893ccfSSadaf Ebrahimi VkImage image,
5891*b7893ccfSSadaf Ebrahimi VkImageDrmFormatModifierPropertiesEXT* pProperties)
5892*b7893ccfSSadaf Ebrahimi {
5893*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5894*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetImageDrmFormatModifierPropertiesEXT(device, image, pProperties);
5895*b7893ccfSSadaf Ebrahimi {
5896*b7893ccfSSadaf Ebrahimi image = layer_data->Unwrap(image);
5897*b7893ccfSSadaf Ebrahimi }
5898*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetImageDrmFormatModifierPropertiesEXT(device, image, pProperties);
5899*b7893ccfSSadaf Ebrahimi
5900*b7893ccfSSadaf Ebrahimi return result;
5901*b7893ccfSSadaf Ebrahimi }
5902*b7893ccfSSadaf Ebrahimi
DispatchCreateValidationCacheEXT(VkDevice device,const VkValidationCacheCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkValidationCacheEXT * pValidationCache)5903*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateValidationCacheEXT(
5904*b7893ccfSSadaf Ebrahimi VkDevice device,
5905*b7893ccfSSadaf Ebrahimi const VkValidationCacheCreateInfoEXT* pCreateInfo,
5906*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
5907*b7893ccfSSadaf Ebrahimi VkValidationCacheEXT* pValidationCache)
5908*b7893ccfSSadaf Ebrahimi {
5909*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5910*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache);
5911*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache);
5912*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
5913*b7893ccfSSadaf Ebrahimi *pValidationCache = layer_data->WrapNew(*pValidationCache);
5914*b7893ccfSSadaf Ebrahimi }
5915*b7893ccfSSadaf Ebrahimi return result;
5916*b7893ccfSSadaf Ebrahimi }
5917*b7893ccfSSadaf Ebrahimi
DispatchDestroyValidationCacheEXT(VkDevice device,VkValidationCacheEXT validationCache,const VkAllocationCallbacks * pAllocator)5918*b7893ccfSSadaf Ebrahimi void DispatchDestroyValidationCacheEXT(
5919*b7893ccfSSadaf Ebrahimi VkDevice device,
5920*b7893ccfSSadaf Ebrahimi VkValidationCacheEXT validationCache,
5921*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
5922*b7893ccfSSadaf Ebrahimi {
5923*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5924*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroyValidationCacheEXT(device, validationCache, pAllocator);
5925*b7893ccfSSadaf Ebrahimi uint64_t validationCache_id = reinterpret_cast<uint64_t &>(validationCache);
5926*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(validationCache_id);
5927*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
5928*b7893ccfSSadaf Ebrahimi validationCache = (VkValidationCacheEXT)iter->second;
5929*b7893ccfSSadaf Ebrahimi } else {
5930*b7893ccfSSadaf Ebrahimi validationCache = (VkValidationCacheEXT)0;
5931*b7893ccfSSadaf Ebrahimi }
5932*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyValidationCacheEXT(device, validationCache, pAllocator);
5933*b7893ccfSSadaf Ebrahimi
5934*b7893ccfSSadaf Ebrahimi }
5935*b7893ccfSSadaf Ebrahimi
DispatchMergeValidationCachesEXT(VkDevice device,VkValidationCacheEXT dstCache,uint32_t srcCacheCount,const VkValidationCacheEXT * pSrcCaches)5936*b7893ccfSSadaf Ebrahimi VkResult DispatchMergeValidationCachesEXT(
5937*b7893ccfSSadaf Ebrahimi VkDevice device,
5938*b7893ccfSSadaf Ebrahimi VkValidationCacheEXT dstCache,
5939*b7893ccfSSadaf Ebrahimi uint32_t srcCacheCount,
5940*b7893ccfSSadaf Ebrahimi const VkValidationCacheEXT* pSrcCaches)
5941*b7893ccfSSadaf Ebrahimi {
5942*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5943*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.MergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches);
5944*b7893ccfSSadaf Ebrahimi VkValidationCacheEXT *local_pSrcCaches = NULL;
5945*b7893ccfSSadaf Ebrahimi {
5946*b7893ccfSSadaf Ebrahimi dstCache = layer_data->Unwrap(dstCache);
5947*b7893ccfSSadaf Ebrahimi if (pSrcCaches) {
5948*b7893ccfSSadaf Ebrahimi local_pSrcCaches = new VkValidationCacheEXT[srcCacheCount];
5949*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < srcCacheCount; ++index0) {
5950*b7893ccfSSadaf Ebrahimi local_pSrcCaches[index0] = layer_data->Unwrap(pSrcCaches[index0]);
5951*b7893ccfSSadaf Ebrahimi }
5952*b7893ccfSSadaf Ebrahimi }
5953*b7893ccfSSadaf Ebrahimi }
5954*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.MergeValidationCachesEXT(device, dstCache, srcCacheCount, (const VkValidationCacheEXT*)local_pSrcCaches);
5955*b7893ccfSSadaf Ebrahimi if (local_pSrcCaches)
5956*b7893ccfSSadaf Ebrahimi delete[] local_pSrcCaches;
5957*b7893ccfSSadaf Ebrahimi return result;
5958*b7893ccfSSadaf Ebrahimi }
5959*b7893ccfSSadaf Ebrahimi
DispatchGetValidationCacheDataEXT(VkDevice device,VkValidationCacheEXT validationCache,size_t * pDataSize,void * pData)5960*b7893ccfSSadaf Ebrahimi VkResult DispatchGetValidationCacheDataEXT(
5961*b7893ccfSSadaf Ebrahimi VkDevice device,
5962*b7893ccfSSadaf Ebrahimi VkValidationCacheEXT validationCache,
5963*b7893ccfSSadaf Ebrahimi size_t* pDataSize,
5964*b7893ccfSSadaf Ebrahimi void* pData)
5965*b7893ccfSSadaf Ebrahimi {
5966*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
5967*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetValidationCacheDataEXT(device, validationCache, pDataSize, pData);
5968*b7893ccfSSadaf Ebrahimi {
5969*b7893ccfSSadaf Ebrahimi validationCache = layer_data->Unwrap(validationCache);
5970*b7893ccfSSadaf Ebrahimi }
5971*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetValidationCacheDataEXT(device, validationCache, pDataSize, pData);
5972*b7893ccfSSadaf Ebrahimi
5973*b7893ccfSSadaf Ebrahimi return result;
5974*b7893ccfSSadaf Ebrahimi }
5975*b7893ccfSSadaf Ebrahimi
DispatchCmdBindShadingRateImageNV(VkCommandBuffer commandBuffer,VkImageView imageView,VkImageLayout imageLayout)5976*b7893ccfSSadaf Ebrahimi void DispatchCmdBindShadingRateImageNV(
5977*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
5978*b7893ccfSSadaf Ebrahimi VkImageView imageView,
5979*b7893ccfSSadaf Ebrahimi VkImageLayout imageLayout)
5980*b7893ccfSSadaf Ebrahimi {
5981*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5982*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout);
5983*b7893ccfSSadaf Ebrahimi {
5984*b7893ccfSSadaf Ebrahimi imageView = layer_data->Unwrap(imageView);
5985*b7893ccfSSadaf Ebrahimi }
5986*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout);
5987*b7893ccfSSadaf Ebrahimi
5988*b7893ccfSSadaf Ebrahimi }
5989*b7893ccfSSadaf Ebrahimi
DispatchCmdSetViewportShadingRatePaletteNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkShadingRatePaletteNV * pShadingRatePalettes)5990*b7893ccfSSadaf Ebrahimi void DispatchCmdSetViewportShadingRatePaletteNV(
5991*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
5992*b7893ccfSSadaf Ebrahimi uint32_t firstViewport,
5993*b7893ccfSSadaf Ebrahimi uint32_t viewportCount,
5994*b7893ccfSSadaf Ebrahimi const VkShadingRatePaletteNV* pShadingRatePalettes)
5995*b7893ccfSSadaf Ebrahimi {
5996*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
5997*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes);
5998*b7893ccfSSadaf Ebrahimi
5999*b7893ccfSSadaf Ebrahimi }
6000*b7893ccfSSadaf Ebrahimi
DispatchCmdSetCoarseSampleOrderNV(VkCommandBuffer commandBuffer,VkCoarseSampleOrderTypeNV sampleOrderType,uint32_t customSampleOrderCount,const VkCoarseSampleOrderCustomNV * pCustomSampleOrders)6001*b7893ccfSSadaf Ebrahimi void DispatchCmdSetCoarseSampleOrderNV(
6002*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
6003*b7893ccfSSadaf Ebrahimi VkCoarseSampleOrderTypeNV sampleOrderType,
6004*b7893ccfSSadaf Ebrahimi uint32_t customSampleOrderCount,
6005*b7893ccfSSadaf Ebrahimi const VkCoarseSampleOrderCustomNV* pCustomSampleOrders)
6006*b7893ccfSSadaf Ebrahimi {
6007*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
6008*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders);
6009*b7893ccfSSadaf Ebrahimi
6010*b7893ccfSSadaf Ebrahimi }
6011*b7893ccfSSadaf Ebrahimi
DispatchCreateAccelerationStructureNV(VkDevice device,const VkAccelerationStructureCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkAccelerationStructureNV * pAccelerationStructure)6012*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateAccelerationStructureNV(
6013*b7893ccfSSadaf Ebrahimi VkDevice device,
6014*b7893ccfSSadaf Ebrahimi const VkAccelerationStructureCreateInfoNV* pCreateInfo,
6015*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
6016*b7893ccfSSadaf Ebrahimi VkAccelerationStructureNV* pAccelerationStructure)
6017*b7893ccfSSadaf Ebrahimi {
6018*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
6019*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure);
6020*b7893ccfSSadaf Ebrahimi safe_VkAccelerationStructureCreateInfoNV *local_pCreateInfo = NULL;
6021*b7893ccfSSadaf Ebrahimi {
6022*b7893ccfSSadaf Ebrahimi if (pCreateInfo) {
6023*b7893ccfSSadaf Ebrahimi local_pCreateInfo = new safe_VkAccelerationStructureCreateInfoNV(pCreateInfo);
6024*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo->info.pGeometries) {
6025*b7893ccfSSadaf Ebrahimi for (uint32_t index2 = 0; index2 < local_pCreateInfo->info.geometryCount; ++index2) {
6026*b7893ccfSSadaf Ebrahimi if (pCreateInfo->info.pGeometries[index2].geometry.triangles.vertexData) {
6027*b7893ccfSSadaf Ebrahimi local_pCreateInfo->info.pGeometries[index2].geometry.triangles.vertexData = layer_data->Unwrap(pCreateInfo->info.pGeometries[index2].geometry.triangles.vertexData);
6028*b7893ccfSSadaf Ebrahimi }
6029*b7893ccfSSadaf Ebrahimi if (pCreateInfo->info.pGeometries[index2].geometry.triangles.indexData) {
6030*b7893ccfSSadaf Ebrahimi local_pCreateInfo->info.pGeometries[index2].geometry.triangles.indexData = layer_data->Unwrap(pCreateInfo->info.pGeometries[index2].geometry.triangles.indexData);
6031*b7893ccfSSadaf Ebrahimi }
6032*b7893ccfSSadaf Ebrahimi if (pCreateInfo->info.pGeometries[index2].geometry.triangles.transformData) {
6033*b7893ccfSSadaf Ebrahimi local_pCreateInfo->info.pGeometries[index2].geometry.triangles.transformData = layer_data->Unwrap(pCreateInfo->info.pGeometries[index2].geometry.triangles.transformData);
6034*b7893ccfSSadaf Ebrahimi }
6035*b7893ccfSSadaf Ebrahimi if (pCreateInfo->info.pGeometries[index2].geometry.aabbs.aabbData) {
6036*b7893ccfSSadaf Ebrahimi local_pCreateInfo->info.pGeometries[index2].geometry.aabbs.aabbData = layer_data->Unwrap(pCreateInfo->info.pGeometries[index2].geometry.aabbs.aabbData);
6037*b7893ccfSSadaf Ebrahimi }
6038*b7893ccfSSadaf Ebrahimi }
6039*b7893ccfSSadaf Ebrahimi }
6040*b7893ccfSSadaf Ebrahimi }
6041*b7893ccfSSadaf Ebrahimi }
6042*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateAccelerationStructureNV(device, (const VkAccelerationStructureCreateInfoNV*)local_pCreateInfo, pAllocator, pAccelerationStructure);
6043*b7893ccfSSadaf Ebrahimi if (local_pCreateInfo) {
6044*b7893ccfSSadaf Ebrahimi delete local_pCreateInfo;
6045*b7893ccfSSadaf Ebrahimi }
6046*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
6047*b7893ccfSSadaf Ebrahimi *pAccelerationStructure = layer_data->WrapNew(*pAccelerationStructure);
6048*b7893ccfSSadaf Ebrahimi }
6049*b7893ccfSSadaf Ebrahimi return result;
6050*b7893ccfSSadaf Ebrahimi }
6051*b7893ccfSSadaf Ebrahimi
DispatchDestroyAccelerationStructureNV(VkDevice device,VkAccelerationStructureNV accelerationStructure,const VkAllocationCallbacks * pAllocator)6052*b7893ccfSSadaf Ebrahimi void DispatchDestroyAccelerationStructureNV(
6053*b7893ccfSSadaf Ebrahimi VkDevice device,
6054*b7893ccfSSadaf Ebrahimi VkAccelerationStructureNV accelerationStructure,
6055*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator)
6056*b7893ccfSSadaf Ebrahimi {
6057*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
6058*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.DestroyAccelerationStructureNV(device, accelerationStructure, pAllocator);
6059*b7893ccfSSadaf Ebrahimi uint64_t accelerationStructure_id = reinterpret_cast<uint64_t &>(accelerationStructure);
6060*b7893ccfSSadaf Ebrahimi auto iter = unique_id_mapping.pop(accelerationStructure_id);
6061*b7893ccfSSadaf Ebrahimi if (iter != unique_id_mapping.end()) {
6062*b7893ccfSSadaf Ebrahimi accelerationStructure = (VkAccelerationStructureNV)iter->second;
6063*b7893ccfSSadaf Ebrahimi } else {
6064*b7893ccfSSadaf Ebrahimi accelerationStructure = (VkAccelerationStructureNV)0;
6065*b7893ccfSSadaf Ebrahimi }
6066*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.DestroyAccelerationStructureNV(device, accelerationStructure, pAllocator);
6067*b7893ccfSSadaf Ebrahimi
6068*b7893ccfSSadaf Ebrahimi }
6069*b7893ccfSSadaf Ebrahimi
DispatchGetAccelerationStructureMemoryRequirementsNV(VkDevice device,const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo,VkMemoryRequirements2KHR * pMemoryRequirements)6070*b7893ccfSSadaf Ebrahimi void DispatchGetAccelerationStructureMemoryRequirementsNV(
6071*b7893ccfSSadaf Ebrahimi VkDevice device,
6072*b7893ccfSSadaf Ebrahimi const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
6073*b7893ccfSSadaf Ebrahimi VkMemoryRequirements2KHR* pMemoryRequirements)
6074*b7893ccfSSadaf Ebrahimi {
6075*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
6076*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements);
6077*b7893ccfSSadaf Ebrahimi safe_VkAccelerationStructureMemoryRequirementsInfoNV *local_pInfo = NULL;
6078*b7893ccfSSadaf Ebrahimi {
6079*b7893ccfSSadaf Ebrahimi if (pInfo) {
6080*b7893ccfSSadaf Ebrahimi local_pInfo = new safe_VkAccelerationStructureMemoryRequirementsInfoNV(pInfo);
6081*b7893ccfSSadaf Ebrahimi if (pInfo->accelerationStructure) {
6082*b7893ccfSSadaf Ebrahimi local_pInfo->accelerationStructure = layer_data->Unwrap(pInfo->accelerationStructure);
6083*b7893ccfSSadaf Ebrahimi }
6084*b7893ccfSSadaf Ebrahimi }
6085*b7893ccfSSadaf Ebrahimi }
6086*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.GetAccelerationStructureMemoryRequirementsNV(device, (const VkAccelerationStructureMemoryRequirementsInfoNV*)local_pInfo, pMemoryRequirements);
6087*b7893ccfSSadaf Ebrahimi if (local_pInfo) {
6088*b7893ccfSSadaf Ebrahimi delete local_pInfo;
6089*b7893ccfSSadaf Ebrahimi }
6090*b7893ccfSSadaf Ebrahimi }
6091*b7893ccfSSadaf Ebrahimi
DispatchBindAccelerationStructureMemoryNV(VkDevice device,uint32_t bindInfoCount,const VkBindAccelerationStructureMemoryInfoNV * pBindInfos)6092*b7893ccfSSadaf Ebrahimi VkResult DispatchBindAccelerationStructureMemoryNV(
6093*b7893ccfSSadaf Ebrahimi VkDevice device,
6094*b7893ccfSSadaf Ebrahimi uint32_t bindInfoCount,
6095*b7893ccfSSadaf Ebrahimi const VkBindAccelerationStructureMemoryInfoNV* pBindInfos)
6096*b7893ccfSSadaf Ebrahimi {
6097*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
6098*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.BindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos);
6099*b7893ccfSSadaf Ebrahimi safe_VkBindAccelerationStructureMemoryInfoNV *local_pBindInfos = NULL;
6100*b7893ccfSSadaf Ebrahimi {
6101*b7893ccfSSadaf Ebrahimi if (pBindInfos) {
6102*b7893ccfSSadaf Ebrahimi local_pBindInfos = new safe_VkBindAccelerationStructureMemoryInfoNV[bindInfoCount];
6103*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < bindInfoCount; ++index0) {
6104*b7893ccfSSadaf Ebrahimi local_pBindInfos[index0].initialize(&pBindInfos[index0]);
6105*b7893ccfSSadaf Ebrahimi if (pBindInfos[index0].accelerationStructure) {
6106*b7893ccfSSadaf Ebrahimi local_pBindInfos[index0].accelerationStructure = layer_data->Unwrap(pBindInfos[index0].accelerationStructure);
6107*b7893ccfSSadaf Ebrahimi }
6108*b7893ccfSSadaf Ebrahimi if (pBindInfos[index0].memory) {
6109*b7893ccfSSadaf Ebrahimi local_pBindInfos[index0].memory = layer_data->Unwrap(pBindInfos[index0].memory);
6110*b7893ccfSSadaf Ebrahimi }
6111*b7893ccfSSadaf Ebrahimi }
6112*b7893ccfSSadaf Ebrahimi }
6113*b7893ccfSSadaf Ebrahimi }
6114*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.BindAccelerationStructureMemoryNV(device, bindInfoCount, (const VkBindAccelerationStructureMemoryInfoNV*)local_pBindInfos);
6115*b7893ccfSSadaf Ebrahimi if (local_pBindInfos) {
6116*b7893ccfSSadaf Ebrahimi delete[] local_pBindInfos;
6117*b7893ccfSSadaf Ebrahimi }
6118*b7893ccfSSadaf Ebrahimi return result;
6119*b7893ccfSSadaf Ebrahimi }
6120*b7893ccfSSadaf Ebrahimi
DispatchCmdBuildAccelerationStructureNV(VkCommandBuffer commandBuffer,const VkAccelerationStructureInfoNV * pInfo,VkBuffer instanceData,VkDeviceSize instanceOffset,VkBool32 update,VkAccelerationStructureNV dst,VkAccelerationStructureNV src,VkBuffer scratch,VkDeviceSize scratchOffset)6121*b7893ccfSSadaf Ebrahimi void DispatchCmdBuildAccelerationStructureNV(
6122*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
6123*b7893ccfSSadaf Ebrahimi const VkAccelerationStructureInfoNV* pInfo,
6124*b7893ccfSSadaf Ebrahimi VkBuffer instanceData,
6125*b7893ccfSSadaf Ebrahimi VkDeviceSize instanceOffset,
6126*b7893ccfSSadaf Ebrahimi VkBool32 update,
6127*b7893ccfSSadaf Ebrahimi VkAccelerationStructureNV dst,
6128*b7893ccfSSadaf Ebrahimi VkAccelerationStructureNV src,
6129*b7893ccfSSadaf Ebrahimi VkBuffer scratch,
6130*b7893ccfSSadaf Ebrahimi VkDeviceSize scratchOffset)
6131*b7893ccfSSadaf Ebrahimi {
6132*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
6133*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset);
6134*b7893ccfSSadaf Ebrahimi safe_VkAccelerationStructureInfoNV *local_pInfo = NULL;
6135*b7893ccfSSadaf Ebrahimi {
6136*b7893ccfSSadaf Ebrahimi if (pInfo) {
6137*b7893ccfSSadaf Ebrahimi local_pInfo = new safe_VkAccelerationStructureInfoNV(pInfo);
6138*b7893ccfSSadaf Ebrahimi if (local_pInfo->pGeometries) {
6139*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pInfo->geometryCount; ++index1) {
6140*b7893ccfSSadaf Ebrahimi if (pInfo->pGeometries[index1].geometry.triangles.vertexData) {
6141*b7893ccfSSadaf Ebrahimi local_pInfo->pGeometries[index1].geometry.triangles.vertexData = layer_data->Unwrap(pInfo->pGeometries[index1].geometry.triangles.vertexData);
6142*b7893ccfSSadaf Ebrahimi }
6143*b7893ccfSSadaf Ebrahimi if (pInfo->pGeometries[index1].geometry.triangles.indexData) {
6144*b7893ccfSSadaf Ebrahimi local_pInfo->pGeometries[index1].geometry.triangles.indexData = layer_data->Unwrap(pInfo->pGeometries[index1].geometry.triangles.indexData);
6145*b7893ccfSSadaf Ebrahimi }
6146*b7893ccfSSadaf Ebrahimi if (pInfo->pGeometries[index1].geometry.triangles.transformData) {
6147*b7893ccfSSadaf Ebrahimi local_pInfo->pGeometries[index1].geometry.triangles.transformData = layer_data->Unwrap(pInfo->pGeometries[index1].geometry.triangles.transformData);
6148*b7893ccfSSadaf Ebrahimi }
6149*b7893ccfSSadaf Ebrahimi if (pInfo->pGeometries[index1].geometry.aabbs.aabbData) {
6150*b7893ccfSSadaf Ebrahimi local_pInfo->pGeometries[index1].geometry.aabbs.aabbData = layer_data->Unwrap(pInfo->pGeometries[index1].geometry.aabbs.aabbData);
6151*b7893ccfSSadaf Ebrahimi }
6152*b7893ccfSSadaf Ebrahimi }
6153*b7893ccfSSadaf Ebrahimi }
6154*b7893ccfSSadaf Ebrahimi }
6155*b7893ccfSSadaf Ebrahimi instanceData = layer_data->Unwrap(instanceData);
6156*b7893ccfSSadaf Ebrahimi dst = layer_data->Unwrap(dst);
6157*b7893ccfSSadaf Ebrahimi src = layer_data->Unwrap(src);
6158*b7893ccfSSadaf Ebrahimi scratch = layer_data->Unwrap(scratch);
6159*b7893ccfSSadaf Ebrahimi }
6160*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdBuildAccelerationStructureNV(commandBuffer, (const VkAccelerationStructureInfoNV*)local_pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset);
6161*b7893ccfSSadaf Ebrahimi if (local_pInfo) {
6162*b7893ccfSSadaf Ebrahimi delete local_pInfo;
6163*b7893ccfSSadaf Ebrahimi }
6164*b7893ccfSSadaf Ebrahimi }
6165*b7893ccfSSadaf Ebrahimi
DispatchCmdCopyAccelerationStructureNV(VkCommandBuffer commandBuffer,VkAccelerationStructureNV dst,VkAccelerationStructureNV src,VkCopyAccelerationStructureModeNV mode)6166*b7893ccfSSadaf Ebrahimi void DispatchCmdCopyAccelerationStructureNV(
6167*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
6168*b7893ccfSSadaf Ebrahimi VkAccelerationStructureNV dst,
6169*b7893ccfSSadaf Ebrahimi VkAccelerationStructureNV src,
6170*b7893ccfSSadaf Ebrahimi VkCopyAccelerationStructureModeNV mode)
6171*b7893ccfSSadaf Ebrahimi {
6172*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
6173*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode);
6174*b7893ccfSSadaf Ebrahimi {
6175*b7893ccfSSadaf Ebrahimi dst = layer_data->Unwrap(dst);
6176*b7893ccfSSadaf Ebrahimi src = layer_data->Unwrap(src);
6177*b7893ccfSSadaf Ebrahimi }
6178*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode);
6179*b7893ccfSSadaf Ebrahimi
6180*b7893ccfSSadaf Ebrahimi }
6181*b7893ccfSSadaf Ebrahimi
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)6182*b7893ccfSSadaf Ebrahimi void DispatchCmdTraceRaysNV(
6183*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
6184*b7893ccfSSadaf Ebrahimi VkBuffer raygenShaderBindingTableBuffer,
6185*b7893ccfSSadaf Ebrahimi VkDeviceSize raygenShaderBindingOffset,
6186*b7893ccfSSadaf Ebrahimi VkBuffer missShaderBindingTableBuffer,
6187*b7893ccfSSadaf Ebrahimi VkDeviceSize missShaderBindingOffset,
6188*b7893ccfSSadaf Ebrahimi VkDeviceSize missShaderBindingStride,
6189*b7893ccfSSadaf Ebrahimi VkBuffer hitShaderBindingTableBuffer,
6190*b7893ccfSSadaf Ebrahimi VkDeviceSize hitShaderBindingOffset,
6191*b7893ccfSSadaf Ebrahimi VkDeviceSize hitShaderBindingStride,
6192*b7893ccfSSadaf Ebrahimi VkBuffer callableShaderBindingTableBuffer,
6193*b7893ccfSSadaf Ebrahimi VkDeviceSize callableShaderBindingOffset,
6194*b7893ccfSSadaf Ebrahimi VkDeviceSize callableShaderBindingStride,
6195*b7893ccfSSadaf Ebrahimi uint32_t width,
6196*b7893ccfSSadaf Ebrahimi uint32_t height,
6197*b7893ccfSSadaf Ebrahimi uint32_t depth)
6198*b7893ccfSSadaf Ebrahimi {
6199*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
6200*b7893ccfSSadaf Ebrahimi 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);
6201*b7893ccfSSadaf Ebrahimi {
6202*b7893ccfSSadaf Ebrahimi raygenShaderBindingTableBuffer = layer_data->Unwrap(raygenShaderBindingTableBuffer);
6203*b7893ccfSSadaf Ebrahimi missShaderBindingTableBuffer = layer_data->Unwrap(missShaderBindingTableBuffer);
6204*b7893ccfSSadaf Ebrahimi hitShaderBindingTableBuffer = layer_data->Unwrap(hitShaderBindingTableBuffer);
6205*b7893ccfSSadaf Ebrahimi callableShaderBindingTableBuffer = layer_data->Unwrap(callableShaderBindingTableBuffer);
6206*b7893ccfSSadaf Ebrahimi }
6207*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth);
6208*b7893ccfSSadaf Ebrahimi
6209*b7893ccfSSadaf Ebrahimi }
6210*b7893ccfSSadaf Ebrahimi
DispatchCreateRayTracingPipelinesNV(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkRayTracingPipelineCreateInfoNV * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)6211*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateRayTracingPipelinesNV(
6212*b7893ccfSSadaf Ebrahimi VkDevice device,
6213*b7893ccfSSadaf Ebrahimi VkPipelineCache pipelineCache,
6214*b7893ccfSSadaf Ebrahimi uint32_t createInfoCount,
6215*b7893ccfSSadaf Ebrahimi const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
6216*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
6217*b7893ccfSSadaf Ebrahimi VkPipeline* pPipelines)
6218*b7893ccfSSadaf Ebrahimi {
6219*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
6220*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
6221*b7893ccfSSadaf Ebrahimi safe_VkRayTracingPipelineCreateInfoNV *local_pCreateInfos = NULL;
6222*b7893ccfSSadaf Ebrahimi {
6223*b7893ccfSSadaf Ebrahimi pipelineCache = layer_data->Unwrap(pipelineCache);
6224*b7893ccfSSadaf Ebrahimi if (pCreateInfos) {
6225*b7893ccfSSadaf Ebrahimi local_pCreateInfos = new safe_VkRayTracingPipelineCreateInfoNV[createInfoCount];
6226*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < createInfoCount; ++index0) {
6227*b7893ccfSSadaf Ebrahimi local_pCreateInfos[index0].initialize(&pCreateInfos[index0]);
6228*b7893ccfSSadaf Ebrahimi if (local_pCreateInfos[index0].pStages) {
6229*b7893ccfSSadaf Ebrahimi for (uint32_t index1 = 0; index1 < local_pCreateInfos[index0].stageCount; ++index1) {
6230*b7893ccfSSadaf Ebrahimi if (pCreateInfos[index0].pStages[index1].module) {
6231*b7893ccfSSadaf Ebrahimi local_pCreateInfos[index0].pStages[index1].module = layer_data->Unwrap(pCreateInfos[index0].pStages[index1].module);
6232*b7893ccfSSadaf Ebrahimi }
6233*b7893ccfSSadaf Ebrahimi }
6234*b7893ccfSSadaf Ebrahimi }
6235*b7893ccfSSadaf Ebrahimi if (pCreateInfos[index0].layout) {
6236*b7893ccfSSadaf Ebrahimi local_pCreateInfos[index0].layout = layer_data->Unwrap(pCreateInfos[index0].layout);
6237*b7893ccfSSadaf Ebrahimi }
6238*b7893ccfSSadaf Ebrahimi if (pCreateInfos[index0].basePipelineHandle) {
6239*b7893ccfSSadaf Ebrahimi local_pCreateInfos[index0].basePipelineHandle = layer_data->Unwrap(pCreateInfos[index0].basePipelineHandle);
6240*b7893ccfSSadaf Ebrahimi }
6241*b7893ccfSSadaf Ebrahimi }
6242*b7893ccfSSadaf Ebrahimi }
6243*b7893ccfSSadaf Ebrahimi }
6244*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, (const VkRayTracingPipelineCreateInfoNV*)local_pCreateInfos, pAllocator, pPipelines);
6245*b7893ccfSSadaf Ebrahimi if (local_pCreateInfos) {
6246*b7893ccfSSadaf Ebrahimi delete[] local_pCreateInfos;
6247*b7893ccfSSadaf Ebrahimi }
6248*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
6249*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < createInfoCount; index0++) {
6250*b7893ccfSSadaf Ebrahimi pPipelines[index0] = layer_data->WrapNew(pPipelines[index0]);
6251*b7893ccfSSadaf Ebrahimi }
6252*b7893ccfSSadaf Ebrahimi }
6253*b7893ccfSSadaf Ebrahimi return result;
6254*b7893ccfSSadaf Ebrahimi }
6255*b7893ccfSSadaf Ebrahimi
DispatchGetRayTracingShaderGroupHandlesNV(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)6256*b7893ccfSSadaf Ebrahimi VkResult DispatchGetRayTracingShaderGroupHandlesNV(
6257*b7893ccfSSadaf Ebrahimi VkDevice device,
6258*b7893ccfSSadaf Ebrahimi VkPipeline pipeline,
6259*b7893ccfSSadaf Ebrahimi uint32_t firstGroup,
6260*b7893ccfSSadaf Ebrahimi uint32_t groupCount,
6261*b7893ccfSSadaf Ebrahimi size_t dataSize,
6262*b7893ccfSSadaf Ebrahimi void* pData)
6263*b7893ccfSSadaf Ebrahimi {
6264*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
6265*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData);
6266*b7893ccfSSadaf Ebrahimi {
6267*b7893ccfSSadaf Ebrahimi pipeline = layer_data->Unwrap(pipeline);
6268*b7893ccfSSadaf Ebrahimi }
6269*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData);
6270*b7893ccfSSadaf Ebrahimi
6271*b7893ccfSSadaf Ebrahimi return result;
6272*b7893ccfSSadaf Ebrahimi }
6273*b7893ccfSSadaf Ebrahimi
DispatchGetAccelerationStructureHandleNV(VkDevice device,VkAccelerationStructureNV accelerationStructure,size_t dataSize,void * pData)6274*b7893ccfSSadaf Ebrahimi VkResult DispatchGetAccelerationStructureHandleNV(
6275*b7893ccfSSadaf Ebrahimi VkDevice device,
6276*b7893ccfSSadaf Ebrahimi VkAccelerationStructureNV accelerationStructure,
6277*b7893ccfSSadaf Ebrahimi size_t dataSize,
6278*b7893ccfSSadaf Ebrahimi void* pData)
6279*b7893ccfSSadaf Ebrahimi {
6280*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
6281*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData);
6282*b7893ccfSSadaf Ebrahimi {
6283*b7893ccfSSadaf Ebrahimi accelerationStructure = layer_data->Unwrap(accelerationStructure);
6284*b7893ccfSSadaf Ebrahimi }
6285*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData);
6286*b7893ccfSSadaf Ebrahimi
6287*b7893ccfSSadaf Ebrahimi return result;
6288*b7893ccfSSadaf Ebrahimi }
6289*b7893ccfSSadaf Ebrahimi
DispatchCmdWriteAccelerationStructuresPropertiesNV(VkCommandBuffer commandBuffer,uint32_t accelerationStructureCount,const VkAccelerationStructureNV * pAccelerationStructures,VkQueryType queryType,VkQueryPool queryPool,uint32_t firstQuery)6290*b7893ccfSSadaf Ebrahimi void DispatchCmdWriteAccelerationStructuresPropertiesNV(
6291*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
6292*b7893ccfSSadaf Ebrahimi uint32_t accelerationStructureCount,
6293*b7893ccfSSadaf Ebrahimi const VkAccelerationStructureNV* pAccelerationStructures,
6294*b7893ccfSSadaf Ebrahimi VkQueryType queryType,
6295*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
6296*b7893ccfSSadaf Ebrahimi uint32_t firstQuery)
6297*b7893ccfSSadaf Ebrahimi {
6298*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
6299*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery);
6300*b7893ccfSSadaf Ebrahimi VkAccelerationStructureNV *local_pAccelerationStructures = NULL;
6301*b7893ccfSSadaf Ebrahimi {
6302*b7893ccfSSadaf Ebrahimi if (pAccelerationStructures) {
6303*b7893ccfSSadaf Ebrahimi local_pAccelerationStructures = new VkAccelerationStructureNV[accelerationStructureCount];
6304*b7893ccfSSadaf Ebrahimi for (uint32_t index0 = 0; index0 < accelerationStructureCount; ++index0) {
6305*b7893ccfSSadaf Ebrahimi local_pAccelerationStructures[index0] = layer_data->Unwrap(pAccelerationStructures[index0]);
6306*b7893ccfSSadaf Ebrahimi }
6307*b7893ccfSSadaf Ebrahimi }
6308*b7893ccfSSadaf Ebrahimi queryPool = layer_data->Unwrap(queryPool);
6309*b7893ccfSSadaf Ebrahimi }
6310*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, (const VkAccelerationStructureNV*)local_pAccelerationStructures, queryType, queryPool, firstQuery);
6311*b7893ccfSSadaf Ebrahimi if (local_pAccelerationStructures)
6312*b7893ccfSSadaf Ebrahimi delete[] local_pAccelerationStructures;
6313*b7893ccfSSadaf Ebrahimi }
6314*b7893ccfSSadaf Ebrahimi
DispatchCompileDeferredNV(VkDevice device,VkPipeline pipeline,uint32_t shader)6315*b7893ccfSSadaf Ebrahimi VkResult DispatchCompileDeferredNV(
6316*b7893ccfSSadaf Ebrahimi VkDevice device,
6317*b7893ccfSSadaf Ebrahimi VkPipeline pipeline,
6318*b7893ccfSSadaf Ebrahimi uint32_t shader)
6319*b7893ccfSSadaf Ebrahimi {
6320*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
6321*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CompileDeferredNV(device, pipeline, shader);
6322*b7893ccfSSadaf Ebrahimi {
6323*b7893ccfSSadaf Ebrahimi pipeline = layer_data->Unwrap(pipeline);
6324*b7893ccfSSadaf Ebrahimi }
6325*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CompileDeferredNV(device, pipeline, shader);
6326*b7893ccfSSadaf Ebrahimi
6327*b7893ccfSSadaf Ebrahimi return result;
6328*b7893ccfSSadaf Ebrahimi }
6329*b7893ccfSSadaf Ebrahimi
DispatchGetMemoryHostPointerPropertiesEXT(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,const void * pHostPointer,VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties)6330*b7893ccfSSadaf Ebrahimi VkResult DispatchGetMemoryHostPointerPropertiesEXT(
6331*b7893ccfSSadaf Ebrahimi VkDevice device,
6332*b7893ccfSSadaf Ebrahimi VkExternalMemoryHandleTypeFlagBits handleType,
6333*b7893ccfSSadaf Ebrahimi const void* pHostPointer,
6334*b7893ccfSSadaf Ebrahimi VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties)
6335*b7893ccfSSadaf Ebrahimi {
6336*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
6337*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties);
6338*b7893ccfSSadaf Ebrahimi
6339*b7893ccfSSadaf Ebrahimi return result;
6340*b7893ccfSSadaf Ebrahimi }
6341*b7893ccfSSadaf Ebrahimi
DispatchCmdWriteBufferMarkerAMD(VkCommandBuffer commandBuffer,VkPipelineStageFlagBits pipelineStage,VkBuffer dstBuffer,VkDeviceSize dstOffset,uint32_t marker)6342*b7893ccfSSadaf Ebrahimi void DispatchCmdWriteBufferMarkerAMD(
6343*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
6344*b7893ccfSSadaf Ebrahimi VkPipelineStageFlagBits pipelineStage,
6345*b7893ccfSSadaf Ebrahimi VkBuffer dstBuffer,
6346*b7893ccfSSadaf Ebrahimi VkDeviceSize dstOffset,
6347*b7893ccfSSadaf Ebrahimi uint32_t marker)
6348*b7893ccfSSadaf Ebrahimi {
6349*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
6350*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker);
6351*b7893ccfSSadaf Ebrahimi {
6352*b7893ccfSSadaf Ebrahimi dstBuffer = layer_data->Unwrap(dstBuffer);
6353*b7893ccfSSadaf Ebrahimi }
6354*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker);
6355*b7893ccfSSadaf Ebrahimi
6356*b7893ccfSSadaf Ebrahimi }
6357*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceCalibrateableTimeDomainsEXT(VkPhysicalDevice physicalDevice,uint32_t * pTimeDomainCount,VkTimeDomainEXT * pTimeDomains)6358*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPhysicalDeviceCalibrateableTimeDomainsEXT(
6359*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
6360*b7893ccfSSadaf Ebrahimi uint32_t* pTimeDomainCount,
6361*b7893ccfSSadaf Ebrahimi VkTimeDomainEXT* pTimeDomains)
6362*b7893ccfSSadaf Ebrahimi {
6363*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
6364*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains);
6365*b7893ccfSSadaf Ebrahimi
6366*b7893ccfSSadaf Ebrahimi return result;
6367*b7893ccfSSadaf Ebrahimi }
6368*b7893ccfSSadaf Ebrahimi
DispatchGetCalibratedTimestampsEXT(VkDevice device,uint32_t timestampCount,const VkCalibratedTimestampInfoEXT * pTimestampInfos,uint64_t * pTimestamps,uint64_t * pMaxDeviation)6369*b7893ccfSSadaf Ebrahimi VkResult DispatchGetCalibratedTimestampsEXT(
6370*b7893ccfSSadaf Ebrahimi VkDevice device,
6371*b7893ccfSSadaf Ebrahimi uint32_t timestampCount,
6372*b7893ccfSSadaf Ebrahimi const VkCalibratedTimestampInfoEXT* pTimestampInfos,
6373*b7893ccfSSadaf Ebrahimi uint64_t* pTimestamps,
6374*b7893ccfSSadaf Ebrahimi uint64_t* pMaxDeviation)
6375*b7893ccfSSadaf Ebrahimi {
6376*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
6377*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation);
6378*b7893ccfSSadaf Ebrahimi
6379*b7893ccfSSadaf Ebrahimi return result;
6380*b7893ccfSSadaf Ebrahimi }
6381*b7893ccfSSadaf Ebrahimi
DispatchCmdDrawMeshTasksNV(VkCommandBuffer commandBuffer,uint32_t taskCount,uint32_t firstTask)6382*b7893ccfSSadaf Ebrahimi void DispatchCmdDrawMeshTasksNV(
6383*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
6384*b7893ccfSSadaf Ebrahimi uint32_t taskCount,
6385*b7893ccfSSadaf Ebrahimi uint32_t firstTask)
6386*b7893ccfSSadaf Ebrahimi {
6387*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
6388*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask);
6389*b7893ccfSSadaf Ebrahimi
6390*b7893ccfSSadaf Ebrahimi }
6391*b7893ccfSSadaf Ebrahimi
DispatchCmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)6392*b7893ccfSSadaf Ebrahimi void DispatchCmdDrawMeshTasksIndirectNV(
6393*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
6394*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
6395*b7893ccfSSadaf Ebrahimi VkDeviceSize offset,
6396*b7893ccfSSadaf Ebrahimi uint32_t drawCount,
6397*b7893ccfSSadaf Ebrahimi uint32_t stride)
6398*b7893ccfSSadaf Ebrahimi {
6399*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
6400*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride);
6401*b7893ccfSSadaf Ebrahimi {
6402*b7893ccfSSadaf Ebrahimi buffer = layer_data->Unwrap(buffer);
6403*b7893ccfSSadaf Ebrahimi }
6404*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride);
6405*b7893ccfSSadaf Ebrahimi
6406*b7893ccfSSadaf Ebrahimi }
6407*b7893ccfSSadaf Ebrahimi
DispatchCmdDrawMeshTasksIndirectCountNV(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)6408*b7893ccfSSadaf Ebrahimi void DispatchCmdDrawMeshTasksIndirectCountNV(
6409*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
6410*b7893ccfSSadaf Ebrahimi VkBuffer buffer,
6411*b7893ccfSSadaf Ebrahimi VkDeviceSize offset,
6412*b7893ccfSSadaf Ebrahimi VkBuffer countBuffer,
6413*b7893ccfSSadaf Ebrahimi VkDeviceSize countBufferOffset,
6414*b7893ccfSSadaf Ebrahimi uint32_t maxDrawCount,
6415*b7893ccfSSadaf Ebrahimi uint32_t stride)
6416*b7893ccfSSadaf Ebrahimi {
6417*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
6418*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.CmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
6419*b7893ccfSSadaf Ebrahimi {
6420*b7893ccfSSadaf Ebrahimi buffer = layer_data->Unwrap(buffer);
6421*b7893ccfSSadaf Ebrahimi countBuffer = layer_data->Unwrap(countBuffer);
6422*b7893ccfSSadaf Ebrahimi }
6423*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
6424*b7893ccfSSadaf Ebrahimi
6425*b7893ccfSSadaf Ebrahimi }
6426*b7893ccfSSadaf Ebrahimi
DispatchCmdSetExclusiveScissorNV(VkCommandBuffer commandBuffer,uint32_t firstExclusiveScissor,uint32_t exclusiveScissorCount,const VkRect2D * pExclusiveScissors)6427*b7893ccfSSadaf Ebrahimi void DispatchCmdSetExclusiveScissorNV(
6428*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
6429*b7893ccfSSadaf Ebrahimi uint32_t firstExclusiveScissor,
6430*b7893ccfSSadaf Ebrahimi uint32_t exclusiveScissorCount,
6431*b7893ccfSSadaf Ebrahimi const VkRect2D* pExclusiveScissors)
6432*b7893ccfSSadaf Ebrahimi {
6433*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
6434*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors);
6435*b7893ccfSSadaf Ebrahimi
6436*b7893ccfSSadaf Ebrahimi }
6437*b7893ccfSSadaf Ebrahimi
DispatchCmdSetCheckpointNV(VkCommandBuffer commandBuffer,const void * pCheckpointMarker)6438*b7893ccfSSadaf Ebrahimi void DispatchCmdSetCheckpointNV(
6439*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
6440*b7893ccfSSadaf Ebrahimi const void* pCheckpointMarker)
6441*b7893ccfSSadaf Ebrahimi {
6442*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
6443*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdSetCheckpointNV(commandBuffer, pCheckpointMarker);
6444*b7893ccfSSadaf Ebrahimi
6445*b7893ccfSSadaf Ebrahimi }
6446*b7893ccfSSadaf Ebrahimi
DispatchGetQueueCheckpointDataNV(VkQueue queue,uint32_t * pCheckpointDataCount,VkCheckpointDataNV * pCheckpointData)6447*b7893ccfSSadaf Ebrahimi void DispatchGetQueueCheckpointDataNV(
6448*b7893ccfSSadaf Ebrahimi VkQueue queue,
6449*b7893ccfSSadaf Ebrahimi uint32_t* pCheckpointDataCount,
6450*b7893ccfSSadaf Ebrahimi VkCheckpointDataNV* pCheckpointData)
6451*b7893ccfSSadaf Ebrahimi {
6452*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map);
6453*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.GetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData);
6454*b7893ccfSSadaf Ebrahimi
6455*b7893ccfSSadaf Ebrahimi }
6456*b7893ccfSSadaf Ebrahimi
DispatchInitializePerformanceApiINTEL(VkDevice device,const VkInitializePerformanceApiInfoINTEL * pInitializeInfo)6457*b7893ccfSSadaf Ebrahimi VkResult DispatchInitializePerformanceApiINTEL(
6458*b7893ccfSSadaf Ebrahimi VkDevice device,
6459*b7893ccfSSadaf Ebrahimi const VkInitializePerformanceApiInfoINTEL* pInitializeInfo)
6460*b7893ccfSSadaf Ebrahimi {
6461*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
6462*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.InitializePerformanceApiINTEL(device, pInitializeInfo);
6463*b7893ccfSSadaf Ebrahimi
6464*b7893ccfSSadaf Ebrahimi return result;
6465*b7893ccfSSadaf Ebrahimi }
6466*b7893ccfSSadaf Ebrahimi
DispatchUninitializePerformanceApiINTEL(VkDevice device)6467*b7893ccfSSadaf Ebrahimi void DispatchUninitializePerformanceApiINTEL(
6468*b7893ccfSSadaf Ebrahimi VkDevice device)
6469*b7893ccfSSadaf Ebrahimi {
6470*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
6471*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.UninitializePerformanceApiINTEL(device);
6472*b7893ccfSSadaf Ebrahimi
6473*b7893ccfSSadaf Ebrahimi }
6474*b7893ccfSSadaf Ebrahimi
DispatchCmdSetPerformanceMarkerINTEL(VkCommandBuffer commandBuffer,const VkPerformanceMarkerInfoINTEL * pMarkerInfo)6475*b7893ccfSSadaf Ebrahimi VkResult DispatchCmdSetPerformanceMarkerINTEL(
6476*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
6477*b7893ccfSSadaf Ebrahimi const VkPerformanceMarkerInfoINTEL* pMarkerInfo)
6478*b7893ccfSSadaf Ebrahimi {
6479*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
6480*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo);
6481*b7893ccfSSadaf Ebrahimi
6482*b7893ccfSSadaf Ebrahimi return result;
6483*b7893ccfSSadaf Ebrahimi }
6484*b7893ccfSSadaf Ebrahimi
DispatchCmdSetPerformanceStreamMarkerINTEL(VkCommandBuffer commandBuffer,const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo)6485*b7893ccfSSadaf Ebrahimi VkResult DispatchCmdSetPerformanceStreamMarkerINTEL(
6486*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
6487*b7893ccfSSadaf Ebrahimi const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo)
6488*b7893ccfSSadaf Ebrahimi {
6489*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
6490*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo);
6491*b7893ccfSSadaf Ebrahimi
6492*b7893ccfSSadaf Ebrahimi return result;
6493*b7893ccfSSadaf Ebrahimi }
6494*b7893ccfSSadaf Ebrahimi
DispatchCmdSetPerformanceOverrideINTEL(VkCommandBuffer commandBuffer,const VkPerformanceOverrideInfoINTEL * pOverrideInfo)6495*b7893ccfSSadaf Ebrahimi VkResult DispatchCmdSetPerformanceOverrideINTEL(
6496*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
6497*b7893ccfSSadaf Ebrahimi const VkPerformanceOverrideInfoINTEL* pOverrideInfo)
6498*b7893ccfSSadaf Ebrahimi {
6499*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
6500*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.CmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo);
6501*b7893ccfSSadaf Ebrahimi
6502*b7893ccfSSadaf Ebrahimi return result;
6503*b7893ccfSSadaf Ebrahimi }
6504*b7893ccfSSadaf Ebrahimi
DispatchAcquirePerformanceConfigurationINTEL(VkDevice device,const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo,VkPerformanceConfigurationINTEL * pConfiguration)6505*b7893ccfSSadaf Ebrahimi VkResult DispatchAcquirePerformanceConfigurationINTEL(
6506*b7893ccfSSadaf Ebrahimi VkDevice device,
6507*b7893ccfSSadaf Ebrahimi const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
6508*b7893ccfSSadaf Ebrahimi VkPerformanceConfigurationINTEL* pConfiguration)
6509*b7893ccfSSadaf Ebrahimi {
6510*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
6511*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.AcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration);
6512*b7893ccfSSadaf Ebrahimi {
6513*b7893ccfSSadaf Ebrahimi pConfiguration = layer_data->Unwrap(pConfiguration);
6514*b7893ccfSSadaf Ebrahimi }
6515*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.AcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration);
6516*b7893ccfSSadaf Ebrahimi
6517*b7893ccfSSadaf Ebrahimi return result;
6518*b7893ccfSSadaf Ebrahimi }
6519*b7893ccfSSadaf Ebrahimi
DispatchReleasePerformanceConfigurationINTEL(VkDevice device,VkPerformanceConfigurationINTEL configuration)6520*b7893ccfSSadaf Ebrahimi VkResult DispatchReleasePerformanceConfigurationINTEL(
6521*b7893ccfSSadaf Ebrahimi VkDevice device,
6522*b7893ccfSSadaf Ebrahimi VkPerformanceConfigurationINTEL configuration)
6523*b7893ccfSSadaf Ebrahimi {
6524*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
6525*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.ReleasePerformanceConfigurationINTEL(device, configuration);
6526*b7893ccfSSadaf Ebrahimi {
6527*b7893ccfSSadaf Ebrahimi configuration = layer_data->Unwrap(configuration);
6528*b7893ccfSSadaf Ebrahimi }
6529*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.ReleasePerformanceConfigurationINTEL(device, configuration);
6530*b7893ccfSSadaf Ebrahimi
6531*b7893ccfSSadaf Ebrahimi return result;
6532*b7893ccfSSadaf Ebrahimi }
6533*b7893ccfSSadaf Ebrahimi
DispatchQueueSetPerformanceConfigurationINTEL(VkQueue queue,VkPerformanceConfigurationINTEL configuration)6534*b7893ccfSSadaf Ebrahimi VkResult DispatchQueueSetPerformanceConfigurationINTEL(
6535*b7893ccfSSadaf Ebrahimi VkQueue queue,
6536*b7893ccfSSadaf Ebrahimi VkPerformanceConfigurationINTEL configuration)
6537*b7893ccfSSadaf Ebrahimi {
6538*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map);
6539*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.QueueSetPerformanceConfigurationINTEL(queue, configuration);
6540*b7893ccfSSadaf Ebrahimi {
6541*b7893ccfSSadaf Ebrahimi configuration = layer_data->Unwrap(configuration);
6542*b7893ccfSSadaf Ebrahimi }
6543*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.QueueSetPerformanceConfigurationINTEL(queue, configuration);
6544*b7893ccfSSadaf Ebrahimi
6545*b7893ccfSSadaf Ebrahimi return result;
6546*b7893ccfSSadaf Ebrahimi }
6547*b7893ccfSSadaf Ebrahimi
DispatchGetPerformanceParameterINTEL(VkDevice device,VkPerformanceParameterTypeINTEL parameter,VkPerformanceValueINTEL * pValue)6548*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPerformanceParameterINTEL(
6549*b7893ccfSSadaf Ebrahimi VkDevice device,
6550*b7893ccfSSadaf Ebrahimi VkPerformanceParameterTypeINTEL parameter,
6551*b7893ccfSSadaf Ebrahimi VkPerformanceValueINTEL* pValue)
6552*b7893ccfSSadaf Ebrahimi {
6553*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
6554*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetPerformanceParameterINTEL(device, parameter, pValue);
6555*b7893ccfSSadaf Ebrahimi
6556*b7893ccfSSadaf Ebrahimi return result;
6557*b7893ccfSSadaf Ebrahimi }
6558*b7893ccfSSadaf Ebrahimi
DispatchSetLocalDimmingAMD(VkDevice device,VkSwapchainKHR swapChain,VkBool32 localDimmingEnable)6559*b7893ccfSSadaf Ebrahimi void DispatchSetLocalDimmingAMD(
6560*b7893ccfSSadaf Ebrahimi VkDevice device,
6561*b7893ccfSSadaf Ebrahimi VkSwapchainKHR swapChain,
6562*b7893ccfSSadaf Ebrahimi VkBool32 localDimmingEnable)
6563*b7893ccfSSadaf Ebrahimi {
6564*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
6565*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.SetLocalDimmingAMD(device, swapChain, localDimmingEnable);
6566*b7893ccfSSadaf Ebrahimi {
6567*b7893ccfSSadaf Ebrahimi swapChain = layer_data->Unwrap(swapChain);
6568*b7893ccfSSadaf Ebrahimi }
6569*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.SetLocalDimmingAMD(device, swapChain, localDimmingEnable);
6570*b7893ccfSSadaf Ebrahimi
6571*b7893ccfSSadaf Ebrahimi }
6572*b7893ccfSSadaf Ebrahimi
6573*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_FUCHSIA
6574*b7893ccfSSadaf Ebrahimi
DispatchCreateImagePipeSurfaceFUCHSIA(VkInstance instance,const VkImagePipeSurfaceCreateInfoFUCHSIA * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)6575*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateImagePipeSurfaceFUCHSIA(
6576*b7893ccfSSadaf Ebrahimi VkInstance instance,
6577*b7893ccfSSadaf Ebrahimi const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo,
6578*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
6579*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface)
6580*b7893ccfSSadaf Ebrahimi {
6581*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
6582*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.CreateImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, pSurface);
6583*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.CreateImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, pSurface);
6584*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
6585*b7893ccfSSadaf Ebrahimi *pSurface = layer_data->WrapNew(*pSurface);
6586*b7893ccfSSadaf Ebrahimi }
6587*b7893ccfSSadaf Ebrahimi return result;
6588*b7893ccfSSadaf Ebrahimi }
6589*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_FUCHSIA
6590*b7893ccfSSadaf Ebrahimi
6591*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_METAL_EXT
6592*b7893ccfSSadaf Ebrahimi
DispatchCreateMetalSurfaceEXT(VkInstance instance,const VkMetalSurfaceCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)6593*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateMetalSurfaceEXT(
6594*b7893ccfSSadaf Ebrahimi VkInstance instance,
6595*b7893ccfSSadaf Ebrahimi const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
6596*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
6597*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface)
6598*b7893ccfSSadaf Ebrahimi {
6599*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
6600*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.CreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface);
6601*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.CreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface);
6602*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
6603*b7893ccfSSadaf Ebrahimi *pSurface = layer_data->WrapNew(*pSurface);
6604*b7893ccfSSadaf Ebrahimi }
6605*b7893ccfSSadaf Ebrahimi return result;
6606*b7893ccfSSadaf Ebrahimi }
6607*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_METAL_EXT
6608*b7893ccfSSadaf Ebrahimi
DispatchGetBufferDeviceAddressEXT(VkDevice device,const VkBufferDeviceAddressInfoEXT * pInfo)6609*b7893ccfSSadaf Ebrahimi VkDeviceAddress DispatchGetBufferDeviceAddressEXT(
6610*b7893ccfSSadaf Ebrahimi VkDevice device,
6611*b7893ccfSSadaf Ebrahimi const VkBufferDeviceAddressInfoEXT* pInfo)
6612*b7893ccfSSadaf Ebrahimi {
6613*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
6614*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetBufferDeviceAddressEXT(device, pInfo);
6615*b7893ccfSSadaf Ebrahimi safe_VkBufferDeviceAddressInfoEXT *local_pInfo = NULL;
6616*b7893ccfSSadaf Ebrahimi {
6617*b7893ccfSSadaf Ebrahimi if (pInfo) {
6618*b7893ccfSSadaf Ebrahimi local_pInfo = new safe_VkBufferDeviceAddressInfoEXT(pInfo);
6619*b7893ccfSSadaf Ebrahimi if (pInfo->buffer) {
6620*b7893ccfSSadaf Ebrahimi local_pInfo->buffer = layer_data->Unwrap(pInfo->buffer);
6621*b7893ccfSSadaf Ebrahimi }
6622*b7893ccfSSadaf Ebrahimi }
6623*b7893ccfSSadaf Ebrahimi }
6624*b7893ccfSSadaf Ebrahimi VkDeviceAddress result = layer_data->device_dispatch_table.GetBufferDeviceAddressEXT(device, (const VkBufferDeviceAddressInfoEXT*)local_pInfo);
6625*b7893ccfSSadaf Ebrahimi if (local_pInfo) {
6626*b7893ccfSSadaf Ebrahimi delete local_pInfo;
6627*b7893ccfSSadaf Ebrahimi }
6628*b7893ccfSSadaf Ebrahimi return result;
6629*b7893ccfSSadaf Ebrahimi }
6630*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceCooperativeMatrixPropertiesNV(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkCooperativeMatrixPropertiesNV * pProperties)6631*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPhysicalDeviceCooperativeMatrixPropertiesNV(
6632*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
6633*b7893ccfSSadaf Ebrahimi uint32_t* pPropertyCount,
6634*b7893ccfSSadaf Ebrahimi VkCooperativeMatrixPropertiesNV* pProperties)
6635*b7893ccfSSadaf Ebrahimi {
6636*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
6637*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties);
6638*b7893ccfSSadaf Ebrahimi
6639*b7893ccfSSadaf Ebrahimi return result;
6640*b7893ccfSSadaf Ebrahimi }
6641*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(VkPhysicalDevice physicalDevice,uint32_t * pCombinationCount,VkFramebufferMixedSamplesCombinationNV * pCombinations)6642*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
6643*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
6644*b7893ccfSSadaf Ebrahimi uint32_t* pCombinationCount,
6645*b7893ccfSSadaf Ebrahimi VkFramebufferMixedSamplesCombinationNV* pCombinations)
6646*b7893ccfSSadaf Ebrahimi {
6647*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
6648*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations);
6649*b7893ccfSSadaf Ebrahimi
6650*b7893ccfSSadaf Ebrahimi return result;
6651*b7893ccfSSadaf Ebrahimi }
6652*b7893ccfSSadaf Ebrahimi
6653*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
6654*b7893ccfSSadaf Ebrahimi
DispatchGetPhysicalDeviceSurfacePresentModes2EXT(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,uint32_t * pPresentModeCount,VkPresentModeKHR * pPresentModes)6655*b7893ccfSSadaf Ebrahimi VkResult DispatchGetPhysicalDeviceSurfacePresentModes2EXT(
6656*b7893ccfSSadaf Ebrahimi VkPhysicalDevice physicalDevice,
6657*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
6658*b7893ccfSSadaf Ebrahimi uint32_t* pPresentModeCount,
6659*b7893ccfSSadaf Ebrahimi VkPresentModeKHR* pPresentModes)
6660*b7893ccfSSadaf Ebrahimi {
6661*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(physicalDevice), layer_data_map);
6662*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.GetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes);
6663*b7893ccfSSadaf Ebrahimi safe_VkPhysicalDeviceSurfaceInfo2KHR *local_pSurfaceInfo = NULL;
6664*b7893ccfSSadaf Ebrahimi {
6665*b7893ccfSSadaf Ebrahimi if (pSurfaceInfo) {
6666*b7893ccfSSadaf Ebrahimi local_pSurfaceInfo = new safe_VkPhysicalDeviceSurfaceInfo2KHR(pSurfaceInfo);
6667*b7893ccfSSadaf Ebrahimi if (pSurfaceInfo->surface) {
6668*b7893ccfSSadaf Ebrahimi local_pSurfaceInfo->surface = layer_data->Unwrap(pSurfaceInfo->surface);
6669*b7893ccfSSadaf Ebrahimi }
6670*b7893ccfSSadaf Ebrahimi }
6671*b7893ccfSSadaf Ebrahimi }
6672*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.GetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, (const VkPhysicalDeviceSurfaceInfo2KHR*)local_pSurfaceInfo, pPresentModeCount, pPresentModes);
6673*b7893ccfSSadaf Ebrahimi if (local_pSurfaceInfo) {
6674*b7893ccfSSadaf Ebrahimi delete local_pSurfaceInfo;
6675*b7893ccfSSadaf Ebrahimi }
6676*b7893ccfSSadaf Ebrahimi return result;
6677*b7893ccfSSadaf Ebrahimi }
6678*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
6679*b7893ccfSSadaf Ebrahimi
6680*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
6681*b7893ccfSSadaf Ebrahimi
DispatchAcquireFullScreenExclusiveModeEXT(VkDevice device,VkSwapchainKHR swapchain)6682*b7893ccfSSadaf Ebrahimi VkResult DispatchAcquireFullScreenExclusiveModeEXT(
6683*b7893ccfSSadaf Ebrahimi VkDevice device,
6684*b7893ccfSSadaf Ebrahimi VkSwapchainKHR swapchain)
6685*b7893ccfSSadaf Ebrahimi {
6686*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
6687*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.AcquireFullScreenExclusiveModeEXT(device, swapchain);
6688*b7893ccfSSadaf Ebrahimi {
6689*b7893ccfSSadaf Ebrahimi swapchain = layer_data->Unwrap(swapchain);
6690*b7893ccfSSadaf Ebrahimi }
6691*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.AcquireFullScreenExclusiveModeEXT(device, swapchain);
6692*b7893ccfSSadaf Ebrahimi
6693*b7893ccfSSadaf Ebrahimi return result;
6694*b7893ccfSSadaf Ebrahimi }
6695*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
6696*b7893ccfSSadaf Ebrahimi
6697*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
6698*b7893ccfSSadaf Ebrahimi
DispatchReleaseFullScreenExclusiveModeEXT(VkDevice device,VkSwapchainKHR swapchain)6699*b7893ccfSSadaf Ebrahimi VkResult DispatchReleaseFullScreenExclusiveModeEXT(
6700*b7893ccfSSadaf Ebrahimi VkDevice device,
6701*b7893ccfSSadaf Ebrahimi VkSwapchainKHR swapchain)
6702*b7893ccfSSadaf Ebrahimi {
6703*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
6704*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.ReleaseFullScreenExclusiveModeEXT(device, swapchain);
6705*b7893ccfSSadaf Ebrahimi {
6706*b7893ccfSSadaf Ebrahimi swapchain = layer_data->Unwrap(swapchain);
6707*b7893ccfSSadaf Ebrahimi }
6708*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.ReleaseFullScreenExclusiveModeEXT(device, swapchain);
6709*b7893ccfSSadaf Ebrahimi
6710*b7893ccfSSadaf Ebrahimi return result;
6711*b7893ccfSSadaf Ebrahimi }
6712*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
6713*b7893ccfSSadaf Ebrahimi
6714*b7893ccfSSadaf Ebrahimi #ifdef VK_USE_PLATFORM_WIN32_KHR
6715*b7893ccfSSadaf Ebrahimi
DispatchGetDeviceGroupSurfacePresentModes2EXT(VkDevice device,const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo,VkDeviceGroupPresentModeFlagsKHR * pModes)6716*b7893ccfSSadaf Ebrahimi VkResult DispatchGetDeviceGroupSurfacePresentModes2EXT(
6717*b7893ccfSSadaf Ebrahimi VkDevice device,
6718*b7893ccfSSadaf Ebrahimi const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
6719*b7893ccfSSadaf Ebrahimi VkDeviceGroupPresentModeFlagsKHR* pModes)
6720*b7893ccfSSadaf Ebrahimi {
6721*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
6722*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.GetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes);
6723*b7893ccfSSadaf Ebrahimi safe_VkPhysicalDeviceSurfaceInfo2KHR *local_pSurfaceInfo = NULL;
6724*b7893ccfSSadaf Ebrahimi {
6725*b7893ccfSSadaf Ebrahimi if (pSurfaceInfo) {
6726*b7893ccfSSadaf Ebrahimi local_pSurfaceInfo = new safe_VkPhysicalDeviceSurfaceInfo2KHR(pSurfaceInfo);
6727*b7893ccfSSadaf Ebrahimi if (pSurfaceInfo->surface) {
6728*b7893ccfSSadaf Ebrahimi local_pSurfaceInfo->surface = layer_data->Unwrap(pSurfaceInfo->surface);
6729*b7893ccfSSadaf Ebrahimi }
6730*b7893ccfSSadaf Ebrahimi }
6731*b7893ccfSSadaf Ebrahimi }
6732*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->device_dispatch_table.GetDeviceGroupSurfacePresentModes2EXT(device, (const VkPhysicalDeviceSurfaceInfo2KHR*)local_pSurfaceInfo, pModes);
6733*b7893ccfSSadaf Ebrahimi if (local_pSurfaceInfo) {
6734*b7893ccfSSadaf Ebrahimi delete local_pSurfaceInfo;
6735*b7893ccfSSadaf Ebrahimi }
6736*b7893ccfSSadaf Ebrahimi return result;
6737*b7893ccfSSadaf Ebrahimi }
6738*b7893ccfSSadaf Ebrahimi #endif // VK_USE_PLATFORM_WIN32_KHR
6739*b7893ccfSSadaf Ebrahimi
DispatchCreateHeadlessSurfaceEXT(VkInstance instance,const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)6740*b7893ccfSSadaf Ebrahimi VkResult DispatchCreateHeadlessSurfaceEXT(
6741*b7893ccfSSadaf Ebrahimi VkInstance instance,
6742*b7893ccfSSadaf Ebrahimi const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo,
6743*b7893ccfSSadaf Ebrahimi const VkAllocationCallbacks* pAllocator,
6744*b7893ccfSSadaf Ebrahimi VkSurfaceKHR* pSurface)
6745*b7893ccfSSadaf Ebrahimi {
6746*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
6747*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->instance_dispatch_table.CreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface);
6748*b7893ccfSSadaf Ebrahimi VkResult result = layer_data->instance_dispatch_table.CreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface);
6749*b7893ccfSSadaf Ebrahimi if (VK_SUCCESS == result) {
6750*b7893ccfSSadaf Ebrahimi *pSurface = layer_data->WrapNew(*pSurface);
6751*b7893ccfSSadaf Ebrahimi }
6752*b7893ccfSSadaf Ebrahimi return result;
6753*b7893ccfSSadaf Ebrahimi }
6754*b7893ccfSSadaf Ebrahimi
DispatchCmdSetLineStippleEXT(VkCommandBuffer commandBuffer,uint32_t lineStippleFactor,uint16_t lineStipplePattern)6755*b7893ccfSSadaf Ebrahimi void DispatchCmdSetLineStippleEXT(
6756*b7893ccfSSadaf Ebrahimi VkCommandBuffer commandBuffer,
6757*b7893ccfSSadaf Ebrahimi uint32_t lineStippleFactor,
6758*b7893ccfSSadaf Ebrahimi uint16_t lineStipplePattern)
6759*b7893ccfSSadaf Ebrahimi {
6760*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
6761*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.CmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern);
6762*b7893ccfSSadaf Ebrahimi
6763*b7893ccfSSadaf Ebrahimi }
6764*b7893ccfSSadaf Ebrahimi
DispatchResetQueryPoolEXT(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)6765*b7893ccfSSadaf Ebrahimi void DispatchResetQueryPoolEXT(
6766*b7893ccfSSadaf Ebrahimi VkDevice device,
6767*b7893ccfSSadaf Ebrahimi VkQueryPool queryPool,
6768*b7893ccfSSadaf Ebrahimi uint32_t firstQuery,
6769*b7893ccfSSadaf Ebrahimi uint32_t queryCount)
6770*b7893ccfSSadaf Ebrahimi {
6771*b7893ccfSSadaf Ebrahimi auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
6772*b7893ccfSSadaf Ebrahimi if (!wrap_handles) return layer_data->device_dispatch_table.ResetQueryPoolEXT(device, queryPool, firstQuery, queryCount);
6773*b7893ccfSSadaf Ebrahimi {
6774*b7893ccfSSadaf Ebrahimi queryPool = layer_data->Unwrap(queryPool);
6775*b7893ccfSSadaf Ebrahimi }
6776*b7893ccfSSadaf Ebrahimi layer_data->device_dispatch_table.ResetQueryPoolEXT(device, queryPool, firstQuery, queryCount);
6777*b7893ccfSSadaf Ebrahimi
6778*b7893ccfSSadaf Ebrahimi }