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