| /* |
| * Copyright 2024 Valve Corporation |
| * SPDX-License-Identifier: MIT |
| */ |
| |
| #pragma once |
| |
| #include "libcl.h" |
| |
| typedef uint32_t VkBool32; |
| typedef uint64_t VkDeviceAddress; |
| typedef uint64_t VkDeviceSize; |
| typedef uint32_t VkFlags; |
| |
| typedef enum VkQueryType { |
| VK_QUERY_TYPE_OCCLUSION = 0, |
| VK_QUERY_TYPE_PIPELINE_STATISTICS = 1, |
| VK_QUERY_TYPE_TIMESTAMP = 2, |
| VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR = 1000023000, |
| VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004, |
| VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000, |
| VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000150000, |
| VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150001, |
| VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000, |
| VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000, |
| VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR = 1000299000, |
| VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000, |
| VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000, |
| VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000, |
| VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR = 1000386001, |
| VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT = 1000396000, |
| VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT = 1000396001, |
| VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF |
| } VkQueryType; |
| |
| typedef enum VkQueryResultFlagBits { |
| VK_QUERY_RESULT_64_BIT = 0x00000001, |
| VK_QUERY_RESULT_WAIT_BIT = 0x00000002, |
| VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004, |
| VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008, |
| VK_QUERY_RESULT_WITH_STATUS_BIT_KHR = 0x00000010, |
| VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF |
| } VkQueryResultFlagBits; |
| |
| static inline void |
| vk_write_query(uintptr_t dst_addr, int32_t idx, VkQueryResultFlagBits flags, |
| uint64_t result) |
| { |
| if (flags & VK_QUERY_RESULT_64_BIT) { |
| global uint64_t *out = (global uint64_t *)dst_addr; |
| out[idx] = result; |
| } else { |
| global uint32_t *out = (global uint32_t *)dst_addr; |
| out[idx] = result; |
| } |
| } |
| |
| typedef enum VkIndexType { |
| VK_INDEX_TYPE_UINT16 = 0, |
| VK_INDEX_TYPE_UINT32 = 1, |
| VK_INDEX_TYPE_UINT8 = 1000265000, |
| VK_INDEX_TYPE_NONE_KHR = 1000165000, |
| VK_INDEX_TYPE_NONE_NV = VK_INDEX_TYPE_NONE_KHR, |
| VK_INDEX_TYPE_UINT8_EXT = VK_INDEX_TYPE_UINT8, |
| VK_INDEX_TYPE_UINT8_KHR = VK_INDEX_TYPE_UINT8, |
| VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF |
| } VkIndexType; |
| |
| typedef enum VkPrimitiveTopology { |
| VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0, |
| VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1, |
| VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2, |
| VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3, |
| VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4, |
| VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5, |
| VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6, |
| VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7, |
| VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8, |
| VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9, |
| VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10, |
| VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF |
| } VkPrimitiveTopology; |
| |
| typedef enum VkPolygonMode { |
| VK_POLYGON_MODE_FILL = 0, |
| VK_POLYGON_MODE_LINE = 1, |
| VK_POLYGON_MODE_POINT = 2, |
| VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000, |
| VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF |
| } VkPolygonMode; |
| |
| typedef enum VkTessellationDomainOrigin { |
| VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0, |
| VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1, |
| VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT, |
| VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT, |
| VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 0x7FFFFFFF |
| } VkTessellationDomainOrigin; |
| |
| typedef enum VkLineRasterizationMode { |
| VK_LINE_RASTERIZATION_MODE_DEFAULT = 0, |
| VK_LINE_RASTERIZATION_MODE_RECTANGULAR = 1, |
| VK_LINE_RASTERIZATION_MODE_BRESENHAM = 2, |
| VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH = 3, |
| VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = VK_LINE_RASTERIZATION_MODE_DEFAULT, |
| VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = VK_LINE_RASTERIZATION_MODE_RECTANGULAR, |
| VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = VK_LINE_RASTERIZATION_MODE_BRESENHAM, |
| VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH, |
| VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR = VK_LINE_RASTERIZATION_MODE_DEFAULT, |
| VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR = VK_LINE_RASTERIZATION_MODE_RECTANGULAR, |
| VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR = VK_LINE_RASTERIZATION_MODE_BRESENHAM, |
| VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH, |
| VK_LINE_RASTERIZATION_MODE_MAX_ENUM = 0x7FFFFFFF |
| } VkLineRasterizationMode; |
| |
| typedef enum VkProvokingVertexModeEXT { |
| VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0, |
| VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1, |
| VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 0x7FFFFFFF |
| } VkProvokingVertexModeEXT; |
| |
| typedef enum VkDepthBiasRepresentationEXT { |
| VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = 0, |
| VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = 1, |
| VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = 2, |
| VK_DEPTH_BIAS_REPRESENTATION_MAX_ENUM_EXT = 0x7FFFFFFF |
| } VkDepthBiasRepresentationEXT; |
| |
| typedef struct VkDispatchIndirectCommand { |
| uint32_t x; |
| uint32_t y; |
| uint32_t z; |
| } VkDispatchIndirectCommand __attribute__((aligned(4))); |
| |
| typedef struct VkDrawIndexedIndirectCommand { |
| uint32_t indexCount; |
| uint32_t instanceCount; |
| uint32_t firstIndex; |
| int32_t vertexOffset; |
| uint32_t firstInstance; |
| } VkDrawIndexedIndirectCommand __attribute__((aligned(4))); |
| |
| typedef struct VkDrawIndirectCommand { |
| uint32_t vertexCount; |
| uint32_t instanceCount; |
| uint32_t firstVertex; |
| uint32_t firstInstance; |
| } VkDrawIndirectCommand __attribute__((aligned(4))); |
| |
| typedef struct VkDrawMeshTasksIndirectCommandEXT { |
| uint32_t groupCountX; |
| uint32_t groupCountY; |
| uint32_t groupCountZ; |
| } VkDrawMeshTasksIndirectCommandEXT __attribute__((aligned(4))); |
| |
| typedef struct VkBindVertexBufferIndirectCommandEXT { |
| VkDeviceAddress bufferAddress; |
| uint32_t size; |
| uint32_t stride; |
| } VkBindVertexBufferIndirectCommandEXT __attribute__((aligned(4))); |
| |
| typedef struct VkBindIndexBufferIndirectCommandEXT { |
| VkDeviceAddress bufferAddress; |
| uint32_t size; |
| VkIndexType indexType; |
| } VkBindIndexBufferIndirectCommandEXT __attribute__((aligned(4))); |
| |
| typedef struct VkTraceRaysIndirectCommand2KHR { |
| 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; |
| } VkTraceRaysIndirectCommand2KHR __attribute__((aligned(4))); |