Kaynağa Gözat

add vulkan vulkan_beta.h bindings

Reio Piller 5 ay önce
ebeveyn
işleme
81a71cc314

+ 1 - 0
vendor/vulkan/_gen/create_vulkan_odin_wrapper.py

@@ -18,6 +18,7 @@ file_and_urls = [
     ("vulkan_wayland.h", 'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vulkan_wayland.h', False),
     ("vulkan_xlib.h",    'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vulkan_xlib.h',    False),
     ("vulkan_xcb.h",     'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vulkan_xcb.h',     False),
+    ("vulkan_beta.h",    'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vulkan/vulkan_beta.h',    False),
     # Vulkan Video
     ("vulkan_video_codec_av1std.h",         'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vk_video/vulkan_video_codec_av1std.h', False),
     ("vulkan_video_codec_av1std_decode.h",  'https://raw.githubusercontent.com/KhronosGroup/Vulkan-Headers/main/include/vk_video/vulkan_video_codec_av1std_decode.h', False),

+ 226 - 0
vendor/vulkan/_gen/vulkan_beta.h

@@ -0,0 +1,226 @@
+#ifndef VULKAN_BETA_H_
+#define VULKAN_BETA_H_ 1
+
+/*
+** Copyright 2015-2025 The Khronos Group Inc.
+**
+** SPDX-License-Identifier: Apache-2.0
+*/
+
+/*
+** This header is generated from the Khronos Vulkan XML API Registry.
+**
+*/
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+// VK_KHR_portability_subset is a preprocessor guard. Do not pass it to API calls.
+#define VK_KHR_portability_subset 1
+#define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1
+#define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset"
+typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           constantAlphaColorBlendFactors;
+    VkBool32           events;
+    VkBool32           imageViewFormatReinterpretation;
+    VkBool32           imageViewFormatSwizzle;
+    VkBool32           imageView2DOn3DImage;
+    VkBool32           multisampleArrayImage;
+    VkBool32           mutableComparisonSamplers;
+    VkBool32           pointPolygons;
+    VkBool32           samplerMipLodBias;
+    VkBool32           separateStencilMaskRef;
+    VkBool32           shaderSampleRateInterpolationFunctions;
+    VkBool32           tessellationIsolines;
+    VkBool32           tessellationPointMode;
+    VkBool32           triangleFans;
+    VkBool32           vertexAttributeAccessBeyondStride;
+} VkPhysicalDevicePortabilitySubsetFeaturesKHR;
+
+typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    uint32_t           minVertexInputBindingStrideAlignment;
+} VkPhysicalDevicePortabilitySubsetPropertiesKHR;
+
+
+
+// VK_AMDX_shader_enqueue is a preprocessor guard. Do not pass it to API calls.
+#define VK_AMDX_shader_enqueue 1
+#define VK_AMDX_SHADER_ENQUEUE_SPEC_VERSION 2
+#define VK_AMDX_SHADER_ENQUEUE_EXTENSION_NAME "VK_AMDX_shader_enqueue"
+#define VK_SHADER_INDEX_UNUSED_AMDX       (~0U)
+typedef struct VkPhysicalDeviceShaderEnqueueFeaturesAMDX {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           shaderEnqueue;
+    VkBool32           shaderMeshEnqueue;
+} VkPhysicalDeviceShaderEnqueueFeaturesAMDX;
+
+typedef struct VkPhysicalDeviceShaderEnqueuePropertiesAMDX {
+    VkStructureType    sType;
+    void*              pNext;
+    uint32_t           maxExecutionGraphDepth;
+    uint32_t           maxExecutionGraphShaderOutputNodes;
+    uint32_t           maxExecutionGraphShaderPayloadSize;
+    uint32_t           maxExecutionGraphShaderPayloadCount;
+    uint32_t           executionGraphDispatchAddressAlignment;
+    uint32_t           maxExecutionGraphWorkgroupCount[3];
+    uint32_t           maxExecutionGraphWorkgroups;
+} VkPhysicalDeviceShaderEnqueuePropertiesAMDX;
+
+typedef struct VkExecutionGraphPipelineScratchSizeAMDX {
+    VkStructureType    sType;
+    void*              pNext;
+    VkDeviceSize       minSize;
+    VkDeviceSize       maxSize;
+    VkDeviceSize       sizeGranularity;
+} VkExecutionGraphPipelineScratchSizeAMDX;
+
+typedef struct VkExecutionGraphPipelineCreateInfoAMDX {
+    VkStructureType                           sType;
+    const void*                               pNext;
+    VkPipelineCreateFlags                     flags;
+    uint32_t                                  stageCount;
+    const VkPipelineShaderStageCreateInfo*    pStages;
+    const VkPipelineLibraryCreateInfoKHR*     pLibraryInfo;
+    VkPipelineLayout                          layout;
+    VkPipeline                                basePipelineHandle;
+    int32_t                                   basePipelineIndex;
+} VkExecutionGraphPipelineCreateInfoAMDX;
+
+typedef union VkDeviceOrHostAddressConstAMDX {
+    VkDeviceAddress    deviceAddress;
+    const void*        hostAddress;
+} VkDeviceOrHostAddressConstAMDX;
+
+typedef struct VkDispatchGraphInfoAMDX {
+    uint32_t                          nodeIndex;
+    uint32_t                          payloadCount;
+    VkDeviceOrHostAddressConstAMDX    payloads;
+    uint64_t                          payloadStride;
+} VkDispatchGraphInfoAMDX;
+
+typedef struct VkDispatchGraphCountInfoAMDX {
+    uint32_t                          count;
+    VkDeviceOrHostAddressConstAMDX    infos;
+    uint64_t                          stride;
+} VkDispatchGraphCountInfoAMDX;
+
+typedef struct VkPipelineShaderStageNodeCreateInfoAMDX {
+      VkStructureType    sType;
+    const void*          pNext;
+    const char*          pName;
+    uint32_t             index;
+} VkPipelineShaderStageNodeCreateInfoAMDX;
+
+typedef VkResult (VKAPI_PTR *PFN_vkCreateExecutionGraphPipelinesAMDX)(VkDevice                                        device, VkPipelineCache                 pipelineCache, uint32_t                                        createInfoCount, const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos, const VkAllocationCallbacks*    pAllocator, VkPipeline*               pPipelines);
+typedef VkResult (VKAPI_PTR *PFN_vkGetExecutionGraphPipelineScratchSizeAMDX)(VkDevice                                        device, VkPipeline                                      executionGraph, VkExecutionGraphPipelineScratchSizeAMDX*        pSizeInfo);
+typedef VkResult (VKAPI_PTR *PFN_vkGetExecutionGraphPipelineNodeIndexAMDX)(VkDevice                                        device, VkPipeline                                      executionGraph, const VkPipelineShaderStageNodeCreateInfoAMDX*  pNodeInfo, uint32_t*                                       pNodeIndex);
+typedef void (VKAPI_PTR *PFN_vkCmdInitializeGraphScratchMemoryAMDX)(VkCommandBuffer                                 commandBuffer, VkPipeline                                      executionGraph, VkDeviceAddress                                 scratch, VkDeviceSize                                    scratchSize);
+typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphAMDX)(VkCommandBuffer                                 commandBuffer, VkDeviceAddress                                 scratch, VkDeviceSize                                    scratchSize, const VkDispatchGraphCountInfoAMDX*             pCountInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectAMDX)(VkCommandBuffer                                 commandBuffer, VkDeviceAddress                                 scratch, VkDeviceSize                                    scratchSize, const VkDispatchGraphCountInfoAMDX*             pCountInfo);
+typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectCountAMDX)(VkCommandBuffer                                 commandBuffer, VkDeviceAddress                                 scratch, VkDeviceSize                                    scratchSize, VkDeviceAddress                                 countInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkCreateExecutionGraphPipelinesAMDX(
+    VkDevice                                    device,
+    VkPipelineCache                             pipelineCache,
+    uint32_t                                    createInfoCount,
+    const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos,
+    const VkAllocationCallbacks*                pAllocator,
+    VkPipeline*                                 pPipelines);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetExecutionGraphPipelineScratchSizeAMDX(
+    VkDevice                                    device,
+    VkPipeline                                  executionGraph,
+    VkExecutionGraphPipelineScratchSizeAMDX*    pSizeInfo);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkGetExecutionGraphPipelineNodeIndexAMDX(
+    VkDevice                                    device,
+    VkPipeline                                  executionGraph,
+    const VkPipelineShaderStageNodeCreateInfoAMDX* pNodeInfo,
+    uint32_t*                                   pNodeIndex);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdInitializeGraphScratchMemoryAMDX(
+    VkCommandBuffer                             commandBuffer,
+    VkPipeline                                  executionGraph,
+    VkDeviceAddress                             scratch,
+    VkDeviceSize                                scratchSize);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphAMDX(
+    VkCommandBuffer                             commandBuffer,
+    VkDeviceAddress                             scratch,
+    VkDeviceSize                                scratchSize,
+    const VkDispatchGraphCountInfoAMDX*         pCountInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphIndirectAMDX(
+    VkCommandBuffer                             commandBuffer,
+    VkDeviceAddress                             scratch,
+    VkDeviceSize                                scratchSize,
+    const VkDispatchGraphCountInfoAMDX*         pCountInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphIndirectCountAMDX(
+    VkCommandBuffer                             commandBuffer,
+    VkDeviceAddress                             scratch,
+    VkDeviceSize                                scratchSize,
+    VkDeviceAddress                             countInfo);
+#endif
+
+
+// VK_NV_displacement_micromap is a preprocessor guard. Do not pass it to API calls.
+#define VK_NV_displacement_micromap 1
+#define VK_NV_DISPLACEMENT_MICROMAP_SPEC_VERSION 2
+#define VK_NV_DISPLACEMENT_MICROMAP_EXTENSION_NAME "VK_NV_displacement_micromap"
+
+typedef enum VkDisplacementMicromapFormatNV {
+    VK_DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV = 1,
+    VK_DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV = 2,
+    VK_DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV = 3,
+    VK_DISPLACEMENT_MICROMAP_FORMAT_MAX_ENUM_NV = 0x7FFFFFFF
+} VkDisplacementMicromapFormatNV;
+typedef struct VkPhysicalDeviceDisplacementMicromapFeaturesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           displacementMicromap;
+} VkPhysicalDeviceDisplacementMicromapFeaturesNV;
+
+typedef struct VkPhysicalDeviceDisplacementMicromapPropertiesNV {
+    VkStructureType    sType;
+    void*              pNext;
+    uint32_t           maxDisplacementMicromapSubdivisionLevel;
+} VkPhysicalDeviceDisplacementMicromapPropertiesNV;
+
+typedef struct VkAccelerationStructureTrianglesDisplacementMicromapNV {
+    VkStructureType                     sType;
+    void*                               pNext;
+    VkFormat                            displacementBiasAndScaleFormat;
+    VkFormat                            displacementVectorFormat;
+    VkDeviceOrHostAddressConstKHR       displacementBiasAndScaleBuffer;
+    VkDeviceSize                        displacementBiasAndScaleStride;
+    VkDeviceOrHostAddressConstKHR       displacementVectorBuffer;
+    VkDeviceSize                        displacementVectorStride;
+    VkDeviceOrHostAddressConstKHR       displacedMicromapPrimitiveFlags;
+    VkDeviceSize                        displacedMicromapPrimitiveFlagsStride;
+    VkIndexType                         indexType;
+    VkDeviceOrHostAddressConstKHR       indexBuffer;
+    VkDeviceSize                        indexStride;
+    uint32_t                            baseTriangle;
+    uint32_t                            usageCountsCount;
+    const VkMicromapUsageEXT*           pUsageCounts;
+    const VkMicromapUsageEXT* const*    ppUsageCounts;
+    VkMicromapEXT                       micromap;
+} VkAccelerationStructureTrianglesDisplacementMicromapNV;
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif

+ 9 - 0
vendor/vulkan/core.odin

@@ -1194,6 +1194,15 @@ KHR_XLIB_SURFACE_EXTENSION_NAME                           :: "VK_KHR_xlib_surfac
 KHR_xcb_surface                                           :: 1
 KHR_XCB_SURFACE_SPEC_VERSION                              :: 6
 KHR_XCB_SURFACE_EXTENSION_NAME                            :: "VK_KHR_xcb_surface"
+KHR_portability_subset                                    :: 1
+KHR_PORTABILITY_SUBSET_SPEC_VERSION                       :: 1
+KHR_PORTABILITY_SUBSET_EXTENSION_NAME                     :: "VK_KHR_portability_subset"
+AMDX_shader_enqueue                                       :: 1
+AMDX_SHADER_ENQUEUE_SPEC_VERSION                          :: 2
+AMDX_SHADER_ENQUEUE_EXTENSION_NAME                        :: "VK_AMDX_shader_enqueue"
+NV_displacement_micromap                                  :: 1
+NV_DISPLACEMENT_MICROMAP_SPEC_VERSION                     :: 2
+NV_DISPLACEMENT_MICROMAP_EXTENSION_NAME                   :: "VK_NV_displacement_micromap"
 
 // Handles types
 Instance       :: distinct Handle

+ 6 - 0
vendor/vulkan/enums.odin

@@ -768,6 +768,12 @@ DiscardRectangleModeEXT :: enum c.int {
 	EXCLUSIVE = 1,
 }
 
+DisplacementMicromapFormatNV :: enum c.int {
+	_64_TRIANGLES_64_BYTES    = 1,
+	_256_TRIANGLES_128_BYTES  = 2,
+	_1024_TRIANGLES_128_BYTES = 3,
+}
+
 DisplayEventTypeEXT :: enum c.int {
 	FIRST_PIXEL_OUT = 0,
 }

+ 49 - 0
vendor/vulkan/procedures.odin

@@ -220,6 +220,9 @@ ProcCmdDecompressMemoryNV                                  :: #type proc "system
 ProcCmdDispatch                                            :: #type proc "system" (commandBuffer: CommandBuffer, groupCountX: u32, groupCountY: u32, groupCountZ: u32)
 ProcCmdDispatchBase                                        :: #type proc "system" (commandBuffer: CommandBuffer, baseGroupX: u32, baseGroupY: u32, baseGroupZ: u32, groupCountX: u32, groupCountY: u32, groupCountZ: u32)
 ProcCmdDispatchBaseKHR                                     :: #type proc "system" (commandBuffer: CommandBuffer, baseGroupX: u32, baseGroupY: u32, baseGroupZ: u32, groupCountX: u32, groupCountY: u32, groupCountZ: u32)
+ProcCmdDispatchGraphAMDX                                   :: #type proc "system" (commandBuffer: CommandBuffer, scratch: DeviceAddress, scratchSize: DeviceSize, pCountInfo: ^DispatchGraphCountInfoAMDX)
+ProcCmdDispatchGraphIndirectAMDX                           :: #type proc "system" (commandBuffer: CommandBuffer, scratch: DeviceAddress, scratchSize: DeviceSize, pCountInfo: ^DispatchGraphCountInfoAMDX)
+ProcCmdDispatchGraphIndirectCountAMDX                      :: #type proc "system" (commandBuffer: CommandBuffer, scratch: DeviceAddress, scratchSize: DeviceSize, countInfo: DeviceAddress)
 ProcCmdDispatchIndirect                                    :: #type proc "system" (commandBuffer: CommandBuffer, buffer: Buffer, offset: DeviceSize)
 ProcCmdDraw                                                :: #type proc "system" (commandBuffer: CommandBuffer, vertexCount: u32, instanceCount: u32, firstVertex: u32, firstInstance: u32)
 ProcCmdDrawClusterHUAWEI                                   :: #type proc "system" (commandBuffer: CommandBuffer, groupCountX: u32, groupCountY: u32, groupCountZ: u32)
@@ -258,6 +261,7 @@ ProcCmdExecuteCommands                                     :: #type proc "system
 ProcCmdExecuteGeneratedCommandsEXT                         :: #type proc "system" (commandBuffer: CommandBuffer, isPreprocessed: b32, pGeneratedCommandsInfo: ^GeneratedCommandsInfoEXT)
 ProcCmdExecuteGeneratedCommandsNV                          :: #type proc "system" (commandBuffer: CommandBuffer, isPreprocessed: b32, pGeneratedCommandsInfo: ^GeneratedCommandsInfoNV)
 ProcCmdFillBuffer                                          :: #type proc "system" (commandBuffer: CommandBuffer, dstBuffer: Buffer, dstOffset: DeviceSize, size: DeviceSize, data: u32)
+ProcCmdInitializeGraphScratchMemoryAMDX                    :: #type proc "system" (commandBuffer: CommandBuffer, executionGraph: Pipeline, scratch: DeviceAddress, scratchSize: DeviceSize)
 ProcCmdInsertDebugUtilsLabelEXT                            :: #type proc "system" (commandBuffer: CommandBuffer, pLabelInfo: ^DebugUtilsLabelEXT)
 ProcCmdNextSubpass                                         :: #type proc "system" (commandBuffer: CommandBuffer, contents: SubpassContents)
 ProcCmdNextSubpass2                                        :: #type proc "system" (commandBuffer: CommandBuffer, pSubpassBeginInfo: ^SubpassBeginInfo, pSubpassEndInfo: ^SubpassEndInfo)
@@ -438,6 +442,7 @@ ProcCreateDescriptorSetLayout                              :: #type proc "system
 ProcCreateDescriptorUpdateTemplate                         :: #type proc "system" (device: Device, pCreateInfo: ^DescriptorUpdateTemplateCreateInfo, pAllocator: ^AllocationCallbacks, pDescriptorUpdateTemplate: ^DescriptorUpdateTemplate) -> Result
 ProcCreateDescriptorUpdateTemplateKHR                      :: #type proc "system" (device: Device, pCreateInfo: ^DescriptorUpdateTemplateCreateInfo, pAllocator: ^AllocationCallbacks, pDescriptorUpdateTemplate: ^DescriptorUpdateTemplate) -> Result
 ProcCreateEvent                                            :: #type proc "system" (device: Device, pCreateInfo: ^EventCreateInfo, pAllocator: ^AllocationCallbacks, pEvent: ^Event) -> Result
+ProcCreateExecutionGraphPipelinesAMDX                      :: #type proc "system" (device: Device, pipelineCache: PipelineCache, createInfoCount: u32, pCreateInfos: [^]ExecutionGraphPipelineCreateInfoAMDX, pAllocator: ^AllocationCallbacks, pPipelines: [^]Pipeline) -> Result
 ProcCreateFence                                            :: #type proc "system" (device: Device, pCreateInfo: ^FenceCreateInfo, pAllocator: ^AllocationCallbacks, pFence: ^Fence) -> Result
 ProcCreateFramebuffer                                      :: #type proc "system" (device: Device, pCreateInfo: ^FramebufferCreateInfo, pAllocator: ^AllocationCallbacks, pFramebuffer: ^Framebuffer) -> Result
 ProcCreateGraphicsPipelines                                :: #type proc "system" (device: Device, pipelineCache: PipelineCache, createInfoCount: u32, pCreateInfos: [^]GraphicsPipelineCreateInfo, pAllocator: ^AllocationCallbacks, pPipelines: [^]Pipeline) -> Result
@@ -577,6 +582,8 @@ ProcGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI          :: #type proc "system
 ProcGetDynamicRenderingTilePropertiesQCOM                  :: #type proc "system" (device: Device, pRenderingInfo: ^RenderingInfo, pProperties: [^]TilePropertiesQCOM) -> Result
 ProcGetEncodedVideoSessionParametersKHR                    :: #type proc "system" (device: Device, pVideoSessionParametersInfo: ^VideoEncodeSessionParametersGetInfoKHR, pFeedbackInfo: ^VideoEncodeSessionParametersFeedbackInfoKHR, pDataSize: ^int, pData: rawptr) -> Result
 ProcGetEventStatus                                         :: #type proc "system" (device: Device, event: Event) -> Result
+ProcGetExecutionGraphPipelineNodeIndexAMDX                 :: #type proc "system" (device: Device, executionGraph: Pipeline, pNodeInfo: ^PipelineShaderStageNodeCreateInfoAMDX, pNodeIndex: ^u32) -> Result
+ProcGetExecutionGraphPipelineScratchSizeAMDX               :: #type proc "system" (device: Device, executionGraph: Pipeline, pSizeInfo: ^ExecutionGraphPipelineScratchSizeAMDX) -> Result
 ProcGetFenceFdKHR                                          :: #type proc "system" (device: Device, pGetFdInfo: ^FenceGetFdInfoKHR, pFd: ^c.int) -> Result
 ProcGetFenceStatus                                         :: #type proc "system" (device: Device, fence: Fence) -> Result
 ProcGetFenceWin32HandleKHR                                 :: #type proc "system" (device: Device, pGetWin32HandleInfo: ^FenceGetWin32HandleInfoKHR, pHandle: ^HANDLE) -> Result
@@ -926,6 +933,9 @@ CmdDecompressMemoryNV:                                  ProcCmdDecompressMemoryN
 CmdDispatch:                                            ProcCmdDispatch
 CmdDispatchBase:                                        ProcCmdDispatchBase
 CmdDispatchBaseKHR:                                     ProcCmdDispatchBaseKHR
+CmdDispatchGraphAMDX:                                   ProcCmdDispatchGraphAMDX
+CmdDispatchGraphIndirectAMDX:                           ProcCmdDispatchGraphIndirectAMDX
+CmdDispatchGraphIndirectCountAMDX:                      ProcCmdDispatchGraphIndirectCountAMDX
 CmdDispatchIndirect:                                    ProcCmdDispatchIndirect
 CmdDraw:                                                ProcCmdDraw
 CmdDrawClusterHUAWEI:                                   ProcCmdDrawClusterHUAWEI
@@ -964,6 +974,7 @@ CmdExecuteCommands:                                     ProcCmdExecuteCommands
 CmdExecuteGeneratedCommandsEXT:                         ProcCmdExecuteGeneratedCommandsEXT
 CmdExecuteGeneratedCommandsNV:                          ProcCmdExecuteGeneratedCommandsNV
 CmdFillBuffer:                                          ProcCmdFillBuffer
+CmdInitializeGraphScratchMemoryAMDX:                    ProcCmdInitializeGraphScratchMemoryAMDX
 CmdInsertDebugUtilsLabelEXT:                            ProcCmdInsertDebugUtilsLabelEXT
 CmdNextSubpass:                                         ProcCmdNextSubpass
 CmdNextSubpass2:                                        ProcCmdNextSubpass2
@@ -1144,6 +1155,7 @@ CreateDescriptorSetLayout:                              ProcCreateDescriptorSetL
 CreateDescriptorUpdateTemplate:                         ProcCreateDescriptorUpdateTemplate
 CreateDescriptorUpdateTemplateKHR:                      ProcCreateDescriptorUpdateTemplateKHR
 CreateEvent:                                            ProcCreateEvent
+CreateExecutionGraphPipelinesAMDX:                      ProcCreateExecutionGraphPipelinesAMDX
 CreateFence:                                            ProcCreateFence
 CreateFramebuffer:                                      ProcCreateFramebuffer
 CreateGraphicsPipelines:                                ProcCreateGraphicsPipelines
@@ -1283,6 +1295,8 @@ GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI:          ProcGetDeviceSubpassShad
 GetDynamicRenderingTilePropertiesQCOM:                  ProcGetDynamicRenderingTilePropertiesQCOM
 GetEncodedVideoSessionParametersKHR:                    ProcGetEncodedVideoSessionParametersKHR
 GetEventStatus:                                         ProcGetEventStatus
+GetExecutionGraphPipelineNodeIndexAMDX:                 ProcGetExecutionGraphPipelineNodeIndexAMDX
+GetExecutionGraphPipelineScratchSizeAMDX:               ProcGetExecutionGraphPipelineScratchSizeAMDX
 GetFenceFdKHR:                                          ProcGetFenceFdKHR
 GetFenceStatus:                                         ProcGetFenceStatus
 GetFenceWin32HandleKHR:                                 ProcGetFenceWin32HandleKHR
@@ -1632,6 +1646,9 @@ load_proc_addresses_custom :: proc(set_proc_address: SetProcAddressType) {
 	set_proc_address(&CmdDispatch,                                            "vkCmdDispatch")
 	set_proc_address(&CmdDispatchBase,                                        "vkCmdDispatchBase")
 	set_proc_address(&CmdDispatchBaseKHR,                                     "vkCmdDispatchBaseKHR")
+	set_proc_address(&CmdDispatchGraphAMDX,                                   "vkCmdDispatchGraphAMDX")
+	set_proc_address(&CmdDispatchGraphIndirectAMDX,                           "vkCmdDispatchGraphIndirectAMDX")
+	set_proc_address(&CmdDispatchGraphIndirectCountAMDX,                      "vkCmdDispatchGraphIndirectCountAMDX")
 	set_proc_address(&CmdDispatchIndirect,                                    "vkCmdDispatchIndirect")
 	set_proc_address(&CmdDraw,                                                "vkCmdDraw")
 	set_proc_address(&CmdDrawClusterHUAWEI,                                   "vkCmdDrawClusterHUAWEI")
@@ -1670,6 +1687,7 @@ load_proc_addresses_custom :: proc(set_proc_address: SetProcAddressType) {
 	set_proc_address(&CmdExecuteGeneratedCommandsEXT,                         "vkCmdExecuteGeneratedCommandsEXT")
 	set_proc_address(&CmdExecuteGeneratedCommandsNV,                          "vkCmdExecuteGeneratedCommandsNV")
 	set_proc_address(&CmdFillBuffer,                                          "vkCmdFillBuffer")
+	set_proc_address(&CmdInitializeGraphScratchMemoryAMDX,                    "vkCmdInitializeGraphScratchMemoryAMDX")
 	set_proc_address(&CmdInsertDebugUtilsLabelEXT,                            "vkCmdInsertDebugUtilsLabelEXT")
 	set_proc_address(&CmdNextSubpass,                                         "vkCmdNextSubpass")
 	set_proc_address(&CmdNextSubpass2,                                        "vkCmdNextSubpass2")
@@ -1850,6 +1868,7 @@ load_proc_addresses_custom :: proc(set_proc_address: SetProcAddressType) {
 	set_proc_address(&CreateDescriptorUpdateTemplate,                         "vkCreateDescriptorUpdateTemplate")
 	set_proc_address(&CreateDescriptorUpdateTemplateKHR,                      "vkCreateDescriptorUpdateTemplateKHR")
 	set_proc_address(&CreateEvent,                                            "vkCreateEvent")
+	set_proc_address(&CreateExecutionGraphPipelinesAMDX,                      "vkCreateExecutionGraphPipelinesAMDX")
 	set_proc_address(&CreateFence,                                            "vkCreateFence")
 	set_proc_address(&CreateFramebuffer,                                      "vkCreateFramebuffer")
 	set_proc_address(&CreateGraphicsPipelines,                                "vkCreateGraphicsPipelines")
@@ -1989,6 +2008,8 @@ load_proc_addresses_custom :: proc(set_proc_address: SetProcAddressType) {
 	set_proc_address(&GetDynamicRenderingTilePropertiesQCOM,                  "vkGetDynamicRenderingTilePropertiesQCOM")
 	set_proc_address(&GetEncodedVideoSessionParametersKHR,                    "vkGetEncodedVideoSessionParametersKHR")
 	set_proc_address(&GetEventStatus,                                         "vkGetEventStatus")
+	set_proc_address(&GetExecutionGraphPipelineNodeIndexAMDX,                 "vkGetExecutionGraphPipelineNodeIndexAMDX")
+	set_proc_address(&GetExecutionGraphPipelineScratchSizeAMDX,               "vkGetExecutionGraphPipelineScratchSizeAMDX")
 	set_proc_address(&GetFenceFdKHR,                                          "vkGetFenceFdKHR")
 	set_proc_address(&GetFenceStatus,                                         "vkGetFenceStatus")
 	set_proc_address(&GetFenceWin32HandleKHR,                                 "vkGetFenceWin32HandleKHR")
@@ -2232,6 +2253,9 @@ Device_VTable :: struct {
 	CmdDispatch:                                            ProcCmdDispatch,
 	CmdDispatchBase:                                        ProcCmdDispatchBase,
 	CmdDispatchBaseKHR:                                     ProcCmdDispatchBaseKHR,
+	CmdDispatchGraphAMDX:                                   ProcCmdDispatchGraphAMDX,
+	CmdDispatchGraphIndirectAMDX:                           ProcCmdDispatchGraphIndirectAMDX,
+	CmdDispatchGraphIndirectCountAMDX:                      ProcCmdDispatchGraphIndirectCountAMDX,
 	CmdDispatchIndirect:                                    ProcCmdDispatchIndirect,
 	CmdDraw:                                                ProcCmdDraw,
 	CmdDrawClusterHUAWEI:                                   ProcCmdDrawClusterHUAWEI,
@@ -2270,6 +2294,7 @@ Device_VTable :: struct {
 	CmdExecuteGeneratedCommandsEXT:                         ProcCmdExecuteGeneratedCommandsEXT,
 	CmdExecuteGeneratedCommandsNV:                          ProcCmdExecuteGeneratedCommandsNV,
 	CmdFillBuffer:                                          ProcCmdFillBuffer,
+	CmdInitializeGraphScratchMemoryAMDX:                    ProcCmdInitializeGraphScratchMemoryAMDX,
 	CmdInsertDebugUtilsLabelEXT:                            ProcCmdInsertDebugUtilsLabelEXT,
 	CmdNextSubpass:                                         ProcCmdNextSubpass,
 	CmdNextSubpass2:                                        ProcCmdNextSubpass2,
@@ -2450,6 +2475,7 @@ Device_VTable :: struct {
 	CreateDescriptorUpdateTemplate:                         ProcCreateDescriptorUpdateTemplate,
 	CreateDescriptorUpdateTemplateKHR:                      ProcCreateDescriptorUpdateTemplateKHR,
 	CreateEvent:                                            ProcCreateEvent,
+	CreateExecutionGraphPipelinesAMDX:                      ProcCreateExecutionGraphPipelinesAMDX,
 	CreateFence:                                            ProcCreateFence,
 	CreateFramebuffer:                                      ProcCreateFramebuffer,
 	CreateGraphicsPipelines:                                ProcCreateGraphicsPipelines,
@@ -2589,6 +2615,8 @@ Device_VTable :: struct {
 	GetDynamicRenderingTilePropertiesQCOM:                  ProcGetDynamicRenderingTilePropertiesQCOM,
 	GetEncodedVideoSessionParametersKHR:                    ProcGetEncodedVideoSessionParametersKHR,
 	GetEventStatus:                                         ProcGetEventStatus,
+	GetExecutionGraphPipelineNodeIndexAMDX:                 ProcGetExecutionGraphPipelineNodeIndexAMDX,
+	GetExecutionGraphPipelineScratchSizeAMDX:               ProcGetExecutionGraphPipelineScratchSizeAMDX,
 	GetFenceFdKHR:                                          ProcGetFenceFdKHR,
 	GetFenceStatus:                                         ProcGetFenceStatus,
 	GetFenceWin32HandleKHR:                                 ProcGetFenceWin32HandleKHR,
@@ -2830,6 +2858,9 @@ load_proc_addresses_device_vtable :: proc(device: Device, vtable: ^Device_VTable
 	vtable.CmdDispatch                                            = auto_cast GetDeviceProcAddr(device, "vkCmdDispatch")
 	vtable.CmdDispatchBase                                        = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchBase")
 	vtable.CmdDispatchBaseKHR                                     = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchBaseKHR")
+	vtable.CmdDispatchGraphAMDX                                   = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchGraphAMDX")
+	vtable.CmdDispatchGraphIndirectAMDX                           = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchGraphIndirectAMDX")
+	vtable.CmdDispatchGraphIndirectCountAMDX                      = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchGraphIndirectCountAMDX")
 	vtable.CmdDispatchIndirect                                    = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchIndirect")
 	vtable.CmdDraw                                                = auto_cast GetDeviceProcAddr(device, "vkCmdDraw")
 	vtable.CmdDrawClusterHUAWEI                                   = auto_cast GetDeviceProcAddr(device, "vkCmdDrawClusterHUAWEI")
@@ -2868,6 +2899,7 @@ load_proc_addresses_device_vtable :: proc(device: Device, vtable: ^Device_VTable
 	vtable.CmdExecuteGeneratedCommandsEXT                         = auto_cast GetDeviceProcAddr(device, "vkCmdExecuteGeneratedCommandsEXT")
 	vtable.CmdExecuteGeneratedCommandsNV                          = auto_cast GetDeviceProcAddr(device, "vkCmdExecuteGeneratedCommandsNV")
 	vtable.CmdFillBuffer                                          = auto_cast GetDeviceProcAddr(device, "vkCmdFillBuffer")
+	vtable.CmdInitializeGraphScratchMemoryAMDX                    = auto_cast GetDeviceProcAddr(device, "vkCmdInitializeGraphScratchMemoryAMDX")
 	vtable.CmdInsertDebugUtilsLabelEXT                            = auto_cast GetDeviceProcAddr(device, "vkCmdInsertDebugUtilsLabelEXT")
 	vtable.CmdNextSubpass                                         = auto_cast GetDeviceProcAddr(device, "vkCmdNextSubpass")
 	vtable.CmdNextSubpass2                                        = auto_cast GetDeviceProcAddr(device, "vkCmdNextSubpass2")
@@ -3048,6 +3080,7 @@ load_proc_addresses_device_vtable :: proc(device: Device, vtable: ^Device_VTable
 	vtable.CreateDescriptorUpdateTemplate                         = auto_cast GetDeviceProcAddr(device, "vkCreateDescriptorUpdateTemplate")
 	vtable.CreateDescriptorUpdateTemplateKHR                      = auto_cast GetDeviceProcAddr(device, "vkCreateDescriptorUpdateTemplateKHR")
 	vtable.CreateEvent                                            = auto_cast GetDeviceProcAddr(device, "vkCreateEvent")
+	vtable.CreateExecutionGraphPipelinesAMDX                      = auto_cast GetDeviceProcAddr(device, "vkCreateExecutionGraphPipelinesAMDX")
 	vtable.CreateFence                                            = auto_cast GetDeviceProcAddr(device, "vkCreateFence")
 	vtable.CreateFramebuffer                                      = auto_cast GetDeviceProcAddr(device, "vkCreateFramebuffer")
 	vtable.CreateGraphicsPipelines                                = auto_cast GetDeviceProcAddr(device, "vkCreateGraphicsPipelines")
@@ -3187,6 +3220,8 @@ load_proc_addresses_device_vtable :: proc(device: Device, vtable: ^Device_VTable
 	vtable.GetDynamicRenderingTilePropertiesQCOM                  = auto_cast GetDeviceProcAddr(device, "vkGetDynamicRenderingTilePropertiesQCOM")
 	vtable.GetEncodedVideoSessionParametersKHR                    = auto_cast GetDeviceProcAddr(device, "vkGetEncodedVideoSessionParametersKHR")
 	vtable.GetEventStatus                                         = auto_cast GetDeviceProcAddr(device, "vkGetEventStatus")
+	vtable.GetExecutionGraphPipelineNodeIndexAMDX                 = auto_cast GetDeviceProcAddr(device, "vkGetExecutionGraphPipelineNodeIndexAMDX")
+	vtable.GetExecutionGraphPipelineScratchSizeAMDX               = auto_cast GetDeviceProcAddr(device, "vkGetExecutionGraphPipelineScratchSizeAMDX")
 	vtable.GetFenceFdKHR                                          = auto_cast GetDeviceProcAddr(device, "vkGetFenceFdKHR")
 	vtable.GetFenceStatus                                         = auto_cast GetDeviceProcAddr(device, "vkGetFenceStatus")
 	vtable.GetFenceWin32HandleKHR                                 = auto_cast GetDeviceProcAddr(device, "vkGetFenceWin32HandleKHR")
@@ -3428,6 +3463,9 @@ load_proc_addresses_device :: proc(device: Device) {
 	CmdDispatch                                            = auto_cast GetDeviceProcAddr(device, "vkCmdDispatch")
 	CmdDispatchBase                                        = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchBase")
 	CmdDispatchBaseKHR                                     = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchBaseKHR")
+	CmdDispatchGraphAMDX                                   = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchGraphAMDX")
+	CmdDispatchGraphIndirectAMDX                           = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchGraphIndirectAMDX")
+	CmdDispatchGraphIndirectCountAMDX                      = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchGraphIndirectCountAMDX")
 	CmdDispatchIndirect                                    = auto_cast GetDeviceProcAddr(device, "vkCmdDispatchIndirect")
 	CmdDraw                                                = auto_cast GetDeviceProcAddr(device, "vkCmdDraw")
 	CmdDrawClusterHUAWEI                                   = auto_cast GetDeviceProcAddr(device, "vkCmdDrawClusterHUAWEI")
@@ -3466,6 +3504,7 @@ load_proc_addresses_device :: proc(device: Device) {
 	CmdExecuteGeneratedCommandsEXT                         = auto_cast GetDeviceProcAddr(device, "vkCmdExecuteGeneratedCommandsEXT")
 	CmdExecuteGeneratedCommandsNV                          = auto_cast GetDeviceProcAddr(device, "vkCmdExecuteGeneratedCommandsNV")
 	CmdFillBuffer                                          = auto_cast GetDeviceProcAddr(device, "vkCmdFillBuffer")
+	CmdInitializeGraphScratchMemoryAMDX                    = auto_cast GetDeviceProcAddr(device, "vkCmdInitializeGraphScratchMemoryAMDX")
 	CmdInsertDebugUtilsLabelEXT                            = auto_cast GetDeviceProcAddr(device, "vkCmdInsertDebugUtilsLabelEXT")
 	CmdNextSubpass                                         = auto_cast GetDeviceProcAddr(device, "vkCmdNextSubpass")
 	CmdNextSubpass2                                        = auto_cast GetDeviceProcAddr(device, "vkCmdNextSubpass2")
@@ -3646,6 +3685,7 @@ load_proc_addresses_device :: proc(device: Device) {
 	CreateDescriptorUpdateTemplate                         = auto_cast GetDeviceProcAddr(device, "vkCreateDescriptorUpdateTemplate")
 	CreateDescriptorUpdateTemplateKHR                      = auto_cast GetDeviceProcAddr(device, "vkCreateDescriptorUpdateTemplateKHR")
 	CreateEvent                                            = auto_cast GetDeviceProcAddr(device, "vkCreateEvent")
+	CreateExecutionGraphPipelinesAMDX                      = auto_cast GetDeviceProcAddr(device, "vkCreateExecutionGraphPipelinesAMDX")
 	CreateFence                                            = auto_cast GetDeviceProcAddr(device, "vkCreateFence")
 	CreateFramebuffer                                      = auto_cast GetDeviceProcAddr(device, "vkCreateFramebuffer")
 	CreateGraphicsPipelines                                = auto_cast GetDeviceProcAddr(device, "vkCreateGraphicsPipelines")
@@ -3785,6 +3825,8 @@ load_proc_addresses_device :: proc(device: Device) {
 	GetDynamicRenderingTilePropertiesQCOM                  = auto_cast GetDeviceProcAddr(device, "vkGetDynamicRenderingTilePropertiesQCOM")
 	GetEncodedVideoSessionParametersKHR                    = auto_cast GetDeviceProcAddr(device, "vkGetEncodedVideoSessionParametersKHR")
 	GetEventStatus                                         = auto_cast GetDeviceProcAddr(device, "vkGetEventStatus")
+	GetExecutionGraphPipelineNodeIndexAMDX                 = auto_cast GetDeviceProcAddr(device, "vkGetExecutionGraphPipelineNodeIndexAMDX")
+	GetExecutionGraphPipelineScratchSizeAMDX               = auto_cast GetDeviceProcAddr(device, "vkGetExecutionGraphPipelineScratchSizeAMDX")
 	GetFenceFdKHR                                          = auto_cast GetDeviceProcAddr(device, "vkGetFenceFdKHR")
 	GetFenceStatus                                         = auto_cast GetDeviceProcAddr(device, "vkGetFenceStatus")
 	GetFenceWin32HandleKHR                                 = auto_cast GetDeviceProcAddr(device, "vkGetFenceWin32HandleKHR")
@@ -4125,6 +4167,9 @@ load_proc_addresses_instance :: proc(instance: Instance) {
 	CmdDispatch                                            = auto_cast GetInstanceProcAddr(instance, "vkCmdDispatch")
 	CmdDispatchBase                                        = auto_cast GetInstanceProcAddr(instance, "vkCmdDispatchBase")
 	CmdDispatchBaseKHR                                     = auto_cast GetInstanceProcAddr(instance, "vkCmdDispatchBaseKHR")
+	CmdDispatchGraphAMDX                                   = auto_cast GetInstanceProcAddr(instance, "vkCmdDispatchGraphAMDX")
+	CmdDispatchGraphIndirectAMDX                           = auto_cast GetInstanceProcAddr(instance, "vkCmdDispatchGraphIndirectAMDX")
+	CmdDispatchGraphIndirectCountAMDX                      = auto_cast GetInstanceProcAddr(instance, "vkCmdDispatchGraphIndirectCountAMDX")
 	CmdDispatchIndirect                                    = auto_cast GetInstanceProcAddr(instance, "vkCmdDispatchIndirect")
 	CmdDraw                                                = auto_cast GetInstanceProcAddr(instance, "vkCmdDraw")
 	CmdDrawClusterHUAWEI                                   = auto_cast GetInstanceProcAddr(instance, "vkCmdDrawClusterHUAWEI")
@@ -4163,6 +4208,7 @@ load_proc_addresses_instance :: proc(instance: Instance) {
 	CmdExecuteGeneratedCommandsEXT                         = auto_cast GetInstanceProcAddr(instance, "vkCmdExecuteGeneratedCommandsEXT")
 	CmdExecuteGeneratedCommandsNV                          = auto_cast GetInstanceProcAddr(instance, "vkCmdExecuteGeneratedCommandsNV")
 	CmdFillBuffer                                          = auto_cast GetInstanceProcAddr(instance, "vkCmdFillBuffer")
+	CmdInitializeGraphScratchMemoryAMDX                    = auto_cast GetInstanceProcAddr(instance, "vkCmdInitializeGraphScratchMemoryAMDX")
 	CmdInsertDebugUtilsLabelEXT                            = auto_cast GetInstanceProcAddr(instance, "vkCmdInsertDebugUtilsLabelEXT")
 	CmdNextSubpass                                         = auto_cast GetInstanceProcAddr(instance, "vkCmdNextSubpass")
 	CmdNextSubpass2                                        = auto_cast GetInstanceProcAddr(instance, "vkCmdNextSubpass2")
@@ -4343,6 +4389,7 @@ load_proc_addresses_instance :: proc(instance: Instance) {
 	CreateDescriptorUpdateTemplate                         = auto_cast GetInstanceProcAddr(instance, "vkCreateDescriptorUpdateTemplate")
 	CreateDescriptorUpdateTemplateKHR                      = auto_cast GetInstanceProcAddr(instance, "vkCreateDescriptorUpdateTemplateKHR")
 	CreateEvent                                            = auto_cast GetInstanceProcAddr(instance, "vkCreateEvent")
+	CreateExecutionGraphPipelinesAMDX                      = auto_cast GetInstanceProcAddr(instance, "vkCreateExecutionGraphPipelinesAMDX")
 	CreateFence                                            = auto_cast GetInstanceProcAddr(instance, "vkCreateFence")
 	CreateFramebuffer                                      = auto_cast GetInstanceProcAddr(instance, "vkCreateFramebuffer")
 	CreateGraphicsPipelines                                = auto_cast GetInstanceProcAddr(instance, "vkCreateGraphicsPipelines")
@@ -4482,6 +4529,8 @@ load_proc_addresses_instance :: proc(instance: Instance) {
 	GetDynamicRenderingTilePropertiesQCOM                  = auto_cast GetInstanceProcAddr(instance, "vkGetDynamicRenderingTilePropertiesQCOM")
 	GetEncodedVideoSessionParametersKHR                    = auto_cast GetInstanceProcAddr(instance, "vkGetEncodedVideoSessionParametersKHR")
 	GetEventStatus                                         = auto_cast GetInstanceProcAddr(instance, "vkGetEventStatus")
+	GetExecutionGraphPipelineNodeIndexAMDX                 = auto_cast GetInstanceProcAddr(instance, "vkGetExecutionGraphPipelineNodeIndexAMDX")
+	GetExecutionGraphPipelineScratchSizeAMDX               = auto_cast GetInstanceProcAddr(instance, "vkGetExecutionGraphPipelineScratchSizeAMDX")
 	GetFenceFdKHR                                          = auto_cast GetInstanceProcAddr(instance, "vkGetFenceFdKHR")
 	GetFenceStatus                                         = auto_cast GetInstanceProcAddr(instance, "vkGetFenceStatus")
 	GetFenceWin32HandleKHR                                 = auto_cast GetInstanceProcAddr(instance, "vkGetFenceWin32HandleKHR")

+ 123 - 0
vendor/vulkan/structs.odin

@@ -9353,6 +9353,129 @@ XcbSurfaceCreateInfoKHR :: struct {
 	window:     xcb_window_t,
 }
 
+PhysicalDevicePortabilitySubsetFeaturesKHR :: struct {
+	sType:                                  StructureType,
+	pNext:                                  rawptr,
+	constantAlphaColorBlendFactors:         b32,
+	events:                                 b32,
+	imageViewFormatReinterpretation:        b32,
+	imageViewFormatSwizzle:                 b32,
+	imageView2DOn3DImage:                   b32,
+	multisampleArrayImage:                  b32,
+	mutableComparisonSamplers:              b32,
+	pointPolygons:                          b32,
+	samplerMipLodBias:                      b32,
+	separateStencilMaskRef:                 b32,
+	shaderSampleRateInterpolationFunctions: b32,
+	tessellationIsolines:                   b32,
+	tessellationPointMode:                  b32,
+	triangleFans:                           b32,
+	vertexAttributeAccessBeyondStride:      b32,
+}
+
+PhysicalDevicePortabilitySubsetPropertiesKHR :: struct {
+	sType:                                StructureType,
+	pNext:                                rawptr,
+	minVertexInputBindingStrideAlignment: u32,
+}
+
+PhysicalDeviceShaderEnqueueFeaturesAMDX :: struct {
+	sType:             StructureType,
+	pNext:             rawptr,
+	shaderEnqueue:     b32,
+	shaderMeshEnqueue: b32,
+}
+
+PhysicalDeviceShaderEnqueuePropertiesAMDX :: struct {
+	sType:                                  StructureType,
+	pNext:                                  rawptr,
+	maxExecutionGraphDepth:                 u32,
+	maxExecutionGraphShaderOutputNodes:     u32,
+	maxExecutionGraphShaderPayloadSize:     u32,
+	maxExecutionGraphShaderPayloadCount:    u32,
+	executionGraphDispatchAddressAlignment: u32,
+	maxExecutionGraphWorkgroupCount:        [3]u32,
+	maxExecutionGraphWorkgroups:            u32,
+}
+
+ExecutionGraphPipelineScratchSizeAMDX :: struct {
+	sType:           StructureType,
+	pNext:           rawptr,
+	minSize:         DeviceSize,
+	maxSize:         DeviceSize,
+	sizeGranularity: DeviceSize,
+}
+
+ExecutionGraphPipelineCreateInfoAMDX :: struct {
+	sType:              StructureType,
+	pNext:              rawptr,
+	flags:              PipelineCreateFlags,
+	stageCount:         u32,
+	pStages:            [^]PipelineShaderStageCreateInfo,
+	pLibraryInfo:       ^PipelineLibraryCreateInfoKHR,
+	layout:             PipelineLayout,
+	basePipelineHandle: Pipeline,
+	basePipelineIndex:  i32,
+}
+
+DeviceOrHostAddressConstAMDX :: struct #raw_union {
+	deviceAddress: DeviceAddress,
+	hostAddress:   rawptr,
+}
+
+DispatchGraphInfoAMDX :: struct {
+	nodeIndex:     u32,
+	payloadCount:  u32,
+	payloads:      DeviceOrHostAddressConstAMDX,
+	payloadStride: u64,
+}
+
+DispatchGraphCountInfoAMDX :: struct {
+	count:  u32,
+	infos:  DeviceOrHostAddressConstAMDX,
+	stride: u64,
+}
+
+PipelineShaderStageNodeCreateInfoAMDX :: struct {
+	sType: StructureType,
+	pNext: rawptr,
+	pName: cstring,
+	index: u32,
+}
+
+PhysicalDeviceDisplacementMicromapFeaturesNV :: struct {
+	sType:                StructureType,
+	pNext:                rawptr,
+	displacementMicromap: b32,
+}
+
+PhysicalDeviceDisplacementMicromapPropertiesNV :: struct {
+	sType:                                   StructureType,
+	pNext:                                   rawptr,
+	maxDisplacementMicromapSubdivisionLevel: u32,
+}
+
+AccelerationStructureTrianglesDisplacementMicromapNV :: struct {
+	sType:                                 StructureType,
+	pNext:                                 rawptr,
+	displacementBiasAndScaleFormat:        Format,
+	displacementVectorFormat:              Format,
+	displacementBiasAndScaleBuffer:        DeviceOrHostAddressConstKHR,
+	displacementBiasAndScaleStride:        DeviceSize,
+	displacementVectorBuffer:              DeviceOrHostAddressConstKHR,
+	displacementVectorStride:              DeviceSize,
+	displacedMicromapPrimitiveFlags:       DeviceOrHostAddressConstKHR,
+	displacedMicromapPrimitiveFlagsStride: DeviceSize,
+	indexType:                             IndexType,
+	indexBuffer:                           DeviceOrHostAddressConstKHR,
+	indexStride:                           DeviceSize,
+	baseTriangle:                          u32,
+	usageCountsCount:                      u32,
+	pUsageCounts:                          [^]MicromapUsageEXT,
+	ppUsageCounts:                         ^[^]MicromapUsageEXT,
+	micromap:                              MicromapEXT,
+}
+
 VideoAV1ColorConfigFlags :: distinct bit_set[VideoAV1ColorConfigFlag; u32]
 VideoAV1ColorConfigFlag :: enum u32 {
 	mono_chrome,