• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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