Tests for VK_EXT_shader_module_identifier
[platform/upstream/VK-GL-CTS.git] / external / vulkancts / framework / vulkan / vkTypeUtil.inl
1 /* WARNING: This is auto-generated file. Do not modify, since changes will
2  * be lost! Modify the generating script instead.
3  * This file was generated by /scripts/gen_framework.py
4  */
5
6 inline VkExtent2D makeExtent2D (uint32_t width, uint32_t height)
7 {
8         VkExtent2D res;
9         res.width       = width;
10         res.height      = height;
11         return res;
12 }
13
14 inline VkExtent3D makeExtent3D (uint32_t width, uint32_t height, uint32_t depth)
15 {
16         VkExtent3D res;
17         res.width       = width;
18         res.height      = height;
19         res.depth       = depth;
20         return res;
21 }
22
23 inline VkOffset2D makeOffset2D (int32_t x, int32_t y)
24 {
25         VkOffset2D res;
26         res.x   = x;
27         res.y   = y;
28         return res;
29 }
30
31 inline VkOffset3D makeOffset3D (int32_t x, int32_t y, int32_t z)
32 {
33         VkOffset3D res;
34         res.x   = x;
35         res.y   = y;
36         res.z   = z;
37         return res;
38 }
39
40 inline VkDispatchIndirectCommand makeDispatchIndirectCommand (uint32_t x, uint32_t y, uint32_t z)
41 {
42         VkDispatchIndirectCommand res;
43         res.x   = x;
44         res.y   = y;
45         res.z   = z;
46         return res;
47 }
48
49 inline VkDrawIndexedIndirectCommand makeDrawIndexedIndirectCommand (uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance)
50 {
51         VkDrawIndexedIndirectCommand res;
52         res.indexCount          = indexCount;
53         res.instanceCount       = instanceCount;
54         res.firstIndex          = firstIndex;
55         res.vertexOffset        = vertexOffset;
56         res.firstInstance       = firstInstance;
57         return res;
58 }
59
60 inline VkDrawIndirectCommand makeDrawIndirectCommand (uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance)
61 {
62         VkDrawIndirectCommand res;
63         res.vertexCount         = vertexCount;
64         res.instanceCount       = instanceCount;
65         res.firstVertex         = firstVertex;
66         res.firstInstance       = firstInstance;
67         return res;
68 }
69
70 inline VkImageSubresourceRange makeImageSubresourceRange (VkImageAspectFlags aspectMask, uint32_t baseMipLevel, uint32_t levelCount, uint32_t baseArrayLayer, uint32_t layerCount)
71 {
72         VkImageSubresourceRange res;
73         res.aspectMask          = aspectMask;
74         res.baseMipLevel        = baseMipLevel;
75         res.levelCount          = levelCount;
76         res.baseArrayLayer      = baseArrayLayer;
77         res.layerCount          = layerCount;
78         return res;
79 }
80
81 inline VkAllocationCallbacks makeAllocationCallbacks (void* pUserData, PFN_vkAllocationFunction pfnAllocation, PFN_vkReallocationFunction pfnReallocation, PFN_vkFreeFunction pfnFree, PFN_vkInternalAllocationNotification pfnInternalAllocation, PFN_vkInternalFreeNotification pfnInternalFree)
82 {
83         VkAllocationCallbacks res;
84         res.pUserData                           = pUserData;
85         res.pfnAllocation                       = pfnAllocation;
86         res.pfnReallocation                     = pfnReallocation;
87         res.pfnFree                                     = pfnFree;
88         res.pfnInternalAllocation       = pfnInternalAllocation;
89         res.pfnInternalFree                     = pfnInternalFree;
90         return res;
91 }
92
93 inline VkMemoryRequirements makeMemoryRequirements (VkDeviceSize size, VkDeviceSize alignment, uint32_t memoryTypeBits)
94 {
95         VkMemoryRequirements res;
96         res.size                        = size;
97         res.alignment           = alignment;
98         res.memoryTypeBits      = memoryTypeBits;
99         return res;
100 }
101
102 inline VkSparseMemoryBind makeSparseMemoryBind (VkDeviceSize resourceOffset, VkDeviceSize size, VkDeviceMemory memory, VkDeviceSize memoryOffset, VkSparseMemoryBindFlags flags)
103 {
104         VkSparseMemoryBind res;
105         res.resourceOffset      = resourceOffset;
106         res.size                        = size;
107         res.memory                      = memory;
108         res.memoryOffset        = memoryOffset;
109         res.flags                       = flags;
110         return res;
111 }
112
113 inline VkSparseBufferMemoryBindInfo makeSparseBufferMemoryBindInfo (VkBuffer buffer, uint32_t bindCount, const VkSparseMemoryBind* pBinds)
114 {
115         VkSparseBufferMemoryBindInfo res;
116         res.buffer              = buffer;
117         res.bindCount   = bindCount;
118         res.pBinds              = pBinds;
119         return res;
120 }
121
122 inline VkSparseImageOpaqueMemoryBindInfo makeSparseImageOpaqueMemoryBindInfo (VkImage image, uint32_t bindCount, const VkSparseMemoryBind* pBinds)
123 {
124         VkSparseImageOpaqueMemoryBindInfo res;
125         res.image               = image;
126         res.bindCount   = bindCount;
127         res.pBinds              = pBinds;
128         return res;
129 }
130
131 inline VkImageSubresource makeImageSubresource (VkImageAspectFlags aspectMask, uint32_t mipLevel, uint32_t arrayLayer)
132 {
133         VkImageSubresource res;
134         res.aspectMask  = aspectMask;
135         res.mipLevel    = mipLevel;
136         res.arrayLayer  = arrayLayer;
137         return res;
138 }
139
140 inline VkSparseImageMemoryBindInfo makeSparseImageMemoryBindInfo (VkImage image, uint32_t bindCount, const VkSparseImageMemoryBind* pBinds)
141 {
142         VkSparseImageMemoryBindInfo res;
143         res.image               = image;
144         res.bindCount   = bindCount;
145         res.pBinds              = pBinds;
146         return res;
147 }
148
149 inline VkSubresourceLayout makeSubresourceLayout (VkDeviceSize offset, VkDeviceSize size, VkDeviceSize rowPitch, VkDeviceSize arrayPitch, VkDeviceSize depthPitch)
150 {
151         VkSubresourceLayout res;
152         res.offset              = offset;
153         res.size                = size;
154         res.rowPitch    = rowPitch;
155         res.arrayPitch  = arrayPitch;
156         res.depthPitch  = depthPitch;
157         return res;
158 }
159
160 inline VkComponentMapping makeComponentMapping (VkComponentSwizzle r, VkComponentSwizzle g, VkComponentSwizzle b, VkComponentSwizzle a)
161 {
162         VkComponentMapping res;
163         res.r   = r;
164         res.g   = g;
165         res.b   = b;
166         res.a   = a;
167         return res;
168 }
169
170 inline VkSpecializationMapEntry makeSpecializationMapEntry (uint32_t constantID, uint32_t offset, size_t size)
171 {
172         VkSpecializationMapEntry res;
173         res.constantID  = constantID;
174         res.offset              = offset;
175         res.size                = size;
176         return res;
177 }
178
179 inline VkSpecializationInfo makeSpecializationInfo (uint32_t mapEntryCount, const VkSpecializationMapEntry* pMapEntries, size_t dataSize, const void* pData)
180 {
181         VkSpecializationInfo res;
182         res.mapEntryCount       = mapEntryCount;
183         res.pMapEntries         = pMapEntries;
184         res.dataSize            = dataSize;
185         res.pData                       = pData;
186         return res;
187 }
188
189 inline VkVertexInputBindingDescription makeVertexInputBindingDescription (uint32_t binding, uint32_t stride, VkVertexInputRate inputRate)
190 {
191         VkVertexInputBindingDescription res;
192         res.binding             = binding;
193         res.stride              = stride;
194         res.inputRate   = inputRate;
195         return res;
196 }
197
198 inline VkVertexInputAttributeDescription makeVertexInputAttributeDescription (uint32_t location, uint32_t binding, VkFormat format, uint32_t offset)
199 {
200         VkVertexInputAttributeDescription res;
201         res.location    = location;
202         res.binding             = binding;
203         res.format              = format;
204         res.offset              = offset;
205         return res;
206 }
207
208 inline VkViewport makeViewport (float x, float y, float width, float height, float minDepth, float maxDepth)
209 {
210         VkViewport res;
211         res.x                   = x;
212         res.y                   = y;
213         res.width               = width;
214         res.height              = height;
215         res.minDepth    = minDepth;
216         res.maxDepth    = maxDepth;
217         return res;
218 }
219
220 inline VkStencilOpState makeStencilOpState (VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp, uint32_t compareMask, uint32_t writeMask, uint32_t reference)
221 {
222         VkStencilOpState res;
223         res.failOp              = failOp;
224         res.passOp              = passOp;
225         res.depthFailOp = depthFailOp;
226         res.compareOp   = compareOp;
227         res.compareMask = compareMask;
228         res.writeMask   = writeMask;
229         res.reference   = reference;
230         return res;
231 }
232
233 inline VkPipelineColorBlendAttachmentState makePipelineColorBlendAttachmentState (VkBool32 blendEnable, VkBlendFactor srcColorBlendFactor, VkBlendFactor dstColorBlendFactor, VkBlendOp colorBlendOp, VkBlendFactor srcAlphaBlendFactor, VkBlendFactor dstAlphaBlendFactor, VkBlendOp alphaBlendOp, VkColorComponentFlags colorWriteMask)
234 {
235         VkPipelineColorBlendAttachmentState res;
236         res.blendEnable                 = blendEnable;
237         res.srcColorBlendFactor = srcColorBlendFactor;
238         res.dstColorBlendFactor = dstColorBlendFactor;
239         res.colorBlendOp                = colorBlendOp;
240         res.srcAlphaBlendFactor = srcAlphaBlendFactor;
241         res.dstAlphaBlendFactor = dstAlphaBlendFactor;
242         res.alphaBlendOp                = alphaBlendOp;
243         res.colorWriteMask              = colorWriteMask;
244         return res;
245 }
246
247 inline VkPushConstantRange makePushConstantRange (VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size)
248 {
249         VkPushConstantRange res;
250         res.stageFlags  = stageFlags;
251         res.offset              = offset;
252         res.size                = size;
253         return res;
254 }
255
256 inline VkDescriptorBufferInfo makeDescriptorBufferInfo (VkBuffer buffer, VkDeviceSize offset, VkDeviceSize range)
257 {
258         VkDescriptorBufferInfo res;
259         res.buffer      = buffer;
260         res.offset      = offset;
261         res.range       = range;
262         return res;
263 }
264
265 inline VkDescriptorImageInfo makeDescriptorImageInfo (VkSampler sampler, VkImageView imageView, VkImageLayout imageLayout)
266 {
267         VkDescriptorImageInfo res;
268         res.sampler             = sampler;
269         res.imageView   = imageView;
270         res.imageLayout = imageLayout;
271         return res;
272 }
273
274 inline VkDescriptorPoolSize makeDescriptorPoolSize (VkDescriptorType type, uint32_t descriptorCount)
275 {
276         VkDescriptorPoolSize res;
277         res.type                        = type;
278         res.descriptorCount     = descriptorCount;
279         return res;
280 }
281
282 inline VkDescriptorSetLayoutBinding makeDescriptorSetLayoutBinding (uint32_t binding, VkDescriptorType descriptorType, uint32_t descriptorCount, VkShaderStageFlags stageFlags, const VkSampler* pImmutableSamplers)
283 {
284         VkDescriptorSetLayoutBinding res;
285         res.binding                             = binding;
286         res.descriptorType              = descriptorType;
287         res.descriptorCount             = descriptorCount;
288         res.stageFlags                  = stageFlags;
289         res.pImmutableSamplers  = pImmutableSamplers;
290         return res;
291 }
292
293 inline VkAttachmentDescription makeAttachmentDescription (VkAttachmentDescriptionFlags flags, VkFormat format, VkSampleCountFlagBits samples, VkAttachmentLoadOp loadOp, VkAttachmentStoreOp storeOp, VkAttachmentLoadOp stencilLoadOp, VkAttachmentStoreOp stencilStoreOp, VkImageLayout initialLayout, VkImageLayout finalLayout)
294 {
295         VkAttachmentDescription res;
296         res.flags                       = flags;
297         res.format                      = format;
298         res.samples                     = samples;
299         res.loadOp                      = loadOp;
300         res.storeOp                     = storeOp;
301         res.stencilLoadOp       = stencilLoadOp;
302         res.stencilStoreOp      = stencilStoreOp;
303         res.initialLayout       = initialLayout;
304         res.finalLayout         = finalLayout;
305         return res;
306 }
307
308 inline VkAttachmentReference makeAttachmentReference (uint32_t attachment, VkImageLayout layout)
309 {
310         VkAttachmentReference res;
311         res.attachment  = attachment;
312         res.layout              = layout;
313         return res;
314 }
315
316 inline VkSubpassDescription makeSubpassDescription (VkSubpassDescriptionFlags flags, VkPipelineBindPoint pipelineBindPoint, uint32_t inputAttachmentCount, const VkAttachmentReference* pInputAttachments, uint32_t colorAttachmentCount, const VkAttachmentReference* pColorAttachments, const VkAttachmentReference* pResolveAttachments, const VkAttachmentReference* pDepthStencilAttachment, uint32_t preserveAttachmentCount, const uint32_t* pPreserveAttachments)
317 {
318         VkSubpassDescription res;
319         res.flags                                       = flags;
320         res.pipelineBindPoint           = pipelineBindPoint;
321         res.inputAttachmentCount        = inputAttachmentCount;
322         res.pInputAttachments           = pInputAttachments;
323         res.colorAttachmentCount        = colorAttachmentCount;
324         res.pColorAttachments           = pColorAttachments;
325         res.pResolveAttachments         = pResolveAttachments;
326         res.pDepthStencilAttachment     = pDepthStencilAttachment;
327         res.preserveAttachmentCount     = preserveAttachmentCount;
328         res.pPreserveAttachments        = pPreserveAttachments;
329         return res;
330 }
331
332 inline VkSubpassDependency makeSubpassDependency (uint32_t srcSubpass, uint32_t dstSubpass, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask, VkDependencyFlags dependencyFlags)
333 {
334         VkSubpassDependency res;
335         res.srcSubpass          = srcSubpass;
336         res.dstSubpass          = dstSubpass;
337         res.srcStageMask        = srcStageMask;
338         res.dstStageMask        = dstStageMask;
339         res.srcAccessMask       = srcAccessMask;
340         res.dstAccessMask       = dstAccessMask;
341         res.dependencyFlags     = dependencyFlags;
342         return res;
343 }
344
345 inline VkBufferCopy makeBufferCopy (VkDeviceSize srcOffset, VkDeviceSize dstOffset, VkDeviceSize size)
346 {
347         VkBufferCopy res;
348         res.srcOffset   = srcOffset;
349         res.dstOffset   = dstOffset;
350         res.size                = size;
351         return res;
352 }
353
354 inline VkImageSubresourceLayers makeImageSubresourceLayers (VkImageAspectFlags aspectMask, uint32_t mipLevel, uint32_t baseArrayLayer, uint32_t layerCount)
355 {
356         VkImageSubresourceLayers res;
357         res.aspectMask          = aspectMask;
358         res.mipLevel            = mipLevel;
359         res.baseArrayLayer      = baseArrayLayer;
360         res.layerCount          = layerCount;
361         return res;
362 }
363
364 inline VkClearDepthStencilValue makeClearDepthStencilValue (float depth, uint32_t stencil)
365 {
366         VkClearDepthStencilValue res;
367         res.depth       = depth;
368         res.stencil     = stencil;
369         return res;
370 }
371
372 inline VkInputAttachmentAspectReference makeInputAttachmentAspectReference (uint32_t subpass, uint32_t inputAttachmentIndex, VkImageAspectFlags aspectMask)
373 {
374         VkInputAttachmentAspectReference res;
375         res.subpass                                     = subpass;
376         res.inputAttachmentIndex        = inputAttachmentIndex;
377         res.aspectMask                          = aspectMask;
378         return res;
379 }
380
381 inline VkDescriptorUpdateTemplateEntry makeDescriptorUpdateTemplateEntry (uint32_t dstBinding, uint32_t dstArrayElement, uint32_t descriptorCount, VkDescriptorType descriptorType, size_t offset, size_t stride)
382 {
383         VkDescriptorUpdateTemplateEntry res;
384         res.dstBinding          = dstBinding;
385         res.dstArrayElement     = dstArrayElement;
386         res.descriptorCount     = descriptorCount;
387         res.descriptorType      = descriptorType;
388         res.offset                      = offset;
389         res.stride                      = stride;
390         return res;
391 }
392
393 inline VkExternalMemoryProperties makeExternalMemoryProperties (VkExternalMemoryFeatureFlags externalMemoryFeatures, VkExternalMemoryHandleTypeFlags exportFromImportedHandleTypes, VkExternalMemoryHandleTypeFlags compatibleHandleTypes)
394 {
395         VkExternalMemoryProperties res;
396         res.externalMemoryFeatures                      = externalMemoryFeatures;
397         res.exportFromImportedHandleTypes       = exportFromImportedHandleTypes;
398         res.compatibleHandleTypes                       = compatibleHandleTypes;
399         return res;
400 }
401
402 inline VkConformanceVersion makeConformanceVersion (uint8_t major, uint8_t minor, uint8_t subminor, uint8_t patch)
403 {
404         VkConformanceVersion res;
405         res.major               = major;
406         res.minor               = minor;
407         res.subminor    = subminor;
408         res.patch               = patch;
409         return res;
410 }
411
412 inline VkPipelineCreationFeedback makePipelineCreationFeedback (VkPipelineCreationFeedbackFlags flags, uint64_t duration)
413 {
414         VkPipelineCreationFeedback res;
415         res.flags               = flags;
416         res.duration    = duration;
417         return res;
418 }
419
420 inline VkSurfaceFormatKHR makeSurfaceFormatKHR (VkFormat format, VkColorSpaceKHR colorSpace)
421 {
422         VkSurfaceFormatKHR res;
423         res.format              = format;
424         res.colorSpace  = colorSpace;
425         return res;
426 }
427
428 inline VkDisplayPlanePropertiesKHR makeDisplayPlanePropertiesKHR (VkDisplayKHR currentDisplay, uint32_t currentStackIndex)
429 {
430         VkDisplayPlanePropertiesKHR res;
431         res.currentDisplay              = currentDisplay;
432         res.currentStackIndex   = currentStackIndex;
433         return res;
434 }
435
436 inline VkPresentRegionKHR makePresentRegionKHR (uint32_t rectangleCount, const VkRectLayerKHR* pRectangles)
437 {
438         VkPresentRegionKHR res;
439         res.rectangleCount      = rectangleCount;
440         res.pRectangles         = pRectangles;
441         return res;
442 }
443
444 inline VkTraceRaysIndirectCommand2KHR makeTraceRaysIndirectCommand2KHR (VkDeviceAddress raygenShaderRecordAddress, VkDeviceSize raygenShaderRecordSize, VkDeviceAddress missShaderBindingTableAddress, VkDeviceSize missShaderBindingTableSize, VkDeviceSize missShaderBindingTableStride, VkDeviceAddress hitShaderBindingTableAddress, VkDeviceSize hitShaderBindingTableSize, VkDeviceSize hitShaderBindingTableStride, VkDeviceAddress callableShaderBindingTableAddress, VkDeviceSize callableShaderBindingTableSize, VkDeviceSize callableShaderBindingTableStride, uint32_t width, uint32_t height, uint32_t depth)
445 {
446         VkTraceRaysIndirectCommand2KHR res;
447         res.raygenShaderRecordAddress                   = raygenShaderRecordAddress;
448         res.raygenShaderRecordSize                              = raygenShaderRecordSize;
449         res.missShaderBindingTableAddress               = missShaderBindingTableAddress;
450         res.missShaderBindingTableSize                  = missShaderBindingTableSize;
451         res.missShaderBindingTableStride                = missShaderBindingTableStride;
452         res.hitShaderBindingTableAddress                = hitShaderBindingTableAddress;
453         res.hitShaderBindingTableSize                   = hitShaderBindingTableSize;
454         res.hitShaderBindingTableStride                 = hitShaderBindingTableStride;
455         res.callableShaderBindingTableAddress   = callableShaderBindingTableAddress;
456         res.callableShaderBindingTableSize              = callableShaderBindingTableSize;
457         res.callableShaderBindingTableStride    = callableShaderBindingTableStride;
458         res.width                                                               = width;
459         res.height                                                              = height;
460         res.depth                                                               = depth;
461         return res;
462 }
463
464 inline VkShaderResourceUsageAMD makeShaderResourceUsageAMD (uint32_t numUsedVgprs, uint32_t numUsedSgprs, uint32_t ldsSizePerLocalWorkGroup, size_t ldsUsageSizeInBytes, size_t scratchMemUsageInBytes)
465 {
466         VkShaderResourceUsageAMD res;
467         res.numUsedVgprs                                = numUsedVgprs;
468         res.numUsedSgprs                                = numUsedSgprs;
469         res.ldsSizePerLocalWorkGroup    = ldsSizePerLocalWorkGroup;
470         res.ldsUsageSizeInBytes                 = ldsUsageSizeInBytes;
471         res.scratchMemUsageInBytes              = scratchMemUsageInBytes;
472         return res;
473 }
474
475 inline VkViewportWScalingNV makeViewportWScalingNV (float xcoeff, float ycoeff)
476 {
477         VkViewportWScalingNV res;
478         res.xcoeff      = xcoeff;
479         res.ycoeff      = ycoeff;
480         return res;
481 }
482
483 inline VkRefreshCycleDurationGOOGLE makeRefreshCycleDurationGOOGLE (uint64_t refreshDuration)
484 {
485         VkRefreshCycleDurationGOOGLE res;
486         res.refreshDuration     = refreshDuration;
487         return res;
488 }
489
490 inline VkPastPresentationTimingGOOGLE makePastPresentationTimingGOOGLE (uint32_t presentID, uint64_t desiredPresentTime, uint64_t actualPresentTime, uint64_t earliestPresentTime, uint64_t presentMargin)
491 {
492         VkPastPresentationTimingGOOGLE res;
493         res.presentID                   = presentID;
494         res.desiredPresentTime  = desiredPresentTime;
495         res.actualPresentTime   = actualPresentTime;
496         res.earliestPresentTime = earliestPresentTime;
497         res.presentMargin               = presentMargin;
498         return res;
499 }
500
501 inline VkPresentTimeGOOGLE makePresentTimeGOOGLE (uint32_t presentID, uint64_t desiredPresentTime)
502 {
503         VkPresentTimeGOOGLE res;
504         res.presentID                   = presentID;
505         res.desiredPresentTime  = desiredPresentTime;
506         return res;
507 }
508
509 inline VkViewportSwizzleNV makeViewportSwizzleNV (VkViewportCoordinateSwizzleNV x, VkViewportCoordinateSwizzleNV y, VkViewportCoordinateSwizzleNV z, VkViewportCoordinateSwizzleNV w)
510 {
511         VkViewportSwizzleNV res;
512         res.x   = x;
513         res.y   = y;
514         res.z   = z;
515         res.w   = w;
516         return res;
517 }
518
519 inline VkXYColorEXT makeXYColorEXT (float x, float y)
520 {
521         VkXYColorEXT res;
522         res.x   = x;
523         res.y   = y;
524         return res;
525 }
526
527 inline VkSampleLocationEXT makeSampleLocationEXT (float x, float y)
528 {
529         VkSampleLocationEXT res;
530         res.x   = x;
531         res.y   = y;
532         return res;
533 }
534
535 inline VkDrmFormatModifierPropertiesEXT makeDrmFormatModifierPropertiesEXT (uint64_t drmFormatModifier, uint32_t drmFormatModifierPlaneCount, VkFormatFeatureFlags drmFormatModifierTilingFeatures)
536 {
537         VkDrmFormatModifierPropertiesEXT res;
538         res.drmFormatModifier                           = drmFormatModifier;
539         res.drmFormatModifierPlaneCount         = drmFormatModifierPlaneCount;
540         res.drmFormatModifierTilingFeatures     = drmFormatModifierTilingFeatures;
541         return res;
542 }
543
544 inline VkDrmFormatModifierProperties2EXT makeDrmFormatModifierProperties2EXT (uint64_t drmFormatModifier, uint32_t drmFormatModifierPlaneCount, VkFormatFeatureFlags2 drmFormatModifierTilingFeatures)
545 {
546         VkDrmFormatModifierProperties2EXT res;
547         res.drmFormatModifier                           = drmFormatModifier;
548         res.drmFormatModifierPlaneCount         = drmFormatModifierPlaneCount;
549         res.drmFormatModifierTilingFeatures     = drmFormatModifierTilingFeatures;
550         return res;
551 }
552
553 inline VkShadingRatePaletteNV makeShadingRatePaletteNV (uint32_t shadingRatePaletteEntryCount, const VkShadingRatePaletteEntryNV* pShadingRatePaletteEntries)
554 {
555         VkShadingRatePaletteNV res;
556         res.shadingRatePaletteEntryCount        = shadingRatePaletteEntryCount;
557         res.pShadingRatePaletteEntries          = pShadingRatePaletteEntries;
558         return res;
559 }
560
561 inline VkCoarseSampleLocationNV makeCoarseSampleLocationNV (uint32_t pixelX, uint32_t pixelY, uint32_t sample)
562 {
563         VkCoarseSampleLocationNV res;
564         res.pixelX      = pixelX;
565         res.pixelY      = pixelY;
566         res.sample      = sample;
567         return res;
568 }
569
570 inline VkCoarseSampleOrderCustomNV makeCoarseSampleOrderCustomNV (VkShadingRatePaletteEntryNV shadingRate, uint32_t sampleCount, uint32_t sampleLocationCount, const VkCoarseSampleLocationNV* pSampleLocations)
571 {
572         VkCoarseSampleOrderCustomNV res;
573         res.shadingRate                 = shadingRate;
574         res.sampleCount                 = sampleCount;
575         res.sampleLocationCount = sampleLocationCount;
576         res.pSampleLocations    = pSampleLocations;
577         return res;
578 }
579
580 inline VkAabbPositionsKHR makeAabbPositionsKHR (float minX, float minY, float minZ, float maxX, float maxY, float maxZ)
581 {
582         VkAabbPositionsKHR res;
583         res.minX        = minX;
584         res.minY        = minY;
585         res.minZ        = minZ;
586         res.maxX        = maxX;
587         res.maxY        = maxY;
588         res.maxZ        = maxZ;
589         return res;
590 }
591
592 inline VkVertexInputBindingDivisorDescriptionEXT makeVertexInputBindingDivisorDescriptionEXT (uint32_t binding, uint32_t divisor)
593 {
594         VkVertexInputBindingDivisorDescriptionEXT res;
595         res.binding     = binding;
596         res.divisor     = divisor;
597         return res;
598 }
599
600 inline VkDrawMeshTasksIndirectCommandNV makeDrawMeshTasksIndirectCommandNV (uint32_t taskCount, uint32_t firstTask)
601 {
602         VkDrawMeshTasksIndirectCommandNV res;
603         res.taskCount   = taskCount;
604         res.firstTask   = firstTask;
605         return res;
606 }
607
608 inline VkBindShaderGroupIndirectCommandNV makeBindShaderGroupIndirectCommandNV (uint32_t groupIndex)
609 {
610         VkBindShaderGroupIndirectCommandNV res;
611         res.groupIndex  = groupIndex;
612         return res;
613 }
614
615 inline VkBindIndexBufferIndirectCommandNV makeBindIndexBufferIndirectCommandNV (VkDeviceAddress bufferAddress, uint32_t size, VkIndexType indexType)
616 {
617         VkBindIndexBufferIndirectCommandNV res;
618         res.bufferAddress       = bufferAddress;
619         res.size                        = size;
620         res.indexType           = indexType;
621         return res;
622 }
623
624 inline VkBindVertexBufferIndirectCommandNV makeBindVertexBufferIndirectCommandNV (VkDeviceAddress bufferAddress, uint32_t size, uint32_t stride)
625 {
626         VkBindVertexBufferIndirectCommandNV res;
627         res.bufferAddress       = bufferAddress;
628         res.size                        = size;
629         res.stride                      = stride;
630         return res;
631 }
632
633 inline VkSetStateFlagsIndirectCommandNV makeSetStateFlagsIndirectCommandNV (uint32_t data)
634 {
635         VkSetStateFlagsIndirectCommandNV res;
636         res.data        = data;
637         return res;
638 }
639
640 inline VkIndirectCommandsStreamNV makeIndirectCommandsStreamNV (VkBuffer buffer, VkDeviceSize offset)
641 {
642         VkIndirectCommandsStreamNV res;
643         res.buffer      = buffer;
644         res.offset      = offset;
645         return res;
646 }
647
648 inline VkSRTDataNV makeSRTDataNV (float sx, float a, float b, float pvx, float sy, float c, float pvy, float sz, float pvz, float qx, float qy, float qz, float qw, float tx, float ty, float tz)
649 {
650         VkSRTDataNV res;
651         res.sx  = sx;
652         res.a   = a;
653         res.b   = b;
654         res.pvx = pvx;
655         res.sy  = sy;
656         res.c   = c;
657         res.pvy = pvy;
658         res.sz  = sz;
659         res.pvz = pvz;
660         res.qx  = qx;
661         res.qy  = qy;
662         res.qz  = qz;
663         res.qw  = qw;
664         res.tx  = tx;
665         res.ty  = ty;
666         res.tz  = tz;
667         return res;
668 }
669
670 inline VkMutableDescriptorTypeListVALVE makeMutableDescriptorTypeListVALVE (uint32_t descriptorTypeCount, const VkDescriptorType* pDescriptorTypes)
671 {
672         VkMutableDescriptorTypeListVALVE res;
673         res.descriptorTypeCount = descriptorTypeCount;
674         res.pDescriptorTypes    = pDescriptorTypes;
675         return res;
676 }
677
678 inline VkMultiDrawInfoEXT makeMultiDrawInfoEXT (uint32_t firstVertex, uint32_t vertexCount)
679 {
680         VkMultiDrawInfoEXT res;
681         res.firstVertex = firstVertex;
682         res.vertexCount = vertexCount;
683         return res;
684 }
685
686 inline VkMultiDrawIndexedInfoEXT makeMultiDrawIndexedInfoEXT (uint32_t firstIndex, uint32_t indexCount, int32_t vertexOffset)
687 {
688         VkMultiDrawIndexedInfoEXT res;
689         res.firstIndex          = firstIndex;
690         res.indexCount          = indexCount;
691         res.vertexOffset        = vertexOffset;
692         return res;
693 }
694
695 inline VkAccelerationStructureBuildRangeInfoKHR makeAccelerationStructureBuildRangeInfoKHR (uint32_t primitiveCount, uint32_t primitiveOffset, uint32_t firstVertex, uint32_t transformOffset)
696 {
697         VkAccelerationStructureBuildRangeInfoKHR res;
698         res.primitiveCount      = primitiveCount;
699         res.primitiveOffset     = primitiveOffset;
700         res.firstVertex         = firstVertex;
701         res.transformOffset     = transformOffset;
702         return res;
703 }
704
705 inline VkStridedDeviceAddressRegionKHR makeStridedDeviceAddressRegionKHR (VkDeviceAddress deviceAddress, VkDeviceSize stride, VkDeviceSize size)
706 {
707         VkStridedDeviceAddressRegionKHR res;
708         res.deviceAddress       = deviceAddress;
709         res.stride                      = stride;
710         res.size                        = size;
711         return res;
712 }
713
714 inline VkTraceRaysIndirectCommandKHR makeTraceRaysIndirectCommandKHR (uint32_t width, uint32_t height, uint32_t depth)
715 {
716         VkTraceRaysIndirectCommandKHR res;
717         res.width       = width;
718         res.height      = height;
719         res.depth       = depth;
720         return res;
721 }
722
723 inline StdVideoEncodeH264WeightTableFlags makeStdVideoEncodeH264WeightTableFlags (uint32_t luma_weight_l0_flag, uint32_t chroma_weight_l0_flag, uint32_t luma_weight_l1_flag, uint32_t chroma_weight_l1_flag)
724 {
725         StdVideoEncodeH264WeightTableFlags res;
726         res.luma_weight_l0_flag         = luma_weight_l0_flag;
727         res.chroma_weight_l0_flag       = chroma_weight_l0_flag;
728         res.luma_weight_l1_flag         = luma_weight_l1_flag;
729         res.chroma_weight_l1_flag       = chroma_weight_l1_flag;
730         return res;
731 }
732
733 inline StdVideoEncodeH264RefListModEntry makeStdVideoEncodeH264RefListModEntry (StdVideoH264ModificationOfPicNumsIdc modification_of_pic_nums_idc, uint16_t abs_diff_pic_num_minus1, uint16_t long_term_pic_num)
734 {
735         StdVideoEncodeH264RefListModEntry res;
736         res.modification_of_pic_nums_idc        = modification_of_pic_nums_idc;
737         res.abs_diff_pic_num_minus1                     = abs_diff_pic_num_minus1;
738         res.long_term_pic_num                           = long_term_pic_num;
739         return res;
740 }
741
742 inline StdVideoEncodeH264RefPicMarkingEntry makeStdVideoEncodeH264RefPicMarkingEntry (StdVideoH264MemMgmtControlOp operation, uint16_t difference_of_pic_nums_minus1, uint16_t long_term_pic_num, uint16_t long_term_frame_idx, uint16_t max_long_term_frame_idx_plus1)
743 {
744         StdVideoEncodeH264RefPicMarkingEntry res;
745         res.operation                                           = operation;
746         res.difference_of_pic_nums_minus1       = difference_of_pic_nums_minus1;
747         res.long_term_pic_num                           = long_term_pic_num;
748         res.long_term_frame_idx                         = long_term_frame_idx;
749         res.max_long_term_frame_idx_plus1       = max_long_term_frame_idx_plus1;
750         return res;
751 }
752
753 inline VkVideoEncodeH264QpEXT makeVideoEncodeH264QpEXT (int32_t qpI, int32_t qpP, int32_t qpB)
754 {
755         VkVideoEncodeH264QpEXT res;
756         res.qpI = qpI;
757         res.qpP = qpP;
758         res.qpB = qpB;
759         return res;
760 }
761
762 inline VkVideoEncodeH264FrameSizeEXT makeVideoEncodeH264FrameSizeEXT (uint32_t frameISize, uint32_t framePSize, uint32_t frameBSize)
763 {
764         VkVideoEncodeH264FrameSizeEXT res;
765         res.frameISize  = frameISize;
766         res.framePSize  = framePSize;
767         res.frameBSize  = frameBSize;
768         return res;
769 }
770
771 inline StdVideoEncodeH265WeightTableFlags makeStdVideoEncodeH265WeightTableFlags (uint16_t luma_weight_l0_flag, uint16_t chroma_weight_l0_flag, uint16_t luma_weight_l1_flag, uint16_t chroma_weight_l1_flag)
772 {
773         StdVideoEncodeH265WeightTableFlags res;
774         res.luma_weight_l0_flag         = luma_weight_l0_flag;
775         res.chroma_weight_l0_flag       = chroma_weight_l0_flag;
776         res.luma_weight_l1_flag         = luma_weight_l1_flag;
777         res.chroma_weight_l1_flag       = chroma_weight_l1_flag;
778         return res;
779 }
780
781 inline VkVideoEncodeH265QpEXT makeVideoEncodeH265QpEXT (int32_t qpI, int32_t qpP, int32_t qpB)
782 {
783         VkVideoEncodeH265QpEXT res;
784         res.qpI = qpI;
785         res.qpP = qpP;
786         res.qpB = qpB;
787         return res;
788 }
789
790 inline VkVideoEncodeH265FrameSizeEXT makeVideoEncodeH265FrameSizeEXT (uint32_t frameISize, uint32_t framePSize, uint32_t frameBSize)
791 {
792         VkVideoEncodeH265FrameSizeEXT res;
793         res.frameISize  = frameISize;
794         res.framePSize  = framePSize;
795         res.frameBSize  = frameBSize;
796         return res;
797 }
798
799 inline StdVideoDecodeH264Mvc makeStdVideoDecodeH264Mvc (uint32_t viewId0, uint32_t mvcElementCount, const StdVideoDecodeH264MvcElement* pMvcElements)
800 {
801         StdVideoDecodeH264Mvc res;
802         res.viewId0                     = viewId0;
803         res.mvcElementCount     = mvcElementCount;
804         res.pMvcElements        = pMvcElements;
805         return res;
806 }