216 lines
10 KiB
C++
216 lines
10 KiB
C++
#ifndef VULKAN_BETA_H_
|
|
#define VULKAN_BETA_H_ 1
|
|
|
|
/*
|
|
** Copyright 2015-2024 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 1
|
|
#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;
|
|
} VkPhysicalDeviceShaderEnqueueFeaturesAMDX;
|
|
|
|
typedef struct VkPhysicalDeviceShaderEnqueuePropertiesAMDX {
|
|
VkStructureType sType;
|
|
void* pNext;
|
|
uint32_t maxExecutionGraphDepth;
|
|
uint32_t maxExecutionGraphShaderOutputNodes;
|
|
uint32_t maxExecutionGraphShaderPayloadSize;
|
|
uint32_t maxExecutionGraphShaderPayloadCount;
|
|
uint32_t executionGraphDispatchAddressAlignment;
|
|
} VkPhysicalDeviceShaderEnqueuePropertiesAMDX;
|
|
|
|
typedef struct VkExecutionGraphPipelineScratchSizeAMDX {
|
|
VkStructureType sType;
|
|
void* pNext;
|
|
VkDeviceSize size;
|
|
} 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, VkDeviceAddress scratch);
|
|
typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, const VkDispatchGraphCountInfoAMDX* pCountInfo);
|
|
typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, const VkDispatchGraphCountInfoAMDX* pCountInfo);
|
|
typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectCountAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, 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,
|
|
VkDeviceAddress scratch);
|
|
|
|
VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphAMDX(
|
|
VkCommandBuffer commandBuffer,
|
|
VkDeviceAddress scratch,
|
|
const VkDispatchGraphCountInfoAMDX* pCountInfo);
|
|
|
|
VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphIndirectAMDX(
|
|
VkCommandBuffer commandBuffer,
|
|
VkDeviceAddress scratch,
|
|
const VkDispatchGraphCountInfoAMDX* pCountInfo);
|
|
|
|
VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphIndirectCountAMDX(
|
|
VkCommandBuffer commandBuffer,
|
|
VkDeviceAddress scratch,
|
|
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
|