xref: /aosp_15_r20/external/mesa3d/src/gfxstream/guest/vulkan_enc/func_table.cpp (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1 // Copyright (C) 2018 The Android Open Source Project
2 // Copyright (C) 2018 Google Inc.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 
16 // Autogenerated module func_table
17 //
18 // (impl) generated by scripts/genvk.py -registry ../../vulkan/registry/vk.xml -registryGfxstream
19 // xml/vk_gfxstream.xml cereal -o /tmp/
20 //
21 // Please do not modify directly;
22 // re-run mesa3d/src/gfxstream/codegen/generate-gfxstream-vulkan.sh,
23 // or directly from Python by defining:
24 // VULKAN_REGISTRY_XML_DIR : Directory containing vk.xml
25 // VULKAN_REGISTRY_SCRIPTS_DIR : Directory containing genvk.py
26 // CEREAL_OUTPUT_DIR: Where to put the generated sources.
27 //
28 // python3 $VULKAN_REGISTRY_SCRIPTS_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o
29 // $CEREAL_OUTPUT_DIR
30 //
31 
32 #include <cstring>
33 
34 #include "ResourceTracker.h"
35 #include "VkEncoder.h"
36 #include "gfxstream_vk_entrypoints.h"
37 #include "gfxstream_vk_private.h"
38 #include "goldfish_vk_private_defs.h"
39 
40 // Stuff we are not going to use but if included,
41 // will cause compile errors. These are Android Vulkan
42 // required extensions, but the approach will be to
43 // implement them completely on the guest side.
44 #undef VK_KHR_android_surface
45 #if defined(LINUX_GUEST_BUILD) || defined(__Fuchsia__)
46 #undef VK_ANDROID_native_buffer
47 #endif
48 #ifdef VK_VERSION_1_0
gfxstream_vk_GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures * pFeatures)49 void gfxstream_vk_GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice,
50                                             VkPhysicalDeviceFeatures* pFeatures) {
51     MESA_TRACE_SCOPE("vkGetPhysicalDeviceFeatures");
52     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
53     {
54         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
55         vkEnc->vkGetPhysicalDeviceFeatures(gfxstream_physicalDevice->internal_object, pFeatures,
56                                            true /* do lock */);
57     }
58 }
gfxstream_vk_GetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties * pFormatProperties)59 void gfxstream_vk_GetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice,
60                                                     VkFormat format,
61                                                     VkFormatProperties* pFormatProperties) {
62     MESA_TRACE_SCOPE("vkGetPhysicalDeviceFormatProperties");
63     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
64     {
65         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
66         vkEnc->vkGetPhysicalDeviceFormatProperties(gfxstream_physicalDevice->internal_object,
67                                                    format, pFormatProperties, true /* do lock */);
68     }
69 }
gfxstream_vk_GetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkImageTiling tiling,VkImageUsageFlags usage,VkImageCreateFlags flags,VkImageFormatProperties * pImageFormatProperties)70 VkResult gfxstream_vk_GetPhysicalDeviceImageFormatProperties(
71     VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling,
72     VkImageUsageFlags usage, VkImageCreateFlags flags,
73     VkImageFormatProperties* pImageFormatProperties) {
74     MESA_TRACE_SCOPE("vkGetPhysicalDeviceImageFormatProperties");
75     VkResult vkGetPhysicalDeviceImageFormatProperties_VkResult_return = (VkResult)0;
76     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
77     {
78         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
79         vkGetPhysicalDeviceImageFormatProperties_VkResult_return =
80             vkEnc->vkGetPhysicalDeviceImageFormatProperties(
81                 gfxstream_physicalDevice->internal_object, format, type, tiling, usage, flags,
82                 pImageFormatProperties, true /* do lock */);
83     }
84     return vkGetPhysicalDeviceImageFormatProperties_VkResult_return;
85 }
gfxstream_vk_GetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties * pProperties)86 void gfxstream_vk_GetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice,
87                                               VkPhysicalDeviceProperties* pProperties) {
88     MESA_TRACE_SCOPE("vkGetPhysicalDeviceProperties");
89     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
90     {
91         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
92         vkEnc->vkGetPhysicalDeviceProperties(gfxstream_physicalDevice->internal_object, pProperties,
93                                              true /* do lock */);
94     }
95 }
gfxstream_vk_GetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties * pQueueFamilyProperties)96 void gfxstream_vk_GetPhysicalDeviceQueueFamilyProperties(
97     VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount,
98     VkQueueFamilyProperties* pQueueFamilyProperties) {
99     MESA_TRACE_SCOPE("vkGetPhysicalDeviceQueueFamilyProperties");
100     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
101     {
102         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
103         vkEnc->vkGetPhysicalDeviceQueueFamilyProperties(gfxstream_physicalDevice->internal_object,
104                                                         pQueueFamilyPropertyCount,
105                                                         pQueueFamilyProperties, true /* do lock */);
106     }
107 }
gfxstream_vk_GetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties * pMemoryProperties)108 void gfxstream_vk_GetPhysicalDeviceMemoryProperties(
109     VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) {
110     MESA_TRACE_SCOPE("vkGetPhysicalDeviceMemoryProperties");
111     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
112     {
113         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
114         vkEnc->vkGetPhysicalDeviceMemoryProperties(gfxstream_physicalDevice->internal_object,
115                                                    pMemoryProperties, true /* do lock */);
116     }
117 }
gfxstream_vk_EnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkLayerProperties * pProperties)118 VkResult gfxstream_vk_EnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice,
119                                                      uint32_t* pPropertyCount,
120                                                      VkLayerProperties* pProperties) {
121     MESA_TRACE_SCOPE("vkEnumerateDeviceLayerProperties");
122     VkResult vkEnumerateDeviceLayerProperties_VkResult_return = (VkResult)0;
123     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
124     {
125         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
126         vkEnumerateDeviceLayerProperties_VkResult_return = vkEnc->vkEnumerateDeviceLayerProperties(
127             gfxstream_physicalDevice->internal_object, pPropertyCount, pProperties,
128             true /* do lock */);
129     }
130     return vkEnumerateDeviceLayerProperties_VkResult_return;
131 }
gfxstream_vk_QueueSubmit(VkQueue queue,uint32_t submitCount,const VkSubmitInfo * pSubmits,VkFence fence)132 VkResult gfxstream_vk_QueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits,
133                                   VkFence fence) {
134     MESA_TRACE_SCOPE("vkQueueSubmit");
135     VkResult vkQueueSubmit_VkResult_return = (VkResult)0;
136     VK_FROM_HANDLE(gfxstream_vk_queue, gfxstream_queue, queue);
137     VK_FROM_HANDLE(gfxstream_vk_fence, gfxstream_fence, fence);
138     {
139         auto vkEnc =
140             gfxstream::vk::ResourceTracker::getQueueEncoder(gfxstream_queue->internal_object);
141         std::vector<VkSubmitInfo> internal_pSubmits(submitCount);
142         std::vector<std::vector<VkSemaphore>> internal_VkSubmitInfo_pWaitSemaphores;
143         std::vector<std::vector<VkCommandBuffer>> internal_VkSubmitInfo_pCommandBuffers;
144         std::vector<std::vector<VkSemaphore>> internal_VkSubmitInfo_pSignalSemaphores;
145         for (uint32_t i = 0; i < submitCount; ++i) {
146             internal_pSubmits[i] = pSubmits[i];
147             /* VkSubmitInfo::pWaitSemaphores */
148             internal_VkSubmitInfo_pWaitSemaphores.push_back(std::vector<VkSemaphore>());
149             internal_VkSubmitInfo_pWaitSemaphores[i] = transformVkSemaphoreList(
150                 internal_pSubmits[i].pWaitSemaphores, internal_pSubmits[i].waitSemaphoreCount);
151             internal_pSubmits[i].pWaitSemaphores = internal_VkSubmitInfo_pWaitSemaphores[i].data();
152             internal_pSubmits[i].waitSemaphoreCount =
153                 internal_VkSubmitInfo_pWaitSemaphores[i].size();
154             /* VkSubmitInfo::pCommandBuffers */
155             internal_VkSubmitInfo_pCommandBuffers.push_back(std::vector<VkCommandBuffer>());
156             internal_VkSubmitInfo_pCommandBuffers[i].resize(
157                 internal_pSubmits[i].commandBufferCount);
158             for (uint32_t j = 0; j < internal_pSubmits[i].commandBufferCount; ++j) {
159                 VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_pCommandBuffers,
160                                internal_pSubmits[i].pCommandBuffers[j]);
161                 internal_VkSubmitInfo_pCommandBuffers[i][j] =
162                     gfxstream_pCommandBuffers->internal_object;
163             }
164             internal_pSubmits[i].pCommandBuffers = internal_VkSubmitInfo_pCommandBuffers[i].data();
165             /* VkSubmitInfo::pSignalSemaphores */
166             internal_VkSubmitInfo_pSignalSemaphores.push_back(std::vector<VkSemaphore>());
167             internal_VkSubmitInfo_pSignalSemaphores[i] = transformVkSemaphoreList(
168                 internal_pSubmits[i].pSignalSemaphores, internal_pSubmits[i].signalSemaphoreCount);
169             internal_pSubmits[i].pSignalSemaphores =
170                 internal_VkSubmitInfo_pSignalSemaphores[i].data();
171             internal_pSubmits[i].signalSemaphoreCount =
172                 internal_VkSubmitInfo_pSignalSemaphores[i].size();
173         }
174         auto resources = gfxstream::vk::ResourceTracker::get();
175         vkQueueSubmit_VkResult_return = resources->on_vkQueueSubmit(
176             vkEnc, VK_SUCCESS, gfxstream_queue->internal_object, submitCount,
177             internal_pSubmits.data(),
178             gfxstream_fence ? gfxstream_fence->internal_object : VK_NULL_HANDLE);
179     }
180     return vkQueueSubmit_VkResult_return;
181 }
gfxstream_vk_QueueWaitIdle(VkQueue queue)182 VkResult gfxstream_vk_QueueWaitIdle(VkQueue queue) {
183     MESA_TRACE_SCOPE("vkQueueWaitIdle");
184     VkResult vkQueueWaitIdle_VkResult_return = (VkResult)0;
185     VK_FROM_HANDLE(gfxstream_vk_queue, gfxstream_queue, queue);
186     {
187         auto vkEnc =
188             gfxstream::vk::ResourceTracker::getQueueEncoder(gfxstream_queue->internal_object);
189         auto resources = gfxstream::vk::ResourceTracker::get();
190         vkQueueWaitIdle_VkResult_return =
191             resources->on_vkQueueWaitIdle(vkEnc, VK_SUCCESS, gfxstream_queue->internal_object);
192     }
193     return vkQueueWaitIdle_VkResult_return;
194 }
gfxstream_vk_DeviceWaitIdle(VkDevice device)195 VkResult gfxstream_vk_DeviceWaitIdle(VkDevice device) {
196     MESA_TRACE_SCOPE("vkDeviceWaitIdle");
197     VkResult vkDeviceWaitIdle_VkResult_return = (VkResult)0;
198     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
199     {
200         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
201         vkDeviceWaitIdle_VkResult_return =
202             vkEnc->vkDeviceWaitIdle(gfxstream_device->internal_object, true /* do lock */);
203     }
204     return vkDeviceWaitIdle_VkResult_return;
205 }
gfxstream_vk_FreeMemory(VkDevice device,VkDeviceMemory memory,const VkAllocationCallbacks * pAllocator)206 void gfxstream_vk_FreeMemory(VkDevice device, VkDeviceMemory memory,
207                              const VkAllocationCallbacks* pAllocator) {
208     MESA_TRACE_SCOPE("vkFreeMemory");
209     if (VK_NULL_HANDLE == memory) {
210         return;
211     }
212     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
213     {
214         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
215         auto resources = gfxstream::vk::ResourceTracker::get();
216         resources->on_vkFreeMemory(vkEnc, gfxstream_device->internal_object, memory, pAllocator);
217     }
218 }
gfxstream_vk_MapMemory(VkDevice device,VkDeviceMemory memory,VkDeviceSize offset,VkDeviceSize size,VkMemoryMapFlags flags,void ** ppData)219 VkResult gfxstream_vk_MapMemory(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset,
220                                 VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) {
221     MESA_TRACE_SCOPE("vkMapMemory");
222     VkResult vkMapMemory_VkResult_return = (VkResult)0;
223     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
224     {
225         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
226         vkMapMemory_VkResult_return =
227             vkEnc->vkMapMemory(gfxstream_device->internal_object, memory, offset, size, flags,
228                                ppData, true /* do lock */);
229     }
230     return vkMapMemory_VkResult_return;
231 }
gfxstream_vk_UnmapMemory(VkDevice device,VkDeviceMemory memory)232 void gfxstream_vk_UnmapMemory(VkDevice device, VkDeviceMemory memory) {
233     MESA_TRACE_SCOPE("vkUnmapMemory");
234     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
235     {
236         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
237         vkEnc->vkUnmapMemory(gfxstream_device->internal_object, memory, true /* do lock */);
238     }
239 }
gfxstream_vk_FlushMappedMemoryRanges(VkDevice device,uint32_t memoryRangeCount,const VkMappedMemoryRange * pMemoryRanges)240 VkResult gfxstream_vk_FlushMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount,
241                                               const VkMappedMemoryRange* pMemoryRanges) {
242     MESA_TRACE_SCOPE("vkFlushMappedMemoryRanges");
243     VkResult vkFlushMappedMemoryRanges_VkResult_return = (VkResult)0;
244     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
245     {
246         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
247         vkFlushMappedMemoryRanges_VkResult_return = vkEnc->vkFlushMappedMemoryRanges(
248             gfxstream_device->internal_object, memoryRangeCount, pMemoryRanges, true /* do lock */);
249     }
250     return vkFlushMappedMemoryRanges_VkResult_return;
251 }
gfxstream_vk_InvalidateMappedMemoryRanges(VkDevice device,uint32_t memoryRangeCount,const VkMappedMemoryRange * pMemoryRanges)252 VkResult gfxstream_vk_InvalidateMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount,
253                                                    const VkMappedMemoryRange* pMemoryRanges) {
254     MESA_TRACE_SCOPE("vkInvalidateMappedMemoryRanges");
255     VkResult vkInvalidateMappedMemoryRanges_VkResult_return = (VkResult)0;
256     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
257     {
258         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
259         vkInvalidateMappedMemoryRanges_VkResult_return = vkEnc->vkInvalidateMappedMemoryRanges(
260             gfxstream_device->internal_object, memoryRangeCount, pMemoryRanges, true /* do lock */);
261     }
262     return vkInvalidateMappedMemoryRanges_VkResult_return;
263 }
gfxstream_vk_GetDeviceMemoryCommitment(VkDevice device,VkDeviceMemory memory,VkDeviceSize * pCommittedMemoryInBytes)264 void gfxstream_vk_GetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory,
265                                             VkDeviceSize* pCommittedMemoryInBytes) {
266     MESA_TRACE_SCOPE("vkGetDeviceMemoryCommitment");
267     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
268     {
269         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
270         vkEnc->vkGetDeviceMemoryCommitment(gfxstream_device->internal_object, memory,
271                                            pCommittedMemoryInBytes, true /* do lock */);
272     }
273 }
gfxstream_vk_BindBufferMemory(VkDevice device,VkBuffer buffer,VkDeviceMemory memory,VkDeviceSize memoryOffset)274 VkResult gfxstream_vk_BindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory memory,
275                                        VkDeviceSize memoryOffset) {
276     MESA_TRACE_SCOPE("vkBindBufferMemory");
277     VkResult vkBindBufferMemory_VkResult_return = (VkResult)0;
278     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
279     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer, buffer);
280     {
281         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
282         auto resources = gfxstream::vk::ResourceTracker::get();
283         vkBindBufferMemory_VkResult_return = resources->on_vkBindBufferMemory(
284             vkEnc, VK_SUCCESS, gfxstream_device->internal_object, gfxstream_buffer->internal_object,
285             memory, memoryOffset);
286     }
287     return vkBindBufferMemory_VkResult_return;
288 }
gfxstream_vk_BindImageMemory(VkDevice device,VkImage image,VkDeviceMemory memory,VkDeviceSize memoryOffset)289 VkResult gfxstream_vk_BindImageMemory(VkDevice device, VkImage image, VkDeviceMemory memory,
290                                       VkDeviceSize memoryOffset) {
291     MESA_TRACE_SCOPE("vkBindImageMemory");
292     VkResult vkBindImageMemory_VkResult_return = (VkResult)0;
293     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
294     {
295         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
296         auto resources = gfxstream::vk::ResourceTracker::get();
297         vkBindImageMemory_VkResult_return = resources->on_vkBindImageMemory(
298             vkEnc, VK_SUCCESS, gfxstream_device->internal_object, image, memory, memoryOffset);
299     }
300     return vkBindImageMemory_VkResult_return;
301 }
gfxstream_vk_GetBufferMemoryRequirements(VkDevice device,VkBuffer buffer,VkMemoryRequirements * pMemoryRequirements)302 void gfxstream_vk_GetBufferMemoryRequirements(VkDevice device, VkBuffer buffer,
303                                               VkMemoryRequirements* pMemoryRequirements) {
304     MESA_TRACE_SCOPE("vkGetBufferMemoryRequirements");
305     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
306     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer, buffer);
307     {
308         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
309         auto resources = gfxstream::vk::ResourceTracker::get();
310         resources->on_vkGetBufferMemoryRequirements(vkEnc, gfxstream_device->internal_object,
311                                                     gfxstream_buffer->internal_object,
312                                                     pMemoryRequirements);
313     }
314 }
gfxstream_vk_GetImageMemoryRequirements(VkDevice device,VkImage image,VkMemoryRequirements * pMemoryRequirements)315 void gfxstream_vk_GetImageMemoryRequirements(VkDevice device, VkImage image,
316                                              VkMemoryRequirements* pMemoryRequirements) {
317     MESA_TRACE_SCOPE("vkGetImageMemoryRequirements");
318     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
319     {
320         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
321         auto resources = gfxstream::vk::ResourceTracker::get();
322         resources->on_vkGetImageMemoryRequirements(vkEnc, gfxstream_device->internal_object, image,
323                                                    pMemoryRequirements);
324     }
325 }
gfxstream_vk_GetImageSparseMemoryRequirements(VkDevice device,VkImage image,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements * pSparseMemoryRequirements)326 void gfxstream_vk_GetImageSparseMemoryRequirements(
327     VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount,
328     VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
329     MESA_TRACE_SCOPE("vkGetImageSparseMemoryRequirements");
330     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
331     {
332         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
333         vkEnc->vkGetImageSparseMemoryRequirements(gfxstream_device->internal_object, image,
334                                                   pSparseMemoryRequirementCount,
335                                                   pSparseMemoryRequirements, true /* do lock */);
336     }
337 }
gfxstream_vk_GetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkSampleCountFlagBits samples,VkImageUsageFlags usage,VkImageTiling tiling,uint32_t * pPropertyCount,VkSparseImageFormatProperties * pProperties)338 void gfxstream_vk_GetPhysicalDeviceSparseImageFormatProperties(
339     VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type,
340     VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling,
341     uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties) {
342     MESA_TRACE_SCOPE("vkGetPhysicalDeviceSparseImageFormatProperties");
343     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
344     {
345         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
346         vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties(
347             gfxstream_physicalDevice->internal_object, format, type, samples, usage, tiling,
348             pPropertyCount, pProperties, true /* do lock */);
349     }
350 }
gfxstream_vk_QueueBindSparse(VkQueue queue,uint32_t bindInfoCount,const VkBindSparseInfo * pBindInfo,VkFence fence)351 VkResult gfxstream_vk_QueueBindSparse(VkQueue queue, uint32_t bindInfoCount,
352                                       const VkBindSparseInfo* pBindInfo, VkFence fence) {
353     MESA_TRACE_SCOPE("vkQueueBindSparse");
354     VkResult vkQueueBindSparse_VkResult_return = (VkResult)0;
355     VK_FROM_HANDLE(gfxstream_vk_queue, gfxstream_queue, queue);
356     VK_FROM_HANDLE(gfxstream_vk_fence, gfxstream_fence, fence);
357     {
358         auto vkEnc =
359             gfxstream::vk::ResourceTracker::getQueueEncoder(gfxstream_queue->internal_object);
360         std::vector<VkBindSparseInfo> internal_pBindInfo(bindInfoCount);
361         std::vector<std::vector<VkSemaphore>> internal_VkBindSparseInfo_pWaitSemaphores;
362         std::vector<std::vector<VkSparseBufferMemoryBindInfo>>
363             internal_VkBindSparseInfo_pBufferBinds;
364         std::vector<std::vector<VkSemaphore>> internal_VkBindSparseInfo_pSignalSemaphores;
365         for (uint32_t i = 0; i < bindInfoCount; ++i) {
366             internal_pBindInfo[i] = pBindInfo[i];
367             /* VkBindSparseInfo::pWaitSemaphores */
368             internal_VkBindSparseInfo_pWaitSemaphores.push_back(std::vector<VkSemaphore>());
369             internal_VkBindSparseInfo_pWaitSemaphores[i] = transformVkSemaphoreList(
370                 internal_pBindInfo[i].pWaitSemaphores, internal_pBindInfo[i].waitSemaphoreCount);
371             internal_pBindInfo[i].pWaitSemaphores =
372                 internal_VkBindSparseInfo_pWaitSemaphores[i].data();
373             internal_pBindInfo[i].waitSemaphoreCount =
374                 internal_VkBindSparseInfo_pWaitSemaphores[i].size();
375             /* VkBindSparseInfo::pBufferBinds */
376             internal_VkBindSparseInfo_pBufferBinds.push_back(
377                 std::vector<VkSparseBufferMemoryBindInfo>());
378             internal_VkBindSparseInfo_pBufferBinds[i].resize(internal_pBindInfo[i].bufferBindCount);
379             for (uint32_t j = 0; j < internal_pBindInfo[i].bufferBindCount; ++j) {
380                 internal_VkBindSparseInfo_pBufferBinds[i][j] =
381                     internal_pBindInfo[i].pBufferBinds[j];
382                 /* VkSparseBufferMemoryBindInfo::buffer */
383                 VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer,
384                                internal_VkBindSparseInfo_pBufferBinds[i][j].buffer);
385                 internal_VkBindSparseInfo_pBufferBinds[i][j].buffer =
386                     gfxstream_buffer->internal_object;
387             }
388             internal_pBindInfo[i].pBufferBinds = internal_VkBindSparseInfo_pBufferBinds[i].data();
389             /* VkBindSparseInfo::pSignalSemaphores */
390             internal_VkBindSparseInfo_pSignalSemaphores.push_back(std::vector<VkSemaphore>());
391             internal_VkBindSparseInfo_pSignalSemaphores[i] =
392                 transformVkSemaphoreList(internal_pBindInfo[i].pSignalSemaphores,
393                                          internal_pBindInfo[i].signalSemaphoreCount);
394             internal_pBindInfo[i].pSignalSemaphores =
395                 internal_VkBindSparseInfo_pSignalSemaphores[i].data();
396             internal_pBindInfo[i].signalSemaphoreCount =
397                 internal_VkBindSparseInfo_pSignalSemaphores[i].size();
398         }
399         vkQueueBindSparse_VkResult_return = vkEnc->vkQueueBindSparse(
400             gfxstream_queue->internal_object, bindInfoCount, internal_pBindInfo.data(),
401             gfxstream_fence ? gfxstream_fence->internal_object : VK_NULL_HANDLE,
402             true /* do lock */);
403     }
404     return vkQueueBindSparse_VkResult_return;
405 }
gfxstream_vk_CreateFence(VkDevice device,const VkFenceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)406 VkResult gfxstream_vk_CreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo,
407                                   const VkAllocationCallbacks* pAllocator, VkFence* pFence) {
408     MESA_TRACE_SCOPE("vkCreateFence");
409     VkResult vkCreateFence_VkResult_return = (VkResult)0;
410     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
411     struct gfxstream_vk_fence* gfxstream_pFence = (gfxstream_vk_fence*)vk_object_zalloc(
412         &gfxstream_device->vk, pAllocator, sizeof(gfxstream_vk_fence), VK_OBJECT_TYPE_FENCE);
413     vkCreateFence_VkResult_return = gfxstream_pFence ? VK_SUCCESS : VK_ERROR_OUT_OF_HOST_MEMORY;
414     if (VK_SUCCESS == vkCreateFence_VkResult_return) {
415         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
416         auto resources = gfxstream::vk::ResourceTracker::get();
417         vkCreateFence_VkResult_return = resources->on_vkCreateFence(
418             vkEnc, VK_SUCCESS, gfxstream_device->internal_object, pCreateInfo, pAllocator,
419             &gfxstream_pFence->internal_object);
420     }
421     *pFence = gfxstream_vk_fence_to_handle(gfxstream_pFence);
422     return vkCreateFence_VkResult_return;
423 }
gfxstream_vk_DestroyFence(VkDevice device,VkFence fence,const VkAllocationCallbacks * pAllocator)424 void gfxstream_vk_DestroyFence(VkDevice device, VkFence fence,
425                                const VkAllocationCallbacks* pAllocator) {
426     MESA_TRACE_SCOPE("vkDestroyFence");
427     if (VK_NULL_HANDLE == fence) {
428         return;
429     }
430     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
431     VK_FROM_HANDLE(gfxstream_vk_fence, gfxstream_fence, fence);
432     {
433         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
434         vkEnc->vkDestroyFence(gfxstream_device->internal_object,
435                               gfxstream_fence ? gfxstream_fence->internal_object : VK_NULL_HANDLE,
436                               pAllocator, true /* do lock */);
437     }
438     vk_object_free(&gfxstream_device->vk, pAllocator, (void*)gfxstream_fence);
439 }
gfxstream_vk_ResetFences(VkDevice device,uint32_t fenceCount,const VkFence * pFences)440 VkResult gfxstream_vk_ResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences) {
441     MESA_TRACE_SCOPE("vkResetFences");
442     VkResult vkResetFences_VkResult_return = (VkResult)0;
443     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
444     {
445         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
446         std::vector<VkFence> internal_pFences(fenceCount);
447         internal_pFences = transformVkFenceList(pFences, fenceCount);
448         pFences = internal_pFences.data();
449         fenceCount = internal_pFences.size();
450         auto resources = gfxstream::vk::ResourceTracker::get();
451         vkResetFences_VkResult_return =
452             resources->on_vkResetFences(vkEnc, VK_SUCCESS, gfxstream_device->internal_object,
453                                         fenceCount, internal_pFences.data());
454     }
455     return vkResetFences_VkResult_return;
456 }
gfxstream_vk_GetFenceStatus(VkDevice device,VkFence fence)457 VkResult gfxstream_vk_GetFenceStatus(VkDevice device, VkFence fence) {
458     MESA_TRACE_SCOPE("vkGetFenceStatus");
459     VkResult vkGetFenceStatus_VkResult_return = (VkResult)0;
460     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
461     VK_FROM_HANDLE(gfxstream_vk_fence, gfxstream_fence, fence);
462     {
463         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
464         auto resources = gfxstream::vk::ResourceTracker::get();
465         vkGetFenceStatus_VkResult_return = resources->on_vkGetFenceStatus(
466             vkEnc, VK_SUCCESS, gfxstream_device->internal_object, gfxstream_fence->internal_object);
467     }
468     return vkGetFenceStatus_VkResult_return;
469 }
gfxstream_vk_WaitForFences(VkDevice device,uint32_t fenceCount,const VkFence * pFences,VkBool32 waitAll,uint64_t timeout)470 VkResult gfxstream_vk_WaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences,
471                                     VkBool32 waitAll, uint64_t timeout) {
472     MESA_TRACE_SCOPE("vkWaitForFences");
473     VkResult vkWaitForFences_VkResult_return = (VkResult)0;
474     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
475     {
476         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
477         std::vector<VkFence> internal_pFences(fenceCount);
478         internal_pFences = transformVkFenceList(pFences, fenceCount);
479         pFences = internal_pFences.data();
480         fenceCount = internal_pFences.size();
481         auto resources = gfxstream::vk::ResourceTracker::get();
482         vkWaitForFences_VkResult_return =
483             resources->on_vkWaitForFences(vkEnc, VK_SUCCESS, gfxstream_device->internal_object,
484                                           fenceCount, internal_pFences.data(), waitAll, timeout);
485     }
486     return vkWaitForFences_VkResult_return;
487 }
gfxstream_vk_CreateSemaphore(VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)488 VkResult gfxstream_vk_CreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo,
489                                       const VkAllocationCallbacks* pAllocator,
490                                       VkSemaphore* pSemaphore) {
491     MESA_TRACE_SCOPE("vkCreateSemaphore");
492     VkResult vkCreateSemaphore_VkResult_return = (VkResult)0;
493     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
494     struct gfxstream_vk_semaphore* gfxstream_pSemaphore = (gfxstream_vk_semaphore*)vk_object_zalloc(
495         &gfxstream_device->vk, pAllocator, sizeof(gfxstream_vk_semaphore),
496         VK_OBJECT_TYPE_SEMAPHORE);
497     vkCreateSemaphore_VkResult_return =
498         gfxstream_pSemaphore ? VK_SUCCESS : VK_ERROR_OUT_OF_HOST_MEMORY;
499     if (VK_SUCCESS == vkCreateSemaphore_VkResult_return) {
500         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
501         auto resources = gfxstream::vk::ResourceTracker::get();
502         vkCreateSemaphore_VkResult_return = resources->on_vkCreateSemaphore(
503             vkEnc, VK_SUCCESS, gfxstream_device->internal_object, pCreateInfo, pAllocator,
504             &gfxstream_pSemaphore->internal_object);
505     }
506     *pSemaphore = gfxstream_vk_semaphore_to_handle(gfxstream_pSemaphore);
507     return vkCreateSemaphore_VkResult_return;
508 }
gfxstream_vk_DestroySemaphore(VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)509 void gfxstream_vk_DestroySemaphore(VkDevice device, VkSemaphore semaphore,
510                                    const VkAllocationCallbacks* pAllocator) {
511     MESA_TRACE_SCOPE("vkDestroySemaphore");
512     if (VK_NULL_HANDLE == semaphore) {
513         return;
514     }
515     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
516     VK_FROM_HANDLE(gfxstream_vk_semaphore, gfxstream_semaphore, semaphore);
517     {
518         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
519         auto resources = gfxstream::vk::ResourceTracker::get();
520         resources->on_vkDestroySemaphore(
521             vkEnc, gfxstream_device->internal_object,
522             gfxstream_semaphore ? gfxstream_semaphore->internal_object : VK_NULL_HANDLE,
523             pAllocator);
524     }
525     vk_object_free(&gfxstream_device->vk, pAllocator, (void*)gfxstream_semaphore);
526 }
gfxstream_vk_CreateEvent(VkDevice device,const VkEventCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkEvent * pEvent)527 VkResult gfxstream_vk_CreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo,
528                                   const VkAllocationCallbacks* pAllocator, VkEvent* pEvent) {
529     MESA_TRACE_SCOPE("vkCreateEvent");
530     VkResult vkCreateEvent_VkResult_return = (VkResult)0;
531     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
532     {
533         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
534         vkCreateEvent_VkResult_return = vkEnc->vkCreateEvent(
535             gfxstream_device->internal_object, pCreateInfo, pAllocator, pEvent, true /* do lock */);
536     }
537     return vkCreateEvent_VkResult_return;
538 }
gfxstream_vk_DestroyEvent(VkDevice device,VkEvent event,const VkAllocationCallbacks * pAllocator)539 void gfxstream_vk_DestroyEvent(VkDevice device, VkEvent event,
540                                const VkAllocationCallbacks* pAllocator) {
541     MESA_TRACE_SCOPE("vkDestroyEvent");
542     if (VK_NULL_HANDLE == event) {
543         return;
544     }
545     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
546     {
547         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
548         vkEnc->vkDestroyEvent(gfxstream_device->internal_object, event, pAllocator,
549                               true /* do lock */);
550     }
551 }
gfxstream_vk_GetEventStatus(VkDevice device,VkEvent event)552 VkResult gfxstream_vk_GetEventStatus(VkDevice device, VkEvent event) {
553     MESA_TRACE_SCOPE("vkGetEventStatus");
554     VkResult vkGetEventStatus_VkResult_return = (VkResult)0;
555     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
556     {
557         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
558         vkGetEventStatus_VkResult_return =
559             vkEnc->vkGetEventStatus(gfxstream_device->internal_object, event, true /* do lock */);
560     }
561     return vkGetEventStatus_VkResult_return;
562 }
gfxstream_vk_SetEvent(VkDevice device,VkEvent event)563 VkResult gfxstream_vk_SetEvent(VkDevice device, VkEvent event) {
564     MESA_TRACE_SCOPE("vkSetEvent");
565     VkResult vkSetEvent_VkResult_return = (VkResult)0;
566     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
567     {
568         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
569         vkSetEvent_VkResult_return =
570             vkEnc->vkSetEvent(gfxstream_device->internal_object, event, true /* do lock */);
571     }
572     return vkSetEvent_VkResult_return;
573 }
gfxstream_vk_ResetEvent(VkDevice device,VkEvent event)574 VkResult gfxstream_vk_ResetEvent(VkDevice device, VkEvent event) {
575     MESA_TRACE_SCOPE("vkResetEvent");
576     VkResult vkResetEvent_VkResult_return = (VkResult)0;
577     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
578     {
579         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
580         vkResetEvent_VkResult_return =
581             vkEnc->vkResetEvent(gfxstream_device->internal_object, event, true /* do lock */);
582     }
583     return vkResetEvent_VkResult_return;
584 }
gfxstream_vk_CreateQueryPool(VkDevice device,const VkQueryPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkQueryPool * pQueryPool)585 VkResult gfxstream_vk_CreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo,
586                                       const VkAllocationCallbacks* pAllocator,
587                                       VkQueryPool* pQueryPool) {
588     MESA_TRACE_SCOPE("vkCreateQueryPool");
589     VkResult vkCreateQueryPool_VkResult_return = (VkResult)0;
590     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
591     {
592         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
593         vkCreateQueryPool_VkResult_return =
594             vkEnc->vkCreateQueryPool(gfxstream_device->internal_object, pCreateInfo, pAllocator,
595                                      pQueryPool, true /* do lock */);
596     }
597     return vkCreateQueryPool_VkResult_return;
598 }
gfxstream_vk_DestroyQueryPool(VkDevice device,VkQueryPool queryPool,const VkAllocationCallbacks * pAllocator)599 void gfxstream_vk_DestroyQueryPool(VkDevice device, VkQueryPool queryPool,
600                                    const VkAllocationCallbacks* pAllocator) {
601     MESA_TRACE_SCOPE("vkDestroyQueryPool");
602     if (VK_NULL_HANDLE == queryPool) {
603         return;
604     }
605     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
606     {
607         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
608         vkEnc->vkDestroyQueryPool(gfxstream_device->internal_object, queryPool, pAllocator,
609                                   true /* do lock */);
610     }
611 }
gfxstream_vk_GetQueryPoolResults(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount,size_t dataSize,void * pData,VkDeviceSize stride,VkQueryResultFlags flags)612 VkResult gfxstream_vk_GetQueryPoolResults(VkDevice device, VkQueryPool queryPool,
613                                           uint32_t firstQuery, uint32_t queryCount, size_t dataSize,
614                                           void* pData, VkDeviceSize stride,
615                                           VkQueryResultFlags flags) {
616     MESA_TRACE_SCOPE("vkGetQueryPoolResults");
617     VkResult vkGetQueryPoolResults_VkResult_return = (VkResult)0;
618     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
619     {
620         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
621         vkGetQueryPoolResults_VkResult_return = vkEnc->vkGetQueryPoolResults(
622             gfxstream_device->internal_object, queryPool, firstQuery, queryCount, dataSize, pData,
623             stride, flags, true /* do lock */);
624     }
625     return vkGetQueryPoolResults_VkResult_return;
626 }
gfxstream_vk_CreateBuffer(VkDevice device,const VkBufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBuffer * pBuffer)627 VkResult gfxstream_vk_CreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo,
628                                    const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer) {
629     MESA_TRACE_SCOPE("vkCreateBuffer");
630     VkResult vkCreateBuffer_VkResult_return = (VkResult)0;
631     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
632     struct gfxstream_vk_buffer* gfxstream_pBuffer = (gfxstream_vk_buffer*)vk_object_zalloc(
633         &gfxstream_device->vk, pAllocator, sizeof(gfxstream_vk_buffer), VK_OBJECT_TYPE_BUFFER);
634     vkCreateBuffer_VkResult_return = gfxstream_pBuffer ? VK_SUCCESS : VK_ERROR_OUT_OF_HOST_MEMORY;
635     if (VK_SUCCESS == vkCreateBuffer_VkResult_return) {
636         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
637         auto resources = gfxstream::vk::ResourceTracker::get();
638         vkCreateBuffer_VkResult_return = resources->on_vkCreateBuffer(
639             vkEnc, VK_SUCCESS, gfxstream_device->internal_object, pCreateInfo, pAllocator,
640             &gfxstream_pBuffer->internal_object);
641     }
642     *pBuffer = gfxstream_vk_buffer_to_handle(gfxstream_pBuffer);
643     return vkCreateBuffer_VkResult_return;
644 }
gfxstream_vk_DestroyBuffer(VkDevice device,VkBuffer buffer,const VkAllocationCallbacks * pAllocator)645 void gfxstream_vk_DestroyBuffer(VkDevice device, VkBuffer buffer,
646                                 const VkAllocationCallbacks* pAllocator) {
647     MESA_TRACE_SCOPE("vkDestroyBuffer");
648     if (VK_NULL_HANDLE == buffer) {
649         return;
650     }
651     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
652     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer, buffer);
653     {
654         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
655         auto resources = gfxstream::vk::ResourceTracker::get();
656         resources->on_vkDestroyBuffer(
657             vkEnc, gfxstream_device->internal_object,
658             gfxstream_buffer ? gfxstream_buffer->internal_object : VK_NULL_HANDLE, pAllocator);
659     }
660     vk_object_free(&gfxstream_device->vk, pAllocator, (void*)gfxstream_buffer);
661 }
gfxstream_vk_CreateBufferView(VkDevice device,const VkBufferViewCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBufferView * pView)662 VkResult gfxstream_vk_CreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo,
663                                        const VkAllocationCallbacks* pAllocator,
664                                        VkBufferView* pView) {
665     MESA_TRACE_SCOPE("vkCreateBufferView");
666     VkResult vkCreateBufferView_VkResult_return = (VkResult)0;
667     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
668     {
669         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
670         std::vector<VkBufferViewCreateInfo> internal_pCreateInfo(1);
671         for (uint32_t i = 0; i < 1; ++i) {
672             internal_pCreateInfo[i] = pCreateInfo[i];
673             /* VkBufferViewCreateInfo::buffer */
674             VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer, internal_pCreateInfo[i].buffer);
675             internal_pCreateInfo[i].buffer = gfxstream_buffer->internal_object;
676         }
677         vkCreateBufferView_VkResult_return = vkEnc->vkCreateBufferView(
678             gfxstream_device->internal_object, internal_pCreateInfo.data(), pAllocator, pView,
679             true /* do lock */);
680     }
681     return vkCreateBufferView_VkResult_return;
682 }
gfxstream_vk_DestroyBufferView(VkDevice device,VkBufferView bufferView,const VkAllocationCallbacks * pAllocator)683 void gfxstream_vk_DestroyBufferView(VkDevice device, VkBufferView bufferView,
684                                     const VkAllocationCallbacks* pAllocator) {
685     MESA_TRACE_SCOPE("vkDestroyBufferView");
686     if (VK_NULL_HANDLE == bufferView) {
687         return;
688     }
689     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
690     {
691         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
692         vkEnc->vkDestroyBufferView(gfxstream_device->internal_object, bufferView, pAllocator,
693                                    true /* do lock */);
694     }
695 }
gfxstream_vk_CreateImage(VkDevice device,const VkImageCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImage * pImage)696 VkResult gfxstream_vk_CreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo,
697                                   const VkAllocationCallbacks* pAllocator, VkImage* pImage) {
698     MESA_TRACE_SCOPE("vkCreateImage");
699     VkResult vkCreateImage_VkResult_return = (VkResult)0;
700     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
701     {
702         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
703         auto resources = gfxstream::vk::ResourceTracker::get();
704         vkCreateImage_VkResult_return = resources->on_vkCreateImage(
705             vkEnc, VK_SUCCESS, gfxstream_device->internal_object, pCreateInfo, pAllocator, pImage);
706     }
707     return vkCreateImage_VkResult_return;
708 }
gfxstream_vk_DestroyImage(VkDevice device,VkImage image,const VkAllocationCallbacks * pAllocator)709 void gfxstream_vk_DestroyImage(VkDevice device, VkImage image,
710                                const VkAllocationCallbacks* pAllocator) {
711     MESA_TRACE_SCOPE("vkDestroyImage");
712     if (VK_NULL_HANDLE == image) {
713         return;
714     }
715     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
716     {
717         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
718         auto resources = gfxstream::vk::ResourceTracker::get();
719         resources->on_vkDestroyImage(vkEnc, gfxstream_device->internal_object, image, pAllocator);
720     }
721 }
gfxstream_vk_GetImageSubresourceLayout(VkDevice device,VkImage image,const VkImageSubresource * pSubresource,VkSubresourceLayout * pLayout)722 void gfxstream_vk_GetImageSubresourceLayout(VkDevice device, VkImage image,
723                                             const VkImageSubresource* pSubresource,
724                                             VkSubresourceLayout* pLayout) {
725     MESA_TRACE_SCOPE("vkGetImageSubresourceLayout");
726     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
727     {
728         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
729         auto resources = gfxstream::vk::ResourceTracker::get();
730         resources->on_vkGetImageSubresourceLayout(vkEnc, gfxstream_device->internal_object, image,
731                                                   pSubresource, pLayout);
732     }
733 }
gfxstream_vk_CreateImageView(VkDevice device,const VkImageViewCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImageView * pView)734 VkResult gfxstream_vk_CreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo,
735                                       const VkAllocationCallbacks* pAllocator, VkImageView* pView) {
736     MESA_TRACE_SCOPE("vkCreateImageView");
737     VkResult vkCreateImageView_VkResult_return = (VkResult)0;
738     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
739     {
740         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
741         auto resources = gfxstream::vk::ResourceTracker::get();
742         vkCreateImageView_VkResult_return = resources->on_vkCreateImageView(
743             vkEnc, VK_SUCCESS, gfxstream_device->internal_object, pCreateInfo, pAllocator, pView);
744     }
745     return vkCreateImageView_VkResult_return;
746 }
gfxstream_vk_DestroyImageView(VkDevice device,VkImageView imageView,const VkAllocationCallbacks * pAllocator)747 void gfxstream_vk_DestroyImageView(VkDevice device, VkImageView imageView,
748                                    const VkAllocationCallbacks* pAllocator) {
749     MESA_TRACE_SCOPE("vkDestroyImageView");
750     if (VK_NULL_HANDLE == imageView) {
751         return;
752     }
753     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
754     {
755         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
756         vkEnc->vkDestroyImageView(gfxstream_device->internal_object, imageView, pAllocator,
757                                   true /* do lock */);
758     }
759 }
gfxstream_vk_CreateShaderModule(VkDevice device,const VkShaderModuleCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkShaderModule * pShaderModule)760 VkResult gfxstream_vk_CreateShaderModule(VkDevice device,
761                                          const VkShaderModuleCreateInfo* pCreateInfo,
762                                          const VkAllocationCallbacks* pAllocator,
763                                          VkShaderModule* pShaderModule) {
764     MESA_TRACE_SCOPE("vkCreateShaderModule");
765     VkResult vkCreateShaderModule_VkResult_return = (VkResult)0;
766     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
767     {
768         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
769         vkCreateShaderModule_VkResult_return =
770             vkEnc->vkCreateShaderModule(gfxstream_device->internal_object, pCreateInfo, pAllocator,
771                                         pShaderModule, true /* do lock */);
772     }
773     return vkCreateShaderModule_VkResult_return;
774 }
gfxstream_vk_DestroyShaderModule(VkDevice device,VkShaderModule shaderModule,const VkAllocationCallbacks * pAllocator)775 void gfxstream_vk_DestroyShaderModule(VkDevice device, VkShaderModule shaderModule,
776                                       const VkAllocationCallbacks* pAllocator) {
777     MESA_TRACE_SCOPE("vkDestroyShaderModule");
778     if (VK_NULL_HANDLE == shaderModule) {
779         return;
780     }
781     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
782     {
783         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
784         vkEnc->vkDestroyShaderModule(gfxstream_device->internal_object, shaderModule, pAllocator,
785                                      true /* do lock */);
786     }
787 }
gfxstream_vk_CreatePipelineCache(VkDevice device,const VkPipelineCacheCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPipelineCache * pPipelineCache)788 VkResult gfxstream_vk_CreatePipelineCache(VkDevice device,
789                                           const VkPipelineCacheCreateInfo* pCreateInfo,
790                                           const VkAllocationCallbacks* pAllocator,
791                                           VkPipelineCache* pPipelineCache) {
792     MESA_TRACE_SCOPE("vkCreatePipelineCache");
793     VkResult vkCreatePipelineCache_VkResult_return = (VkResult)0;
794     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
795     {
796         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
797         vkCreatePipelineCache_VkResult_return =
798             vkEnc->vkCreatePipelineCache(gfxstream_device->internal_object, pCreateInfo, pAllocator,
799                                          pPipelineCache, true /* do lock */);
800     }
801     return vkCreatePipelineCache_VkResult_return;
802 }
gfxstream_vk_DestroyPipelineCache(VkDevice device,VkPipelineCache pipelineCache,const VkAllocationCallbacks * pAllocator)803 void gfxstream_vk_DestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache,
804                                        const VkAllocationCallbacks* pAllocator) {
805     MESA_TRACE_SCOPE("vkDestroyPipelineCache");
806     if (VK_NULL_HANDLE == pipelineCache) {
807         return;
808     }
809     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
810     {
811         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
812         vkEnc->vkDestroyPipelineCache(gfxstream_device->internal_object, pipelineCache, pAllocator,
813                                       true /* do lock */);
814     }
815 }
gfxstream_vk_GetPipelineCacheData(VkDevice device,VkPipelineCache pipelineCache,size_t * pDataSize,void * pData)816 VkResult gfxstream_vk_GetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache,
817                                            size_t* pDataSize, void* pData) {
818     MESA_TRACE_SCOPE("vkGetPipelineCacheData");
819     VkResult vkGetPipelineCacheData_VkResult_return = (VkResult)0;
820     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
821     {
822         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
823         vkGetPipelineCacheData_VkResult_return = vkEnc->vkGetPipelineCacheData(
824             gfxstream_device->internal_object, pipelineCache, pDataSize, pData, true /* do lock */);
825     }
826     return vkGetPipelineCacheData_VkResult_return;
827 }
gfxstream_vk_MergePipelineCaches(VkDevice device,VkPipelineCache dstCache,uint32_t srcCacheCount,const VkPipelineCache * pSrcCaches)828 VkResult gfxstream_vk_MergePipelineCaches(VkDevice device, VkPipelineCache dstCache,
829                                           uint32_t srcCacheCount,
830                                           const VkPipelineCache* pSrcCaches) {
831     MESA_TRACE_SCOPE("vkMergePipelineCaches");
832     VkResult vkMergePipelineCaches_VkResult_return = (VkResult)0;
833     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
834     {
835         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
836         vkMergePipelineCaches_VkResult_return =
837             vkEnc->vkMergePipelineCaches(gfxstream_device->internal_object, dstCache, srcCacheCount,
838                                          pSrcCaches, true /* do lock */);
839     }
840     return vkMergePipelineCaches_VkResult_return;
841 }
gfxstream_vk_CreateGraphicsPipelines(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkGraphicsPipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)842 VkResult gfxstream_vk_CreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache,
843                                               uint32_t createInfoCount,
844                                               const VkGraphicsPipelineCreateInfo* pCreateInfos,
845                                               const VkAllocationCallbacks* pAllocator,
846                                               VkPipeline* pPipelines) {
847     MESA_TRACE_SCOPE("vkCreateGraphicsPipelines");
848     VkResult vkCreateGraphicsPipelines_VkResult_return = (VkResult)0;
849     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
850     {
851         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
852         auto resources = gfxstream::vk::ResourceTracker::get();
853         vkCreateGraphicsPipelines_VkResult_return = resources->on_vkCreateGraphicsPipelines(
854             vkEnc, VK_SUCCESS, gfxstream_device->internal_object, pipelineCache, createInfoCount,
855             pCreateInfos, pAllocator, pPipelines);
856     }
857     return vkCreateGraphicsPipelines_VkResult_return;
858 }
gfxstream_vk_CreateComputePipelines(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkComputePipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)859 VkResult gfxstream_vk_CreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache,
860                                              uint32_t createInfoCount,
861                                              const VkComputePipelineCreateInfo* pCreateInfos,
862                                              const VkAllocationCallbacks* pAllocator,
863                                              VkPipeline* pPipelines) {
864     MESA_TRACE_SCOPE("vkCreateComputePipelines");
865     VkResult vkCreateComputePipelines_VkResult_return = (VkResult)0;
866     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
867     {
868         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
869         vkCreateComputePipelines_VkResult_return = vkEnc->vkCreateComputePipelines(
870             gfxstream_device->internal_object, pipelineCache, createInfoCount, pCreateInfos,
871             pAllocator, pPipelines, true /* do lock */);
872     }
873     return vkCreateComputePipelines_VkResult_return;
874 }
gfxstream_vk_DestroyPipeline(VkDevice device,VkPipeline pipeline,const VkAllocationCallbacks * pAllocator)875 void gfxstream_vk_DestroyPipeline(VkDevice device, VkPipeline pipeline,
876                                   const VkAllocationCallbacks* pAllocator) {
877     MESA_TRACE_SCOPE("vkDestroyPipeline");
878     if (VK_NULL_HANDLE == pipeline) {
879         return;
880     }
881     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
882     {
883         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
884         vkEnc->vkDestroyPipeline(gfxstream_device->internal_object, pipeline, pAllocator,
885                                  true /* do lock */);
886     }
887 }
gfxstream_vk_CreatePipelineLayout(VkDevice device,const VkPipelineLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPipelineLayout * pPipelineLayout)888 VkResult gfxstream_vk_CreatePipelineLayout(VkDevice device,
889                                            const VkPipelineLayoutCreateInfo* pCreateInfo,
890                                            const VkAllocationCallbacks* pAllocator,
891                                            VkPipelineLayout* pPipelineLayout) {
892     MESA_TRACE_SCOPE("vkCreatePipelineLayout");
893     VkResult vkCreatePipelineLayout_VkResult_return = (VkResult)0;
894     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
895     {
896         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
897         vkCreatePipelineLayout_VkResult_return =
898             vkEnc->vkCreatePipelineLayout(gfxstream_device->internal_object, pCreateInfo,
899                                           pAllocator, pPipelineLayout, true /* do lock */);
900     }
901     return vkCreatePipelineLayout_VkResult_return;
902 }
gfxstream_vk_DestroyPipelineLayout(VkDevice device,VkPipelineLayout pipelineLayout,const VkAllocationCallbacks * pAllocator)903 void gfxstream_vk_DestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout,
904                                         const VkAllocationCallbacks* pAllocator) {
905     MESA_TRACE_SCOPE("vkDestroyPipelineLayout");
906     if (VK_NULL_HANDLE == pipelineLayout) {
907         return;
908     }
909     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
910     {
911         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
912         vkEnc->vkDestroyPipelineLayout(gfxstream_device->internal_object, pipelineLayout,
913                                        pAllocator, true /* do lock */);
914     }
915 }
gfxstream_vk_CreateSampler(VkDevice device,const VkSamplerCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSampler * pSampler)916 VkResult gfxstream_vk_CreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo,
917                                     const VkAllocationCallbacks* pAllocator, VkSampler* pSampler) {
918     MESA_TRACE_SCOPE("vkCreateSampler");
919     VkResult vkCreateSampler_VkResult_return = (VkResult)0;
920     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
921     {
922         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
923         auto resources = gfxstream::vk::ResourceTracker::get();
924         vkCreateSampler_VkResult_return =
925             resources->on_vkCreateSampler(vkEnc, VK_SUCCESS, gfxstream_device->internal_object,
926                                           pCreateInfo, pAllocator, pSampler);
927     }
928     return vkCreateSampler_VkResult_return;
929 }
gfxstream_vk_DestroySampler(VkDevice device,VkSampler sampler,const VkAllocationCallbacks * pAllocator)930 void gfxstream_vk_DestroySampler(VkDevice device, VkSampler sampler,
931                                  const VkAllocationCallbacks* pAllocator) {
932     MESA_TRACE_SCOPE("vkDestroySampler");
933     if (VK_NULL_HANDLE == sampler) {
934         return;
935     }
936     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
937     {
938         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
939         vkEnc->vkDestroySampler(gfxstream_device->internal_object, sampler, pAllocator,
940                                 true /* do lock */);
941     }
942 }
gfxstream_vk_CreateDescriptorSetLayout(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorSetLayout * pSetLayout)943 VkResult gfxstream_vk_CreateDescriptorSetLayout(VkDevice device,
944                                                 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
945                                                 const VkAllocationCallbacks* pAllocator,
946                                                 VkDescriptorSetLayout* pSetLayout) {
947     MESA_TRACE_SCOPE("vkCreateDescriptorSetLayout");
948     VkResult vkCreateDescriptorSetLayout_VkResult_return = (VkResult)0;
949     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
950     {
951         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
952         auto resources = gfxstream::vk::ResourceTracker::get();
953         vkCreateDescriptorSetLayout_VkResult_return = resources->on_vkCreateDescriptorSetLayout(
954             vkEnc, VK_SUCCESS, gfxstream_device->internal_object, pCreateInfo, pAllocator,
955             pSetLayout);
956     }
957     return vkCreateDescriptorSetLayout_VkResult_return;
958 }
gfxstream_vk_DestroyDescriptorSetLayout(VkDevice device,VkDescriptorSetLayout descriptorSetLayout,const VkAllocationCallbacks * pAllocator)959 void gfxstream_vk_DestroyDescriptorSetLayout(VkDevice device,
960                                              VkDescriptorSetLayout descriptorSetLayout,
961                                              const VkAllocationCallbacks* pAllocator) {
962     MESA_TRACE_SCOPE("vkDestroyDescriptorSetLayout");
963     if (VK_NULL_HANDLE == descriptorSetLayout) {
964         return;
965     }
966     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
967     {
968         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
969         auto resources = gfxstream::vk::ResourceTracker::get();
970         resources->on_vkDestroyDescriptorSetLayout(vkEnc, gfxstream_device->internal_object,
971                                                    descriptorSetLayout, pAllocator);
972     }
973 }
gfxstream_vk_CreateDescriptorPool(VkDevice device,const VkDescriptorPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorPool * pDescriptorPool)974 VkResult gfxstream_vk_CreateDescriptorPool(VkDevice device,
975                                            const VkDescriptorPoolCreateInfo* pCreateInfo,
976                                            const VkAllocationCallbacks* pAllocator,
977                                            VkDescriptorPool* pDescriptorPool) {
978     MESA_TRACE_SCOPE("vkCreateDescriptorPool");
979     VkResult vkCreateDescriptorPool_VkResult_return = (VkResult)0;
980     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
981     {
982         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
983         auto resources = gfxstream::vk::ResourceTracker::get();
984         vkCreateDescriptorPool_VkResult_return = resources->on_vkCreateDescriptorPool(
985             vkEnc, VK_SUCCESS, gfxstream_device->internal_object, pCreateInfo, pAllocator,
986             pDescriptorPool);
987     }
988     return vkCreateDescriptorPool_VkResult_return;
989 }
gfxstream_vk_DestroyDescriptorPool(VkDevice device,VkDescriptorPool descriptorPool,const VkAllocationCallbacks * pAllocator)990 void gfxstream_vk_DestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool,
991                                         const VkAllocationCallbacks* pAllocator) {
992     MESA_TRACE_SCOPE("vkDestroyDescriptorPool");
993     if (VK_NULL_HANDLE == descriptorPool) {
994         return;
995     }
996     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
997     {
998         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
999         auto resources = gfxstream::vk::ResourceTracker::get();
1000         resources->on_vkDestroyDescriptorPool(vkEnc, gfxstream_device->internal_object,
1001                                               descriptorPool, pAllocator);
1002     }
1003 }
gfxstream_vk_ResetDescriptorPool(VkDevice device,VkDescriptorPool descriptorPool,VkDescriptorPoolResetFlags flags)1004 VkResult gfxstream_vk_ResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool,
1005                                           VkDescriptorPoolResetFlags flags) {
1006     MESA_TRACE_SCOPE("vkResetDescriptorPool");
1007     VkResult vkResetDescriptorPool_VkResult_return = (VkResult)0;
1008     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
1009     {
1010         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1011         auto resources = gfxstream::vk::ResourceTracker::get();
1012         vkResetDescriptorPool_VkResult_return = resources->on_vkResetDescriptorPool(
1013             vkEnc, VK_SUCCESS, gfxstream_device->internal_object, descriptorPool, flags);
1014     }
1015     return vkResetDescriptorPool_VkResult_return;
1016 }
gfxstream_vk_AllocateDescriptorSets(VkDevice device,const VkDescriptorSetAllocateInfo * pAllocateInfo,VkDescriptorSet * pDescriptorSets)1017 VkResult gfxstream_vk_AllocateDescriptorSets(VkDevice device,
1018                                              const VkDescriptorSetAllocateInfo* pAllocateInfo,
1019                                              VkDescriptorSet* pDescriptorSets) {
1020     MESA_TRACE_SCOPE("vkAllocateDescriptorSets");
1021     VkResult vkAllocateDescriptorSets_VkResult_return = (VkResult)0;
1022     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
1023     {
1024         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1025         auto resources = gfxstream::vk::ResourceTracker::get();
1026         vkAllocateDescriptorSets_VkResult_return = resources->on_vkAllocateDescriptorSets(
1027             vkEnc, VK_SUCCESS, gfxstream_device->internal_object, pAllocateInfo, pDescriptorSets);
1028     }
1029     return vkAllocateDescriptorSets_VkResult_return;
1030 }
gfxstream_vk_FreeDescriptorSets(VkDevice device,VkDescriptorPool descriptorPool,uint32_t descriptorSetCount,const VkDescriptorSet * pDescriptorSets)1031 VkResult gfxstream_vk_FreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool,
1032                                          uint32_t descriptorSetCount,
1033                                          const VkDescriptorSet* pDescriptorSets) {
1034     MESA_TRACE_SCOPE("vkFreeDescriptorSets");
1035     VkResult vkFreeDescriptorSets_VkResult_return = (VkResult)0;
1036     if (VK_NULL_HANDLE == pDescriptorSets) {
1037         return vkFreeDescriptorSets_VkResult_return;
1038     }
1039     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
1040     {
1041         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1042         auto resources = gfxstream::vk::ResourceTracker::get();
1043         vkFreeDescriptorSets_VkResult_return =
1044             resources->on_vkFreeDescriptorSets(vkEnc, VK_SUCCESS, gfxstream_device->internal_object,
1045                                                descriptorPool, descriptorSetCount, pDescriptorSets);
1046     }
1047     return vkFreeDescriptorSets_VkResult_return;
1048 }
gfxstream_vk_CreateFramebuffer(VkDevice device,const VkFramebufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFramebuffer * pFramebuffer)1049 VkResult gfxstream_vk_CreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo,
1050                                         const VkAllocationCallbacks* pAllocator,
1051                                         VkFramebuffer* pFramebuffer) {
1052     MESA_TRACE_SCOPE("vkCreateFramebuffer");
1053     VkResult vkCreateFramebuffer_VkResult_return = (VkResult)0;
1054     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
1055     {
1056         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1057         vkCreateFramebuffer_VkResult_return =
1058             vkEnc->vkCreateFramebuffer(gfxstream_device->internal_object, pCreateInfo, pAllocator,
1059                                        pFramebuffer, true /* do lock */);
1060     }
1061     return vkCreateFramebuffer_VkResult_return;
1062 }
gfxstream_vk_DestroyFramebuffer(VkDevice device,VkFramebuffer framebuffer,const VkAllocationCallbacks * pAllocator)1063 void gfxstream_vk_DestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer,
1064                                      const VkAllocationCallbacks* pAllocator) {
1065     MESA_TRACE_SCOPE("vkDestroyFramebuffer");
1066     if (VK_NULL_HANDLE == framebuffer) {
1067         return;
1068     }
1069     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
1070     {
1071         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1072         vkEnc->vkDestroyFramebuffer(gfxstream_device->internal_object, framebuffer, pAllocator,
1073                                     true /* do lock */);
1074     }
1075 }
gfxstream_vk_CreateRenderPass(VkDevice device,const VkRenderPassCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)1076 VkResult gfxstream_vk_CreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo,
1077                                        const VkAllocationCallbacks* pAllocator,
1078                                        VkRenderPass* pRenderPass) {
1079     MESA_TRACE_SCOPE("vkCreateRenderPass");
1080     VkResult vkCreateRenderPass_VkResult_return = (VkResult)0;
1081     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
1082     {
1083         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1084         vkCreateRenderPass_VkResult_return =
1085             vkEnc->vkCreateRenderPass(gfxstream_device->internal_object, pCreateInfo, pAllocator,
1086                                       pRenderPass, true /* do lock */);
1087     }
1088     return vkCreateRenderPass_VkResult_return;
1089 }
gfxstream_vk_DestroyRenderPass(VkDevice device,VkRenderPass renderPass,const VkAllocationCallbacks * pAllocator)1090 void gfxstream_vk_DestroyRenderPass(VkDevice device, VkRenderPass renderPass,
1091                                     const VkAllocationCallbacks* pAllocator) {
1092     MESA_TRACE_SCOPE("vkDestroyRenderPass");
1093     if (VK_NULL_HANDLE == renderPass) {
1094         return;
1095     }
1096     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
1097     {
1098         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1099         vkEnc->vkDestroyRenderPass(gfxstream_device->internal_object, renderPass, pAllocator,
1100                                    true /* do lock */);
1101     }
1102 }
gfxstream_vk_GetRenderAreaGranularity(VkDevice device,VkRenderPass renderPass,VkExtent2D * pGranularity)1103 void gfxstream_vk_GetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass,
1104                                            VkExtent2D* pGranularity) {
1105     MESA_TRACE_SCOPE("vkGetRenderAreaGranularity");
1106     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
1107     {
1108         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1109         vkEnc->vkGetRenderAreaGranularity(gfxstream_device->internal_object, renderPass,
1110                                           pGranularity, true /* do lock */);
1111     }
1112 }
gfxstream_vk_BeginCommandBuffer(VkCommandBuffer commandBuffer,const VkCommandBufferBeginInfo * pBeginInfo)1113 VkResult gfxstream_vk_BeginCommandBuffer(VkCommandBuffer commandBuffer,
1114                                          const VkCommandBufferBeginInfo* pBeginInfo) {
1115     MESA_TRACE_SCOPE("vkBeginCommandBuffer");
1116     VkResult vkBeginCommandBuffer_VkResult_return = (VkResult)0;
1117     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1118     {
1119         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1120             gfxstream_commandBuffer->internal_object);
1121         auto resources = gfxstream::vk::ResourceTracker::get();
1122         vkBeginCommandBuffer_VkResult_return = resources->on_vkBeginCommandBuffer(
1123             vkEnc, VK_SUCCESS, gfxstream_commandBuffer->internal_object, pBeginInfo);
1124     }
1125     return vkBeginCommandBuffer_VkResult_return;
1126 }
gfxstream_vk_EndCommandBuffer(VkCommandBuffer commandBuffer)1127 VkResult gfxstream_vk_EndCommandBuffer(VkCommandBuffer commandBuffer) {
1128     MESA_TRACE_SCOPE("vkEndCommandBuffer");
1129     VkResult vkEndCommandBuffer_VkResult_return = (VkResult)0;
1130     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1131     {
1132         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1133             gfxstream_commandBuffer->internal_object);
1134         auto resources = gfxstream::vk::ResourceTracker::get();
1135         vkEndCommandBuffer_VkResult_return = resources->on_vkEndCommandBuffer(
1136             vkEnc, VK_SUCCESS, gfxstream_commandBuffer->internal_object);
1137     }
1138     return vkEndCommandBuffer_VkResult_return;
1139 }
gfxstream_vk_ResetCommandBuffer(VkCommandBuffer commandBuffer,VkCommandBufferResetFlags flags)1140 VkResult gfxstream_vk_ResetCommandBuffer(VkCommandBuffer commandBuffer,
1141                                          VkCommandBufferResetFlags flags) {
1142     MESA_TRACE_SCOPE("vkResetCommandBuffer");
1143     VkResult vkResetCommandBuffer_VkResult_return = (VkResult)0;
1144     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1145     {
1146         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1147             gfxstream_commandBuffer->internal_object);
1148         auto resources = gfxstream::vk::ResourceTracker::get();
1149         vkResetCommandBuffer_VkResult_return = resources->on_vkResetCommandBuffer(
1150             vkEnc, VK_SUCCESS, gfxstream_commandBuffer->internal_object, flags);
1151     }
1152     return vkResetCommandBuffer_VkResult_return;
1153 }
gfxstream_vk_CmdBindPipeline(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipeline pipeline)1154 void gfxstream_vk_CmdBindPipeline(VkCommandBuffer commandBuffer,
1155                                   VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) {
1156     MESA_TRACE_SCOPE("vkCmdBindPipeline");
1157     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1158     {
1159         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1160             gfxstream_commandBuffer->internal_object);
1161         vkEnc->vkCmdBindPipeline(gfxstream_commandBuffer->internal_object, pipelineBindPoint,
1162                                  pipeline, true /* do lock */);
1163     }
1164 }
gfxstream_vk_CmdSetViewport(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewport * pViewports)1165 void gfxstream_vk_CmdSetViewport(VkCommandBuffer commandBuffer, uint32_t firstViewport,
1166                                  uint32_t viewportCount, const VkViewport* pViewports) {
1167     MESA_TRACE_SCOPE("vkCmdSetViewport");
1168     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1169     {
1170         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1171             gfxstream_commandBuffer->internal_object);
1172         vkEnc->vkCmdSetViewport(gfxstream_commandBuffer->internal_object, firstViewport,
1173                                 viewportCount, pViewports, true /* do lock */);
1174     }
1175 }
gfxstream_vk_CmdSetScissor(VkCommandBuffer commandBuffer,uint32_t firstScissor,uint32_t scissorCount,const VkRect2D * pScissors)1176 void gfxstream_vk_CmdSetScissor(VkCommandBuffer commandBuffer, uint32_t firstScissor,
1177                                 uint32_t scissorCount, const VkRect2D* pScissors) {
1178     MESA_TRACE_SCOPE("vkCmdSetScissor");
1179     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1180     {
1181         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1182             gfxstream_commandBuffer->internal_object);
1183         vkEnc->vkCmdSetScissor(gfxstream_commandBuffer->internal_object, firstScissor, scissorCount,
1184                                pScissors, true /* do lock */);
1185     }
1186 }
gfxstream_vk_CmdSetLineWidth(VkCommandBuffer commandBuffer,float lineWidth)1187 void gfxstream_vk_CmdSetLineWidth(VkCommandBuffer commandBuffer, float lineWidth) {
1188     MESA_TRACE_SCOPE("vkCmdSetLineWidth");
1189     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1190     {
1191         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1192             gfxstream_commandBuffer->internal_object);
1193         vkEnc->vkCmdSetLineWidth(gfxstream_commandBuffer->internal_object, lineWidth,
1194                                  true /* do lock */);
1195     }
1196 }
gfxstream_vk_CmdSetDepthBias(VkCommandBuffer commandBuffer,float depthBiasConstantFactor,float depthBiasClamp,float depthBiasSlopeFactor)1197 void gfxstream_vk_CmdSetDepthBias(VkCommandBuffer commandBuffer, float depthBiasConstantFactor,
1198                                   float depthBiasClamp, float depthBiasSlopeFactor) {
1199     MESA_TRACE_SCOPE("vkCmdSetDepthBias");
1200     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1201     {
1202         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1203             gfxstream_commandBuffer->internal_object);
1204         vkEnc->vkCmdSetDepthBias(gfxstream_commandBuffer->internal_object, depthBiasConstantFactor,
1205                                  depthBiasClamp, depthBiasSlopeFactor, true /* do lock */);
1206     }
1207 }
gfxstream_vk_CmdSetBlendConstants(VkCommandBuffer commandBuffer,const float blendConstants[4])1208 void gfxstream_vk_CmdSetBlendConstants(VkCommandBuffer commandBuffer,
1209                                        const float blendConstants[4]) {
1210     MESA_TRACE_SCOPE("vkCmdSetBlendConstants");
1211     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1212     {
1213         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1214             gfxstream_commandBuffer->internal_object);
1215         vkEnc->vkCmdSetBlendConstants(gfxstream_commandBuffer->internal_object, blendConstants,
1216                                       true /* do lock */);
1217     }
1218 }
gfxstream_vk_CmdSetDepthBounds(VkCommandBuffer commandBuffer,float minDepthBounds,float maxDepthBounds)1219 void gfxstream_vk_CmdSetDepthBounds(VkCommandBuffer commandBuffer, float minDepthBounds,
1220                                     float maxDepthBounds) {
1221     MESA_TRACE_SCOPE("vkCmdSetDepthBounds");
1222     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1223     {
1224         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1225             gfxstream_commandBuffer->internal_object);
1226         vkEnc->vkCmdSetDepthBounds(gfxstream_commandBuffer->internal_object, minDepthBounds,
1227                                    maxDepthBounds, true /* do lock */);
1228     }
1229 }
gfxstream_vk_CmdSetStencilCompareMask(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t compareMask)1230 void gfxstream_vk_CmdSetStencilCompareMask(VkCommandBuffer commandBuffer,
1231                                            VkStencilFaceFlags faceMask, uint32_t compareMask) {
1232     MESA_TRACE_SCOPE("vkCmdSetStencilCompareMask");
1233     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1234     {
1235         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1236             gfxstream_commandBuffer->internal_object);
1237         vkEnc->vkCmdSetStencilCompareMask(gfxstream_commandBuffer->internal_object, faceMask,
1238                                           compareMask, true /* do lock */);
1239     }
1240 }
gfxstream_vk_CmdSetStencilWriteMask(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t writeMask)1241 void gfxstream_vk_CmdSetStencilWriteMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask,
1242                                          uint32_t writeMask) {
1243     MESA_TRACE_SCOPE("vkCmdSetStencilWriteMask");
1244     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1245     {
1246         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1247             gfxstream_commandBuffer->internal_object);
1248         vkEnc->vkCmdSetStencilWriteMask(gfxstream_commandBuffer->internal_object, faceMask,
1249                                         writeMask, true /* do lock */);
1250     }
1251 }
gfxstream_vk_CmdSetStencilReference(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t reference)1252 void gfxstream_vk_CmdSetStencilReference(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask,
1253                                          uint32_t reference) {
1254     MESA_TRACE_SCOPE("vkCmdSetStencilReference");
1255     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1256     {
1257         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1258             gfxstream_commandBuffer->internal_object);
1259         vkEnc->vkCmdSetStencilReference(gfxstream_commandBuffer->internal_object, faceMask,
1260                                         reference, true /* do lock */);
1261     }
1262 }
gfxstream_vk_CmdBindDescriptorSets(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t firstSet,uint32_t descriptorSetCount,const VkDescriptorSet * pDescriptorSets,uint32_t dynamicOffsetCount,const uint32_t * pDynamicOffsets)1263 void gfxstream_vk_CmdBindDescriptorSets(
1264     VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout,
1265     uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets,
1266     uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) {
1267     MESA_TRACE_SCOPE("vkCmdBindDescriptorSets");
1268     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1269     {
1270         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1271             gfxstream_commandBuffer->internal_object);
1272         auto resources = gfxstream::vk::ResourceTracker::get();
1273         resources->on_vkCmdBindDescriptorSets(
1274             vkEnc, gfxstream_commandBuffer->internal_object, pipelineBindPoint, layout, firstSet,
1275             descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
1276     }
1277 }
gfxstream_vk_CmdBindIndexBuffer(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkIndexType indexType)1278 void gfxstream_vk_CmdBindIndexBuffer(VkCommandBuffer commandBuffer, VkBuffer buffer,
1279                                      VkDeviceSize offset, VkIndexType indexType) {
1280     MESA_TRACE_SCOPE("vkCmdBindIndexBuffer");
1281     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1282     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer, buffer);
1283     {
1284         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1285             gfxstream_commandBuffer->internal_object);
1286         vkEnc->vkCmdBindIndexBuffer(
1287             gfxstream_commandBuffer->internal_object,
1288             gfxstream_buffer ? gfxstream_buffer->internal_object : VK_NULL_HANDLE, offset,
1289             indexType, true /* do lock */);
1290     }
1291 }
gfxstream_vk_CmdBindVertexBuffers(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets)1292 void gfxstream_vk_CmdBindVertexBuffers(VkCommandBuffer commandBuffer, uint32_t firstBinding,
1293                                        uint32_t bindingCount, const VkBuffer* pBuffers,
1294                                        const VkDeviceSize* pOffsets) {
1295     MESA_TRACE_SCOPE("vkCmdBindVertexBuffers");
1296     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1297     {
1298         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1299             gfxstream_commandBuffer->internal_object);
1300         std::vector<VkBuffer> internal_pBuffers(bindingCount);
1301         for (uint32_t i = 0; i < bindingCount; ++i) {
1302             if (pBuffers) {
1303                 VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_pBuffers, pBuffers[i]);
1304                 internal_pBuffers[i] = gfxstream_pBuffers->internal_object;
1305             }
1306         }
1307         vkEnc->vkCmdBindVertexBuffers(gfxstream_commandBuffer->internal_object, firstBinding,
1308                                       bindingCount, internal_pBuffers.data(), pOffsets,
1309                                       true /* do lock */);
1310     }
1311 }
gfxstream_vk_CmdDraw(VkCommandBuffer commandBuffer,uint32_t vertexCount,uint32_t instanceCount,uint32_t firstVertex,uint32_t firstInstance)1312 void gfxstream_vk_CmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount,
1313                           uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance) {
1314     MESA_TRACE_SCOPE("vkCmdDraw");
1315     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1316     {
1317         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1318             gfxstream_commandBuffer->internal_object);
1319         vkEnc->vkCmdDraw(gfxstream_commandBuffer->internal_object, vertexCount, instanceCount,
1320                          firstVertex, firstInstance, true /* do lock */);
1321     }
1322 }
gfxstream_vk_CmdDrawIndexed(VkCommandBuffer commandBuffer,uint32_t indexCount,uint32_t instanceCount,uint32_t firstIndex,int32_t vertexOffset,uint32_t firstInstance)1323 void gfxstream_vk_CmdDrawIndexed(VkCommandBuffer commandBuffer, uint32_t indexCount,
1324                                  uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset,
1325                                  uint32_t firstInstance) {
1326     MESA_TRACE_SCOPE("vkCmdDrawIndexed");
1327     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1328     {
1329         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1330             gfxstream_commandBuffer->internal_object);
1331         vkEnc->vkCmdDrawIndexed(gfxstream_commandBuffer->internal_object, indexCount, instanceCount,
1332                                 firstIndex, vertexOffset, firstInstance, true /* do lock */);
1333     }
1334 }
gfxstream_vk_CmdDrawIndirect(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)1335 void gfxstream_vk_CmdDrawIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer,
1336                                   VkDeviceSize offset, uint32_t drawCount, uint32_t stride) {
1337     MESA_TRACE_SCOPE("vkCmdDrawIndirect");
1338     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1339     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer, buffer);
1340     {
1341         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1342             gfxstream_commandBuffer->internal_object);
1343         vkEnc->vkCmdDrawIndirect(gfxstream_commandBuffer->internal_object,
1344                                  gfxstream_buffer->internal_object, offset, drawCount, stride,
1345                                  true /* do lock */);
1346     }
1347 }
gfxstream_vk_CmdDrawIndexedIndirect(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)1348 void gfxstream_vk_CmdDrawIndexedIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer,
1349                                          VkDeviceSize offset, uint32_t drawCount, uint32_t stride) {
1350     MESA_TRACE_SCOPE("vkCmdDrawIndexedIndirect");
1351     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1352     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer, buffer);
1353     {
1354         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1355             gfxstream_commandBuffer->internal_object);
1356         vkEnc->vkCmdDrawIndexedIndirect(gfxstream_commandBuffer->internal_object,
1357                                         gfxstream_buffer->internal_object, offset, drawCount,
1358                                         stride, true /* do lock */);
1359     }
1360 }
gfxstream_vk_CmdDispatch(VkCommandBuffer commandBuffer,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)1361 void gfxstream_vk_CmdDispatch(VkCommandBuffer commandBuffer, uint32_t groupCountX,
1362                               uint32_t groupCountY, uint32_t groupCountZ) {
1363     MESA_TRACE_SCOPE("vkCmdDispatch");
1364     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1365     {
1366         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1367             gfxstream_commandBuffer->internal_object);
1368         vkEnc->vkCmdDispatch(gfxstream_commandBuffer->internal_object, groupCountX, groupCountY,
1369                              groupCountZ, true /* do lock */);
1370     }
1371 }
gfxstream_vk_CmdDispatchIndirect(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset)1372 void gfxstream_vk_CmdDispatchIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer,
1373                                       VkDeviceSize offset) {
1374     MESA_TRACE_SCOPE("vkCmdDispatchIndirect");
1375     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1376     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer, buffer);
1377     {
1378         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1379             gfxstream_commandBuffer->internal_object);
1380         vkEnc->vkCmdDispatchIndirect(gfxstream_commandBuffer->internal_object,
1381                                      gfxstream_buffer->internal_object, offset, true /* do lock */);
1382     }
1383 }
gfxstream_vk_CmdCopyBuffer(VkCommandBuffer commandBuffer,VkBuffer srcBuffer,VkBuffer dstBuffer,uint32_t regionCount,const VkBufferCopy * pRegions)1384 void gfxstream_vk_CmdCopyBuffer(VkCommandBuffer commandBuffer, VkBuffer srcBuffer,
1385                                 VkBuffer dstBuffer, uint32_t regionCount,
1386                                 const VkBufferCopy* pRegions) {
1387     MESA_TRACE_SCOPE("vkCmdCopyBuffer");
1388     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1389     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_srcBuffer, srcBuffer);
1390     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_dstBuffer, dstBuffer);
1391     {
1392         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1393             gfxstream_commandBuffer->internal_object);
1394         vkEnc->vkCmdCopyBuffer(
1395             gfxstream_commandBuffer->internal_object, gfxstream_srcBuffer->internal_object,
1396             gfxstream_dstBuffer->internal_object, regionCount, pRegions, true /* do lock */);
1397     }
1398 }
gfxstream_vk_CmdCopyImage(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageCopy * pRegions)1399 void gfxstream_vk_CmdCopyImage(VkCommandBuffer commandBuffer, VkImage srcImage,
1400                                VkImageLayout srcImageLayout, VkImage dstImage,
1401                                VkImageLayout dstImageLayout, uint32_t regionCount,
1402                                const VkImageCopy* pRegions) {
1403     MESA_TRACE_SCOPE("vkCmdCopyImage");
1404     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1405     {
1406         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1407             gfxstream_commandBuffer->internal_object);
1408         vkEnc->vkCmdCopyImage(gfxstream_commandBuffer->internal_object, srcImage, srcImageLayout,
1409                               dstImage, dstImageLayout, regionCount, pRegions, true /* do lock */);
1410     }
1411 }
gfxstream_vk_CmdBlitImage(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageBlit * pRegions,VkFilter filter)1412 void gfxstream_vk_CmdBlitImage(VkCommandBuffer commandBuffer, VkImage srcImage,
1413                                VkImageLayout srcImageLayout, VkImage dstImage,
1414                                VkImageLayout dstImageLayout, uint32_t regionCount,
1415                                const VkImageBlit* pRegions, VkFilter filter) {
1416     MESA_TRACE_SCOPE("vkCmdBlitImage");
1417     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1418     {
1419         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1420             gfxstream_commandBuffer->internal_object);
1421         vkEnc->vkCmdBlitImage(gfxstream_commandBuffer->internal_object, srcImage, srcImageLayout,
1422                               dstImage, dstImageLayout, regionCount, pRegions, filter,
1423                               true /* do lock */);
1424     }
1425 }
gfxstream_vk_CmdCopyBufferToImage(VkCommandBuffer commandBuffer,VkBuffer srcBuffer,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkBufferImageCopy * pRegions)1426 void gfxstream_vk_CmdCopyBufferToImage(VkCommandBuffer commandBuffer, VkBuffer srcBuffer,
1427                                        VkImage dstImage, VkImageLayout dstImageLayout,
1428                                        uint32_t regionCount, const VkBufferImageCopy* pRegions) {
1429     MESA_TRACE_SCOPE("vkCmdCopyBufferToImage");
1430     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1431     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_srcBuffer, srcBuffer);
1432     {
1433         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1434             gfxstream_commandBuffer->internal_object);
1435         vkEnc->vkCmdCopyBufferToImage(gfxstream_commandBuffer->internal_object,
1436                                       gfxstream_srcBuffer->internal_object, dstImage,
1437                                       dstImageLayout, regionCount, pRegions, true /* do lock */);
1438     }
1439 }
gfxstream_vk_CmdCopyImageToBuffer(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkBuffer dstBuffer,uint32_t regionCount,const VkBufferImageCopy * pRegions)1440 void gfxstream_vk_CmdCopyImageToBuffer(VkCommandBuffer commandBuffer, VkImage srcImage,
1441                                        VkImageLayout srcImageLayout, VkBuffer dstBuffer,
1442                                        uint32_t regionCount, const VkBufferImageCopy* pRegions) {
1443     MESA_TRACE_SCOPE("vkCmdCopyImageToBuffer");
1444     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1445     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_dstBuffer, dstBuffer);
1446     {
1447         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1448             gfxstream_commandBuffer->internal_object);
1449         vkEnc->vkCmdCopyImageToBuffer(gfxstream_commandBuffer->internal_object, srcImage,
1450                                       srcImageLayout, gfxstream_dstBuffer->internal_object,
1451                                       regionCount, pRegions, true /* do lock */);
1452     }
1453 }
gfxstream_vk_CmdUpdateBuffer(VkCommandBuffer commandBuffer,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize dataSize,const void * pData)1454 void gfxstream_vk_CmdUpdateBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer,
1455                                   VkDeviceSize dstOffset, VkDeviceSize dataSize,
1456                                   const void* pData) {
1457     MESA_TRACE_SCOPE("vkCmdUpdateBuffer");
1458     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1459     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_dstBuffer, dstBuffer);
1460     {
1461         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1462             gfxstream_commandBuffer->internal_object);
1463         vkEnc->vkCmdUpdateBuffer(gfxstream_commandBuffer->internal_object,
1464                                  gfxstream_dstBuffer->internal_object, dstOffset, dataSize, pData,
1465                                  true /* do lock */);
1466     }
1467 }
gfxstream_vk_CmdFillBuffer(VkCommandBuffer commandBuffer,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize size,uint32_t data)1468 void gfxstream_vk_CmdFillBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer,
1469                                 VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data) {
1470     MESA_TRACE_SCOPE("vkCmdFillBuffer");
1471     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1472     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_dstBuffer, dstBuffer);
1473     {
1474         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1475             gfxstream_commandBuffer->internal_object);
1476         vkEnc->vkCmdFillBuffer(gfxstream_commandBuffer->internal_object,
1477                                gfxstream_dstBuffer->internal_object, dstOffset, size, data,
1478                                true /* do lock */);
1479     }
1480 }
gfxstream_vk_CmdClearColorImage(VkCommandBuffer commandBuffer,VkImage image,VkImageLayout imageLayout,const VkClearColorValue * pColor,uint32_t rangeCount,const VkImageSubresourceRange * pRanges)1481 void gfxstream_vk_CmdClearColorImage(VkCommandBuffer commandBuffer, VkImage image,
1482                                      VkImageLayout imageLayout, const VkClearColorValue* pColor,
1483                                      uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
1484     MESA_TRACE_SCOPE("vkCmdClearColorImage");
1485     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1486     {
1487         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1488             gfxstream_commandBuffer->internal_object);
1489         vkEnc->vkCmdClearColorImage(gfxstream_commandBuffer->internal_object, image, imageLayout,
1490                                     pColor, rangeCount, pRanges, true /* do lock */);
1491     }
1492 }
gfxstream_vk_CmdClearDepthStencilImage(VkCommandBuffer commandBuffer,VkImage image,VkImageLayout imageLayout,const VkClearDepthStencilValue * pDepthStencil,uint32_t rangeCount,const VkImageSubresourceRange * pRanges)1493 void gfxstream_vk_CmdClearDepthStencilImage(VkCommandBuffer commandBuffer, VkImage image,
1494                                             VkImageLayout imageLayout,
1495                                             const VkClearDepthStencilValue* pDepthStencil,
1496                                             uint32_t rangeCount,
1497                                             const VkImageSubresourceRange* pRanges) {
1498     MESA_TRACE_SCOPE("vkCmdClearDepthStencilImage");
1499     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1500     {
1501         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1502             gfxstream_commandBuffer->internal_object);
1503         vkEnc->vkCmdClearDepthStencilImage(gfxstream_commandBuffer->internal_object, image,
1504                                            imageLayout, pDepthStencil, rangeCount, pRanges,
1505                                            true /* do lock */);
1506     }
1507 }
gfxstream_vk_CmdClearAttachments(VkCommandBuffer commandBuffer,uint32_t attachmentCount,const VkClearAttachment * pAttachments,uint32_t rectCount,const VkClearRect * pRects)1508 void gfxstream_vk_CmdClearAttachments(VkCommandBuffer commandBuffer, uint32_t attachmentCount,
1509                                       const VkClearAttachment* pAttachments, uint32_t rectCount,
1510                                       const VkClearRect* pRects) {
1511     MESA_TRACE_SCOPE("vkCmdClearAttachments");
1512     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1513     {
1514         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1515             gfxstream_commandBuffer->internal_object);
1516         vkEnc->vkCmdClearAttachments(gfxstream_commandBuffer->internal_object, attachmentCount,
1517                                      pAttachments, rectCount, pRects, true /* do lock */);
1518     }
1519 }
gfxstream_vk_CmdResolveImage(VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageResolve * pRegions)1520 void gfxstream_vk_CmdResolveImage(VkCommandBuffer commandBuffer, VkImage srcImage,
1521                                   VkImageLayout srcImageLayout, VkImage dstImage,
1522                                   VkImageLayout dstImageLayout, uint32_t regionCount,
1523                                   const VkImageResolve* pRegions) {
1524     MESA_TRACE_SCOPE("vkCmdResolveImage");
1525     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1526     {
1527         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1528             gfxstream_commandBuffer->internal_object);
1529         vkEnc->vkCmdResolveImage(gfxstream_commandBuffer->internal_object, srcImage, srcImageLayout,
1530                                  dstImage, dstImageLayout, regionCount, pRegions,
1531                                  true /* do lock */);
1532     }
1533 }
gfxstream_vk_CmdSetEvent(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags stageMask)1534 void gfxstream_vk_CmdSetEvent(VkCommandBuffer commandBuffer, VkEvent event,
1535                               VkPipelineStageFlags stageMask) {
1536     MESA_TRACE_SCOPE("vkCmdSetEvent");
1537     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1538     {
1539         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1540             gfxstream_commandBuffer->internal_object);
1541         vkEnc->vkCmdSetEvent(gfxstream_commandBuffer->internal_object, event, stageMask,
1542                              true /* do lock */);
1543     }
1544 }
gfxstream_vk_CmdResetEvent(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags stageMask)1545 void gfxstream_vk_CmdResetEvent(VkCommandBuffer commandBuffer, VkEvent event,
1546                                 VkPipelineStageFlags stageMask) {
1547     MESA_TRACE_SCOPE("vkCmdResetEvent");
1548     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1549     {
1550         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1551             gfxstream_commandBuffer->internal_object);
1552         vkEnc->vkCmdResetEvent(gfxstream_commandBuffer->internal_object, event, stageMask,
1553                                true /* do lock */);
1554     }
1555 }
gfxstream_vk_CmdWaitEvents(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)1556 void gfxstream_vk_CmdWaitEvents(VkCommandBuffer commandBuffer, uint32_t eventCount,
1557                                 const VkEvent* pEvents, VkPipelineStageFlags srcStageMask,
1558                                 VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount,
1559                                 const VkMemoryBarrier* pMemoryBarriers,
1560                                 uint32_t bufferMemoryBarrierCount,
1561                                 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1562                                 uint32_t imageMemoryBarrierCount,
1563                                 const VkImageMemoryBarrier* pImageMemoryBarriers) {
1564     MESA_TRACE_SCOPE("vkCmdWaitEvents");
1565     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1566     {
1567         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1568             gfxstream_commandBuffer->internal_object);
1569         std::vector<VkBufferMemoryBarrier> internal_pBufferMemoryBarriers(bufferMemoryBarrierCount);
1570         for (uint32_t i = 0; i < bufferMemoryBarrierCount; ++i) {
1571             internal_pBufferMemoryBarriers[i] = pBufferMemoryBarriers[i];
1572             /* VkBufferMemoryBarrier::buffer */
1573             VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer,
1574                            internal_pBufferMemoryBarriers[i].buffer);
1575             internal_pBufferMemoryBarriers[i].buffer = gfxstream_buffer->internal_object;
1576         }
1577         vkEnc->vkCmdWaitEvents(gfxstream_commandBuffer->internal_object, eventCount, pEvents,
1578                                srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers,
1579                                bufferMemoryBarrierCount, internal_pBufferMemoryBarriers.data(),
1580                                imageMemoryBarrierCount, pImageMemoryBarriers, true /* do lock */);
1581     }
1582 }
gfxstream_vk_CmdPipelineBarrier(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)1583 void gfxstream_vk_CmdPipelineBarrier(
1584     VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask,
1585     VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags,
1586     uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers,
1587     uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers,
1588     uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) {
1589     MESA_TRACE_SCOPE("vkCmdPipelineBarrier");
1590     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1591     {
1592         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1593             gfxstream_commandBuffer->internal_object);
1594         std::vector<VkBufferMemoryBarrier> internal_pBufferMemoryBarriers(bufferMemoryBarrierCount);
1595         for (uint32_t i = 0; i < bufferMemoryBarrierCount; ++i) {
1596             internal_pBufferMemoryBarriers[i] = pBufferMemoryBarriers[i];
1597             /* VkBufferMemoryBarrier::buffer */
1598             VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer,
1599                            internal_pBufferMemoryBarriers[i].buffer);
1600             internal_pBufferMemoryBarriers[i].buffer = gfxstream_buffer->internal_object;
1601         }
1602         auto resources = gfxstream::vk::ResourceTracker::get();
1603         resources->on_vkCmdPipelineBarrier(
1604             vkEnc, gfxstream_commandBuffer->internal_object, srcStageMask, dstStageMask,
1605             dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount,
1606             internal_pBufferMemoryBarriers.data(), imageMemoryBarrierCount, pImageMemoryBarriers);
1607     }
1608 }
gfxstream_vk_CmdBeginQuery(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,VkQueryControlFlags flags)1609 void gfxstream_vk_CmdBeginQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool,
1610                                 uint32_t query, VkQueryControlFlags flags) {
1611     MESA_TRACE_SCOPE("vkCmdBeginQuery");
1612     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1613     {
1614         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1615             gfxstream_commandBuffer->internal_object);
1616         vkEnc->vkCmdBeginQuery(gfxstream_commandBuffer->internal_object, queryPool, query, flags,
1617                                true /* do lock */);
1618     }
1619 }
gfxstream_vk_CmdEndQuery(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query)1620 void gfxstream_vk_CmdEndQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool,
1621                               uint32_t query) {
1622     MESA_TRACE_SCOPE("vkCmdEndQuery");
1623     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1624     {
1625         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1626             gfxstream_commandBuffer->internal_object);
1627         vkEnc->vkCmdEndQuery(gfxstream_commandBuffer->internal_object, queryPool, query,
1628                              true /* do lock */);
1629     }
1630 }
gfxstream_vk_CmdResetQueryPool(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)1631 void gfxstream_vk_CmdResetQueryPool(VkCommandBuffer commandBuffer, VkQueryPool queryPool,
1632                                     uint32_t firstQuery, uint32_t queryCount) {
1633     MESA_TRACE_SCOPE("vkCmdResetQueryPool");
1634     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1635     {
1636         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1637             gfxstream_commandBuffer->internal_object);
1638         vkEnc->vkCmdResetQueryPool(gfxstream_commandBuffer->internal_object, queryPool, firstQuery,
1639                                    queryCount, true /* do lock */);
1640     }
1641 }
gfxstream_vk_CmdWriteTimestamp(VkCommandBuffer commandBuffer,VkPipelineStageFlagBits pipelineStage,VkQueryPool queryPool,uint32_t query)1642 void gfxstream_vk_CmdWriteTimestamp(VkCommandBuffer commandBuffer,
1643                                     VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool,
1644                                     uint32_t query) {
1645     MESA_TRACE_SCOPE("vkCmdWriteTimestamp");
1646     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1647     {
1648         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1649             gfxstream_commandBuffer->internal_object);
1650         vkEnc->vkCmdWriteTimestamp(gfxstream_commandBuffer->internal_object, pipelineStage,
1651                                    queryPool, query, true /* do lock */);
1652     }
1653 }
gfxstream_vk_CmdCopyQueryPoolResults(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize stride,VkQueryResultFlags flags)1654 void gfxstream_vk_CmdCopyQueryPoolResults(VkCommandBuffer commandBuffer, VkQueryPool queryPool,
1655                                           uint32_t firstQuery, uint32_t queryCount,
1656                                           VkBuffer dstBuffer, VkDeviceSize dstOffset,
1657                                           VkDeviceSize stride, VkQueryResultFlags flags) {
1658     MESA_TRACE_SCOPE("vkCmdCopyQueryPoolResults");
1659     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1660     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_dstBuffer, dstBuffer);
1661     {
1662         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1663             gfxstream_commandBuffer->internal_object);
1664         vkEnc->vkCmdCopyQueryPoolResults(
1665             gfxstream_commandBuffer->internal_object, queryPool, firstQuery, queryCount,
1666             gfxstream_dstBuffer->internal_object, dstOffset, stride, flags, true /* do lock */);
1667     }
1668 }
gfxstream_vk_CmdPushConstants(VkCommandBuffer commandBuffer,VkPipelineLayout layout,VkShaderStageFlags stageFlags,uint32_t offset,uint32_t size,const void * pValues)1669 void gfxstream_vk_CmdPushConstants(VkCommandBuffer commandBuffer, VkPipelineLayout layout,
1670                                    VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size,
1671                                    const void* pValues) {
1672     MESA_TRACE_SCOPE("vkCmdPushConstants");
1673     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1674     {
1675         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1676             gfxstream_commandBuffer->internal_object);
1677         vkEnc->vkCmdPushConstants(gfxstream_commandBuffer->internal_object, layout, stageFlags,
1678                                   offset, size, pValues, true /* do lock */);
1679     }
1680 }
gfxstream_vk_CmdBeginRenderPass(VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,VkSubpassContents contents)1681 void gfxstream_vk_CmdBeginRenderPass(VkCommandBuffer commandBuffer,
1682                                      const VkRenderPassBeginInfo* pRenderPassBegin,
1683                                      VkSubpassContents contents) {
1684     MESA_TRACE_SCOPE("vkCmdBeginRenderPass");
1685     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1686     {
1687         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1688             gfxstream_commandBuffer->internal_object);
1689         vkEnc->vkCmdBeginRenderPass(gfxstream_commandBuffer->internal_object, pRenderPassBegin,
1690                                     contents, true /* do lock */);
1691     }
1692 }
gfxstream_vk_CmdNextSubpass(VkCommandBuffer commandBuffer,VkSubpassContents contents)1693 void gfxstream_vk_CmdNextSubpass(VkCommandBuffer commandBuffer, VkSubpassContents contents) {
1694     MESA_TRACE_SCOPE("vkCmdNextSubpass");
1695     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1696     {
1697         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1698             gfxstream_commandBuffer->internal_object);
1699         vkEnc->vkCmdNextSubpass(gfxstream_commandBuffer->internal_object, contents,
1700                                 true /* do lock */);
1701     }
1702 }
gfxstream_vk_CmdEndRenderPass(VkCommandBuffer commandBuffer)1703 void gfxstream_vk_CmdEndRenderPass(VkCommandBuffer commandBuffer) {
1704     MESA_TRACE_SCOPE("vkCmdEndRenderPass");
1705     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1706     {
1707         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1708             gfxstream_commandBuffer->internal_object);
1709         vkEnc->vkCmdEndRenderPass(gfxstream_commandBuffer->internal_object, true /* do lock */);
1710     }
1711 }
gfxstream_vk_CmdExecuteCommands(VkCommandBuffer commandBuffer,uint32_t commandBufferCount,const VkCommandBuffer * pCommandBuffers)1712 void gfxstream_vk_CmdExecuteCommands(VkCommandBuffer commandBuffer, uint32_t commandBufferCount,
1713                                      const VkCommandBuffer* pCommandBuffers) {
1714     MESA_TRACE_SCOPE("vkCmdExecuteCommands");
1715     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1716     {
1717         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1718             gfxstream_commandBuffer->internal_object);
1719         std::vector<VkCommandBuffer> internal_pCommandBuffers(commandBufferCount);
1720         for (uint32_t i = 0; i < commandBufferCount; ++i) {
1721             VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_pCommandBuffers,
1722                            pCommandBuffers[i]);
1723             internal_pCommandBuffers[i] = gfxstream_pCommandBuffers->internal_object;
1724         }
1725         auto resources = gfxstream::vk::ResourceTracker::get();
1726         resources->on_vkCmdExecuteCommands(vkEnc, gfxstream_commandBuffer->internal_object,
1727                                            commandBufferCount, internal_pCommandBuffers.data());
1728     }
1729 }
1730 #endif
1731 #ifdef VK_VERSION_1_1
gfxstream_vk_BindBufferMemory2(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)1732 VkResult gfxstream_vk_BindBufferMemory2(VkDevice device, uint32_t bindInfoCount,
1733                                         const VkBindBufferMemoryInfo* pBindInfos) {
1734     MESA_TRACE_SCOPE("vkBindBufferMemory2");
1735     VkResult vkBindBufferMemory2_VkResult_return = (VkResult)0;
1736     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
1737     {
1738         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1739         std::vector<VkBindBufferMemoryInfo> internal_pBindInfos(bindInfoCount);
1740         for (uint32_t i = 0; i < bindInfoCount; ++i) {
1741             internal_pBindInfos[i] = pBindInfos[i];
1742             /* VkBindBufferMemoryInfo::buffer */
1743             VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer, internal_pBindInfos[i].buffer);
1744             internal_pBindInfos[i].buffer = gfxstream_buffer->internal_object;
1745         }
1746         auto resources = gfxstream::vk::ResourceTracker::get();
1747         vkBindBufferMemory2_VkResult_return =
1748             resources->on_vkBindBufferMemory2(vkEnc, VK_SUCCESS, gfxstream_device->internal_object,
1749                                               bindInfoCount, internal_pBindInfos.data());
1750     }
1751     return vkBindBufferMemory2_VkResult_return;
1752 }
gfxstream_vk_BindImageMemory2(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)1753 VkResult gfxstream_vk_BindImageMemory2(VkDevice device, uint32_t bindInfoCount,
1754                                        const VkBindImageMemoryInfo* pBindInfos) {
1755     MESA_TRACE_SCOPE("vkBindImageMemory2");
1756     VkResult vkBindImageMemory2_VkResult_return = (VkResult)0;
1757     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
1758     {
1759         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1760         auto resources = gfxstream::vk::ResourceTracker::get();
1761         vkBindImageMemory2_VkResult_return = resources->on_vkBindImageMemory2(
1762             vkEnc, VK_SUCCESS, gfxstream_device->internal_object, bindInfoCount, pBindInfos);
1763     }
1764     return vkBindImageMemory2_VkResult_return;
1765 }
gfxstream_vk_GetDeviceGroupPeerMemoryFeatures(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)1766 void gfxstream_vk_GetDeviceGroupPeerMemoryFeatures(VkDevice device, uint32_t heapIndex,
1767                                                    uint32_t localDeviceIndex,
1768                                                    uint32_t remoteDeviceIndex,
1769                                                    VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) {
1770     MESA_TRACE_SCOPE("vkGetDeviceGroupPeerMemoryFeatures");
1771     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
1772     {
1773         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1774         vkEnc->vkGetDeviceGroupPeerMemoryFeatures(gfxstream_device->internal_object, heapIndex,
1775                                                   localDeviceIndex, remoteDeviceIndex,
1776                                                   pPeerMemoryFeatures, true /* do lock */);
1777     }
1778 }
gfxstream_vk_CmdSetDeviceMask(VkCommandBuffer commandBuffer,uint32_t deviceMask)1779 void gfxstream_vk_CmdSetDeviceMask(VkCommandBuffer commandBuffer, uint32_t deviceMask) {
1780     MESA_TRACE_SCOPE("vkCmdSetDeviceMask");
1781     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1782     {
1783         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1784             gfxstream_commandBuffer->internal_object);
1785         vkEnc->vkCmdSetDeviceMask(gfxstream_commandBuffer->internal_object, deviceMask,
1786                                   true /* do lock */);
1787     }
1788 }
gfxstream_vk_CmdDispatchBase(VkCommandBuffer commandBuffer,uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)1789 void gfxstream_vk_CmdDispatchBase(VkCommandBuffer commandBuffer, uint32_t baseGroupX,
1790                                   uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX,
1791                                   uint32_t groupCountY, uint32_t groupCountZ) {
1792     MESA_TRACE_SCOPE("vkCmdDispatchBase");
1793     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
1794     {
1795         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
1796             gfxstream_commandBuffer->internal_object);
1797         vkEnc->vkCmdDispatchBase(gfxstream_commandBuffer->internal_object, baseGroupX, baseGroupY,
1798                                  baseGroupZ, groupCountX, groupCountY, groupCountZ,
1799                                  true /* do lock */);
1800     }
1801 }
gfxstream_vk_GetImageMemoryRequirements2(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)1802 void gfxstream_vk_GetImageMemoryRequirements2(VkDevice device,
1803                                               const VkImageMemoryRequirementsInfo2* pInfo,
1804                                               VkMemoryRequirements2* pMemoryRequirements) {
1805     MESA_TRACE_SCOPE("vkGetImageMemoryRequirements2");
1806     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
1807     {
1808         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1809         auto resources = gfxstream::vk::ResourceTracker::get();
1810         resources->on_vkGetImageMemoryRequirements2(vkEnc, gfxstream_device->internal_object, pInfo,
1811                                                     pMemoryRequirements);
1812     }
1813 }
gfxstream_vk_GetBufferMemoryRequirements2(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)1814 void gfxstream_vk_GetBufferMemoryRequirements2(VkDevice device,
1815                                                const VkBufferMemoryRequirementsInfo2* pInfo,
1816                                                VkMemoryRequirements2* pMemoryRequirements) {
1817     MESA_TRACE_SCOPE("vkGetBufferMemoryRequirements2");
1818     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
1819     {
1820         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1821         std::vector<VkBufferMemoryRequirementsInfo2> internal_pInfo(1);
1822         for (uint32_t i = 0; i < 1; ++i) {
1823             internal_pInfo[i] = pInfo[i];
1824             /* VkBufferMemoryRequirementsInfo2::buffer */
1825             VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer, internal_pInfo[i].buffer);
1826             internal_pInfo[i].buffer = gfxstream_buffer->internal_object;
1827         }
1828         auto resources = gfxstream::vk::ResourceTracker::get();
1829         resources->on_vkGetBufferMemoryRequirements2(vkEnc, gfxstream_device->internal_object,
1830                                                      internal_pInfo.data(), pMemoryRequirements);
1831     }
1832 }
gfxstream_vk_GetImageSparseMemoryRequirements2(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)1833 void gfxstream_vk_GetImageSparseMemoryRequirements2(
1834     VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo,
1835     uint32_t* pSparseMemoryRequirementCount,
1836     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
1837     MESA_TRACE_SCOPE("vkGetImageSparseMemoryRequirements2");
1838     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
1839     {
1840         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1841         vkEnc->vkGetImageSparseMemoryRequirements2(gfxstream_device->internal_object, pInfo,
1842                                                    pSparseMemoryRequirementCount,
1843                                                    pSparseMemoryRequirements, true /* do lock */);
1844     }
1845 }
gfxstream_vk_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures2 * pFeatures)1846 void gfxstream_vk_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
1847                                              VkPhysicalDeviceFeatures2* pFeatures) {
1848     MESA_TRACE_SCOPE("vkGetPhysicalDeviceFeatures2");
1849     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
1850     {
1851         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1852         vkEnc->vkGetPhysicalDeviceFeatures2(gfxstream_physicalDevice->internal_object, pFeatures,
1853                                             true /* do lock */);
1854     }
1855 }
gfxstream_vk_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties2 * pProperties)1856 void gfxstream_vk_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,
1857                                                VkPhysicalDeviceProperties2* pProperties) {
1858     MESA_TRACE_SCOPE("vkGetPhysicalDeviceProperties2");
1859     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
1860     {
1861         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1862         vkEnc->vkGetPhysicalDeviceProperties2(gfxstream_physicalDevice->internal_object,
1863                                               pProperties, true /* do lock */);
1864     }
1865 }
gfxstream_vk_GetPhysicalDeviceFormatProperties2(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties2 * pFormatProperties)1866 void gfxstream_vk_GetPhysicalDeviceFormatProperties2(VkPhysicalDevice physicalDevice,
1867                                                      VkFormat format,
1868                                                      VkFormatProperties2* pFormatProperties) {
1869     MESA_TRACE_SCOPE("vkGetPhysicalDeviceFormatProperties2");
1870     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
1871     {
1872         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1873         vkEnc->vkGetPhysicalDeviceFormatProperties2(gfxstream_physicalDevice->internal_object,
1874                                                     format, pFormatProperties, true /* do lock */);
1875     }
1876 }
gfxstream_vk_GetPhysicalDeviceImageFormatProperties2(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo,VkImageFormatProperties2 * pImageFormatProperties)1877 VkResult gfxstream_vk_GetPhysicalDeviceImageFormatProperties2(
1878     VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
1879     VkImageFormatProperties2* pImageFormatProperties) {
1880     MESA_TRACE_SCOPE("vkGetPhysicalDeviceImageFormatProperties2");
1881     VkResult vkGetPhysicalDeviceImageFormatProperties2_VkResult_return = (VkResult)0;
1882     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
1883     {
1884         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1885         auto resources = gfxstream::vk::ResourceTracker::get();
1886         vkGetPhysicalDeviceImageFormatProperties2_VkResult_return =
1887             resources->on_vkGetPhysicalDeviceImageFormatProperties2(
1888                 vkEnc, VK_SUCCESS, gfxstream_physicalDevice->internal_object, pImageFormatInfo,
1889                 pImageFormatProperties);
1890     }
1891     return vkGetPhysicalDeviceImageFormatProperties2_VkResult_return;
1892 }
gfxstream_vk_GetPhysicalDeviceQueueFamilyProperties2(VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties2 * pQueueFamilyProperties)1893 void gfxstream_vk_GetPhysicalDeviceQueueFamilyProperties2(
1894     VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount,
1895     VkQueueFamilyProperties2* pQueueFamilyProperties) {
1896     MESA_TRACE_SCOPE("vkGetPhysicalDeviceQueueFamilyProperties2");
1897     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
1898     {
1899         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1900         vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2(
1901             gfxstream_physicalDevice->internal_object, pQueueFamilyPropertyCount,
1902             pQueueFamilyProperties, true /* do lock */);
1903     }
1904 }
gfxstream_vk_GetPhysicalDeviceMemoryProperties2(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties2 * pMemoryProperties)1905 void gfxstream_vk_GetPhysicalDeviceMemoryProperties2(
1906     VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) {
1907     MESA_TRACE_SCOPE("vkGetPhysicalDeviceMemoryProperties2");
1908     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
1909     {
1910         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1911         vkEnc->vkGetPhysicalDeviceMemoryProperties2(gfxstream_physicalDevice->internal_object,
1912                                                     pMemoryProperties, true /* do lock */);
1913     }
1914 }
gfxstream_vk_GetPhysicalDeviceSparseImageFormatProperties2(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo,uint32_t * pPropertyCount,VkSparseImageFormatProperties2 * pProperties)1915 void gfxstream_vk_GetPhysicalDeviceSparseImageFormatProperties2(
1916     VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
1917     uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties) {
1918     MESA_TRACE_SCOPE("vkGetPhysicalDeviceSparseImageFormatProperties2");
1919     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
1920     {
1921         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1922         vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2(
1923             gfxstream_physicalDevice->internal_object, pFormatInfo, pPropertyCount, pProperties,
1924             true /* do lock */);
1925     }
1926 }
gfxstream_vk_TrimCommandPool(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)1927 void gfxstream_vk_TrimCommandPool(VkDevice device, VkCommandPool commandPool,
1928                                   VkCommandPoolTrimFlags flags) {
1929     MESA_TRACE_SCOPE("vkTrimCommandPool");
1930     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
1931     VK_FROM_HANDLE(gfxstream_vk_command_pool, gfxstream_commandPool, commandPool);
1932     {
1933         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1934         vkEnc->vkTrimCommandPool(gfxstream_device->internal_object,
1935                                  gfxstream_commandPool->internal_object, flags, true /* do lock */);
1936     }
1937 }
gfxstream_vk_CreateSamplerYcbcrConversion(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)1938 VkResult gfxstream_vk_CreateSamplerYcbcrConversion(
1939     VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
1940     const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion) {
1941     MESA_TRACE_SCOPE("vkCreateSamplerYcbcrConversion");
1942     VkResult vkCreateSamplerYcbcrConversion_VkResult_return = (VkResult)0;
1943     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
1944     {
1945         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1946         auto resources = gfxstream::vk::ResourceTracker::get();
1947         vkCreateSamplerYcbcrConversion_VkResult_return =
1948             resources->on_vkCreateSamplerYcbcrConversion(vkEnc, VK_SUCCESS,
1949                                                          gfxstream_device->internal_object,
1950                                                          pCreateInfo, pAllocator, pYcbcrConversion);
1951     }
1952     return vkCreateSamplerYcbcrConversion_VkResult_return;
1953 }
gfxstream_vk_DestroySamplerYcbcrConversion(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)1954 void gfxstream_vk_DestroySamplerYcbcrConversion(VkDevice device,
1955                                                 VkSamplerYcbcrConversion ycbcrConversion,
1956                                                 const VkAllocationCallbacks* pAllocator) {
1957     MESA_TRACE_SCOPE("vkDestroySamplerYcbcrConversion");
1958     if (VK_NULL_HANDLE == ycbcrConversion) {
1959         return;
1960     }
1961     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
1962     {
1963         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1964         auto resources = gfxstream::vk::ResourceTracker::get();
1965         resources->on_vkDestroySamplerYcbcrConversion(vkEnc, gfxstream_device->internal_object,
1966                                                       ycbcrConversion, pAllocator);
1967     }
1968 }
gfxstream_vk_CreateDescriptorUpdateTemplate(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)1969 VkResult gfxstream_vk_CreateDescriptorUpdateTemplate(
1970     VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
1971     const VkAllocationCallbacks* pAllocator,
1972     VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) {
1973     MESA_TRACE_SCOPE("vkCreateDescriptorUpdateTemplate");
1974     VkResult vkCreateDescriptorUpdateTemplate_VkResult_return = (VkResult)0;
1975     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
1976     {
1977         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1978         vkCreateDescriptorUpdateTemplate_VkResult_return = vkEnc->vkCreateDescriptorUpdateTemplate(
1979             gfxstream_device->internal_object, pCreateInfo, pAllocator, pDescriptorUpdateTemplate,
1980             true /* do lock */);
1981     }
1982     return vkCreateDescriptorUpdateTemplate_VkResult_return;
1983 }
gfxstream_vk_DestroyDescriptorUpdateTemplate(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)1984 void gfxstream_vk_DestroyDescriptorUpdateTemplate(
1985     VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate,
1986     const VkAllocationCallbacks* pAllocator) {
1987     MESA_TRACE_SCOPE("vkDestroyDescriptorUpdateTemplate");
1988     if (VK_NULL_HANDLE == descriptorUpdateTemplate) {
1989         return;
1990     }
1991     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
1992     {
1993         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
1994         vkEnc->vkDestroyDescriptorUpdateTemplate(gfxstream_device->internal_object,
1995                                                  descriptorUpdateTemplate, pAllocator,
1996                                                  true /* do lock */);
1997     }
1998 }
gfxstream_vk_UpdateDescriptorSetWithTemplate(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)1999 void gfxstream_vk_UpdateDescriptorSetWithTemplate(
2000     VkDevice device, VkDescriptorSet descriptorSet,
2001     VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) {
2002     MESA_TRACE_SCOPE("vkUpdateDescriptorSetWithTemplate");
2003     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
2004     {
2005         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2006         auto resources = gfxstream::vk::ResourceTracker::get();
2007         resources->on_vkUpdateDescriptorSetWithTemplate(vkEnc, gfxstream_device->internal_object,
2008                                                         descriptorSet, descriptorUpdateTemplate,
2009                                                         pData);
2010     }
2011 }
gfxstream_vk_GetPhysicalDeviceExternalBufferProperties(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo,VkExternalBufferProperties * pExternalBufferProperties)2012 void gfxstream_vk_GetPhysicalDeviceExternalBufferProperties(
2013     VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
2014     VkExternalBufferProperties* pExternalBufferProperties) {
2015     MESA_TRACE_SCOPE("vkGetPhysicalDeviceExternalBufferProperties");
2016     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
2017     {
2018         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2019         auto resources = gfxstream::vk::ResourceTracker::get();
2020         resources->on_vkGetPhysicalDeviceExternalBufferProperties(
2021             vkEnc, gfxstream_physicalDevice->internal_object, pExternalBufferInfo,
2022             pExternalBufferProperties);
2023     }
2024 }
gfxstream_vk_GetPhysicalDeviceExternalFenceProperties(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo,VkExternalFenceProperties * pExternalFenceProperties)2025 void gfxstream_vk_GetPhysicalDeviceExternalFenceProperties(
2026     VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
2027     VkExternalFenceProperties* pExternalFenceProperties) {
2028     MESA_TRACE_SCOPE("vkGetPhysicalDeviceExternalFenceProperties");
2029     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
2030     {
2031         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2032         auto resources = gfxstream::vk::ResourceTracker::get();
2033         resources->on_vkGetPhysicalDeviceExternalFenceProperties(
2034             vkEnc, gfxstream_physicalDevice->internal_object, pExternalFenceInfo,
2035             pExternalFenceProperties);
2036     }
2037 }
gfxstream_vk_GetPhysicalDeviceExternalSemaphoreProperties(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo,VkExternalSemaphoreProperties * pExternalSemaphoreProperties)2038 void gfxstream_vk_GetPhysicalDeviceExternalSemaphoreProperties(
2039     VkPhysicalDevice physicalDevice,
2040     const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
2041     VkExternalSemaphoreProperties* pExternalSemaphoreProperties) {
2042     MESA_TRACE_SCOPE("vkGetPhysicalDeviceExternalSemaphoreProperties");
2043     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
2044     {
2045         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2046         vkEnc->vkGetPhysicalDeviceExternalSemaphoreProperties(
2047             gfxstream_physicalDevice->internal_object, pExternalSemaphoreInfo,
2048             pExternalSemaphoreProperties, true /* do lock */);
2049     }
2050 }
gfxstream_vk_GetDescriptorSetLayoutSupport(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)2051 void gfxstream_vk_GetDescriptorSetLayoutSupport(VkDevice device,
2052                                                 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2053                                                 VkDescriptorSetLayoutSupport* pSupport) {
2054     MESA_TRACE_SCOPE("vkGetDescriptorSetLayoutSupport");
2055     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
2056     {
2057         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2058         vkEnc->vkGetDescriptorSetLayoutSupport(gfxstream_device->internal_object, pCreateInfo,
2059                                                pSupport, true /* do lock */);
2060     }
2061 }
2062 #endif
2063 #ifdef VK_VERSION_1_2
gfxstream_vk_CmdDrawIndirectCount(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)2064 void gfxstream_vk_CmdDrawIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer,
2065                                        VkDeviceSize offset, VkBuffer countBuffer,
2066                                        VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
2067                                        uint32_t stride) {
2068     MESA_TRACE_SCOPE("vkCmdDrawIndirectCount");
2069     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2070     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer, buffer);
2071     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_countBuffer, countBuffer);
2072     {
2073         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2074             gfxstream_commandBuffer->internal_object);
2075         vkEnc->vkCmdDrawIndirectCount(gfxstream_commandBuffer->internal_object,
2076                                       gfxstream_buffer->internal_object, offset,
2077                                       gfxstream_countBuffer->internal_object, countBufferOffset,
2078                                       maxDrawCount, stride, true /* do lock */);
2079     }
2080 }
gfxstream_vk_CmdDrawIndexedIndirectCount(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)2081 void gfxstream_vk_CmdDrawIndexedIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer,
2082                                               VkDeviceSize offset, VkBuffer countBuffer,
2083                                               VkDeviceSize countBufferOffset, uint32_t maxDrawCount,
2084                                               uint32_t stride) {
2085     MESA_TRACE_SCOPE("vkCmdDrawIndexedIndirectCount");
2086     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2087     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer, buffer);
2088     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_countBuffer, countBuffer);
2089     {
2090         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2091             gfxstream_commandBuffer->internal_object);
2092         vkEnc->vkCmdDrawIndexedIndirectCount(
2093             gfxstream_commandBuffer->internal_object, gfxstream_buffer->internal_object, offset,
2094             gfxstream_countBuffer->internal_object, countBufferOffset, maxDrawCount, stride,
2095             true /* do lock */);
2096     }
2097 }
gfxstream_vk_CreateRenderPass2(VkDevice device,const VkRenderPassCreateInfo2 * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)2098 VkResult gfxstream_vk_CreateRenderPass2(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo,
2099                                         const VkAllocationCallbacks* pAllocator,
2100                                         VkRenderPass* pRenderPass) {
2101     MESA_TRACE_SCOPE("vkCreateRenderPass2");
2102     VkResult vkCreateRenderPass2_VkResult_return = (VkResult)0;
2103     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
2104     {
2105         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2106         vkCreateRenderPass2_VkResult_return =
2107             vkEnc->vkCreateRenderPass2(gfxstream_device->internal_object, pCreateInfo, pAllocator,
2108                                        pRenderPass, true /* do lock */);
2109     }
2110     return vkCreateRenderPass2_VkResult_return;
2111 }
gfxstream_vk_CmdBeginRenderPass2(VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,const VkSubpassBeginInfo * pSubpassBeginInfo)2112 void gfxstream_vk_CmdBeginRenderPass2(VkCommandBuffer commandBuffer,
2113                                       const VkRenderPassBeginInfo* pRenderPassBegin,
2114                                       const VkSubpassBeginInfo* pSubpassBeginInfo) {
2115     MESA_TRACE_SCOPE("vkCmdBeginRenderPass2");
2116     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2117     {
2118         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2119             gfxstream_commandBuffer->internal_object);
2120         vkEnc->vkCmdBeginRenderPass2(gfxstream_commandBuffer->internal_object, pRenderPassBegin,
2121                                      pSubpassBeginInfo, true /* do lock */);
2122     }
2123 }
gfxstream_vk_CmdNextSubpass2(VkCommandBuffer commandBuffer,const VkSubpassBeginInfo * pSubpassBeginInfo,const VkSubpassEndInfo * pSubpassEndInfo)2124 void gfxstream_vk_CmdNextSubpass2(VkCommandBuffer commandBuffer,
2125                                   const VkSubpassBeginInfo* pSubpassBeginInfo,
2126                                   const VkSubpassEndInfo* pSubpassEndInfo) {
2127     MESA_TRACE_SCOPE("vkCmdNextSubpass2");
2128     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2129     {
2130         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2131             gfxstream_commandBuffer->internal_object);
2132         vkEnc->vkCmdNextSubpass2(gfxstream_commandBuffer->internal_object, pSubpassBeginInfo,
2133                                  pSubpassEndInfo, true /* do lock */);
2134     }
2135 }
gfxstream_vk_CmdEndRenderPass2(VkCommandBuffer commandBuffer,const VkSubpassEndInfo * pSubpassEndInfo)2136 void gfxstream_vk_CmdEndRenderPass2(VkCommandBuffer commandBuffer,
2137                                     const VkSubpassEndInfo* pSubpassEndInfo) {
2138     MESA_TRACE_SCOPE("vkCmdEndRenderPass2");
2139     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2140     {
2141         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2142             gfxstream_commandBuffer->internal_object);
2143         vkEnc->vkCmdEndRenderPass2(gfxstream_commandBuffer->internal_object, pSubpassEndInfo,
2144                                    true /* do lock */);
2145     }
2146 }
gfxstream_vk_ResetQueryPool(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)2147 void gfxstream_vk_ResetQueryPool(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery,
2148                                  uint32_t queryCount) {
2149     MESA_TRACE_SCOPE("vkResetQueryPool");
2150     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
2151     {
2152         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2153         vkEnc->vkResetQueryPool(gfxstream_device->internal_object, queryPool, firstQuery,
2154                                 queryCount, true /* do lock */);
2155     }
2156 }
gfxstream_vk_GetSemaphoreCounterValue(VkDevice device,VkSemaphore semaphore,uint64_t * pValue)2157 VkResult gfxstream_vk_GetSemaphoreCounterValue(VkDevice device, VkSemaphore semaphore,
2158                                                uint64_t* pValue) {
2159     MESA_TRACE_SCOPE("vkGetSemaphoreCounterValue");
2160     VkResult vkGetSemaphoreCounterValue_VkResult_return = (VkResult)0;
2161     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
2162     VK_FROM_HANDLE(gfxstream_vk_semaphore, gfxstream_semaphore, semaphore);
2163     {
2164         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2165         vkGetSemaphoreCounterValue_VkResult_return = vkEnc->vkGetSemaphoreCounterValue(
2166             gfxstream_device->internal_object, gfxstream_semaphore->internal_object, pValue,
2167             true /* do lock */);
2168     }
2169     return vkGetSemaphoreCounterValue_VkResult_return;
2170 }
gfxstream_vk_WaitSemaphores(VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)2171 VkResult gfxstream_vk_WaitSemaphores(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo,
2172                                      uint64_t timeout) {
2173     MESA_TRACE_SCOPE("vkWaitSemaphores");
2174     VkResult vkWaitSemaphores_VkResult_return = (VkResult)0;
2175     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
2176     {
2177         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2178         std::vector<VkSemaphoreWaitInfo> internal_pWaitInfo(1);
2179         std::vector<std::vector<VkSemaphore>> internal_VkSemaphoreWaitInfo_pSemaphores;
2180         for (uint32_t i = 0; i < 1; ++i) {
2181             internal_pWaitInfo[i] = pWaitInfo[i];
2182             /* VkSemaphoreWaitInfo::pSemaphores */
2183             internal_VkSemaphoreWaitInfo_pSemaphores.push_back(std::vector<VkSemaphore>());
2184             internal_VkSemaphoreWaitInfo_pSemaphores[i] = transformVkSemaphoreList(
2185                 internal_pWaitInfo[i].pSemaphores, internal_pWaitInfo[i].semaphoreCount);
2186             internal_pWaitInfo[i].pSemaphores = internal_VkSemaphoreWaitInfo_pSemaphores[i].data();
2187             internal_pWaitInfo[i].semaphoreCount =
2188                 internal_VkSemaphoreWaitInfo_pSemaphores[i].size();
2189         }
2190         vkWaitSemaphores_VkResult_return =
2191             vkEnc->vkWaitSemaphores(gfxstream_device->internal_object, internal_pWaitInfo.data(),
2192                                     timeout, true /* do lock */);
2193     }
2194     return vkWaitSemaphores_VkResult_return;
2195 }
gfxstream_vk_SignalSemaphore(VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)2196 VkResult gfxstream_vk_SignalSemaphore(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo) {
2197     MESA_TRACE_SCOPE("vkSignalSemaphore");
2198     VkResult vkSignalSemaphore_VkResult_return = (VkResult)0;
2199     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
2200     {
2201         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2202         std::vector<VkSemaphoreSignalInfo> internal_pSignalInfo(1);
2203         for (uint32_t i = 0; i < 1; ++i) {
2204             internal_pSignalInfo[i] = pSignalInfo[i];
2205             /* VkSemaphoreSignalInfo::semaphore */
2206             VK_FROM_HANDLE(gfxstream_vk_semaphore, gfxstream_semaphore,
2207                            internal_pSignalInfo[i].semaphore);
2208             internal_pSignalInfo[i].semaphore = gfxstream_semaphore->internal_object;
2209         }
2210         vkSignalSemaphore_VkResult_return = vkEnc->vkSignalSemaphore(
2211             gfxstream_device->internal_object, internal_pSignalInfo.data(), true /* do lock */);
2212     }
2213     return vkSignalSemaphore_VkResult_return;
2214 }
gfxstream_vk_GetBufferDeviceAddress(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)2215 VkDeviceAddress gfxstream_vk_GetBufferDeviceAddress(VkDevice device,
2216                                                     const VkBufferDeviceAddressInfo* pInfo) {
2217     MESA_TRACE_SCOPE("vkGetBufferDeviceAddress");
2218     VkDeviceAddress vkGetBufferDeviceAddress_VkDeviceAddress_return = (VkDeviceAddress)0;
2219     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
2220     {
2221         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2222         std::vector<VkBufferDeviceAddressInfo> internal_pInfo(1);
2223         for (uint32_t i = 0; i < 1; ++i) {
2224             internal_pInfo[i] = pInfo[i];
2225             /* VkBufferDeviceAddressInfo::buffer */
2226             VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer, internal_pInfo[i].buffer);
2227             internal_pInfo[i].buffer = gfxstream_buffer->internal_object;
2228         }
2229         vkGetBufferDeviceAddress_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddress(
2230             gfxstream_device->internal_object, internal_pInfo.data(), true /* do lock */);
2231     }
2232     return vkGetBufferDeviceAddress_VkDeviceAddress_return;
2233 }
gfxstream_vk_GetBufferOpaqueCaptureAddress(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)2234 uint64_t gfxstream_vk_GetBufferOpaqueCaptureAddress(VkDevice device,
2235                                                     const VkBufferDeviceAddressInfo* pInfo) {
2236     MESA_TRACE_SCOPE("vkGetBufferOpaqueCaptureAddress");
2237     uint64_t vkGetBufferOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2238     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
2239     {
2240         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2241         std::vector<VkBufferDeviceAddressInfo> internal_pInfo(1);
2242         for (uint32_t i = 0; i < 1; ++i) {
2243             internal_pInfo[i] = pInfo[i];
2244             /* VkBufferDeviceAddressInfo::buffer */
2245             VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer, internal_pInfo[i].buffer);
2246             internal_pInfo[i].buffer = gfxstream_buffer->internal_object;
2247         }
2248         vkGetBufferOpaqueCaptureAddress_uint64_t_return = vkEnc->vkGetBufferOpaqueCaptureAddress(
2249             gfxstream_device->internal_object, internal_pInfo.data(), true /* do lock */);
2250     }
2251     return vkGetBufferOpaqueCaptureAddress_uint64_t_return;
2252 }
gfxstream_vk_GetDeviceMemoryOpaqueCaptureAddress(VkDevice device,const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo)2253 uint64_t gfxstream_vk_GetDeviceMemoryOpaqueCaptureAddress(
2254     VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) {
2255     MESA_TRACE_SCOPE("vkGetDeviceMemoryOpaqueCaptureAddress");
2256     uint64_t vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return = (uint64_t)0;
2257     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
2258     {
2259         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2260         vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return =
2261             vkEnc->vkGetDeviceMemoryOpaqueCaptureAddress(gfxstream_device->internal_object, pInfo,
2262                                                          true /* do lock */);
2263     }
2264     return vkGetDeviceMemoryOpaqueCaptureAddress_uint64_t_return;
2265 }
2266 #endif
2267 #ifdef VK_VERSION_1_3
gfxstream_vk_GetPhysicalDeviceToolProperties(VkPhysicalDevice physicalDevice,uint32_t * pToolCount,VkPhysicalDeviceToolProperties * pToolProperties)2268 VkResult gfxstream_vk_GetPhysicalDeviceToolProperties(
2269     VkPhysicalDevice physicalDevice, uint32_t* pToolCount,
2270     VkPhysicalDeviceToolProperties* pToolProperties) {
2271     MESA_TRACE_SCOPE("vkGetPhysicalDeviceToolProperties");
2272     VkResult vkGetPhysicalDeviceToolProperties_VkResult_return = (VkResult)0;
2273     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
2274     {
2275         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2276         vkGetPhysicalDeviceToolProperties_VkResult_return =
2277             vkEnc->vkGetPhysicalDeviceToolProperties(gfxstream_physicalDevice->internal_object,
2278                                                      pToolCount, pToolProperties,
2279                                                      true /* do lock */);
2280     }
2281     return vkGetPhysicalDeviceToolProperties_VkResult_return;
2282 }
gfxstream_vk_CreatePrivateDataSlot(VkDevice device,const VkPrivateDataSlotCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPrivateDataSlot * pPrivateDataSlot)2283 VkResult gfxstream_vk_CreatePrivateDataSlot(VkDevice device,
2284                                             const VkPrivateDataSlotCreateInfo* pCreateInfo,
2285                                             const VkAllocationCallbacks* pAllocator,
2286                                             VkPrivateDataSlot* pPrivateDataSlot) {
2287     MESA_TRACE_SCOPE("vkCreatePrivateDataSlot");
2288     VkResult vkCreatePrivateDataSlot_VkResult_return = (VkResult)0;
2289     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
2290     {
2291         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2292         vkCreatePrivateDataSlot_VkResult_return =
2293             vkEnc->vkCreatePrivateDataSlot(gfxstream_device->internal_object, pCreateInfo,
2294                                            pAllocator, pPrivateDataSlot, true /* do lock */);
2295     }
2296     return vkCreatePrivateDataSlot_VkResult_return;
2297 }
gfxstream_vk_DestroyPrivateDataSlot(VkDevice device,VkPrivateDataSlot privateDataSlot,const VkAllocationCallbacks * pAllocator)2298 void gfxstream_vk_DestroyPrivateDataSlot(VkDevice device, VkPrivateDataSlot privateDataSlot,
2299                                          const VkAllocationCallbacks* pAllocator) {
2300     MESA_TRACE_SCOPE("vkDestroyPrivateDataSlot");
2301     if (VK_NULL_HANDLE == privateDataSlot) {
2302         return;
2303     }
2304     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
2305     {
2306         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2307         vkEnc->vkDestroyPrivateDataSlot(gfxstream_device->internal_object, privateDataSlot,
2308                                         pAllocator, true /* do lock */);
2309     }
2310 }
gfxstream_vk_SetPrivateData(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlot privateDataSlot,uint64_t data)2311 VkResult gfxstream_vk_SetPrivateData(VkDevice device, VkObjectType objectType,
2312                                      uint64_t objectHandle, VkPrivateDataSlot privateDataSlot,
2313                                      uint64_t data) {
2314     MESA_TRACE_SCOPE("vkSetPrivateData");
2315     VkResult vkSetPrivateData_VkResult_return = (VkResult)0;
2316     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
2317     {
2318         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2319         vkSetPrivateData_VkResult_return =
2320             vkEnc->vkSetPrivateData(gfxstream_device->internal_object, objectType, objectHandle,
2321                                     privateDataSlot, data, true /* do lock */);
2322     }
2323     return vkSetPrivateData_VkResult_return;
2324 }
gfxstream_vk_GetPrivateData(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlot privateDataSlot,uint64_t * pData)2325 void gfxstream_vk_GetPrivateData(VkDevice device, VkObjectType objectType, uint64_t objectHandle,
2326                                  VkPrivateDataSlot privateDataSlot, uint64_t* pData) {
2327     MESA_TRACE_SCOPE("vkGetPrivateData");
2328     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
2329     {
2330         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2331         vkEnc->vkGetPrivateData(gfxstream_device->internal_object, objectType, objectHandle,
2332                                 privateDataSlot, pData, true /* do lock */);
2333     }
2334 }
gfxstream_vk_CmdSetEvent2(VkCommandBuffer commandBuffer,VkEvent event,const VkDependencyInfo * pDependencyInfo)2335 void gfxstream_vk_CmdSetEvent2(VkCommandBuffer commandBuffer, VkEvent event,
2336                                const VkDependencyInfo* pDependencyInfo) {
2337     MESA_TRACE_SCOPE("vkCmdSetEvent2");
2338     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2339     {
2340         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2341             gfxstream_commandBuffer->internal_object);
2342         std::vector<VkDependencyInfo> internal_pDependencyInfo(1);
2343         std::vector<std::vector<VkBufferMemoryBarrier2>>
2344             internal_VkDependencyInfo_pBufferMemoryBarriers;
2345         for (uint32_t i = 0; i < 1; ++i) {
2346             internal_pDependencyInfo[i] = pDependencyInfo[i];
2347             /* VkDependencyInfo::pBufferMemoryBarriers */
2348             internal_VkDependencyInfo_pBufferMemoryBarriers.push_back(
2349                 std::vector<VkBufferMemoryBarrier2>());
2350             internal_VkDependencyInfo_pBufferMemoryBarriers[i].resize(
2351                 internal_pDependencyInfo[i].bufferMemoryBarrierCount);
2352             for (uint32_t j = 0; j < internal_pDependencyInfo[i].bufferMemoryBarrierCount; ++j) {
2353                 internal_VkDependencyInfo_pBufferMemoryBarriers[i][j] =
2354                     internal_pDependencyInfo[i].pBufferMemoryBarriers[j];
2355                 /* VkBufferMemoryBarrier2::buffer */
2356                 VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer,
2357                                internal_VkDependencyInfo_pBufferMemoryBarriers[i][j].buffer);
2358                 internal_VkDependencyInfo_pBufferMemoryBarriers[i][j].buffer =
2359                     gfxstream_buffer->internal_object;
2360             }
2361             internal_pDependencyInfo[i].pBufferMemoryBarriers =
2362                 internal_VkDependencyInfo_pBufferMemoryBarriers[i].data();
2363         }
2364         vkEnc->vkCmdSetEvent2(gfxstream_commandBuffer->internal_object, event,
2365                               internal_pDependencyInfo.data(), true /* do lock */);
2366     }
2367 }
gfxstream_vk_CmdResetEvent2(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags2 stageMask)2368 void gfxstream_vk_CmdResetEvent2(VkCommandBuffer commandBuffer, VkEvent event,
2369                                  VkPipelineStageFlags2 stageMask) {
2370     MESA_TRACE_SCOPE("vkCmdResetEvent2");
2371     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2372     {
2373         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2374             gfxstream_commandBuffer->internal_object);
2375         vkEnc->vkCmdResetEvent2(gfxstream_commandBuffer->internal_object, event, stageMask,
2376                                 true /* do lock */);
2377     }
2378 }
gfxstream_vk_CmdWaitEvents2(VkCommandBuffer commandBuffer,uint32_t eventCount,const VkEvent * pEvents,const VkDependencyInfo * pDependencyInfos)2379 void gfxstream_vk_CmdWaitEvents2(VkCommandBuffer commandBuffer, uint32_t eventCount,
2380                                  const VkEvent* pEvents, const VkDependencyInfo* pDependencyInfos) {
2381     MESA_TRACE_SCOPE("vkCmdWaitEvents2");
2382     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2383     {
2384         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2385             gfxstream_commandBuffer->internal_object);
2386         std::vector<VkDependencyInfo> internal_pDependencyInfos(eventCount);
2387         std::vector<std::vector<VkBufferMemoryBarrier2>>
2388             internal_VkDependencyInfo_pBufferMemoryBarriers;
2389         for (uint32_t i = 0; i < eventCount; ++i) {
2390             internal_pDependencyInfos[i] = pDependencyInfos[i];
2391             /* VkDependencyInfo::pBufferMemoryBarriers */
2392             internal_VkDependencyInfo_pBufferMemoryBarriers.push_back(
2393                 std::vector<VkBufferMemoryBarrier2>());
2394             internal_VkDependencyInfo_pBufferMemoryBarriers[i].resize(
2395                 internal_pDependencyInfos[i].bufferMemoryBarrierCount);
2396             for (uint32_t j = 0; j < internal_pDependencyInfos[i].bufferMemoryBarrierCount; ++j) {
2397                 internal_VkDependencyInfo_pBufferMemoryBarriers[i][j] =
2398                     internal_pDependencyInfos[i].pBufferMemoryBarriers[j];
2399                 /* VkBufferMemoryBarrier2::buffer */
2400                 VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer,
2401                                internal_VkDependencyInfo_pBufferMemoryBarriers[i][j].buffer);
2402                 internal_VkDependencyInfo_pBufferMemoryBarriers[i][j].buffer =
2403                     gfxstream_buffer->internal_object;
2404             }
2405             internal_pDependencyInfos[i].pBufferMemoryBarriers =
2406                 internal_VkDependencyInfo_pBufferMemoryBarriers[i].data();
2407         }
2408         vkEnc->vkCmdWaitEvents2(gfxstream_commandBuffer->internal_object, eventCount, pEvents,
2409                                 internal_pDependencyInfos.data(), true /* do lock */);
2410     }
2411 }
gfxstream_vk_CmdPipelineBarrier2(VkCommandBuffer commandBuffer,const VkDependencyInfo * pDependencyInfo)2412 void gfxstream_vk_CmdPipelineBarrier2(VkCommandBuffer commandBuffer,
2413                                       const VkDependencyInfo* pDependencyInfo) {
2414     MESA_TRACE_SCOPE("vkCmdPipelineBarrier2");
2415     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2416     {
2417         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2418             gfxstream_commandBuffer->internal_object);
2419         std::vector<VkDependencyInfo> internal_pDependencyInfo(1);
2420         std::vector<std::vector<VkBufferMemoryBarrier2>>
2421             internal_VkDependencyInfo_pBufferMemoryBarriers;
2422         for (uint32_t i = 0; i < 1; ++i) {
2423             internal_pDependencyInfo[i] = pDependencyInfo[i];
2424             /* VkDependencyInfo::pBufferMemoryBarriers */
2425             internal_VkDependencyInfo_pBufferMemoryBarriers.push_back(
2426                 std::vector<VkBufferMemoryBarrier2>());
2427             internal_VkDependencyInfo_pBufferMemoryBarriers[i].resize(
2428                 internal_pDependencyInfo[i].bufferMemoryBarrierCount);
2429             for (uint32_t j = 0; j < internal_pDependencyInfo[i].bufferMemoryBarrierCount; ++j) {
2430                 internal_VkDependencyInfo_pBufferMemoryBarriers[i][j] =
2431                     internal_pDependencyInfo[i].pBufferMemoryBarriers[j];
2432                 /* VkBufferMemoryBarrier2::buffer */
2433                 VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer,
2434                                internal_VkDependencyInfo_pBufferMemoryBarriers[i][j].buffer);
2435                 internal_VkDependencyInfo_pBufferMemoryBarriers[i][j].buffer =
2436                     gfxstream_buffer->internal_object;
2437             }
2438             internal_pDependencyInfo[i].pBufferMemoryBarriers =
2439                 internal_VkDependencyInfo_pBufferMemoryBarriers[i].data();
2440         }
2441         vkEnc->vkCmdPipelineBarrier2(gfxstream_commandBuffer->internal_object,
2442                                      internal_pDependencyInfo.data(), true /* do lock */);
2443     }
2444 }
gfxstream_vk_CmdWriteTimestamp2(VkCommandBuffer commandBuffer,VkPipelineStageFlags2 stage,VkQueryPool queryPool,uint32_t query)2445 void gfxstream_vk_CmdWriteTimestamp2(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage,
2446                                      VkQueryPool queryPool, uint32_t query) {
2447     MESA_TRACE_SCOPE("vkCmdWriteTimestamp2");
2448     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2449     {
2450         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2451             gfxstream_commandBuffer->internal_object);
2452         vkEnc->vkCmdWriteTimestamp2(gfxstream_commandBuffer->internal_object, stage, queryPool,
2453                                     query, true /* do lock */);
2454     }
2455 }
gfxstream_vk_QueueSubmit2(VkQueue queue,uint32_t submitCount,const VkSubmitInfo2 * pSubmits,VkFence fence)2456 VkResult gfxstream_vk_QueueSubmit2(VkQueue queue, uint32_t submitCount,
2457                                    const VkSubmitInfo2* pSubmits, VkFence fence) {
2458     MESA_TRACE_SCOPE("vkQueueSubmit2");
2459     VkResult vkQueueSubmit2_VkResult_return = (VkResult)0;
2460     VK_FROM_HANDLE(gfxstream_vk_queue, gfxstream_queue, queue);
2461     VK_FROM_HANDLE(gfxstream_vk_fence, gfxstream_fence, fence);
2462     {
2463         auto vkEnc =
2464             gfxstream::vk::ResourceTracker::getQueueEncoder(gfxstream_queue->internal_object);
2465         std::vector<VkSubmitInfo2> internal_pSubmits(submitCount);
2466         std::vector<std::vector<VkSemaphoreSubmitInfo>> internal_VkSubmitInfo2_pWaitSemaphoreInfos;
2467         std::vector<std::vector<VkCommandBufferSubmitInfo>>
2468             internal_VkSubmitInfo2_pCommandBufferInfos;
2469         std::vector<std::vector<VkSemaphoreSubmitInfo>>
2470             internal_VkSubmitInfo2_pSignalSemaphoreInfos;
2471         for (uint32_t i = 0; i < submitCount; ++i) {
2472             internal_pSubmits[i] = pSubmits[i];
2473             /* VkSubmitInfo2::pWaitSemaphoreInfos */
2474             internal_VkSubmitInfo2_pWaitSemaphoreInfos.push_back(
2475                 std::vector<VkSemaphoreSubmitInfo>());
2476             internal_VkSubmitInfo2_pWaitSemaphoreInfos[i] =
2477                 transformVkSemaphoreSubmitInfoList(internal_pSubmits[i].pWaitSemaphoreInfos,
2478                                                    internal_pSubmits[i].waitSemaphoreInfoCount);
2479             internal_pSubmits[i].pWaitSemaphoreInfos =
2480                 internal_VkSubmitInfo2_pWaitSemaphoreInfos[i].data();
2481             internal_pSubmits[i].waitSemaphoreInfoCount =
2482                 internal_VkSubmitInfo2_pWaitSemaphoreInfos[i].size();
2483             /* VkSubmitInfo2::pCommandBufferInfos */
2484             internal_VkSubmitInfo2_pCommandBufferInfos.push_back(
2485                 std::vector<VkCommandBufferSubmitInfo>());
2486             internal_VkSubmitInfo2_pCommandBufferInfos[i].resize(
2487                 internal_pSubmits[i].commandBufferInfoCount);
2488             for (uint32_t j = 0; j < internal_pSubmits[i].commandBufferInfoCount; ++j) {
2489                 internal_VkSubmitInfo2_pCommandBufferInfos[i][j] =
2490                     internal_pSubmits[i].pCommandBufferInfos[j];
2491                 /* VkCommandBufferSubmitInfo::commandBuffer */
2492                 VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer,
2493                                internal_VkSubmitInfo2_pCommandBufferInfos[i][j].commandBuffer);
2494                 internal_VkSubmitInfo2_pCommandBufferInfos[i][j].commandBuffer =
2495                     gfxstream_commandBuffer->internal_object;
2496             }
2497             internal_pSubmits[i].pCommandBufferInfos =
2498                 internal_VkSubmitInfo2_pCommandBufferInfos[i].data();
2499             /* VkSubmitInfo2::pSignalSemaphoreInfos */
2500             internal_VkSubmitInfo2_pSignalSemaphoreInfos.push_back(
2501                 std::vector<VkSemaphoreSubmitInfo>());
2502             internal_VkSubmitInfo2_pSignalSemaphoreInfos[i] =
2503                 transformVkSemaphoreSubmitInfoList(internal_pSubmits[i].pSignalSemaphoreInfos,
2504                                                    internal_pSubmits[i].signalSemaphoreInfoCount);
2505             internal_pSubmits[i].pSignalSemaphoreInfos =
2506                 internal_VkSubmitInfo2_pSignalSemaphoreInfos[i].data();
2507             internal_pSubmits[i].signalSemaphoreInfoCount =
2508                 internal_VkSubmitInfo2_pSignalSemaphoreInfos[i].size();
2509         }
2510         auto resources = gfxstream::vk::ResourceTracker::get();
2511         vkQueueSubmit2_VkResult_return = resources->on_vkQueueSubmit2(
2512             vkEnc, VK_SUCCESS, gfxstream_queue->internal_object, submitCount,
2513             internal_pSubmits.data(),
2514             gfxstream_fence ? gfxstream_fence->internal_object : VK_NULL_HANDLE);
2515     }
2516     return vkQueueSubmit2_VkResult_return;
2517 }
gfxstream_vk_CmdCopyBuffer2(VkCommandBuffer commandBuffer,const VkCopyBufferInfo2 * pCopyBufferInfo)2518 void gfxstream_vk_CmdCopyBuffer2(VkCommandBuffer commandBuffer,
2519                                  const VkCopyBufferInfo2* pCopyBufferInfo) {
2520     MESA_TRACE_SCOPE("vkCmdCopyBuffer2");
2521     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2522     {
2523         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2524             gfxstream_commandBuffer->internal_object);
2525         std::vector<VkCopyBufferInfo2> internal_pCopyBufferInfo(1);
2526         for (uint32_t i = 0; i < 1; ++i) {
2527             internal_pCopyBufferInfo[i] = pCopyBufferInfo[i];
2528             /* VkCopyBufferInfo2::srcBuffer */
2529             VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_srcBuffer,
2530                            internal_pCopyBufferInfo[i].srcBuffer);
2531             internal_pCopyBufferInfo[i].srcBuffer = gfxstream_srcBuffer->internal_object;
2532             /* VkCopyBufferInfo2::dstBuffer */
2533             VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_dstBuffer,
2534                            internal_pCopyBufferInfo[i].dstBuffer);
2535             internal_pCopyBufferInfo[i].dstBuffer = gfxstream_dstBuffer->internal_object;
2536         }
2537         vkEnc->vkCmdCopyBuffer2(gfxstream_commandBuffer->internal_object,
2538                                 internal_pCopyBufferInfo.data(), true /* do lock */);
2539     }
2540 }
gfxstream_vk_CmdCopyImage2(VkCommandBuffer commandBuffer,const VkCopyImageInfo2 * pCopyImageInfo)2541 void gfxstream_vk_CmdCopyImage2(VkCommandBuffer commandBuffer,
2542                                 const VkCopyImageInfo2* pCopyImageInfo) {
2543     MESA_TRACE_SCOPE("vkCmdCopyImage2");
2544     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2545     {
2546         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2547             gfxstream_commandBuffer->internal_object);
2548         vkEnc->vkCmdCopyImage2(gfxstream_commandBuffer->internal_object, pCopyImageInfo,
2549                                true /* do lock */);
2550     }
2551 }
gfxstream_vk_CmdCopyBufferToImage2(VkCommandBuffer commandBuffer,const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo)2552 void gfxstream_vk_CmdCopyBufferToImage2(VkCommandBuffer commandBuffer,
2553                                         const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo) {
2554     MESA_TRACE_SCOPE("vkCmdCopyBufferToImage2");
2555     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2556     {
2557         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2558             gfxstream_commandBuffer->internal_object);
2559         std::vector<VkCopyBufferToImageInfo2> internal_pCopyBufferToImageInfo(1);
2560         for (uint32_t i = 0; i < 1; ++i) {
2561             internal_pCopyBufferToImageInfo[i] = pCopyBufferToImageInfo[i];
2562             /* VkCopyBufferToImageInfo2::srcBuffer */
2563             VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_srcBuffer,
2564                            internal_pCopyBufferToImageInfo[i].srcBuffer);
2565             internal_pCopyBufferToImageInfo[i].srcBuffer = gfxstream_srcBuffer->internal_object;
2566         }
2567         vkEnc->vkCmdCopyBufferToImage2(gfxstream_commandBuffer->internal_object,
2568                                        internal_pCopyBufferToImageInfo.data(), true /* do lock */);
2569     }
2570 }
gfxstream_vk_CmdCopyImageToBuffer2(VkCommandBuffer commandBuffer,const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo)2571 void gfxstream_vk_CmdCopyImageToBuffer2(VkCommandBuffer commandBuffer,
2572                                         const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo) {
2573     MESA_TRACE_SCOPE("vkCmdCopyImageToBuffer2");
2574     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2575     {
2576         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2577             gfxstream_commandBuffer->internal_object);
2578         std::vector<VkCopyImageToBufferInfo2> internal_pCopyImageToBufferInfo(1);
2579         for (uint32_t i = 0; i < 1; ++i) {
2580             internal_pCopyImageToBufferInfo[i] = pCopyImageToBufferInfo[i];
2581             /* VkCopyImageToBufferInfo2::dstBuffer */
2582             VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_dstBuffer,
2583                            internal_pCopyImageToBufferInfo[i].dstBuffer);
2584             internal_pCopyImageToBufferInfo[i].dstBuffer = gfxstream_dstBuffer->internal_object;
2585         }
2586         vkEnc->vkCmdCopyImageToBuffer2(gfxstream_commandBuffer->internal_object,
2587                                        internal_pCopyImageToBufferInfo.data(), true /* do lock */);
2588     }
2589 }
gfxstream_vk_CmdBlitImage2(VkCommandBuffer commandBuffer,const VkBlitImageInfo2 * pBlitImageInfo)2590 void gfxstream_vk_CmdBlitImage2(VkCommandBuffer commandBuffer,
2591                                 const VkBlitImageInfo2* pBlitImageInfo) {
2592     MESA_TRACE_SCOPE("vkCmdBlitImage2");
2593     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2594     {
2595         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2596             gfxstream_commandBuffer->internal_object);
2597         vkEnc->vkCmdBlitImage2(gfxstream_commandBuffer->internal_object, pBlitImageInfo,
2598                                true /* do lock */);
2599     }
2600 }
gfxstream_vk_CmdResolveImage2(VkCommandBuffer commandBuffer,const VkResolveImageInfo2 * pResolveImageInfo)2601 void gfxstream_vk_CmdResolveImage2(VkCommandBuffer commandBuffer,
2602                                    const VkResolveImageInfo2* pResolveImageInfo) {
2603     MESA_TRACE_SCOPE("vkCmdResolveImage2");
2604     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2605     {
2606         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2607             gfxstream_commandBuffer->internal_object);
2608         vkEnc->vkCmdResolveImage2(gfxstream_commandBuffer->internal_object, pResolveImageInfo,
2609                                   true /* do lock */);
2610     }
2611 }
gfxstream_vk_CmdBeginRendering(VkCommandBuffer commandBuffer,const VkRenderingInfo * pRenderingInfo)2612 void gfxstream_vk_CmdBeginRendering(VkCommandBuffer commandBuffer,
2613                                     const VkRenderingInfo* pRenderingInfo) {
2614     MESA_TRACE_SCOPE("vkCmdBeginRendering");
2615     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2616     {
2617         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2618             gfxstream_commandBuffer->internal_object);
2619         vkEnc->vkCmdBeginRendering(gfxstream_commandBuffer->internal_object, pRenderingInfo,
2620                                    true /* do lock */);
2621     }
2622 }
gfxstream_vk_CmdEndRendering(VkCommandBuffer commandBuffer)2623 void gfxstream_vk_CmdEndRendering(VkCommandBuffer commandBuffer) {
2624     MESA_TRACE_SCOPE("vkCmdEndRendering");
2625     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2626     {
2627         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2628             gfxstream_commandBuffer->internal_object);
2629         vkEnc->vkCmdEndRendering(gfxstream_commandBuffer->internal_object, true /* do lock */);
2630     }
2631 }
gfxstream_vk_CmdSetCullMode(VkCommandBuffer commandBuffer,VkCullModeFlags cullMode)2632 void gfxstream_vk_CmdSetCullMode(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode) {
2633     MESA_TRACE_SCOPE("vkCmdSetCullMode");
2634     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2635     {
2636         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2637             gfxstream_commandBuffer->internal_object);
2638         vkEnc->vkCmdSetCullMode(gfxstream_commandBuffer->internal_object, cullMode,
2639                                 true /* do lock */);
2640     }
2641 }
gfxstream_vk_CmdSetFrontFace(VkCommandBuffer commandBuffer,VkFrontFace frontFace)2642 void gfxstream_vk_CmdSetFrontFace(VkCommandBuffer commandBuffer, VkFrontFace frontFace) {
2643     MESA_TRACE_SCOPE("vkCmdSetFrontFace");
2644     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2645     {
2646         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2647             gfxstream_commandBuffer->internal_object);
2648         vkEnc->vkCmdSetFrontFace(gfxstream_commandBuffer->internal_object, frontFace,
2649                                  true /* do lock */);
2650     }
2651 }
gfxstream_vk_CmdSetPrimitiveTopology(VkCommandBuffer commandBuffer,VkPrimitiveTopology primitiveTopology)2652 void gfxstream_vk_CmdSetPrimitiveTopology(VkCommandBuffer commandBuffer,
2653                                           VkPrimitiveTopology primitiveTopology) {
2654     MESA_TRACE_SCOPE("vkCmdSetPrimitiveTopology");
2655     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2656     {
2657         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2658             gfxstream_commandBuffer->internal_object);
2659         vkEnc->vkCmdSetPrimitiveTopology(gfxstream_commandBuffer->internal_object,
2660                                          primitiveTopology, true /* do lock */);
2661     }
2662 }
gfxstream_vk_CmdSetViewportWithCount(VkCommandBuffer commandBuffer,uint32_t viewportCount,const VkViewport * pViewports)2663 void gfxstream_vk_CmdSetViewportWithCount(VkCommandBuffer commandBuffer, uint32_t viewportCount,
2664                                           const VkViewport* pViewports) {
2665     MESA_TRACE_SCOPE("vkCmdSetViewportWithCount");
2666     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2667     {
2668         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2669             gfxstream_commandBuffer->internal_object);
2670         vkEnc->vkCmdSetViewportWithCount(gfxstream_commandBuffer->internal_object, viewportCount,
2671                                          pViewports, true /* do lock */);
2672     }
2673 }
gfxstream_vk_CmdSetScissorWithCount(VkCommandBuffer commandBuffer,uint32_t scissorCount,const VkRect2D * pScissors)2674 void gfxstream_vk_CmdSetScissorWithCount(VkCommandBuffer commandBuffer, uint32_t scissorCount,
2675                                          const VkRect2D* pScissors) {
2676     MESA_TRACE_SCOPE("vkCmdSetScissorWithCount");
2677     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2678     {
2679         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2680             gfxstream_commandBuffer->internal_object);
2681         vkEnc->vkCmdSetScissorWithCount(gfxstream_commandBuffer->internal_object, scissorCount,
2682                                         pScissors, true /* do lock */);
2683     }
2684 }
gfxstream_vk_CmdBindVertexBuffers2(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets,const VkDeviceSize * pSizes,const VkDeviceSize * pStrides)2685 void gfxstream_vk_CmdBindVertexBuffers2(VkCommandBuffer commandBuffer, uint32_t firstBinding,
2686                                         uint32_t bindingCount, const VkBuffer* pBuffers,
2687                                         const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes,
2688                                         const VkDeviceSize* pStrides) {
2689     MESA_TRACE_SCOPE("vkCmdBindVertexBuffers2");
2690     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2691     {
2692         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2693             gfxstream_commandBuffer->internal_object);
2694         std::vector<VkBuffer> internal_pBuffers(bindingCount);
2695         for (uint32_t i = 0; i < bindingCount; ++i) {
2696             if (pBuffers) {
2697                 VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_pBuffers, pBuffers[i]);
2698                 internal_pBuffers[i] = gfxstream_pBuffers->internal_object;
2699             }
2700         }
2701         vkEnc->vkCmdBindVertexBuffers2(gfxstream_commandBuffer->internal_object, firstBinding,
2702                                        bindingCount, internal_pBuffers.data(), pOffsets, pSizes,
2703                                        pStrides, true /* do lock */);
2704     }
2705 }
gfxstream_vk_CmdSetDepthTestEnable(VkCommandBuffer commandBuffer,VkBool32 depthTestEnable)2706 void gfxstream_vk_CmdSetDepthTestEnable(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable) {
2707     MESA_TRACE_SCOPE("vkCmdSetDepthTestEnable");
2708     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2709     {
2710         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2711             gfxstream_commandBuffer->internal_object);
2712         vkEnc->vkCmdSetDepthTestEnable(gfxstream_commandBuffer->internal_object, depthTestEnable,
2713                                        true /* do lock */);
2714     }
2715 }
gfxstream_vk_CmdSetDepthWriteEnable(VkCommandBuffer commandBuffer,VkBool32 depthWriteEnable)2716 void gfxstream_vk_CmdSetDepthWriteEnable(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable) {
2717     MESA_TRACE_SCOPE("vkCmdSetDepthWriteEnable");
2718     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2719     {
2720         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2721             gfxstream_commandBuffer->internal_object);
2722         vkEnc->vkCmdSetDepthWriteEnable(gfxstream_commandBuffer->internal_object, depthWriteEnable,
2723                                         true /* do lock */);
2724     }
2725 }
gfxstream_vk_CmdSetDepthCompareOp(VkCommandBuffer commandBuffer,VkCompareOp depthCompareOp)2726 void gfxstream_vk_CmdSetDepthCompareOp(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp) {
2727     MESA_TRACE_SCOPE("vkCmdSetDepthCompareOp");
2728     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2729     {
2730         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2731             gfxstream_commandBuffer->internal_object);
2732         vkEnc->vkCmdSetDepthCompareOp(gfxstream_commandBuffer->internal_object, depthCompareOp,
2733                                       true /* do lock */);
2734     }
2735 }
gfxstream_vk_CmdSetDepthBoundsTestEnable(VkCommandBuffer commandBuffer,VkBool32 depthBoundsTestEnable)2736 void gfxstream_vk_CmdSetDepthBoundsTestEnable(VkCommandBuffer commandBuffer,
2737                                               VkBool32 depthBoundsTestEnable) {
2738     MESA_TRACE_SCOPE("vkCmdSetDepthBoundsTestEnable");
2739     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2740     {
2741         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2742             gfxstream_commandBuffer->internal_object);
2743         vkEnc->vkCmdSetDepthBoundsTestEnable(gfxstream_commandBuffer->internal_object,
2744                                              depthBoundsTestEnable, true /* do lock */);
2745     }
2746 }
gfxstream_vk_CmdSetStencilTestEnable(VkCommandBuffer commandBuffer,VkBool32 stencilTestEnable)2747 void gfxstream_vk_CmdSetStencilTestEnable(VkCommandBuffer commandBuffer,
2748                                           VkBool32 stencilTestEnable) {
2749     MESA_TRACE_SCOPE("vkCmdSetStencilTestEnable");
2750     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2751     {
2752         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2753             gfxstream_commandBuffer->internal_object);
2754         vkEnc->vkCmdSetStencilTestEnable(gfxstream_commandBuffer->internal_object,
2755                                          stencilTestEnable, true /* do lock */);
2756     }
2757 }
gfxstream_vk_CmdSetStencilOp(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,VkStencilOp failOp,VkStencilOp passOp,VkStencilOp depthFailOp,VkCompareOp compareOp)2758 void gfxstream_vk_CmdSetStencilOp(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask,
2759                                   VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp,
2760                                   VkCompareOp compareOp) {
2761     MESA_TRACE_SCOPE("vkCmdSetStencilOp");
2762     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2763     {
2764         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2765             gfxstream_commandBuffer->internal_object);
2766         vkEnc->vkCmdSetStencilOp(gfxstream_commandBuffer->internal_object, faceMask, failOp, passOp,
2767                                  depthFailOp, compareOp, true /* do lock */);
2768     }
2769 }
gfxstream_vk_CmdSetRasterizerDiscardEnable(VkCommandBuffer commandBuffer,VkBool32 rasterizerDiscardEnable)2770 void gfxstream_vk_CmdSetRasterizerDiscardEnable(VkCommandBuffer commandBuffer,
2771                                                 VkBool32 rasterizerDiscardEnable) {
2772     MESA_TRACE_SCOPE("vkCmdSetRasterizerDiscardEnable");
2773     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2774     {
2775         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2776             gfxstream_commandBuffer->internal_object);
2777         vkEnc->vkCmdSetRasterizerDiscardEnable(gfxstream_commandBuffer->internal_object,
2778                                                rasterizerDiscardEnable, true /* do lock */);
2779     }
2780 }
gfxstream_vk_CmdSetDepthBiasEnable(VkCommandBuffer commandBuffer,VkBool32 depthBiasEnable)2781 void gfxstream_vk_CmdSetDepthBiasEnable(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable) {
2782     MESA_TRACE_SCOPE("vkCmdSetDepthBiasEnable");
2783     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2784     {
2785         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2786             gfxstream_commandBuffer->internal_object);
2787         vkEnc->vkCmdSetDepthBiasEnable(gfxstream_commandBuffer->internal_object, depthBiasEnable,
2788                                        true /* do lock */);
2789     }
2790 }
gfxstream_vk_CmdSetPrimitiveRestartEnable(VkCommandBuffer commandBuffer,VkBool32 primitiveRestartEnable)2791 void gfxstream_vk_CmdSetPrimitiveRestartEnable(VkCommandBuffer commandBuffer,
2792                                                VkBool32 primitiveRestartEnable) {
2793     MESA_TRACE_SCOPE("vkCmdSetPrimitiveRestartEnable");
2794     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2795     {
2796         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2797             gfxstream_commandBuffer->internal_object);
2798         vkEnc->vkCmdSetPrimitiveRestartEnable(gfxstream_commandBuffer->internal_object,
2799                                               primitiveRestartEnable, true /* do lock */);
2800     }
2801 }
gfxstream_vk_GetDeviceBufferMemoryRequirements(VkDevice device,const VkDeviceBufferMemoryRequirements * pInfo,VkMemoryRequirements2 * pMemoryRequirements)2802 void gfxstream_vk_GetDeviceBufferMemoryRequirements(VkDevice device,
2803                                                     const VkDeviceBufferMemoryRequirements* pInfo,
2804                                                     VkMemoryRequirements2* pMemoryRequirements) {
2805     MESA_TRACE_SCOPE("vkGetDeviceBufferMemoryRequirements");
2806     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
2807     {
2808         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2809         vkEnc->vkGetDeviceBufferMemoryRequirements(gfxstream_device->internal_object, pInfo,
2810                                                    pMemoryRequirements, true /* do lock */);
2811     }
2812 }
gfxstream_vk_GetDeviceImageMemoryRequirements(VkDevice device,const VkDeviceImageMemoryRequirements * pInfo,VkMemoryRequirements2 * pMemoryRequirements)2813 void gfxstream_vk_GetDeviceImageMemoryRequirements(VkDevice device,
2814                                                    const VkDeviceImageMemoryRequirements* pInfo,
2815                                                    VkMemoryRequirements2* pMemoryRequirements) {
2816     MESA_TRACE_SCOPE("vkGetDeviceImageMemoryRequirements");
2817     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
2818     {
2819         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2820         vkEnc->vkGetDeviceImageMemoryRequirements(gfxstream_device->internal_object, pInfo,
2821                                                   pMemoryRequirements, true /* do lock */);
2822     }
2823 }
gfxstream_vk_GetDeviceImageSparseMemoryRequirements(VkDevice device,const VkDeviceImageMemoryRequirements * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)2824 void gfxstream_vk_GetDeviceImageSparseMemoryRequirements(
2825     VkDevice device, const VkDeviceImageMemoryRequirements* pInfo,
2826     uint32_t* pSparseMemoryRequirementCount,
2827     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
2828     MESA_TRACE_SCOPE("vkGetDeviceImageSparseMemoryRequirements");
2829     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
2830     {
2831         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2832         vkEnc->vkGetDeviceImageSparseMemoryRequirements(
2833             gfxstream_device->internal_object, pInfo, pSparseMemoryRequirementCount,
2834             pSparseMemoryRequirements, true /* do lock */);
2835     }
2836 }
2837 #endif
2838 #ifdef VK_KHR_android_surface
gfxstream_vk_CreateAndroidSurfaceKHR(VkInstance instance,const VkAndroidSurfaceCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSurfaceKHR * pSurface)2839 VkResult gfxstream_vk_CreateAndroidSurfaceKHR(VkInstance instance,
2840                                               const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
2841                                               const VkAllocationCallbacks* pAllocator,
2842                                               VkSurfaceKHR* pSurface) {
2843     MESA_TRACE_SCOPE("vkCreateAndroidSurfaceKHR");
2844     VkResult vkCreateAndroidSurfaceKHR_VkResult_return = (VkResult)0;
2845     VK_FROM_HANDLE(gfxstream_vk_instance, gfxstream_instance, instance);
2846     {
2847         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2848         vkCreateAndroidSurfaceKHR_VkResult_return =
2849             vkEnc->vkCreateAndroidSurfaceKHR(gfxstream_instance->internal_object, pCreateInfo,
2850                                              pAllocator, pSurface, true /* do lock */);
2851     }
2852     return vkCreateAndroidSurfaceKHR_VkResult_return;
2853 }
2854 #endif
2855 #ifdef VK_KHR_dynamic_rendering
gfxstream_vk_CmdBeginRenderingKHR(VkCommandBuffer commandBuffer,const VkRenderingInfo * pRenderingInfo)2856 void gfxstream_vk_CmdBeginRenderingKHR(VkCommandBuffer commandBuffer,
2857                                        const VkRenderingInfo* pRenderingInfo) {
2858     MESA_TRACE_SCOPE("vkCmdBeginRenderingKHR");
2859     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2860     {
2861         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2862             gfxstream_commandBuffer->internal_object);
2863         vkEnc->vkCmdBeginRenderingKHR(gfxstream_commandBuffer->internal_object, pRenderingInfo,
2864                                       true /* do lock */);
2865     }
2866 }
gfxstream_vk_CmdEndRenderingKHR(VkCommandBuffer commandBuffer)2867 void gfxstream_vk_CmdEndRenderingKHR(VkCommandBuffer commandBuffer) {
2868     MESA_TRACE_SCOPE("vkCmdEndRenderingKHR");
2869     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
2870     {
2871         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
2872             gfxstream_commandBuffer->internal_object);
2873         vkEnc->vkCmdEndRenderingKHR(gfxstream_commandBuffer->internal_object, true /* do lock */);
2874     }
2875 }
2876 #endif
2877 #ifdef VK_KHR_get_physical_device_properties2
gfxstream_vk_GetPhysicalDeviceFeatures2KHR(VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures2 * pFeatures)2878 void gfxstream_vk_GetPhysicalDeviceFeatures2KHR(VkPhysicalDevice physicalDevice,
2879                                                 VkPhysicalDeviceFeatures2* pFeatures) {
2880     MESA_TRACE_SCOPE("vkGetPhysicalDeviceFeatures2KHR");
2881     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
2882     {
2883         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2884         vkEnc->vkGetPhysicalDeviceFeatures2KHR(gfxstream_physicalDevice->internal_object, pFeatures,
2885                                                true /* do lock */);
2886     }
2887 }
gfxstream_vk_GetPhysicalDeviceProperties2KHR(VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties2 * pProperties)2888 void gfxstream_vk_GetPhysicalDeviceProperties2KHR(VkPhysicalDevice physicalDevice,
2889                                                   VkPhysicalDeviceProperties2* pProperties) {
2890     MESA_TRACE_SCOPE("vkGetPhysicalDeviceProperties2KHR");
2891     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
2892     {
2893         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2894         vkEnc->vkGetPhysicalDeviceProperties2KHR(gfxstream_physicalDevice->internal_object,
2895                                                  pProperties, true /* do lock */);
2896     }
2897 }
gfxstream_vk_GetPhysicalDeviceFormatProperties2KHR(VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties2 * pFormatProperties)2898 void gfxstream_vk_GetPhysicalDeviceFormatProperties2KHR(VkPhysicalDevice physicalDevice,
2899                                                         VkFormat format,
2900                                                         VkFormatProperties2* pFormatProperties) {
2901     MESA_TRACE_SCOPE("vkGetPhysicalDeviceFormatProperties2KHR");
2902     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
2903     {
2904         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2905         vkEnc->vkGetPhysicalDeviceFormatProperties2KHR(gfxstream_physicalDevice->internal_object,
2906                                                        format, pFormatProperties,
2907                                                        true /* do lock */);
2908     }
2909 }
gfxstream_vk_GetPhysicalDeviceImageFormatProperties2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo,VkImageFormatProperties2 * pImageFormatProperties)2910 VkResult gfxstream_vk_GetPhysicalDeviceImageFormatProperties2KHR(
2911     VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
2912     VkImageFormatProperties2* pImageFormatProperties) {
2913     MESA_TRACE_SCOPE("vkGetPhysicalDeviceImageFormatProperties2KHR");
2914     VkResult vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return = (VkResult)0;
2915     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
2916     {
2917         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2918         auto resources = gfxstream::vk::ResourceTracker::get();
2919         vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return =
2920             resources->on_vkGetPhysicalDeviceImageFormatProperties2KHR(
2921                 vkEnc, VK_SUCCESS, gfxstream_physicalDevice->internal_object, pImageFormatInfo,
2922                 pImageFormatProperties);
2923     }
2924     return vkGetPhysicalDeviceImageFormatProperties2KHR_VkResult_return;
2925 }
gfxstream_vk_GetPhysicalDeviceQueueFamilyProperties2KHR(VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties2 * pQueueFamilyProperties)2926 void gfxstream_vk_GetPhysicalDeviceQueueFamilyProperties2KHR(
2927     VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount,
2928     VkQueueFamilyProperties2* pQueueFamilyProperties) {
2929     MESA_TRACE_SCOPE("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
2930     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
2931     {
2932         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2933         vkEnc->vkGetPhysicalDeviceQueueFamilyProperties2KHR(
2934             gfxstream_physicalDevice->internal_object, pQueueFamilyPropertyCount,
2935             pQueueFamilyProperties, true /* do lock */);
2936     }
2937 }
gfxstream_vk_GetPhysicalDeviceMemoryProperties2KHR(VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties2 * pMemoryProperties)2938 void gfxstream_vk_GetPhysicalDeviceMemoryProperties2KHR(
2939     VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) {
2940     MESA_TRACE_SCOPE("vkGetPhysicalDeviceMemoryProperties2KHR");
2941     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
2942     {
2943         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2944         vkEnc->vkGetPhysicalDeviceMemoryProperties2KHR(gfxstream_physicalDevice->internal_object,
2945                                                        pMemoryProperties, true /* do lock */);
2946     }
2947 }
gfxstream_vk_GetPhysicalDeviceSparseImageFormatProperties2KHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo,uint32_t * pPropertyCount,VkSparseImageFormatProperties2 * pProperties)2948 void gfxstream_vk_GetPhysicalDeviceSparseImageFormatProperties2KHR(
2949     VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
2950     uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties) {
2951     MESA_TRACE_SCOPE("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
2952     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
2953     {
2954         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2955         vkEnc->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
2956             gfxstream_physicalDevice->internal_object, pFormatInfo, pPropertyCount, pProperties,
2957             true /* do lock */);
2958     }
2959 }
2960 #endif
2961 #ifdef VK_KHR_maintenance1
gfxstream_vk_TrimCommandPoolKHR(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)2962 void gfxstream_vk_TrimCommandPoolKHR(VkDevice device, VkCommandPool commandPool,
2963                                      VkCommandPoolTrimFlags flags) {
2964     MESA_TRACE_SCOPE("vkTrimCommandPoolKHR");
2965     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
2966     VK_FROM_HANDLE(gfxstream_vk_command_pool, gfxstream_commandPool, commandPool);
2967     {
2968         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2969         vkEnc->vkTrimCommandPoolKHR(gfxstream_device->internal_object,
2970                                     gfxstream_commandPool->internal_object, flags,
2971                                     true /* do lock */);
2972     }
2973 }
2974 #endif
2975 #ifdef VK_KHR_external_memory_capabilities
gfxstream_vk_GetPhysicalDeviceExternalBufferPropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo,VkExternalBufferProperties * pExternalBufferProperties)2976 void gfxstream_vk_GetPhysicalDeviceExternalBufferPropertiesKHR(
2977     VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
2978     VkExternalBufferProperties* pExternalBufferProperties) {
2979     MESA_TRACE_SCOPE("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
2980     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
2981     {
2982         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2983         auto resources = gfxstream::vk::ResourceTracker::get();
2984         resources->on_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
2985             vkEnc, gfxstream_physicalDevice->internal_object, pExternalBufferInfo,
2986             pExternalBufferProperties);
2987     }
2988 }
2989 #endif
2990 #ifdef VK_KHR_external_memory_fd
gfxstream_vk_GetMemoryFdKHR(VkDevice device,const VkMemoryGetFdInfoKHR * pGetFdInfo,int * pFd)2991 VkResult gfxstream_vk_GetMemoryFdKHR(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo,
2992                                      int* pFd) {
2993     MESA_TRACE_SCOPE("vkGetMemoryFdKHR");
2994     VkResult vkGetMemoryFdKHR_VkResult_return = (VkResult)0;
2995     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
2996     {
2997         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
2998         auto resources = gfxstream::vk::ResourceTracker::get();
2999         vkGetMemoryFdKHR_VkResult_return = resources->on_vkGetMemoryFdKHR(
3000             vkEnc, VK_SUCCESS, gfxstream_device->internal_object, pGetFdInfo, pFd);
3001     }
3002     return vkGetMemoryFdKHR_VkResult_return;
3003 }
gfxstream_vk_GetMemoryFdPropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,int fd,VkMemoryFdPropertiesKHR * pMemoryFdProperties)3004 VkResult gfxstream_vk_GetMemoryFdPropertiesKHR(VkDevice device,
3005                                                VkExternalMemoryHandleTypeFlagBits handleType,
3006                                                int fd,
3007                                                VkMemoryFdPropertiesKHR* pMemoryFdProperties) {
3008     MESA_TRACE_SCOPE("vkGetMemoryFdPropertiesKHR");
3009     VkResult vkGetMemoryFdPropertiesKHR_VkResult_return = (VkResult)0;
3010     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3011     {
3012         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3013         auto resources = gfxstream::vk::ResourceTracker::get();
3014         vkGetMemoryFdPropertiesKHR_VkResult_return = resources->on_vkGetMemoryFdPropertiesKHR(
3015             vkEnc, VK_SUCCESS, gfxstream_device->internal_object, handleType, fd,
3016             pMemoryFdProperties);
3017     }
3018     return vkGetMemoryFdPropertiesKHR_VkResult_return;
3019 }
3020 #endif
3021 #ifdef VK_KHR_external_semaphore_capabilities
gfxstream_vk_GetPhysicalDeviceExternalSemaphorePropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo,VkExternalSemaphoreProperties * pExternalSemaphoreProperties)3022 void gfxstream_vk_GetPhysicalDeviceExternalSemaphorePropertiesKHR(
3023     VkPhysicalDevice physicalDevice,
3024     const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
3025     VkExternalSemaphoreProperties* pExternalSemaphoreProperties) {
3026     MESA_TRACE_SCOPE("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
3027     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
3028     {
3029         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3030         vkEnc->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
3031             gfxstream_physicalDevice->internal_object, pExternalSemaphoreInfo,
3032             pExternalSemaphoreProperties, true /* do lock */);
3033     }
3034 }
3035 #endif
3036 #ifdef VK_KHR_external_semaphore_fd
gfxstream_vk_ImportSemaphoreFdKHR(VkDevice device,const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo)3037 VkResult gfxstream_vk_ImportSemaphoreFdKHR(
3038     VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) {
3039     MESA_TRACE_SCOPE("vkImportSemaphoreFdKHR");
3040     VkResult vkImportSemaphoreFdKHR_VkResult_return = (VkResult)0;
3041     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3042     {
3043         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3044         std::vector<VkImportSemaphoreFdInfoKHR> internal_pImportSemaphoreFdInfo(1);
3045         for (uint32_t i = 0; i < 1; ++i) {
3046             internal_pImportSemaphoreFdInfo[i] = pImportSemaphoreFdInfo[i];
3047             /* VkImportSemaphoreFdInfoKHR::semaphore */
3048             VK_FROM_HANDLE(gfxstream_vk_semaphore, gfxstream_semaphore,
3049                            internal_pImportSemaphoreFdInfo[i].semaphore);
3050             internal_pImportSemaphoreFdInfo[i].semaphore = gfxstream_semaphore->internal_object;
3051         }
3052         auto resources = gfxstream::vk::ResourceTracker::get();
3053         vkImportSemaphoreFdKHR_VkResult_return = resources->on_vkImportSemaphoreFdKHR(
3054             vkEnc, VK_SUCCESS, gfxstream_device->internal_object,
3055             internal_pImportSemaphoreFdInfo.data());
3056     }
3057     return vkImportSemaphoreFdKHR_VkResult_return;
3058 }
gfxstream_vk_GetSemaphoreFdKHR(VkDevice device,const VkSemaphoreGetFdInfoKHR * pGetFdInfo,int * pFd)3059 VkResult gfxstream_vk_GetSemaphoreFdKHR(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
3060                                         int* pFd) {
3061     MESA_TRACE_SCOPE("vkGetSemaphoreFdKHR");
3062     VkResult vkGetSemaphoreFdKHR_VkResult_return = (VkResult)0;
3063     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3064     {
3065         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3066         std::vector<VkSemaphoreGetFdInfoKHR> internal_pGetFdInfo(1);
3067         for (uint32_t i = 0; i < 1; ++i) {
3068             internal_pGetFdInfo[i] = pGetFdInfo[i];
3069             /* VkSemaphoreGetFdInfoKHR::semaphore */
3070             VK_FROM_HANDLE(gfxstream_vk_semaphore, gfxstream_semaphore,
3071                            internal_pGetFdInfo[i].semaphore);
3072             internal_pGetFdInfo[i].semaphore = gfxstream_semaphore->internal_object;
3073         }
3074         auto resources = gfxstream::vk::ResourceTracker::get();
3075         vkGetSemaphoreFdKHR_VkResult_return = resources->on_vkGetSemaphoreFdKHR(
3076             vkEnc, VK_SUCCESS, gfxstream_device->internal_object, internal_pGetFdInfo.data(), pFd);
3077     }
3078     return vkGetSemaphoreFdKHR_VkResult_return;
3079 }
3080 #endif
3081 #ifdef VK_KHR_descriptor_update_template
gfxstream_vk_CreateDescriptorUpdateTemplateKHR(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)3082 VkResult gfxstream_vk_CreateDescriptorUpdateTemplateKHR(
3083     VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3084     const VkAllocationCallbacks* pAllocator,
3085     VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) {
3086     MESA_TRACE_SCOPE("vkCreateDescriptorUpdateTemplateKHR");
3087     VkResult vkCreateDescriptorUpdateTemplateKHR_VkResult_return = (VkResult)0;
3088     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3089     {
3090         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3091         vkCreateDescriptorUpdateTemplateKHR_VkResult_return =
3092             vkEnc->vkCreateDescriptorUpdateTemplateKHR(
3093                 gfxstream_device->internal_object, pCreateInfo, pAllocator,
3094                 pDescriptorUpdateTemplate, true /* do lock */);
3095     }
3096     return vkCreateDescriptorUpdateTemplateKHR_VkResult_return;
3097 }
gfxstream_vk_DestroyDescriptorUpdateTemplateKHR(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)3098 void gfxstream_vk_DestroyDescriptorUpdateTemplateKHR(
3099     VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3100     const VkAllocationCallbacks* pAllocator) {
3101     MESA_TRACE_SCOPE("vkDestroyDescriptorUpdateTemplateKHR");
3102     if (VK_NULL_HANDLE == descriptorUpdateTemplate) {
3103         return;
3104     }
3105     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3106     {
3107         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3108         vkEnc->vkDestroyDescriptorUpdateTemplateKHR(gfxstream_device->internal_object,
3109                                                     descriptorUpdateTemplate, pAllocator,
3110                                                     true /* do lock */);
3111     }
3112 }
gfxstream_vk_UpdateDescriptorSetWithTemplateKHR(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)3113 void gfxstream_vk_UpdateDescriptorSetWithTemplateKHR(
3114     VkDevice device, VkDescriptorSet descriptorSet,
3115     VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) {
3116     MESA_TRACE_SCOPE("vkUpdateDescriptorSetWithTemplateKHR");
3117     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3118     {
3119         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3120         auto resources = gfxstream::vk::ResourceTracker::get();
3121         resources->on_vkUpdateDescriptorSetWithTemplateKHR(vkEnc, gfxstream_device->internal_object,
3122                                                            descriptorSet, descriptorUpdateTemplate,
3123                                                            pData);
3124     }
3125 }
3126 #endif
3127 #ifdef VK_KHR_create_renderpass2
gfxstream_vk_CreateRenderPass2KHR(VkDevice device,const VkRenderPassCreateInfo2 * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)3128 VkResult gfxstream_vk_CreateRenderPass2KHR(VkDevice device,
3129                                            const VkRenderPassCreateInfo2* pCreateInfo,
3130                                            const VkAllocationCallbacks* pAllocator,
3131                                            VkRenderPass* pRenderPass) {
3132     MESA_TRACE_SCOPE("vkCreateRenderPass2KHR");
3133     VkResult vkCreateRenderPass2KHR_VkResult_return = (VkResult)0;
3134     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3135     {
3136         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3137         vkCreateRenderPass2KHR_VkResult_return =
3138             vkEnc->vkCreateRenderPass2KHR(gfxstream_device->internal_object, pCreateInfo,
3139                                           pAllocator, pRenderPass, true /* do lock */);
3140     }
3141     return vkCreateRenderPass2KHR_VkResult_return;
3142 }
gfxstream_vk_CmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,const VkSubpassBeginInfo * pSubpassBeginInfo)3143 void gfxstream_vk_CmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer,
3144                                          const VkRenderPassBeginInfo* pRenderPassBegin,
3145                                          const VkSubpassBeginInfo* pSubpassBeginInfo) {
3146     MESA_TRACE_SCOPE("vkCmdBeginRenderPass2KHR");
3147     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
3148     {
3149         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
3150             gfxstream_commandBuffer->internal_object);
3151         vkEnc->vkCmdBeginRenderPass2KHR(gfxstream_commandBuffer->internal_object, pRenderPassBegin,
3152                                         pSubpassBeginInfo, true /* do lock */);
3153     }
3154 }
gfxstream_vk_CmdNextSubpass2KHR(VkCommandBuffer commandBuffer,const VkSubpassBeginInfo * pSubpassBeginInfo,const VkSubpassEndInfo * pSubpassEndInfo)3155 void gfxstream_vk_CmdNextSubpass2KHR(VkCommandBuffer commandBuffer,
3156                                      const VkSubpassBeginInfo* pSubpassBeginInfo,
3157                                      const VkSubpassEndInfo* pSubpassEndInfo) {
3158     MESA_TRACE_SCOPE("vkCmdNextSubpass2KHR");
3159     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
3160     {
3161         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
3162             gfxstream_commandBuffer->internal_object);
3163         vkEnc->vkCmdNextSubpass2KHR(gfxstream_commandBuffer->internal_object, pSubpassBeginInfo,
3164                                     pSubpassEndInfo, true /* do lock */);
3165     }
3166 }
gfxstream_vk_CmdEndRenderPass2KHR(VkCommandBuffer commandBuffer,const VkSubpassEndInfo * pSubpassEndInfo)3167 void gfxstream_vk_CmdEndRenderPass2KHR(VkCommandBuffer commandBuffer,
3168                                        const VkSubpassEndInfo* pSubpassEndInfo) {
3169     MESA_TRACE_SCOPE("vkCmdEndRenderPass2KHR");
3170     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
3171     {
3172         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
3173             gfxstream_commandBuffer->internal_object);
3174         vkEnc->vkCmdEndRenderPass2KHR(gfxstream_commandBuffer->internal_object, pSubpassEndInfo,
3175                                       true /* do lock */);
3176     }
3177 }
3178 #endif
3179 #ifdef VK_KHR_external_fence_capabilities
gfxstream_vk_GetPhysicalDeviceExternalFencePropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo,VkExternalFenceProperties * pExternalFenceProperties)3180 void gfxstream_vk_GetPhysicalDeviceExternalFencePropertiesKHR(
3181     VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
3182     VkExternalFenceProperties* pExternalFenceProperties) {
3183     MESA_TRACE_SCOPE("vkGetPhysicalDeviceExternalFencePropertiesKHR");
3184     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
3185     {
3186         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3187         auto resources = gfxstream::vk::ResourceTracker::get();
3188         resources->on_vkGetPhysicalDeviceExternalFencePropertiesKHR(
3189             vkEnc, gfxstream_physicalDevice->internal_object, pExternalFenceInfo,
3190             pExternalFenceProperties);
3191     }
3192 }
3193 #endif
3194 #ifdef VK_KHR_external_fence_fd
gfxstream_vk_ImportFenceFdKHR(VkDevice device,const VkImportFenceFdInfoKHR * pImportFenceFdInfo)3195 VkResult gfxstream_vk_ImportFenceFdKHR(VkDevice device,
3196                                        const VkImportFenceFdInfoKHR* pImportFenceFdInfo) {
3197     MESA_TRACE_SCOPE("vkImportFenceFdKHR");
3198     VkResult vkImportFenceFdKHR_VkResult_return = (VkResult)0;
3199     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3200     {
3201         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3202         std::vector<VkImportFenceFdInfoKHR> internal_pImportFenceFdInfo(1);
3203         for (uint32_t i = 0; i < 1; ++i) {
3204             internal_pImportFenceFdInfo[i] = pImportFenceFdInfo[i];
3205             /* VkImportFenceFdInfoKHR::fence */
3206             VK_FROM_HANDLE(gfxstream_vk_fence, gfxstream_fence,
3207                            internal_pImportFenceFdInfo[i].fence);
3208             internal_pImportFenceFdInfo[i].fence = gfxstream_fence->internal_object;
3209         }
3210         auto resources = gfxstream::vk::ResourceTracker::get();
3211         vkImportFenceFdKHR_VkResult_return =
3212             resources->on_vkImportFenceFdKHR(vkEnc, VK_SUCCESS, gfxstream_device->internal_object,
3213                                              internal_pImportFenceFdInfo.data());
3214     }
3215     return vkImportFenceFdKHR_VkResult_return;
3216 }
gfxstream_vk_GetFenceFdKHR(VkDevice device,const VkFenceGetFdInfoKHR * pGetFdInfo,int * pFd)3217 VkResult gfxstream_vk_GetFenceFdKHR(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo,
3218                                     int* pFd) {
3219     MESA_TRACE_SCOPE("vkGetFenceFdKHR");
3220     VkResult vkGetFenceFdKHR_VkResult_return = (VkResult)0;
3221     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3222     {
3223         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3224         std::vector<VkFenceGetFdInfoKHR> internal_pGetFdInfo(1);
3225         for (uint32_t i = 0; i < 1; ++i) {
3226             internal_pGetFdInfo[i] = pGetFdInfo[i];
3227             /* VkFenceGetFdInfoKHR::fence */
3228             VK_FROM_HANDLE(gfxstream_vk_fence, gfxstream_fence, internal_pGetFdInfo[i].fence);
3229             internal_pGetFdInfo[i].fence = gfxstream_fence->internal_object;
3230         }
3231         auto resources = gfxstream::vk::ResourceTracker::get();
3232         vkGetFenceFdKHR_VkResult_return = resources->on_vkGetFenceFdKHR(
3233             vkEnc, VK_SUCCESS, gfxstream_device->internal_object, internal_pGetFdInfo.data(), pFd);
3234     }
3235     return vkGetFenceFdKHR_VkResult_return;
3236 }
3237 #endif
3238 #ifdef VK_KHR_get_memory_requirements2
gfxstream_vk_GetImageMemoryRequirements2KHR(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3239 void gfxstream_vk_GetImageMemoryRequirements2KHR(VkDevice device,
3240                                                  const VkImageMemoryRequirementsInfo2* pInfo,
3241                                                  VkMemoryRequirements2* pMemoryRequirements) {
3242     MESA_TRACE_SCOPE("vkGetImageMemoryRequirements2KHR");
3243     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3244     {
3245         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3246         auto resources = gfxstream::vk::ResourceTracker::get();
3247         resources->on_vkGetImageMemoryRequirements2KHR(vkEnc, gfxstream_device->internal_object,
3248                                                        pInfo, pMemoryRequirements);
3249     }
3250 }
gfxstream_vk_GetBufferMemoryRequirements2KHR(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3251 void gfxstream_vk_GetBufferMemoryRequirements2KHR(VkDevice device,
3252                                                   const VkBufferMemoryRequirementsInfo2* pInfo,
3253                                                   VkMemoryRequirements2* pMemoryRequirements) {
3254     MESA_TRACE_SCOPE("vkGetBufferMemoryRequirements2KHR");
3255     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3256     {
3257         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3258         std::vector<VkBufferMemoryRequirementsInfo2> internal_pInfo(1);
3259         for (uint32_t i = 0; i < 1; ++i) {
3260             internal_pInfo[i] = pInfo[i];
3261             /* VkBufferMemoryRequirementsInfo2::buffer */
3262             VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer, internal_pInfo[i].buffer);
3263             internal_pInfo[i].buffer = gfxstream_buffer->internal_object;
3264         }
3265         auto resources = gfxstream::vk::ResourceTracker::get();
3266         resources->on_vkGetBufferMemoryRequirements2KHR(vkEnc, gfxstream_device->internal_object,
3267                                                         internal_pInfo.data(), pMemoryRequirements);
3268     }
3269 }
gfxstream_vk_GetImageSparseMemoryRequirements2KHR(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)3270 void gfxstream_vk_GetImageSparseMemoryRequirements2KHR(
3271     VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo,
3272     uint32_t* pSparseMemoryRequirementCount,
3273     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
3274     MESA_TRACE_SCOPE("vkGetImageSparseMemoryRequirements2KHR");
3275     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3276     {
3277         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3278         vkEnc->vkGetImageSparseMemoryRequirements2KHR(
3279             gfxstream_device->internal_object, pInfo, pSparseMemoryRequirementCount,
3280             pSparseMemoryRequirements, true /* do lock */);
3281     }
3282 }
3283 #endif
3284 #ifdef VK_KHR_sampler_ycbcr_conversion
gfxstream_vk_CreateSamplerYcbcrConversionKHR(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)3285 VkResult gfxstream_vk_CreateSamplerYcbcrConversionKHR(
3286     VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
3287     const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion) {
3288     MESA_TRACE_SCOPE("vkCreateSamplerYcbcrConversionKHR");
3289     VkResult vkCreateSamplerYcbcrConversionKHR_VkResult_return = (VkResult)0;
3290     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3291     {
3292         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3293         auto resources = gfxstream::vk::ResourceTracker::get();
3294         vkCreateSamplerYcbcrConversionKHR_VkResult_return =
3295             resources->on_vkCreateSamplerYcbcrConversionKHR(
3296                 vkEnc, VK_SUCCESS, gfxstream_device->internal_object, pCreateInfo, pAllocator,
3297                 pYcbcrConversion);
3298     }
3299     return vkCreateSamplerYcbcrConversionKHR_VkResult_return;
3300 }
gfxstream_vk_DestroySamplerYcbcrConversionKHR(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)3301 void gfxstream_vk_DestroySamplerYcbcrConversionKHR(VkDevice device,
3302                                                    VkSamplerYcbcrConversion ycbcrConversion,
3303                                                    const VkAllocationCallbacks* pAllocator) {
3304     MESA_TRACE_SCOPE("vkDestroySamplerYcbcrConversionKHR");
3305     if (VK_NULL_HANDLE == ycbcrConversion) {
3306         return;
3307     }
3308     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3309     {
3310         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3311         auto resources = gfxstream::vk::ResourceTracker::get();
3312         resources->on_vkDestroySamplerYcbcrConversionKHR(vkEnc, gfxstream_device->internal_object,
3313                                                          ycbcrConversion, pAllocator);
3314     }
3315 }
3316 #endif
3317 #ifdef VK_KHR_bind_memory2
gfxstream_vk_BindBufferMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)3318 VkResult gfxstream_vk_BindBufferMemory2KHR(VkDevice device, uint32_t bindInfoCount,
3319                                            const VkBindBufferMemoryInfo* pBindInfos) {
3320     MESA_TRACE_SCOPE("vkBindBufferMemory2KHR");
3321     VkResult vkBindBufferMemory2KHR_VkResult_return = (VkResult)0;
3322     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3323     {
3324         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3325         std::vector<VkBindBufferMemoryInfo> internal_pBindInfos(bindInfoCount);
3326         for (uint32_t i = 0; i < bindInfoCount; ++i) {
3327             internal_pBindInfos[i] = pBindInfos[i];
3328             /* VkBindBufferMemoryInfo::buffer */
3329             VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer, internal_pBindInfos[i].buffer);
3330             internal_pBindInfos[i].buffer = gfxstream_buffer->internal_object;
3331         }
3332         auto resources = gfxstream::vk::ResourceTracker::get();
3333         vkBindBufferMemory2KHR_VkResult_return = resources->on_vkBindBufferMemory2KHR(
3334             vkEnc, VK_SUCCESS, gfxstream_device->internal_object, bindInfoCount,
3335             internal_pBindInfos.data());
3336     }
3337     return vkBindBufferMemory2KHR_VkResult_return;
3338 }
gfxstream_vk_BindImageMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)3339 VkResult gfxstream_vk_BindImageMemory2KHR(VkDevice device, uint32_t bindInfoCount,
3340                                           const VkBindImageMemoryInfo* pBindInfos) {
3341     MESA_TRACE_SCOPE("vkBindImageMemory2KHR");
3342     VkResult vkBindImageMemory2KHR_VkResult_return = (VkResult)0;
3343     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3344     {
3345         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3346         auto resources = gfxstream::vk::ResourceTracker::get();
3347         vkBindImageMemory2KHR_VkResult_return = resources->on_vkBindImageMemory2KHR(
3348             vkEnc, VK_SUCCESS, gfxstream_device->internal_object, bindInfoCount, pBindInfos);
3349     }
3350     return vkBindImageMemory2KHR_VkResult_return;
3351 }
3352 #endif
3353 #ifdef VK_KHR_maintenance3
gfxstream_vk_GetDescriptorSetLayoutSupportKHR(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)3354 void gfxstream_vk_GetDescriptorSetLayoutSupportKHR(
3355     VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
3356     VkDescriptorSetLayoutSupport* pSupport) {
3357     MESA_TRACE_SCOPE("vkGetDescriptorSetLayoutSupportKHR");
3358     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3359     {
3360         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3361         vkEnc->vkGetDescriptorSetLayoutSupportKHR(gfxstream_device->internal_object, pCreateInfo,
3362                                                   pSupport, true /* do lock */);
3363     }
3364 }
3365 #endif
3366 #ifdef VK_KHR_buffer_device_address
gfxstream_vk_GetBufferDeviceAddressKHR(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)3367 VkDeviceAddress gfxstream_vk_GetBufferDeviceAddressKHR(VkDevice device,
3368                                                        const VkBufferDeviceAddressInfo* pInfo) {
3369     MESA_TRACE_SCOPE("vkGetBufferDeviceAddressKHR");
3370     VkDeviceAddress vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = (VkDeviceAddress)0;
3371     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3372     {
3373         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3374         std::vector<VkBufferDeviceAddressInfo> internal_pInfo(1);
3375         for (uint32_t i = 0; i < 1; ++i) {
3376             internal_pInfo[i] = pInfo[i];
3377             /* VkBufferDeviceAddressInfo::buffer */
3378             VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer, internal_pInfo[i].buffer);
3379             internal_pInfo[i].buffer = gfxstream_buffer->internal_object;
3380         }
3381         vkGetBufferDeviceAddressKHR_VkDeviceAddress_return = vkEnc->vkGetBufferDeviceAddressKHR(
3382             gfxstream_device->internal_object, internal_pInfo.data(), true /* do lock */);
3383     }
3384     return vkGetBufferDeviceAddressKHR_VkDeviceAddress_return;
3385 }
gfxstream_vk_GetBufferOpaqueCaptureAddressKHR(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)3386 uint64_t gfxstream_vk_GetBufferOpaqueCaptureAddressKHR(VkDevice device,
3387                                                        const VkBufferDeviceAddressInfo* pInfo) {
3388     MESA_TRACE_SCOPE("vkGetBufferOpaqueCaptureAddressKHR");
3389     uint64_t vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
3390     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3391     {
3392         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3393         std::vector<VkBufferDeviceAddressInfo> internal_pInfo(1);
3394         for (uint32_t i = 0; i < 1; ++i) {
3395             internal_pInfo[i] = pInfo[i];
3396             /* VkBufferDeviceAddressInfo::buffer */
3397             VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer, internal_pInfo[i].buffer);
3398             internal_pInfo[i].buffer = gfxstream_buffer->internal_object;
3399         }
3400         vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return =
3401             vkEnc->vkGetBufferOpaqueCaptureAddressKHR(gfxstream_device->internal_object,
3402                                                       internal_pInfo.data(), true /* do lock */);
3403     }
3404     return vkGetBufferOpaqueCaptureAddressKHR_uint64_t_return;
3405 }
gfxstream_vk_GetDeviceMemoryOpaqueCaptureAddressKHR(VkDevice device,const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo)3406 uint64_t gfxstream_vk_GetDeviceMemoryOpaqueCaptureAddressKHR(
3407     VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) {
3408     MESA_TRACE_SCOPE("vkGetDeviceMemoryOpaqueCaptureAddressKHR");
3409     uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return = (uint64_t)0;
3410     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3411     {
3412         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3413         vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return =
3414             vkEnc->vkGetDeviceMemoryOpaqueCaptureAddressKHR(gfxstream_device->internal_object,
3415                                                             pInfo, true /* do lock */);
3416     }
3417     return vkGetDeviceMemoryOpaqueCaptureAddressKHR_uint64_t_return;
3418 }
3419 #endif
3420 #ifdef VK_KHR_pipeline_executable_properties
gfxstream_vk_GetPipelineExecutablePropertiesKHR(VkDevice device,const VkPipelineInfoKHR * pPipelineInfo,uint32_t * pExecutableCount,VkPipelineExecutablePropertiesKHR * pProperties)3421 VkResult gfxstream_vk_GetPipelineExecutablePropertiesKHR(
3422     VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount,
3423     VkPipelineExecutablePropertiesKHR* pProperties) {
3424     MESA_TRACE_SCOPE("vkGetPipelineExecutablePropertiesKHR");
3425     VkResult vkGetPipelineExecutablePropertiesKHR_VkResult_return = (VkResult)0;
3426     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3427     {
3428         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3429         vkGetPipelineExecutablePropertiesKHR_VkResult_return =
3430             vkEnc->vkGetPipelineExecutablePropertiesKHR(gfxstream_device->internal_object,
3431                                                         pPipelineInfo, pExecutableCount,
3432                                                         pProperties, true /* do lock */);
3433     }
3434     return vkGetPipelineExecutablePropertiesKHR_VkResult_return;
3435 }
gfxstream_vk_GetPipelineExecutableStatisticsKHR(VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pStatisticCount,VkPipelineExecutableStatisticKHR * pStatistics)3436 VkResult gfxstream_vk_GetPipelineExecutableStatisticsKHR(
3437     VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount,
3438     VkPipelineExecutableStatisticKHR* pStatistics) {
3439     MESA_TRACE_SCOPE("vkGetPipelineExecutableStatisticsKHR");
3440     VkResult vkGetPipelineExecutableStatisticsKHR_VkResult_return = (VkResult)0;
3441     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3442     {
3443         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3444         vkGetPipelineExecutableStatisticsKHR_VkResult_return =
3445             vkEnc->vkGetPipelineExecutableStatisticsKHR(gfxstream_device->internal_object,
3446                                                         pExecutableInfo, pStatisticCount,
3447                                                         pStatistics, true /* do lock */);
3448     }
3449     return vkGetPipelineExecutableStatisticsKHR_VkResult_return;
3450 }
gfxstream_vk_GetPipelineExecutableInternalRepresentationsKHR(VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pInternalRepresentationCount,VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations)3451 VkResult gfxstream_vk_GetPipelineExecutableInternalRepresentationsKHR(
3452     VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo,
3453     uint32_t* pInternalRepresentationCount,
3454     VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) {
3455     MESA_TRACE_SCOPE("vkGetPipelineExecutableInternalRepresentationsKHR");
3456     VkResult vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return = (VkResult)0;
3457     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3458     {
3459         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3460         vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return =
3461             vkEnc->vkGetPipelineExecutableInternalRepresentationsKHR(
3462                 gfxstream_device->internal_object, pExecutableInfo, pInternalRepresentationCount,
3463                 pInternalRepresentations, true /* do lock */);
3464     }
3465     return vkGetPipelineExecutableInternalRepresentationsKHR_VkResult_return;
3466 }
3467 #endif
3468 #ifdef VK_KHR_synchronization2
gfxstream_vk_CmdSetEvent2KHR(VkCommandBuffer commandBuffer,VkEvent event,const VkDependencyInfo * pDependencyInfo)3469 void gfxstream_vk_CmdSetEvent2KHR(VkCommandBuffer commandBuffer, VkEvent event,
3470                                   const VkDependencyInfo* pDependencyInfo) {
3471     MESA_TRACE_SCOPE("vkCmdSetEvent2KHR");
3472     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
3473     {
3474         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
3475             gfxstream_commandBuffer->internal_object);
3476         std::vector<VkDependencyInfo> internal_pDependencyInfo(1);
3477         std::vector<std::vector<VkBufferMemoryBarrier2>>
3478             internal_VkDependencyInfo_pBufferMemoryBarriers;
3479         for (uint32_t i = 0; i < 1; ++i) {
3480             internal_pDependencyInfo[i] = pDependencyInfo[i];
3481             /* VkDependencyInfo::pBufferMemoryBarriers */
3482             internal_VkDependencyInfo_pBufferMemoryBarriers.push_back(
3483                 std::vector<VkBufferMemoryBarrier2>());
3484             internal_VkDependencyInfo_pBufferMemoryBarriers[i].resize(
3485                 internal_pDependencyInfo[i].bufferMemoryBarrierCount);
3486             for (uint32_t j = 0; j < internal_pDependencyInfo[i].bufferMemoryBarrierCount; ++j) {
3487                 internal_VkDependencyInfo_pBufferMemoryBarriers[i][j] =
3488                     internal_pDependencyInfo[i].pBufferMemoryBarriers[j];
3489                 /* VkBufferMemoryBarrier2::buffer */
3490                 VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer,
3491                                internal_VkDependencyInfo_pBufferMemoryBarriers[i][j].buffer);
3492                 internal_VkDependencyInfo_pBufferMemoryBarriers[i][j].buffer =
3493                     gfxstream_buffer->internal_object;
3494             }
3495             internal_pDependencyInfo[i].pBufferMemoryBarriers =
3496                 internal_VkDependencyInfo_pBufferMemoryBarriers[i].data();
3497         }
3498         vkEnc->vkCmdSetEvent2KHR(gfxstream_commandBuffer->internal_object, event,
3499                                  internal_pDependencyInfo.data(), true /* do lock */);
3500     }
3501 }
gfxstream_vk_CmdResetEvent2KHR(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags2 stageMask)3502 void gfxstream_vk_CmdResetEvent2KHR(VkCommandBuffer commandBuffer, VkEvent event,
3503                                     VkPipelineStageFlags2 stageMask) {
3504     MESA_TRACE_SCOPE("vkCmdResetEvent2KHR");
3505     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
3506     {
3507         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
3508             gfxstream_commandBuffer->internal_object);
3509         vkEnc->vkCmdResetEvent2KHR(gfxstream_commandBuffer->internal_object, event, stageMask,
3510                                    true /* do lock */);
3511     }
3512 }
gfxstream_vk_CmdWaitEvents2KHR(VkCommandBuffer commandBuffer,uint32_t eventCount,const VkEvent * pEvents,const VkDependencyInfo * pDependencyInfos)3513 void gfxstream_vk_CmdWaitEvents2KHR(VkCommandBuffer commandBuffer, uint32_t eventCount,
3514                                     const VkEvent* pEvents,
3515                                     const VkDependencyInfo* pDependencyInfos) {
3516     MESA_TRACE_SCOPE("vkCmdWaitEvents2KHR");
3517     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
3518     {
3519         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
3520             gfxstream_commandBuffer->internal_object);
3521         std::vector<VkDependencyInfo> internal_pDependencyInfos(eventCount);
3522         std::vector<std::vector<VkBufferMemoryBarrier2>>
3523             internal_VkDependencyInfo_pBufferMemoryBarriers;
3524         for (uint32_t i = 0; i < eventCount; ++i) {
3525             internal_pDependencyInfos[i] = pDependencyInfos[i];
3526             /* VkDependencyInfo::pBufferMemoryBarriers */
3527             internal_VkDependencyInfo_pBufferMemoryBarriers.push_back(
3528                 std::vector<VkBufferMemoryBarrier2>());
3529             internal_VkDependencyInfo_pBufferMemoryBarriers[i].resize(
3530                 internal_pDependencyInfos[i].bufferMemoryBarrierCount);
3531             for (uint32_t j = 0; j < internal_pDependencyInfos[i].bufferMemoryBarrierCount; ++j) {
3532                 internal_VkDependencyInfo_pBufferMemoryBarriers[i][j] =
3533                     internal_pDependencyInfos[i].pBufferMemoryBarriers[j];
3534                 /* VkBufferMemoryBarrier2::buffer */
3535                 VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer,
3536                                internal_VkDependencyInfo_pBufferMemoryBarriers[i][j].buffer);
3537                 internal_VkDependencyInfo_pBufferMemoryBarriers[i][j].buffer =
3538                     gfxstream_buffer->internal_object;
3539             }
3540             internal_pDependencyInfos[i].pBufferMemoryBarriers =
3541                 internal_VkDependencyInfo_pBufferMemoryBarriers[i].data();
3542         }
3543         vkEnc->vkCmdWaitEvents2KHR(gfxstream_commandBuffer->internal_object, eventCount, pEvents,
3544                                    internal_pDependencyInfos.data(), true /* do lock */);
3545     }
3546 }
gfxstream_vk_CmdPipelineBarrier2KHR(VkCommandBuffer commandBuffer,const VkDependencyInfo * pDependencyInfo)3547 void gfxstream_vk_CmdPipelineBarrier2KHR(VkCommandBuffer commandBuffer,
3548                                          const VkDependencyInfo* pDependencyInfo) {
3549     MESA_TRACE_SCOPE("vkCmdPipelineBarrier2KHR");
3550     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
3551     {
3552         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
3553             gfxstream_commandBuffer->internal_object);
3554         std::vector<VkDependencyInfo> internal_pDependencyInfo(1);
3555         std::vector<std::vector<VkBufferMemoryBarrier2>>
3556             internal_VkDependencyInfo_pBufferMemoryBarriers;
3557         for (uint32_t i = 0; i < 1; ++i) {
3558             internal_pDependencyInfo[i] = pDependencyInfo[i];
3559             /* VkDependencyInfo::pBufferMemoryBarriers */
3560             internal_VkDependencyInfo_pBufferMemoryBarriers.push_back(
3561                 std::vector<VkBufferMemoryBarrier2>());
3562             internal_VkDependencyInfo_pBufferMemoryBarriers[i].resize(
3563                 internal_pDependencyInfo[i].bufferMemoryBarrierCount);
3564             for (uint32_t j = 0; j < internal_pDependencyInfo[i].bufferMemoryBarrierCount; ++j) {
3565                 internal_VkDependencyInfo_pBufferMemoryBarriers[i][j] =
3566                     internal_pDependencyInfo[i].pBufferMemoryBarriers[j];
3567                 /* VkBufferMemoryBarrier2::buffer */
3568                 VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer,
3569                                internal_VkDependencyInfo_pBufferMemoryBarriers[i][j].buffer);
3570                 internal_VkDependencyInfo_pBufferMemoryBarriers[i][j].buffer =
3571                     gfxstream_buffer->internal_object;
3572             }
3573             internal_pDependencyInfo[i].pBufferMemoryBarriers =
3574                 internal_VkDependencyInfo_pBufferMemoryBarriers[i].data();
3575         }
3576         vkEnc->vkCmdPipelineBarrier2KHR(gfxstream_commandBuffer->internal_object,
3577                                         internal_pDependencyInfo.data(), true /* do lock */);
3578     }
3579 }
gfxstream_vk_CmdWriteTimestamp2KHR(VkCommandBuffer commandBuffer,VkPipelineStageFlags2 stage,VkQueryPool queryPool,uint32_t query)3580 void gfxstream_vk_CmdWriteTimestamp2KHR(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage,
3581                                         VkQueryPool queryPool, uint32_t query) {
3582     MESA_TRACE_SCOPE("vkCmdWriteTimestamp2KHR");
3583     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
3584     {
3585         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
3586             gfxstream_commandBuffer->internal_object);
3587         vkEnc->vkCmdWriteTimestamp2KHR(gfxstream_commandBuffer->internal_object, stage, queryPool,
3588                                        query, true /* do lock */);
3589     }
3590 }
gfxstream_vk_QueueSubmit2KHR(VkQueue queue,uint32_t submitCount,const VkSubmitInfo2 * pSubmits,VkFence fence)3591 VkResult gfxstream_vk_QueueSubmit2KHR(VkQueue queue, uint32_t submitCount,
3592                                       const VkSubmitInfo2* pSubmits, VkFence fence) {
3593     MESA_TRACE_SCOPE("vkQueueSubmit2KHR");
3594     VkResult vkQueueSubmit2KHR_VkResult_return = (VkResult)0;
3595     VK_FROM_HANDLE(gfxstream_vk_queue, gfxstream_queue, queue);
3596     VK_FROM_HANDLE(gfxstream_vk_fence, gfxstream_fence, fence);
3597     {
3598         auto vkEnc =
3599             gfxstream::vk::ResourceTracker::getQueueEncoder(gfxstream_queue->internal_object);
3600         std::vector<VkSubmitInfo2> internal_pSubmits(submitCount);
3601         std::vector<std::vector<VkSemaphoreSubmitInfo>> internal_VkSubmitInfo2_pWaitSemaphoreInfos;
3602         std::vector<std::vector<VkCommandBufferSubmitInfo>>
3603             internal_VkSubmitInfo2_pCommandBufferInfos;
3604         std::vector<std::vector<VkSemaphoreSubmitInfo>>
3605             internal_VkSubmitInfo2_pSignalSemaphoreInfos;
3606         for (uint32_t i = 0; i < submitCount; ++i) {
3607             internal_pSubmits[i] = pSubmits[i];
3608             /* VkSubmitInfo2::pWaitSemaphoreInfos */
3609             internal_VkSubmitInfo2_pWaitSemaphoreInfos.push_back(
3610                 std::vector<VkSemaphoreSubmitInfo>());
3611             internal_VkSubmitInfo2_pWaitSemaphoreInfos[i] =
3612                 transformVkSemaphoreSubmitInfoList(internal_pSubmits[i].pWaitSemaphoreInfos,
3613                                                    internal_pSubmits[i].waitSemaphoreInfoCount);
3614             internal_pSubmits[i].pWaitSemaphoreInfos =
3615                 internal_VkSubmitInfo2_pWaitSemaphoreInfos[i].data();
3616             internal_pSubmits[i].waitSemaphoreInfoCount =
3617                 internal_VkSubmitInfo2_pWaitSemaphoreInfos[i].size();
3618             /* VkSubmitInfo2::pCommandBufferInfos */
3619             internal_VkSubmitInfo2_pCommandBufferInfos.push_back(
3620                 std::vector<VkCommandBufferSubmitInfo>());
3621             internal_VkSubmitInfo2_pCommandBufferInfos[i].resize(
3622                 internal_pSubmits[i].commandBufferInfoCount);
3623             for (uint32_t j = 0; j < internal_pSubmits[i].commandBufferInfoCount; ++j) {
3624                 internal_VkSubmitInfo2_pCommandBufferInfos[i][j] =
3625                     internal_pSubmits[i].pCommandBufferInfos[j];
3626                 /* VkCommandBufferSubmitInfo::commandBuffer */
3627                 VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer,
3628                                internal_VkSubmitInfo2_pCommandBufferInfos[i][j].commandBuffer);
3629                 internal_VkSubmitInfo2_pCommandBufferInfos[i][j].commandBuffer =
3630                     gfxstream_commandBuffer->internal_object;
3631             }
3632             internal_pSubmits[i].pCommandBufferInfos =
3633                 internal_VkSubmitInfo2_pCommandBufferInfos[i].data();
3634             /* VkSubmitInfo2::pSignalSemaphoreInfos */
3635             internal_VkSubmitInfo2_pSignalSemaphoreInfos.push_back(
3636                 std::vector<VkSemaphoreSubmitInfo>());
3637             internal_VkSubmitInfo2_pSignalSemaphoreInfos[i] =
3638                 transformVkSemaphoreSubmitInfoList(internal_pSubmits[i].pSignalSemaphoreInfos,
3639                                                    internal_pSubmits[i].signalSemaphoreInfoCount);
3640             internal_pSubmits[i].pSignalSemaphoreInfos =
3641                 internal_VkSubmitInfo2_pSignalSemaphoreInfos[i].data();
3642             internal_pSubmits[i].signalSemaphoreInfoCount =
3643                 internal_VkSubmitInfo2_pSignalSemaphoreInfos[i].size();
3644         }
3645         vkQueueSubmit2KHR_VkResult_return = vkEnc->vkQueueSubmit2KHR(
3646             gfxstream_queue->internal_object, submitCount, internal_pSubmits.data(),
3647             gfxstream_fence ? gfxstream_fence->internal_object : VK_NULL_HANDLE,
3648             true /* do lock */);
3649     }
3650     return vkQueueSubmit2KHR_VkResult_return;
3651 }
gfxstream_vk_CmdWriteBufferMarker2AMD(VkCommandBuffer commandBuffer,VkPipelineStageFlags2 stage,VkBuffer dstBuffer,VkDeviceSize dstOffset,uint32_t marker)3652 void gfxstream_vk_CmdWriteBufferMarker2AMD(VkCommandBuffer commandBuffer,
3653                                            VkPipelineStageFlags2 stage, VkBuffer dstBuffer,
3654                                            VkDeviceSize dstOffset, uint32_t marker) {
3655     MESA_TRACE_SCOPE("vkCmdWriteBufferMarker2AMD");
3656     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
3657     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_dstBuffer, dstBuffer);
3658     {
3659         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
3660             gfxstream_commandBuffer->internal_object);
3661         vkEnc->vkCmdWriteBufferMarker2AMD(gfxstream_commandBuffer->internal_object, stage,
3662                                           gfxstream_dstBuffer->internal_object, dstOffset, marker,
3663                                           true /* do lock */);
3664     }
3665 }
gfxstream_vk_GetQueueCheckpointData2NV(VkQueue queue,uint32_t * pCheckpointDataCount,VkCheckpointData2NV * pCheckpointData)3666 void gfxstream_vk_GetQueueCheckpointData2NV(VkQueue queue, uint32_t* pCheckpointDataCount,
3667                                             VkCheckpointData2NV* pCheckpointData) {
3668     MESA_TRACE_SCOPE("vkGetQueueCheckpointData2NV");
3669     VK_FROM_HANDLE(gfxstream_vk_queue, gfxstream_queue, queue);
3670     {
3671         auto vkEnc =
3672             gfxstream::vk::ResourceTracker::getQueueEncoder(gfxstream_queue->internal_object);
3673         vkEnc->vkGetQueueCheckpointData2NV(gfxstream_queue->internal_object, pCheckpointDataCount,
3674                                            pCheckpointData, true /* do lock */);
3675     }
3676 }
3677 #endif
3678 #ifdef VK_KHR_copy_commands2
gfxstream_vk_CmdCopyBuffer2KHR(VkCommandBuffer commandBuffer,const VkCopyBufferInfo2 * pCopyBufferInfo)3679 void gfxstream_vk_CmdCopyBuffer2KHR(VkCommandBuffer commandBuffer,
3680                                     const VkCopyBufferInfo2* pCopyBufferInfo) {
3681     MESA_TRACE_SCOPE("vkCmdCopyBuffer2KHR");
3682     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
3683     {
3684         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
3685             gfxstream_commandBuffer->internal_object);
3686         std::vector<VkCopyBufferInfo2> internal_pCopyBufferInfo(1);
3687         for (uint32_t i = 0; i < 1; ++i) {
3688             internal_pCopyBufferInfo[i] = pCopyBufferInfo[i];
3689             /* VkCopyBufferInfo2::srcBuffer */
3690             VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_srcBuffer,
3691                            internal_pCopyBufferInfo[i].srcBuffer);
3692             internal_pCopyBufferInfo[i].srcBuffer = gfxstream_srcBuffer->internal_object;
3693             /* VkCopyBufferInfo2::dstBuffer */
3694             VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_dstBuffer,
3695                            internal_pCopyBufferInfo[i].dstBuffer);
3696             internal_pCopyBufferInfo[i].dstBuffer = gfxstream_dstBuffer->internal_object;
3697         }
3698         vkEnc->vkCmdCopyBuffer2KHR(gfxstream_commandBuffer->internal_object,
3699                                    internal_pCopyBufferInfo.data(), true /* do lock */);
3700     }
3701 }
gfxstream_vk_CmdCopyImage2KHR(VkCommandBuffer commandBuffer,const VkCopyImageInfo2 * pCopyImageInfo)3702 void gfxstream_vk_CmdCopyImage2KHR(VkCommandBuffer commandBuffer,
3703                                    const VkCopyImageInfo2* pCopyImageInfo) {
3704     MESA_TRACE_SCOPE("vkCmdCopyImage2KHR");
3705     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
3706     {
3707         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
3708             gfxstream_commandBuffer->internal_object);
3709         vkEnc->vkCmdCopyImage2KHR(gfxstream_commandBuffer->internal_object, pCopyImageInfo,
3710                                   true /* do lock */);
3711     }
3712 }
gfxstream_vk_CmdCopyBufferToImage2KHR(VkCommandBuffer commandBuffer,const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo)3713 void gfxstream_vk_CmdCopyBufferToImage2KHR(VkCommandBuffer commandBuffer,
3714                                            const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo) {
3715     MESA_TRACE_SCOPE("vkCmdCopyBufferToImage2KHR");
3716     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
3717     {
3718         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
3719             gfxstream_commandBuffer->internal_object);
3720         std::vector<VkCopyBufferToImageInfo2> internal_pCopyBufferToImageInfo(1);
3721         for (uint32_t i = 0; i < 1; ++i) {
3722             internal_pCopyBufferToImageInfo[i] = pCopyBufferToImageInfo[i];
3723             /* VkCopyBufferToImageInfo2::srcBuffer */
3724             VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_srcBuffer,
3725                            internal_pCopyBufferToImageInfo[i].srcBuffer);
3726             internal_pCopyBufferToImageInfo[i].srcBuffer = gfxstream_srcBuffer->internal_object;
3727         }
3728         vkEnc->vkCmdCopyBufferToImage2KHR(gfxstream_commandBuffer->internal_object,
3729                                           internal_pCopyBufferToImageInfo.data(),
3730                                           true /* do lock */);
3731     }
3732 }
gfxstream_vk_CmdCopyImageToBuffer2KHR(VkCommandBuffer commandBuffer,const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo)3733 void gfxstream_vk_CmdCopyImageToBuffer2KHR(VkCommandBuffer commandBuffer,
3734                                            const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo) {
3735     MESA_TRACE_SCOPE("vkCmdCopyImageToBuffer2KHR");
3736     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
3737     {
3738         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
3739             gfxstream_commandBuffer->internal_object);
3740         std::vector<VkCopyImageToBufferInfo2> internal_pCopyImageToBufferInfo(1);
3741         for (uint32_t i = 0; i < 1; ++i) {
3742             internal_pCopyImageToBufferInfo[i] = pCopyImageToBufferInfo[i];
3743             /* VkCopyImageToBufferInfo2::dstBuffer */
3744             VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_dstBuffer,
3745                            internal_pCopyImageToBufferInfo[i].dstBuffer);
3746             internal_pCopyImageToBufferInfo[i].dstBuffer = gfxstream_dstBuffer->internal_object;
3747         }
3748         vkEnc->vkCmdCopyImageToBuffer2KHR(gfxstream_commandBuffer->internal_object,
3749                                           internal_pCopyImageToBufferInfo.data(),
3750                                           true /* do lock */);
3751     }
3752 }
gfxstream_vk_CmdBlitImage2KHR(VkCommandBuffer commandBuffer,const VkBlitImageInfo2 * pBlitImageInfo)3753 void gfxstream_vk_CmdBlitImage2KHR(VkCommandBuffer commandBuffer,
3754                                    const VkBlitImageInfo2* pBlitImageInfo) {
3755     MESA_TRACE_SCOPE("vkCmdBlitImage2KHR");
3756     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
3757     {
3758         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
3759             gfxstream_commandBuffer->internal_object);
3760         vkEnc->vkCmdBlitImage2KHR(gfxstream_commandBuffer->internal_object, pBlitImageInfo,
3761                                   true /* do lock */);
3762     }
3763 }
gfxstream_vk_CmdResolveImage2KHR(VkCommandBuffer commandBuffer,const VkResolveImageInfo2 * pResolveImageInfo)3764 void gfxstream_vk_CmdResolveImage2KHR(VkCommandBuffer commandBuffer,
3765                                       const VkResolveImageInfo2* pResolveImageInfo) {
3766     MESA_TRACE_SCOPE("vkCmdResolveImage2KHR");
3767     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
3768     {
3769         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
3770             gfxstream_commandBuffer->internal_object);
3771         vkEnc->vkCmdResolveImage2KHR(gfxstream_commandBuffer->internal_object, pResolveImageInfo,
3772                                      true /* do lock */);
3773     }
3774 }
3775 #endif
3776 #ifdef VK_KHR_maintenance4
gfxstream_vk_GetDeviceBufferMemoryRequirementsKHR(VkDevice device,const VkDeviceBufferMemoryRequirements * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3777 void gfxstream_vk_GetDeviceBufferMemoryRequirementsKHR(
3778     VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo,
3779     VkMemoryRequirements2* pMemoryRequirements) {
3780     MESA_TRACE_SCOPE("vkGetDeviceBufferMemoryRequirementsKHR");
3781     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3782     {
3783         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3784         vkEnc->vkGetDeviceBufferMemoryRequirementsKHR(gfxstream_device->internal_object, pInfo,
3785                                                       pMemoryRequirements, true /* do lock */);
3786     }
3787 }
gfxstream_vk_GetDeviceImageMemoryRequirementsKHR(VkDevice device,const VkDeviceImageMemoryRequirements * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3788 void gfxstream_vk_GetDeviceImageMemoryRequirementsKHR(VkDevice device,
3789                                                       const VkDeviceImageMemoryRequirements* pInfo,
3790                                                       VkMemoryRequirements2* pMemoryRequirements) {
3791     MESA_TRACE_SCOPE("vkGetDeviceImageMemoryRequirementsKHR");
3792     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3793     {
3794         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3795         vkEnc->vkGetDeviceImageMemoryRequirementsKHR(gfxstream_device->internal_object, pInfo,
3796                                                      pMemoryRequirements, true /* do lock */);
3797     }
3798 }
gfxstream_vk_GetDeviceImageSparseMemoryRequirementsKHR(VkDevice device,const VkDeviceImageMemoryRequirements * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)3799 void gfxstream_vk_GetDeviceImageSparseMemoryRequirementsKHR(
3800     VkDevice device, const VkDeviceImageMemoryRequirements* pInfo,
3801     uint32_t* pSparseMemoryRequirementCount,
3802     VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
3803     MESA_TRACE_SCOPE("vkGetDeviceImageSparseMemoryRequirementsKHR");
3804     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3805     {
3806         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3807         vkEnc->vkGetDeviceImageSparseMemoryRequirementsKHR(
3808             gfxstream_device->internal_object, pInfo, pSparseMemoryRequirementCount,
3809             pSparseMemoryRequirements, true /* do lock */);
3810     }
3811 }
3812 #endif
3813 #ifdef VK_KHR_maintenance5
gfxstream_vk_CmdBindIndexBuffer2KHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkDeviceSize size,VkIndexType indexType)3814 void gfxstream_vk_CmdBindIndexBuffer2KHR(VkCommandBuffer commandBuffer, VkBuffer buffer,
3815                                          VkDeviceSize offset, VkDeviceSize size,
3816                                          VkIndexType indexType) {
3817     MESA_TRACE_SCOPE("vkCmdBindIndexBuffer2KHR");
3818     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
3819     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer, buffer);
3820     {
3821         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
3822             gfxstream_commandBuffer->internal_object);
3823         vkEnc->vkCmdBindIndexBuffer2KHR(
3824             gfxstream_commandBuffer->internal_object,
3825             gfxstream_buffer ? gfxstream_buffer->internal_object : VK_NULL_HANDLE, offset, size,
3826             indexType, true /* do lock */);
3827     }
3828 }
gfxstream_vk_GetRenderingAreaGranularityKHR(VkDevice device,const VkRenderingAreaInfoKHR * pRenderingAreaInfo,VkExtent2D * pGranularity)3829 void gfxstream_vk_GetRenderingAreaGranularityKHR(VkDevice device,
3830                                                  const VkRenderingAreaInfoKHR* pRenderingAreaInfo,
3831                                                  VkExtent2D* pGranularity) {
3832     MESA_TRACE_SCOPE("vkGetRenderingAreaGranularityKHR");
3833     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3834     {
3835         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3836         vkEnc->vkGetRenderingAreaGranularityKHR(gfxstream_device->internal_object,
3837                                                 pRenderingAreaInfo, pGranularity,
3838                                                 true /* do lock */);
3839     }
3840 }
gfxstream_vk_GetDeviceImageSubresourceLayoutKHR(VkDevice device,const VkDeviceImageSubresourceInfoKHR * pInfo,VkSubresourceLayout2KHR * pLayout)3841 void gfxstream_vk_GetDeviceImageSubresourceLayoutKHR(VkDevice device,
3842                                                      const VkDeviceImageSubresourceInfoKHR* pInfo,
3843                                                      VkSubresourceLayout2KHR* pLayout) {
3844     MESA_TRACE_SCOPE("vkGetDeviceImageSubresourceLayoutKHR");
3845     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3846     {
3847         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3848         vkEnc->vkGetDeviceImageSubresourceLayoutKHR(gfxstream_device->internal_object, pInfo,
3849                                                     pLayout, true /* do lock */);
3850     }
3851 }
gfxstream_vk_GetImageSubresourceLayout2KHR(VkDevice device,VkImage image,const VkImageSubresource2KHR * pSubresource,VkSubresourceLayout2KHR * pLayout)3852 void gfxstream_vk_GetImageSubresourceLayout2KHR(VkDevice device, VkImage image,
3853                                                 const VkImageSubresource2KHR* pSubresource,
3854                                                 VkSubresourceLayout2KHR* pLayout) {
3855     MESA_TRACE_SCOPE("vkGetImageSubresourceLayout2KHR");
3856     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3857     {
3858         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3859         vkEnc->vkGetImageSubresourceLayout2KHR(gfxstream_device->internal_object, image,
3860                                                pSubresource, pLayout, true /* do lock */);
3861     }
3862 }
3863 #endif
3864 #ifdef VK_KHR_line_rasterization
gfxstream_vk_CmdSetLineStippleKHR(VkCommandBuffer commandBuffer,uint32_t lineStippleFactor,uint16_t lineStipplePattern)3865 void gfxstream_vk_CmdSetLineStippleKHR(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor,
3866                                        uint16_t lineStipplePattern) {
3867     MESA_TRACE_SCOPE("vkCmdSetLineStippleKHR");
3868     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
3869     {
3870         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
3871             gfxstream_commandBuffer->internal_object);
3872         vkEnc->vkCmdSetLineStippleKHR(gfxstream_commandBuffer->internal_object, lineStippleFactor,
3873                                       lineStipplePattern, true /* do lock */);
3874     }
3875 }
3876 #endif
3877 #ifdef VK_ANDROID_native_buffer
gfxstream_vk_GetSwapchainGrallocUsageANDROID(VkDevice device,VkFormat format,VkImageUsageFlags imageUsage,int * grallocUsage)3878 VkResult gfxstream_vk_GetSwapchainGrallocUsageANDROID(VkDevice device, VkFormat format,
3879                                                       VkImageUsageFlags imageUsage,
3880                                                       int* grallocUsage) {
3881     MESA_TRACE_SCOPE("vkGetSwapchainGrallocUsageANDROID");
3882     VkResult vkGetSwapchainGrallocUsageANDROID_VkResult_return = (VkResult)0;
3883     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3884     {
3885         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3886         vkGetSwapchainGrallocUsageANDROID_VkResult_return =
3887             vkEnc->vkGetSwapchainGrallocUsageANDROID(gfxstream_device->internal_object, format,
3888                                                      imageUsage, grallocUsage, true /* do lock */);
3889     }
3890     return vkGetSwapchainGrallocUsageANDROID_VkResult_return;
3891 }
gfxstream_vk_AcquireImageANDROID(VkDevice device,VkImage image,int nativeFenceFd,VkSemaphore semaphore,VkFence fence)3892 VkResult gfxstream_vk_AcquireImageANDROID(VkDevice device, VkImage image, int nativeFenceFd,
3893                                           VkSemaphore semaphore, VkFence fence) {
3894     MESA_TRACE_SCOPE("vkAcquireImageANDROID");
3895     VkResult vkAcquireImageANDROID_VkResult_return = (VkResult)0;
3896     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3897     VK_FROM_HANDLE(gfxstream_vk_semaphore, gfxstream_semaphore, semaphore);
3898     VK_FROM_HANDLE(gfxstream_vk_fence, gfxstream_fence, fence);
3899     {
3900         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3901         vkAcquireImageANDROID_VkResult_return = vkEnc->vkAcquireImageANDROID(
3902             gfxstream_device->internal_object, image, nativeFenceFd,
3903             gfxstream_semaphore ? gfxstream_semaphore->internal_object : VK_NULL_HANDLE,
3904             gfxstream_fence ? gfxstream_fence->internal_object : VK_NULL_HANDLE,
3905             true /* do lock */);
3906     }
3907     return vkAcquireImageANDROID_VkResult_return;
3908 }
gfxstream_vk_QueueSignalReleaseImageANDROID(VkQueue queue,uint32_t waitSemaphoreCount,const VkSemaphore * pWaitSemaphores,VkImage image,int * pNativeFenceFd)3909 VkResult gfxstream_vk_QueueSignalReleaseImageANDROID(VkQueue queue, uint32_t waitSemaphoreCount,
3910                                                      const VkSemaphore* pWaitSemaphores,
3911                                                      VkImage image, int* pNativeFenceFd) {
3912     MESA_TRACE_SCOPE("vkQueueSignalReleaseImageANDROID");
3913     VkResult vkQueueSignalReleaseImageANDROID_VkResult_return = (VkResult)0;
3914     VK_FROM_HANDLE(gfxstream_vk_queue, gfxstream_queue, queue);
3915     {
3916         auto vkEnc =
3917             gfxstream::vk::ResourceTracker::getQueueEncoder(gfxstream_queue->internal_object);
3918         std::vector<VkSemaphore> internal_pWaitSemaphores(waitSemaphoreCount);
3919         internal_pWaitSemaphores = transformVkSemaphoreList(pWaitSemaphores, waitSemaphoreCount);
3920         pWaitSemaphores = internal_pWaitSemaphores.data();
3921         waitSemaphoreCount = internal_pWaitSemaphores.size();
3922         auto resources = gfxstream::vk::ResourceTracker::get();
3923         vkQueueSignalReleaseImageANDROID_VkResult_return =
3924             resources->on_vkQueueSignalReleaseImageANDROID(
3925                 vkEnc, VK_SUCCESS, gfxstream_queue->internal_object, waitSemaphoreCount,
3926                 internal_pWaitSemaphores.data(), image, pNativeFenceFd);
3927     }
3928     return vkQueueSignalReleaseImageANDROID_VkResult_return;
3929 }
gfxstream_vk_GetSwapchainGrallocUsage2ANDROID(VkDevice device,VkFormat format,VkImageUsageFlags imageUsage,VkSwapchainImageUsageFlagsANDROID swapchainImageUsage,uint64_t * grallocConsumerUsage,uint64_t * grallocProducerUsage)3930 VkResult gfxstream_vk_GetSwapchainGrallocUsage2ANDROID(
3931     VkDevice device, VkFormat format, VkImageUsageFlags imageUsage,
3932     VkSwapchainImageUsageFlagsANDROID swapchainImageUsage, uint64_t* grallocConsumerUsage,
3933     uint64_t* grallocProducerUsage) {
3934     MESA_TRACE_SCOPE("vkGetSwapchainGrallocUsage2ANDROID");
3935     VkResult vkGetSwapchainGrallocUsage2ANDROID_VkResult_return = (VkResult)0;
3936     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
3937     {
3938         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
3939         vkGetSwapchainGrallocUsage2ANDROID_VkResult_return =
3940             vkEnc->vkGetSwapchainGrallocUsage2ANDROID(
3941                 gfxstream_device->internal_object, format, imageUsage, swapchainImageUsage,
3942                 grallocConsumerUsage, grallocProducerUsage, true /* do lock */);
3943     }
3944     return vkGetSwapchainGrallocUsage2ANDROID_VkResult_return;
3945 }
3946 #endif
3947 #ifdef VK_EXT_transform_feedback
gfxstream_vk_CmdBindTransformFeedbackBuffersEXT(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets,const VkDeviceSize * pSizes)3948 void gfxstream_vk_CmdBindTransformFeedbackBuffersEXT(VkCommandBuffer commandBuffer,
3949                                                      uint32_t firstBinding, uint32_t bindingCount,
3950                                                      const VkBuffer* pBuffers,
3951                                                      const VkDeviceSize* pOffsets,
3952                                                      const VkDeviceSize* pSizes) {
3953     MESA_TRACE_SCOPE("vkCmdBindTransformFeedbackBuffersEXT");
3954     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
3955     {
3956         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
3957             gfxstream_commandBuffer->internal_object);
3958         std::vector<VkBuffer> internal_pBuffers(bindingCount);
3959         for (uint32_t i = 0; i < bindingCount; ++i) {
3960             VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_pBuffers, pBuffers[i]);
3961             internal_pBuffers[i] = gfxstream_pBuffers->internal_object;
3962         }
3963         vkEnc->vkCmdBindTransformFeedbackBuffersEXT(
3964             gfxstream_commandBuffer->internal_object, firstBinding, bindingCount,
3965             internal_pBuffers.data(), pOffsets, pSizes, true /* do lock */);
3966     }
3967 }
gfxstream_vk_CmdEndTransformFeedbackEXT(VkCommandBuffer commandBuffer,uint32_t firstCounterBuffer,uint32_t counterBufferCount,const VkBuffer * pCounterBuffers,const VkDeviceSize * pCounterBufferOffsets)3968 void gfxstream_vk_CmdEndTransformFeedbackEXT(VkCommandBuffer commandBuffer,
3969                                              uint32_t firstCounterBuffer,
3970                                              uint32_t counterBufferCount,
3971                                              const VkBuffer* pCounterBuffers,
3972                                              const VkDeviceSize* pCounterBufferOffsets) {
3973     MESA_TRACE_SCOPE("vkCmdEndTransformFeedbackEXT");
3974     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
3975     {
3976         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
3977             gfxstream_commandBuffer->internal_object);
3978         std::vector<VkBuffer> internal_pCounterBuffers(counterBufferCount);
3979         for (uint32_t i = 0; i < counterBufferCount; ++i) {
3980             if (pCounterBuffers) {
3981                 VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_pCounterBuffers, pCounterBuffers[i]);
3982                 internal_pCounterBuffers[i] = gfxstream_pCounterBuffers->internal_object;
3983             }
3984         }
3985         vkEnc->vkCmdEndTransformFeedbackEXT(
3986             gfxstream_commandBuffer->internal_object, firstCounterBuffer, counterBufferCount,
3987             internal_pCounterBuffers.data(), pCounterBufferOffsets, true /* do lock */);
3988     }
3989 }
gfxstream_vk_CmdBeginQueryIndexedEXT(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,VkQueryControlFlags flags,uint32_t index)3990 void gfxstream_vk_CmdBeginQueryIndexedEXT(VkCommandBuffer commandBuffer, VkQueryPool queryPool,
3991                                           uint32_t query, VkQueryControlFlags flags,
3992                                           uint32_t index) {
3993     MESA_TRACE_SCOPE("vkCmdBeginQueryIndexedEXT");
3994     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
3995     {
3996         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
3997             gfxstream_commandBuffer->internal_object);
3998         vkEnc->vkCmdBeginQueryIndexedEXT(gfxstream_commandBuffer->internal_object, queryPool, query,
3999                                          flags, index, true /* do lock */);
4000     }
4001 }
gfxstream_vk_CmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,uint32_t index)4002 void gfxstream_vk_CmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer, VkQueryPool queryPool,
4003                                         uint32_t query, uint32_t index) {
4004     MESA_TRACE_SCOPE("vkCmdEndQueryIndexedEXT");
4005     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4006     {
4007         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4008             gfxstream_commandBuffer->internal_object);
4009         vkEnc->vkCmdEndQueryIndexedEXT(gfxstream_commandBuffer->internal_object, queryPool, query,
4010                                        index, true /* do lock */);
4011     }
4012 }
gfxstream_vk_CmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer,uint32_t instanceCount,uint32_t firstInstance,VkBuffer counterBuffer,VkDeviceSize counterBufferOffset,uint32_t counterOffset,uint32_t vertexStride)4013 void gfxstream_vk_CmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer, uint32_t instanceCount,
4014                                               uint32_t firstInstance, VkBuffer counterBuffer,
4015                                               VkDeviceSize counterBufferOffset,
4016                                               uint32_t counterOffset, uint32_t vertexStride) {
4017     MESA_TRACE_SCOPE("vkCmdDrawIndirectByteCountEXT");
4018     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4019     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_counterBuffer, counterBuffer);
4020     {
4021         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4022             gfxstream_commandBuffer->internal_object);
4023         vkEnc->vkCmdDrawIndirectByteCountEXT(
4024             gfxstream_commandBuffer->internal_object, instanceCount, firstInstance,
4025             gfxstream_counterBuffer->internal_object, counterBufferOffset, counterOffset,
4026             vertexStride, true /* do lock */);
4027     }
4028 }
4029 #endif
4030 #ifdef VK_ANDROID_external_memory_android_hardware_buffer
gfxstream_vk_GetAndroidHardwareBufferPropertiesANDROID(VkDevice device,const AHardwareBuffer * buffer,VkAndroidHardwareBufferPropertiesANDROID * pProperties)4031 VkResult gfxstream_vk_GetAndroidHardwareBufferPropertiesANDROID(
4032     VkDevice device, const AHardwareBuffer* buffer,
4033     VkAndroidHardwareBufferPropertiesANDROID* pProperties) {
4034     MESA_TRACE_SCOPE("vkGetAndroidHardwareBufferPropertiesANDROID");
4035     VkResult vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return = (VkResult)0;
4036     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4037     {
4038         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4039         auto resources = gfxstream::vk::ResourceTracker::get();
4040         vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return =
4041             resources->on_vkGetAndroidHardwareBufferPropertiesANDROID(
4042                 vkEnc, VK_SUCCESS, gfxstream_device->internal_object, buffer, pProperties);
4043     }
4044     return vkGetAndroidHardwareBufferPropertiesANDROID_VkResult_return;
4045 }
gfxstream_vk_GetMemoryAndroidHardwareBufferANDROID(VkDevice device,const VkMemoryGetAndroidHardwareBufferInfoANDROID * pInfo,AHardwareBuffer ** pBuffer)4046 VkResult gfxstream_vk_GetMemoryAndroidHardwareBufferANDROID(
4047     VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
4048     AHardwareBuffer** pBuffer) {
4049     MESA_TRACE_SCOPE("vkGetMemoryAndroidHardwareBufferANDROID");
4050     VkResult vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return = (VkResult)0;
4051     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4052     {
4053         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4054         auto resources = gfxstream::vk::ResourceTracker::get();
4055         vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return =
4056             resources->on_vkGetMemoryAndroidHardwareBufferANDROID(
4057                 vkEnc, VK_SUCCESS, gfxstream_device->internal_object, pInfo, pBuffer);
4058     }
4059     return vkGetMemoryAndroidHardwareBufferANDROID_VkResult_return;
4060 }
4061 #endif
4062 #ifdef VK_EXT_image_drm_format_modifier
gfxstream_vk_GetImageDrmFormatModifierPropertiesEXT(VkDevice device,VkImage image,VkImageDrmFormatModifierPropertiesEXT * pProperties)4063 VkResult gfxstream_vk_GetImageDrmFormatModifierPropertiesEXT(
4064     VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties) {
4065     MESA_TRACE_SCOPE("vkGetImageDrmFormatModifierPropertiesEXT");
4066     VkResult vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return = (VkResult)0;
4067     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4068     {
4069         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4070         vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return =
4071             vkEnc->vkGetImageDrmFormatModifierPropertiesEXT(gfxstream_device->internal_object,
4072                                                             image, pProperties, true /* do lock */);
4073     }
4074     return vkGetImageDrmFormatModifierPropertiesEXT_VkResult_return;
4075 }
4076 #endif
4077 #ifdef VK_EXT_tooling_info
gfxstream_vk_GetPhysicalDeviceToolPropertiesEXT(VkPhysicalDevice physicalDevice,uint32_t * pToolCount,VkPhysicalDeviceToolProperties * pToolProperties)4078 VkResult gfxstream_vk_GetPhysicalDeviceToolPropertiesEXT(
4079     VkPhysicalDevice physicalDevice, uint32_t* pToolCount,
4080     VkPhysicalDeviceToolProperties* pToolProperties) {
4081     MESA_TRACE_SCOPE("vkGetPhysicalDeviceToolPropertiesEXT");
4082     VkResult vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return = (VkResult)0;
4083     VK_FROM_HANDLE(gfxstream_vk_physical_device, gfxstream_physicalDevice, physicalDevice);
4084     {
4085         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4086         vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return =
4087             vkEnc->vkGetPhysicalDeviceToolPropertiesEXT(gfxstream_physicalDevice->internal_object,
4088                                                         pToolCount, pToolProperties,
4089                                                         true /* do lock */);
4090     }
4091     return vkGetPhysicalDeviceToolPropertiesEXT_VkResult_return;
4092 }
4093 #endif
4094 #ifdef VK_EXT_line_rasterization
gfxstream_vk_CmdSetLineStippleEXT(VkCommandBuffer commandBuffer,uint32_t lineStippleFactor,uint16_t lineStipplePattern)4095 void gfxstream_vk_CmdSetLineStippleEXT(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor,
4096                                        uint16_t lineStipplePattern) {
4097     MESA_TRACE_SCOPE("vkCmdSetLineStippleEXT");
4098     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4099     {
4100         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4101             gfxstream_commandBuffer->internal_object);
4102         vkEnc->vkCmdSetLineStippleEXT(gfxstream_commandBuffer->internal_object, lineStippleFactor,
4103                                       lineStipplePattern, true /* do lock */);
4104     }
4105 }
4106 #endif
4107 #ifdef VK_EXT_extended_dynamic_state
gfxstream_vk_CmdSetCullModeEXT(VkCommandBuffer commandBuffer,VkCullModeFlags cullMode)4108 void gfxstream_vk_CmdSetCullModeEXT(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode) {
4109     MESA_TRACE_SCOPE("vkCmdSetCullModeEXT");
4110     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4111     {
4112         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4113             gfxstream_commandBuffer->internal_object);
4114         vkEnc->vkCmdSetCullModeEXT(gfxstream_commandBuffer->internal_object, cullMode,
4115                                    true /* do lock */);
4116     }
4117 }
gfxstream_vk_CmdSetFrontFaceEXT(VkCommandBuffer commandBuffer,VkFrontFace frontFace)4118 void gfxstream_vk_CmdSetFrontFaceEXT(VkCommandBuffer commandBuffer, VkFrontFace frontFace) {
4119     MESA_TRACE_SCOPE("vkCmdSetFrontFaceEXT");
4120     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4121     {
4122         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4123             gfxstream_commandBuffer->internal_object);
4124         vkEnc->vkCmdSetFrontFaceEXT(gfxstream_commandBuffer->internal_object, frontFace,
4125                                     true /* do lock */);
4126     }
4127 }
gfxstream_vk_CmdSetPrimitiveTopologyEXT(VkCommandBuffer commandBuffer,VkPrimitiveTopology primitiveTopology)4128 void gfxstream_vk_CmdSetPrimitiveTopologyEXT(VkCommandBuffer commandBuffer,
4129                                              VkPrimitiveTopology primitiveTopology) {
4130     MESA_TRACE_SCOPE("vkCmdSetPrimitiveTopologyEXT");
4131     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4132     {
4133         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4134             gfxstream_commandBuffer->internal_object);
4135         vkEnc->vkCmdSetPrimitiveTopologyEXT(gfxstream_commandBuffer->internal_object,
4136                                             primitiveTopology, true /* do lock */);
4137     }
4138 }
gfxstream_vk_CmdSetViewportWithCountEXT(VkCommandBuffer commandBuffer,uint32_t viewportCount,const VkViewport * pViewports)4139 void gfxstream_vk_CmdSetViewportWithCountEXT(VkCommandBuffer commandBuffer, uint32_t viewportCount,
4140                                              const VkViewport* pViewports) {
4141     MESA_TRACE_SCOPE("vkCmdSetViewportWithCountEXT");
4142     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4143     {
4144         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4145             gfxstream_commandBuffer->internal_object);
4146         vkEnc->vkCmdSetViewportWithCountEXT(gfxstream_commandBuffer->internal_object, viewportCount,
4147                                             pViewports, true /* do lock */);
4148     }
4149 }
gfxstream_vk_CmdSetScissorWithCountEXT(VkCommandBuffer commandBuffer,uint32_t scissorCount,const VkRect2D * pScissors)4150 void gfxstream_vk_CmdSetScissorWithCountEXT(VkCommandBuffer commandBuffer, uint32_t scissorCount,
4151                                             const VkRect2D* pScissors) {
4152     MESA_TRACE_SCOPE("vkCmdSetScissorWithCountEXT");
4153     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4154     {
4155         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4156             gfxstream_commandBuffer->internal_object);
4157         vkEnc->vkCmdSetScissorWithCountEXT(gfxstream_commandBuffer->internal_object, scissorCount,
4158                                            pScissors, true /* do lock */);
4159     }
4160 }
gfxstream_vk_CmdBindVertexBuffers2EXT(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets,const VkDeviceSize * pSizes,const VkDeviceSize * pStrides)4161 void gfxstream_vk_CmdBindVertexBuffers2EXT(VkCommandBuffer commandBuffer, uint32_t firstBinding,
4162                                            uint32_t bindingCount, const VkBuffer* pBuffers,
4163                                            const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes,
4164                                            const VkDeviceSize* pStrides) {
4165     MESA_TRACE_SCOPE("vkCmdBindVertexBuffers2EXT");
4166     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4167     {
4168         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4169             gfxstream_commandBuffer->internal_object);
4170         std::vector<VkBuffer> internal_pBuffers(bindingCount);
4171         for (uint32_t i = 0; i < bindingCount; ++i) {
4172             if (pBuffers) {
4173                 VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_pBuffers, pBuffers[i]);
4174                 internal_pBuffers[i] = gfxstream_pBuffers->internal_object;
4175             }
4176         }
4177         vkEnc->vkCmdBindVertexBuffers2EXT(gfxstream_commandBuffer->internal_object, firstBinding,
4178                                           bindingCount, internal_pBuffers.data(), pOffsets, pSizes,
4179                                           pStrides, true /* do lock */);
4180     }
4181 }
gfxstream_vk_CmdSetDepthTestEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthTestEnable)4182 void gfxstream_vk_CmdSetDepthTestEnableEXT(VkCommandBuffer commandBuffer,
4183                                            VkBool32 depthTestEnable) {
4184     MESA_TRACE_SCOPE("vkCmdSetDepthTestEnableEXT");
4185     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4186     {
4187         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4188             gfxstream_commandBuffer->internal_object);
4189         vkEnc->vkCmdSetDepthTestEnableEXT(gfxstream_commandBuffer->internal_object, depthTestEnable,
4190                                           true /* do lock */);
4191     }
4192 }
gfxstream_vk_CmdSetDepthWriteEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthWriteEnable)4193 void gfxstream_vk_CmdSetDepthWriteEnableEXT(VkCommandBuffer commandBuffer,
4194                                             VkBool32 depthWriteEnable) {
4195     MESA_TRACE_SCOPE("vkCmdSetDepthWriteEnableEXT");
4196     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4197     {
4198         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4199             gfxstream_commandBuffer->internal_object);
4200         vkEnc->vkCmdSetDepthWriteEnableEXT(gfxstream_commandBuffer->internal_object,
4201                                            depthWriteEnable, true /* do lock */);
4202     }
4203 }
gfxstream_vk_CmdSetDepthCompareOpEXT(VkCommandBuffer commandBuffer,VkCompareOp depthCompareOp)4204 void gfxstream_vk_CmdSetDepthCompareOpEXT(VkCommandBuffer commandBuffer,
4205                                           VkCompareOp depthCompareOp) {
4206     MESA_TRACE_SCOPE("vkCmdSetDepthCompareOpEXT");
4207     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4208     {
4209         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4210             gfxstream_commandBuffer->internal_object);
4211         vkEnc->vkCmdSetDepthCompareOpEXT(gfxstream_commandBuffer->internal_object, depthCompareOp,
4212                                          true /* do lock */);
4213     }
4214 }
gfxstream_vk_CmdSetDepthBoundsTestEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthBoundsTestEnable)4215 void gfxstream_vk_CmdSetDepthBoundsTestEnableEXT(VkCommandBuffer commandBuffer,
4216                                                  VkBool32 depthBoundsTestEnable) {
4217     MESA_TRACE_SCOPE("vkCmdSetDepthBoundsTestEnableEXT");
4218     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4219     {
4220         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4221             gfxstream_commandBuffer->internal_object);
4222         vkEnc->vkCmdSetDepthBoundsTestEnableEXT(gfxstream_commandBuffer->internal_object,
4223                                                 depthBoundsTestEnable, true /* do lock */);
4224     }
4225 }
gfxstream_vk_CmdSetStencilTestEnableEXT(VkCommandBuffer commandBuffer,VkBool32 stencilTestEnable)4226 void gfxstream_vk_CmdSetStencilTestEnableEXT(VkCommandBuffer commandBuffer,
4227                                              VkBool32 stencilTestEnable) {
4228     MESA_TRACE_SCOPE("vkCmdSetStencilTestEnableEXT");
4229     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4230     {
4231         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4232             gfxstream_commandBuffer->internal_object);
4233         vkEnc->vkCmdSetStencilTestEnableEXT(gfxstream_commandBuffer->internal_object,
4234                                             stencilTestEnable, true /* do lock */);
4235     }
4236 }
gfxstream_vk_CmdSetStencilOpEXT(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,VkStencilOp failOp,VkStencilOp passOp,VkStencilOp depthFailOp,VkCompareOp compareOp)4237 void gfxstream_vk_CmdSetStencilOpEXT(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask,
4238                                      VkStencilOp failOp, VkStencilOp passOp,
4239                                      VkStencilOp depthFailOp, VkCompareOp compareOp) {
4240     MESA_TRACE_SCOPE("vkCmdSetStencilOpEXT");
4241     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4242     {
4243         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4244             gfxstream_commandBuffer->internal_object);
4245         vkEnc->vkCmdSetStencilOpEXT(gfxstream_commandBuffer->internal_object, faceMask, failOp,
4246                                     passOp, depthFailOp, compareOp, true /* do lock */);
4247     }
4248 }
4249 #endif
4250 #ifdef VK_EXT_host_image_copy
gfxstream_vk_CopyMemoryToImageEXT(VkDevice device,const VkCopyMemoryToImageInfoEXT * pCopyMemoryToImageInfo)4251 VkResult gfxstream_vk_CopyMemoryToImageEXT(
4252     VkDevice device, const VkCopyMemoryToImageInfoEXT* pCopyMemoryToImageInfo) {
4253     MESA_TRACE_SCOPE("vkCopyMemoryToImageEXT");
4254     VkResult vkCopyMemoryToImageEXT_VkResult_return = (VkResult)0;
4255     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4256     {
4257         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4258         vkCopyMemoryToImageEXT_VkResult_return = vkEnc->vkCopyMemoryToImageEXT(
4259             gfxstream_device->internal_object, pCopyMemoryToImageInfo, true /* do lock */);
4260     }
4261     return vkCopyMemoryToImageEXT_VkResult_return;
4262 }
gfxstream_vk_CopyImageToMemoryEXT(VkDevice device,const VkCopyImageToMemoryInfoEXT * pCopyImageToMemoryInfo)4263 VkResult gfxstream_vk_CopyImageToMemoryEXT(
4264     VkDevice device, const VkCopyImageToMemoryInfoEXT* pCopyImageToMemoryInfo) {
4265     MESA_TRACE_SCOPE("vkCopyImageToMemoryEXT");
4266     VkResult vkCopyImageToMemoryEXT_VkResult_return = (VkResult)0;
4267     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4268     {
4269         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4270         vkCopyImageToMemoryEXT_VkResult_return = vkEnc->vkCopyImageToMemoryEXT(
4271             gfxstream_device->internal_object, pCopyImageToMemoryInfo, true /* do lock */);
4272     }
4273     return vkCopyImageToMemoryEXT_VkResult_return;
4274 }
gfxstream_vk_CopyImageToImageEXT(VkDevice device,const VkCopyImageToImageInfoEXT * pCopyImageToImageInfo)4275 VkResult gfxstream_vk_CopyImageToImageEXT(VkDevice device,
4276                                           const VkCopyImageToImageInfoEXT* pCopyImageToImageInfo) {
4277     MESA_TRACE_SCOPE("vkCopyImageToImageEXT");
4278     VkResult vkCopyImageToImageEXT_VkResult_return = (VkResult)0;
4279     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4280     {
4281         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4282         vkCopyImageToImageEXT_VkResult_return = vkEnc->vkCopyImageToImageEXT(
4283             gfxstream_device->internal_object, pCopyImageToImageInfo, true /* do lock */);
4284     }
4285     return vkCopyImageToImageEXT_VkResult_return;
4286 }
gfxstream_vk_TransitionImageLayoutEXT(VkDevice device,uint32_t transitionCount,const VkHostImageLayoutTransitionInfoEXT * pTransitions)4287 VkResult gfxstream_vk_TransitionImageLayoutEXT(
4288     VkDevice device, uint32_t transitionCount,
4289     const VkHostImageLayoutTransitionInfoEXT* pTransitions) {
4290     MESA_TRACE_SCOPE("vkTransitionImageLayoutEXT");
4291     VkResult vkTransitionImageLayoutEXT_VkResult_return = (VkResult)0;
4292     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4293     {
4294         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4295         vkTransitionImageLayoutEXT_VkResult_return = vkEnc->vkTransitionImageLayoutEXT(
4296             gfxstream_device->internal_object, transitionCount, pTransitions, true /* do lock */);
4297     }
4298     return vkTransitionImageLayoutEXT_VkResult_return;
4299 }
gfxstream_vk_GetImageSubresourceLayout2EXT(VkDevice device,VkImage image,const VkImageSubresource2KHR * pSubresource,VkSubresourceLayout2KHR * pLayout)4300 void gfxstream_vk_GetImageSubresourceLayout2EXT(VkDevice device, VkImage image,
4301                                                 const VkImageSubresource2KHR* pSubresource,
4302                                                 VkSubresourceLayout2KHR* pLayout) {
4303     MESA_TRACE_SCOPE("vkGetImageSubresourceLayout2EXT");
4304     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4305     {
4306         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4307         vkEnc->vkGetImageSubresourceLayout2EXT(gfxstream_device->internal_object, image,
4308                                                pSubresource, pLayout, true /* do lock */);
4309     }
4310 }
4311 #endif
4312 #ifdef VK_EXT_private_data
gfxstream_vk_CreatePrivateDataSlotEXT(VkDevice device,const VkPrivateDataSlotCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPrivateDataSlot * pPrivateDataSlot)4313 VkResult gfxstream_vk_CreatePrivateDataSlotEXT(VkDevice device,
4314                                                const VkPrivateDataSlotCreateInfo* pCreateInfo,
4315                                                const VkAllocationCallbacks* pAllocator,
4316                                                VkPrivateDataSlot* pPrivateDataSlot) {
4317     MESA_TRACE_SCOPE("vkCreatePrivateDataSlotEXT");
4318     VkResult vkCreatePrivateDataSlotEXT_VkResult_return = (VkResult)0;
4319     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4320     {
4321         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4322         vkCreatePrivateDataSlotEXT_VkResult_return =
4323             vkEnc->vkCreatePrivateDataSlotEXT(gfxstream_device->internal_object, pCreateInfo,
4324                                               pAllocator, pPrivateDataSlot, true /* do lock */);
4325     }
4326     return vkCreatePrivateDataSlotEXT_VkResult_return;
4327 }
gfxstream_vk_DestroyPrivateDataSlotEXT(VkDevice device,VkPrivateDataSlot privateDataSlot,const VkAllocationCallbacks * pAllocator)4328 void gfxstream_vk_DestroyPrivateDataSlotEXT(VkDevice device, VkPrivateDataSlot privateDataSlot,
4329                                             const VkAllocationCallbacks* pAllocator) {
4330     MESA_TRACE_SCOPE("vkDestroyPrivateDataSlotEXT");
4331     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4332     {
4333         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4334         vkEnc->vkDestroyPrivateDataSlotEXT(gfxstream_device->internal_object, privateDataSlot,
4335                                            pAllocator, true /* do lock */);
4336     }
4337 }
gfxstream_vk_SetPrivateDataEXT(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlot privateDataSlot,uint64_t data)4338 VkResult gfxstream_vk_SetPrivateDataEXT(VkDevice device, VkObjectType objectType,
4339                                         uint64_t objectHandle, VkPrivateDataSlot privateDataSlot,
4340                                         uint64_t data) {
4341     MESA_TRACE_SCOPE("vkSetPrivateDataEXT");
4342     VkResult vkSetPrivateDataEXT_VkResult_return = (VkResult)0;
4343     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4344     {
4345         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4346         vkSetPrivateDataEXT_VkResult_return =
4347             vkEnc->vkSetPrivateDataEXT(gfxstream_device->internal_object, objectType, objectHandle,
4348                                        privateDataSlot, data, true /* do lock */);
4349     }
4350     return vkSetPrivateDataEXT_VkResult_return;
4351 }
gfxstream_vk_GetPrivateDataEXT(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlot privateDataSlot,uint64_t * pData)4352 void gfxstream_vk_GetPrivateDataEXT(VkDevice device, VkObjectType objectType, uint64_t objectHandle,
4353                                     VkPrivateDataSlot privateDataSlot, uint64_t* pData) {
4354     MESA_TRACE_SCOPE("vkGetPrivateDataEXT");
4355     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4356     {
4357         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4358         vkEnc->vkGetPrivateDataEXT(gfxstream_device->internal_object, objectType, objectHandle,
4359                                    privateDataSlot, pData, true /* do lock */);
4360     }
4361 }
4362 #endif
4363 #ifdef VK_EXT_extended_dynamic_state2
gfxstream_vk_CmdSetPatchControlPointsEXT(VkCommandBuffer commandBuffer,uint32_t patchControlPoints)4364 void gfxstream_vk_CmdSetPatchControlPointsEXT(VkCommandBuffer commandBuffer,
4365                                               uint32_t patchControlPoints) {
4366     MESA_TRACE_SCOPE("vkCmdSetPatchControlPointsEXT");
4367     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4368     {
4369         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4370             gfxstream_commandBuffer->internal_object);
4371         vkEnc->vkCmdSetPatchControlPointsEXT(gfxstream_commandBuffer->internal_object,
4372                                              patchControlPoints, true /* do lock */);
4373     }
4374 }
gfxstream_vk_CmdSetRasterizerDiscardEnableEXT(VkCommandBuffer commandBuffer,VkBool32 rasterizerDiscardEnable)4375 void gfxstream_vk_CmdSetRasterizerDiscardEnableEXT(VkCommandBuffer commandBuffer,
4376                                                    VkBool32 rasterizerDiscardEnable) {
4377     MESA_TRACE_SCOPE("vkCmdSetRasterizerDiscardEnableEXT");
4378     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4379     {
4380         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4381             gfxstream_commandBuffer->internal_object);
4382         vkEnc->vkCmdSetRasterizerDiscardEnableEXT(gfxstream_commandBuffer->internal_object,
4383                                                   rasterizerDiscardEnable, true /* do lock */);
4384     }
4385 }
gfxstream_vk_CmdSetDepthBiasEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthBiasEnable)4386 void gfxstream_vk_CmdSetDepthBiasEnableEXT(VkCommandBuffer commandBuffer,
4387                                            VkBool32 depthBiasEnable) {
4388     MESA_TRACE_SCOPE("vkCmdSetDepthBiasEnableEXT");
4389     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4390     {
4391         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4392             gfxstream_commandBuffer->internal_object);
4393         vkEnc->vkCmdSetDepthBiasEnableEXT(gfxstream_commandBuffer->internal_object, depthBiasEnable,
4394                                           true /* do lock */);
4395     }
4396 }
gfxstream_vk_CmdSetLogicOpEXT(VkCommandBuffer commandBuffer,VkLogicOp logicOp)4397 void gfxstream_vk_CmdSetLogicOpEXT(VkCommandBuffer commandBuffer, VkLogicOp logicOp) {
4398     MESA_TRACE_SCOPE("vkCmdSetLogicOpEXT");
4399     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4400     {
4401         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4402             gfxstream_commandBuffer->internal_object);
4403         vkEnc->vkCmdSetLogicOpEXT(gfxstream_commandBuffer->internal_object, logicOp,
4404                                   true /* do lock */);
4405     }
4406 }
gfxstream_vk_CmdSetPrimitiveRestartEnableEXT(VkCommandBuffer commandBuffer,VkBool32 primitiveRestartEnable)4407 void gfxstream_vk_CmdSetPrimitiveRestartEnableEXT(VkCommandBuffer commandBuffer,
4408                                                   VkBool32 primitiveRestartEnable) {
4409     MESA_TRACE_SCOPE("vkCmdSetPrimitiveRestartEnableEXT");
4410     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4411     {
4412         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4413             gfxstream_commandBuffer->internal_object);
4414         vkEnc->vkCmdSetPrimitiveRestartEnableEXT(gfxstream_commandBuffer->internal_object,
4415                                                  primitiveRestartEnable, true /* do lock */);
4416     }
4417 }
4418 #endif
4419 #ifdef VK_EXT_color_write_enable
gfxstream_vk_CmdSetColorWriteEnableEXT(VkCommandBuffer commandBuffer,uint32_t attachmentCount,const VkBool32 * pColorWriteEnables)4420 void gfxstream_vk_CmdSetColorWriteEnableEXT(VkCommandBuffer commandBuffer, uint32_t attachmentCount,
4421                                             const VkBool32* pColorWriteEnables) {
4422     MESA_TRACE_SCOPE("vkCmdSetColorWriteEnableEXT");
4423     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4424     {
4425         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4426             gfxstream_commandBuffer->internal_object);
4427         vkEnc->vkCmdSetColorWriteEnableEXT(gfxstream_commandBuffer->internal_object,
4428                                            attachmentCount, pColorWriteEnables, true /* do lock */);
4429     }
4430 }
4431 #endif
4432 #ifdef VK_GOOGLE_gfxstream
gfxstream_vk_MapMemoryIntoAddressSpaceGOOGLE(VkDevice device,VkDeviceMemory memory,uint64_t * pAddress)4433 VkResult gfxstream_vk_MapMemoryIntoAddressSpaceGOOGLE(VkDevice device, VkDeviceMemory memory,
4434                                                       uint64_t* pAddress) {
4435     MESA_TRACE_SCOPE("vkMapMemoryIntoAddressSpaceGOOGLE");
4436     VkResult vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return = (VkResult)0;
4437     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4438     {
4439         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4440         vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return =
4441             vkEnc->vkMapMemoryIntoAddressSpaceGOOGLE(gfxstream_device->internal_object, memory,
4442                                                      pAddress, true /* do lock */);
4443     }
4444     return vkMapMemoryIntoAddressSpaceGOOGLE_VkResult_return;
4445 }
gfxstream_vk_UpdateDescriptorSetWithTemplateSizedGOOGLE(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,uint32_t imageInfoCount,uint32_t bufferInfoCount,uint32_t bufferViewCount,const uint32_t * pImageInfoEntryIndices,const uint32_t * pBufferInfoEntryIndices,const uint32_t * pBufferViewEntryIndices,const VkDescriptorImageInfo * pImageInfos,const VkDescriptorBufferInfo * pBufferInfos,const VkBufferView * pBufferViews)4446 void gfxstream_vk_UpdateDescriptorSetWithTemplateSizedGOOGLE(
4447     VkDevice device, VkDescriptorSet descriptorSet,
4448     VkDescriptorUpdateTemplate descriptorUpdateTemplate, uint32_t imageInfoCount,
4449     uint32_t bufferInfoCount, uint32_t bufferViewCount, const uint32_t* pImageInfoEntryIndices,
4450     const uint32_t* pBufferInfoEntryIndices, const uint32_t* pBufferViewEntryIndices,
4451     const VkDescriptorImageInfo* pImageInfos, const VkDescriptorBufferInfo* pBufferInfos,
4452     const VkBufferView* pBufferViews) {
4453     MESA_TRACE_SCOPE("vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
4454     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4455     {
4456         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4457         std::vector<VkDescriptorBufferInfo> internal_pBufferInfos(bufferInfoCount);
4458         for (uint32_t i = 0; i < bufferInfoCount; ++i) {
4459             if (pBufferInfos) {
4460                 internal_pBufferInfos[i] = pBufferInfos[i];
4461                 /* VkDescriptorBufferInfo::buffer */
4462                 if (internal_pBufferInfos[i].buffer) {
4463                     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer,
4464                                    internal_pBufferInfos[i].buffer);
4465                     internal_pBufferInfos[i].buffer = gfxstream_buffer->internal_object;
4466                 }
4467             }
4468         }
4469         vkEnc->vkUpdateDescriptorSetWithTemplateSizedGOOGLE(
4470             gfxstream_device->internal_object, descriptorSet, descriptorUpdateTemplate,
4471             imageInfoCount, bufferInfoCount, bufferViewCount, pImageInfoEntryIndices,
4472             pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos,
4473             internal_pBufferInfos.data(), pBufferViews, true /* do lock */);
4474     }
4475 }
gfxstream_vk_BeginCommandBufferAsyncGOOGLE(VkCommandBuffer commandBuffer,const VkCommandBufferBeginInfo * pBeginInfo)4476 void gfxstream_vk_BeginCommandBufferAsyncGOOGLE(VkCommandBuffer commandBuffer,
4477                                                 const VkCommandBufferBeginInfo* pBeginInfo) {
4478     MESA_TRACE_SCOPE("vkBeginCommandBufferAsyncGOOGLE");
4479     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4480     {
4481         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4482             gfxstream_commandBuffer->internal_object);
4483         vkEnc->vkBeginCommandBufferAsyncGOOGLE(gfxstream_commandBuffer->internal_object, pBeginInfo,
4484                                                true /* do lock */);
4485     }
4486 }
gfxstream_vk_EndCommandBufferAsyncGOOGLE(VkCommandBuffer commandBuffer)4487 void gfxstream_vk_EndCommandBufferAsyncGOOGLE(VkCommandBuffer commandBuffer) {
4488     MESA_TRACE_SCOPE("vkEndCommandBufferAsyncGOOGLE");
4489     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4490     {
4491         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4492             gfxstream_commandBuffer->internal_object);
4493         vkEnc->vkEndCommandBufferAsyncGOOGLE(gfxstream_commandBuffer->internal_object,
4494                                              true /* do lock */);
4495     }
4496 }
gfxstream_vk_ResetCommandBufferAsyncGOOGLE(VkCommandBuffer commandBuffer,VkCommandBufferResetFlags flags)4497 void gfxstream_vk_ResetCommandBufferAsyncGOOGLE(VkCommandBuffer commandBuffer,
4498                                                 VkCommandBufferResetFlags flags) {
4499     MESA_TRACE_SCOPE("vkResetCommandBufferAsyncGOOGLE");
4500     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4501     {
4502         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4503             gfxstream_commandBuffer->internal_object);
4504         vkEnc->vkResetCommandBufferAsyncGOOGLE(gfxstream_commandBuffer->internal_object, flags,
4505                                                true /* do lock */);
4506     }
4507 }
gfxstream_vk_CommandBufferHostSyncGOOGLE(VkCommandBuffer commandBuffer,uint32_t needHostSync,uint32_t sequenceNumber)4508 void gfxstream_vk_CommandBufferHostSyncGOOGLE(VkCommandBuffer commandBuffer, uint32_t needHostSync,
4509                                               uint32_t sequenceNumber) {
4510     MESA_TRACE_SCOPE("vkCommandBufferHostSyncGOOGLE");
4511     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4512     {
4513         auto vkEnc = gfxstream::vk::ResourceTracker::getCommandBufferEncoder(
4514             gfxstream_commandBuffer->internal_object);
4515         vkEnc->vkCommandBufferHostSyncGOOGLE(gfxstream_commandBuffer->internal_object, needHostSync,
4516                                              sequenceNumber, true /* do lock */);
4517     }
4518 }
gfxstream_vk_CreateImageWithRequirementsGOOGLE(VkDevice device,const VkImageCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImage * pImage,VkMemoryRequirements * pMemoryRequirements)4519 VkResult gfxstream_vk_CreateImageWithRequirementsGOOGLE(VkDevice device,
4520                                                         const VkImageCreateInfo* pCreateInfo,
4521                                                         const VkAllocationCallbacks* pAllocator,
4522                                                         VkImage* pImage,
4523                                                         VkMemoryRequirements* pMemoryRequirements) {
4524     MESA_TRACE_SCOPE("vkCreateImageWithRequirementsGOOGLE");
4525     VkResult vkCreateImageWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
4526     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4527     {
4528         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4529         vkCreateImageWithRequirementsGOOGLE_VkResult_return =
4530             vkEnc->vkCreateImageWithRequirementsGOOGLE(gfxstream_device->internal_object,
4531                                                        pCreateInfo, pAllocator, pImage,
4532                                                        pMemoryRequirements, true /* do lock */);
4533     }
4534     return vkCreateImageWithRequirementsGOOGLE_VkResult_return;
4535 }
gfxstream_vk_CreateBufferWithRequirementsGOOGLE(VkDevice device,const VkBufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBuffer * pBuffer,VkMemoryRequirements * pMemoryRequirements)4536 VkResult gfxstream_vk_CreateBufferWithRequirementsGOOGLE(
4537     VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator,
4538     VkBuffer* pBuffer, VkMemoryRequirements* pMemoryRequirements) {
4539     MESA_TRACE_SCOPE("vkCreateBufferWithRequirementsGOOGLE");
4540     VkResult vkCreateBufferWithRequirementsGOOGLE_VkResult_return = (VkResult)0;
4541     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4542     struct gfxstream_vk_buffer* gfxstream_pBuffer = (gfxstream_vk_buffer*)vk_object_zalloc(
4543         &gfxstream_device->vk, pAllocator, sizeof(gfxstream_vk_buffer), VK_OBJECT_TYPE_BUFFER);
4544     vkCreateBufferWithRequirementsGOOGLE_VkResult_return =
4545         gfxstream_pBuffer ? VK_SUCCESS : VK_ERROR_OUT_OF_HOST_MEMORY;
4546     if (VK_SUCCESS == vkCreateBufferWithRequirementsGOOGLE_VkResult_return) {
4547         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4548         vkCreateBufferWithRequirementsGOOGLE_VkResult_return =
4549             vkEnc->vkCreateBufferWithRequirementsGOOGLE(
4550                 gfxstream_device->internal_object, pCreateInfo, pAllocator,
4551                 &gfxstream_pBuffer->internal_object, pMemoryRequirements, true /* do lock */);
4552     }
4553     *pBuffer = gfxstream_vk_buffer_to_handle(gfxstream_pBuffer);
4554     return vkCreateBufferWithRequirementsGOOGLE_VkResult_return;
4555 }
gfxstream_vk_GetMemoryHostAddressInfoGOOGLE(VkDevice device,VkDeviceMemory memory,uint64_t * pAddress,uint64_t * pSize,uint64_t * pHostmemId)4556 VkResult gfxstream_vk_GetMemoryHostAddressInfoGOOGLE(VkDevice device, VkDeviceMemory memory,
4557                                                      uint64_t* pAddress, uint64_t* pSize,
4558                                                      uint64_t* pHostmemId) {
4559     MESA_TRACE_SCOPE("vkGetMemoryHostAddressInfoGOOGLE");
4560     VkResult vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = (VkResult)0;
4561     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4562     {
4563         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4564         vkGetMemoryHostAddressInfoGOOGLE_VkResult_return = vkEnc->vkGetMemoryHostAddressInfoGOOGLE(
4565             gfxstream_device->internal_object, memory, pAddress, pSize, pHostmemId,
4566             true /* do lock */);
4567     }
4568     return vkGetMemoryHostAddressInfoGOOGLE_VkResult_return;
4569 }
gfxstream_vk_FreeMemorySyncGOOGLE(VkDevice device,VkDeviceMemory memory,const VkAllocationCallbacks * pAllocator)4570 VkResult gfxstream_vk_FreeMemorySyncGOOGLE(VkDevice device, VkDeviceMemory memory,
4571                                            const VkAllocationCallbacks* pAllocator) {
4572     MESA_TRACE_SCOPE("vkFreeMemorySyncGOOGLE");
4573     VkResult vkFreeMemorySyncGOOGLE_VkResult_return = (VkResult)0;
4574     if (VK_NULL_HANDLE == memory) {
4575         return vkFreeMemorySyncGOOGLE_VkResult_return;
4576     }
4577     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4578     {
4579         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4580         vkFreeMemorySyncGOOGLE_VkResult_return = vkEnc->vkFreeMemorySyncGOOGLE(
4581             gfxstream_device->internal_object, memory, pAllocator, true /* do lock */);
4582     }
4583     return vkFreeMemorySyncGOOGLE_VkResult_return;
4584 }
gfxstream_vk_QueueHostSyncGOOGLE(VkQueue queue,uint32_t needHostSync,uint32_t sequenceNumber)4585 void gfxstream_vk_QueueHostSyncGOOGLE(VkQueue queue, uint32_t needHostSync,
4586                                       uint32_t sequenceNumber) {
4587     MESA_TRACE_SCOPE("vkQueueHostSyncGOOGLE");
4588     VK_FROM_HANDLE(gfxstream_vk_queue, gfxstream_queue, queue);
4589     {
4590         auto vkEnc =
4591             gfxstream::vk::ResourceTracker::getQueueEncoder(gfxstream_queue->internal_object);
4592         vkEnc->vkQueueHostSyncGOOGLE(gfxstream_queue->internal_object, needHostSync, sequenceNumber,
4593                                      true /* do lock */);
4594     }
4595 }
gfxstream_vk_QueueSubmitAsyncGOOGLE(VkQueue queue,uint32_t submitCount,const VkSubmitInfo * pSubmits,VkFence fence)4596 void gfxstream_vk_QueueSubmitAsyncGOOGLE(VkQueue queue, uint32_t submitCount,
4597                                          const VkSubmitInfo* pSubmits, VkFence fence) {
4598     MESA_TRACE_SCOPE("vkQueueSubmitAsyncGOOGLE");
4599     VK_FROM_HANDLE(gfxstream_vk_queue, gfxstream_queue, queue);
4600     VK_FROM_HANDLE(gfxstream_vk_fence, gfxstream_fence, fence);
4601     {
4602         auto vkEnc =
4603             gfxstream::vk::ResourceTracker::getQueueEncoder(gfxstream_queue->internal_object);
4604         std::vector<VkSubmitInfo> internal_pSubmits(submitCount);
4605         std::vector<std::vector<VkSemaphore>> internal_VkSubmitInfo_pWaitSemaphores;
4606         std::vector<std::vector<VkCommandBuffer>> internal_VkSubmitInfo_pCommandBuffers;
4607         std::vector<std::vector<VkSemaphore>> internal_VkSubmitInfo_pSignalSemaphores;
4608         for (uint32_t i = 0; i < submitCount; ++i) {
4609             internal_pSubmits[i] = pSubmits[i];
4610             /* VkSubmitInfo::pWaitSemaphores */
4611             internal_VkSubmitInfo_pWaitSemaphores.push_back(std::vector<VkSemaphore>());
4612             internal_VkSubmitInfo_pWaitSemaphores[i] = transformVkSemaphoreList(
4613                 internal_pSubmits[i].pWaitSemaphores, internal_pSubmits[i].waitSemaphoreCount);
4614             internal_pSubmits[i].pWaitSemaphores = internal_VkSubmitInfo_pWaitSemaphores[i].data();
4615             internal_pSubmits[i].waitSemaphoreCount =
4616                 internal_VkSubmitInfo_pWaitSemaphores[i].size();
4617             /* VkSubmitInfo::pCommandBuffers */
4618             internal_VkSubmitInfo_pCommandBuffers.push_back(std::vector<VkCommandBuffer>());
4619             internal_VkSubmitInfo_pCommandBuffers[i].resize(
4620                 internal_pSubmits[i].commandBufferCount);
4621             for (uint32_t j = 0; j < internal_pSubmits[i].commandBufferCount; ++j) {
4622                 VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_pCommandBuffers,
4623                                internal_pSubmits[i].pCommandBuffers[j]);
4624                 internal_VkSubmitInfo_pCommandBuffers[i][j] =
4625                     gfxstream_pCommandBuffers->internal_object;
4626             }
4627             internal_pSubmits[i].pCommandBuffers = internal_VkSubmitInfo_pCommandBuffers[i].data();
4628             /* VkSubmitInfo::pSignalSemaphores */
4629             internal_VkSubmitInfo_pSignalSemaphores.push_back(std::vector<VkSemaphore>());
4630             internal_VkSubmitInfo_pSignalSemaphores[i] = transformVkSemaphoreList(
4631                 internal_pSubmits[i].pSignalSemaphores, internal_pSubmits[i].signalSemaphoreCount);
4632             internal_pSubmits[i].pSignalSemaphores =
4633                 internal_VkSubmitInfo_pSignalSemaphores[i].data();
4634             internal_pSubmits[i].signalSemaphoreCount =
4635                 internal_VkSubmitInfo_pSignalSemaphores[i].size();
4636         }
4637         vkEnc->vkQueueSubmitAsyncGOOGLE(
4638             gfxstream_queue->internal_object, submitCount, internal_pSubmits.data(),
4639             gfxstream_fence ? gfxstream_fence->internal_object : VK_NULL_HANDLE,
4640             true /* do lock */);
4641     }
4642 }
gfxstream_vk_QueueWaitIdleAsyncGOOGLE(VkQueue queue)4643 void gfxstream_vk_QueueWaitIdleAsyncGOOGLE(VkQueue queue) {
4644     MESA_TRACE_SCOPE("vkQueueWaitIdleAsyncGOOGLE");
4645     VK_FROM_HANDLE(gfxstream_vk_queue, gfxstream_queue, queue);
4646     {
4647         auto vkEnc =
4648             gfxstream::vk::ResourceTracker::getQueueEncoder(gfxstream_queue->internal_object);
4649         vkEnc->vkQueueWaitIdleAsyncGOOGLE(gfxstream_queue->internal_object, true /* do lock */);
4650     }
4651 }
gfxstream_vk_QueueBindSparseAsyncGOOGLE(VkQueue queue,uint32_t bindInfoCount,const VkBindSparseInfo * pBindInfo,VkFence fence)4652 void gfxstream_vk_QueueBindSparseAsyncGOOGLE(VkQueue queue, uint32_t bindInfoCount,
4653                                              const VkBindSparseInfo* pBindInfo, VkFence fence) {
4654     MESA_TRACE_SCOPE("vkQueueBindSparseAsyncGOOGLE");
4655     VK_FROM_HANDLE(gfxstream_vk_queue, gfxstream_queue, queue);
4656     VK_FROM_HANDLE(gfxstream_vk_fence, gfxstream_fence, fence);
4657     {
4658         auto vkEnc =
4659             gfxstream::vk::ResourceTracker::getQueueEncoder(gfxstream_queue->internal_object);
4660         std::vector<VkBindSparseInfo> internal_pBindInfo(bindInfoCount);
4661         std::vector<std::vector<VkSemaphore>> internal_VkBindSparseInfo_pWaitSemaphores;
4662         std::vector<std::vector<VkSparseBufferMemoryBindInfo>>
4663             internal_VkBindSparseInfo_pBufferBinds;
4664         std::vector<std::vector<VkSemaphore>> internal_VkBindSparseInfo_pSignalSemaphores;
4665         for (uint32_t i = 0; i < bindInfoCount; ++i) {
4666             internal_pBindInfo[i] = pBindInfo[i];
4667             /* VkBindSparseInfo::pWaitSemaphores */
4668             internal_VkBindSparseInfo_pWaitSemaphores.push_back(std::vector<VkSemaphore>());
4669             internal_VkBindSparseInfo_pWaitSemaphores[i] = transformVkSemaphoreList(
4670                 internal_pBindInfo[i].pWaitSemaphores, internal_pBindInfo[i].waitSemaphoreCount);
4671             internal_pBindInfo[i].pWaitSemaphores =
4672                 internal_VkBindSparseInfo_pWaitSemaphores[i].data();
4673             internal_pBindInfo[i].waitSemaphoreCount =
4674                 internal_VkBindSparseInfo_pWaitSemaphores[i].size();
4675             /* VkBindSparseInfo::pBufferBinds */
4676             internal_VkBindSparseInfo_pBufferBinds.push_back(
4677                 std::vector<VkSparseBufferMemoryBindInfo>());
4678             internal_VkBindSparseInfo_pBufferBinds[i].resize(internal_pBindInfo[i].bufferBindCount);
4679             for (uint32_t j = 0; j < internal_pBindInfo[i].bufferBindCount; ++j) {
4680                 internal_VkBindSparseInfo_pBufferBinds[i][j] =
4681                     internal_pBindInfo[i].pBufferBinds[j];
4682                 /* VkSparseBufferMemoryBindInfo::buffer */
4683                 VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer,
4684                                internal_VkBindSparseInfo_pBufferBinds[i][j].buffer);
4685                 internal_VkBindSparseInfo_pBufferBinds[i][j].buffer =
4686                     gfxstream_buffer->internal_object;
4687             }
4688             internal_pBindInfo[i].pBufferBinds = internal_VkBindSparseInfo_pBufferBinds[i].data();
4689             /* VkBindSparseInfo::pSignalSemaphores */
4690             internal_VkBindSparseInfo_pSignalSemaphores.push_back(std::vector<VkSemaphore>());
4691             internal_VkBindSparseInfo_pSignalSemaphores[i] =
4692                 transformVkSemaphoreList(internal_pBindInfo[i].pSignalSemaphores,
4693                                          internal_pBindInfo[i].signalSemaphoreCount);
4694             internal_pBindInfo[i].pSignalSemaphores =
4695                 internal_VkBindSparseInfo_pSignalSemaphores[i].data();
4696             internal_pBindInfo[i].signalSemaphoreCount =
4697                 internal_VkBindSparseInfo_pSignalSemaphores[i].size();
4698         }
4699         vkEnc->vkQueueBindSparseAsyncGOOGLE(
4700             gfxstream_queue->internal_object, bindInfoCount, internal_pBindInfo.data(),
4701             gfxstream_fence ? gfxstream_fence->internal_object : VK_NULL_HANDLE,
4702             true /* do lock */);
4703     }
4704 }
gfxstream_vk_GetLinearImageLayoutGOOGLE(VkDevice device,VkFormat format,VkDeviceSize * pOffset,VkDeviceSize * pRowPitchAlignment)4705 void gfxstream_vk_GetLinearImageLayoutGOOGLE(VkDevice device, VkFormat format,
4706                                              VkDeviceSize* pOffset,
4707                                              VkDeviceSize* pRowPitchAlignment) {
4708     MESA_TRACE_SCOPE("vkGetLinearImageLayoutGOOGLE");
4709     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4710     {
4711         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4712         vkEnc->vkGetLinearImageLayoutGOOGLE(gfxstream_device->internal_object, format, pOffset,
4713                                             pRowPitchAlignment, true /* do lock */);
4714     }
4715 }
gfxstream_vk_GetLinearImageLayout2GOOGLE(VkDevice device,const VkImageCreateInfo * pCreateInfo,VkDeviceSize * pOffset,VkDeviceSize * pRowPitchAlignment)4716 void gfxstream_vk_GetLinearImageLayout2GOOGLE(VkDevice device, const VkImageCreateInfo* pCreateInfo,
4717                                               VkDeviceSize* pOffset,
4718                                               VkDeviceSize* pRowPitchAlignment) {
4719     MESA_TRACE_SCOPE("vkGetLinearImageLayout2GOOGLE");
4720     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4721     {
4722         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4723         vkEnc->vkGetLinearImageLayout2GOOGLE(gfxstream_device->internal_object, pCreateInfo,
4724                                              pOffset, pRowPitchAlignment, true /* do lock */);
4725     }
4726 }
gfxstream_vk_QueueFlushCommandsGOOGLE(VkQueue queue,VkCommandBuffer commandBuffer,VkDeviceSize dataSize,const void * pData)4727 void gfxstream_vk_QueueFlushCommandsGOOGLE(VkQueue queue, VkCommandBuffer commandBuffer,
4728                                            VkDeviceSize dataSize, const void* pData) {
4729     MESA_TRACE_SCOPE("vkQueueFlushCommandsGOOGLE");
4730     VK_FROM_HANDLE(gfxstream_vk_queue, gfxstream_queue, queue);
4731     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4732     {
4733         auto vkEnc =
4734             gfxstream::vk::ResourceTracker::getQueueEncoder(gfxstream_queue->internal_object);
4735         vkEnc->vkQueueFlushCommandsGOOGLE(gfxstream_queue->internal_object,
4736                                           gfxstream_commandBuffer->internal_object, dataSize, pData,
4737                                           true /* do lock */);
4738     }
4739 }
gfxstream_vk_QueueCommitDescriptorSetUpdatesGOOGLE(VkQueue queue,uint32_t descriptorPoolCount,const VkDescriptorPool * pDescriptorPools,uint32_t descriptorSetCount,const VkDescriptorSetLayout * pSetLayouts,const uint64_t * pDescriptorSetPoolIds,const uint32_t * pDescriptorSetWhichPool,const uint32_t * pDescriptorSetPendingAllocation,const uint32_t * pDescriptorWriteStartingIndices,uint32_t pendingDescriptorWriteCount,const VkWriteDescriptorSet * pPendingDescriptorWrites)4740 void gfxstream_vk_QueueCommitDescriptorSetUpdatesGOOGLE(
4741     VkQueue queue, uint32_t descriptorPoolCount, const VkDescriptorPool* pDescriptorPools,
4742     uint32_t descriptorSetCount, const VkDescriptorSetLayout* pSetLayouts,
4743     const uint64_t* pDescriptorSetPoolIds, const uint32_t* pDescriptorSetWhichPool,
4744     const uint32_t* pDescriptorSetPendingAllocation,
4745     const uint32_t* pDescriptorWriteStartingIndices, uint32_t pendingDescriptorWriteCount,
4746     const VkWriteDescriptorSet* pPendingDescriptorWrites) {
4747     MESA_TRACE_SCOPE("vkQueueCommitDescriptorSetUpdatesGOOGLE");
4748     VK_FROM_HANDLE(gfxstream_vk_queue, gfxstream_queue, queue);
4749     {
4750         auto vkEnc =
4751             gfxstream::vk::ResourceTracker::getQueueEncoder(gfxstream_queue->internal_object);
4752         std::vector<VkWriteDescriptorSet> internal_pPendingDescriptorWrites(
4753             pendingDescriptorWriteCount);
4754         std::vector<std::vector<VkDescriptorBufferInfo>> internal_VkWriteDescriptorSet_pBufferInfo;
4755         for (uint32_t i = 0; i < pendingDescriptorWriteCount; ++i) {
4756             internal_pPendingDescriptorWrites[i] = pPendingDescriptorWrites[i];
4757             /* VkWriteDescriptorSet::pBufferInfo */
4758             internal_VkWriteDescriptorSet_pBufferInfo.push_back(
4759                 std::vector<VkDescriptorBufferInfo>());
4760             internal_VkWriteDescriptorSet_pBufferInfo[i].resize(
4761                 internal_pPendingDescriptorWrites[i].descriptorCount);
4762             for (uint32_t j = 0; j < internal_pPendingDescriptorWrites[i].descriptorCount; ++j) {
4763                 if (internal_pPendingDescriptorWrites[i].pBufferInfo) {
4764                     internal_VkWriteDescriptorSet_pBufferInfo[i][j] =
4765                         internal_pPendingDescriptorWrites[i].pBufferInfo[j];
4766                     /* VkDescriptorBufferInfo::buffer */
4767                     if (internal_VkWriteDescriptorSet_pBufferInfo[i][j].buffer) {
4768                         VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer,
4769                                        internal_VkWriteDescriptorSet_pBufferInfo[i][j].buffer);
4770                         internal_VkWriteDescriptorSet_pBufferInfo[i][j].buffer =
4771                             gfxstream_buffer->internal_object;
4772                     }
4773                 }
4774             }
4775             internal_pPendingDescriptorWrites[i].pBufferInfo =
4776                 internal_VkWriteDescriptorSet_pBufferInfo[i].data();
4777         }
4778         vkEnc->vkQueueCommitDescriptorSetUpdatesGOOGLE(
4779             gfxstream_queue->internal_object, descriptorPoolCount, pDescriptorPools,
4780             descriptorSetCount, pSetLayouts, pDescriptorSetPoolIds, pDescriptorSetWhichPool,
4781             pDescriptorSetPendingAllocation, pDescriptorWriteStartingIndices,
4782             pendingDescriptorWriteCount, internal_pPendingDescriptorWrites.data(),
4783             true /* do lock */);
4784     }
4785 }
gfxstream_vk_CollectDescriptorPoolIdsGOOGLE(VkDevice device,VkDescriptorPool descriptorPool,uint32_t * pPoolIdCount,uint64_t * pPoolIds)4786 void gfxstream_vk_CollectDescriptorPoolIdsGOOGLE(VkDevice device, VkDescriptorPool descriptorPool,
4787                                                  uint32_t* pPoolIdCount, uint64_t* pPoolIds) {
4788     MESA_TRACE_SCOPE("vkCollectDescriptorPoolIdsGOOGLE");
4789     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4790     {
4791         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4792         vkEnc->vkCollectDescriptorPoolIdsGOOGLE(gfxstream_device->internal_object, descriptorPool,
4793                                                 pPoolIdCount, pPoolIds, true /* do lock */);
4794     }
4795 }
gfxstream_vk_QueueSignalReleaseImageANDROIDAsyncGOOGLE(VkQueue queue,uint32_t waitSemaphoreCount,const VkSemaphore * pWaitSemaphores,VkImage image)4796 void gfxstream_vk_QueueSignalReleaseImageANDROIDAsyncGOOGLE(VkQueue queue,
4797                                                             uint32_t waitSemaphoreCount,
4798                                                             const VkSemaphore* pWaitSemaphores,
4799                                                             VkImage image) {
4800     MESA_TRACE_SCOPE("vkQueueSignalReleaseImageANDROIDAsyncGOOGLE");
4801     VK_FROM_HANDLE(gfxstream_vk_queue, gfxstream_queue, queue);
4802     {
4803         auto vkEnc =
4804             gfxstream::vk::ResourceTracker::getQueueEncoder(gfxstream_queue->internal_object);
4805         std::vector<VkSemaphore> internal_pWaitSemaphores(waitSemaphoreCount);
4806         internal_pWaitSemaphores = transformVkSemaphoreList(pWaitSemaphores, waitSemaphoreCount);
4807         pWaitSemaphores = internal_pWaitSemaphores.data();
4808         waitSemaphoreCount = internal_pWaitSemaphores.size();
4809         vkEnc->vkQueueSignalReleaseImageANDROIDAsyncGOOGLE(
4810             gfxstream_queue->internal_object, waitSemaphoreCount, internal_pWaitSemaphores.data(),
4811             image, true /* do lock */);
4812     }
4813 }
gfxstream_vk_QueueFlushCommandsFromAuxMemoryGOOGLE(VkQueue queue,VkCommandBuffer commandBuffer,VkDeviceMemory deviceMemory,VkDeviceSize dataOffset,VkDeviceSize dataSize)4814 void gfxstream_vk_QueueFlushCommandsFromAuxMemoryGOOGLE(VkQueue queue,
4815                                                         VkCommandBuffer commandBuffer,
4816                                                         VkDeviceMemory deviceMemory,
4817                                                         VkDeviceSize dataOffset,
4818                                                         VkDeviceSize dataSize) {
4819     MESA_TRACE_SCOPE("vkQueueFlushCommandsFromAuxMemoryGOOGLE");
4820     VK_FROM_HANDLE(gfxstream_vk_queue, gfxstream_queue, queue);
4821     VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer, commandBuffer);
4822     {
4823         auto vkEnc =
4824             gfxstream::vk::ResourceTracker::getQueueEncoder(gfxstream_queue->internal_object);
4825         vkEnc->vkQueueFlushCommandsFromAuxMemoryGOOGLE(
4826             gfxstream_queue->internal_object, gfxstream_commandBuffer->internal_object,
4827             deviceMemory, dataOffset, dataSize, true /* do lock */);
4828     }
4829 }
gfxstream_vk_GetBlobGOOGLE(VkDevice device,VkDeviceMemory memory)4830 VkResult gfxstream_vk_GetBlobGOOGLE(VkDevice device, VkDeviceMemory memory) {
4831     MESA_TRACE_SCOPE("vkGetBlobGOOGLE");
4832     VkResult vkGetBlobGOOGLE_VkResult_return = (VkResult)0;
4833     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4834     {
4835         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4836         vkGetBlobGOOGLE_VkResult_return =
4837             vkEnc->vkGetBlobGOOGLE(gfxstream_device->internal_object, memory, true /* do lock */);
4838     }
4839     return vkGetBlobGOOGLE_VkResult_return;
4840 }
gfxstream_vk_UpdateDescriptorSetWithTemplateSized2GOOGLE(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,uint32_t imageInfoCount,uint32_t bufferInfoCount,uint32_t bufferViewCount,uint32_t inlineUniformBlockCount,const uint32_t * pImageInfoEntryIndices,const uint32_t * pBufferInfoEntryIndices,const uint32_t * pBufferViewEntryIndices,const VkDescriptorImageInfo * pImageInfos,const VkDescriptorBufferInfo * pBufferInfos,const VkBufferView * pBufferViews,const uint8_t * pInlineUniformBlockData)4841 void gfxstream_vk_UpdateDescriptorSetWithTemplateSized2GOOGLE(
4842     VkDevice device, VkDescriptorSet descriptorSet,
4843     VkDescriptorUpdateTemplate descriptorUpdateTemplate, uint32_t imageInfoCount,
4844     uint32_t bufferInfoCount, uint32_t bufferViewCount, uint32_t inlineUniformBlockCount,
4845     const uint32_t* pImageInfoEntryIndices, const uint32_t* pBufferInfoEntryIndices,
4846     const uint32_t* pBufferViewEntryIndices, const VkDescriptorImageInfo* pImageInfos,
4847     const VkDescriptorBufferInfo* pBufferInfos, const VkBufferView* pBufferViews,
4848     const uint8_t* pInlineUniformBlockData) {
4849     MESA_TRACE_SCOPE("vkUpdateDescriptorSetWithTemplateSized2GOOGLE");
4850     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4851     {
4852         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4853         std::vector<VkDescriptorBufferInfo> internal_pBufferInfos(bufferInfoCount);
4854         for (uint32_t i = 0; i < bufferInfoCount; ++i) {
4855             if (pBufferInfos) {
4856                 internal_pBufferInfos[i] = pBufferInfos[i];
4857                 /* VkDescriptorBufferInfo::buffer */
4858                 if (internal_pBufferInfos[i].buffer) {
4859                     VK_FROM_HANDLE(gfxstream_vk_buffer, gfxstream_buffer,
4860                                    internal_pBufferInfos[i].buffer);
4861                     internal_pBufferInfos[i].buffer = gfxstream_buffer->internal_object;
4862                 }
4863             }
4864         }
4865         vkEnc->vkUpdateDescriptorSetWithTemplateSized2GOOGLE(
4866             gfxstream_device->internal_object, descriptorSet, descriptorUpdateTemplate,
4867             imageInfoCount, bufferInfoCount, bufferViewCount, inlineUniformBlockCount,
4868             pImageInfoEntryIndices, pBufferInfoEntryIndices, pBufferViewEntryIndices, pImageInfos,
4869             internal_pBufferInfos.data(), pBufferViews, pInlineUniformBlockData,
4870             true /* do lock */);
4871     }
4872 }
gfxstream_vk_QueueSubmitAsync2GOOGLE(VkQueue queue,uint32_t submitCount,const VkSubmitInfo2 * pSubmits,VkFence fence)4873 void gfxstream_vk_QueueSubmitAsync2GOOGLE(VkQueue queue, uint32_t submitCount,
4874                                           const VkSubmitInfo2* pSubmits, VkFence fence) {
4875     MESA_TRACE_SCOPE("vkQueueSubmitAsync2GOOGLE");
4876     VK_FROM_HANDLE(gfxstream_vk_queue, gfxstream_queue, queue);
4877     VK_FROM_HANDLE(gfxstream_vk_fence, gfxstream_fence, fence);
4878     {
4879         auto vkEnc =
4880             gfxstream::vk::ResourceTracker::getQueueEncoder(gfxstream_queue->internal_object);
4881         std::vector<VkSubmitInfo2> internal_pSubmits(submitCount);
4882         std::vector<std::vector<VkSemaphoreSubmitInfo>> internal_VkSubmitInfo2_pWaitSemaphoreInfos;
4883         std::vector<std::vector<VkCommandBufferSubmitInfo>>
4884             internal_VkSubmitInfo2_pCommandBufferInfos;
4885         std::vector<std::vector<VkSemaphoreSubmitInfo>>
4886             internal_VkSubmitInfo2_pSignalSemaphoreInfos;
4887         for (uint32_t i = 0; i < submitCount; ++i) {
4888             internal_pSubmits[i] = pSubmits[i];
4889             /* VkSubmitInfo2::pWaitSemaphoreInfos */
4890             internal_VkSubmitInfo2_pWaitSemaphoreInfos.push_back(
4891                 std::vector<VkSemaphoreSubmitInfo>());
4892             internal_VkSubmitInfo2_pWaitSemaphoreInfos[i] =
4893                 transformVkSemaphoreSubmitInfoList(internal_pSubmits[i].pWaitSemaphoreInfos,
4894                                                    internal_pSubmits[i].waitSemaphoreInfoCount);
4895             internal_pSubmits[i].pWaitSemaphoreInfos =
4896                 internal_VkSubmitInfo2_pWaitSemaphoreInfos[i].data();
4897             internal_pSubmits[i].waitSemaphoreInfoCount =
4898                 internal_VkSubmitInfo2_pWaitSemaphoreInfos[i].size();
4899             /* VkSubmitInfo2::pCommandBufferInfos */
4900             internal_VkSubmitInfo2_pCommandBufferInfos.push_back(
4901                 std::vector<VkCommandBufferSubmitInfo>());
4902             internal_VkSubmitInfo2_pCommandBufferInfos[i].resize(
4903                 internal_pSubmits[i].commandBufferInfoCount);
4904             for (uint32_t j = 0; j < internal_pSubmits[i].commandBufferInfoCount; ++j) {
4905                 internal_VkSubmitInfo2_pCommandBufferInfos[i][j] =
4906                     internal_pSubmits[i].pCommandBufferInfos[j];
4907                 /* VkCommandBufferSubmitInfo::commandBuffer */
4908                 VK_FROM_HANDLE(gfxstream_vk_command_buffer, gfxstream_commandBuffer,
4909                                internal_VkSubmitInfo2_pCommandBufferInfos[i][j].commandBuffer);
4910                 internal_VkSubmitInfo2_pCommandBufferInfos[i][j].commandBuffer =
4911                     gfxstream_commandBuffer->internal_object;
4912             }
4913             internal_pSubmits[i].pCommandBufferInfos =
4914                 internal_VkSubmitInfo2_pCommandBufferInfos[i].data();
4915             /* VkSubmitInfo2::pSignalSemaphoreInfos */
4916             internal_VkSubmitInfo2_pSignalSemaphoreInfos.push_back(
4917                 std::vector<VkSemaphoreSubmitInfo>());
4918             internal_VkSubmitInfo2_pSignalSemaphoreInfos[i] =
4919                 transformVkSemaphoreSubmitInfoList(internal_pSubmits[i].pSignalSemaphoreInfos,
4920                                                    internal_pSubmits[i].signalSemaphoreInfoCount);
4921             internal_pSubmits[i].pSignalSemaphoreInfos =
4922                 internal_VkSubmitInfo2_pSignalSemaphoreInfos[i].data();
4923             internal_pSubmits[i].signalSemaphoreInfoCount =
4924                 internal_VkSubmitInfo2_pSignalSemaphoreInfos[i].size();
4925         }
4926         vkEnc->vkQueueSubmitAsync2GOOGLE(
4927             gfxstream_queue->internal_object, submitCount, internal_pSubmits.data(),
4928             gfxstream_fence ? gfxstream_fence->internal_object : VK_NULL_HANDLE,
4929             true /* do lock */);
4930     }
4931 }
gfxstream_vk_GetSemaphoreGOOGLE(VkDevice device,VkSemaphore semaphore,uint64_t syncId)4932 VkResult gfxstream_vk_GetSemaphoreGOOGLE(VkDevice device, VkSemaphore semaphore, uint64_t syncId) {
4933     MESA_TRACE_SCOPE("vkGetSemaphoreGOOGLE");
4934     VkResult vkGetSemaphoreGOOGLE_VkResult_return = (VkResult)0;
4935     VK_FROM_HANDLE(gfxstream_vk_device, gfxstream_device, device);
4936     VK_FROM_HANDLE(gfxstream_vk_semaphore, gfxstream_semaphore, semaphore);
4937     {
4938         auto vkEnc = gfxstream::vk::ResourceTracker::getThreadLocalEncoder();
4939         vkGetSemaphoreGOOGLE_VkResult_return = vkEnc->vkGetSemaphoreGOOGLE(
4940             gfxstream_device->internal_object, gfxstream_semaphore->internal_object, syncId,
4941             true /* do lock */);
4942     }
4943     return vkGetSemaphoreGOOGLE_VkResult_return;
4944 }
4945 #endif
4946