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 VkDecoderSnapshot 17 // 18 // (impl) generated by scripts/genvk.py -registry 19 // ../../../../../hardware/google/gfxstream/codegen/vulkan/vulkan-docs-next/xml/vk.xml 20 // -registryGfxstream xml/vk_gfxstream.xml cereal -o 21 // ../../../../../hardware/google/gfxstream/host/vulkan/cereal 22 // 23 // Please do not modify directly; 24 // re-run mesa3d/src/gfxstream/codegen/generate-gfxstream-vulkan.sh, 25 // or directly from Python by defining: 26 // VULKAN_REGISTRY_XML_DIR : Directory containing vk.xml 27 // VULKAN_REGISTRY_SCRIPTS_DIR : Directory containing genvk.py 28 // CEREAL_OUTPUT_DIR: Where to put the generated sources. 29 // 30 // python3 $VULKAN_REGISTRY_SCRIPTS_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o 31 // $CEREAL_OUTPUT_DIR 32 // 33 34 #include "VkDecoderSnapshot.h" 35 36 #include "VkDecoderGlobalState.h" 37 #include "VkReconstruction.h" 38 #include "VulkanHandleMapping.h" 39 #include "aemu/base/synchronization/Lock.h" 40 41 using namespace gfxstream::vk; 42 using emugl::GfxApiLogger; 43 using emugl::HealthMonitor; 44 45 class VkDecoderSnapshot::Impl { 46 public: Impl()47 Impl() {} 48 save(android::base::Stream * stream)49 void save(android::base::Stream* stream) { mReconstruction.save(stream); } 50 load(android::base::Stream * stream,GfxApiLogger & gfx_logger,HealthMonitor<> * healthMonitor)51 void load(android::base::Stream* stream, GfxApiLogger& gfx_logger, 52 HealthMonitor<>* healthMonitor) { 53 mReconstruction.load(stream, gfx_logger, healthMonitor); 54 } 55 createExtraHandlesForNextApi(const uint64_t * created,uint32_t count)56 void createExtraHandlesForNextApi(const uint64_t* created, uint32_t count) { 57 mLock.lock(); 58 mReconstruction.createExtraHandlesForNextApi(created, count); 59 } 60 #ifdef VK_VERSION_1_0 vkCreateInstance(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,const VkInstanceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkInstance * pInstance)61 void vkCreateInstance(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 62 android::base::BumpPool* pool, VkResult input_result, 63 const VkInstanceCreateInfo* pCreateInfo, 64 const VkAllocationCallbacks* pAllocator, VkInstance* pInstance) { 65 if (!pInstance) return; 66 android::base::AutoLock lock(mLock); 67 // pInstance create 68 mReconstruction.addHandles((const uint64_t*)pInstance, 1); 69 auto apiHandle = mReconstruction.createApiInfo(); 70 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 71 mReconstruction.setApiTrace(apiInfo, OP_vkCreateInstance, snapshotTraceBegin, 72 snapshotTraceBytes); 73 mReconstruction.forEachHandleAddApi((const uint64_t*)pInstance, 1, apiHandle, 74 VkReconstruction::CREATED); 75 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pInstance, 1); 76 } vkDestroyInstance(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkInstance instance,const VkAllocationCallbacks * pAllocator)77 void vkDestroyInstance(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 78 android::base::BumpPool* pool, VkInstance instance, 79 const VkAllocationCallbacks* pAllocator) { 80 android::base::AutoLock lock(mLock); 81 // instance destroy 82 mReconstruction.removeHandles((const uint64_t*)(&instance), 1, true); 83 } vkEnumeratePhysicalDevices(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkInstance instance,uint32_t * pPhysicalDeviceCount,VkPhysicalDevice * pPhysicalDevices)84 void vkEnumeratePhysicalDevices(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 85 android::base::BumpPool* pool, VkResult input_result, 86 VkInstance instance, uint32_t* pPhysicalDeviceCount, 87 VkPhysicalDevice* pPhysicalDevices) { 88 if (!pPhysicalDevices) return; 89 android::base::AutoLock lock(mLock); 90 // pPhysicalDevices create 91 mReconstruction.addHandles((const uint64_t*)pPhysicalDevices, (*(pPhysicalDeviceCount))); 92 mReconstruction.addHandleDependency((const uint64_t*)pPhysicalDevices, 93 (*(pPhysicalDeviceCount)), 94 (uint64_t)(uintptr_t)instance); 95 auto apiHandle = mReconstruction.createApiInfo(); 96 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 97 mReconstruction.setApiTrace(apiInfo, OP_vkEnumeratePhysicalDevices, snapshotTraceBegin, 98 snapshotTraceBytes); 99 if (pPhysicalDeviceCount) { 100 mReconstruction.forEachHandleAddApi((const uint64_t*)pPhysicalDevices, 101 (*(pPhysicalDeviceCount)), apiHandle, 102 VkReconstruction::CREATED); 103 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pPhysicalDevices, 104 (*(pPhysicalDeviceCount))); 105 } 106 } vkGetPhysicalDeviceFeatures(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures * pFeatures)107 void vkGetPhysicalDeviceFeatures(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 108 android::base::BumpPool* pool, VkPhysicalDevice physicalDevice, 109 VkPhysicalDeviceFeatures* pFeatures) {} vkGetPhysicalDeviceFormatProperties(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties * pFormatProperties)110 void vkGetPhysicalDeviceFormatProperties(const uint8_t* snapshotTraceBegin, 111 size_t snapshotTraceBytes, 112 android::base::BumpPool* pool, 113 VkPhysicalDevice physicalDevice, VkFormat format, 114 VkFormatProperties* pFormatProperties) {} vkGetPhysicalDeviceImageFormatProperties(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkImageTiling tiling,VkImageUsageFlags usage,VkImageCreateFlags flags,VkImageFormatProperties * pImageFormatProperties)115 void vkGetPhysicalDeviceImageFormatProperties( 116 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 117 VkResult input_result, VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, 118 VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, 119 VkImageFormatProperties* pImageFormatProperties) {} vkGetPhysicalDeviceProperties(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties * pProperties)120 void vkGetPhysicalDeviceProperties(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 121 android::base::BumpPool* pool, 122 VkPhysicalDevice physicalDevice, 123 VkPhysicalDeviceProperties* pProperties) {} vkGetPhysicalDeviceQueueFamilyProperties(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties * pQueueFamilyProperties)124 void vkGetPhysicalDeviceQueueFamilyProperties(const uint8_t* snapshotTraceBegin, 125 size_t snapshotTraceBytes, 126 android::base::BumpPool* pool, 127 VkPhysicalDevice physicalDevice, 128 uint32_t* pQueueFamilyPropertyCount, 129 VkQueueFamilyProperties* pQueueFamilyProperties) { 130 } vkGetPhysicalDeviceMemoryProperties(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties * pMemoryProperties)131 void vkGetPhysicalDeviceMemoryProperties(const uint8_t* snapshotTraceBegin, 132 size_t snapshotTraceBytes, 133 android::base::BumpPool* pool, 134 VkPhysicalDevice physicalDevice, 135 VkPhysicalDeviceMemoryProperties* pMemoryProperties) {} vkGetInstanceProcAddr(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,PFN_vkVoidFunction input_result,VkInstance instance,const char * pName)136 void vkGetInstanceProcAddr(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 137 android::base::BumpPool* pool, PFN_vkVoidFunction input_result, 138 VkInstance instance, const char* pName) {} vkGetDeviceProcAddr(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,PFN_vkVoidFunction input_result,VkDevice device,const char * pName)139 void vkGetDeviceProcAddr(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 140 android::base::BumpPool* pool, PFN_vkVoidFunction input_result, 141 VkDevice device, const char* pName) {} vkCreateDevice(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkPhysicalDevice physicalDevice,const VkDeviceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDevice * pDevice)142 void vkCreateDevice(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 143 android::base::BumpPool* pool, VkResult input_result, 144 VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, 145 const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) { 146 if (!pDevice) return; 147 mLock.tryLock(); 148 // pDevice create 149 mReconstruction.addHandles((const uint64_t*)pDevice, 1); 150 mReconstruction.addHandleDependency((const uint64_t*)pDevice, 1, 151 (uint64_t)(uintptr_t)physicalDevice); 152 auto apiHandle = mReconstruction.createApiInfo(); 153 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 154 mReconstruction.setApiTrace(apiInfo, OP_vkCreateDevice, snapshotTraceBegin, 155 snapshotTraceBytes); 156 mReconstruction.forEachHandleAddApi((const uint64_t*)pDevice, 1, apiHandle, 157 VkReconstruction::CREATED); 158 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pDevice, 1); 159 mLock.unlock(); 160 } vkDestroyDevice(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,const VkAllocationCallbacks * pAllocator)161 void vkDestroyDevice(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 162 android::base::BumpPool* pool, VkDevice device, 163 const VkAllocationCallbacks* pAllocator) { 164 android::base::AutoLock lock(mLock); 165 // device destroy 166 mReconstruction.removeHandles((const uint64_t*)(&device), 1, true); 167 } vkEnumerateInstanceExtensionProperties(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,const char * pLayerName,uint32_t * pPropertyCount,VkExtensionProperties * pProperties)168 void vkEnumerateInstanceExtensionProperties(const uint8_t* snapshotTraceBegin, 169 size_t snapshotTraceBytes, 170 android::base::BumpPool* pool, 171 VkResult input_result, const char* pLayerName, 172 uint32_t* pPropertyCount, 173 VkExtensionProperties* pProperties) {} vkEnumerateDeviceExtensionProperties(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkPhysicalDevice physicalDevice,const char * pLayerName,uint32_t * pPropertyCount,VkExtensionProperties * pProperties)174 void vkEnumerateDeviceExtensionProperties(const uint8_t* snapshotTraceBegin, 175 size_t snapshotTraceBytes, 176 android::base::BumpPool* pool, VkResult input_result, 177 VkPhysicalDevice physicalDevice, 178 const char* pLayerName, uint32_t* pPropertyCount, 179 VkExtensionProperties* pProperties) {} vkEnumerateInstanceLayerProperties(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,uint32_t * pPropertyCount,VkLayerProperties * pProperties)180 void vkEnumerateInstanceLayerProperties(const uint8_t* snapshotTraceBegin, 181 size_t snapshotTraceBytes, 182 android::base::BumpPool* pool, VkResult input_result, 183 uint32_t* pPropertyCount, 184 VkLayerProperties* pProperties) {} vkEnumerateDeviceLayerProperties(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkLayerProperties * pProperties)185 void vkEnumerateDeviceLayerProperties(const uint8_t* snapshotTraceBegin, 186 size_t snapshotTraceBytes, android::base::BumpPool* pool, 187 VkResult input_result, VkPhysicalDevice physicalDevice, 188 uint32_t* pPropertyCount, 189 VkLayerProperties* pProperties) {} vkGetDeviceQueue(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,uint32_t queueFamilyIndex,uint32_t queueIndex,VkQueue * pQueue)190 void vkGetDeviceQueue(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 191 android::base::BumpPool* pool, VkDevice device, uint32_t queueFamilyIndex, 192 uint32_t queueIndex, VkQueue* pQueue) {} vkQueueSubmit(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkQueue queue,uint32_t submitCount,const VkSubmitInfo * pSubmits,VkFence fence)193 void vkQueueSubmit(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 194 android::base::BumpPool* pool, VkResult input_result, VkQueue queue, 195 uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) {} vkQueueWaitIdle(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkQueue queue)196 void vkQueueWaitIdle(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 197 android::base::BumpPool* pool, VkResult input_result, VkQueue queue) {} vkDeviceWaitIdle(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device)198 void vkDeviceWaitIdle(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 199 android::base::BumpPool* pool, VkResult input_result, VkDevice device) {} vkAllocateMemory(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkMemoryAllocateInfo * pAllocateInfo,const VkAllocationCallbacks * pAllocator,VkDeviceMemory * pMemory)200 void vkAllocateMemory(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 201 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 202 const VkMemoryAllocateInfo* pAllocateInfo, 203 const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory) { 204 if (!pMemory) return; 205 android::base::AutoLock lock(mLock); 206 // pMemory create 207 mReconstruction.addHandles((const uint64_t*)pMemory, 1); 208 mReconstruction.addHandleDependency((const uint64_t*)pMemory, 1, 209 (uint64_t)(uintptr_t)device); 210 const VkMemoryDedicatedAllocateInfo* dedicatedAllocateInfo = 211 vk_find_struct<VkMemoryDedicatedAllocateInfo>(pAllocateInfo); 212 if (dedicatedAllocateInfo) { 213 if (dedicatedAllocateInfo->image) { 214 mReconstruction.addHandleDependency( 215 (const uint64_t*)pMemory, 1, 216 (uint64_t)(uintptr_t)unboxed_to_boxed_non_dispatchable_VkImage( 217 dedicatedAllocateInfo->image)); 218 } 219 if (dedicatedAllocateInfo->buffer) { 220 mReconstruction.addHandleDependency( 221 (const uint64_t*)pMemory, 1, 222 (uint64_t)(uintptr_t)unboxed_to_boxed_non_dispatchable_VkBuffer( 223 dedicatedAllocateInfo->buffer)); 224 } 225 } 226 auto apiHandle = mReconstruction.createApiInfo(); 227 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 228 mReconstruction.setApiTrace(apiInfo, OP_vkAllocateMemory, snapshotTraceBegin, 229 snapshotTraceBytes); 230 mReconstruction.forEachHandleAddApi((const uint64_t*)pMemory, 1, apiHandle, 231 VkReconstruction::CREATED); 232 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pMemory, 1); 233 } vkFreeMemory(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkDeviceMemory memory,const VkAllocationCallbacks * pAllocator)234 void vkFreeMemory(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 235 android::base::BumpPool* pool, VkDevice device, VkDeviceMemory memory, 236 const VkAllocationCallbacks* pAllocator) { 237 android::base::AutoLock lock(mLock); 238 // memory destroy 239 mReconstruction.removeHandles((const uint64_t*)(&memory), 1, true); 240 } vkMapMemory(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,VkDeviceMemory memory,VkDeviceSize offset,VkDeviceSize size,VkMemoryMapFlags flags,void ** ppData)241 void vkMapMemory(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 242 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 243 VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, 244 VkMemoryMapFlags flags, void** ppData) {} vkUnmapMemory(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkDeviceMemory memory)245 void vkUnmapMemory(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 246 android::base::BumpPool* pool, VkDevice device, VkDeviceMemory memory) {} vkFlushMappedMemoryRanges(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,uint32_t memoryRangeCount,const VkMappedMemoryRange * pMemoryRanges)247 void vkFlushMappedMemoryRanges(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 248 android::base::BumpPool* pool, VkResult input_result, 249 VkDevice device, uint32_t memoryRangeCount, 250 const VkMappedMemoryRange* pMemoryRanges) {} vkInvalidateMappedMemoryRanges(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,uint32_t memoryRangeCount,const VkMappedMemoryRange * pMemoryRanges)251 void vkInvalidateMappedMemoryRanges(const uint8_t* snapshotTraceBegin, 252 size_t snapshotTraceBytes, android::base::BumpPool* pool, 253 VkResult input_result, VkDevice device, 254 uint32_t memoryRangeCount, 255 const VkMappedMemoryRange* pMemoryRanges) {} vkGetDeviceMemoryCommitment(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkDeviceMemory memory,VkDeviceSize * pCommittedMemoryInBytes)256 void vkGetDeviceMemoryCommitment(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 257 android::base::BumpPool* pool, VkDevice device, 258 VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) { 259 } vkBindBufferMemory(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,VkBuffer buffer,VkDeviceMemory memory,VkDeviceSize memoryOffset)260 void vkBindBufferMemory(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 261 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 262 VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset) { 263 VkBuffer boxed_VkBuffer = unboxed_to_boxed_non_dispatchable_VkBuffer((&buffer)[0]); 264 android::base::AutoLock lock(mLock); 265 // buffer create 266 mReconstruction.addHandleDependency( 267 (const uint64_t*)&boxed_VkBuffer, 1, 268 (uint64_t)(uintptr_t)unboxed_to_boxed_non_dispatchable_VkDeviceMemory(memory), 269 VkReconstruction::BOUND_MEMORY); 270 mReconstruction.addHandleDependency((const uint64_t*)&boxed_VkBuffer, 1, 271 (uint64_t)(uintptr_t)((&boxed_VkBuffer)[0]), 272 VkReconstruction::BOUND_MEMORY); 273 auto apiHandle = mReconstruction.createApiInfo(); 274 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 275 mReconstruction.setApiTrace(apiInfo, OP_vkBindBufferMemory, snapshotTraceBegin, 276 snapshotTraceBytes); 277 mReconstruction.forEachHandleAddApi((const uint64_t*)&boxed_VkBuffer, 1, apiHandle, 278 VkReconstruction::BOUND_MEMORY); 279 } vkBindImageMemory(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,VkImage image,VkDeviceMemory memory,VkDeviceSize memoryOffset)280 void vkBindImageMemory(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 281 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 282 VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset) { 283 VkImage boxed_VkImage = unboxed_to_boxed_non_dispatchable_VkImage((&image)[0]); 284 android::base::AutoLock lock(mLock); 285 // image create 286 mReconstruction.addHandleDependency( 287 (const uint64_t*)&boxed_VkImage, 1, 288 (uint64_t)(uintptr_t)unboxed_to_boxed_non_dispatchable_VkDeviceMemory(memory), 289 VkReconstruction::BOUND_MEMORY); 290 mReconstruction.addHandleDependency((const uint64_t*)&boxed_VkImage, 1, 291 (uint64_t)(uintptr_t)((&boxed_VkImage)[0]), 292 VkReconstruction::BOUND_MEMORY); 293 auto apiHandle = mReconstruction.createApiInfo(); 294 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 295 mReconstruction.setApiTrace(apiInfo, OP_vkBindImageMemory, snapshotTraceBegin, 296 snapshotTraceBytes); 297 mReconstruction.forEachHandleAddApi((const uint64_t*)&boxed_VkImage, 1, apiHandle, 298 VkReconstruction::BOUND_MEMORY); 299 } vkGetBufferMemoryRequirements(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkBuffer buffer,VkMemoryRequirements * pMemoryRequirements)300 void vkGetBufferMemoryRequirements(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 301 android::base::BumpPool* pool, VkDevice device, 302 VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements) { 303 } vkGetImageMemoryRequirements(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkImage image,VkMemoryRequirements * pMemoryRequirements)304 void vkGetImageMemoryRequirements(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 305 android::base::BumpPool* pool, VkDevice device, VkImage image, 306 VkMemoryRequirements* pMemoryRequirements) {} vkGetImageSparseMemoryRequirements(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkImage image,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements * pSparseMemoryRequirements)307 void vkGetImageSparseMemoryRequirements( 308 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 309 VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, 310 VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {} vkGetPhysicalDeviceSparseImageFormatProperties(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,VkFormat format,VkImageType type,VkSampleCountFlagBits samples,VkImageUsageFlags usage,VkImageTiling tiling,uint32_t * pPropertyCount,VkSparseImageFormatProperties * pProperties)311 void vkGetPhysicalDeviceSparseImageFormatProperties( 312 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 313 VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, 314 VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, 315 uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties) {} vkQueueBindSparse(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkQueue queue,uint32_t bindInfoCount,const VkBindSparseInfo * pBindInfo,VkFence fence)316 void vkQueueBindSparse(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 317 android::base::BumpPool* pool, VkResult input_result, VkQueue queue, 318 uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, 319 VkFence fence) {} vkCreateFence(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkFenceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)320 void vkCreateFence(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 321 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 322 const VkFenceCreateInfo* pCreateInfo, 323 const VkAllocationCallbacks* pAllocator, VkFence* pFence) { 324 if (!pFence) return; 325 android::base::AutoLock lock(mLock); 326 // pFence create 327 mReconstruction.addHandles((const uint64_t*)pFence, 1); 328 mReconstruction.addHandleDependency((const uint64_t*)pFence, 1, 329 (uint64_t)(uintptr_t)device); 330 auto apiHandle = mReconstruction.createApiInfo(); 331 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 332 mReconstruction.setApiTrace(apiInfo, OP_vkCreateFence, snapshotTraceBegin, 333 snapshotTraceBytes); 334 mReconstruction.forEachHandleAddApi((const uint64_t*)pFence, 1, apiHandle, 335 VkReconstruction::CREATED); 336 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pFence, 1); 337 } vkDestroyFence(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkFence fence,const VkAllocationCallbacks * pAllocator)338 void vkDestroyFence(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 339 android::base::BumpPool* pool, VkDevice device, VkFence fence, 340 const VkAllocationCallbacks* pAllocator) { 341 android::base::AutoLock lock(mLock); 342 // fence destroy 343 mReconstruction.removeHandles((const uint64_t*)(&fence), 1, true); 344 } vkResetFences(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,uint32_t fenceCount,const VkFence * pFences)345 void vkResetFences(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 346 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 347 uint32_t fenceCount, const VkFence* pFences) {} vkGetFenceStatus(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,VkFence fence)348 void vkGetFenceStatus(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 349 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 350 VkFence fence) {} vkWaitForFences(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,uint32_t fenceCount,const VkFence * pFences,VkBool32 waitAll,uint64_t timeout)351 void vkWaitForFences(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 352 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 353 uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, 354 uint64_t timeout) {} vkCreateSemaphore(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)355 void vkCreateSemaphore(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 356 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 357 const VkSemaphoreCreateInfo* pCreateInfo, 358 const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore) { 359 if (!pSemaphore) return; 360 android::base::AutoLock lock(mLock); 361 // pSemaphore create 362 mReconstruction.addHandles((const uint64_t*)pSemaphore, 1); 363 mReconstruction.addHandleDependency((const uint64_t*)pSemaphore, 1, 364 (uint64_t)(uintptr_t)device); 365 auto apiHandle = mReconstruction.createApiInfo(); 366 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 367 mReconstruction.setApiTrace(apiInfo, OP_vkCreateSemaphore, snapshotTraceBegin, 368 snapshotTraceBytes); 369 mReconstruction.forEachHandleAddApi((const uint64_t*)pSemaphore, 1, apiHandle, 370 VkReconstruction::CREATED); 371 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pSemaphore, 1); 372 } vkDestroySemaphore(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)373 void vkDestroySemaphore(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 374 android::base::BumpPool* pool, VkDevice device, VkSemaphore semaphore, 375 const VkAllocationCallbacks* pAllocator) { 376 android::base::AutoLock lock(mLock); 377 // semaphore destroy 378 mReconstruction.removeHandles((const uint64_t*)(&semaphore), 1, true); 379 } vkCreateEvent(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkEventCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkEvent * pEvent)380 void vkCreateEvent(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 381 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 382 const VkEventCreateInfo* pCreateInfo, 383 const VkAllocationCallbacks* pAllocator, VkEvent* pEvent) { 384 if (!pEvent) return; 385 android::base::AutoLock lock(mLock); 386 // pEvent create 387 mReconstruction.addHandles((const uint64_t*)pEvent, 1); 388 mReconstruction.addHandleDependency((const uint64_t*)pEvent, 1, 389 (uint64_t)(uintptr_t)device); 390 auto apiHandle = mReconstruction.createApiInfo(); 391 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 392 mReconstruction.setApiTrace(apiInfo, OP_vkCreateEvent, snapshotTraceBegin, 393 snapshotTraceBytes); 394 mReconstruction.forEachHandleAddApi((const uint64_t*)pEvent, 1, apiHandle, 395 VkReconstruction::CREATED); 396 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pEvent, 1); 397 } vkDestroyEvent(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkEvent event,const VkAllocationCallbacks * pAllocator)398 void vkDestroyEvent(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 399 android::base::BumpPool* pool, VkDevice device, VkEvent event, 400 const VkAllocationCallbacks* pAllocator) { 401 android::base::AutoLock lock(mLock); 402 // event destroy 403 mReconstruction.removeHandles((const uint64_t*)(&event), 1, true); 404 } vkGetEventStatus(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,VkEvent event)405 void vkGetEventStatus(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 406 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 407 VkEvent event) {} vkSetEvent(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,VkEvent event)408 void vkSetEvent(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 409 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 410 VkEvent event) {} vkResetEvent(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,VkEvent event)411 void vkResetEvent(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 412 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 413 VkEvent event) {} vkCreateQueryPool(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkQueryPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkQueryPool * pQueryPool)414 void vkCreateQueryPool(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 415 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 416 const VkQueryPoolCreateInfo* pCreateInfo, 417 const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool) { 418 if (!pQueryPool) return; 419 android::base::AutoLock lock(mLock); 420 // pQueryPool create 421 mReconstruction.addHandles((const uint64_t*)pQueryPool, 1); 422 mReconstruction.addHandleDependency((const uint64_t*)pQueryPool, 1, 423 (uint64_t)(uintptr_t)device); 424 auto apiHandle = mReconstruction.createApiInfo(); 425 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 426 mReconstruction.setApiTrace(apiInfo, OP_vkCreateQueryPool, snapshotTraceBegin, 427 snapshotTraceBytes); 428 mReconstruction.forEachHandleAddApi((const uint64_t*)pQueryPool, 1, apiHandle, 429 VkReconstruction::CREATED); 430 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pQueryPool, 1); 431 } vkDestroyQueryPool(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkQueryPool queryPool,const VkAllocationCallbacks * pAllocator)432 void vkDestroyQueryPool(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 433 android::base::BumpPool* pool, VkDevice device, VkQueryPool queryPool, 434 const VkAllocationCallbacks* pAllocator) { 435 android::base::AutoLock lock(mLock); 436 // queryPool destroy 437 mReconstruction.removeHandles((const uint64_t*)(&queryPool), 1, true); 438 } vkGetQueryPoolResults(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount,size_t dataSize,void * pData,VkDeviceSize stride,VkQueryResultFlags flags)439 void vkGetQueryPoolResults(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 440 android::base::BumpPool* pool, VkResult input_result, 441 VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, 442 uint32_t queryCount, size_t dataSize, void* pData, 443 VkDeviceSize stride, VkQueryResultFlags flags) {} vkCreateBuffer(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkBufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBuffer * pBuffer)444 void vkCreateBuffer(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 445 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 446 const VkBufferCreateInfo* pCreateInfo, 447 const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer) { 448 if (!pBuffer) return; 449 android::base::AutoLock lock(mLock); 450 // pBuffer create 451 mReconstruction.addHandles((const uint64_t*)pBuffer, 1); 452 mReconstruction.addHandleDependency((const uint64_t*)pBuffer, 1, 453 (uint64_t)(uintptr_t)device); 454 auto apiHandle = mReconstruction.createApiInfo(); 455 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 456 mReconstruction.setApiTrace(apiInfo, OP_vkCreateBuffer, snapshotTraceBegin, 457 snapshotTraceBytes); 458 mReconstruction.forEachHandleAddApi((const uint64_t*)pBuffer, 1, apiHandle, 459 VkReconstruction::CREATED); 460 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pBuffer, 1); 461 } vkDestroyBuffer(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkBuffer buffer,const VkAllocationCallbacks * pAllocator)462 void vkDestroyBuffer(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 463 android::base::BumpPool* pool, VkDevice device, VkBuffer buffer, 464 const VkAllocationCallbacks* pAllocator) { 465 android::base::AutoLock lock(mLock); 466 // buffer destroy 467 mReconstruction.removeHandles((const uint64_t*)(&buffer), 1, true); 468 } vkCreateBufferView(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkBufferViewCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBufferView * pView)469 void vkCreateBufferView(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 470 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 471 const VkBufferViewCreateInfo* pCreateInfo, 472 const VkAllocationCallbacks* pAllocator, VkBufferView* pView) { 473 if (!pView) return; 474 android::base::AutoLock lock(mLock); 475 // pView create 476 mReconstruction.addHandles((const uint64_t*)pView, 1); 477 mReconstruction.addHandleDependency((const uint64_t*)pView, 1, (uint64_t)(uintptr_t)device); 478 auto apiHandle = mReconstruction.createApiInfo(); 479 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 480 mReconstruction.setApiTrace(apiInfo, OP_vkCreateBufferView, snapshotTraceBegin, 481 snapshotTraceBytes); 482 mReconstruction.forEachHandleAddApi((const uint64_t*)pView, 1, apiHandle, 483 VkReconstruction::CREATED); 484 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pView, 1); 485 } vkDestroyBufferView(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkBufferView bufferView,const VkAllocationCallbacks * pAllocator)486 void vkDestroyBufferView(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 487 android::base::BumpPool* pool, VkDevice device, 488 VkBufferView bufferView, const VkAllocationCallbacks* pAllocator) { 489 android::base::AutoLock lock(mLock); 490 // bufferView destroy 491 mReconstruction.removeHandles((const uint64_t*)(&bufferView), 1, true); 492 } vkCreateImage(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkImageCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImage * pImage)493 void vkCreateImage(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 494 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 495 const VkImageCreateInfo* pCreateInfo, 496 const VkAllocationCallbacks* pAllocator, VkImage* pImage) { 497 if (!pImage) return; 498 android::base::AutoLock lock(mLock); 499 // pImage create 500 mReconstruction.addHandles((const uint64_t*)pImage, 1); 501 mReconstruction.addHandleDependency((const uint64_t*)pImage, 1, 502 (uint64_t)(uintptr_t)device); 503 auto apiHandle = mReconstruction.createApiInfo(); 504 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 505 mReconstruction.setApiTrace(apiInfo, OP_vkCreateImage, snapshotTraceBegin, 506 snapshotTraceBytes); 507 mReconstruction.forEachHandleAddApi((const uint64_t*)pImage, 1, apiHandle, 508 VkReconstruction::CREATED); 509 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pImage, 1); 510 } vkDestroyImage(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkImage image,const VkAllocationCallbacks * pAllocator)511 void vkDestroyImage(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 512 android::base::BumpPool* pool, VkDevice device, VkImage image, 513 const VkAllocationCallbacks* pAllocator) { 514 android::base::AutoLock lock(mLock); 515 // image destroy 516 mReconstruction.removeHandles((const uint64_t*)(&image), 1, true); 517 } vkGetImageSubresourceLayout(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkImage image,const VkImageSubresource * pSubresource,VkSubresourceLayout * pLayout)518 void vkGetImageSubresourceLayout(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 519 android::base::BumpPool* pool, VkDevice device, VkImage image, 520 const VkImageSubresource* pSubresource, 521 VkSubresourceLayout* pLayout) {} vkCreateImageView(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkImageViewCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkImageView * pView)522 void vkCreateImageView(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 523 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 524 const VkImageViewCreateInfo* pCreateInfo, 525 const VkAllocationCallbacks* pAllocator, VkImageView* pView) { 526 if (!pView) return; 527 android::base::AutoLock lock(mLock); 528 // pView create 529 mReconstruction.addHandles((const uint64_t*)pView, 1); 530 mReconstruction.addHandleDependency((const uint64_t*)pView, 1, (uint64_t)(uintptr_t)device); 531 mReconstruction.addHandleDependency( 532 (const uint64_t*)pView, 1, 533 (uint64_t)(uintptr_t)unboxed_to_boxed_non_dispatchable_VkImage(pCreateInfo->image), 534 VkReconstruction::CREATED, VkReconstruction::BOUND_MEMORY); 535 auto apiHandle = mReconstruction.createApiInfo(); 536 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 537 mReconstruction.setApiTrace(apiInfo, OP_vkCreateImageView, snapshotTraceBegin, 538 snapshotTraceBytes); 539 mReconstruction.forEachHandleAddApi((const uint64_t*)pView, 1, apiHandle, 540 VkReconstruction::CREATED); 541 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pView, 1); 542 } vkDestroyImageView(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkImageView imageView,const VkAllocationCallbacks * pAllocator)543 void vkDestroyImageView(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 544 android::base::BumpPool* pool, VkDevice device, VkImageView imageView, 545 const VkAllocationCallbacks* pAllocator) { 546 android::base::AutoLock lock(mLock); 547 // imageView destroy 548 mReconstruction.removeHandles((const uint64_t*)(&imageView), 1, true); 549 } vkCreateShaderModule(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkShaderModuleCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkShaderModule * pShaderModule)550 void vkCreateShaderModule(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 551 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 552 const VkShaderModuleCreateInfo* pCreateInfo, 553 const VkAllocationCallbacks* pAllocator, 554 VkShaderModule* pShaderModule) { 555 if (!pShaderModule) return; 556 android::base::AutoLock lock(mLock); 557 // pShaderModule create 558 mReconstruction.addHandles((const uint64_t*)pShaderModule, 1); 559 mReconstruction.addHandleDependency((const uint64_t*)pShaderModule, 1, 560 (uint64_t)(uintptr_t)device); 561 auto apiHandle = mReconstruction.createApiInfo(); 562 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 563 mReconstruction.setApiTrace(apiInfo, OP_vkCreateShaderModule, snapshotTraceBegin, 564 snapshotTraceBytes); 565 mReconstruction.forEachHandleAddApi((const uint64_t*)pShaderModule, 1, apiHandle, 566 VkReconstruction::CREATED); 567 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pShaderModule, 1); 568 } vkDestroyShaderModule(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkShaderModule shaderModule,const VkAllocationCallbacks * pAllocator)569 void vkDestroyShaderModule(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 570 android::base::BumpPool* pool, VkDevice device, 571 VkShaderModule shaderModule, 572 const VkAllocationCallbacks* pAllocator) { 573 android::base::AutoLock lock(mLock); 574 // shaderModule destroy 575 mReconstruction.removeHandles((const uint64_t*)(&shaderModule), 1, false); 576 } vkCreatePipelineCache(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkPipelineCacheCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPipelineCache * pPipelineCache)577 void vkCreatePipelineCache(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 578 android::base::BumpPool* pool, VkResult input_result, 579 VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, 580 const VkAllocationCallbacks* pAllocator, 581 VkPipelineCache* pPipelineCache) { 582 if (!pPipelineCache) return; 583 android::base::AutoLock lock(mLock); 584 // pPipelineCache create 585 mReconstruction.addHandles((const uint64_t*)pPipelineCache, 1); 586 mReconstruction.addHandleDependency((const uint64_t*)pPipelineCache, 1, 587 (uint64_t)(uintptr_t)device); 588 auto apiHandle = mReconstruction.createApiInfo(); 589 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 590 mReconstruction.setApiTrace(apiInfo, OP_vkCreatePipelineCache, snapshotTraceBegin, 591 snapshotTraceBytes); 592 mReconstruction.forEachHandleAddApi((const uint64_t*)pPipelineCache, 1, apiHandle, 593 VkReconstruction::CREATED); 594 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pPipelineCache, 1); 595 } vkDestroyPipelineCache(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkPipelineCache pipelineCache,const VkAllocationCallbacks * pAllocator)596 void vkDestroyPipelineCache(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 597 android::base::BumpPool* pool, VkDevice device, 598 VkPipelineCache pipelineCache, 599 const VkAllocationCallbacks* pAllocator) { 600 android::base::AutoLock lock(mLock); 601 // pipelineCache destroy 602 mReconstruction.removeHandles((const uint64_t*)(&pipelineCache), 1, true); 603 } vkGetPipelineCacheData(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,VkPipelineCache pipelineCache,size_t * pDataSize,void * pData)604 void vkGetPipelineCacheData(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 605 android::base::BumpPool* pool, VkResult input_result, 606 VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, 607 void* pData) {} vkMergePipelineCaches(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,VkPipelineCache dstCache,uint32_t srcCacheCount,const VkPipelineCache * pSrcCaches)608 void vkMergePipelineCaches(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 609 android::base::BumpPool* pool, VkResult input_result, 610 VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, 611 const VkPipelineCache* pSrcCaches) {} vkCreateGraphicsPipelines(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkGraphicsPipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)612 void vkCreateGraphicsPipelines(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 613 android::base::BumpPool* pool, VkResult input_result, 614 VkDevice device, VkPipelineCache pipelineCache, 615 uint32_t createInfoCount, 616 const VkGraphicsPipelineCreateInfo* pCreateInfos, 617 const VkAllocationCallbacks* pAllocator, 618 VkPipeline* pPipelines) { 619 if (!pPipelines) return; 620 android::base::AutoLock lock(mLock); 621 // pPipelines create 622 mReconstruction.addHandles((const uint64_t*)pPipelines, ((createInfoCount))); 623 mReconstruction.addHandleDependency((const uint64_t*)pPipelines, ((createInfoCount)), 624 (uint64_t)(uintptr_t)device); 625 for (uint32_t i = 0; i < createInfoCount; ++i) { 626 for (uint32_t j = 0; j < pCreateInfos[i].stageCount; ++j) { 627 mReconstruction.addHandleDependency( 628 (const uint64_t*)(pPipelines + i), 1, 629 (uint64_t)(uintptr_t)unboxed_to_boxed_non_dispatchable_VkShaderModule( 630 pCreateInfos[i].pStages[j].module)); 631 } 632 mReconstruction.addHandleDependency( 633 (const uint64_t*)(pPipelines + i), 1, 634 (uint64_t)(uintptr_t)unboxed_to_boxed_non_dispatchable_VkRenderPass( 635 pCreateInfos[i].renderPass)); 636 } 637 auto apiHandle = mReconstruction.createApiInfo(); 638 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 639 mReconstruction.setApiTrace(apiInfo, OP_vkCreateGraphicsPipelines, snapshotTraceBegin, 640 snapshotTraceBytes); 641 mReconstruction.forEachHandleAddApi((const uint64_t*)pPipelines, ((createInfoCount)), 642 apiHandle, VkReconstruction::CREATED); 643 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pPipelines, 644 ((createInfoCount))); 645 } vkCreateComputePipelines(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkComputePipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)646 void vkCreateComputePipelines(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 647 android::base::BumpPool* pool, VkResult input_result, 648 VkDevice device, VkPipelineCache pipelineCache, 649 uint32_t createInfoCount, 650 const VkComputePipelineCreateInfo* pCreateInfos, 651 const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) { 652 if (!pPipelines) return; 653 android::base::AutoLock lock(mLock); 654 // pPipelines create 655 mReconstruction.addHandles((const uint64_t*)pPipelines, ((createInfoCount))); 656 mReconstruction.addHandleDependency((const uint64_t*)pPipelines, ((createInfoCount)), 657 (uint64_t)(uintptr_t)device); 658 auto apiHandle = mReconstruction.createApiInfo(); 659 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 660 mReconstruction.setApiTrace(apiInfo, OP_vkCreateComputePipelines, snapshotTraceBegin, 661 snapshotTraceBytes); 662 mReconstruction.forEachHandleAddApi((const uint64_t*)pPipelines, ((createInfoCount)), 663 apiHandle, VkReconstruction::CREATED); 664 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pPipelines, 665 ((createInfoCount))); 666 } vkDestroyPipeline(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkPipeline pipeline,const VkAllocationCallbacks * pAllocator)667 void vkDestroyPipeline(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 668 android::base::BumpPool* pool, VkDevice device, VkPipeline pipeline, 669 const VkAllocationCallbacks* pAllocator) { 670 android::base::AutoLock lock(mLock); 671 // pipeline destroy 672 mReconstruction.removeHandles((const uint64_t*)(&pipeline), 1, true); 673 } vkCreatePipelineLayout(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkPipelineLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPipelineLayout * pPipelineLayout)674 void vkCreatePipelineLayout(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 675 android::base::BumpPool* pool, VkResult input_result, 676 VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, 677 const VkAllocationCallbacks* pAllocator, 678 VkPipelineLayout* pPipelineLayout) { 679 if (!pPipelineLayout) return; 680 android::base::AutoLock lock(mLock); 681 // pPipelineLayout create 682 mReconstruction.addHandles((const uint64_t*)pPipelineLayout, 1); 683 mReconstruction.addHandleDependency((const uint64_t*)pPipelineLayout, 1, 684 (uint64_t)(uintptr_t)device); 685 auto apiHandle = mReconstruction.createApiInfo(); 686 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 687 mReconstruction.setApiTrace(apiInfo, OP_vkCreatePipelineLayout, snapshotTraceBegin, 688 snapshotTraceBytes); 689 mReconstruction.forEachHandleAddApi((const uint64_t*)pPipelineLayout, 1, apiHandle, 690 VkReconstruction::CREATED); 691 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pPipelineLayout, 1); 692 } vkDestroyPipelineLayout(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkPipelineLayout pipelineLayout,const VkAllocationCallbacks * pAllocator)693 void vkDestroyPipelineLayout(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 694 android::base::BumpPool* pool, VkDevice device, 695 VkPipelineLayout pipelineLayout, 696 const VkAllocationCallbacks* pAllocator) { 697 android::base::AutoLock lock(mLock); 698 // pipelineLayout destroy 699 mReconstruction.removeHandles((const uint64_t*)(&pipelineLayout), 1, true); 700 } vkCreateSampler(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkSamplerCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSampler * pSampler)701 void vkCreateSampler(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 702 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 703 const VkSamplerCreateInfo* pCreateInfo, 704 const VkAllocationCallbacks* pAllocator, VkSampler* pSampler) { 705 if (!pSampler) return; 706 android::base::AutoLock lock(mLock); 707 // pSampler create 708 mReconstruction.addHandles((const uint64_t*)pSampler, 1); 709 mReconstruction.addHandleDependency((const uint64_t*)pSampler, 1, 710 (uint64_t)(uintptr_t)device); 711 auto apiHandle = mReconstruction.createApiInfo(); 712 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 713 mReconstruction.setApiTrace(apiInfo, OP_vkCreateSampler, snapshotTraceBegin, 714 snapshotTraceBytes); 715 mReconstruction.forEachHandleAddApi((const uint64_t*)pSampler, 1, apiHandle, 716 VkReconstruction::CREATED); 717 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pSampler, 1); 718 } vkDestroySampler(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkSampler sampler,const VkAllocationCallbacks * pAllocator)719 void vkDestroySampler(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 720 android::base::BumpPool* pool, VkDevice device, VkSampler sampler, 721 const VkAllocationCallbacks* pAllocator) { 722 android::base::AutoLock lock(mLock); 723 // sampler destroy 724 mReconstruction.removeHandles((const uint64_t*)(&sampler), 1, true); 725 } vkCreateDescriptorSetLayout(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorSetLayout * pSetLayout)726 void vkCreateDescriptorSetLayout(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 727 android::base::BumpPool* pool, VkResult input_result, 728 VkDevice device, 729 const VkDescriptorSetLayoutCreateInfo* pCreateInfo, 730 const VkAllocationCallbacks* pAllocator, 731 VkDescriptorSetLayout* pSetLayout) { 732 if (!pSetLayout) return; 733 android::base::AutoLock lock(mLock); 734 // pSetLayout create 735 mReconstruction.addHandles((const uint64_t*)pSetLayout, 1); 736 mReconstruction.addHandleDependency((const uint64_t*)pSetLayout, 1, 737 (uint64_t)(uintptr_t)device); 738 auto apiHandle = mReconstruction.createApiInfo(); 739 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 740 mReconstruction.setApiTrace(apiInfo, OP_vkCreateDescriptorSetLayout, snapshotTraceBegin, 741 snapshotTraceBytes); 742 mReconstruction.forEachHandleAddApi((const uint64_t*)pSetLayout, 1, apiHandle, 743 VkReconstruction::CREATED); 744 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pSetLayout, 1); 745 } vkDestroyDescriptorSetLayout(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkDescriptorSetLayout descriptorSetLayout,const VkAllocationCallbacks * pAllocator)746 void vkDestroyDescriptorSetLayout(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 747 android::base::BumpPool* pool, VkDevice device, 748 VkDescriptorSetLayout descriptorSetLayout, 749 const VkAllocationCallbacks* pAllocator) { 750 android::base::AutoLock lock(mLock); 751 // descriptorSetLayout destroy 752 mReconstruction.removeHandles((const uint64_t*)(&descriptorSetLayout), 1, true); 753 } vkCreateDescriptorPool(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkDescriptorPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorPool * pDescriptorPool)754 void vkCreateDescriptorPool(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 755 android::base::BumpPool* pool, VkResult input_result, 756 VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, 757 const VkAllocationCallbacks* pAllocator, 758 VkDescriptorPool* pDescriptorPool) { 759 if (!pDescriptorPool) return; 760 mLock.tryLock(); 761 // pDescriptorPool create 762 mReconstruction.addHandles((const uint64_t*)pDescriptorPool, 1); 763 mReconstruction.addHandleDependency((const uint64_t*)pDescriptorPool, 1, 764 (uint64_t)(uintptr_t)device); 765 auto apiHandle = mReconstruction.createApiInfo(); 766 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 767 mReconstruction.setApiTrace(apiInfo, OP_vkCreateDescriptorPool, snapshotTraceBegin, 768 snapshotTraceBytes); 769 mReconstruction.forEachHandleAddApi((const uint64_t*)pDescriptorPool, 1, apiHandle, 770 VkReconstruction::CREATED); 771 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pDescriptorPool, 1); 772 mLock.unlock(); 773 } vkDestroyDescriptorPool(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkDescriptorPool descriptorPool,const VkAllocationCallbacks * pAllocator)774 void vkDestroyDescriptorPool(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 775 android::base::BumpPool* pool, VkDevice device, 776 VkDescriptorPool descriptorPool, 777 const VkAllocationCallbacks* pAllocator) { 778 android::base::AutoLock lock(mLock); 779 // descriptorPool destroy 780 mReconstruction.removeHandles((const uint64_t*)(&descriptorPool), 1, true); 781 } vkResetDescriptorPool(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,VkDescriptorPool descriptorPool,VkDescriptorPoolResetFlags flags)782 void vkResetDescriptorPool(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 783 android::base::BumpPool* pool, VkResult input_result, 784 VkDevice device, VkDescriptorPool descriptorPool, 785 VkDescriptorPoolResetFlags flags) {} vkAllocateDescriptorSets(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkDescriptorSetAllocateInfo * pAllocateInfo,VkDescriptorSet * pDescriptorSets)786 void vkAllocateDescriptorSets(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 787 android::base::BumpPool* pool, VkResult input_result, 788 VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, 789 VkDescriptorSet* pDescriptorSets) { 790 if (!pDescriptorSets) return; 791 android::base::AutoLock lock(mLock); 792 // pDescriptorSets create 793 mReconstruction.addHandles((const uint64_t*)pDescriptorSets, 794 pAllocateInfo->descriptorSetCount); 795 mReconstruction.addHandleDependency((const uint64_t*)pDescriptorSets, 796 pAllocateInfo->descriptorSetCount, 797 (uint64_t)(uintptr_t)device); 798 mReconstruction.addHandleDependency( 799 (const uint64_t*)pDescriptorSets, pAllocateInfo->descriptorSetCount, 800 (uint64_t)(uintptr_t)unboxed_to_boxed_non_dispatchable_VkDescriptorPool( 801 pAllocateInfo->descriptorPool)); 802 auto apiHandle = mReconstruction.createApiInfo(); 803 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 804 mReconstruction.setApiTrace(apiInfo, OP_vkAllocateDescriptorSets, snapshotTraceBegin, 805 snapshotTraceBytes); 806 mReconstruction.forEachHandleAddApi((const uint64_t*)pDescriptorSets, 807 pAllocateInfo->descriptorSetCount, apiHandle, 808 VkReconstruction::CREATED); 809 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pDescriptorSets, 810 pAllocateInfo->descriptorSetCount); 811 } vkFreeDescriptorSets(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,VkDescriptorPool descriptorPool,uint32_t descriptorSetCount,const VkDescriptorSet * pDescriptorSets)812 void vkFreeDescriptorSets(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 813 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 814 VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, 815 const VkDescriptorSet* pDescriptorSets) { 816 android::base::AutoLock lock(mLock); 817 // pDescriptorSets destroy 818 mReconstruction.removeHandles((const uint64_t*)pDescriptorSets, ((descriptorSetCount)), 819 true); 820 } vkUpdateDescriptorSets(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,uint32_t descriptorWriteCount,const VkWriteDescriptorSet * pDescriptorWrites,uint32_t descriptorCopyCount,const VkCopyDescriptorSet * pDescriptorCopies)821 void vkUpdateDescriptorSets(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 822 android::base::BumpPool* pool, VkDevice device, 823 uint32_t descriptorWriteCount, 824 const VkWriteDescriptorSet* pDescriptorWrites, 825 uint32_t descriptorCopyCount, 826 const VkCopyDescriptorSet* pDescriptorCopies) { 827 android::base::AutoLock lock(mLock); 828 // pDescriptorWrites action 829 VkDecoderGlobalState* m_state = VkDecoderGlobalState::get(); 830 if (m_state->batchedDescriptorSetUpdateEnabled()) { 831 return; 832 } 833 uint64_t handle = m_state->newGlobalVkGenericHandle(); 834 mReconstruction.addHandles((const uint64_t*)(&handle), 1); 835 auto apiHandle = mReconstruction.createApiInfo(); 836 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 837 mReconstruction.setApiTrace(apiInfo, OP_vkUpdateDescriptorSets, snapshotTraceBegin, 838 snapshotTraceBytes); 839 for (uint32_t i = 0; i < descriptorWriteCount; ++i) { 840 mReconstruction.addHandleDependency( 841 (const uint64_t*)(&handle), 1, 842 (uint64_t)(uintptr_t)unboxed_to_boxed_non_dispatchable_VkDescriptorSet( 843 pDescriptorWrites[i].dstSet)); 844 for (uint32_t j = 0; j < pDescriptorWrites[i].descriptorCount; ++j) { 845 if ((pDescriptorWrites[i].pImageInfo)) { 846 if (pDescriptorWrites[i].descriptorType == 847 VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER) { 848 mReconstruction.addHandleDependency( 849 (const uint64_t*)(&handle), 1, 850 (uint64_t)(uintptr_t)unboxed_to_boxed_non_dispatchable_VkSampler( 851 pDescriptorWrites[i].pImageInfo[j].sampler)); 852 mReconstruction.addHandleDependency( 853 (const uint64_t*)(&handle), 1, 854 (uint64_t)(uintptr_t)unboxed_to_boxed_non_dispatchable_VkImageView( 855 pDescriptorWrites[i].pImageInfo[j].imageView)); 856 } 857 if (pDescriptorWrites[i].descriptorType == VK_DESCRIPTOR_TYPE_SAMPLER) { 858 mReconstruction.addHandleDependency( 859 (const uint64_t*)(&handle), 1, 860 (uint64_t)(uintptr_t)unboxed_to_boxed_non_dispatchable_VkSampler( 861 pDescriptorWrites[i].pImageInfo[j].sampler)); 862 } 863 } 864 if (pDescriptorWrites[i].pBufferInfo) { 865 if (pDescriptorWrites[i].descriptorType == VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER) { 866 mReconstruction.addHandleDependency( 867 (const uint64_t*)(&handle), 1, 868 (uint64_t)(uintptr_t)unboxed_to_boxed_non_dispatchable_VkBuffer( 869 pDescriptorWrites[i].pBufferInfo[j].buffer)); 870 } 871 } 872 } 873 } 874 mReconstruction.forEachHandleAddApi((const uint64_t*)(&handle), 1, apiHandle, 875 VkReconstruction::CREATED); 876 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)(&handle), 1); 877 } vkCreateFramebuffer(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkFramebufferCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFramebuffer * pFramebuffer)878 void vkCreateFramebuffer(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 879 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 880 const VkFramebufferCreateInfo* pCreateInfo, 881 const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer) { 882 if (!pFramebuffer) return; 883 android::base::AutoLock lock(mLock); 884 // pFramebuffer create 885 mReconstruction.addHandles((const uint64_t*)pFramebuffer, 1); 886 mReconstruction.addHandleDependency((const uint64_t*)pFramebuffer, 1, 887 (uint64_t)(uintptr_t)device); 888 mReconstruction.addHandleDependency( 889 (const uint64_t*)pFramebuffer, 1, 890 (uint64_t)(uintptr_t)unboxed_to_boxed_non_dispatchable_VkRenderPass( 891 pCreateInfo->renderPass)); 892 for (uint32_t i = 0; i < pCreateInfo->attachmentCount; ++i) { 893 mReconstruction.addHandleDependency( 894 (const uint64_t*)pFramebuffer, 1, 895 (uint64_t)(uintptr_t)unboxed_to_boxed_non_dispatchable_VkImageView( 896 pCreateInfo->pAttachments[i])); 897 } 898 auto apiHandle = mReconstruction.createApiInfo(); 899 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 900 mReconstruction.setApiTrace(apiInfo, OP_vkCreateFramebuffer, snapshotTraceBegin, 901 snapshotTraceBytes); 902 mReconstruction.forEachHandleAddApi((const uint64_t*)pFramebuffer, 1, apiHandle, 903 VkReconstruction::CREATED); 904 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pFramebuffer, 1); 905 } vkDestroyFramebuffer(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkFramebuffer framebuffer,const VkAllocationCallbacks * pAllocator)906 void vkDestroyFramebuffer(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 907 android::base::BumpPool* pool, VkDevice device, 908 VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator) { 909 android::base::AutoLock lock(mLock); 910 // framebuffer destroy 911 mReconstruction.removeHandles((const uint64_t*)(&framebuffer), 1, true); 912 } vkCreateRenderPass(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkRenderPassCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)913 void vkCreateRenderPass(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 914 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 915 const VkRenderPassCreateInfo* pCreateInfo, 916 const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) { 917 if (!pRenderPass) return; 918 android::base::AutoLock lock(mLock); 919 // pRenderPass create 920 mReconstruction.addHandles((const uint64_t*)pRenderPass, 1); 921 mReconstruction.addHandleDependency((const uint64_t*)pRenderPass, 1, 922 (uint64_t)(uintptr_t)device); 923 auto apiHandle = mReconstruction.createApiInfo(); 924 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 925 mReconstruction.setApiTrace(apiInfo, OP_vkCreateRenderPass, snapshotTraceBegin, 926 snapshotTraceBytes); 927 mReconstruction.forEachHandleAddApi((const uint64_t*)pRenderPass, 1, apiHandle, 928 VkReconstruction::CREATED); 929 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pRenderPass, 1); 930 } vkDestroyRenderPass(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkRenderPass renderPass,const VkAllocationCallbacks * pAllocator)931 void vkDestroyRenderPass(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 932 android::base::BumpPool* pool, VkDevice device, 933 VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator) { 934 android::base::AutoLock lock(mLock); 935 // renderPass destroy 936 mReconstruction.removeHandles((const uint64_t*)(&renderPass), 1, true); 937 } vkGetRenderAreaGranularity(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkRenderPass renderPass,VkExtent2D * pGranularity)938 void vkGetRenderAreaGranularity(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 939 android::base::BumpPool* pool, VkDevice device, 940 VkRenderPass renderPass, VkExtent2D* pGranularity) {} vkCreateCommandPool(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkCommandPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkCommandPool * pCommandPool)941 void vkCreateCommandPool(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 942 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 943 const VkCommandPoolCreateInfo* pCreateInfo, 944 const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool) { 945 if (!pCommandPool) return; 946 android::base::AutoLock lock(mLock); 947 // pCommandPool create 948 mReconstruction.addHandles((const uint64_t*)pCommandPool, 1); 949 mReconstruction.addHandleDependency((const uint64_t*)pCommandPool, 1, 950 (uint64_t)(uintptr_t)device); 951 auto apiHandle = mReconstruction.createApiInfo(); 952 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 953 mReconstruction.setApiTrace(apiInfo, OP_vkCreateCommandPool, snapshotTraceBegin, 954 snapshotTraceBytes); 955 mReconstruction.forEachHandleAddApi((const uint64_t*)pCommandPool, 1, apiHandle, 956 VkReconstruction::CREATED); 957 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pCommandPool, 1); 958 } vkDestroyCommandPool(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkCommandPool commandPool,const VkAllocationCallbacks * pAllocator)959 void vkDestroyCommandPool(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 960 android::base::BumpPool* pool, VkDevice device, 961 VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator) { 962 android::base::AutoLock lock(mLock); 963 // commandPool destroy 964 mReconstruction.removeHandles((const uint64_t*)(&commandPool), 1, true); 965 } vkResetCommandPool(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,VkCommandPool commandPool,VkCommandPoolResetFlags flags)966 void vkResetCommandPool(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 967 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 968 VkCommandPool commandPool, VkCommandPoolResetFlags flags) {} vkAllocateCommandBuffers(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkCommandBufferAllocateInfo * pAllocateInfo,VkCommandBuffer * pCommandBuffers)969 void vkAllocateCommandBuffers(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 970 android::base::BumpPool* pool, VkResult input_result, 971 VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, 972 VkCommandBuffer* pCommandBuffers) { 973 if (!pCommandBuffers) return; 974 android::base::AutoLock lock(mLock); 975 // pCommandBuffers create 976 mReconstruction.addHandles((const uint64_t*)pCommandBuffers, 977 pAllocateInfo->commandBufferCount); 978 mReconstruction.addHandleDependency( 979 (const uint64_t*)pCommandBuffers, pAllocateInfo->commandBufferCount, 980 (uint64_t)(uintptr_t)unboxed_to_boxed_non_dispatchable_VkCommandPool( 981 pAllocateInfo->commandPool)); 982 auto apiHandle = mReconstruction.createApiInfo(); 983 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 984 mReconstruction.setApiTrace(apiInfo, OP_vkAllocateCommandBuffers, snapshotTraceBegin, 985 snapshotTraceBytes); 986 mReconstruction.forEachHandleAddApi((const uint64_t*)pCommandBuffers, 987 pAllocateInfo->commandBufferCount, apiHandle, 988 VkReconstruction::CREATED); 989 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pCommandBuffers, 990 pAllocateInfo->commandBufferCount); 991 } vkFreeCommandBuffers(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkCommandPool commandPool,uint32_t commandBufferCount,const VkCommandBuffer * pCommandBuffers)992 void vkFreeCommandBuffers(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 993 android::base::BumpPool* pool, VkDevice device, 994 VkCommandPool commandPool, uint32_t commandBufferCount, 995 const VkCommandBuffer* pCommandBuffers) { 996 android::base::AutoLock lock(mLock); 997 // pCommandBuffers destroy 998 mReconstruction.removeHandles((const uint64_t*)pCommandBuffers, ((commandBufferCount)), 999 true); 1000 } vkBeginCommandBuffer(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkCommandBuffer commandBuffer,const VkCommandBufferBeginInfo * pBeginInfo)1001 void vkBeginCommandBuffer(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1002 android::base::BumpPool* pool, VkResult input_result, 1003 VkCommandBuffer commandBuffer, 1004 const VkCommandBufferBeginInfo* pBeginInfo) { 1005 android::base::AutoLock lock(mLock); 1006 // commandBuffer modify 1007 auto apiHandle = mReconstruction.createApiInfo(); 1008 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1009 mReconstruction.setApiTrace(apiInfo, OP_vkBeginCommandBuffer, snapshotTraceBegin, 1010 snapshotTraceBytes); 1011 for (uint32_t i = 0; i < 1; ++i) { 1012 // commandBuffer is already boxed, no need to box again 1013 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1014 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1015 } 1016 } vkEndCommandBuffer(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkCommandBuffer commandBuffer)1017 void vkEndCommandBuffer(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1018 android::base::BumpPool* pool, VkResult input_result, 1019 VkCommandBuffer commandBuffer) { 1020 android::base::AutoLock lock(mLock); 1021 // commandBuffer modify 1022 auto apiHandle = mReconstruction.createApiInfo(); 1023 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1024 mReconstruction.setApiTrace(apiInfo, OP_vkEndCommandBuffer, snapshotTraceBegin, 1025 snapshotTraceBytes); 1026 for (uint32_t i = 0; i < 1; ++i) { 1027 // commandBuffer is already boxed, no need to box again 1028 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1029 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1030 } 1031 } vkResetCommandBuffer(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkCommandBuffer commandBuffer,VkCommandBufferResetFlags flags)1032 void vkResetCommandBuffer(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1033 android::base::BumpPool* pool, VkResult input_result, 1034 VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags) { 1035 android::base::AutoLock lock(mLock); 1036 // commandBuffer modify 1037 auto apiHandle = mReconstruction.createApiInfo(); 1038 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1039 mReconstruction.setApiTrace(apiInfo, OP_vkResetCommandBuffer, snapshotTraceBegin, 1040 snapshotTraceBytes); 1041 for (uint32_t i = 0; i < 1; ++i) { 1042 // commandBuffer is already boxed, no need to box again 1043 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1044 mReconstruction.forEachHandleClearModifyApi((const uint64_t*)(&boxed), 1); 1045 } 1046 } vkCmdBindPipeline(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipeline pipeline)1047 void vkCmdBindPipeline(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1048 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1049 VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) { 1050 android::base::AutoLock lock(mLock); 1051 // commandBuffer modify 1052 auto apiHandle = mReconstruction.createApiInfo(); 1053 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1054 mReconstruction.setApiTrace(apiInfo, OP_vkCmdBindPipeline, snapshotTraceBegin, 1055 snapshotTraceBytes); 1056 for (uint32_t i = 0; i < 1; ++i) { 1057 // commandBuffer is already boxed, no need to box again 1058 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1059 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1060 } 1061 } vkCmdSetViewport(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewport * pViewports)1062 void vkCmdSetViewport(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1063 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1064 uint32_t firstViewport, uint32_t viewportCount, 1065 const VkViewport* pViewports) { 1066 android::base::AutoLock lock(mLock); 1067 // commandBuffer modify 1068 auto apiHandle = mReconstruction.createApiInfo(); 1069 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1070 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetViewport, snapshotTraceBegin, 1071 snapshotTraceBytes); 1072 for (uint32_t i = 0; i < 1; ++i) { 1073 // commandBuffer is already boxed, no need to box again 1074 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1075 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1076 } 1077 } vkCmdSetScissor(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,uint32_t firstScissor,uint32_t scissorCount,const VkRect2D * pScissors)1078 void vkCmdSetScissor(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1079 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1080 uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors) { 1081 android::base::AutoLock lock(mLock); 1082 // commandBuffer modify 1083 auto apiHandle = mReconstruction.createApiInfo(); 1084 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1085 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetScissor, snapshotTraceBegin, 1086 snapshotTraceBytes); 1087 for (uint32_t i = 0; i < 1; ++i) { 1088 // commandBuffer is already boxed, no need to box again 1089 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1090 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1091 } 1092 } vkCmdSetLineWidth(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,float lineWidth)1093 void vkCmdSetLineWidth(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1094 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1095 float lineWidth) { 1096 android::base::AutoLock lock(mLock); 1097 // commandBuffer modify 1098 auto apiHandle = mReconstruction.createApiInfo(); 1099 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1100 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetLineWidth, snapshotTraceBegin, 1101 snapshotTraceBytes); 1102 for (uint32_t i = 0; i < 1; ++i) { 1103 // commandBuffer is already boxed, no need to box again 1104 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1105 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1106 } 1107 } vkCmdSetDepthBias(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,float depthBiasConstantFactor,float depthBiasClamp,float depthBiasSlopeFactor)1108 void vkCmdSetDepthBias(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1109 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1110 float depthBiasConstantFactor, float depthBiasClamp, 1111 float depthBiasSlopeFactor) { 1112 android::base::AutoLock lock(mLock); 1113 // commandBuffer modify 1114 auto apiHandle = mReconstruction.createApiInfo(); 1115 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1116 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetDepthBias, snapshotTraceBegin, 1117 snapshotTraceBytes); 1118 for (uint32_t i = 0; i < 1; ++i) { 1119 // commandBuffer is already boxed, no need to box again 1120 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1121 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1122 } 1123 } vkCmdSetBlendConstants(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,const float blendConstants[4])1124 void vkCmdSetBlendConstants(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1125 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1126 const float blendConstants[4]) { 1127 android::base::AutoLock lock(mLock); 1128 // commandBuffer modify 1129 auto apiHandle = mReconstruction.createApiInfo(); 1130 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1131 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetBlendConstants, snapshotTraceBegin, 1132 snapshotTraceBytes); 1133 for (uint32_t i = 0; i < 1; ++i) { 1134 // commandBuffer is already boxed, no need to box again 1135 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1136 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1137 } 1138 } vkCmdSetDepthBounds(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,float minDepthBounds,float maxDepthBounds)1139 void vkCmdSetDepthBounds(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1140 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1141 float minDepthBounds, float maxDepthBounds) { 1142 android::base::AutoLock lock(mLock); 1143 // commandBuffer modify 1144 auto apiHandle = mReconstruction.createApiInfo(); 1145 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1146 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetDepthBounds, snapshotTraceBegin, 1147 snapshotTraceBytes); 1148 for (uint32_t i = 0; i < 1; ++i) { 1149 // commandBuffer is already boxed, no need to box again 1150 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1151 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1152 } 1153 } vkCmdSetStencilCompareMask(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t compareMask)1154 void vkCmdSetStencilCompareMask(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1155 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1156 VkStencilFaceFlags faceMask, uint32_t compareMask) { 1157 android::base::AutoLock lock(mLock); 1158 // commandBuffer modify 1159 auto apiHandle = mReconstruction.createApiInfo(); 1160 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1161 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetStencilCompareMask, snapshotTraceBegin, 1162 snapshotTraceBytes); 1163 for (uint32_t i = 0; i < 1; ++i) { 1164 // commandBuffer is already boxed, no need to box again 1165 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1166 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1167 } 1168 } vkCmdSetStencilWriteMask(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t writeMask)1169 void vkCmdSetStencilWriteMask(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1170 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1171 VkStencilFaceFlags faceMask, uint32_t writeMask) { 1172 android::base::AutoLock lock(mLock); 1173 // commandBuffer modify 1174 auto apiHandle = mReconstruction.createApiInfo(); 1175 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1176 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetStencilWriteMask, snapshotTraceBegin, 1177 snapshotTraceBytes); 1178 for (uint32_t i = 0; i < 1; ++i) { 1179 // commandBuffer is already boxed, no need to box again 1180 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1181 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1182 } 1183 } vkCmdSetStencilReference(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,uint32_t reference)1184 void vkCmdSetStencilReference(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1185 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1186 VkStencilFaceFlags faceMask, uint32_t reference) { 1187 android::base::AutoLock lock(mLock); 1188 // commandBuffer modify 1189 auto apiHandle = mReconstruction.createApiInfo(); 1190 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1191 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetStencilReference, snapshotTraceBegin, 1192 snapshotTraceBytes); 1193 for (uint32_t i = 0; i < 1; ++i) { 1194 // commandBuffer is already boxed, no need to box again 1195 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1196 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1197 } 1198 } vkCmdBindDescriptorSets(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t firstSet,uint32_t descriptorSetCount,const VkDescriptorSet * pDescriptorSets,uint32_t dynamicOffsetCount,const uint32_t * pDynamicOffsets)1199 void vkCmdBindDescriptorSets(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1200 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1201 VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, 1202 uint32_t firstSet, uint32_t descriptorSetCount, 1203 const VkDescriptorSet* pDescriptorSets, 1204 uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) { 1205 android::base::AutoLock lock(mLock); 1206 // commandBuffer modify 1207 auto apiHandle = mReconstruction.createApiInfo(); 1208 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1209 mReconstruction.setApiTrace(apiInfo, OP_vkCmdBindDescriptorSets, snapshotTraceBegin, 1210 snapshotTraceBytes); 1211 for (uint32_t i = 0; i < 1; ++i) { 1212 // commandBuffer is already boxed, no need to box again 1213 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1214 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1215 } 1216 } vkCmdBindIndexBuffer(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkIndexType indexType)1217 void vkCmdBindIndexBuffer(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1218 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1219 VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) { 1220 android::base::AutoLock lock(mLock); 1221 // commandBuffer modify 1222 auto apiHandle = mReconstruction.createApiInfo(); 1223 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1224 mReconstruction.setApiTrace(apiInfo, OP_vkCmdBindIndexBuffer, snapshotTraceBegin, 1225 snapshotTraceBytes); 1226 for (uint32_t i = 0; i < 1; ++i) { 1227 // commandBuffer is already boxed, no need to box again 1228 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1229 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1230 } 1231 } vkCmdBindVertexBuffers(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets)1232 void vkCmdBindVertexBuffers(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1233 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1234 uint32_t firstBinding, uint32_t bindingCount, 1235 const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) { 1236 android::base::AutoLock lock(mLock); 1237 // commandBuffer modify 1238 auto apiHandle = mReconstruction.createApiInfo(); 1239 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1240 mReconstruction.setApiTrace(apiInfo, OP_vkCmdBindVertexBuffers, snapshotTraceBegin, 1241 snapshotTraceBytes); 1242 for (uint32_t i = 0; i < 1; ++i) { 1243 // commandBuffer is already boxed, no need to box again 1244 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1245 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1246 } 1247 } vkCmdDraw(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,uint32_t vertexCount,uint32_t instanceCount,uint32_t firstVertex,uint32_t firstInstance)1248 void vkCmdDraw(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1249 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1250 uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, 1251 uint32_t firstInstance) { 1252 android::base::AutoLock lock(mLock); 1253 // commandBuffer modify 1254 auto apiHandle = mReconstruction.createApiInfo(); 1255 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1256 mReconstruction.setApiTrace(apiInfo, OP_vkCmdDraw, snapshotTraceBegin, snapshotTraceBytes); 1257 for (uint32_t i = 0; i < 1; ++i) { 1258 // commandBuffer is already boxed, no need to box again 1259 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1260 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1261 } 1262 } vkCmdDrawIndexed(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,uint32_t indexCount,uint32_t instanceCount,uint32_t firstIndex,int32_t vertexOffset,uint32_t firstInstance)1263 void vkCmdDrawIndexed(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1264 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1265 uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, 1266 int32_t vertexOffset, uint32_t firstInstance) { 1267 android::base::AutoLock lock(mLock); 1268 // commandBuffer modify 1269 auto apiHandle = mReconstruction.createApiInfo(); 1270 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1271 mReconstruction.setApiTrace(apiInfo, OP_vkCmdDrawIndexed, snapshotTraceBegin, 1272 snapshotTraceBytes); 1273 for (uint32_t i = 0; i < 1; ++i) { 1274 // commandBuffer is already boxed, no need to box again 1275 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1276 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1277 } 1278 } vkCmdDrawIndirect(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)1279 void vkCmdDrawIndirect(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1280 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1281 VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, 1282 uint32_t stride) { 1283 android::base::AutoLock lock(mLock); 1284 // commandBuffer modify 1285 auto apiHandle = mReconstruction.createApiInfo(); 1286 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1287 mReconstruction.setApiTrace(apiInfo, OP_vkCmdDrawIndirect, snapshotTraceBegin, 1288 snapshotTraceBytes); 1289 for (uint32_t i = 0; i < 1; ++i) { 1290 // commandBuffer is already boxed, no need to box again 1291 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1292 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1293 } 1294 } vkCmdDrawIndexedIndirect(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)1295 void vkCmdDrawIndexedIndirect(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1296 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1297 VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, 1298 uint32_t stride) { 1299 android::base::AutoLock lock(mLock); 1300 // commandBuffer modify 1301 auto apiHandle = mReconstruction.createApiInfo(); 1302 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1303 mReconstruction.setApiTrace(apiInfo, OP_vkCmdDrawIndexedIndirect, snapshotTraceBegin, 1304 snapshotTraceBytes); 1305 for (uint32_t i = 0; i < 1; ++i) { 1306 // commandBuffer is already boxed, no need to box again 1307 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1308 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1309 } 1310 } vkCmdDispatch(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)1311 void vkCmdDispatch(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1312 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1313 uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) { 1314 android::base::AutoLock lock(mLock); 1315 // commandBuffer modify 1316 auto apiHandle = mReconstruction.createApiInfo(); 1317 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1318 mReconstruction.setApiTrace(apiInfo, OP_vkCmdDispatch, snapshotTraceBegin, 1319 snapshotTraceBytes); 1320 for (uint32_t i = 0; i < 1; ++i) { 1321 // commandBuffer is already boxed, no need to box again 1322 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1323 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1324 } 1325 } vkCmdDispatchIndirect(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset)1326 void vkCmdDispatchIndirect(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1327 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1328 VkBuffer buffer, VkDeviceSize offset) { 1329 android::base::AutoLock lock(mLock); 1330 // commandBuffer modify 1331 auto apiHandle = mReconstruction.createApiInfo(); 1332 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1333 mReconstruction.setApiTrace(apiInfo, OP_vkCmdDispatchIndirect, snapshotTraceBegin, 1334 snapshotTraceBytes); 1335 for (uint32_t i = 0; i < 1; ++i) { 1336 // commandBuffer is already boxed, no need to box again 1337 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1338 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1339 } 1340 } vkCmdCopyBuffer(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkBuffer srcBuffer,VkBuffer dstBuffer,uint32_t regionCount,const VkBufferCopy * pRegions)1341 void vkCmdCopyBuffer(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1342 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1343 VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, 1344 const VkBufferCopy* pRegions) { 1345 android::base::AutoLock lock(mLock); 1346 // commandBuffer modify 1347 auto apiHandle = mReconstruction.createApiInfo(); 1348 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1349 mReconstruction.setApiTrace(apiInfo, OP_vkCmdCopyBuffer, snapshotTraceBegin, 1350 snapshotTraceBytes); 1351 for (uint32_t i = 0; i < 1; ++i) { 1352 // commandBuffer is already boxed, no need to box again 1353 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1354 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1355 } 1356 } vkCmdCopyImage(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageCopy * pRegions)1357 void vkCmdCopyImage(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1358 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1359 VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, 1360 VkImageLayout dstImageLayout, uint32_t regionCount, 1361 const VkImageCopy* pRegions) { 1362 android::base::AutoLock lock(mLock); 1363 // commandBuffer modify 1364 auto apiHandle = mReconstruction.createApiInfo(); 1365 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1366 mReconstruction.setApiTrace(apiInfo, OP_vkCmdCopyImage, snapshotTraceBegin, 1367 snapshotTraceBytes); 1368 for (uint32_t i = 0; i < 1; ++i) { 1369 // commandBuffer is already boxed, no need to box again 1370 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1371 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1372 } 1373 } vkCmdBlitImage(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageBlit * pRegions,VkFilter filter)1374 void vkCmdBlitImage(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1375 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1376 VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, 1377 VkImageLayout dstImageLayout, uint32_t regionCount, 1378 const VkImageBlit* pRegions, VkFilter filter) { 1379 android::base::AutoLock lock(mLock); 1380 // commandBuffer modify 1381 auto apiHandle = mReconstruction.createApiInfo(); 1382 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1383 mReconstruction.setApiTrace(apiInfo, OP_vkCmdBlitImage, snapshotTraceBegin, 1384 snapshotTraceBytes); 1385 for (uint32_t i = 0; i < 1; ++i) { 1386 // commandBuffer is already boxed, no need to box again 1387 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1388 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1389 } 1390 } vkCmdCopyBufferToImage(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkBuffer srcBuffer,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkBufferImageCopy * pRegions)1391 void vkCmdCopyBufferToImage(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1392 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1393 VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, 1394 uint32_t regionCount, const VkBufferImageCopy* pRegions) { 1395 android::base::AutoLock lock(mLock); 1396 // commandBuffer modify 1397 auto apiHandle = mReconstruction.createApiInfo(); 1398 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1399 mReconstruction.setApiTrace(apiInfo, OP_vkCmdCopyBufferToImage, snapshotTraceBegin, 1400 snapshotTraceBytes); 1401 for (uint32_t i = 0; i < 1; ++i) { 1402 // commandBuffer is already boxed, no need to box again 1403 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1404 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1405 } 1406 } vkCmdCopyImageToBuffer(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkBuffer dstBuffer,uint32_t regionCount,const VkBufferImageCopy * pRegions)1407 void vkCmdCopyImageToBuffer(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1408 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1409 VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, 1410 uint32_t regionCount, const VkBufferImageCopy* pRegions) { 1411 android::base::AutoLock lock(mLock); 1412 // commandBuffer modify 1413 auto apiHandle = mReconstruction.createApiInfo(); 1414 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1415 mReconstruction.setApiTrace(apiInfo, OP_vkCmdCopyImageToBuffer, snapshotTraceBegin, 1416 snapshotTraceBytes); 1417 for (uint32_t i = 0; i < 1; ++i) { 1418 // commandBuffer is already boxed, no need to box again 1419 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1420 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1421 } 1422 } vkCmdUpdateBuffer(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize dataSize,const void * pData)1423 void vkCmdUpdateBuffer(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1424 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1425 VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, 1426 const void* pData) { 1427 android::base::AutoLock lock(mLock); 1428 // commandBuffer modify 1429 auto apiHandle = mReconstruction.createApiInfo(); 1430 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1431 mReconstruction.setApiTrace(apiInfo, OP_vkCmdUpdateBuffer, snapshotTraceBegin, 1432 snapshotTraceBytes); 1433 for (uint32_t i = 0; i < 1; ++i) { 1434 // commandBuffer is already boxed, no need to box again 1435 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1436 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1437 } 1438 } vkCmdFillBuffer(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize size,uint32_t data)1439 void vkCmdFillBuffer(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1440 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1441 VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, 1442 uint32_t data) { 1443 android::base::AutoLock lock(mLock); 1444 // commandBuffer modify 1445 auto apiHandle = mReconstruction.createApiInfo(); 1446 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1447 mReconstruction.setApiTrace(apiInfo, OP_vkCmdFillBuffer, snapshotTraceBegin, 1448 snapshotTraceBytes); 1449 for (uint32_t i = 0; i < 1; ++i) { 1450 // commandBuffer is already boxed, no need to box again 1451 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1452 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1453 } 1454 } vkCmdClearColorImage(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkImage image,VkImageLayout imageLayout,const VkClearColorValue * pColor,uint32_t rangeCount,const VkImageSubresourceRange * pRanges)1455 void vkCmdClearColorImage(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1456 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1457 VkImage image, VkImageLayout imageLayout, 1458 const VkClearColorValue* pColor, uint32_t rangeCount, 1459 const VkImageSubresourceRange* pRanges) { 1460 android::base::AutoLock lock(mLock); 1461 // commandBuffer modify 1462 auto apiHandle = mReconstruction.createApiInfo(); 1463 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1464 mReconstruction.setApiTrace(apiInfo, OP_vkCmdClearColorImage, snapshotTraceBegin, 1465 snapshotTraceBytes); 1466 for (uint32_t i = 0; i < 1; ++i) { 1467 // commandBuffer is already boxed, no need to box again 1468 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1469 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1470 } 1471 } vkCmdClearDepthStencilImage(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkImage image,VkImageLayout imageLayout,const VkClearDepthStencilValue * pDepthStencil,uint32_t rangeCount,const VkImageSubresourceRange * pRanges)1472 void vkCmdClearDepthStencilImage(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1473 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1474 VkImage image, VkImageLayout imageLayout, 1475 const VkClearDepthStencilValue* pDepthStencil, 1476 uint32_t rangeCount, const VkImageSubresourceRange* pRanges) { 1477 android::base::AutoLock lock(mLock); 1478 // commandBuffer modify 1479 auto apiHandle = mReconstruction.createApiInfo(); 1480 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1481 mReconstruction.setApiTrace(apiInfo, OP_vkCmdClearDepthStencilImage, snapshotTraceBegin, 1482 snapshotTraceBytes); 1483 for (uint32_t i = 0; i < 1; ++i) { 1484 // commandBuffer is already boxed, no need to box again 1485 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1486 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1487 } 1488 } vkCmdClearAttachments(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,uint32_t attachmentCount,const VkClearAttachment * pAttachments,uint32_t rectCount,const VkClearRect * pRects)1489 void vkCmdClearAttachments(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1490 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1491 uint32_t attachmentCount, const VkClearAttachment* pAttachments, 1492 uint32_t rectCount, const VkClearRect* pRects) { 1493 android::base::AutoLock lock(mLock); 1494 // commandBuffer modify 1495 auto apiHandle = mReconstruction.createApiInfo(); 1496 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1497 mReconstruction.setApiTrace(apiInfo, OP_vkCmdClearAttachments, snapshotTraceBegin, 1498 snapshotTraceBytes); 1499 for (uint32_t i = 0; i < 1; ++i) { 1500 // commandBuffer is already boxed, no need to box again 1501 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1502 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1503 } 1504 } vkCmdResolveImage(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkImage srcImage,VkImageLayout srcImageLayout,VkImage dstImage,VkImageLayout dstImageLayout,uint32_t regionCount,const VkImageResolve * pRegions)1505 void vkCmdResolveImage(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1506 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1507 VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, 1508 VkImageLayout dstImageLayout, uint32_t regionCount, 1509 const VkImageResolve* pRegions) { 1510 android::base::AutoLock lock(mLock); 1511 // commandBuffer modify 1512 auto apiHandle = mReconstruction.createApiInfo(); 1513 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1514 mReconstruction.setApiTrace(apiInfo, OP_vkCmdResolveImage, snapshotTraceBegin, 1515 snapshotTraceBytes); 1516 for (uint32_t i = 0; i < 1; ++i) { 1517 // commandBuffer is already boxed, no need to box again 1518 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1519 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1520 } 1521 } vkCmdSetEvent(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags stageMask)1522 void vkCmdSetEvent(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1523 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, VkEvent event, 1524 VkPipelineStageFlags stageMask) { 1525 android::base::AutoLock lock(mLock); 1526 // commandBuffer modify 1527 auto apiHandle = mReconstruction.createApiInfo(); 1528 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1529 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetEvent, snapshotTraceBegin, 1530 snapshotTraceBytes); 1531 for (uint32_t i = 0; i < 1; ++i) { 1532 // commandBuffer is already boxed, no need to box again 1533 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1534 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1535 } 1536 } vkCmdResetEvent(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags stageMask)1537 void vkCmdResetEvent(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1538 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1539 VkEvent event, VkPipelineStageFlags stageMask) { 1540 android::base::AutoLock lock(mLock); 1541 // commandBuffer modify 1542 auto apiHandle = mReconstruction.createApiInfo(); 1543 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1544 mReconstruction.setApiTrace(apiInfo, OP_vkCmdResetEvent, snapshotTraceBegin, 1545 snapshotTraceBytes); 1546 for (uint32_t i = 0; i < 1; ++i) { 1547 // commandBuffer is already boxed, no need to box again 1548 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1549 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1550 } 1551 } vkCmdWaitEvents(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,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)1552 void vkCmdWaitEvents(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1553 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1554 uint32_t eventCount, const VkEvent* pEvents, 1555 VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, 1556 uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, 1557 uint32_t bufferMemoryBarrierCount, 1558 const VkBufferMemoryBarrier* pBufferMemoryBarriers, 1559 uint32_t imageMemoryBarrierCount, 1560 const VkImageMemoryBarrier* pImageMemoryBarriers) { 1561 android::base::AutoLock lock(mLock); 1562 // commandBuffer modify 1563 auto apiHandle = mReconstruction.createApiInfo(); 1564 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1565 mReconstruction.setApiTrace(apiInfo, OP_vkCmdWaitEvents, snapshotTraceBegin, 1566 snapshotTraceBytes); 1567 for (uint32_t i = 0; i < 1; ++i) { 1568 // commandBuffer is already boxed, no need to box again 1569 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1570 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1571 } 1572 } vkCmdPipelineBarrier(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,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)1573 void vkCmdPipelineBarrier(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1574 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1575 VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, 1576 VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, 1577 const VkMemoryBarrier* pMemoryBarriers, 1578 uint32_t bufferMemoryBarrierCount, 1579 const VkBufferMemoryBarrier* pBufferMemoryBarriers, 1580 uint32_t imageMemoryBarrierCount, 1581 const VkImageMemoryBarrier* pImageMemoryBarriers) { 1582 android::base::AutoLock lock(mLock); 1583 // commandBuffer modify 1584 auto apiHandle = mReconstruction.createApiInfo(); 1585 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1586 mReconstruction.setApiTrace(apiInfo, OP_vkCmdPipelineBarrier, snapshotTraceBegin, 1587 snapshotTraceBytes); 1588 for (uint32_t i = 0; i < 1; ++i) { 1589 // commandBuffer is already boxed, no need to box again 1590 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1591 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1592 } 1593 } vkCmdBeginQuery(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,VkQueryControlFlags flags)1594 void vkCmdBeginQuery(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1595 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1596 VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags) { 1597 android::base::AutoLock lock(mLock); 1598 // commandBuffer modify 1599 auto apiHandle = mReconstruction.createApiInfo(); 1600 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1601 mReconstruction.setApiTrace(apiInfo, OP_vkCmdBeginQuery, snapshotTraceBegin, 1602 snapshotTraceBytes); 1603 for (uint32_t i = 0; i < 1; ++i) { 1604 // commandBuffer is already boxed, no need to box again 1605 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1606 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1607 } 1608 } vkCmdEndQuery(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query)1609 void vkCmdEndQuery(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1610 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1611 VkQueryPool queryPool, uint32_t query) { 1612 android::base::AutoLock lock(mLock); 1613 // commandBuffer modify 1614 auto apiHandle = mReconstruction.createApiInfo(); 1615 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1616 mReconstruction.setApiTrace(apiInfo, OP_vkCmdEndQuery, snapshotTraceBegin, 1617 snapshotTraceBytes); 1618 for (uint32_t i = 0; i < 1; ++i) { 1619 // commandBuffer is already boxed, no need to box again 1620 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1621 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1622 } 1623 } vkCmdResetQueryPool(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)1624 void vkCmdResetQueryPool(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1625 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1626 VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount) { 1627 android::base::AutoLock lock(mLock); 1628 // commandBuffer modify 1629 auto apiHandle = mReconstruction.createApiInfo(); 1630 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1631 mReconstruction.setApiTrace(apiInfo, OP_vkCmdResetQueryPool, snapshotTraceBegin, 1632 snapshotTraceBytes); 1633 for (uint32_t i = 0; i < 1; ++i) { 1634 // commandBuffer is already boxed, no need to box again 1635 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1636 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1637 } 1638 } vkCmdWriteTimestamp(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkPipelineStageFlagBits pipelineStage,VkQueryPool queryPool,uint32_t query)1639 void vkCmdWriteTimestamp(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1640 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1641 VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, 1642 uint32_t query) { 1643 android::base::AutoLock lock(mLock); 1644 // commandBuffer modify 1645 auto apiHandle = mReconstruction.createApiInfo(); 1646 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1647 mReconstruction.setApiTrace(apiInfo, OP_vkCmdWriteTimestamp, snapshotTraceBegin, 1648 snapshotTraceBytes); 1649 for (uint32_t i = 0; i < 1; ++i) { 1650 // commandBuffer is already boxed, no need to box again 1651 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1652 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1653 } 1654 } vkCmdCopyQueryPoolResults(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount,VkBuffer dstBuffer,VkDeviceSize dstOffset,VkDeviceSize stride,VkQueryResultFlags flags)1655 void vkCmdCopyQueryPoolResults(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1656 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1657 VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, 1658 VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, 1659 VkQueryResultFlags flags) { 1660 android::base::AutoLock lock(mLock); 1661 // commandBuffer modify 1662 auto apiHandle = mReconstruction.createApiInfo(); 1663 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1664 mReconstruction.setApiTrace(apiInfo, OP_vkCmdCopyQueryPoolResults, snapshotTraceBegin, 1665 snapshotTraceBytes); 1666 for (uint32_t i = 0; i < 1; ++i) { 1667 // commandBuffer is already boxed, no need to box again 1668 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1669 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1670 } 1671 } vkCmdPushConstants(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkPipelineLayout layout,VkShaderStageFlags stageFlags,uint32_t offset,uint32_t size,const void * pValues)1672 void vkCmdPushConstants(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1673 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1674 VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, 1675 uint32_t size, const void* pValues) { 1676 android::base::AutoLock lock(mLock); 1677 // commandBuffer modify 1678 auto apiHandle = mReconstruction.createApiInfo(); 1679 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1680 mReconstruction.setApiTrace(apiInfo, OP_vkCmdPushConstants, snapshotTraceBegin, 1681 snapshotTraceBytes); 1682 for (uint32_t i = 0; i < 1; ++i) { 1683 // commandBuffer is already boxed, no need to box again 1684 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1685 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1686 } 1687 } vkCmdBeginRenderPass(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,VkSubpassContents contents)1688 void vkCmdBeginRenderPass(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1689 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1690 const VkRenderPassBeginInfo* pRenderPassBegin, 1691 VkSubpassContents contents) { 1692 android::base::AutoLock lock(mLock); 1693 // commandBuffer modify 1694 auto apiHandle = mReconstruction.createApiInfo(); 1695 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1696 mReconstruction.setApiTrace(apiInfo, OP_vkCmdBeginRenderPass, snapshotTraceBegin, 1697 snapshotTraceBytes); 1698 for (uint32_t i = 0; i < 1; ++i) { 1699 // commandBuffer is already boxed, no need to box again 1700 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1701 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1702 } 1703 } vkCmdNextSubpass(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkSubpassContents contents)1704 void vkCmdNextSubpass(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1705 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1706 VkSubpassContents contents) { 1707 android::base::AutoLock lock(mLock); 1708 // commandBuffer modify 1709 auto apiHandle = mReconstruction.createApiInfo(); 1710 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1711 mReconstruction.setApiTrace(apiInfo, OP_vkCmdNextSubpass, snapshotTraceBegin, 1712 snapshotTraceBytes); 1713 for (uint32_t i = 0; i < 1; ++i) { 1714 // commandBuffer is already boxed, no need to box again 1715 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1716 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1717 } 1718 } vkCmdEndRenderPass(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer)1719 void vkCmdEndRenderPass(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1720 android::base::BumpPool* pool, VkCommandBuffer commandBuffer) { 1721 android::base::AutoLock lock(mLock); 1722 // commandBuffer modify 1723 auto apiHandle = mReconstruction.createApiInfo(); 1724 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1725 mReconstruction.setApiTrace(apiInfo, OP_vkCmdEndRenderPass, snapshotTraceBegin, 1726 snapshotTraceBytes); 1727 for (uint32_t i = 0; i < 1; ++i) { 1728 // commandBuffer is already boxed, no need to box again 1729 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1730 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1731 } 1732 } vkCmdExecuteCommands(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,uint32_t commandBufferCount,const VkCommandBuffer * pCommandBuffers)1733 void vkCmdExecuteCommands(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1734 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1735 uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers) { 1736 android::base::AutoLock lock(mLock); 1737 // commandBuffer modify 1738 auto apiHandle = mReconstruction.createApiInfo(); 1739 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1740 mReconstruction.setApiTrace(apiInfo, OP_vkCmdExecuteCommands, snapshotTraceBegin, 1741 snapshotTraceBytes); 1742 for (uint32_t i = 0; i < 1; ++i) { 1743 // commandBuffer is already boxed, no need to box again 1744 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1745 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1746 } 1747 } 1748 #endif 1749 #ifdef VK_VERSION_1_1 vkEnumerateInstanceVersion(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,uint32_t * pApiVersion)1750 void vkEnumerateInstanceVersion(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1751 android::base::BumpPool* pool, VkResult input_result, 1752 uint32_t* pApiVersion) {} vkBindBufferMemory2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)1753 void vkBindBufferMemory2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1754 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 1755 uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos) {} vkBindImageMemory2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)1756 void vkBindImageMemory2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1757 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 1758 uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos) { 1759 android::base::AutoLock lock(mLock); 1760 for (uint32_t i = 0; i < bindInfoCount; ++i) { 1761 VkImage boxed_VkImage = unboxed_to_boxed_non_dispatchable_VkImage(pBindInfos[i].image); 1762 VkDeviceMemory boxed_VkDeviceMemory = 1763 unboxed_to_boxed_non_dispatchable_VkDeviceMemory(pBindInfos[i].memory); 1764 mReconstruction.addHandleDependency((const uint64_t*)&boxed_VkImage, 1, 1765 (uint64_t)(uintptr_t)boxed_VkDeviceMemory, 1766 VkReconstruction::BOUND_MEMORY); 1767 mReconstruction.addHandleDependency((const uint64_t*)&boxed_VkImage, 1, 1768 (uint64_t)(uintptr_t)boxed_VkImage, 1769 VkReconstruction::BOUND_MEMORY); 1770 } 1771 auto apiHandle = mReconstruction.createApiInfo(); 1772 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1773 mReconstruction.setApiTrace(apiInfo, OP_vkBindImageMemory2, snapshotTraceBegin, 1774 snapshotTraceBytes); 1775 // Note: the implementation does not work with bindInfoCount > 1 1776 for (uint32_t i = 0; i < bindInfoCount; ++i) { 1777 VkImage boxed_VkImage = unboxed_to_boxed_non_dispatchable_VkImage(pBindInfos[i].image); 1778 mReconstruction.forEachHandleAddApi((const uint64_t*)&boxed_VkImage, 1, apiHandle, 1779 VkReconstruction::BOUND_MEMORY); 1780 } 1781 } vkGetDeviceGroupPeerMemoryFeatures(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)1782 void vkGetDeviceGroupPeerMemoryFeatures(const uint8_t* snapshotTraceBegin, 1783 size_t snapshotTraceBytes, 1784 android::base::BumpPool* pool, VkDevice device, 1785 uint32_t heapIndex, uint32_t localDeviceIndex, 1786 uint32_t remoteDeviceIndex, 1787 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) {} vkCmdSetDeviceMask(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,uint32_t deviceMask)1788 void vkCmdSetDeviceMask(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1789 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1790 uint32_t deviceMask) { 1791 android::base::AutoLock lock(mLock); 1792 // commandBuffer modify 1793 auto apiHandle = mReconstruction.createApiInfo(); 1794 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1795 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetDeviceMask, snapshotTraceBegin, 1796 snapshotTraceBytes); 1797 for (uint32_t i = 0; i < 1; ++i) { 1798 // commandBuffer is already boxed, no need to box again 1799 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1800 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1801 } 1802 } vkCmdDispatchBase(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)1803 void vkCmdDispatchBase(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1804 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1805 uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, 1806 uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) { 1807 android::base::AutoLock lock(mLock); 1808 // commandBuffer modify 1809 auto apiHandle = mReconstruction.createApiInfo(); 1810 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1811 mReconstruction.setApiTrace(apiInfo, OP_vkCmdDispatchBase, snapshotTraceBegin, 1812 snapshotTraceBytes); 1813 for (uint32_t i = 0; i < 1; ++i) { 1814 // commandBuffer is already boxed, no need to box again 1815 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1816 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1817 } 1818 } vkEnumeratePhysicalDeviceGroups(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkInstance instance,uint32_t * pPhysicalDeviceGroupCount,VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties)1819 void vkEnumeratePhysicalDeviceGroups( 1820 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 1821 VkResult input_result, VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, 1822 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) {} vkGetImageMemoryRequirements2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)1823 void vkGetImageMemoryRequirements2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1824 android::base::BumpPool* pool, VkDevice device, 1825 const VkImageMemoryRequirementsInfo2* pInfo, 1826 VkMemoryRequirements2* pMemoryRequirements) {} vkGetBufferMemoryRequirements2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)1827 void vkGetBufferMemoryRequirements2(const uint8_t* snapshotTraceBegin, 1828 size_t snapshotTraceBytes, android::base::BumpPool* pool, 1829 VkDevice device, 1830 const VkBufferMemoryRequirementsInfo2* pInfo, 1831 VkMemoryRequirements2* pMemoryRequirements) {} vkGetImageSparseMemoryRequirements2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)1832 void vkGetImageSparseMemoryRequirements2( 1833 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 1834 VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, 1835 uint32_t* pSparseMemoryRequirementCount, 1836 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {} vkGetPhysicalDeviceFeatures2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures2 * pFeatures)1837 void vkGetPhysicalDeviceFeatures2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1838 android::base::BumpPool* pool, 1839 VkPhysicalDevice physicalDevice, 1840 VkPhysicalDeviceFeatures2* pFeatures) {} vkGetPhysicalDeviceProperties2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties2 * pProperties)1841 void vkGetPhysicalDeviceProperties2(const uint8_t* snapshotTraceBegin, 1842 size_t snapshotTraceBytes, android::base::BumpPool* pool, 1843 VkPhysicalDevice physicalDevice, 1844 VkPhysicalDeviceProperties2* pProperties) {} vkGetPhysicalDeviceFormatProperties2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties2 * pFormatProperties)1845 void vkGetPhysicalDeviceFormatProperties2(const uint8_t* snapshotTraceBegin, 1846 size_t snapshotTraceBytes, 1847 android::base::BumpPool* pool, 1848 VkPhysicalDevice physicalDevice, VkFormat format, 1849 VkFormatProperties2* pFormatProperties) {} vkGetPhysicalDeviceImageFormatProperties2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkPhysicalDevice physicalDevice,const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo,VkImageFormatProperties2 * pImageFormatProperties)1850 void vkGetPhysicalDeviceImageFormatProperties2( 1851 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 1852 VkResult input_result, VkPhysicalDevice physicalDevice, 1853 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, 1854 VkImageFormatProperties2* pImageFormatProperties) {} vkGetPhysicalDeviceQueueFamilyProperties2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties2 * pQueueFamilyProperties)1855 void vkGetPhysicalDeviceQueueFamilyProperties2( 1856 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 1857 VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, 1858 VkQueueFamilyProperties2* pQueueFamilyProperties) {} vkGetPhysicalDeviceMemoryProperties2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties2 * pMemoryProperties)1859 void vkGetPhysicalDeviceMemoryProperties2( 1860 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 1861 VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) {} vkGetPhysicalDeviceSparseImageFormatProperties2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo,uint32_t * pPropertyCount,VkSparseImageFormatProperties2 * pProperties)1862 void vkGetPhysicalDeviceSparseImageFormatProperties2( 1863 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 1864 VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, 1865 uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties) {} vkTrimCommandPool(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)1866 void vkTrimCommandPool(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1867 android::base::BumpPool* pool, VkDevice device, 1868 VkCommandPool commandPool, VkCommandPoolTrimFlags flags) {} vkGetDeviceQueue2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,const VkDeviceQueueInfo2 * pQueueInfo,VkQueue * pQueue)1869 void vkGetDeviceQueue2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1870 android::base::BumpPool* pool, VkDevice device, 1871 const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue) {} vkCreateSamplerYcbcrConversion(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)1872 void vkCreateSamplerYcbcrConversion(const uint8_t* snapshotTraceBegin, 1873 size_t snapshotTraceBytes, android::base::BumpPool* pool, 1874 VkResult input_result, VkDevice device, 1875 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, 1876 const VkAllocationCallbacks* pAllocator, 1877 VkSamplerYcbcrConversion* pYcbcrConversion) { 1878 if (!pYcbcrConversion) return; 1879 android::base::AutoLock lock(mLock); 1880 // pYcbcrConversion create 1881 mReconstruction.addHandles((const uint64_t*)pYcbcrConversion, 1); 1882 mReconstruction.addHandleDependency((const uint64_t*)pYcbcrConversion, 1, 1883 (uint64_t)(uintptr_t)device); 1884 auto apiHandle = mReconstruction.createApiInfo(); 1885 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1886 mReconstruction.setApiTrace(apiInfo, OP_vkCreateSamplerYcbcrConversion, snapshotTraceBegin, 1887 snapshotTraceBytes); 1888 mReconstruction.forEachHandleAddApi((const uint64_t*)pYcbcrConversion, 1, apiHandle, 1889 VkReconstruction::CREATED); 1890 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pYcbcrConversion, 1); 1891 } vkDestroySamplerYcbcrConversion(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)1892 void vkDestroySamplerYcbcrConversion(const uint8_t* snapshotTraceBegin, 1893 size_t snapshotTraceBytes, android::base::BumpPool* pool, 1894 VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, 1895 const VkAllocationCallbacks* pAllocator) { 1896 android::base::AutoLock lock(mLock); 1897 // ycbcrConversion destroy 1898 mReconstruction.removeHandles((const uint64_t*)(&ycbcrConversion), 1, true); 1899 } vkCreateDescriptorUpdateTemplate(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)1900 void vkCreateDescriptorUpdateTemplate(const uint8_t* snapshotTraceBegin, 1901 size_t snapshotTraceBytes, android::base::BumpPool* pool, 1902 VkResult input_result, VkDevice device, 1903 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, 1904 const VkAllocationCallbacks* pAllocator, 1905 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) { 1906 if (!pDescriptorUpdateTemplate) return; 1907 android::base::AutoLock lock(mLock); 1908 // pDescriptorUpdateTemplate create 1909 mReconstruction.addHandles((const uint64_t*)pDescriptorUpdateTemplate, 1); 1910 mReconstruction.addHandleDependency((const uint64_t*)pDescriptorUpdateTemplate, 1, 1911 (uint64_t)(uintptr_t)device); 1912 auto apiHandle = mReconstruction.createApiInfo(); 1913 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1914 mReconstruction.setApiTrace(apiInfo, OP_vkCreateDescriptorUpdateTemplate, 1915 snapshotTraceBegin, snapshotTraceBytes); 1916 mReconstruction.forEachHandleAddApi((const uint64_t*)pDescriptorUpdateTemplate, 1, 1917 apiHandle, VkReconstruction::CREATED); 1918 mReconstruction.setCreatedHandlesForApi(apiHandle, 1919 (const uint64_t*)pDescriptorUpdateTemplate, 1); 1920 } vkDestroyDescriptorUpdateTemplate(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)1921 void vkDestroyDescriptorUpdateTemplate(const uint8_t* snapshotTraceBegin, 1922 size_t snapshotTraceBytes, android::base::BumpPool* pool, 1923 VkDevice device, 1924 VkDescriptorUpdateTemplate descriptorUpdateTemplate, 1925 const VkAllocationCallbacks* pAllocator) { 1926 android::base::AutoLock lock(mLock); 1927 // descriptorUpdateTemplate destroy 1928 mReconstruction.removeHandles((const uint64_t*)(&descriptorUpdateTemplate), 1, true); 1929 } vkUpdateDescriptorSetWithTemplate(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)1930 void vkUpdateDescriptorSetWithTemplate(const uint8_t* snapshotTraceBegin, 1931 size_t snapshotTraceBytes, android::base::BumpPool* pool, 1932 VkDevice device, VkDescriptorSet descriptorSet, 1933 VkDescriptorUpdateTemplate descriptorUpdateTemplate, 1934 const void* pData) {} vkGetPhysicalDeviceExternalBufferProperties(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo,VkExternalBufferProperties * pExternalBufferProperties)1935 void vkGetPhysicalDeviceExternalBufferProperties( 1936 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 1937 VkPhysicalDevice physicalDevice, 1938 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, 1939 VkExternalBufferProperties* pExternalBufferProperties) {} vkGetPhysicalDeviceExternalFenceProperties(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo,VkExternalFenceProperties * pExternalFenceProperties)1940 void vkGetPhysicalDeviceExternalFenceProperties( 1941 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 1942 VkPhysicalDevice physicalDevice, 1943 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, 1944 VkExternalFenceProperties* pExternalFenceProperties) {} vkGetPhysicalDeviceExternalSemaphoreProperties(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo,VkExternalSemaphoreProperties * pExternalSemaphoreProperties)1945 void vkGetPhysicalDeviceExternalSemaphoreProperties( 1946 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 1947 VkPhysicalDevice physicalDevice, 1948 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, 1949 VkExternalSemaphoreProperties* pExternalSemaphoreProperties) {} vkGetDescriptorSetLayoutSupport(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)1950 void vkGetDescriptorSetLayoutSupport(const uint8_t* snapshotTraceBegin, 1951 size_t snapshotTraceBytes, android::base::BumpPool* pool, 1952 VkDevice device, 1953 const VkDescriptorSetLayoutCreateInfo* pCreateInfo, 1954 VkDescriptorSetLayoutSupport* pSupport) {} 1955 #endif 1956 #ifdef VK_VERSION_1_2 vkCmdDrawIndirectCount(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)1957 void vkCmdDrawIndirectCount(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1958 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1959 VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, 1960 VkDeviceSize countBufferOffset, uint32_t maxDrawCount, 1961 uint32_t stride) { 1962 android::base::AutoLock lock(mLock); 1963 // commandBuffer modify 1964 auto apiHandle = mReconstruction.createApiInfo(); 1965 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1966 mReconstruction.setApiTrace(apiInfo, OP_vkCmdDrawIndirectCount, snapshotTraceBegin, 1967 snapshotTraceBytes); 1968 for (uint32_t i = 0; i < 1; ++i) { 1969 // commandBuffer is already boxed, no need to box again 1970 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1971 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1972 } 1973 } vkCmdDrawIndexedIndirectCount(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)1974 void vkCmdDrawIndexedIndirectCount(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1975 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 1976 VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, 1977 VkDeviceSize countBufferOffset, uint32_t maxDrawCount, 1978 uint32_t stride) { 1979 android::base::AutoLock lock(mLock); 1980 // commandBuffer modify 1981 auto apiHandle = mReconstruction.createApiInfo(); 1982 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 1983 mReconstruction.setApiTrace(apiInfo, OP_vkCmdDrawIndexedIndirectCount, snapshotTraceBegin, 1984 snapshotTraceBytes); 1985 for (uint32_t i = 0; i < 1; ++i) { 1986 // commandBuffer is already boxed, no need to box again 1987 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 1988 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 1989 } 1990 } vkCreateRenderPass2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkRenderPassCreateInfo2 * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)1991 void vkCreateRenderPass2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 1992 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 1993 const VkRenderPassCreateInfo2* pCreateInfo, 1994 const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) { 1995 if (!pRenderPass) return; 1996 android::base::AutoLock lock(mLock); 1997 // pRenderPass create 1998 mReconstruction.addHandles((const uint64_t*)pRenderPass, 1); 1999 mReconstruction.addHandleDependency((const uint64_t*)pRenderPass, 1, 2000 (uint64_t)(uintptr_t)device); 2001 auto apiHandle = mReconstruction.createApiInfo(); 2002 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2003 mReconstruction.setApiTrace(apiInfo, OP_vkCreateRenderPass2, snapshotTraceBegin, 2004 snapshotTraceBytes); 2005 mReconstruction.forEachHandleAddApi((const uint64_t*)pRenderPass, 1, apiHandle, 2006 VkReconstruction::CREATED); 2007 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pRenderPass, 1); 2008 } vkCmdBeginRenderPass2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,const VkSubpassBeginInfo * pSubpassBeginInfo)2009 void vkCmdBeginRenderPass2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2010 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2011 const VkRenderPassBeginInfo* pRenderPassBegin, 2012 const VkSubpassBeginInfo* pSubpassBeginInfo) { 2013 android::base::AutoLock lock(mLock); 2014 // commandBuffer modify 2015 auto apiHandle = mReconstruction.createApiInfo(); 2016 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2017 mReconstruction.setApiTrace(apiInfo, OP_vkCmdBeginRenderPass2, snapshotTraceBegin, 2018 snapshotTraceBytes); 2019 for (uint32_t i = 0; i < 1; ++i) { 2020 // commandBuffer is already boxed, no need to box again 2021 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2022 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2023 } 2024 } vkCmdNextSubpass2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,const VkSubpassBeginInfo * pSubpassBeginInfo,const VkSubpassEndInfo * pSubpassEndInfo)2025 void vkCmdNextSubpass2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2026 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2027 const VkSubpassBeginInfo* pSubpassBeginInfo, 2028 const VkSubpassEndInfo* pSubpassEndInfo) { 2029 android::base::AutoLock lock(mLock); 2030 // commandBuffer modify 2031 auto apiHandle = mReconstruction.createApiInfo(); 2032 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2033 mReconstruction.setApiTrace(apiInfo, OP_vkCmdNextSubpass2, snapshotTraceBegin, 2034 snapshotTraceBytes); 2035 for (uint32_t i = 0; i < 1; ++i) { 2036 // commandBuffer is already boxed, no need to box again 2037 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2038 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2039 } 2040 } vkCmdEndRenderPass2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,const VkSubpassEndInfo * pSubpassEndInfo)2041 void vkCmdEndRenderPass2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2042 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2043 const VkSubpassEndInfo* pSubpassEndInfo) { 2044 android::base::AutoLock lock(mLock); 2045 // commandBuffer modify 2046 auto apiHandle = mReconstruction.createApiInfo(); 2047 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2048 mReconstruction.setApiTrace(apiInfo, OP_vkCmdEndRenderPass2, snapshotTraceBegin, 2049 snapshotTraceBytes); 2050 for (uint32_t i = 0; i < 1; ++i) { 2051 // commandBuffer is already boxed, no need to box again 2052 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2053 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2054 } 2055 } vkResetQueryPool(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)2056 void vkResetQueryPool(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2057 android::base::BumpPool* pool, VkDevice device, VkQueryPool queryPool, 2058 uint32_t firstQuery, uint32_t queryCount) {} vkGetSemaphoreCounterValue(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,VkSemaphore semaphore,uint64_t * pValue)2059 void vkGetSemaphoreCounterValue(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2060 android::base::BumpPool* pool, VkResult input_result, 2061 VkDevice device, VkSemaphore semaphore, uint64_t* pValue) {} vkWaitSemaphores(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)2062 void vkWaitSemaphores(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2063 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 2064 const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout) {} vkSignalSemaphore(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)2065 void vkSignalSemaphore(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2066 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 2067 const VkSemaphoreSignalInfo* pSignalInfo) {} vkGetBufferDeviceAddress(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDeviceAddress input_result,VkDevice device,const VkBufferDeviceAddressInfo * pInfo)2068 void vkGetBufferDeviceAddress(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2069 android::base::BumpPool* pool, VkDeviceAddress input_result, 2070 VkDevice device, const VkBufferDeviceAddressInfo* pInfo) {} vkGetBufferOpaqueCaptureAddress(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,uint64_t input_result,VkDevice device,const VkBufferDeviceAddressInfo * pInfo)2071 void vkGetBufferOpaqueCaptureAddress(const uint8_t* snapshotTraceBegin, 2072 size_t snapshotTraceBytes, android::base::BumpPool* pool, 2073 uint64_t input_result, VkDevice device, 2074 const VkBufferDeviceAddressInfo* pInfo) {} vkGetDeviceMemoryOpaqueCaptureAddress(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,uint64_t input_result,VkDevice device,const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo)2075 void vkGetDeviceMemoryOpaqueCaptureAddress( 2076 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 2077 uint64_t input_result, VkDevice device, 2078 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) {} 2079 #endif 2080 #ifdef VK_VERSION_1_3 vkGetPhysicalDeviceToolProperties(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkPhysicalDevice physicalDevice,uint32_t * pToolCount,VkPhysicalDeviceToolProperties * pToolProperties)2081 void vkGetPhysicalDeviceToolProperties(const uint8_t* snapshotTraceBegin, 2082 size_t snapshotTraceBytes, android::base::BumpPool* pool, 2083 VkResult input_result, VkPhysicalDevice physicalDevice, 2084 uint32_t* pToolCount, 2085 VkPhysicalDeviceToolProperties* pToolProperties) {} vkCreatePrivateDataSlot(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkPrivateDataSlotCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPrivateDataSlot * pPrivateDataSlot)2086 void vkCreatePrivateDataSlot(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2087 android::base::BumpPool* pool, VkResult input_result, 2088 VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo, 2089 const VkAllocationCallbacks* pAllocator, 2090 VkPrivateDataSlot* pPrivateDataSlot) { 2091 if (!pPrivateDataSlot) return; 2092 android::base::AutoLock lock(mLock); 2093 // pPrivateDataSlot create 2094 mReconstruction.addHandles((const uint64_t*)pPrivateDataSlot, 1); 2095 mReconstruction.addHandleDependency((const uint64_t*)pPrivateDataSlot, 1, 2096 (uint64_t)(uintptr_t)device); 2097 auto apiHandle = mReconstruction.createApiInfo(); 2098 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2099 mReconstruction.setApiTrace(apiInfo, OP_vkCreatePrivateDataSlot, snapshotTraceBegin, 2100 snapshotTraceBytes); 2101 mReconstruction.forEachHandleAddApi((const uint64_t*)pPrivateDataSlot, 1, apiHandle, 2102 VkReconstruction::CREATED); 2103 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pPrivateDataSlot, 1); 2104 } vkDestroyPrivateDataSlot(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkPrivateDataSlot privateDataSlot,const VkAllocationCallbacks * pAllocator)2105 void vkDestroyPrivateDataSlot(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2106 android::base::BumpPool* pool, VkDevice device, 2107 VkPrivateDataSlot privateDataSlot, 2108 const VkAllocationCallbacks* pAllocator) { 2109 android::base::AutoLock lock(mLock); 2110 // privateDataSlot destroy 2111 mReconstruction.removeHandles((const uint64_t*)(&privateDataSlot), 1, true); 2112 } vkSetPrivateData(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlot privateDataSlot,uint64_t data)2113 void vkSetPrivateData(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2114 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 2115 VkObjectType objectType, uint64_t objectHandle, 2116 VkPrivateDataSlot privateDataSlot, uint64_t data) {} vkGetPrivateData(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlot privateDataSlot,uint64_t * pData)2117 void vkGetPrivateData(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2118 android::base::BumpPool* pool, VkDevice device, VkObjectType objectType, 2119 uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, 2120 uint64_t* pData) {} vkCmdSetEvent2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkEvent event,const VkDependencyInfo * pDependencyInfo)2121 void vkCmdSetEvent2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2122 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, VkEvent event, 2123 const VkDependencyInfo* pDependencyInfo) { 2124 android::base::AutoLock lock(mLock); 2125 // commandBuffer modify 2126 auto apiHandle = mReconstruction.createApiInfo(); 2127 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2128 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetEvent2, snapshotTraceBegin, 2129 snapshotTraceBytes); 2130 for (uint32_t i = 0; i < 1; ++i) { 2131 // commandBuffer is already boxed, no need to box again 2132 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2133 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2134 } 2135 } vkCmdResetEvent2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags2 stageMask)2136 void vkCmdResetEvent2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2137 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2138 VkEvent event, VkPipelineStageFlags2 stageMask) { 2139 android::base::AutoLock lock(mLock); 2140 // commandBuffer modify 2141 auto apiHandle = mReconstruction.createApiInfo(); 2142 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2143 mReconstruction.setApiTrace(apiInfo, OP_vkCmdResetEvent2, snapshotTraceBegin, 2144 snapshotTraceBytes); 2145 for (uint32_t i = 0; i < 1; ++i) { 2146 // commandBuffer is already boxed, no need to box again 2147 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2148 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2149 } 2150 } vkCmdWaitEvents2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,uint32_t eventCount,const VkEvent * pEvents,const VkDependencyInfo * pDependencyInfos)2151 void vkCmdWaitEvents2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2152 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2153 uint32_t eventCount, const VkEvent* pEvents, 2154 const VkDependencyInfo* pDependencyInfos) { 2155 android::base::AutoLock lock(mLock); 2156 // commandBuffer modify 2157 auto apiHandle = mReconstruction.createApiInfo(); 2158 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2159 mReconstruction.setApiTrace(apiInfo, OP_vkCmdWaitEvents2, snapshotTraceBegin, 2160 snapshotTraceBytes); 2161 for (uint32_t i = 0; i < 1; ++i) { 2162 // commandBuffer is already boxed, no need to box again 2163 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2164 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2165 } 2166 } vkCmdPipelineBarrier2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,const VkDependencyInfo * pDependencyInfo)2167 void vkCmdPipelineBarrier2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2168 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2169 const VkDependencyInfo* pDependencyInfo) { 2170 android::base::AutoLock lock(mLock); 2171 // commandBuffer modify 2172 auto apiHandle = mReconstruction.createApiInfo(); 2173 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2174 mReconstruction.setApiTrace(apiInfo, OP_vkCmdPipelineBarrier2, snapshotTraceBegin, 2175 snapshotTraceBytes); 2176 for (uint32_t i = 0; i < 1; ++i) { 2177 // commandBuffer is already boxed, no need to box again 2178 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2179 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2180 } 2181 } vkCmdWriteTimestamp2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkPipelineStageFlags2 stage,VkQueryPool queryPool,uint32_t query)2182 void vkCmdWriteTimestamp2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2183 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2184 VkPipelineStageFlags2 stage, VkQueryPool queryPool, uint32_t query) { 2185 android::base::AutoLock lock(mLock); 2186 // commandBuffer modify 2187 auto apiHandle = mReconstruction.createApiInfo(); 2188 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2189 mReconstruction.setApiTrace(apiInfo, OP_vkCmdWriteTimestamp2, snapshotTraceBegin, 2190 snapshotTraceBytes); 2191 for (uint32_t i = 0; i < 1; ++i) { 2192 // commandBuffer is already boxed, no need to box again 2193 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2194 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2195 } 2196 } vkQueueSubmit2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkQueue queue,uint32_t submitCount,const VkSubmitInfo2 * pSubmits,VkFence fence)2197 void vkQueueSubmit2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2198 android::base::BumpPool* pool, VkResult input_result, VkQueue queue, 2199 uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence) {} vkCmdCopyBuffer2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,const VkCopyBufferInfo2 * pCopyBufferInfo)2200 void vkCmdCopyBuffer2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2201 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2202 const VkCopyBufferInfo2* pCopyBufferInfo) { 2203 android::base::AutoLock lock(mLock); 2204 // commandBuffer modify 2205 auto apiHandle = mReconstruction.createApiInfo(); 2206 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2207 mReconstruction.setApiTrace(apiInfo, OP_vkCmdCopyBuffer2, snapshotTraceBegin, 2208 snapshotTraceBytes); 2209 for (uint32_t i = 0; i < 1; ++i) { 2210 // commandBuffer is already boxed, no need to box again 2211 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2212 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2213 } 2214 } vkCmdCopyImage2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,const VkCopyImageInfo2 * pCopyImageInfo)2215 void vkCmdCopyImage2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2216 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2217 const VkCopyImageInfo2* pCopyImageInfo) { 2218 android::base::AutoLock lock(mLock); 2219 // commandBuffer modify 2220 auto apiHandle = mReconstruction.createApiInfo(); 2221 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2222 mReconstruction.setApiTrace(apiInfo, OP_vkCmdCopyImage2, snapshotTraceBegin, 2223 snapshotTraceBytes); 2224 for (uint32_t i = 0; i < 1; ++i) { 2225 // commandBuffer is already boxed, no need to box again 2226 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2227 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2228 } 2229 } vkCmdCopyBufferToImage2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo)2230 void vkCmdCopyBufferToImage2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2231 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2232 const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo) { 2233 android::base::AutoLock lock(mLock); 2234 // commandBuffer modify 2235 auto apiHandle = mReconstruction.createApiInfo(); 2236 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2237 mReconstruction.setApiTrace(apiInfo, OP_vkCmdCopyBufferToImage2, snapshotTraceBegin, 2238 snapshotTraceBytes); 2239 for (uint32_t i = 0; i < 1; ++i) { 2240 // commandBuffer is already boxed, no need to box again 2241 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2242 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2243 } 2244 } vkCmdCopyImageToBuffer2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo)2245 void vkCmdCopyImageToBuffer2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2246 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2247 const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo) { 2248 android::base::AutoLock lock(mLock); 2249 // commandBuffer modify 2250 auto apiHandle = mReconstruction.createApiInfo(); 2251 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2252 mReconstruction.setApiTrace(apiInfo, OP_vkCmdCopyImageToBuffer2, snapshotTraceBegin, 2253 snapshotTraceBytes); 2254 for (uint32_t i = 0; i < 1; ++i) { 2255 // commandBuffer is already boxed, no need to box again 2256 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2257 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2258 } 2259 } vkCmdBlitImage2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,const VkBlitImageInfo2 * pBlitImageInfo)2260 void vkCmdBlitImage2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2261 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2262 const VkBlitImageInfo2* pBlitImageInfo) { 2263 android::base::AutoLock lock(mLock); 2264 // commandBuffer modify 2265 auto apiHandle = mReconstruction.createApiInfo(); 2266 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2267 mReconstruction.setApiTrace(apiInfo, OP_vkCmdBlitImage2, snapshotTraceBegin, 2268 snapshotTraceBytes); 2269 for (uint32_t i = 0; i < 1; ++i) { 2270 // commandBuffer is already boxed, no need to box again 2271 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2272 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2273 } 2274 } vkCmdResolveImage2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,const VkResolveImageInfo2 * pResolveImageInfo)2275 void vkCmdResolveImage2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2276 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2277 const VkResolveImageInfo2* pResolveImageInfo) { 2278 android::base::AutoLock lock(mLock); 2279 // commandBuffer modify 2280 auto apiHandle = mReconstruction.createApiInfo(); 2281 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2282 mReconstruction.setApiTrace(apiInfo, OP_vkCmdResolveImage2, snapshotTraceBegin, 2283 snapshotTraceBytes); 2284 for (uint32_t i = 0; i < 1; ++i) { 2285 // commandBuffer is already boxed, no need to box again 2286 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2287 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2288 } 2289 } vkCmdBeginRendering(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,const VkRenderingInfo * pRenderingInfo)2290 void vkCmdBeginRendering(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2291 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2292 const VkRenderingInfo* pRenderingInfo) { 2293 android::base::AutoLock lock(mLock); 2294 // commandBuffer modify 2295 auto apiHandle = mReconstruction.createApiInfo(); 2296 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2297 mReconstruction.setApiTrace(apiInfo, OP_vkCmdBeginRendering, snapshotTraceBegin, 2298 snapshotTraceBytes); 2299 for (uint32_t i = 0; i < 1; ++i) { 2300 // commandBuffer is already boxed, no need to box again 2301 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2302 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2303 } 2304 } vkCmdEndRendering(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer)2305 void vkCmdEndRendering(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2306 android::base::BumpPool* pool, VkCommandBuffer commandBuffer) { 2307 android::base::AutoLock lock(mLock); 2308 // commandBuffer modify 2309 auto apiHandle = mReconstruction.createApiInfo(); 2310 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2311 mReconstruction.setApiTrace(apiInfo, OP_vkCmdEndRendering, snapshotTraceBegin, 2312 snapshotTraceBytes); 2313 for (uint32_t i = 0; i < 1; ++i) { 2314 // commandBuffer is already boxed, no need to box again 2315 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2316 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2317 } 2318 } vkCmdSetCullMode(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkCullModeFlags cullMode)2319 void vkCmdSetCullMode(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2320 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2321 VkCullModeFlags cullMode) { 2322 android::base::AutoLock lock(mLock); 2323 // commandBuffer modify 2324 auto apiHandle = mReconstruction.createApiInfo(); 2325 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2326 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetCullMode, snapshotTraceBegin, 2327 snapshotTraceBytes); 2328 for (uint32_t i = 0; i < 1; ++i) { 2329 // commandBuffer is already boxed, no need to box again 2330 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2331 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2332 } 2333 } vkCmdSetFrontFace(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkFrontFace frontFace)2334 void vkCmdSetFrontFace(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2335 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2336 VkFrontFace frontFace) { 2337 android::base::AutoLock lock(mLock); 2338 // commandBuffer modify 2339 auto apiHandle = mReconstruction.createApiInfo(); 2340 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2341 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetFrontFace, snapshotTraceBegin, 2342 snapshotTraceBytes); 2343 for (uint32_t i = 0; i < 1; ++i) { 2344 // commandBuffer is already boxed, no need to box again 2345 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2346 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2347 } 2348 } vkCmdSetPrimitiveTopology(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkPrimitiveTopology primitiveTopology)2349 void vkCmdSetPrimitiveTopology(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2350 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2351 VkPrimitiveTopology primitiveTopology) { 2352 android::base::AutoLock lock(mLock); 2353 // commandBuffer modify 2354 auto apiHandle = mReconstruction.createApiInfo(); 2355 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2356 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetPrimitiveTopology, snapshotTraceBegin, 2357 snapshotTraceBytes); 2358 for (uint32_t i = 0; i < 1; ++i) { 2359 // commandBuffer is already boxed, no need to box again 2360 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2361 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2362 } 2363 } vkCmdSetViewportWithCount(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,uint32_t viewportCount,const VkViewport * pViewports)2364 void vkCmdSetViewportWithCount(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2365 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2366 uint32_t viewportCount, const VkViewport* pViewports) { 2367 android::base::AutoLock lock(mLock); 2368 // commandBuffer modify 2369 auto apiHandle = mReconstruction.createApiInfo(); 2370 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2371 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetViewportWithCount, snapshotTraceBegin, 2372 snapshotTraceBytes); 2373 for (uint32_t i = 0; i < 1; ++i) { 2374 // commandBuffer is already boxed, no need to box again 2375 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2376 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2377 } 2378 } vkCmdSetScissorWithCount(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,uint32_t scissorCount,const VkRect2D * pScissors)2379 void vkCmdSetScissorWithCount(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2380 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2381 uint32_t scissorCount, const VkRect2D* pScissors) { 2382 android::base::AutoLock lock(mLock); 2383 // commandBuffer modify 2384 auto apiHandle = mReconstruction.createApiInfo(); 2385 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2386 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetScissorWithCount, snapshotTraceBegin, 2387 snapshotTraceBytes); 2388 for (uint32_t i = 0; i < 1; ++i) { 2389 // commandBuffer is already boxed, no need to box again 2390 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2391 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2392 } 2393 } vkCmdBindVertexBuffers2(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets,const VkDeviceSize * pSizes,const VkDeviceSize * pStrides)2394 void vkCmdBindVertexBuffers2(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2395 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2396 uint32_t firstBinding, uint32_t bindingCount, 2397 const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, 2398 const VkDeviceSize* pSizes, const VkDeviceSize* pStrides) { 2399 android::base::AutoLock lock(mLock); 2400 // commandBuffer modify 2401 auto apiHandle = mReconstruction.createApiInfo(); 2402 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2403 mReconstruction.setApiTrace(apiInfo, OP_vkCmdBindVertexBuffers2, snapshotTraceBegin, 2404 snapshotTraceBytes); 2405 for (uint32_t i = 0; i < 1; ++i) { 2406 // commandBuffer is already boxed, no need to box again 2407 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2408 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2409 } 2410 } vkCmdSetDepthTestEnable(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkBool32 depthTestEnable)2411 void vkCmdSetDepthTestEnable(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2412 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2413 VkBool32 depthTestEnable) { 2414 android::base::AutoLock lock(mLock); 2415 // commandBuffer modify 2416 auto apiHandle = mReconstruction.createApiInfo(); 2417 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2418 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetDepthTestEnable, snapshotTraceBegin, 2419 snapshotTraceBytes); 2420 for (uint32_t i = 0; i < 1; ++i) { 2421 // commandBuffer is already boxed, no need to box again 2422 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2423 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2424 } 2425 } vkCmdSetDepthWriteEnable(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkBool32 depthWriteEnable)2426 void vkCmdSetDepthWriteEnable(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2427 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2428 VkBool32 depthWriteEnable) { 2429 android::base::AutoLock lock(mLock); 2430 // commandBuffer modify 2431 auto apiHandle = mReconstruction.createApiInfo(); 2432 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2433 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetDepthWriteEnable, snapshotTraceBegin, 2434 snapshotTraceBytes); 2435 for (uint32_t i = 0; i < 1; ++i) { 2436 // commandBuffer is already boxed, no need to box again 2437 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2438 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2439 } 2440 } vkCmdSetDepthCompareOp(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkCompareOp depthCompareOp)2441 void vkCmdSetDepthCompareOp(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2442 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2443 VkCompareOp depthCompareOp) { 2444 android::base::AutoLock lock(mLock); 2445 // commandBuffer modify 2446 auto apiHandle = mReconstruction.createApiInfo(); 2447 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2448 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetDepthCompareOp, snapshotTraceBegin, 2449 snapshotTraceBytes); 2450 for (uint32_t i = 0; i < 1; ++i) { 2451 // commandBuffer is already boxed, no need to box again 2452 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2453 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2454 } 2455 } vkCmdSetDepthBoundsTestEnable(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkBool32 depthBoundsTestEnable)2456 void vkCmdSetDepthBoundsTestEnable(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2457 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2458 VkBool32 depthBoundsTestEnable) { 2459 android::base::AutoLock lock(mLock); 2460 // commandBuffer modify 2461 auto apiHandle = mReconstruction.createApiInfo(); 2462 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2463 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetDepthBoundsTestEnable, snapshotTraceBegin, 2464 snapshotTraceBytes); 2465 for (uint32_t i = 0; i < 1; ++i) { 2466 // commandBuffer is already boxed, no need to box again 2467 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2468 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2469 } 2470 } vkCmdSetStencilTestEnable(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkBool32 stencilTestEnable)2471 void vkCmdSetStencilTestEnable(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2472 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2473 VkBool32 stencilTestEnable) { 2474 android::base::AutoLock lock(mLock); 2475 // commandBuffer modify 2476 auto apiHandle = mReconstruction.createApiInfo(); 2477 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2478 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetStencilTestEnable, snapshotTraceBegin, 2479 snapshotTraceBytes); 2480 for (uint32_t i = 0; i < 1; ++i) { 2481 // commandBuffer is already boxed, no need to box again 2482 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2483 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2484 } 2485 } vkCmdSetStencilOp(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,VkStencilOp failOp,VkStencilOp passOp,VkStencilOp depthFailOp,VkCompareOp compareOp)2486 void vkCmdSetStencilOp(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2487 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2488 VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, 2489 VkStencilOp depthFailOp, VkCompareOp compareOp) { 2490 android::base::AutoLock lock(mLock); 2491 // commandBuffer modify 2492 auto apiHandle = mReconstruction.createApiInfo(); 2493 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2494 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetStencilOp, snapshotTraceBegin, 2495 snapshotTraceBytes); 2496 for (uint32_t i = 0; i < 1; ++i) { 2497 // commandBuffer is already boxed, no need to box again 2498 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2499 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2500 } 2501 } vkCmdSetRasterizerDiscardEnable(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkBool32 rasterizerDiscardEnable)2502 void vkCmdSetRasterizerDiscardEnable(const uint8_t* snapshotTraceBegin, 2503 size_t snapshotTraceBytes, android::base::BumpPool* pool, 2504 VkCommandBuffer commandBuffer, 2505 VkBool32 rasterizerDiscardEnable) { 2506 android::base::AutoLock lock(mLock); 2507 // commandBuffer modify 2508 auto apiHandle = mReconstruction.createApiInfo(); 2509 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2510 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetRasterizerDiscardEnable, snapshotTraceBegin, 2511 snapshotTraceBytes); 2512 for (uint32_t i = 0; i < 1; ++i) { 2513 // commandBuffer is already boxed, no need to box again 2514 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2515 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2516 } 2517 } vkCmdSetDepthBiasEnable(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkBool32 depthBiasEnable)2518 void vkCmdSetDepthBiasEnable(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2519 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2520 VkBool32 depthBiasEnable) { 2521 android::base::AutoLock lock(mLock); 2522 // commandBuffer modify 2523 auto apiHandle = mReconstruction.createApiInfo(); 2524 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2525 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetDepthBiasEnable, snapshotTraceBegin, 2526 snapshotTraceBytes); 2527 for (uint32_t i = 0; i < 1; ++i) { 2528 // commandBuffer is already boxed, no need to box again 2529 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2530 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2531 } 2532 } vkCmdSetPrimitiveRestartEnable(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkBool32 primitiveRestartEnable)2533 void vkCmdSetPrimitiveRestartEnable(const uint8_t* snapshotTraceBegin, 2534 size_t snapshotTraceBytes, android::base::BumpPool* pool, 2535 VkCommandBuffer commandBuffer, 2536 VkBool32 primitiveRestartEnable) { 2537 android::base::AutoLock lock(mLock); 2538 // commandBuffer modify 2539 auto apiHandle = mReconstruction.createApiInfo(); 2540 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2541 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetPrimitiveRestartEnable, snapshotTraceBegin, 2542 snapshotTraceBytes); 2543 for (uint32_t i = 0; i < 1; ++i) { 2544 // commandBuffer is already boxed, no need to box again 2545 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2546 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2547 } 2548 } vkGetDeviceBufferMemoryRequirements(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,const VkDeviceBufferMemoryRequirements * pInfo,VkMemoryRequirements2 * pMemoryRequirements)2549 void vkGetDeviceBufferMemoryRequirements(const uint8_t* snapshotTraceBegin, 2550 size_t snapshotTraceBytes, 2551 android::base::BumpPool* pool, VkDevice device, 2552 const VkDeviceBufferMemoryRequirements* pInfo, 2553 VkMemoryRequirements2* pMemoryRequirements) {} vkGetDeviceImageMemoryRequirements(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,const VkDeviceImageMemoryRequirements * pInfo,VkMemoryRequirements2 * pMemoryRequirements)2554 void vkGetDeviceImageMemoryRequirements(const uint8_t* snapshotTraceBegin, 2555 size_t snapshotTraceBytes, 2556 android::base::BumpPool* pool, VkDevice device, 2557 const VkDeviceImageMemoryRequirements* pInfo, 2558 VkMemoryRequirements2* pMemoryRequirements) {} vkGetDeviceImageSparseMemoryRequirements(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,const VkDeviceImageMemoryRequirements * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)2559 void vkGetDeviceImageSparseMemoryRequirements( 2560 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 2561 VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, 2562 uint32_t* pSparseMemoryRequirementCount, 2563 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {} 2564 #endif 2565 #ifdef VK_KHR_swapchain vkCreateSwapchainKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkSwapchainCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSwapchainKHR * pSwapchain)2566 void vkCreateSwapchainKHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2567 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 2568 const VkSwapchainCreateInfoKHR* pCreateInfo, 2569 const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) { 2570 if (!pSwapchain) return; 2571 android::base::AutoLock lock(mLock); 2572 // pSwapchain create 2573 mReconstruction.addHandles((const uint64_t*)pSwapchain, 1); 2574 mReconstruction.addHandleDependency((const uint64_t*)pSwapchain, 1, 2575 (uint64_t)(uintptr_t)device); 2576 auto apiHandle = mReconstruction.createApiInfo(); 2577 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2578 mReconstruction.setApiTrace(apiInfo, OP_vkCreateSwapchainKHR, snapshotTraceBegin, 2579 snapshotTraceBytes); 2580 mReconstruction.forEachHandleAddApi((const uint64_t*)pSwapchain, 1, apiHandle, 2581 VkReconstruction::CREATED); 2582 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pSwapchain, 1); 2583 } vkDestroySwapchainKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkSwapchainKHR swapchain,const VkAllocationCallbacks * pAllocator)2584 void vkDestroySwapchainKHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2585 android::base::BumpPool* pool, VkDevice device, 2586 VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator) { 2587 android::base::AutoLock lock(mLock); 2588 // swapchain destroy 2589 mReconstruction.removeHandles((const uint64_t*)(&swapchain), 1, true); 2590 } vkGetSwapchainImagesKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,VkSwapchainKHR swapchain,uint32_t * pSwapchainImageCount,VkImage * pSwapchainImages)2591 void vkGetSwapchainImagesKHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2592 android::base::BumpPool* pool, VkResult input_result, 2593 VkDevice device, VkSwapchainKHR swapchain, 2594 uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages) {} vkAcquireNextImageKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,VkSwapchainKHR swapchain,uint64_t timeout,VkSemaphore semaphore,VkFence fence,uint32_t * pImageIndex)2595 void vkAcquireNextImageKHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2596 android::base::BumpPool* pool, VkResult input_result, 2597 VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, 2598 VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex) {} vkQueuePresentKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkQueue queue,const VkPresentInfoKHR * pPresentInfo)2599 void vkQueuePresentKHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2600 android::base::BumpPool* pool, VkResult input_result, VkQueue queue, 2601 const VkPresentInfoKHR* pPresentInfo) {} vkGetDeviceGroupPresentCapabilitiesKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities)2602 void vkGetDeviceGroupPresentCapabilitiesKHR( 2603 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 2604 VkResult input_result, VkDevice device, 2605 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) {} vkGetDeviceGroupSurfacePresentModesKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,VkSurfaceKHR surface,VkDeviceGroupPresentModeFlagsKHR * pModes)2606 void vkGetDeviceGroupSurfacePresentModesKHR(const uint8_t* snapshotTraceBegin, 2607 size_t snapshotTraceBytes, 2608 android::base::BumpPool* pool, 2609 VkResult input_result, VkDevice device, 2610 VkSurfaceKHR surface, 2611 VkDeviceGroupPresentModeFlagsKHR* pModes) {} vkGetPhysicalDevicePresentRectanglesKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkPhysicalDevice physicalDevice,VkSurfaceKHR surface,uint32_t * pRectCount,VkRect2D * pRects)2612 void vkGetPhysicalDevicePresentRectanglesKHR( 2613 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 2614 VkResult input_result, VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, 2615 uint32_t* pRectCount, VkRect2D* pRects) {} vkAcquireNextImage2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkAcquireNextImageInfoKHR * pAcquireInfo,uint32_t * pImageIndex)2616 void vkAcquireNextImage2KHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2617 android::base::BumpPool* pool, VkResult input_result, 2618 VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, 2619 uint32_t* pImageIndex) {} 2620 #endif 2621 #ifdef VK_KHR_dynamic_rendering vkCmdBeginRenderingKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,const VkRenderingInfo * pRenderingInfo)2622 void vkCmdBeginRenderingKHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2623 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2624 const VkRenderingInfo* pRenderingInfo) { 2625 android::base::AutoLock lock(mLock); 2626 // commandBuffer modify 2627 auto apiHandle = mReconstruction.createApiInfo(); 2628 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2629 mReconstruction.setApiTrace(apiInfo, OP_vkCmdBeginRenderingKHR, snapshotTraceBegin, 2630 snapshotTraceBytes); 2631 for (uint32_t i = 0; i < 1; ++i) { 2632 // commandBuffer is already boxed, no need to box again 2633 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2634 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2635 } 2636 } vkCmdEndRenderingKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer)2637 void vkCmdEndRenderingKHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2638 android::base::BumpPool* pool, VkCommandBuffer commandBuffer) { 2639 android::base::AutoLock lock(mLock); 2640 // commandBuffer modify 2641 auto apiHandle = mReconstruction.createApiInfo(); 2642 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2643 mReconstruction.setApiTrace(apiInfo, OP_vkCmdEndRenderingKHR, snapshotTraceBegin, 2644 snapshotTraceBytes); 2645 for (uint32_t i = 0; i < 1; ++i) { 2646 // commandBuffer is already boxed, no need to box again 2647 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2648 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2649 } 2650 } 2651 #endif 2652 #ifdef VK_KHR_get_physical_device_properties2 vkGetPhysicalDeviceFeatures2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,VkPhysicalDeviceFeatures2 * pFeatures)2653 void vkGetPhysicalDeviceFeatures2KHR(const uint8_t* snapshotTraceBegin, 2654 size_t snapshotTraceBytes, android::base::BumpPool* pool, 2655 VkPhysicalDevice physicalDevice, 2656 VkPhysicalDeviceFeatures2* pFeatures) {} vkGetPhysicalDeviceProperties2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,VkPhysicalDeviceProperties2 * pProperties)2657 void vkGetPhysicalDeviceProperties2KHR(const uint8_t* snapshotTraceBegin, 2658 size_t snapshotTraceBytes, android::base::BumpPool* pool, 2659 VkPhysicalDevice physicalDevice, 2660 VkPhysicalDeviceProperties2* pProperties) {} vkGetPhysicalDeviceFormatProperties2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,VkFormat format,VkFormatProperties2 * pFormatProperties)2661 void vkGetPhysicalDeviceFormatProperties2KHR(const uint8_t* snapshotTraceBegin, 2662 size_t snapshotTraceBytes, 2663 android::base::BumpPool* pool, 2664 VkPhysicalDevice physicalDevice, VkFormat format, 2665 VkFormatProperties2* pFormatProperties) {} vkGetPhysicalDeviceImageFormatProperties2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkPhysicalDevice physicalDevice,const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo,VkImageFormatProperties2 * pImageFormatProperties)2666 void vkGetPhysicalDeviceImageFormatProperties2KHR( 2667 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 2668 VkResult input_result, VkPhysicalDevice physicalDevice, 2669 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, 2670 VkImageFormatProperties2* pImageFormatProperties) {} vkGetPhysicalDeviceQueueFamilyProperties2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,uint32_t * pQueueFamilyPropertyCount,VkQueueFamilyProperties2 * pQueueFamilyProperties)2671 void vkGetPhysicalDeviceQueueFamilyProperties2KHR( 2672 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 2673 VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, 2674 VkQueueFamilyProperties2* pQueueFamilyProperties) {} vkGetPhysicalDeviceMemoryProperties2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,VkPhysicalDeviceMemoryProperties2 * pMemoryProperties)2675 void vkGetPhysicalDeviceMemoryProperties2KHR( 2676 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 2677 VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) {} vkGetPhysicalDeviceSparseImageFormatProperties2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo,uint32_t * pPropertyCount,VkSparseImageFormatProperties2 * pProperties)2678 void vkGetPhysicalDeviceSparseImageFormatProperties2KHR( 2679 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 2680 VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, 2681 uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties) {} 2682 #endif 2683 #ifdef VK_KHR_maintenance1 vkTrimCommandPoolKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)2684 void vkTrimCommandPoolKHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2685 android::base::BumpPool* pool, VkDevice device, 2686 VkCommandPool commandPool, VkCommandPoolTrimFlags flags) {} 2687 #endif 2688 #ifdef VK_KHR_external_memory_capabilities vkGetPhysicalDeviceExternalBufferPropertiesKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo,VkExternalBufferProperties * pExternalBufferProperties)2689 void vkGetPhysicalDeviceExternalBufferPropertiesKHR( 2690 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 2691 VkPhysicalDevice physicalDevice, 2692 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, 2693 VkExternalBufferProperties* pExternalBufferProperties) {} 2694 #endif 2695 #ifdef VK_KHR_external_semaphore_capabilities vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo,VkExternalSemaphoreProperties * pExternalSemaphoreProperties)2696 void vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( 2697 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 2698 VkPhysicalDevice physicalDevice, 2699 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, 2700 VkExternalSemaphoreProperties* pExternalSemaphoreProperties) {} 2701 #endif 2702 #ifdef VK_KHR_external_semaphore_fd vkImportSemaphoreFdKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo)2703 void vkImportSemaphoreFdKHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2704 android::base::BumpPool* pool, VkResult input_result, 2705 VkDevice device, 2706 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) {} vkGetSemaphoreFdKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkSemaphoreGetFdInfoKHR * pGetFdInfo,int * pFd)2707 void vkGetSemaphoreFdKHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2708 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 2709 const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd) {} 2710 #endif 2711 #ifdef VK_KHR_descriptor_update_template vkCreateDescriptorUpdateTemplateKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)2712 void vkCreateDescriptorUpdateTemplateKHR( 2713 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 2714 VkResult input_result, VkDevice device, 2715 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, 2716 const VkAllocationCallbacks* pAllocator, 2717 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) { 2718 if (!pDescriptorUpdateTemplate) return; 2719 android::base::AutoLock lock(mLock); 2720 // pDescriptorUpdateTemplate create 2721 mReconstruction.addHandles((const uint64_t*)pDescriptorUpdateTemplate, 1); 2722 mReconstruction.addHandleDependency((const uint64_t*)pDescriptorUpdateTemplate, 1, 2723 (uint64_t)(uintptr_t)device); 2724 auto apiHandle = mReconstruction.createApiInfo(); 2725 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2726 mReconstruction.setApiTrace(apiInfo, OP_vkCreateDescriptorUpdateTemplateKHR, 2727 snapshotTraceBegin, snapshotTraceBytes); 2728 mReconstruction.forEachHandleAddApi((const uint64_t*)pDescriptorUpdateTemplate, 1, 2729 apiHandle, VkReconstruction::CREATED); 2730 mReconstruction.setCreatedHandlesForApi(apiHandle, 2731 (const uint64_t*)pDescriptorUpdateTemplate, 1); 2732 } vkDestroyDescriptorUpdateTemplateKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)2733 void vkDestroyDescriptorUpdateTemplateKHR(const uint8_t* snapshotTraceBegin, 2734 size_t snapshotTraceBytes, 2735 android::base::BumpPool* pool, VkDevice device, 2736 VkDescriptorUpdateTemplate descriptorUpdateTemplate, 2737 const VkAllocationCallbacks* pAllocator) { 2738 android::base::AutoLock lock(mLock); 2739 // descriptorUpdateTemplate destroy 2740 mReconstruction.removeHandles((const uint64_t*)(&descriptorUpdateTemplate), 1, true); 2741 } vkUpdateDescriptorSetWithTemplateKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)2742 void vkUpdateDescriptorSetWithTemplateKHR(const uint8_t* snapshotTraceBegin, 2743 size_t snapshotTraceBytes, 2744 android::base::BumpPool* pool, VkDevice device, 2745 VkDescriptorSet descriptorSet, 2746 VkDescriptorUpdateTemplate descriptorUpdateTemplate, 2747 const void* pData) {} 2748 #endif 2749 #ifdef VK_KHR_create_renderpass2 vkCreateRenderPass2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkRenderPassCreateInfo2 * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)2750 void vkCreateRenderPass2KHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2751 android::base::BumpPool* pool, VkResult input_result, 2752 VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, 2753 const VkAllocationCallbacks* pAllocator, 2754 VkRenderPass* pRenderPass) { 2755 if (!pRenderPass) return; 2756 android::base::AutoLock lock(mLock); 2757 // pRenderPass create 2758 mReconstruction.addHandles((const uint64_t*)pRenderPass, 1); 2759 mReconstruction.addHandleDependency((const uint64_t*)pRenderPass, 1, 2760 (uint64_t)(uintptr_t)device); 2761 auto apiHandle = mReconstruction.createApiInfo(); 2762 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2763 mReconstruction.setApiTrace(apiInfo, OP_vkCreateRenderPass2KHR, snapshotTraceBegin, 2764 snapshotTraceBytes); 2765 mReconstruction.forEachHandleAddApi((const uint64_t*)pRenderPass, 1, apiHandle, 2766 VkReconstruction::CREATED); 2767 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pRenderPass, 1); 2768 } vkCmdBeginRenderPass2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,const VkSubpassBeginInfo * pSubpassBeginInfo)2769 void vkCmdBeginRenderPass2KHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2770 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2771 const VkRenderPassBeginInfo* pRenderPassBegin, 2772 const VkSubpassBeginInfo* pSubpassBeginInfo) { 2773 android::base::AutoLock lock(mLock); 2774 // commandBuffer modify 2775 auto apiHandle = mReconstruction.createApiInfo(); 2776 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2777 mReconstruction.setApiTrace(apiInfo, OP_vkCmdBeginRenderPass2KHR, snapshotTraceBegin, 2778 snapshotTraceBytes); 2779 for (uint32_t i = 0; i < 1; ++i) { 2780 // commandBuffer is already boxed, no need to box again 2781 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2782 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2783 } 2784 } vkCmdNextSubpass2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,const VkSubpassBeginInfo * pSubpassBeginInfo,const VkSubpassEndInfo * pSubpassEndInfo)2785 void vkCmdNextSubpass2KHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2786 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2787 const VkSubpassBeginInfo* pSubpassBeginInfo, 2788 const VkSubpassEndInfo* pSubpassEndInfo) { 2789 android::base::AutoLock lock(mLock); 2790 // commandBuffer modify 2791 auto apiHandle = mReconstruction.createApiInfo(); 2792 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2793 mReconstruction.setApiTrace(apiInfo, OP_vkCmdNextSubpass2KHR, snapshotTraceBegin, 2794 snapshotTraceBytes); 2795 for (uint32_t i = 0; i < 1; ++i) { 2796 // commandBuffer is already boxed, no need to box again 2797 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2798 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2799 } 2800 } vkCmdEndRenderPass2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,const VkSubpassEndInfo * pSubpassEndInfo)2801 void vkCmdEndRenderPass2KHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2802 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2803 const VkSubpassEndInfo* pSubpassEndInfo) { 2804 android::base::AutoLock lock(mLock); 2805 // commandBuffer modify 2806 auto apiHandle = mReconstruction.createApiInfo(); 2807 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2808 mReconstruction.setApiTrace(apiInfo, OP_vkCmdEndRenderPass2KHR, snapshotTraceBegin, 2809 snapshotTraceBytes); 2810 for (uint32_t i = 0; i < 1; ++i) { 2811 // commandBuffer is already boxed, no need to box again 2812 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2813 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2814 } 2815 } 2816 #endif 2817 #ifdef VK_KHR_external_fence_capabilities vkGetPhysicalDeviceExternalFencePropertiesKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkPhysicalDevice physicalDevice,const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo,VkExternalFenceProperties * pExternalFenceProperties)2818 void vkGetPhysicalDeviceExternalFencePropertiesKHR( 2819 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 2820 VkPhysicalDevice physicalDevice, 2821 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, 2822 VkExternalFenceProperties* pExternalFenceProperties) {} 2823 #endif 2824 #ifdef VK_KHR_external_fence_fd vkImportFenceFdKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkImportFenceFdInfoKHR * pImportFenceFdInfo)2825 void vkImportFenceFdKHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2826 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 2827 const VkImportFenceFdInfoKHR* pImportFenceFdInfo) {} vkGetFenceFdKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkFenceGetFdInfoKHR * pGetFdInfo,int * pFd)2828 void vkGetFenceFdKHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2829 android::base::BumpPool* pool, VkResult input_result, VkDevice device, 2830 const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd) {} 2831 #endif 2832 #ifdef VK_KHR_get_memory_requirements2 vkGetImageMemoryRequirements2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)2833 void vkGetImageMemoryRequirements2KHR(const uint8_t* snapshotTraceBegin, 2834 size_t snapshotTraceBytes, android::base::BumpPool* pool, 2835 VkDevice device, 2836 const VkImageMemoryRequirementsInfo2* pInfo, 2837 VkMemoryRequirements2* pMemoryRequirements) {} vkGetBufferMemoryRequirements2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)2838 void vkGetBufferMemoryRequirements2KHR(const uint8_t* snapshotTraceBegin, 2839 size_t snapshotTraceBytes, android::base::BumpPool* pool, 2840 VkDevice device, 2841 const VkBufferMemoryRequirementsInfo2* pInfo, 2842 VkMemoryRequirements2* pMemoryRequirements) {} vkGetImageSparseMemoryRequirements2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)2843 void vkGetImageSparseMemoryRequirements2KHR( 2844 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 2845 VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, 2846 uint32_t* pSparseMemoryRequirementCount, 2847 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {} 2848 #endif 2849 #ifdef VK_KHR_sampler_ycbcr_conversion vkCreateSamplerYcbcrConversionKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)2850 void vkCreateSamplerYcbcrConversionKHR(const uint8_t* snapshotTraceBegin, 2851 size_t snapshotTraceBytes, android::base::BumpPool* pool, 2852 VkResult input_result, VkDevice device, 2853 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, 2854 const VkAllocationCallbacks* pAllocator, 2855 VkSamplerYcbcrConversion* pYcbcrConversion) { 2856 if (!pYcbcrConversion) return; 2857 android::base::AutoLock lock(mLock); 2858 // pYcbcrConversion create 2859 mReconstruction.addHandles((const uint64_t*)pYcbcrConversion, 1); 2860 mReconstruction.addHandleDependency((const uint64_t*)pYcbcrConversion, 1, 2861 (uint64_t)(uintptr_t)device); 2862 auto apiHandle = mReconstruction.createApiInfo(); 2863 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2864 mReconstruction.setApiTrace(apiInfo, OP_vkCreateSamplerYcbcrConversionKHR, 2865 snapshotTraceBegin, snapshotTraceBytes); 2866 mReconstruction.forEachHandleAddApi((const uint64_t*)pYcbcrConversion, 1, apiHandle, 2867 VkReconstruction::CREATED); 2868 mReconstruction.setCreatedHandlesForApi(apiHandle, (const uint64_t*)pYcbcrConversion, 1); 2869 } vkDestroySamplerYcbcrConversionKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)2870 void vkDestroySamplerYcbcrConversionKHR(const uint8_t* snapshotTraceBegin, 2871 size_t snapshotTraceBytes, 2872 android::base::BumpPool* pool, VkDevice device, 2873 VkSamplerYcbcrConversion ycbcrConversion, 2874 const VkAllocationCallbacks* pAllocator) { 2875 android::base::AutoLock lock(mLock); 2876 // ycbcrConversion destroy 2877 mReconstruction.removeHandles((const uint64_t*)(&ycbcrConversion), 1, true); 2878 } 2879 #endif 2880 #ifdef VK_KHR_bind_memory2 vkBindBufferMemory2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)2881 void vkBindBufferMemory2KHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2882 android::base::BumpPool* pool, VkResult input_result, 2883 VkDevice device, uint32_t bindInfoCount, 2884 const VkBindBufferMemoryInfo* pBindInfos) {} vkBindImageMemory2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)2885 void vkBindImageMemory2KHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2886 android::base::BumpPool* pool, VkResult input_result, 2887 VkDevice device, uint32_t bindInfoCount, 2888 const VkBindImageMemoryInfo* pBindInfos) { 2889 android::base::AutoLock lock(mLock); 2890 for (uint32_t i = 0; i < bindInfoCount; ++i) { 2891 VkImage boxed_VkImage = unboxed_to_boxed_non_dispatchable_VkImage(pBindInfos[i].image); 2892 VkDeviceMemory boxed_VkDeviceMemory = 2893 unboxed_to_boxed_non_dispatchable_VkDeviceMemory(pBindInfos[i].memory); 2894 mReconstruction.addHandleDependency((const uint64_t*)&boxed_VkImage, 1, 2895 (uint64_t)(uintptr_t)boxed_VkDeviceMemory, 2896 VkReconstruction::BOUND_MEMORY); 2897 mReconstruction.addHandleDependency((const uint64_t*)&boxed_VkImage, 1, 2898 (uint64_t)(uintptr_t)boxed_VkImage, 2899 VkReconstruction::BOUND_MEMORY); 2900 } 2901 auto apiHandle = mReconstruction.createApiInfo(); 2902 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2903 mReconstruction.setApiTrace(apiInfo, OP_vkBindImageMemory2KHR, snapshotTraceBegin, 2904 snapshotTraceBytes); 2905 // Note: the implementation does not work with bindInfoCount > 1 2906 for (uint32_t i = 0; i < bindInfoCount; ++i) { 2907 VkImage boxed_VkImage = unboxed_to_boxed_non_dispatchable_VkImage(pBindInfos[i].image); 2908 mReconstruction.forEachHandleAddApi((const uint64_t*)&boxed_VkImage, 1, apiHandle, 2909 VkReconstruction::BOUND_MEMORY); 2910 } 2911 } 2912 #endif 2913 #ifdef VK_KHR_maintenance3 vkGetDescriptorSetLayoutSupportKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)2914 void vkGetDescriptorSetLayoutSupportKHR(const uint8_t* snapshotTraceBegin, 2915 size_t snapshotTraceBytes, 2916 android::base::BumpPool* pool, VkDevice device, 2917 const VkDescriptorSetLayoutCreateInfo* pCreateInfo, 2918 VkDescriptorSetLayoutSupport* pSupport) {} 2919 #endif 2920 #ifdef VK_KHR_buffer_device_address vkGetBufferDeviceAddressKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkDeviceAddress input_result,VkDevice device,const VkBufferDeviceAddressInfo * pInfo)2921 void vkGetBufferDeviceAddressKHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2922 android::base::BumpPool* pool, VkDeviceAddress input_result, 2923 VkDevice device, const VkBufferDeviceAddressInfo* pInfo) {} vkGetBufferOpaqueCaptureAddressKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,uint64_t input_result,VkDevice device,const VkBufferDeviceAddressInfo * pInfo)2924 void vkGetBufferOpaqueCaptureAddressKHR(const uint8_t* snapshotTraceBegin, 2925 size_t snapshotTraceBytes, 2926 android::base::BumpPool* pool, uint64_t input_result, 2927 VkDevice device, 2928 const VkBufferDeviceAddressInfo* pInfo) {} vkGetDeviceMemoryOpaqueCaptureAddressKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,uint64_t input_result,VkDevice device,const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo)2929 void vkGetDeviceMemoryOpaqueCaptureAddressKHR( 2930 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 2931 uint64_t input_result, VkDevice device, 2932 const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) {} 2933 #endif 2934 #ifdef VK_KHR_pipeline_executable_properties vkGetPipelineExecutablePropertiesKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkPipelineInfoKHR * pPipelineInfo,uint32_t * pExecutableCount,VkPipelineExecutablePropertiesKHR * pProperties)2935 void vkGetPipelineExecutablePropertiesKHR( 2936 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 2937 VkResult input_result, VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, 2938 uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties) {} vkGetPipelineExecutableStatisticsKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pStatisticCount,VkPipelineExecutableStatisticKHR * pStatistics)2939 void vkGetPipelineExecutableStatisticsKHR( 2940 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 2941 VkResult input_result, VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, 2942 uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics) {} vkGetPipelineExecutableInternalRepresentationsKHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pInternalRepresentationCount,VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations)2943 void vkGetPipelineExecutableInternalRepresentationsKHR( 2944 const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, android::base::BumpPool* pool, 2945 VkResult input_result, VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, 2946 uint32_t* pInternalRepresentationCount, 2947 VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) {} 2948 #endif 2949 #ifdef VK_KHR_synchronization2 vkCmdSetEvent2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkEvent event,const VkDependencyInfo * pDependencyInfo)2950 void vkCmdSetEvent2KHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2951 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2952 VkEvent event, const VkDependencyInfo* pDependencyInfo) { 2953 android::base::AutoLock lock(mLock); 2954 // commandBuffer modify 2955 auto apiHandle = mReconstruction.createApiInfo(); 2956 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2957 mReconstruction.setApiTrace(apiInfo, OP_vkCmdSetEvent2KHR, snapshotTraceBegin, 2958 snapshotTraceBytes); 2959 for (uint32_t i = 0; i < 1; ++i) { 2960 // commandBuffer is already boxed, no need to box again 2961 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2962 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2963 } 2964 } vkCmdResetEvent2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags2 stageMask)2965 void vkCmdResetEvent2KHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2966 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2967 VkEvent event, VkPipelineStageFlags2 stageMask) { 2968 android::base::AutoLock lock(mLock); 2969 // commandBuffer modify 2970 auto apiHandle = mReconstruction.createApiInfo(); 2971 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2972 mReconstruction.setApiTrace(apiInfo, OP_vkCmdResetEvent2KHR, snapshotTraceBegin, 2973 snapshotTraceBytes); 2974 for (uint32_t i = 0; i < 1; ++i) { 2975 // commandBuffer is already boxed, no need to box again 2976 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2977 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2978 } 2979 } vkCmdWaitEvents2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,uint32_t eventCount,const VkEvent * pEvents,const VkDependencyInfo * pDependencyInfos)2980 void vkCmdWaitEvents2KHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2981 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2982 uint32_t eventCount, const VkEvent* pEvents, 2983 const VkDependencyInfo* pDependencyInfos) { 2984 android::base::AutoLock lock(mLock); 2985 // commandBuffer modify 2986 auto apiHandle = mReconstruction.createApiInfo(); 2987 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 2988 mReconstruction.setApiTrace(apiInfo, OP_vkCmdWaitEvents2KHR, snapshotTraceBegin, 2989 snapshotTraceBytes); 2990 for (uint32_t i = 0; i < 1; ++i) { 2991 // commandBuffer is already boxed, no need to box again 2992 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 2993 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 2994 } 2995 } vkCmdPipelineBarrier2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,const VkDependencyInfo * pDependencyInfo)2996 void vkCmdPipelineBarrier2KHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 2997 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 2998 const VkDependencyInfo* pDependencyInfo) { 2999 android::base::AutoLock lock(mLock); 3000 // commandBuffer modify 3001 auto apiHandle = mReconstruction.createApiInfo(); 3002 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 3003 mReconstruction.setApiTrace(apiInfo, OP_vkCmdPipelineBarrier2KHR, snapshotTraceBegin, 3004 snapshotTraceBytes); 3005 for (uint32_t i = 0; i < 1; ++i) { 3006 // commandBuffer is already boxed, no need to box again 3007 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 3008 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 3009 } 3010 } vkCmdWriteTimestamp2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkPipelineStageFlags2 stage,VkQueryPool queryPool,uint32_t query)3011 void vkCmdWriteTimestamp2KHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 3012 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 3013 VkPipelineStageFlags2 stage, VkQueryPool queryPool, 3014 uint32_t query) { 3015 android::base::AutoLock lock(mLock); 3016 // commandBuffer modify 3017 auto apiHandle = mReconstruction.createApiInfo(); 3018 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 3019 mReconstruction.setApiTrace(apiInfo, OP_vkCmdWriteTimestamp2KHR, snapshotTraceBegin, 3020 snapshotTraceBytes); 3021 for (uint32_t i = 0; i < 1; ++i) { 3022 // commandBuffer is already boxed, no need to box again 3023 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 3024 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 3025 } 3026 } vkQueueSubmit2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkResult input_result,VkQueue queue,uint32_t submitCount,const VkSubmitInfo2 * pSubmits,VkFence fence)3027 void vkQueueSubmit2KHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 3028 android::base::BumpPool* pool, VkResult input_result, VkQueue queue, 3029 uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence) {} vkCmdWriteBufferMarker2AMD(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,VkPipelineStageFlags2 stage,VkBuffer dstBuffer,VkDeviceSize dstOffset,uint32_t marker)3030 void vkCmdWriteBufferMarker2AMD(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 3031 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 3032 VkPipelineStageFlags2 stage, VkBuffer dstBuffer, 3033 VkDeviceSize dstOffset, uint32_t marker) { 3034 android::base::AutoLock lock(mLock); 3035 // commandBuffer modify 3036 auto apiHandle = mReconstruction.createApiInfo(); 3037 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 3038 mReconstruction.setApiTrace(apiInfo, OP_vkCmdWriteBufferMarker2AMD, snapshotTraceBegin, 3039 snapshotTraceBytes); 3040 for (uint32_t i = 0; i < 1; ++i) { 3041 // commandBuffer is already boxed, no need to box again 3042 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 3043 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 3044 } 3045 } vkGetQueueCheckpointData2NV(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkQueue queue,uint32_t * pCheckpointDataCount,VkCheckpointData2NV * pCheckpointData)3046 void vkGetQueueCheckpointData2NV(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 3047 android::base::BumpPool* pool, VkQueue queue, 3048 uint32_t* pCheckpointDataCount, 3049 VkCheckpointData2NV* pCheckpointData) {} 3050 #endif 3051 #ifdef VK_KHR_copy_commands2 vkCmdCopyBuffer2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,const VkCopyBufferInfo2 * pCopyBufferInfo)3052 void vkCmdCopyBuffer2KHR(const uint8_t* snapshotTraceBegin, size_t snapshotTraceBytes, 3053 android::base::BumpPool* pool, VkCommandBuffer commandBuffer, 3054 const VkCopyBufferInfo2* pCopyBufferInfo) { 3055 android::base::AutoLock lock(mLock); 3056 // commandBuffer modify 3057 auto apiHandle = mReconstruction.createApiInfo(); 3058 auto apiInfo = mReconstruction.getApiInfo(apiHandle); 3059 mReconstruction.setApiTrace(apiInfo, OP_vkCmdCopyBuffer2KHR, snapshotTraceBegin, 3060 snapshotTraceBytes); 3061 for (uint32_t i = 0; i < 1; ++i) { 3062 // commandBuffer is already boxed, no need to box again 3063 VkCommandBuffer boxed = VkCommandBuffer((&commandBuffer)[i]); 3064 mReconstruction.forEachHandleAddModifyApi((const uint64_t*)(&boxed), 1, apiHandle); 3065 } 3066 } vkCmdCopyImage2KHR(const uint8_t * snapshotTraceBegin,size_t snapshotTraceBytes,android::base::BumpPool * pool,VkCommandBuffer commandBuffer,const VkCopyImageInfo2 * pCopyImageInfo)3067