1# Copyright (c) 2021 The Android Open Source Project 2# Copyright (c) 2021 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 16KNOWN_FUNCTION_OPCODES = { 17 "vkCreateInstance": 20000, 18 "vkDestroyInstance": 20001, 19 "vkEnumeratePhysicalDevices": 20002, 20 "vkGetPhysicalDeviceFeatures": 20003, 21 "vkGetPhysicalDeviceFormatProperties": 20004, 22 "vkGetPhysicalDeviceImageFormatProperties": 20005, 23 "vkGetPhysicalDeviceProperties": 20006, 24 "vkGetPhysicalDeviceQueueFamilyProperties": 20007, 25 "vkGetPhysicalDeviceMemoryProperties": 20008, 26 "vkGetInstanceProcAddr": 20009, 27 "vkGetDeviceProcAddr": 20010, 28 "vkCreateDevice": 20011, 29 "vkDestroyDevice": 20012, 30 "vkEnumerateInstanceExtensionProperties": 20013, 31 "vkEnumerateDeviceExtensionProperties": 20014, 32 "vkEnumerateInstanceLayerProperties": 20015, 33 "vkEnumerateDeviceLayerProperties": 20016, 34 "vkGetDeviceQueue": 20017, 35 "vkQueueSubmit": 20018, 36 "vkQueueWaitIdle": 20019, 37 "vkDeviceWaitIdle": 20020, 38 "vkAllocateMemory": 20021, 39 "vkFreeMemory": 20022, 40 "vkMapMemory": 20023, 41 "vkUnmapMemory": 20024, 42 "vkFlushMappedMemoryRanges": 20025, 43 "vkInvalidateMappedMemoryRanges": 20026, 44 "vkGetDeviceMemoryCommitment": 20027, 45 "vkBindBufferMemory": 20028, 46 "vkBindImageMemory": 20029, 47 "vkGetBufferMemoryRequirements": 20030, 48 "vkGetImageMemoryRequirements": 20031, 49 "vkGetImageSparseMemoryRequirements": 20032, 50 "vkGetPhysicalDeviceSparseImageFormatProperties": 20033, 51 "vkQueueBindSparse": 20034, 52 "vkCreateFence": 20035, 53 "vkDestroyFence": 20036, 54 "vkResetFences": 20037, 55 "vkGetFenceStatus": 20038, 56 "vkWaitForFences": 20039, 57 "vkCreateSemaphore": 20040, 58 "vkDestroySemaphore": 20041, 59 "vkCreateEvent": 20042, 60 "vkDestroyEvent": 20043, 61 "vkGetEventStatus": 20044, 62 "vkSetEvent": 20045, 63 "vkResetEvent": 20046, 64 "vkCreateQueryPool": 20047, 65 "vkDestroyQueryPool": 20048, 66 "vkGetQueryPoolResults": 20049, 67 "vkCreateBuffer": 20050, 68 "vkDestroyBuffer": 20051, 69 "vkCreateBufferView": 20052, 70 "vkDestroyBufferView": 20053, 71 "vkCreateImage": 20054, 72 "vkDestroyImage": 20055, 73 "vkGetImageSubresourceLayout": 20056, 74 "vkCreateImageView": 20057, 75 "vkDestroyImageView": 20058, 76 "vkCreateShaderModule": 20059, 77 "vkDestroyShaderModule": 20060, 78 "vkCreatePipelineCache": 20061, 79 "vkDestroyPipelineCache": 20062, 80 "vkGetPipelineCacheData": 20063, 81 "vkMergePipelineCaches": 20064, 82 "vkCreateGraphicsPipelines": 20065, 83 "vkCreateComputePipelines": 20066, 84 "vkDestroyPipeline": 20067, 85 "vkCreatePipelineLayout": 20068, 86 "vkDestroyPipelineLayout": 20069, 87 "vkCreateSampler": 20070, 88 "vkDestroySampler": 20071, 89 "vkCreateDescriptorSetLayout": 20072, 90 "vkDestroyDescriptorSetLayout": 20073, 91 "vkCreateDescriptorPool": 20074, 92 "vkDestroyDescriptorPool": 20075, 93 "vkResetDescriptorPool": 20076, 94 "vkAllocateDescriptorSets": 20077, 95 "vkFreeDescriptorSets": 20078, 96 "vkUpdateDescriptorSets": 20079, 97 "vkCreateFramebuffer": 20080, 98 "vkDestroyFramebuffer": 20081, 99 "vkCreateRenderPass": 20082, 100 "vkDestroyRenderPass": 20083, 101 "vkGetRenderAreaGranularity": 20084, 102 "vkCreateCommandPool": 20085, 103 "vkDestroyCommandPool": 20086, 104 "vkResetCommandPool": 20087, 105 "vkAllocateCommandBuffers": 20088, 106 "vkFreeCommandBuffers": 20089, 107 "vkBeginCommandBuffer": 20090, 108 "vkEndCommandBuffer": 20091, 109 "vkResetCommandBuffer": 20092, 110 "vkCmdBindPipeline": 20093, 111 "vkCmdSetViewport": 20094, 112 "vkCmdSetScissor": 20095, 113 "vkCmdSetLineWidth": 20096, 114 "vkCmdSetDepthBias": 20097, 115 "vkCmdSetBlendConstants": 20098, 116 "vkCmdSetDepthBounds": 20099, 117 "vkCmdSetStencilCompareMask": 20100, 118 "vkCmdSetStencilWriteMask": 20101, 119 "vkCmdSetStencilReference": 20102, 120 "vkCmdBindDescriptorSets": 20103, 121 "vkCmdBindIndexBuffer": 20104, 122 "vkCmdBindVertexBuffers": 20105, 123 "vkCmdDraw": 20106, 124 "vkCmdDrawIndexed": 20107, 125 "vkCmdDrawIndirect": 20108, 126 "vkCmdDrawIndexedIndirect": 20109, 127 "vkCmdDispatch": 20110, 128 "vkCmdDispatchIndirect": 20111, 129 "vkCmdCopyBuffer": 20112, 130 "vkCmdCopyImage": 20113, 131 "vkCmdBlitImage": 20114, 132 "vkCmdCopyBufferToImage": 20115, 133 "vkCmdCopyImageToBuffer": 20116, 134 "vkCmdUpdateBuffer": 20117, 135 "vkCmdFillBuffer": 20118, 136 "vkCmdClearColorImage": 20119, 137 "vkCmdClearDepthStencilImage": 20120, 138 "vkCmdClearAttachments": 20121, 139 "vkCmdResolveImage": 20122, 140 "vkCmdSetEvent": 20123, 141 "vkCmdResetEvent": 20124, 142 "vkCmdWaitEvents": 20125, 143 "vkCmdPipelineBarrier": 20126, 144 "vkCmdBeginQuery": 20127, 145 "vkCmdEndQuery": 20128, 146 "vkCmdResetQueryPool": 20129, 147 "vkCmdWriteTimestamp": 20130, 148 "vkCmdCopyQueryPoolResults": 20131, 149 "vkCmdPushConstants": 20132, 150 "vkCmdBeginRenderPass": 20133, 151 "vkCmdNextSubpass": 20134, 152 "vkCmdEndRenderPass": 20135, 153 "vkCmdExecuteCommands": 20136, 154 "vkEnumerateInstanceVersion": 20137, 155 "vkBindBufferMemory2": 20138, 156 "vkBindImageMemory2": 20139, 157 "vkGetDeviceGroupPeerMemoryFeatures": 20140, 158 "vkCmdSetDeviceMask": 20141, 159 "vkCmdDispatchBase": 20142, 160 "vkEnumeratePhysicalDeviceGroups": 20143, 161 "vkGetImageMemoryRequirements2": 20144, 162 "vkGetBufferMemoryRequirements2": 20145, 163 "vkGetImageSparseMemoryRequirements2": 20146, 164 "vkGetPhysicalDeviceFeatures2": 20147, 165 "vkGetPhysicalDeviceProperties2": 20148, 166 "vkGetPhysicalDeviceFormatProperties2": 20149, 167 "vkGetPhysicalDeviceImageFormatProperties2": 20150, 168 "vkGetPhysicalDeviceQueueFamilyProperties2": 20151, 169 "vkGetPhysicalDeviceMemoryProperties2": 20152, 170 "vkGetPhysicalDeviceSparseImageFormatProperties2": 20153, 171 "vkTrimCommandPool": 20154, 172 "vkGetDeviceQueue2": 20155, 173 "vkCreateSamplerYcbcrConversion": 20156, 174 "vkDestroySamplerYcbcrConversion": 20157, 175 "vkCreateDescriptorUpdateTemplate": 20158, 176 "vkDestroyDescriptorUpdateTemplate": 20159, 177 "vkUpdateDescriptorSetWithTemplate": 20160, 178 "vkGetPhysicalDeviceExternalBufferProperties": 20161, 179 "vkGetPhysicalDeviceExternalFenceProperties": 20162, 180 "vkGetPhysicalDeviceExternalSemaphoreProperties": 20163, 181 "vkGetDescriptorSetLayoutSupport": 20164, 182 "vkDestroySurfaceKHR": 20165, 183 "vkGetPhysicalDeviceSurfaceSupportKHR": 20166, 184 "vkGetPhysicalDeviceSurfaceCapabilitiesKHR": 20167, 185 "vkGetPhysicalDeviceSurfaceFormatsKHR": 20168, 186 "vkGetPhysicalDeviceSurfacePresentModesKHR": 20169, 187 "vkCreateSwapchainKHR": 20170, 188 "vkDestroySwapchainKHR": 20171, 189 "vkGetSwapchainImagesKHR": 20172, 190 "vkAcquireNextImageKHR": 20173, 191 "vkQueuePresentKHR": 20174, 192 "vkGetDeviceGroupPresentCapabilitiesKHR": 20175, 193 "vkGetDeviceGroupSurfacePresentModesKHR": 20176, 194 "vkGetPhysicalDevicePresentRectanglesKHR": 20177, 195 "vkAcquireNextImage2KHR": 20178, 196 "vkGetPhysicalDeviceDisplayPropertiesKHR": 20179, 197 "vkGetPhysicalDeviceDisplayPlanePropertiesKHR": 20180, 198 "vkGetDisplayPlaneSupportedDisplaysKHR": 20181, 199 "vkGetDisplayModePropertiesKHR": 20182, 200 "vkCreateDisplayModeKHR": 20183, 201 "vkGetDisplayPlaneCapabilitiesKHR": 20184, 202 "vkCreateDisplayPlaneSurfaceKHR": 20185, 203 "vkCreateSharedSwapchainsKHR": 20186, 204 "vkCreateXlibSurfaceKHR": 20187, 205 "vkGetPhysicalDeviceXlibPresentationSupportKHR": 20188, 206 "vkCreateXcbSurfaceKHR": 20189, 207 "vkGetPhysicalDeviceXcbPresentationSupportKHR": 20190, 208 "vkCreateWaylandSurfaceKHR": 20191, 209 "vkGetPhysicalDeviceWaylandPresentationSupportKHR": 20192, 210 "vkCreateMirSurfaceKHR": 20193, 211 "vkGetPhysicalDeviceMirPresentationSupportKHR": 20194, 212 "vkCreateAndroidSurfaceKHR": 20195, 213 "vkCreateWin32SurfaceKHR": 20196, 214 "vkGetPhysicalDeviceWin32PresentationSupportKHR": 20197, 215 "vkGetPhysicalDeviceFeatures2KHR": 20198, 216 "vkGetPhysicalDeviceProperties2KHR": 20199, 217 "vkGetPhysicalDeviceFormatProperties2KHR": 20200, 218 "vkGetPhysicalDeviceImageFormatProperties2KHR": 20201, 219 "vkGetPhysicalDeviceQueueFamilyProperties2KHR": 20202, 220 "vkGetPhysicalDeviceMemoryProperties2KHR": 20203, 221 "vkGetPhysicalDeviceSparseImageFormatProperties2KHR": 20204, 222 "vkGetDeviceGroupPeerMemoryFeaturesKHR": 20205, 223 "vkCmdSetDeviceMaskKHR": 20206, 224 "vkCmdDispatchBaseKHR": 20207, 225 "vkTrimCommandPoolKHR": 20208, 226 "vkEnumeratePhysicalDeviceGroupsKHR": 20209, 227 "vkGetPhysicalDeviceExternalBufferPropertiesKHR": 20210, 228 "vkGetMemoryWin32HandleKHR": 20211, 229 "vkGetMemoryWin32HandlePropertiesKHR": 20212, 230 "vkGetMemoryFdKHR": 20213, 231 "vkGetMemoryFdPropertiesKHR": 20214, 232 "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR": 20215, 233 "vkImportSemaphoreWin32HandleKHR": 20216, 234 "vkGetSemaphoreWin32HandleKHR": 20217, 235 "vkImportSemaphoreFdKHR": 20218, 236 "vkGetSemaphoreFdKHR": 20219, 237 "vkCmdPushDescriptorSetKHR": 20220, 238 "vkCmdPushDescriptorSetWithTemplateKHR": 20221, 239 "vkCreateDescriptorUpdateTemplateKHR": 20222, 240 "vkDestroyDescriptorUpdateTemplateKHR": 20223, 241 "vkUpdateDescriptorSetWithTemplateKHR": 20224, 242 "vkCreateRenderPass2KHR": 20225, 243 "vkCmdBeginRenderPass2KHR": 20226, 244 "vkCmdNextSubpass2KHR": 20227, 245 "vkCmdEndRenderPass2KHR": 20228, 246 "vkGetSwapchainStatusKHR": 20229, 247 "vkGetPhysicalDeviceExternalFencePropertiesKHR": 20230, 248 "vkImportFenceWin32HandleKHR": 20231, 249 "vkGetFenceWin32HandleKHR": 20232, 250 "vkImportFenceFdKHR": 20233, 251 "vkGetFenceFdKHR": 20234, 252 "vkGetPhysicalDeviceSurfaceCapabilities2KHR": 20235, 253 "vkGetPhysicalDeviceSurfaceFormats2KHR": 20236, 254 "vkGetPhysicalDeviceDisplayProperties2KHR": 20237, 255 "vkGetPhysicalDeviceDisplayPlaneProperties2KHR": 20238, 256 "vkGetDisplayModeProperties2KHR": 20239, 257 "vkGetDisplayPlaneCapabilities2KHR": 20240, 258 "vkGetImageMemoryRequirements2KHR": 20241, 259 "vkGetBufferMemoryRequirements2KHR": 20242, 260 "vkGetImageSparseMemoryRequirements2KHR": 20243, 261 "vkCreateSamplerYcbcrConversionKHR": 20244, 262 "vkDestroySamplerYcbcrConversionKHR": 20245, 263 "vkBindBufferMemory2KHR": 20246, 264 "vkBindImageMemory2KHR": 20247, 265 "vkGetDescriptorSetLayoutSupportKHR": 20248, 266 "vkCmdDrawIndirectCountKHR": 20249, 267 "vkCmdDrawIndexedIndirectCountKHR": 20250, 268 "vkGetSwapchainGrallocUsageANDROID": 20251, 269 "vkAcquireImageANDROID": 20252, 270 "vkQueueSignalReleaseImageANDROID": 20253, 271 "vkCreateDebugReportCallbackEXT": 20254, 272 "vkDestroyDebugReportCallbackEXT": 20255, 273 "vkDebugReportMessageEXT": 20256, 274 "vkDebugMarkerSetObjectTagEXT": 20257, 275 "vkDebugMarkerSetObjectNameEXT": 20258, 276 "vkCmdDebugMarkerBeginEXT": 20259, 277 "vkCmdDebugMarkerEndEXT": 20260, 278 "vkCmdDebugMarkerInsertEXT": 20261, 279 "vkCmdDrawIndirectCountAMD": 20262, 280 "vkCmdDrawIndexedIndirectCountAMD": 20263, 281 "vkGetShaderInfoAMD": 20264, 282 "vkGetPhysicalDeviceExternalImageFormatPropertiesNV": 20265, 283 "vkGetMemoryWin32HandleNV": 20266, 284 "vkCreateViSurfaceNN": 20267, 285 "vkCmdBeginConditionalRenderingEXT": 20268, 286 "vkCmdEndConditionalRenderingEXT": 20269, 287 "vkCmdProcessCommandsNVX": 20270, 288 "vkCmdReserveSpaceForCommandsNVX": 20271, 289 "vkCreateIndirectCommandsLayoutNVX": 20272, 290 "vkDestroyIndirectCommandsLayoutNVX": 20273, 291 "vkCreateObjectTableNVX": 20274, 292 "vkDestroyObjectTableNVX": 20275, 293 "vkRegisterObjectsNVX": 20276, 294 "vkUnregisterObjectsNVX": 20277, 295 "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX": 20278, 296 "vkCmdSetViewportWScalingNV": 20279, 297 "vkReleaseDisplayEXT": 20280, 298 "vkAcquireXlibDisplayEXT": 20281, 299 "vkGetRandROutputDisplayEXT": 20282, 300 "vkGetPhysicalDeviceSurfaceCapabilities2EXT": 20283, 301 "vkDisplayPowerControlEXT": 20284, 302 "vkRegisterDeviceEventEXT": 20285, 303 "vkRegisterDisplayEventEXT": 20286, 304 "vkGetSwapchainCounterEXT": 20287, 305 "vkGetRefreshCycleDurationGOOGLE": 20288, 306 "vkGetPastPresentationTimingGOOGLE": 20289, 307 "vkCmdSetDiscardRectangleEXT": 20290, 308 "vkSetHdrMetadataEXT": 20291, 309 "vkCreateIOSSurfaceMVK": 20292, 310 "vkCreateMacOSSurfaceMVK": 20293, 311 "vkSetDebugUtilsObjectNameEXT": 20294, 312 "vkSetDebugUtilsObjectTagEXT": 20295, 313 "vkQueueBeginDebugUtilsLabelEXT": 20296, 314 "vkQueueEndDebugUtilsLabelEXT": 20297, 315 "vkQueueInsertDebugUtilsLabelEXT": 20298, 316 "vkCmdBeginDebugUtilsLabelEXT": 20299, 317 "vkCmdEndDebugUtilsLabelEXT": 20300, 318 "vkCmdInsertDebugUtilsLabelEXT": 20301, 319 "vkCreateDebugUtilsMessengerEXT": 20302, 320 "vkDestroyDebugUtilsMessengerEXT": 20303, 321 "vkSubmitDebugUtilsMessageEXT": 20304, 322 "vkGetAndroidHardwareBufferPropertiesANDROID": 20305, 323 "vkGetMemoryAndroidHardwareBufferANDROID": 20306, 324 "vkCmdSetSampleLocationsEXT": 20307, 325 "vkGetPhysicalDeviceMultisamplePropertiesEXT": 20308, 326 "vkCreateValidationCacheEXT": 20309, 327 "vkDestroyValidationCacheEXT": 20310, 328 "vkMergeValidationCachesEXT": 20311, 329 "vkGetValidationCacheDataEXT": 20312, 330 "vkGetMemoryHostPointerPropertiesEXT": 20313, 331 "vkCmdWriteBufferMarkerAMD": 20314, 332 "vkCmdSetCheckpointNV": 20315, 333 "vkGetQueueCheckpointDataNV": 20316, 334 "vkMapMemoryIntoAddressSpaceGOOGLE": 20317, 335 "vkRegisterImageColorBufferGOOGLE": 20318, 336 "vkRegisterBufferColorBufferGOOGLE": 20319, 337 "vkUpdateDescriptorSetWithTemplateSizedGOOGLE": 20320, 338 "vkBeginCommandBufferAsyncGOOGLE": 20321, 339 "vkEndCommandBufferAsyncGOOGLE": 20322, 340 "vkResetCommandBufferAsyncGOOGLE": 20323, 341 "vkCommandBufferHostSyncGOOGLE": 20324, 342 "vkCreateImageWithRequirementsGOOGLE": 20325, 343 "vkCreateBufferWithRequirementsGOOGLE": 20326, 344 "vkGetMemoryHostAddressInfoGOOGLE": 20327, 345 "vkFreeMemorySyncGOOGLE": 20328, 346 "vkQueueHostSyncGOOGLE": 20329, 347 "vkQueueSubmitAsyncGOOGLE": 20330, 348 "vkQueueWaitIdleAsyncGOOGLE": 20331, 349 "vkQueueBindSparseAsyncGOOGLE": 20332, 350 "vkGetLinearImageLayoutGOOGLE": 20333, 351 "vkGetMTLDeviceMVK": 20334, 352 "vkSetMTLTextureMVK": 20335, 353 "vkGetMTLTextureMVK": 20336, 354 "vkGetMTLBufferMVK": 20337, 355 "vkUseIOSurfaceMVK": 20338, 356 "vkGetIOSurfaceMVK": 20339, 357 "vkQueueFlushCommandsGOOGLE": 20340, 358} 359 360CUSTOM_MARSHAL_TYPES = { 361 "VkAccelerationStructureInstanceKHR": { 362 "common": """ 363typedef struct VkAccelerationStructureInstanceKHRWithoutBitFields { 364 VkTransformMatrixKHR transform; 365 uint32_t dwords[2]; 366 uint64_t accelerationStructureReference; 367} VkAccelerationStructureInstanceKHRWithoutBitFields; 368""", 369 "marshaling": """ 370const VkAccelerationStructureInstanceKHRWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureInstanceKHRWithoutBitFields*)({inputVarName}); 371marshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transform)); 372for (uint32_t i = 0; i < 2; i++) {{ 373 {streamVarName}->write((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t)); 374}} 375{streamVarName}->write((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t)); 376""", 377 "unmarshaling": """ 378VkAccelerationStructureInstanceKHRWithoutBitFields* {newInputVarName} = (VkAccelerationStructureInstanceKHRWithoutBitFields*)({inputVarName}); 379unmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transform)); 380for (uint32_t i = 0; i < 2; i++) {{ 381 {streamVarName}->read((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t)); 382}} 383{streamVarName}->read((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t)); 384""", 385 "reservedmarshaling": """ 386(void)vkStream; 387const VkAccelerationStructureInstanceKHRWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureInstanceKHRWithoutBitFields*)({inputVarName}); 388reservedmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transform), ptr); 389for (uint32_t i = 0; i < 2; i++) {{ 390 memcpy(*ptr, (uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t)); 391 *ptr += sizeof(uint32_t); 392}} 393memcpy(*ptr, (uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t)); 394*ptr += sizeof(uint64_t); 395""", 396 "reservedunmarshaling": """ 397VkAccelerationStructureInstanceKHRWithoutBitFields* {newInputVarName} = (VkAccelerationStructureInstanceKHRWithoutBitFields*)({inputVarName}); 398reservedunmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transform), ptr); 399for (uint32_t i = 0; i < 2; i++) {{ 400 memcpy((uint32_t*)&({newInputVarName}->dwords[i]), *ptr, sizeof(uint32_t)); 401 *ptr += sizeof(uint32_t); 402}} 403memcpy((uint64_t*)&{newInputVarName}->accelerationStructureReference, *ptr, sizeof(uint64_t)); 404*ptr += sizeof(uint64_t); 405""", 406 }, 407} 408