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