# Copyright (c) 2021 The Android Open Source Project
# Copyright (c) 2021 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

KNOWN_FUNCTION_OPCODES = {
    "vkCreateInstance": 20000,
    "vkDestroyInstance": 20001,
    "vkEnumeratePhysicalDevices": 20002,
    "vkGetPhysicalDeviceFeatures": 20003,
    "vkGetPhysicalDeviceFormatProperties": 20004,
    "vkGetPhysicalDeviceImageFormatProperties": 20005,
    "vkGetPhysicalDeviceProperties": 20006,
    "vkGetPhysicalDeviceQueueFamilyProperties": 20007,
    "vkGetPhysicalDeviceMemoryProperties": 20008,
    "vkGetInstanceProcAddr": 20009,
    "vkGetDeviceProcAddr": 20010,
    "vkCreateDevice": 20011,
    "vkDestroyDevice": 20012,
    "vkEnumerateInstanceExtensionProperties": 20013,
    "vkEnumerateDeviceExtensionProperties": 20014,
    "vkEnumerateInstanceLayerProperties": 20015,
    "vkEnumerateDeviceLayerProperties": 20016,
    "vkGetDeviceQueue": 20017,
    "vkQueueSubmit": 20018,
    "vkQueueWaitIdle": 20019,
    "vkDeviceWaitIdle": 20020,
    "vkAllocateMemory": 20021,
    "vkFreeMemory": 20022,
    "vkMapMemory": 20023,
    "vkUnmapMemory": 20024,
    "vkFlushMappedMemoryRanges": 20025,
    "vkInvalidateMappedMemoryRanges": 20026,
    "vkGetDeviceMemoryCommitment": 20027,
    "vkBindBufferMemory": 20028,
    "vkBindImageMemory": 20029,
    "vkGetBufferMemoryRequirements": 20030,
    "vkGetImageMemoryRequirements": 20031,
    "vkGetImageSparseMemoryRequirements": 20032,
    "vkGetPhysicalDeviceSparseImageFormatProperties": 20033,
    "vkQueueBindSparse": 20034,
    "vkCreateFence": 20035,
    "vkDestroyFence": 20036,
    "vkResetFences": 20037,
    "vkGetFenceStatus": 20038,
    "vkWaitForFences": 20039,
    "vkCreateSemaphore": 20040,
    "vkDestroySemaphore": 20041,
    "vkCreateEvent": 20042,
    "vkDestroyEvent": 20043,
    "vkGetEventStatus": 20044,
    "vkSetEvent": 20045,
    "vkResetEvent": 20046,
    "vkCreateQueryPool": 20047,
    "vkDestroyQueryPool": 20048,
    "vkGetQueryPoolResults": 20049,
    "vkCreateBuffer": 20050,
    "vkDestroyBuffer": 20051,
    "vkCreateBufferView": 20052,
    "vkDestroyBufferView": 20053,
    "vkCreateImage": 20054,
    "vkDestroyImage": 20055,
    "vkGetImageSubresourceLayout": 20056,
    "vkCreateImageView": 20057,
    "vkDestroyImageView": 20058,
    "vkCreateShaderModule": 20059,
    "vkDestroyShaderModule": 20060,
    "vkCreatePipelineCache": 20061,
    "vkDestroyPipelineCache": 20062,
    "vkGetPipelineCacheData": 20063,
    "vkMergePipelineCaches": 20064,
    "vkCreateGraphicsPipelines": 20065,
    "vkCreateComputePipelines": 20066,
    "vkDestroyPipeline": 20067,
    "vkCreatePipelineLayout": 20068,
    "vkDestroyPipelineLayout": 20069,
    "vkCreateSampler": 20070,
    "vkDestroySampler": 20071,
    "vkCreateDescriptorSetLayout": 20072,
    "vkDestroyDescriptorSetLayout": 20073,
    "vkCreateDescriptorPool": 20074,
    "vkDestroyDescriptorPool": 20075,
    "vkResetDescriptorPool": 20076,
    "vkAllocateDescriptorSets": 20077,
    "vkFreeDescriptorSets": 20078,
    "vkUpdateDescriptorSets": 20079,
    "vkCreateFramebuffer": 20080,
    "vkDestroyFramebuffer": 20081,
    "vkCreateRenderPass": 20082,
    "vkDestroyRenderPass": 20083,
    "vkGetRenderAreaGranularity": 20084,
    "vkCreateCommandPool": 20085,
    "vkDestroyCommandPool": 20086,
    "vkResetCommandPool": 20087,
    "vkAllocateCommandBuffers": 20088,
    "vkFreeCommandBuffers": 20089,
    "vkBeginCommandBuffer": 20090,
    "vkEndCommandBuffer": 20091,
    "vkResetCommandBuffer": 20092,
    "vkCmdBindPipeline": 20093,
    "vkCmdSetViewport": 20094,
    "vkCmdSetScissor": 20095,
    "vkCmdSetLineWidth": 20096,
    "vkCmdSetDepthBias": 20097,
    "vkCmdSetBlendConstants": 20098,
    "vkCmdSetDepthBounds": 20099,
    "vkCmdSetStencilCompareMask": 20100,
    "vkCmdSetStencilWriteMask": 20101,
    "vkCmdSetStencilReference": 20102,
    "vkCmdBindDescriptorSets": 20103,
    "vkCmdBindIndexBuffer": 20104,
    "vkCmdBindVertexBuffers": 20105,
    "vkCmdDraw": 20106,
    "vkCmdDrawIndexed": 20107,
    "vkCmdDrawIndirect": 20108,
    "vkCmdDrawIndexedIndirect": 20109,
    "vkCmdDispatch": 20110,
    "vkCmdDispatchIndirect": 20111,
    "vkCmdCopyBuffer": 20112,
    "vkCmdCopyImage": 20113,
    "vkCmdBlitImage": 20114,
    "vkCmdCopyBufferToImage": 20115,
    "vkCmdCopyImageToBuffer": 20116,
    "vkCmdUpdateBuffer": 20117,
    "vkCmdFillBuffer": 20118,
    "vkCmdClearColorImage": 20119,
    "vkCmdClearDepthStencilImage": 20120,
    "vkCmdClearAttachments": 20121,
    "vkCmdResolveImage": 20122,
    "vkCmdSetEvent": 20123,
    "vkCmdResetEvent": 20124,
    "vkCmdWaitEvents": 20125,
    "vkCmdPipelineBarrier": 20126,
    "vkCmdBeginQuery": 20127,
    "vkCmdEndQuery": 20128,
    "vkCmdResetQueryPool": 20129,
    "vkCmdWriteTimestamp": 20130,
    "vkCmdCopyQueryPoolResults": 20131,
    "vkCmdPushConstants": 20132,
    "vkCmdBeginRenderPass": 20133,
    "vkCmdNextSubpass": 20134,
    "vkCmdEndRenderPass": 20135,
    "vkCmdExecuteCommands": 20136,
    "vkEnumerateInstanceVersion": 20137,
    "vkBindBufferMemory2": 20138,
    "vkBindImageMemory2": 20139,
    "vkGetDeviceGroupPeerMemoryFeatures": 20140,
    "vkCmdSetDeviceMask": 20141,
    "vkCmdDispatchBase": 20142,
    "vkEnumeratePhysicalDeviceGroups": 20143,
    "vkGetImageMemoryRequirements2": 20144,
    "vkGetBufferMemoryRequirements2": 20145,
    "vkGetImageSparseMemoryRequirements2": 20146,
    "vkGetPhysicalDeviceFeatures2": 20147,
    "vkGetPhysicalDeviceProperties2": 20148,
    "vkGetPhysicalDeviceFormatProperties2": 20149,
    "vkGetPhysicalDeviceImageFormatProperties2": 20150,
    "vkGetPhysicalDeviceQueueFamilyProperties2": 20151,
    "vkGetPhysicalDeviceMemoryProperties2": 20152,
    "vkGetPhysicalDeviceSparseImageFormatProperties2": 20153,
    "vkTrimCommandPool": 20154,
    "vkGetDeviceQueue2": 20155,
    "vkCreateSamplerYcbcrConversion": 20156,
    "vkDestroySamplerYcbcrConversion": 20157,
    "vkCreateDescriptorUpdateTemplate": 20158,
    "vkDestroyDescriptorUpdateTemplate": 20159,
    "vkUpdateDescriptorSetWithTemplate": 20160,
    "vkGetPhysicalDeviceExternalBufferProperties": 20161,
    "vkGetPhysicalDeviceExternalFenceProperties": 20162,
    "vkGetPhysicalDeviceExternalSemaphoreProperties": 20163,
    "vkGetDescriptorSetLayoutSupport": 20164,
    "vkDestroySurfaceKHR": 20165,
    "vkGetPhysicalDeviceSurfaceSupportKHR": 20166,
    "vkGetPhysicalDeviceSurfaceCapabilitiesKHR": 20167,
    "vkGetPhysicalDeviceSurfaceFormatsKHR": 20168,
    "vkGetPhysicalDeviceSurfacePresentModesKHR": 20169,
    "vkCreateSwapchainKHR": 20170,
    "vkDestroySwapchainKHR": 20171,
    "vkGetSwapchainImagesKHR": 20172,
    "vkAcquireNextImageKHR": 20173,
    "vkQueuePresentKHR": 20174,
    "vkGetDeviceGroupPresentCapabilitiesKHR": 20175,
    "vkGetDeviceGroupSurfacePresentModesKHR": 20176,
    "vkGetPhysicalDevicePresentRectanglesKHR": 20177,
    "vkAcquireNextImage2KHR": 20178,
    "vkGetPhysicalDeviceDisplayPropertiesKHR": 20179,
    "vkGetPhysicalDeviceDisplayPlanePropertiesKHR": 20180,
    "vkGetDisplayPlaneSupportedDisplaysKHR": 20181,
    "vkGetDisplayModePropertiesKHR": 20182,
    "vkCreateDisplayModeKHR": 20183,
    "vkGetDisplayPlaneCapabilitiesKHR": 20184,
    "vkCreateDisplayPlaneSurfaceKHR": 20185,
    "vkCreateSharedSwapchainsKHR": 20186,
    "vkCreateXlibSurfaceKHR": 20187,
    "vkGetPhysicalDeviceXlibPresentationSupportKHR": 20188,
    "vkCreateXcbSurfaceKHR": 20189,
    "vkGetPhysicalDeviceXcbPresentationSupportKHR": 20190,
    "vkCreateWaylandSurfaceKHR": 20191,
    "vkGetPhysicalDeviceWaylandPresentationSupportKHR": 20192,
    "vkCreateMirSurfaceKHR": 20193,
    "vkGetPhysicalDeviceMirPresentationSupportKHR": 20194,
    "vkCreateAndroidSurfaceKHR": 20195,
    "vkCreateWin32SurfaceKHR": 20196,
    "vkGetPhysicalDeviceWin32PresentationSupportKHR": 20197,
    "vkGetPhysicalDeviceFeatures2KHR": 20198,
    "vkGetPhysicalDeviceProperties2KHR": 20199,
    "vkGetPhysicalDeviceFormatProperties2KHR": 20200,
    "vkGetPhysicalDeviceImageFormatProperties2KHR": 20201,
    "vkGetPhysicalDeviceQueueFamilyProperties2KHR": 20202,
    "vkGetPhysicalDeviceMemoryProperties2KHR": 20203,
    "vkGetPhysicalDeviceSparseImageFormatProperties2KHR": 20204,
    "vkGetDeviceGroupPeerMemoryFeaturesKHR": 20205,
    "vkCmdSetDeviceMaskKHR": 20206,
    "vkCmdDispatchBaseKHR": 20207,
    "vkTrimCommandPoolKHR": 20208,
    "vkEnumeratePhysicalDeviceGroupsKHR": 20209,
    "vkGetPhysicalDeviceExternalBufferPropertiesKHR": 20210,
    "vkGetMemoryWin32HandleKHR": 20211,
    "vkGetMemoryWin32HandlePropertiesKHR": 20212,
    "vkGetMemoryFdKHR": 20213,
    "vkGetMemoryFdPropertiesKHR": 20214,
    "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR": 20215,
    "vkImportSemaphoreWin32HandleKHR": 20216,
    "vkGetSemaphoreWin32HandleKHR": 20217,
    "vkImportSemaphoreFdKHR": 20218,
    "vkGetSemaphoreFdKHR": 20219,
    "vkCmdPushDescriptorSetKHR": 20220,
    "vkCmdPushDescriptorSetWithTemplateKHR": 20221,
    "vkCreateDescriptorUpdateTemplateKHR": 20222,
    "vkDestroyDescriptorUpdateTemplateKHR": 20223,
    "vkUpdateDescriptorSetWithTemplateKHR": 20224,
    "vkCreateRenderPass2KHR": 20225,
    "vkCmdBeginRenderPass2KHR": 20226,
    "vkCmdNextSubpass2KHR": 20227,
    "vkCmdEndRenderPass2KHR": 20228,
    "vkGetSwapchainStatusKHR": 20229,
    "vkGetPhysicalDeviceExternalFencePropertiesKHR": 20230,
    "vkImportFenceWin32HandleKHR": 20231,
    "vkGetFenceWin32HandleKHR": 20232,
    "vkImportFenceFdKHR": 20233,
    "vkGetFenceFdKHR": 20234,
    "vkGetPhysicalDeviceSurfaceCapabilities2KHR": 20235,
    "vkGetPhysicalDeviceSurfaceFormats2KHR": 20236,
    "vkGetPhysicalDeviceDisplayProperties2KHR": 20237,
    "vkGetPhysicalDeviceDisplayPlaneProperties2KHR": 20238,
    "vkGetDisplayModeProperties2KHR": 20239,
    "vkGetDisplayPlaneCapabilities2KHR": 20240,
    "vkGetImageMemoryRequirements2KHR": 20241,
    "vkGetBufferMemoryRequirements2KHR": 20242,
    "vkGetImageSparseMemoryRequirements2KHR": 20243,
    "vkCreateSamplerYcbcrConversionKHR": 20244,
    "vkDestroySamplerYcbcrConversionKHR": 20245,
    "vkBindBufferMemory2KHR": 20246,
    "vkBindImageMemory2KHR": 20247,
    "vkGetDescriptorSetLayoutSupportKHR": 20248,
    "vkCmdDrawIndirectCountKHR": 20249,
    "vkCmdDrawIndexedIndirectCountKHR": 20250,
    "vkGetSwapchainGrallocUsageANDROID": 20251,
    "vkAcquireImageANDROID": 20252,
    "vkQueueSignalReleaseImageANDROID": 20253,
    "vkCreateDebugReportCallbackEXT": 20254,
    "vkDestroyDebugReportCallbackEXT": 20255,
    "vkDebugReportMessageEXT": 20256,
    "vkDebugMarkerSetObjectTagEXT": 20257,
    "vkDebugMarkerSetObjectNameEXT": 20258,
    "vkCmdDebugMarkerBeginEXT": 20259,
    "vkCmdDebugMarkerEndEXT": 20260,
    "vkCmdDebugMarkerInsertEXT": 20261,
    "vkCmdDrawIndirectCountAMD": 20262,
    "vkCmdDrawIndexedIndirectCountAMD": 20263,
    "vkGetShaderInfoAMD": 20264,
    "vkGetPhysicalDeviceExternalImageFormatPropertiesNV": 20265,
    "vkGetMemoryWin32HandleNV": 20266,
    "vkCreateViSurfaceNN": 20267,
    "vkCmdBeginConditionalRenderingEXT": 20268,
    "vkCmdEndConditionalRenderingEXT": 20269,
    "vkCmdProcessCommandsNVX": 20270,
    "vkCmdReserveSpaceForCommandsNVX": 20271,
    "vkCreateIndirectCommandsLayoutNVX": 20272,
    "vkDestroyIndirectCommandsLayoutNVX": 20273,
    "vkCreateObjectTableNVX": 20274,
    "vkDestroyObjectTableNVX": 20275,
    "vkRegisterObjectsNVX": 20276,
    "vkUnregisterObjectsNVX": 20277,
    "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX": 20278,
    "vkCmdSetViewportWScalingNV": 20279,
    "vkReleaseDisplayEXT": 20280,
    "vkAcquireXlibDisplayEXT": 20281,
    "vkGetRandROutputDisplayEXT": 20282,
    "vkGetPhysicalDeviceSurfaceCapabilities2EXT": 20283,
    "vkDisplayPowerControlEXT": 20284,
    "vkRegisterDeviceEventEXT": 20285,
    "vkRegisterDisplayEventEXT": 20286,
    "vkGetSwapchainCounterEXT": 20287,
    "vkGetRefreshCycleDurationGOOGLE": 20288,
    "vkGetPastPresentationTimingGOOGLE": 20289,
    "vkCmdSetDiscardRectangleEXT": 20290,
    "vkSetHdrMetadataEXT": 20291,
    "vkCreateIOSSurfaceMVK": 20292,
    "vkCreateMacOSSurfaceMVK": 20293,
    "vkSetDebugUtilsObjectNameEXT": 20294,
    "vkSetDebugUtilsObjectTagEXT": 20295,
    "vkQueueBeginDebugUtilsLabelEXT": 20296,
    "vkQueueEndDebugUtilsLabelEXT": 20297,
    "vkQueueInsertDebugUtilsLabelEXT": 20298,
    "vkCmdBeginDebugUtilsLabelEXT": 20299,
    "vkCmdEndDebugUtilsLabelEXT": 20300,
    "vkCmdInsertDebugUtilsLabelEXT": 20301,
    "vkCreateDebugUtilsMessengerEXT": 20302,
    "vkDestroyDebugUtilsMessengerEXT": 20303,
    "vkSubmitDebugUtilsMessageEXT": 20304,
    "vkGetAndroidHardwareBufferPropertiesANDROID": 20305,
    "vkGetMemoryAndroidHardwareBufferANDROID": 20306,
    "vkCmdSetSampleLocationsEXT": 20307,
    "vkGetPhysicalDeviceMultisamplePropertiesEXT": 20308,
    "vkCreateValidationCacheEXT": 20309,
    "vkDestroyValidationCacheEXT": 20310,
    "vkMergeValidationCachesEXT": 20311,
    "vkGetValidationCacheDataEXT": 20312,
    "vkGetMemoryHostPointerPropertiesEXT": 20313,
    "vkCmdWriteBufferMarkerAMD": 20314,
    "vkCmdSetCheckpointNV": 20315,
    "vkGetQueueCheckpointDataNV": 20316,
    "vkMapMemoryIntoAddressSpaceGOOGLE": 20317,
    "vkUpdateDescriptorSetWithTemplateSizedGOOGLE": 20320,
    "vkBeginCommandBufferAsyncGOOGLE": 20321,
    "vkEndCommandBufferAsyncGOOGLE": 20322,
    "vkResetCommandBufferAsyncGOOGLE": 20323,
    "vkCommandBufferHostSyncGOOGLE": 20324,
    "vkCreateImageWithRequirementsGOOGLE": 20325,
    "vkCreateBufferWithRequirementsGOOGLE": 20326,
    "vkGetMemoryHostAddressInfoGOOGLE": 20327,
    "vkFreeMemorySyncGOOGLE": 20328,
    "vkQueueHostSyncGOOGLE": 20329,
    "vkQueueSubmitAsyncGOOGLE": 20330,
    "vkQueueWaitIdleAsyncGOOGLE": 20331,
    "vkQueueBindSparseAsyncGOOGLE": 20332,
    "vkGetLinearImageLayoutGOOGLE": 20333,
    "vkGetMTLDeviceMVK": 20334,
    "vkSetMTLTextureMVK": 20335,
    "vkGetMTLTextureMVK": 20336,
    "vkGetMTLBufferMVK": 20337,
    "vkUseIOSurfaceMVK": 20338,
    "vkGetIOSurfaceMVK": 20339,
    "vkQueueFlushCommandsGOOGLE": 20340,
}

