vkd3d 1.2
The vkd3d 3D Graphics Library
|
Go to the source code of this file.
Data Structures | |
struct | vkd3d_shader_compile_option |
Various settings which may affect shader compilation or scanning, passed as part of struct vkd3d_shader_compile_info. More... | |
struct | vkd3d_shader_code |
A generic structure containing a GPU shader, in text or byte-code format. More... | |
struct | vkd3d_shader_descriptor_binding |
A common structure describing the bind point of a descriptor or descriptor array in the target environment. More... | |
struct | vkd3d_shader_parameter_immediate_constant |
struct | vkd3d_shader_parameter_specialization_constant |
struct | vkd3d_shader_parameter |
struct | vkd3d_shader_resource_binding |
Describes the mapping of a single resource or resource array to its binding point in the target environment. More... | |
struct | vkd3d_shader_combined_resource_sampler |
Describes the mapping of a Direct3D resource-sampler pair to a combined sampler (i.e. More... | |
struct | vkd3d_shader_uav_counter_binding |
Describes the mapping of a single Direct3D UAV counter. More... | |
struct | vkd3d_shader_push_constant_buffer |
Describes the mapping of a Direct3D constant buffer to a range of push constants in the target environment. More... | |
struct | vkd3d_shader_interface_info |
A chained structure describing the interface between a compiled shader and the target environment. More... | |
struct | vkd3d_shader_transform_feedback_element |
struct | vkd3d_shader_transform_feedback_info |
struct | vkd3d_shader_compile_info |
A chained structure containing compilation parameters. More... | |
struct | vkd3d_shader_spirv_target_info |
struct | vkd3d_shader_spirv_domain_shader_target_info |
struct | vkd3d_shader_static_sampler_desc |
struct | vkd3d_shader_descriptor_range |
struct | vkd3d_shader_root_descriptor_table |
struct | vkd3d_shader_root_constants |
struct | vkd3d_shader_root_descriptor |
struct | vkd3d_shader_root_parameter |
struct | vkd3d_shader_root_signature_desc |
struct | vkd3d_shader_descriptor_range1 |
struct | vkd3d_shader_root_descriptor_table1 |
struct | vkd3d_shader_root_descriptor1 |
struct | vkd3d_shader_root_parameter1 |
struct | vkd3d_shader_root_signature_desc1 |
struct | vkd3d_shader_versioned_root_signature_desc |
struct | vkd3d_shader_descriptor_info |
Describes a single shader descriptor; returned as part of struct vkd3d_shader_scan_descriptor_info. More... | |
struct | vkd3d_shader_scan_descriptor_info |
A chained structure enumerating the descriptors declared by a shader. More... | |
struct | vkd3d_shader_signature_element |
A single shader varying, returned as part of struct vkd3d_shader_signature. More... | |
struct | vkd3d_shader_signature |
Description of a shader input or output signature. More... | |
Macros | |
#define | VKD3D_SHADER_DUMMY_SAMPLER_INDEX ~0u |
#define | VKD3D_SHADER_SWIZZLE_MASK (0xffu) |
A mask selecting one component from a vkd3d-shader swizzle. More... | |
#define | VKD3D_SHADER_SWIZZLE_SHIFT(idx) (8u * (idx)) |
The offset, in bits, of the nth parameter of a vkd3d-shader swizzle. | |
#define | VKD3D_SHADER_SWIZZLE(x, y, z, w) |
A helper macro which returns a vkd3d-shader swizzle with the given components. More... | |
#define | VKD3D_SHADER_NO_SWIZZLE VKD3D_SHADER_SWIZZLE(X, Y, Z, W) |
The identity swizzle ".xyzw". | |
Typedefs | |
typedef const char *(* | PFN_vkd3d_shader_get_version) (unsigned int *major, unsigned int *minor) |
Type of vkd3d_shader_get_version(). | |
typedef enum vkd3d_shader_source_type *(* | PFN_vkd3d_shader_get_supported_source_types) (unsigned int *count) |
Type of vkd3d_shader_get_supported_source_types(). | |
typedef enum vkd3d_shader_target_type *(* | PFN_vkd3d_shader_get_supported_target_types) (enum vkd3d_shader_source_type source_type, unsigned int *count) |
Type of vkd3d_shader_get_supported_target_types(). | |
typedef int(* | PFN_vkd3d_shader_compile) (const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, char **messages) |
Type of vkd3d_shader_compile(). | |
typedef void(* | PFN_vkd3d_shader_free_messages) (char *messages) |
Type of vkd3d_shader_free_messages(). | |
typedef void(* | PFN_vkd3d_shader_free_shader_code) (struct vkd3d_shader_code *code) |
Type of vkd3d_shader_free_shader_code(). | |
typedef int(* | PFN_vkd3d_shader_parse_root_signature) (const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_versioned_root_signature_desc *root_signature, char **messages) |
Type of vkd3d_shader_parse_root_signature(). | |
typedef void(* | PFN_vkd3d_shader_free_root_signature) (struct vkd3d_shader_versioned_root_signature_desc *root_signature) |
Type of vkd3d_shader_free_root_signature(). | |
typedef int(* | PFN_vkd3d_shader_serialize_root_signature) (const struct vkd3d_shader_versioned_root_signature_desc *root_signature, struct vkd3d_shader_code *dxbc, char **messages) |
Type of vkd3d_shader_serialize_root_signature(). | |
typedef int(* | PFN_vkd3d_shader_convert_root_signature) (struct vkd3d_shader_versioned_root_signature_desc *dst, enum vkd3d_shader_root_signature_version version, const struct vkd3d_shader_versioned_root_signature_desc *src) |
Type of vkd3d_shader_convert_root_signature(). | |
typedef int(* | PFN_vkd3d_shader_scan) (const struct vkd3d_shader_compile_info *compile_info, char **messages) |
Type of vkd3d_shader_scan(). | |
typedef void(* | PFN_vkd3d_shader_free_scan_descriptor_info) (struct vkd3d_shader_scan_descriptor_info *scan_descriptor_info) |
Type of vkd3d_shader_free_scan_descriptor_info(). | |
typedef int(* | PFN_vkd3d_shader_parse_input_signature) (const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_signature *signature, char **messages) |
Type of vkd3d_shader_parse_input_signature(). | |
typedef struct vkd3d_shader_signature_element *(* | PFN_vkd3d_shader_find_signature_element) (const struct vkd3d_shader_signature *signature, const char *semantic_name, unsigned int semantic_index, unsigned int stream_index) |
Type of vkd3d_shader_find_signature_element(). | |
typedef void(* | PFN_vkd3d_shader_free_shader_signature) (struct vkd3d_shader_signature *signature) |
Type of vkd3d_shader_free_shader_signature(). | |
Enumerations | |
enum | vkd3d_shader_structure_type { VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO , VKD3D_SHADER_STRUCTURE_TYPE_INTERFACE_INFO , VKD3D_SHADER_STRUCTURE_TYPE_SCAN_DESCRIPTOR_INFO , VKD3D_SHADER_STRUCTURE_TYPE_SPIRV_DOMAIN_SHADER_TARGET_INFO , VKD3D_SHADER_STRUCTURE_TYPE_SPIRV_TARGET_INFO , VKD3D_SHADER_STRUCTURE_TYPE_TRANSFORM_FEEDBACK_INFO , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
The type of a chained structure. More... | |
enum | vkd3d_shader_compile_option_buffer_uav { VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV_STORAGE_TEXEL_BUFFER = 0x00000000 , VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV_STORAGE_BUFFER = 0x00000001 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
Determines how buffer UAVs are stored. More... | |
enum | vkd3d_shader_compile_option_formatting_flags { VKD3D_SHADER_COMPILE_OPTION_FORMATTING_NONE = 0x00000000 , VKD3D_SHADER_COMPILE_OPTION_FORMATTING_COLOUR = 0x00000001 , VKD3D_SHADER_COMPILE_OPTION_FORMATTING_INDENT = 0x00000002 , VKD3D_SHADER_COMPILE_OPTION_FORMATTING_OFFSETS = 0x00000004 , VKD3D_SHADER_COMPILE_OPTION_FORMATTING_HEADER = 0x00000008 , VKD3D_SHADER_COMPILE_OPTION_FORMATTING_RAW_IDS = 0x00000010 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
enum | vkd3d_shader_compile_option_name { VKD3D_SHADER_COMPILE_OPTION_STRIP_DEBUG = 0x00000001 , VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV = 0x00000002 , VKD3D_SHADER_COMPILE_OPTION_FORMATTING = 0x00000003 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
enum | vkd3d_shader_visibility { VKD3D_SHADER_VISIBILITY_ALL = 0 , VKD3D_SHADER_VISIBILITY_VERTEX = 1 , VKD3D_SHADER_VISIBILITY_HULL = 2 , VKD3D_SHADER_VISIBILITY_DOMAIN = 3 , VKD3D_SHADER_VISIBILITY_GEOMETRY = 4 , VKD3D_SHADER_VISIBILITY_PIXEL = 5 , VKD3D_SHADER_VISIBILITY_COMPUTE = 1000000000 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
Describes which shader stages a resource is visible to. More... | |
enum | vkd3d_shader_descriptor_type { VKD3D_SHADER_DESCRIPTOR_TYPE_SRV = 0x0 , VKD3D_SHADER_DESCRIPTOR_TYPE_UAV = 0x1 , VKD3D_SHADER_DESCRIPTOR_TYPE_CBV = 0x2 , VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER = 0x3 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
The type of a shader resource descriptor. More... | |
enum | vkd3d_shader_binding_flag { VKD3D_SHADER_BINDING_FLAG_BUFFER = 0x00000001 , VKD3D_SHADER_BINDING_FLAG_IMAGE = 0x00000002 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
enum | vkd3d_shader_parameter_type { VKD3D_SHADER_PARAMETER_TYPE_UNKNOWN , VKD3D_SHADER_PARAMETER_TYPE_IMMEDIATE_CONSTANT , VKD3D_SHADER_PARAMETER_TYPE_SPECIALIZATION_CONSTANT , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
enum | vkd3d_shader_parameter_data_type { VKD3D_SHADER_PARAMETER_DATA_TYPE_UNKNOWN , VKD3D_SHADER_PARAMETER_DATA_TYPE_UINT32 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
enum | vkd3d_shader_parameter_name { VKD3D_SHADER_PARAMETER_NAME_UNKNOWN , VKD3D_SHADER_PARAMETER_NAME_RASTERIZER_SAMPLE_COUNT , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
enum | vkd3d_shader_source_type { VKD3D_SHADER_SOURCE_NONE , VKD3D_SHADER_SOURCE_DXBC_TPF , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
The format of a shader to be compiled or scanned. More... | |
enum | vkd3d_shader_target_type { VKD3D_SHADER_TARGET_NONE , VKD3D_SHADER_TARGET_SPIRV_BINARY , VKD3D_SHADER_TARGET_SPIRV_TEXT , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
The output format of a compiled shader. More... | |
enum | vkd3d_shader_log_level { VKD3D_SHADER_LOG_NONE , VKD3D_SHADER_LOG_ERROR , VKD3D_SHADER_LOG_WARNING , VKD3D_SHADER_LOG_INFO , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
Describes the minimum severity of compilation messages returned by vkd3d_shader_compile() and similar functions. More... | |
enum | vkd3d_shader_spirv_environment { VKD3D_SHADER_SPIRV_ENVIRONMENT_NONE , VKD3D_SHADER_SPIRV_ENVIRONMENT_OPENGL_4_5 , VKD3D_SHADER_SPIRV_ENVIRONMENT_VULKAN_1_0 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
enum | vkd3d_shader_spirv_extension { VKD3D_SHADER_SPIRV_EXTENSION_NONE , VKD3D_SHADER_SPIRV_EXTENSION_EXT_DEMOTE_TO_HELPER_INVOCATION , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
enum | vkd3d_shader_tessellator_output_primitive { VKD3D_SHADER_TESSELLATOR_OUTPUT_POINT = 0x1 , VKD3D_SHADER_TESSELLATOR_OUTPUT_LINE = 0x2 , VKD3D_SHADER_TESSELLATOR_OUTPUT_TRIANGLE_CW = 0x3 , VKD3D_SHADER_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 0x4 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
enum | vkd3d_shader_tessellator_partitioning { VKD3D_SHADER_TESSELLATOR_PARTITIONING_INTEGER = 0x1 , VKD3D_SHADER_TESSELLATOR_PARTITIONING_POW2 = 0x2 , VKD3D_SHADER_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 0x3 , VKD3D_SHADER_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 0x4 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
enum | vkd3d_shader_filter { VKD3D_SHADER_FILTER_MIN_MAG_MIP_POINT = 0x000 , VKD3D_SHADER_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x001 , VKD3D_SHADER_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x004 , VKD3D_SHADER_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x005 , VKD3D_SHADER_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x010 , VKD3D_SHADER_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x011 , VKD3D_SHADER_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x014 , VKD3D_SHADER_FILTER_MIN_MAG_MIP_LINEAR = 0x015 , VKD3D_SHADER_FILTER_ANISOTROPIC = 0x055 , VKD3D_SHADER_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x080 , VKD3D_SHADER_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x081 , VKD3D_SHADER_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x084 , VKD3D_SHADER_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x085 , VKD3D_SHADER_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x090 , VKD3D_SHADER_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x091 , VKD3D_SHADER_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x094 , VKD3D_SHADER_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x095 , VKD3D_SHADER_FILTER_COMPARISON_ANISOTROPIC = 0x0d5 , VKD3D_SHADER_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100 , VKD3D_SHADER_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101 , VKD3D_SHADER_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104 , VKD3D_SHADER_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105 , VKD3D_SHADER_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110 , VKD3D_SHADER_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111 , VKD3D_SHADER_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114 , VKD3D_SHADER_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115 , VKD3D_SHADER_FILTER_MINIMUM_ANISOTROPIC = 0x155 , VKD3D_SHADER_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180 , VKD3D_SHADER_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181 , VKD3D_SHADER_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184 , VKD3D_SHADER_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185 , VKD3D_SHADER_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190 , VKD3D_SHADER_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191 , VKD3D_SHADER_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194 , VKD3D_SHADER_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195 , VKD3D_SHADER_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
enum | vkd3d_shader_texture_address_mode { VKD3D_SHADER_TEXTURE_ADDRESS_MODE_WRAP = 0x1 , VKD3D_SHADER_TEXTURE_ADDRESS_MODE_MIRROR = 0x2 , VKD3D_SHADER_TEXTURE_ADDRESS_MODE_CLAMP = 0x3 , VKD3D_SHADER_TEXTURE_ADDRESS_MODE_BORDER = 0x4 , VKD3D_SHADER_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 0x5 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
enum | vkd3d_shader_comparison_func { VKD3D_SHADER_COMPARISON_FUNC_NEVER = 0x1 , VKD3D_SHADER_COMPARISON_FUNC_LESS = 0x2 , VKD3D_SHADER_COMPARISON_FUNC_EQUAL = 0x3 , VKD3D_SHADER_COMPARISON_FUNC_LESS_EQUAL = 0x4 , VKD3D_SHADER_COMPARISON_FUNC_GREATER = 0x5 , VKD3D_SHADER_COMPARISON_FUNC_NOT_EQUAL = 0x6 , VKD3D_SHADER_COMPARISON_FUNC_GREATER_EQUAL = 0x7 , VKD3D_SHADER_COMPARISON_FUNC_ALWAYS = 0x8 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
enum | vkd3d_shader_static_border_colour { VKD3D_SHADER_STATIC_BORDER_COLOUR_TRANSPARENT_BLACK = 0x0 , VKD3D_SHADER_STATIC_BORDER_COLOUR_OPAQUE_BLACK = 0x1 , VKD3D_SHADER_STATIC_BORDER_COLOUR_OPAQUE_WHITE = 0x2 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
enum | vkd3d_shader_root_parameter_type { VKD3D_SHADER_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0x0 , VKD3D_SHADER_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = 0x1 , VKD3D_SHADER_ROOT_PARAMETER_TYPE_CBV = 0x2 , VKD3D_SHADER_ROOT_PARAMETER_TYPE_SRV = 0x3 , VKD3D_SHADER_ROOT_PARAMETER_TYPE_UAV = 0x4 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
enum | vkd3d_shader_root_signature_flags { VKD3D_SHADER_ROOT_SIGNATURE_FLAG_NONE = 0x00 , VKD3D_SHADER_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x01 , VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x02 , VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x04 , VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x08 , VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10 , VKD3D_SHADER_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20 , VKD3D_SHADER_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
enum | vkd3d_shader_root_descriptor_flags { VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_NONE = 0x0 , VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2 , VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4 , VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
enum | vkd3d_shader_descriptor_range_flags { VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_NONE = 0x0 , VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1 , VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2 , VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4 , VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
enum | vkd3d_shader_root_signature_version { VKD3D_SHADER_ROOT_SIGNATURE_VERSION_1_0 = 0x1 , VKD3D_SHADER_ROOT_SIGNATURE_VERSION_1_1 = 0x2 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
enum | vkd3d_shader_resource_type { VKD3D_SHADER_RESOURCE_NONE = 0x0 , VKD3D_SHADER_RESOURCE_BUFFER = 0x1 , VKD3D_SHADER_RESOURCE_TEXTURE_1D = 0x2 , VKD3D_SHADER_RESOURCE_TEXTURE_2D = 0x3 , VKD3D_SHADER_RESOURCE_TEXTURE_2DMS = 0x4 , VKD3D_SHADER_RESOURCE_TEXTURE_3D = 0x5 , VKD3D_SHADER_RESOURCE_TEXTURE_CUBE = 0x6 , VKD3D_SHADER_RESOURCE_TEXTURE_1DARRAY = 0x7 , VKD3D_SHADER_RESOURCE_TEXTURE_2DARRAY = 0x8 , VKD3D_SHADER_RESOURCE_TEXTURE_2DMSARRAY = 0x9 , VKD3D_SHADER_RESOURCE_TEXTURE_CUBEARRAY = 0xa , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
The type of a shader resource, returned as part of struct vkd3d_shader_descriptor_info. More... | |
enum | vkd3d_shader_resource_data_type { VKD3D_SHADER_RESOURCE_DATA_UNORM = 0x1 , VKD3D_SHADER_RESOURCE_DATA_SNORM = 0x2 , VKD3D_SHADER_RESOURCE_DATA_INT = 0x3 , VKD3D_SHADER_RESOURCE_DATA_UINT = 0x4 , VKD3D_SHADER_RESOURCE_DATA_FLOAT = 0x5 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
The type of the data contained in a shader resource, returned as part of struct vkd3d_shader_descriptor_info. More... | |
enum | vkd3d_shader_descriptor_info_flag { VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_UAV_COUNTER = 0x00000001 , VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_UAV_READ = 0x00000002 , VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_SAMPLER_COMPARISON_MODE = 0x00000004 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
Additional flags describing a shader descriptor, returned as part of struct vkd3d_shader_descriptor_info. More... | |
enum | vkd3d_shader_component_type { VKD3D_SHADER_COMPONENT_VOID = 0x0 , VKD3D_SHADER_COMPONENT_UINT = 0x1 , VKD3D_SHADER_COMPONENT_INT = 0x2 , VKD3D_SHADER_COMPONENT_FLOAT = 0x3 , VKD3D_SHADER_COMPONENT_BOOL = 0x4 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
Data type of a shader varying, returned as part of struct vkd3d_shader_signature_element. More... | |
enum | vkd3d_shader_sysval_semantic { VKD3D_SHADER_SV_NONE = 0x00 , VKD3D_SHADER_SV_POSITION = 0x01 , VKD3D_SHADER_SV_CLIP_DISTANCE = 0x02 , VKD3D_SHADER_SV_CULL_DISTANCE = 0x03 , VKD3D_SHADER_SV_RENDER_TARGET_ARRAY_INDEX = 0x04 , VKD3D_SHADER_SV_VIEWPORT_ARRAY_INDEX = 0x05 , VKD3D_SHADER_SV_VERTEX_ID = 0x06 , VKD3D_SHADER_SV_PRIMITIVE_ID = 0x07 , VKD3D_SHADER_SV_INSTANCE_ID = 0x08 , VKD3D_SHADER_SV_IS_FRONT_FACE = 0x09 , VKD3D_SHADER_SV_SAMPLE_INDEX = 0x0a , VKD3D_SHADER_SV_TESS_FACTOR_QUADEDGE = 0x0b , VKD3D_SHADER_SV_TESS_FACTOR_QUADINT = 0x0c , VKD3D_SHADER_SV_TESS_FACTOR_TRIEDGE = 0x0d , VKD3D_SHADER_SV_TESS_FACTOR_TRIINT = 0x0e , VKD3D_SHADER_SV_TESS_FACTOR_LINEDET = 0x0f , VKD3D_SHADER_SV_TESS_FACTOR_LINEDEN = 0x10 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
System value semantic, returned as part of struct vkd3d_shader_signature. More... | |
enum | vkd3d_shader_minimum_precision { VKD3D_SHADER_MINIMUM_PRECISION_NONE = 0 , VKD3D_SHADER_MINIMUM_PRECISION_FLOAT_16 = 1 , VKD3D_SHADER_MINIMUM_PRECISION_FIXED_8_2 = 2 , VKD3D_SHADER_MINIMUM_PRECISION_INT_16 = 4 , VKD3D_SHADER_MINIMUM_PRECISION_UINT_16 = 5 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
Minimum interpolation precision of a shader varying, returned as part of struct vkd3d_shader_signature_element. More... | |
enum | vkd3d_shader_swizzle_component { VKD3D_SHADER_SWIZZLE_X = 0x0 , VKD3D_SHADER_SWIZZLE_Y = 0x1 , VKD3D_SHADER_SWIZZLE_Z = 0x2 , VKD3D_SHADER_SWIZZLE_W = 0x3 , VKD3D_FORCE_32_BIT_ENUM =(VKD3D_SHADER_STRUCTURE_TYPE) } |
Possible values for a single component of a vkd3d-shader swizzle. | |
Functions | |
static uint32_t | vkd3d_shader_create_swizzle (enum vkd3d_shader_swizzle_component x, enum vkd3d_shader_swizzle_component y, enum vkd3d_shader_swizzle_component z, enum vkd3d_shader_swizzle_component w) |
Build a vkd3d-shader swizzle with the given components. | |
const char * | vkd3d_shader_get_version (unsigned int *major, unsigned int *minor) |
Returns the current version of this library. More... | |
enum vkd3d_shader_source_type * | vkd3d_shader_get_supported_source_types (unsigned int *count) |
Returns the source types supported, with any target type, by vkd3d_shader_compile(). More... | |
enum vkd3d_shader_target_type * | vkd3d_shader_get_supported_target_types (enum vkd3d_shader_source_type source_type, unsigned int *count) |
Returns the target types supported, with the given source type, by vkd3d_shader_compile(). More... | |
int | vkd3d_shader_compile (const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, char **messages) |
Transform a form of GPU shader source code or byte code into another form of source code or byte code. More... | |
void | vkd3d_shader_free_messages (char *messages) |
Free shader messages allocated by another vkd3d-shader function, such as vkd3d_shader_compile(). More... | |
void | vkd3d_shader_free_shader_code (struct vkd3d_shader_code *code) |
Free shader code allocated by another vkd3d-shader function, such as vkd3d_shader_compile(). More... | |
int | vkd3d_shader_parse_root_signature (const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_versioned_root_signature_desc *root_signature, char **messages) |
Convert a byte code description of a shader root signature to a structural description which can be easily parsed by C code. More... | |
void | vkd3d_shader_free_root_signature (struct vkd3d_shader_versioned_root_signature_desc *root_signature) |
Free a structural representation of a shader root signature allocated by vkd3d_shader_convert_root_signature() or vkd3d_shader_parse_root_signature(). More... | |
int | vkd3d_shader_serialize_root_signature (const struct vkd3d_shader_versioned_root_signature_desc *root_signature, struct vkd3d_shader_code *dxbc, char **messages) |
Convert a structural description of a shader root signature to a byte code format capable of being read by ID3D12Device::CreateRootSignature. More... | |
int | vkd3d_shader_convert_root_signature (struct vkd3d_shader_versioned_root_signature_desc *dst, enum vkd3d_shader_root_signature_version version, const struct vkd3d_shader_versioned_root_signature_desc *src) |
Convert a structural representation of a root signature to a different version of structural representation. More... | |
int | vkd3d_shader_scan (const struct vkd3d_shader_compile_info *compile_info, char **messages) |
Parse shader source code or byte code, returning various types of requested information. More... | |
void | vkd3d_shader_free_scan_descriptor_info (struct vkd3d_shader_scan_descriptor_info *scan_descriptor_info) |
Free members of struct vkd3d_shader_scan_descriptor_info() allocated by vkd3d_shader_scan(). More... | |
int | vkd3d_shader_parse_input_signature (const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_signature *signature, char **messages) |
Read the input signature of a compiled shader, returning a structural description which can be easily parsed by C code. More... | |
struct vkd3d_shader_signature_element * | vkd3d_shader_find_signature_element (const struct vkd3d_shader_signature *signature, const char *semantic_name, unsigned int semantic_index, unsigned int stream_index) |
Find a single element of a parsed input signature. More... | |
void | vkd3d_shader_free_shader_signature (struct vkd3d_shader_signature *signature) |
Free a structural representation of a shader input signature allocated by vkd3d_shader_parse_input_signature(). More... | |
This file contains definitions for the vkd3d-shader library.
The vkd3d-shader library provides multiple utilities related to the compilation, transformation, and reflection of GPU shaders.
#define VKD3D_SHADER_SWIZZLE | ( | x, | |
y, | |||
z, | |||
w | |||
) |
A helper macro which returns a vkd3d-shader swizzle with the given components.
The components are specified as the suffixes to members of vkd3d_shader_swizzle_component. For example, the swizzle ".xwyy" can be represented as:
#define VKD3D_SHADER_SWIZZLE_MASK (0xffu) |
A mask selecting one component from a vkd3d-shader swizzle.
The component has type vkd3d_shader_swizzle_component.
Determines how buffer UAVs are stored.
This also affects UAV counters in Vulkan environments. In OpenGL environments, atomic counter buffers are always used for UAV counters.
Enumerator | |
---|---|
VKD3D_SHADER_COMPILE_OPTION_STRIP_DEBUG | If value is nonzero, do not include debug information in the compiled shader. The default value is zero. This option is supported by vkd3d_shader_compile(). However, not all compilers support generating debug information. |
VKD3D_SHADER_COMPILE_OPTION_BUFFER_UAV | value is a member of enum vkd3d_shader_compile_option_buffer_uav. |
VKD3D_SHADER_COMPILE_OPTION_FORMATTING | value is a member of enum vkd3d_shader_compile_option_formatting_flags. |
Data type of a shader varying, returned as part of struct vkd3d_shader_signature_element.
Additional flags describing a shader descriptor, returned as part of struct vkd3d_shader_descriptor_info.
The type of a shader resource descriptor.
Describes the minimum severity of compilation messages returned by vkd3d_shader_compile() and similar functions.
Minimum interpolation precision of a shader varying, returned as part of struct vkd3d_shader_signature_element.
The type of the data contained in a shader resource, returned as part of struct vkd3d_shader_descriptor_info.
All formats are 32-bit.
The type of a shader resource, returned as part of struct vkd3d_shader_descriptor_info.
The format of a shader to be compiled or scanned.
Enumerator | |
---|---|
VKD3D_SHADER_SOURCE_NONE | The shader has no type or is to be ignored. This is not a valid value for vkd3d_shader_compile() or vkd3d_shader_scan(). |
VKD3D_SHADER_SOURCE_DXBC_TPF | A 'Tokenized Program Format' shader embedded in a DXBC container. This is the format used for Direct3D shader model 4 and 5 shaders. |
The type of a chained structure.
Enumerator | |
---|---|
VKD3D_SHADER_STRUCTURE_TYPE_COMPILE_INFO | The structure is a vkd3d_shader_compile_info structure. |
VKD3D_SHADER_STRUCTURE_TYPE_INTERFACE_INFO | The structure is a vkd3d_shader_interface_info structure. |
VKD3D_SHADER_STRUCTURE_TYPE_SCAN_DESCRIPTOR_INFO | The structure is a vkd3d_shader_scan_descriptor_info structure. |
VKD3D_SHADER_STRUCTURE_TYPE_SPIRV_DOMAIN_SHADER_TARGET_INFO | The structure is a vkd3d_shader_spirv_domain_shader_target_info structure. |
VKD3D_SHADER_STRUCTURE_TYPE_SPIRV_TARGET_INFO | The structure is a vkd3d_shader_spirv_target_info structure. |
VKD3D_SHADER_STRUCTURE_TYPE_TRANSFORM_FEEDBACK_INFO | The structure is a vkd3d_shader_transform_feedback_info structure. |
System value semantic, returned as part of struct vkd3d_shader_signature.
The output format of a compiled shader.
Enumerator | |
---|---|
VKD3D_SHADER_TARGET_NONE | The shader has no type or is to be ignored. This is not a valid value for vkd3d_shader_compile() or vkd3d_shader_scan(). |
VKD3D_SHADER_TARGET_SPIRV_BINARY | A SPIR-V shader in binary form. This is the format used for Vulkan shaders. |
Describes which shader stages a resource is visible to.
int vkd3d_shader_compile | ( | const struct vkd3d_shader_compile_info * | compile_info, |
struct vkd3d_shader_code * | out, | ||
char ** | messages | ||
) |
Transform a form of GPU shader source code or byte code into another form of source code or byte code.
This version of vkd3d-shader supports the following transformations:
Supported transformations can also be detected at runtime with the functions vkd3d_shader_get_supported_source_types() and vkd3d_shader_get_supported_target_types().
Depending on the source and target types, this function may support the following chained structures:
compile_info | A chained structure containing compilation parameters. |
out | A pointer to a vkd3d_shader_code structure in which the compiled code will be stored. The compiled shader is allocated by vkd3d-shader and should be freed with vkd3d_shader_free_shader_code() when no longer needed. |
messages | Optional output location for error or informational messages produced by the compiler. This string is null-terminated and UTF-8 encoded. The messages are allocated by vkd3d-shader and should be freed with vkd3d_shader_free_messages() when no longer needed. The messages returned can be regulated with the log_level member of struct vkd3d_shader_compile_info. Regardless of the requested level, if this parameter is NULL, no compilation messages will be returned. If no compilation messages are produced by the compiler, this parameter may receive NULL instead of a valid string pointer. |
int vkd3d_shader_convert_root_signature | ( | struct vkd3d_shader_versioned_root_signature_desc * | dst, |
enum vkd3d_shader_root_signature_version | version, | ||
const struct vkd3d_shader_versioned_root_signature_desc * | src | ||
) |
Convert a structural representation of a root signature to a different version of structural representation.
This function corresponds to ID3D12VersionedRootSignatureDeserializer::GetRootSignatureDescAtVersion().
dst | A pointer to a vkd3d_shader_versioned_root_signature_desc structure in which the converted signature will be stored. Members of dst may be allocated by vkd3d-shader. The signature should be freed with vkd3d_shader_free_root_signature() when no longer needed. |
version | The desired version to convert src to. This version must not be equal to src->version. |
src | Input root signature description. |
struct vkd3d_shader_signature_element * vkd3d_shader_find_signature_element | ( | const struct vkd3d_shader_signature * | signature, |
const char * | semantic_name, | ||
unsigned int | semantic_index, | ||
unsigned int | stream_index | ||
) |
Find a single element of a parsed input signature.
signature | The parsed input signature. This structure is normally populated by vkd3d_shader_parse_input_signature(). |
semantic_name | Semantic name of the desired element. This function performs a case-insensitive comparison with respect to the ASCII plane. |
semantic_index | Semantic index of the desired element. |
stream_index | Geometry shader stream index of the desired element. If the signature is not a geometry shader output signature, this parameter must be set to 0. |
void vkd3d_shader_free_messages | ( | char * | messages | ) |
Free shader messages allocated by another vkd3d-shader function, such as vkd3d_shader_compile().
messages | Messages to free. This pointer is optional and may be NULL, in which case no action will be taken. |
void vkd3d_shader_free_root_signature | ( | struct vkd3d_shader_versioned_root_signature_desc * | root_signature | ) |
Free a structural representation of a shader root signature allocated by vkd3d_shader_convert_root_signature() or vkd3d_shader_parse_root_signature().
This function may free members of struct vkd3d_shader_versioned_root_signature_desc, but does not free the structure itself.
root_signature | Signature description to free. |
void vkd3d_shader_free_scan_descriptor_info | ( | struct vkd3d_shader_scan_descriptor_info * | scan_descriptor_info | ) |
Free members of struct vkd3d_shader_scan_descriptor_info() allocated by vkd3d_shader_scan().
This function may free members of vkd3d_shader_scan_descriptor_info, but does not free the structure itself.
scan_descriptor_info | Descriptor information to free. |
void vkd3d_shader_free_shader_code | ( | struct vkd3d_shader_code * | code | ) |
Free shader code allocated by another vkd3d-shader function, such as vkd3d_shader_compile().
This function frees the vkd3d_shader_code::code member, but does not free the structure itself.
code | Code to free. |
void vkd3d_shader_free_shader_signature | ( | struct vkd3d_shader_signature * | signature | ) |
Free a structural representation of a shader input signature allocated by vkd3d_shader_parse_input_signature().
This function may free members of struct vkd3d_shader_signature, but does not free the structure itself.
signature | Signature description to free. |
enum vkd3d_shader_source_type * vkd3d_shader_get_supported_source_types | ( | unsigned int * | count | ) |
Returns the source types supported, with any target type, by vkd3d_shader_compile().
Use vkd3d_shader_get_supported_target_types() to determine which target types are supported for each source type.
count | Output location for the size, in elements, of the returned array. |
enum vkd3d_shader_target_type * vkd3d_shader_get_supported_target_types | ( | enum vkd3d_shader_source_type | source_type, |
unsigned int * | count | ||
) |
Returns the target types supported, with the given source type, by vkd3d_shader_compile().
source_type | Source type for which to enumerate supported target types. |
count | Output location for the size, in elements, of the returned array. |
const char * vkd3d_shader_get_version | ( | unsigned int * | major, |
unsigned int * | minor | ||
) |
Returns the current version of this library.
major | Output location for the major version of this library. |
minor | Output location for the minor version of this library. |
int vkd3d_shader_parse_input_signature | ( | const struct vkd3d_shader_code * | dxbc, |
struct vkd3d_shader_signature * | signature, | ||
char ** | messages | ||
) |
Read the input signature of a compiled shader, returning a structural description which can be easily parsed by C code.
This function parses a compiled shader. To parse a standalone root signature, use vkd3d_shader_parse_root_signature().
dxbc | Compiled byte code, in DXBC format. |
signature | Output location in which the parsed root signature will be stored. Members of signature may be allocated by vkd3d-shader. The signature should be freed with vkd3d_shader_free_shader_signature() when no longer needed. |
messages | Optional output location for error or informational messages produced by the compiler. This parameter behaves identically to the messages parameter of vkd3d_shader_compile(). |
int vkd3d_shader_parse_root_signature | ( | const struct vkd3d_shader_code * | dxbc, |
struct vkd3d_shader_versioned_root_signature_desc * | root_signature, | ||
char ** | messages | ||
) |
Convert a byte code description of a shader root signature to a structural description which can be easily parsed by C code.
This function corresponds to ID3D12VersionedRootSignatureDeserializer::GetUnconvertedRootSignatureDesc().
This function performs the reverse transformation of vkd3d_shader_serialize_root_signature().
This function parses a standalone root signature, and should not be confused with vkd3d_shader_parse_input_signature().
dxbc | Compiled byte code, in DXBC format. |
root_signature | Output location in which the decompiled root signature will be stored. Members of root_signature may be allocated by vkd3d-shader. The signature should be freed with vkd3d_shader_free_root_signature() when no longer needed. |
messages | Optional output location for error or informational messages produced by the compiler. This parameter behaves identically to the messages parameter of vkd3d_shader_compile(). |
int vkd3d_shader_scan | ( | const struct vkd3d_shader_compile_info * | compile_info, |
char ** | messages | ||
) |
Parse shader source code or byte code, returning various types of requested information.
Currently this function supports the following code types:
compile_info | A chained structure containing scan parameters. The DXBC_TPF scanner supports the following chained structures:
|
messages | Optional output location for error or informational messages produced by the compiler. This parameter behaves identically to the messages parameter of vkd3d_shader_compile(). |
int vkd3d_shader_serialize_root_signature | ( | const struct vkd3d_shader_versioned_root_signature_desc * | root_signature, |
struct vkd3d_shader_code * | dxbc, | ||
char ** | messages | ||
) |
Convert a structural description of a shader root signature to a byte code format capable of being read by ID3D12Device::CreateRootSignature.
The compiled signature is compatible with Microsoft D3D 12.
This function corresponds to D3D12SerializeVersionedRootSignature().
root_signature | Description of the root signature. |
dxbc | A pointer to a vkd3d_shader_code structure in which the compiled code will be stored. The compiled signature is allocated by vkd3d-shader and should be freed with vkd3d_shader_free_shader_code() when no longer needed. |
messages | Optional output location for error or informational messages produced by the compiler. This parameter behaves identically to the messages parameter of vkd3d_shader_compile(). |