1 /* 2 * Copyright 2024 Valve Corporation 3 * SPDX-License-Identifier: MIT 4 */ 5 6 #pragma once 7 8 #include "libcl.h" 9 10 typedef uint32_t VkBool32; 11 typedef uint64_t VkDeviceAddress; 12 typedef uint64_t VkDeviceSize; 13 typedef uint32_t VkFlags; 14 15 typedef enum VkQueryType { 16 VK_QUERY_TYPE_OCCLUSION = 0, 17 VK_QUERY_TYPE_PIPELINE_STATISTICS = 1, 18 VK_QUERY_TYPE_TIMESTAMP = 2, 19 VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR = 1000023000, 20 VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004, 21 VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000, 22 VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000150000, 23 VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150001, 24 VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000, 25 VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000, 26 VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR = 1000299000, 27 VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000, 28 VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000, 29 VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000, 30 VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR = 1000386001, 31 VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT = 1000396000, 32 VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT = 1000396001, 33 VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF 34 } VkQueryType; 35 36 typedef enum VkQueryResultFlagBits { 37 VK_QUERY_RESULT_64_BIT = 0x00000001, 38 VK_QUERY_RESULT_WAIT_BIT = 0x00000002, 39 VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004, 40 VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008, 41 VK_QUERY_RESULT_WITH_STATUS_BIT_KHR = 0x00000010, 42 VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF 43 } VkQueryResultFlagBits; 44 45 typedef enum VkIndexType { 46 VK_INDEX_TYPE_UINT16 = 0, 47 VK_INDEX_TYPE_UINT32 = 1, 48 VK_INDEX_TYPE_UINT8 = 1000265000, 49 VK_INDEX_TYPE_NONE_KHR = 1000165000, 50 VK_INDEX_TYPE_NONE_NV = VK_INDEX_TYPE_NONE_KHR, 51 VK_INDEX_TYPE_UINT8_EXT = VK_INDEX_TYPE_UINT8, 52 VK_INDEX_TYPE_UINT8_KHR = VK_INDEX_TYPE_UINT8, 53 VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF 54 } VkIndexType; 55 56 typedef enum VkPrimitiveTopology { 57 VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0, 58 VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1, 59 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2, 60 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3, 61 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4, 62 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5, 63 VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6, 64 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7, 65 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8, 66 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9, 67 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10, 68 VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF 69 } VkPrimitiveTopology; 70 71 typedef enum VkPolygonMode { 72 VK_POLYGON_MODE_FILL = 0, 73 VK_POLYGON_MODE_LINE = 1, 74 VK_POLYGON_MODE_POINT = 2, 75 VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000, 76 VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF 77 } VkPolygonMode; 78 79 typedef enum VkTessellationDomainOrigin { 80 VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0, 81 VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1, 82 VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT, 83 VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT, 84 VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 0x7FFFFFFF 85 } VkTessellationDomainOrigin; 86 87 typedef enum VkLineRasterizationMode { 88 VK_LINE_RASTERIZATION_MODE_DEFAULT = 0, 89 VK_LINE_RASTERIZATION_MODE_RECTANGULAR = 1, 90 VK_LINE_RASTERIZATION_MODE_BRESENHAM = 2, 91 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH = 3, 92 VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = VK_LINE_RASTERIZATION_MODE_DEFAULT, 93 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = VK_LINE_RASTERIZATION_MODE_RECTANGULAR, 94 VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = VK_LINE_RASTERIZATION_MODE_BRESENHAM, 95 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH, 96 VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR = VK_LINE_RASTERIZATION_MODE_DEFAULT, 97 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR = VK_LINE_RASTERIZATION_MODE_RECTANGULAR, 98 VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR = VK_LINE_RASTERIZATION_MODE_BRESENHAM, 99 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH, 100 VK_LINE_RASTERIZATION_MODE_MAX_ENUM = 0x7FFFFFFF 101 } VkLineRasterizationMode; 102 103 typedef enum VkProvokingVertexModeEXT { 104 VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0, 105 VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1, 106 VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 0x7FFFFFFF 107 } VkProvokingVertexModeEXT; 108 109 typedef enum VkDepthBiasRepresentationEXT { 110 VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = 0, 111 VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = 1, 112 VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = 2, 113 VK_DEPTH_BIAS_REPRESENTATION_MAX_ENUM_EXT = 0x7FFFFFFF 114 } VkDepthBiasRepresentationEXT; 115 116 typedef struct VkDispatchIndirectCommand { 117 uint32_t x; 118 uint32_t y; 119 uint32_t z; 120 } VkDispatchIndirectCommand __attribute__((aligned(4))); 121 122 typedef struct VkDrawIndexedIndirectCommand { 123 uint32_t indexCount; 124 uint32_t instanceCount; 125 uint32_t firstIndex; 126 int32_t vertexOffset; 127 uint32_t firstInstance; 128 } VkDrawIndexedIndirectCommand __attribute__((aligned(4))); 129 130 typedef struct VkDrawIndirectCommand { 131 uint32_t vertexCount; 132 uint32_t instanceCount; 133 uint32_t firstVertex; 134 uint32_t firstInstance; 135 } VkDrawIndirectCommand __attribute__((aligned(4))); 136 137 typedef struct VkDrawMeshTasksIndirectCommandEXT { 138 uint32_t groupCountX; 139 uint32_t groupCountY; 140 uint32_t groupCountZ; 141 } VkDrawMeshTasksIndirectCommandEXT __attribute__((aligned(4))); 142 143 typedef struct VkBindVertexBufferIndirectCommandEXT { 144 VkDeviceAddress bufferAddress; 145 uint32_t size; 146 uint32_t stride; 147 } VkBindVertexBufferIndirectCommandEXT __attribute__((aligned(4))); 148 149 typedef struct VkBindIndexBufferIndirectCommandEXT { 150 VkDeviceAddress bufferAddress; 151 uint32_t size; 152 VkIndexType indexType; 153 } VkBindIndexBufferIndirectCommandEXT __attribute__((aligned(4))); 154 155 typedef struct VkTraceRaysIndirectCommand2KHR { 156 VkDeviceAddress raygenShaderRecordAddress; 157 VkDeviceSize raygenShaderRecordSize; 158 VkDeviceAddress missShaderBindingTableAddress; 159 VkDeviceSize missShaderBindingTableSize; 160 VkDeviceSize missShaderBindingTableStride; 161 VkDeviceAddress hitShaderBindingTableAddress; 162 VkDeviceSize hitShaderBindingTableSize; 163 VkDeviceSize hitShaderBindingTableStride; 164 VkDeviceAddress callableShaderBindingTableAddress; 165 VkDeviceSize callableShaderBindingTableSize; 166 VkDeviceSize callableShaderBindingTableStride; 167 uint32_t width; 168 uint32_t height; 169 uint32_t depth; 170 } VkTraceRaysIndirectCommand2KHR __attribute__((aligned(4))); 171