CUSTOM_MARSHAL_TYPES = {
    "VkAccelerationStructureInstanceKHR": {
        "common": """
typedef struct VkAccelerationStructureInstanceKHRWithoutBitFields {
    VkTransformMatrixKHR          transform;
    uint32_t                      dwords[2];
    uint64_t                      accelerationStructureReference;
} VkAccelerationStructureInstanceKHRWithoutBitFields;
""",
        "marshaling": """
const VkAccelerationStructureInstanceKHRWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureInstanceKHRWithoutBitFields*)({inputVarName});
marshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transform));
for (uint32_t i = 0; i < 2; i++) {{
    {streamVarName}->write((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
}}
{streamVarName}->write((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
""",
        "unmarshaling": """
VkAccelerationStructureInstanceKHRWithoutBitFields* {newInputVarName} = (VkAccelerationStructureInstanceKHRWithoutBitFields*)({inputVarName});
unmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transform));
for (uint32_t i = 0; i < 2; i++) {{
    {streamVarName}->read((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
}}
{streamVarName}->read((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
""",
        "reservedmarshaling": """
(void)vkStream;
const VkAccelerationStructureInstanceKHRWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureInstanceKHRWithoutBitFields*)({inputVarName});
reservedmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transform), ptr);
for (uint32_t i = 0; i < 2; i++) {{
    memcpy(*ptr, (uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
    *ptr += sizeof(uint32_t);
}}
memcpy(*ptr, (uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
*ptr += sizeof(uint64_t);
""",
        "reservedunmarshaling": """
VkAccelerationStructureInstanceKHRWithoutBitFields* {newInputVarName} = (VkAccelerationStructureInstanceKHRWithoutBitFields*)({inputVarName});
reservedunmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transform), ptr);
for (uint32_t i = 0; i < 2; i++) {{
    memcpy((uint32_t*)&({newInputVarName}->dwords[i]), *ptr, sizeof(uint32_t));
    *ptr += sizeof(uint32_t);
}}
memcpy((uint64_t*)&{newInputVarName}->accelerationStructureReference, *ptr, sizeof(uint64_t));
*ptr += sizeof(uint64_t);
""",
    },
    "VkAccelerationStructureMatrixMotionInstanceNV": {
        "common": """
typedef struct VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields {
    VkTransformMatrixKHR          transformT0;
    VkTransformMatrixKHR          transformT1;
    uint32_t                      dwords[2];
    uint64_t                      accelerationStructureReference;
} VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields;
""",
        "marshaling": """
const VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields*)({inputVarName});
marshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT0));
marshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT1));
for (uint32_t i = 0; i < 2; i++) {{
    {streamVarName}->write((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
}}
{streamVarName}->write((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
""",
        "unmarshaling": """
VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields* {newInputVarName} = (VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields*)({inputVarName});
unmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT0));
unmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT1));
for (uint32_t i = 0; i < 2; i++) {{
    {streamVarName}->read((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
}}
{streamVarName}->read((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
""",
        "reservedmarshaling": """
(void)vkStream;
const VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields*)({inputVarName});
reservedmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT0), ptr);
reservedmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT1), ptr);
for (uint32_t i = 0; i < 2; i++) {{
    memcpy(*ptr, (uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
    *ptr += sizeof(uint32_t);
}}
memcpy(*ptr, (uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
*ptr += sizeof(uint64_t);
""",
        "reservedunmarshaling": """
VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields* {newInputVarName} = (VkAccelerationStructureMatrixMotionInstanceNVWithoutBitFields*)({inputVarName});
reservedunmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT0), ptr);
reservedunmarshal_VkTransformMatrixKHR({streamVarName}, {rootTypeVarName}, (VkTransformMatrixKHR*)(&{newInputVarName}->transformT1), ptr);
for (uint32_t i = 0; i < 2; i++) {{
    memcpy((uint32_t*)&({newInputVarName}->dwords[i]), *ptr, sizeof(uint32_t));
    *ptr += sizeof(uint32_t);
}}
memcpy((uint64_t*)&{newInputVarName}->accelerationStructureReference, *ptr, sizeof(uint64_t));
*ptr += sizeof(uint64_t);
""",
    },
    "VkAccelerationStructureSRTMotionInstanceNV": {
        "common": """
typedef struct VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields {
    VkSRTDataNV          transformT0;
    VkSRTDataNV          transformT1;
    uint32_t             dwords[2];
    uint64_t             accelerationStructureReference;
} VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields;
""",
        "marshaling": """
const VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields*)({inputVarName});
marshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT0));
marshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT1));
for (uint32_t i = 0; i < 2; i++) {{
    {streamVarName}->write((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
}}
{streamVarName}->write((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
""",
        "unmarshaling": """
VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields* {newInputVarName} = (VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields*)({inputVarName});
unmarshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT0));
unmarshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT1));
for (uint32_t i = 0; i < 2; i++) {{
    {streamVarName}->read((uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
}}
{streamVarName}->read((uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
""",
        "reservedmarshaling": """
(void)vkStream;
const VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields* {newInputVarName} = (const VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields*)({inputVarName});
reservedmarshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT0), ptr);
reservedmarshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT1), ptr);
for (uint32_t i = 0; i < 2; i++) {{
    memcpy(*ptr, (uint32_t*)&({newInputVarName}->dwords[i]), sizeof(uint32_t));
    *ptr += sizeof(uint32_t);
}}
memcpy(*ptr, (uint64_t*)&{newInputVarName}->accelerationStructureReference, sizeof(uint64_t));
*ptr += sizeof(uint64_t);
""",
        "reservedunmarshaling": """
VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields* {newInputVarName} = (VkAccelerationStructureSRTMotionInstanceNVWithoutBitFields*)({inputVarName});
reservedunmarshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT0), ptr);
reservedunmarshal_VkSRTDataNV({streamVarName}, {rootTypeVarName}, (VkSRTDataNV*)(&{newInputVarName}->transformT1), ptr);
for (uint32_t i = 0; i < 2; i++) {{
    memcpy((uint32_t*)&({newInputVarName}->dwords[i]), *ptr, sizeof(uint32_t));
    *ptr += sizeof(uint32_t);
}}
memcpy((uint64_t*)&{newInputVarName}->accelerationStructureReference, *ptr, sizeof(uint64_t));
*ptr += sizeof(uint64_t);
""",
    },
    "VkXcbSurfaceCreateInfoKHR": {
        "common": """
// This struct should never be marshaled / unmarshaled.
__builtin_trap();
""",
        "marshaling": "",
        "unmarshaling": "",
        "reservedmarshaling": "",
        "reservedunmarshaling": "",
    },
    "VkMetalSurfaceCreateInfoEXT": {
        "common": """
// This struct should never be marshaled / unmarshaled.
__builtin_trap();
""",
        "marshaling": "",
        "unmarshaling": "",
        "reservedmarshaling": "",
        "reservedunmarshaling": "",
    },
}
