45#ifndef __VKD3D_SHADER_PRIVATE_H
46#define __VKD3D_SHADER_PRIVATE_H
48#define NONAMELESSUNION
59#define VKD3D_VEC4_SIZE 4
60#define VKD3D_DVEC2_SIZE 2
62#define VKD3D_SHADER_COMPONENT_TYPE_COUNT (VKD3D_SHADER_COMPONENT_UINT64 + 1)
63#define VKD3D_SHADER_MINIMUM_PRECISION_COUNT (VKD3D_SHADER_MINIMUM_PRECISION_UINT_16 + 1)
750#define VKD3DSP_WRITEMASK_0 0x1u
751#define VKD3DSP_WRITEMASK_1 0x2u
752#define VKD3DSP_WRITEMASK_2 0x4u
753#define VKD3DSP_WRITEMASK_3 0x8u
754#define VKD3DSP_WRITEMASK_ALL 0xfu
848#define VKD3DSI_NONE 0x0
849#define VKD3DSI_TEXLD_PROJECT 0x1
850#define VKD3DSI_TEXLD_BIAS 0x2
851#define VKD3DSI_INDEXED_DYNAMIC 0x4
852#define VKD3DSI_RESINFO_RCP_FLOAT 0x1
853#define VKD3DSI_RESINFO_UINT 0x2
854#define VKD3DSI_SAMPLE_INFO_UINT 0x1
855#define VKD3DSI_SAMPLER_COMPARISON_MODE 0x1
856#define VKD3DSI_SHIFT_UNMASKED 0x1
857#define VKD3DSI_WAVE_PREFIX 0x1
859#define VKD3DSI_PRECISE_X 0x100
860#define VKD3DSI_PRECISE_Y 0x200
861#define VKD3DSI_PRECISE_Z 0x400
862#define VKD3DSI_PRECISE_W 0x800
863#define VKD3DSI_PRECISE_XYZW (VKD3DSI_PRECISE_X | VKD3DSI_PRECISE_Y \
864 | VKD3DSI_PRECISE_Z | VKD3DSI_PRECISE_W)
865#define VKD3DSI_PRECISE_SHIFT 8
883#define MAX_REG_OUTPUT 32
1074#define SM1_COLOR_REGISTER_OFFSET 8
1075#define SM1_RASTOUT_REGISTER_OFFSET 10
1077#define SIGNATURE_TARGET_LOCATION_UNUSED (~0u)
1121 unsigned int reg_idx,
unsigned int write_mask);
1383 unsigned int idx,
unsigned int count);
1387 unsigned int dst,
unsigned int src);
1546#define vkd3d_string_buffer_trace(buffer) \
1547 vkd3d_string_buffer_trace_(buffer, __FUNCTION__)
1600 const char *function);
1601#define vkd3d_shader_message_context_trace_messages(context) \
1602 vkd3d_shader_message_context_trace_messages_(context, __FUNCTION__)
1616#define vkd3d_shader_trace_text(text, size) \
1617 vkd3d_shader_trace_text_(text, size, __FUNCTION__)
1628 const char *semantic_name,
unsigned int semantic_idx,
bool output,
bool is_patch_constant_func);
1652#define SPIRV_MAX_SRC_COUNT 6
1756 unsigned int index);
1774 FIXME(
"Invalid write mask %#x.\n", write_mask);
1793 switch (write_mask32)
1805 ERR(
"Invalid 32 bit writemask when converting to 64 bit: %#x.\n", write_mask32);
1812 switch (write_mask64)
1824 ERR(
"Invalid 64 bit writemask: %#x.\n", write_mask64);
1846 ERR(
"Invalid 32 bit swizzle when converting to 64 bit: %#x.\n", swizzle32);
1868 ERR(
"Invalid 64 bit swizzle: %#x.\n", swizzle64);
1880 unsigned int i, compacted_swizzle = 0;
1891 return compacted_swizzle;
1896 static const unsigned int swizzles[16] =
1916 return swizzles[writemask & 0xf];
1925#define vkd3d_find_struct(c, t) vkd3d_find_struct_(c, VKD3D_SHADER_STRUCTURE_TYPE_##t)
1932 return (
void *)
chain;
1940#define VKD3D_DXBC_HEADER_SIZE (8 * sizeof(uint32_t))
1941#define VKD3D_DXBC_CHUNK_ALIGNMENT sizeof(uint32_t)
1943#define DXBC_MAX_SECTION_COUNT 7
static unsigned char bytes[4]
unsigned int component_count
static BOOL reserve(struct dynamic_array *array, int count, int itemsize)
static cab_ULONG checksum(const cab_UBYTE *data, cab_UWORD bytes, cab_ULONG csum)
static const WCHAR version[]
_ACRTIMP size_t __cdecl strlen(const char *)
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLuint GLsizei GLsizei * length
GLsizeiptr const GLvoid GLenum usage
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
enum wined3d_data_type data_type
D3D11_SHADER_VARIABLE_DESC desc
enum vkd3d_shader_register_type reg_type
enum vkd3d_shader_sysval_semantic sysval
const uint32_t * byte_code
struct shader_signature input_signature
struct shader_signature patch_constant_signature
struct shader_signature output_signature
struct vkd3d_shader_dxbc_section_desc sections[DXBC_MAX_SECTION_COUNT]
unsigned int section_count
struct signature_element * elements
unsigned int element_count
const char * semantic_name
enum vkd3d_shader_minimum_precision min_precision
enum vkd3d_shader_component_type component_type
unsigned int target_location
unsigned int register_index
enum vkd3d_shader_sysval_semantic sysval_semantic
unsigned int semantic_index
enum vkd3d_shader_interpolation_mode interpolation_mode
unsigned int stream_index
unsigned int register_count
unsigned int structure_stride
enum vkd3d_shader_resource_data_type resource_data_type
unsigned int sample_count
unsigned int register_index
enum vkd3d_shader_resource_type resource_type
enum vkd3d_shader_descriptor_type type
unsigned int register_space
struct vkd3d_shader_register reg
unsigned int register_count
unsigned int register_idx
unsigned int component_count
enum vkd3d_data_type data_type
unsigned int register_size
const struct vkd3d_shader_immediate_constant_buffer * initialiser
struct vkd3d_shader_immediate_constant_buffer ** icbs
struct vkd3d_shader_param_allocator dst_params
struct vkd3d_shader_src_param * outpointid_param
struct vkd3d_shader_param_allocator src_params
struct vkd3d_shader_instruction * elements
struct vkd3d_shader_src_param * src
enum vsir_global_flags global_flags
struct vkd3d_shader_constant_buffer cb
const struct vkd3d_shader_src_param * predicate
struct vsir_thread_group_size thread_group_size
const struct vkd3d_shader_immediate_constant_buffer * icb
enum vkd3d_shader_tessellator_partitioning tessellator_partitioning
struct vkd3d_shader_texel_offset texel_offset
struct vkd3d_shader_tgsm_raw tgsm_raw
struct vkd3d_shader_raw_resource raw_resource
struct vkd3d_shader_register_semantic register_semantic
enum vkd3d_shader_tessellator_output_primitive tessellator_output_primitive
unsigned int resource_stride
enum vkd3d_tessellator_domain tessellator_domain
struct vkd3d_shader_indexable_temp indexable_temp
enum vkd3d_shader_resource_type resource_type
float max_tessellation_factor
union vkd3d_shader_instruction::@6020 declaration
struct vkd3d_shader_function_table_pointer fp
struct vkd3d_shader_tgsm_structured tgsm_structured
enum vkd3d_shader_opcode opcode
enum vkd3d_data_type resource_data_type[VKD3D_VEC4_SIZE]
struct vkd3d_shader_semantic semantic
struct vkd3d_shader_structured_resource structured_resource
struct vkd3d_shader_dst_param * dst
struct vkd3d_shader_index_range index_range
struct vkd3d_shader_primitive_type primitive_type
enum vkd3d_shader_log_level log_level
struct vkd3d_shader_param_node * current
struct vkd3d_shader_param_node * head
struct vkd3d_shader_param_node * next
struct vsir_program * program
struct vkd3d_shader_message_context * message_context
enum vkd3d_primitive_type type
unsigned int patch_vertex_count
struct vkd3d_shader_src_param * rel_addr
struct vkd3d_shader_dst_param reg
enum vkd3d_shader_input_sysval_semantic sysval_semantic
uint32_t immconst_u32[VKD3D_VEC4_SIZE]
enum vkd3d_data_type data_type
enum vkd3d_shader_register_type type
double immconst_f64[VKD3D_DVEC2_SIZE]
float immconst_f32[VKD3D_VEC4_SIZE]
uint64_t immconst_u64[VKD3D_DVEC2_SIZE]
struct vkd3d_shader_register_index idx[3]
enum vkd3d_shader_register_precision precision
union vkd3d_shader_register::@6019 u
enum vsir_dimension dimension
struct vkd3d_shader_dst_param reg
struct vkd3d_shader_descriptor_info1 * descriptors
unsigned int descriptor_count
enum vkd3d_shader_resource_type resource_type
enum vkd3d_data_type resource_data_type[VKD3D_VEC4_SIZE]
unsigned int sample_count
enum vkd3d_decl_usage usage
struct vkd3d_shader_register reg
enum vkd3d_shader_src_modifier modifiers
struct vkd3d_shader_dst_param reg
struct vkd3d_shader_dst_param reg
unsigned int structure_count
enum vkd3d_shader_type type
struct vkd3d_string_buffer ** buffers
enum vkd3d_shader_structure_type type
struct vkd3d_shader_version shader_version
struct shader_signature patch_constant_signature
struct shader_signature input_signature
unsigned int output_control_point_count
enum vsir_control_flow_type cf_type
struct shader_signature output_signature
unsigned int parameter_count
const char ** block_names
const struct vkd3d_shader_parameter1 * parameters
struct vkd3d_shader_instruction_array instructions
unsigned int flat_constant_count[3]
uint8_t diffuse_written_mask
struct vsir_thread_group_size thread_group_size
unsigned int input_control_point_count
enum vsir_global_flags global_flags
enum vsir_normalisation_level normalisation_level
static unsigned int vkd3d_popcount(unsigned int v)
#define VKD3D_PRINTF_FUNC(fmt, args)
#define VKD3D_ASSERT(cond)
vkd3d_shader_resource_data_type
@ VKD3D_SHADER_RESOURCE_DATA_DOUBLE
@ VKD3D_SHADER_RESOURCE_DATA_MIXED
@ VKD3D_SHADER_RESOURCE_DATA_SNORM
@ VKD3D_SHADER_RESOURCE_DATA_CONTINUED
@ VKD3D_SHADER_RESOURCE_DATA_UINT
@ VKD3D_SHADER_RESOURCE_DATA_FLOAT
@ VKD3D_SHADER_RESOURCE_DATA_UNORM
@ VKD3D_SHADER_RESOURCE_DATA_INT
vkd3d_shader_sysval_semantic
@ VKD3D_SHADER_SV_CULL_DISTANCE
@ VKD3D_SHADER_SV_TESS_FACTOR_QUADEDGE
@ VKD3D_SHADER_SV_TESS_FACTOR_LINEDEN
@ VKD3D_SHADER_SV_CLIP_DISTANCE
vkd3d_shader_structure_type
vkd3d_shader_tessellator_output_primitive
vkd3d_shader_component_type
@ VKD3D_SHADER_COMPONENT_INT
@ VKD3D_SHADER_COMPONENT_UINT
@ VKD3D_SHADER_COMPONENT_DOUBLE
@ VKD3D_SHADER_COMPONENT_UINT64
@ VKD3D_SHADER_COMPONENT_FLOAT
@ VKD3D_SHADER_COMPONENT_BOOL
vkd3d_shader_descriptor_type
#define VKD3D_SHADER_SWIZZLE_MASK
vkd3d_shader_resource_type
vkd3d_shader_tessellator_partitioning
#define VKD3D_SHADER_SWIZZLE_SHIFT(idx)
vkd3d_shader_minimum_precision
#define VKD3D_SHADER_SWIZZLE(x, y, z, w)
vkd3d_shader_parameter_name
void vsir_program_trace(const struct vsir_program *program)
bool shader_instruction_array_init(struct vkd3d_shader_instruction_array *instructions, unsigned int reserve)
void vkd3d_shader_message_context_cleanup(struct vkd3d_shader_message_context *context)
struct signature_element * vsir_signature_find_element_for_reg(const struct shader_signature *signature, unsigned int reg_idx, unsigned int write_mask)
static enum vkd3d_shader_component_type vkd3d_component_type_from_resource_data_type(enum vkd3d_shader_resource_data_type data_type)
vkd3d_shader_src_modifier
int shader_extract_from_dxbc(const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_message_context *message_context, const char *source_name, struct dxbc_shader_desc *desc)
bool shader_sm4_is_scalar_register(const struct vkd3d_shader_register *reg)
static uint32_t vsir_swizzle_64_from_32(uint32_t swizzle32)
static bool vkd3d_shader_instruction_has_texel_offset(const struct vkd3d_shader_instruction *ins)
void vkd3d_string_buffer_init(struct vkd3d_string_buffer *buffer)
@ VKD3DSGF_ENABLE_WAVE_INTRINSICS
@ VKD3DSGF_ENABLE_RESOURCE_DESCRIPTOR_HEAP_INDEXING
@ VKD3DSGF_ENABLE_UAVS_AT_EVERY_STAGE
@ VKD3DSGF_ENABLE_RASTERIZER_ORDERED_VIEWS
@ VKD3DSGF_ENABLE_STENCIL_REF
@ VKD3DSGF_FORCE_NATIVE_LOW_PRECISION
@ VKD3DSGF_ENABLE_SAMPLER_FEEDBACK
@ VKD3DSGF_ENABLE_ATOMIC_INT64_ON_GROUP_SHARED
@ VKD3DSGF_ENABLE_SHADINGRATE
@ VKD3DSGF_ENABLE_ATOMIC_INT64_ON_TYPED_RESOURCE
@ VKD3DSGF_REFACTORING_ALLOWED
@ VKD3DSGF_ENABLE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS
@ VKD3DSGF_ENABLE_RAW_AND_STRUCTURED_BUFFERS
@ VKD3DSGF_FORCE_EARLY_DEPTH_STENCIL
@ VKD3DSGF_ENABLE_LVL_9_COMPARISON_FILTERING
@ VKD3DSGF_SKIP_OPTIMIZATION
@ VKD3DSGF_ENABLE_RAYTRACING_TIER_1_1
@ VKD3DSGF_ENABLE_VP_AND_RT_ARRAY_INDEX
@ VKD3DSGF_ENABLE_MINIMUM_PRECISION
@ VKD3DSGF_ENABLE_INNER_COVERAGE
@ VKD3DSGF_ENABLE_DOUBLE_PRECISION_FLOAT_OPS
@ VKD3DSGF_ENABLE_RELAXED_TYPED_UAV_FORMATS
@ VKD3DSGF_ENABLE_TILED_RESOURCE_INTRINSICS
@ VKD3DSGF_BIND_FOR_DURATION
@ VKD3DSGF_ENABLE_BARYCENTRICS
@ VKD3DSGF_ENABLE_UP_TO_64_UAVS
@ VKD3DSGF_ENABLE_11_1_DOUBLE_EXTENSIONS
@ VKD3DSGF_ENABLE_SAMPLER_DESCRIPTOR_HEAP_INDEXING
@ VKD3DSGF_ENABLE_SHADER_EXTENSIONS
@ VKD3DSGF_ENABLE_CS4_RAW_STRUCTURED_BUFFERS
@ VKD3DSGF_ENABLE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE
static bool data_type_is_64_bit(enum vkd3d_data_type data_type)
bool vkd3d_shader_message_context_copy_messages(struct vkd3d_shader_message_context *context, char **out)
static bool vkd3d_shader_ver_ge(const struct vkd3d_shader_version *v, unsigned int major, unsigned int minor)
int dxil_parse(const struct vkd3d_shader_compile_info *compile_info, uint64_t config_flags, struct vkd3d_shader_message_context *message_context, struct vsir_program *program)
static bool vsir_register_is_descriptor(const struct vkd3d_shader_register *reg)
@ VKD3D_SHADER_TYPE_VERTEX
@ VKD3D_SHADER_TYPE_LIBRARY
@ VKD3D_SHADER_TYPE_GEOMETRY
@ VKD3D_SHADER_TYPE_COMPUTE
@ VKD3D_SHADER_TYPE_GRAPHICS_COUNT
@ VKD3D_SHADER_TYPE_COUNT
@ VKD3D_SHADER_TYPE_TEXTURE
@ VKD3D_SHADER_TYPE_PIXEL
@ VKD3D_SHADER_TYPE_EFFECT
@ VKD3D_SHADER_TYPE_DOMAIN
const struct vkd3d_shader_parameter1 * vsir_program_get_parameter(const struct vsir_program *program, enum vkd3d_shader_parameter_name name)
vkd3d_shader_interpolation_mode
@ VKD3DSIM_LINEAR_NOPERSPECTIVE_CENTROID
@ VKD3DSIM_LINEAR_NOPERSPECTIVE_SAMPLE
@ VKD3DSIM_LINEAR_CENTROID
@ VKD3DSIM_LINEAR_NOPERSPECTIVE
static uint32_t vsir_swizzle_from_writemask(unsigned int writemask)
static struct vkd3d_shader_dst_param * vsir_program_get_dst_params(struct vsir_program *program, unsigned int count)
int vkd3d_string_buffer_vprintf(struct vkd3d_string_buffer *buffer, const char *format, va_list args)
#define VKD3DSP_WRITEMASK_3
bool shader_instruction_array_add_icb(struct vkd3d_shader_instruction_array *instructions, struct vkd3d_shader_immediate_constant_buffer *icb)
static unsigned int vsir_write_mask_component_count(uint32_t write_mask)
vkd3d_shader_register_type
@ VKD3DSPR_INCONTROLPOINT
@ VKD3DSPR_GROUPSHAREDMEM
@ VKD3DSPR_FUNCTIONPOINTER
@ VKD3DSPR_COMBINED_SAMPLER
@ VKD3DSPR_LOCALTHREADINDEX
@ VKD3DSPR_OUTCONTROLPOINT
@ VKD3DSPR_IMMCONSTBUFFER
@ VKD3DSUF_GLOBALLY_COHERENT
@ VKD3DSUF_RASTERISER_ORDERED_VIEW
@ VKD3DSUF_ORDER_PRESERVING_COUNTER
void vkd3d_shader_warning(struct vkd3d_shader_message_context *context, const struct vkd3d_shader_location *location, enum vkd3d_shader_error error, const char *format,...) VKD3D_PRINTF_FUNC(4
void vkd3d_shader_code_from_string_buffer(struct vkd3d_shader_code *code, struct vkd3d_string_buffer *buffer)
vkd3d_shader_atomic_rmw_flags
void set_string(struct vkd3d_bytecode_buffer *buffer, size_t offset, const char *string, size_t length)
bool shader_instruction_array_insert_at(struct vkd3d_shader_instruction_array *instructions, unsigned int idx, unsigned int count)
static bool data_type_is_floating_point(enum vkd3d_data_type data_type)
static bool register_is_undef(const struct vkd3d_shader_register *reg)
static bool component_type_is_64_bit(enum vkd3d_shader_component_type component_type)
void vkd3d_string_buffer_cache_cleanup(struct vkd3d_string_buffer_cache *list)
int vkd3d_string_buffer_print_f64(struct vkd3d_string_buffer *buffer, double d)
@ VKD3D_SHADER_ERROR_HLSL_INVALID_SEMANTIC
@ VKD3D_SHADER_ERROR_HLSL_INVALID_TEXEL_OFFSET
@ VKD3D_SHADER_ERROR_DXIL_INVALID_VALUE_SYMTAB
@ VKD3D_SHADER_WARNING_PP_UNTERMINATED_IF
@ VKD3D_SHADER_ERROR_SPV_INVALID_REGISTER_TYPE
@ VKD3D_SHADER_ERROR_D3DBC_UNDECLARED_SEMANTIC
@ VKD3D_SHADER_ERROR_D3DBC_INVALID_OPCODE
@ VKD3D_SHADER_WARNING_SPV_INVALID_SWIZZLE
@ VKD3D_SHADER_ERROR_TPF_INVALID_INDEX_RANGE_DCL
@ VKD3D_SHADER_ERROR_HLSL_MODIFIES_CONST
@ VKD3D_SHADER_ERROR_DXIL_INVALID_OPERAND
@ VKD3D_SHADER_WARNING_DXIL_IGNORING_ATTACHMENT
@ VKD3D_SHADER_ERROR_HLSL_INVALID_PARTITIONING
@ VKD3D_SHADER_ERROR_D3DBC_INVALID_WRITEMASK
@ VKD3D_SHADER_ERROR_DXIL_INVALID_ENTRY_POINT
@ VKD3D_SHADER_ERROR_DXIL_INVALID_BITCODE
@ VKD3D_SHADER_ERROR_GLSL_BINDING_NOT_FOUND
@ VKD3D_SHADER_WARNING_HLSL_IMPLICIT_TRUNCATION
@ VKD3D_SHADER_ERROR_D3DBC_INVALID_REGISTER_COUNT
@ VKD3D_SHADER_WARNING_HLSL_UNKNOWN_ATTRIBUTE
@ VKD3D_SHADER_WARNING_DXIL_INVALID_OPERATION
@ VKD3D_SHADER_WARNING_DXIL_TYPE_MISMATCH
@ VKD3D_SHADER_ERROR_SPV_DESCRIPTOR_IDX_UNSUPPORTED
@ VKD3D_SHADER_WARNING_DXIL_INVALID_MASK
@ VKD3D_SHADER_ERROR_HLSL_DIVISION_BY_ZERO
@ VKD3D_SHADER_ERROR_HLSL_MISSING_ATTRIBUTE
@ VKD3D_SHADER_ERROR_VSIR_INVALID_DATA_TYPE
@ VKD3D_SHADER_ERROR_DXBC_INVALID_CHUNK_OFFSET
@ VKD3D_SHADER_ERROR_GLSL_UNSUPPORTED
@ VKD3D_SHADER_ERROR_SPV_INVALID_SHADER
@ VKD3D_SHADER_WARNING_DXIL_UNDEFINED_OPERAND
@ VKD3D_SHADER_ERROR_HLSL_INVALID_TYPE
@ VKD3D_SHADER_ERROR_HLSL_INVALID_MODIFIER
@ VKD3D_SHADER_ERROR_DXIL_INVALID_CHUNK_SIZE
@ VKD3D_SHADER_ERROR_HLSL_INCONSISTENT_SAMPLER
@ VKD3D_SHADER_ERROR_VSIR_INVALID_SSA_USAGE
@ VKD3D_SHADER_ERROR_HLSL_NON_STATIC_OBJECT_REF
@ VKD3D_SHADER_ERROR_D3DBC_UNEXPECTED_EOF
@ VKD3D_SHADER_ERROR_DXBC_OUT_OF_MEMORY
@ VKD3D_SHADER_ERROR_HLSL_NON_FINITE_RESULT
@ VKD3D_SHADER_ERROR_SPV_NOT_IMPLEMENTED
@ VKD3D_SHADER_ERROR_VSIR_INVALID_DEST_COUNT
@ VKD3D_SHADER_ERROR_VSIR_INVALID_REGISTER_TYPE
@ VKD3D_SHADER_ERROR_SPV_OUT_OF_MEMORY
@ VKD3D_SHADER_ERROR_HLSL_FAILED_FORCED_UNROLL
@ VKD3D_SHADER_ERROR_HLSL_INVALID_OUTPUT_PRIMITIVE
@ VKD3D_SHADER_ERROR_VSIR_INVALID_GS
@ VKD3D_SHADER_ERROR_SPV_DESCRIPTOR_BINDING_NOT_FOUND
@ VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_SWIZZLE
@ VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_DIMENSION
@ VKD3D_SHADER_ERROR_DXBC_INVALID_SIZE
@ VKD3D_SHADER_ERROR_VSIR_INVALID_PRECISION
@ VKD3D_SHADER_ERROR_DXIL_INVALID_RESOURCE_HANDLE
@ VKD3D_SHADER_ERROR_HLSL_INVALID_RETURN
@ VKD3D_SHADER_ERROR_TPF_TOO_MANY_REGISTERS
@ VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY
@ VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_INDEX_COUNT
@ VKD3D_SHADER_ERROR_HLSL_MISSING_SEMANTIC
@ VKD3D_SHADER_WARNING_PP_UNKNOWN_DIRECTIVE
@ VKD3D_SHADER_ERROR_DXIL_INVALID_CHUNK_OFFSET
@ VKD3D_SHADER_ERROR_VSIR_INVALID_WRITE_MASK
@ VKD3D_SHADER_ERROR_DXIL_UNHANDLED_INTRINSIC
@ VKD3D_SHADER_ERROR_VSIR_INVALID_INDEX_COUNT
@ VKD3D_SHADER_ERROR_HLSL_INVALID_RESERVATION
@ VKD3D_SHADER_ERROR_FX_INVALID_VERSION
@ VKD3D_SHADER_ERROR_HLSL_WRONG_PARAMETER_COUNT
@ VKD3D_SHADER_ERROR_RS_MIXED_DESCRIPTOR_RANGE_TYPES
@ VKD3D_SHADER_ERROR_HLSL_INVALID_THREAD_COUNT
@ VKD3D_SHADER_WARNING_PP_INVALID_DIRECTIVE
@ VKD3D_SHADER_ERROR_SPV_UNSUPPORTED_FEATURE
@ VKD3D_SHADER_ERROR_DXBC_INVALID_MAGIC
@ VKD3D_SHADER_ERROR_DXBC_INVALID_SIGNATURE
@ VKD3D_SHADER_ERROR_HLSL_MISSING_INITIALIZER
@ VKD3D_SHADER_ERROR_PP_ERROR_DIRECTIVE
@ VKD3D_SHADER_ERROR_HLSL_MISPLACED_SAMPLER_STATE
@ VKD3D_SHADER_ERROR_GLSL_INTERNAL
@ VKD3D_SHADER_ERROR_RS_INVALID_DESCRIPTOR_RANGE_TYPE
@ VKD3D_SHADER_WARNING_HLSL_IMAGINARY_NUMERIC_RESULT
@ VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_DCL
@ VKD3D_SHADER_WARNING_DXIL_ENTRY_POINT_MISMATCH
@ VKD3D_SHADER_ERROR_DXIL_INVALID_FUNCTION_DCL
@ VKD3D_SHADER_ERROR_HLSL_NOT_IMPLEMENTED
@ VKD3D_SHADER_WARNING_VSIR_DYNAMIC_DESCRIPTOR_ARRAY
@ VKD3D_SHADER_ERROR_VSIR_MISSING_SEMANTIC
@ VKD3D_SHADER_WARNING_DXIL_UNKNOWN_SHADER_TYPE
@ VKD3D_SHADER_ERROR_DXIL_INVALID_RESOURCES
@ VKD3D_SHADER_WARNING_PP_UNTERMINATED_MACRO
@ VKD3D_SHADER_ERROR_HLSL_INVALID_STATE_BLOCK_ENTRY
@ VKD3D_SHADER_ERROR_VSIR_INVALID_PARAMETER
@ VKD3D_SHADER_ERROR_HLSL_RECURSIVE_CALL
@ VKD3D_SHADER_ERROR_HLSL_INVALID_LVALUE
@ VKD3D_SHADER_ERROR_MSL_BINDING_NOT_FOUND
@ VKD3D_SHADER_ERROR_SPV_INVALID_HANDLER
@ VKD3D_SHADER_ERROR_D3DBC_INVALID_REGISTER_TYPE
@ VKD3D_SHADER_WARNING_PP_ARGUMENT_COUNT_MISMATCH
@ VKD3D_SHADER_WARNING_D3DBC_IGNORED_INSTRUCTION_FLAGS
@ VKD3D_SHADER_ERROR_DXIL_INVALID_MODULE
@ VKD3D_SHADER_ERROR_VSIR_INVALID_INDEX
@ VKD3D_SHADER_ERROR_HLSL_INVALID_INDEX
@ VKD3D_SHADER_ERROR_MSL_INTERNAL
@ VKD3D_SHADER_ERROR_SPV_INVALID_TYPE
@ VKD3D_SHADER_WARNING_TPF_UNHANDLED_REGISTER_SWIZZLE
@ VKD3D_SHADER_WARNING_DXIL_INVALID_MODULE_LENGTH
@ VKD3D_SHADER_WARNING_PP_DIV_BY_ZERO
@ VKD3D_SHADER_WARNING_HLSL_DIVISION_BY_ZERO
@ VKD3D_SHADER_WARNING_DXIL_INVALID_BLOCK_LENGTH
@ VKD3D_SHADER_ERROR_DXIL_INVALID_PROPERTIES
@ VKD3D_SHADER_ERROR_VSIR_INVALID_MODIFIERS
@ VKD3D_SHADER_ERROR_DXIL_INVALID_OPERAND_COUNT
@ VKD3D_SHADER_ERROR_HLSL_NOT_DEFINED
@ VKD3D_SHADER_WARNING_SPV_IGNORING_FLAG
@ VKD3D_SHADER_ERROR_HLSL_INVALID_PROFILE
@ VKD3D_SHADER_ERROR_D3DBC_INVALID_REGISTER_INDEX
@ VKD3D_SHADER_WARNING_HLSL_NON_FINITE_RESULT
@ VKD3D_SHADER_ERROR_VSIR_INVALID_DCL_TEMPS
@ VKD3D_SHADER_ERROR_RS_INVALID_ROOT_PARAMETER_TYPE
@ VKD3D_SHADER_ERROR_RS_INVALID_VERSION
@ VKD3D_SHADER_ERROR_VSIR_INVALID_HANDLER
@ VKD3D_SHADER_ERROR_HLSL_INVALID_SIZE
@ VKD3D_SHADER_WARNING_TPF_UNHANDLED_REGISTER_MASK
@ VKD3D_SHADER_WARNING_PP_ALREADY_DEFINED
@ VKD3D_SHADER_ERROR_HLSL_INVALID_WRITEMASK
@ VKD3D_SHADER_ERROR_DXIL_INVALID_TYPE_TABLE
@ VKD3D_SHADER_ERROR_HLSL_INCOMPATIBLE_PROFILE
@ VKD3D_SHADER_ERROR_D3DBC_OUT_OF_MEMORY
@ VKD3D_SHADER_ERROR_VSIR_INVALID_SHIFT
@ VKD3D_SHADER_ERROR_HLSL_OVERLAPPING_RESERVATIONS
@ VKD3D_SHADER_ERROR_TPF_OUT_OF_MEMORY
@ VKD3D_SHADER_ERROR_TPF_INVALID_CASE_VALUE
@ VKD3D_SHADER_ERROR_HLSL_INVALID_DOMAIN
@ VKD3D_SHADER_ERROR_DXBC_INVALID_CHUNK_SIZE
@ VKD3D_SHADER_ERROR_HLSL_INVALID_CONTROL_POINT_COUNT
@ VKD3D_SHADER_ERROR_FX_INVALID_DATA
@ VKD3D_SHADER_ERROR_HLSL_OFFSET_OUT_OF_BOUNDS
@ VKD3D_SHADER_ERROR_VSIR_INVALID_SIGNATURE
@ VKD3D_SHADER_WARNING_DXIL_IGNORING_OPERANDS
@ VKD3D_SHADER_ERROR_VSIR_NOT_IMPLEMENTED
@ VKD3D_SHADER_ERROR_D3DBC_NOT_IMPLEMENTED
@ VKD3D_SHADER_WARNING_TPF_UNHANDLED_INDEX_RANGE_MASK
@ VKD3D_SHADER_ERROR_HLSL_INVALID_SYNTAX
@ VKD3D_SHADER_ERROR_DXIL_INVALID_TYPE_ID
@ VKD3D_SHADER_ERROR_VSIR_DUPLICATE_DCL_TEMPS
@ VKD3D_SHADER_ERROR_VSIR_INVALID_SWIZZLE
@ VKD3D_SHADER_ERROR_D3DBC_INVALID_PROFILE
@ VKD3D_SHADER_ERROR_HLSL_MISPLACED_COMPILE
@ VKD3D_SHADER_ERROR_PP_INVALID_SYNTAX
@ VKD3D_SHADER_WARNING_HLSL_IGNORED_DEFAULT_VALUE
@ VKD3D_SHADER_ERROR_DXBC_INVALID_CHECKSUM
@ VKD3D_SHADER_ERROR_HLSL_UNKNOWN_MODIFIER
@ VKD3D_SHADER_ERROR_HLSL_DUPLICATE_SWITCH_CASE
@ VKD3D_SHADER_ERROR_VSIR_INVALID_CONTROL_FLOW
@ VKD3D_SHADER_ERROR_DXIL_INVALID_SIZE
@ VKD3D_SHADER_ERROR_DXIL_INVALID_METADATA
@ VKD3D_SHADER_ERROR_DXIL_OUT_OF_MEMORY
@ VKD3D_SHADER_ERROR_D3DBC_INVALID_RESOURCE_TYPE
@ VKD3D_SHADER_ERROR_SPV_INVALID_DESCRIPTOR_BINDING
@ VKD3D_SHADER_ERROR_DXIL_UNSUPPORTED_BITCODE_FORMAT
@ VKD3D_SHADER_ERROR_HLSL_MISSING_TECHNIQUE
@ VKD3D_SHADER_ERROR_VSIR_INVALID_TESSELLATION
@ VKD3D_SHADER_ERROR_VSIR_INVALID_DIMENSION
@ VKD3D_SHADER_ERROR_VSIR_INVALID_SOURCE_COUNT
@ VKD3D_SHADER_WARNING_SPV_INVALID_UAV_FLAGS
@ VKD3D_SHADER_ERROR_D3DBC_INVALID_VERSION_TOKEN
@ VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_RANGE
@ VKD3D_SHADER_ERROR_FX_NOT_IMPLEMENTED
@ VKD3D_SHADER_ERROR_TPF_INVALID_IO_REGISTER
@ VKD3D_SHADER_WARNING_HLSL_IGNORED_ATTRIBUTE
@ VKD3D_SHADER_ERROR_DXIL_INVALID_SIGNATURE
@ VKD3D_SHADER_ERROR_HLSL_REDEFINED
@ VKD3D_SHADER_ERROR_PP_INCLUDE_FAILED
@ VKD3D_SHADER_WARNING_DXIL_UNKNOWN_MAGIC_NUMBER
@ VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF
@ VKD3D_SHADER_ERROR_DXBC_INVALID_VERSION
@ VKD3D_SHADER_WARNING_TPF_MASK_NOT_CONTIGUOUS
static unsigned int vkd3d_write_mask_from_component_count(unsigned int component_count)
#define VKD3DSP_WRITEMASK_ALL
@ VSIR_FULLY_NORMALISED_IO
@ VSIR_NORMALISED_HULL_CONTROL_POINT_IO
static struct vkd3d_shader_src_param * vsir_program_get_src_params(struct vsir_program *program, unsigned int count)
bool vsir_program_init(struct vsir_program *program, const struct vkd3d_shader_compile_info *compile_info, const struct vkd3d_shader_version *version, unsigned int reserve, enum vsir_control_flow_type cf_type, enum vsir_normalisation_level normalisation_level)
static bool register_is_constant_or_undef(const struct vkd3d_shader_register *reg)
static bool data_type_is_integer(enum vkd3d_data_type data_type)
vkd3d_shader_input_sysval_semantic
@ VKD3D_SIV_TRIANGLE_U_TESS_FACTOR
@ VKD3D_SIV_CULL_DISTANCE
@ VKD3D_SIV_IS_FRONT_FACE
@ VKD3D_SIV_LINE_DETAIL_TESS_FACTOR
@ VKD3D_SIV_QUAD_V1_TESS_FACTOR
@ VKD3D_SIV_QUAD_U1_TESS_FACTOR
@ VKD3D_SIV_QUAD_U0_TESS_FACTOR
@ VKD3D_SIV_QUAD_U_INNER_TESS_FACTOR
@ VKD3D_SIV_TRIANGLE_INNER_TESS_FACTOR
@ VKD3D_SIV_QUAD_V_INNER_TESS_FACTOR
@ VKD3D_SIV_TRIANGLE_W_TESS_FACTOR
@ VKD3D_SIV_RENDER_TARGET_ARRAY_INDEX
@ VKD3D_SIV_LINE_DENSITY_TESS_FACTOR
@ VKD3D_SIV_CLIP_DISTANCE
@ VKD3D_SIV_TRIANGLE_V_TESS_FACTOR
@ VKD3D_SIV_QUAD_V0_TESS_FACTOR
@ VKD3D_SIV_VIEWPORT_ARRAY_INDEX
static unsigned int vsir_write_mask_get_component_idx(uint32_t write_mask)
int tpf_parse(const struct vkd3d_shader_compile_info *compile_info, uint64_t config_flags, struct vkd3d_shader_message_context *message_context, struct vsir_program *program)
@ VSIR_RASTOUT_POINT_SIZE
void vkd3d_compute_md5(const void *dxbc, size_t size, uint32_t checksum[4], enum vkd3d_md5_variant variant)
static enum vkd3d_shader_component_type vkd3d_component_type_from_data_type(enum vkd3d_data_type data_type)
static unsigned int vsir_swizzle_get_component(uint32_t swizzle, unsigned int idx)
@ VKD3DSIH_LD_UAV_TYPED_S
@ VKD3DSIH_DCL_IMMEDIATE_CONSTANT_BUFFER
@ VKD3DSIH_QUAD_READ_LANE_AT
@ VKD3DSIH_IMM_ATOMIC_UMAX
@ VKD3DSIH_DCL_HS_JOIN_PHASE_INSTANCE_COUNT
@ VKD3DSIH_DCL_TESSELLATOR_OUTPUT_PRIMITIVE
@ VKD3DSIH_WAVE_READ_LANE_AT
@ VKD3DSIH_DCL_INPUT_CONTROL_POINT_COUNT
@ VKD3DSIH_WAVE_PREFIX_BIT_COUNT
@ VKD3DSIH_WAVE_ACTIVE_ALL_EQUAL
@ VKD3DSIH_IMM_ATOMIC_XOR
@ VKD3DSIH_GATHER4_PO_C_S
@ VKD3DSIH_DCL_INPUT_PRIMITIVE
@ VKD3DSIH_STORE_UAV_TYPED
@ VKD3DSIH_WAVE_IS_FIRST_LANE
@ VKD3DSIH_WAVE_ACTIVE_BIT_OR
@ VKD3DSIH_DCL_GS_INSTANCES
@ VKD3DSIH_QUAD_READ_ACROSS_X
@ VKD3DSIH_DCL_OUTPUT_SIV
@ VKD3DSIH_DCL_FUNCTION_TABLE
@ VKD3DSIH_QUAD_READ_ACROSS_D
@ VKD3DSIH_DCL_RESOURCE_RAW
@ VKD3DSIH_DCL_VERTICES_OUT
@ VKD3DSIH_DCL_OUTPUT_TOPOLOGY
@ VKD3DSIH_IMM_ATOMIC_CONSUME
@ VKD3DSIH_DCL_GLOBAL_FLAGS
@ VKD3DSIH_EVAL_SAMPLE_INDEX
@ VKD3DSIH_CHECK_ACCESS_FULLY_MAPPED
@ VKD3DSIH_DCL_FUNCTION_BODY
@ VKD3DSIH_DCL_HS_MAX_TESSFACTOR
@ VKD3DSIH_DCL_UAV_STRUCTURED
@ VKD3DSIH_HS_CONTROL_POINT_PHASE
@ VKD3DSIH_DCL_INPUT_PS_SIV
@ VKD3DSIH_IMM_ATOMIC_IADD
@ VKD3DSIH_IMM_ATOMIC_EXCH
@ VKD3DSIH_ATOMIC_CMP_STORE
@ VKD3DSIH_DCL_HS_FORK_PHASE_INSTANCE_COUNT
@ VKD3DSIH_DCL_THREAD_GROUP
@ VKD3DSIH_WAVE_ACTIVE_BIT_XOR
@ VKD3DSIH_IMM_ATOMIC_IMIN
@ VKD3DSIH_QUAD_READ_ACROSS_Y
@ VKD3DSIH_WAVE_ACTIVE_BIT_AND
@ VKD3DSIH_IMM_ATOMIC_IMAX
@ VKD3DSIH_IMM_ATOMIC_ALLOC
@ VKD3DSIH_IMM_ATOMIC_AND
@ VKD3DSIH_WAVE_ACTIVE_BALLOT
@ VKD3DSIH_DCL_TGSM_STRUCTURED
@ VKD3DSIH_DCL_RESOURCE_STRUCTURED
@ VKD3DSIH_WAVE_READ_LANE_FIRST
@ VKD3DSIH_SWITCH_MONOLITHIC
@ VKD3DSIH_DCL_TESSELLATOR_DOMAIN
@ VKD3DSIH_DCL_OUTPUT_CONTROL_POINT_COUNT
@ VKD3DSIH_SAMPLE_GRAD_CL_S
@ VKD3DSIH_STORE_STRUCTURED
@ VKD3DSIH_IMM_ATOMIC_UMIN
@ VKD3DSIH_DCL_INDEX_RANGE
@ VKD3DSIH_DCL_INPUT_PS_SGV
@ VKD3DSIH_DCL_CONSTANT_BUFFER
@ VKD3DSIH_DCL_INDEXABLE_TEMP
@ VKD3DSIH_IMM_ATOMIC_CMP_EXCH
@ VKD3DSIH_WAVE_ALL_BIT_COUNT
@ VKD3DSIH_LD_STRUCTURED_S
@ VKD3DSIH_DCL_TESSELLATOR_PARTITIONING
int spirv_compile(struct vsir_program *program, uint64_t config_flags, const struct vkd3d_shader_scan_descriptor_info1 *scan_descriptor_info, const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context)
uint32_t vkd3d_parse_integer(const char *s)
size_t bytecode_put_bytes_unaligned(struct vkd3d_bytecode_buffer *buffer, const void *bytes, size_t size)
struct vkd3d_string_buffer * vkd3d_string_buffer_get(struct vkd3d_string_buffer_cache *list)
@ VKD3DSSF_GROUP_SHARED_MEMORY
@ VKD3DSSF_THREAD_GROUP_UAV
struct vkd3d_shader_src_param * vsir_program_create_outpointid_param(struct vsir_program *program)
void vkd3d_string_buffer_cleanup(struct vkd3d_string_buffer *buffer)
static bool data_type_is_bool(enum vkd3d_data_type data_type)
void vkd3d_string_buffer_truncate(struct vkd3d_string_buffer *buffer, size_t size)
int dxbc_writer_write(struct dxbc_writer *dxbc, struct vkd3d_shader_code *code)
static bool vsir_sysval_semantic_is_clip_cull(enum vkd3d_shader_sysval_semantic sysval_semantic)
@ VSIR_ASM_FLAG_DUMP_ALL_INDICES
@ VSIR_ASM_FLAG_DUMP_TYPES
void vsir_src_param_init_label(struct vkd3d_shader_src_param *param, unsigned int label_id)
size_t bytecode_reserve_bytes(struct vkd3d_bytecode_buffer *buffer, size_t size)
void vsir_program_cleanup(struct vsir_program *program)
size_t bytecode_align(struct vkd3d_bytecode_buffer *buffer)
int vkd3d_string_buffer_print_f32(struct vkd3d_string_buffer *buffer, float f)
void shader_instruction_array_destroy(struct vkd3d_shader_instruction_array *instructions)
void vkd3d_string_buffer_clear(struct vkd3d_string_buffer *buffer)
int d3dbc_parse(const struct vkd3d_shader_compile_info *compile_info, uint64_t config_flags, struct vkd3d_shader_message_context *message_context, struct vsir_program *program)
bool sm1_register_from_semantic_name(const struct vkd3d_shader_version *version, const char *semantic_name, unsigned int semantic_index, bool output, enum vkd3d_shader_register_type *type, unsigned int *reg)
vkd3d_shader_register_precision
@ VKD3D_SHADER_REGISTER_PRECISION_DEFAULT
@ VKD3D_SHADER_REGISTER_PRECISION_MIN_UINT_16
@ VKD3D_SHADER_REGISTER_PRECISION_COUNT
@ VKD3D_SHADER_REGISTER_PRECISION_INVALID
@ VKD3D_SHADER_REGISTER_PRECISION_MIN_INT_16
@ VKD3D_SHADER_REGISTER_PRECISION_MIN_FLOAT_10
@ VKD3D_SHADER_REGISTER_PRECISION_MIN_FLOAT_16
enum vkd3d_result d3d_asm_compile(const struct vsir_program *program, const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, enum vsir_asm_flags flags)
void vsir_register_init(struct vkd3d_shader_register *reg, enum vkd3d_shader_register_type reg_type, enum vkd3d_data_type data_type, unsigned int idx_count)
int hlsl_compile_shader(const struct vkd3d_shader_code *hlsl, const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context)
int msl_compile(struct vsir_program *program, uint64_t config_flags, const struct vkd3d_shader_scan_descriptor_info1 *descriptor_info, const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context)
static uint32_t vsir_write_mask_32_from_64(uint32_t write_mask64)
bool vsir_instruction_init_with_params(struct vsir_program *program, struct vkd3d_shader_instruction *ins, const struct vkd3d_shader_location *location, enum vkd3d_shader_opcode opcode, unsigned int dst_count, unsigned int src_count)
static bool register_is_scalar_constant_zero(const struct vkd3d_shader_register *reg)
void * shader_param_allocator_get(struct vkd3d_shader_param_allocator *allocator, unsigned int count)
@ VKD3D_TESSELLATOR_DOMAIN_INVALID
@ VKD3D_TESSELLATOR_DOMAIN_COUNT
@ VKD3D_TESSELLATOR_DOMAIN_TRIANGLE
@ VKD3D_TESSELLATOR_DOMAIN_LINE
@ VKD3D_TESSELLATOR_DOMAIN_QUAD
int glsl_compile(struct vsir_program *program, uint64_t config_flags, const struct vkd3d_shader_scan_descriptor_info1 *descriptor_info, const struct vkd3d_shader_scan_combined_resource_sampler_info *combined_sampler_info, const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context)
static bool register_is_ssa(const struct vkd3d_shader_register *reg)
bool sm4_register_from_semantic_name(const struct vkd3d_shader_version *version, const char *semantic_name, bool output, enum vkd3d_shader_register_type *type, bool *has_idx)
static enum vkd3d_data_type vkd3d_data_type_from_component_type(enum vkd3d_shader_component_type component_type)
void vkd3d_shader_message_context_init(struct vkd3d_shader_message_context *context, enum vkd3d_shader_log_level log_level)
bool vsir_signature_find_sysval(const struct shader_signature *signature, enum vkd3d_shader_sysval_semantic sysval, unsigned int semantic_index, unsigned int *element_index)
static size_t put_string(struct vkd3d_bytecode_buffer *buffer, const char *string)
static bool register_is_constant(const struct vkd3d_shader_register *reg)
void void vkd3d_shader_vwarning(struct vkd3d_shader_message_context *context, const struct vkd3d_shader_location *location, enum vkd3d_shader_error error, const char *format, va_list args)
vkd3d_shader_config_flags
@ VKD3D_SHADER_CONFIG_FLAG_FORCE_VALIDATION
void vsir_src_param_init(struct vkd3d_shader_src_param *param, enum vkd3d_shader_register_type reg_type, enum vkd3d_data_type data_type, unsigned int idx_count)
int void vkd3d_string_buffer_release(struct vkd3d_string_buffer_cache *list, struct vkd3d_string_buffer *buffer)
void vsir_dst_param_init(struct vkd3d_shader_dst_param *param, enum vkd3d_shader_register_type reg_type, enum vkd3d_data_type data_type, unsigned int idx_count)
@ VKD3D_DECL_USAGE_SAMPLE
@ VKD3D_DECL_USAGE_BLEND_WEIGHT
@ VKD3D_DECL_USAGE_BINORMAL
@ VKD3D_DECL_USAGE_TEXCOORD
@ VKD3D_DECL_USAGE_BLEND_INDICES
@ VKD3D_DECL_USAGE_TANGENT
@ VKD3D_DECL_USAGE_POSITION
@ VKD3D_DECL_USAGE_TESS_FACTOR
@ VKD3D_DECL_USAGE_NORMAL
@ VKD3D_DECL_USAGE_POSITIONT
static size_t put_f32(struct vkd3d_bytecode_buffer *buffer, float value)
static void * vkd3d_find_struct_(const struct vkd3d_struct *chain, enum vkd3d_shader_structure_type type)
static uint32_t vsir_write_mask_64_from_32(uint32_t write_mask32)
static bool vsir_sysval_semantic_is_tess_factor(enum vkd3d_shader_sysval_semantic sysval_semantic)
void void vkd3d_shader_verror(struct vkd3d_shader_message_context *context, const struct vkd3d_shader_location *location, enum vkd3d_shader_error error, const char *format, va_list args)
void vkd3d_string_buffer_cache_init(struct vkd3d_string_buffer_cache *list)
@ VKD3D_PT_TRIANGLELIST_ADJ
@ VKD3D_PT_TRIANGLESTRIP_ADJ
vkd3d_shader_conditional_op
@ VKD3D_SHADER_CONDITIONAL_OP_NZ
@ VKD3D_SHADER_CONDITIONAL_OP_Z
enum vkd3d_result vsir_program_transform(struct vsir_program *program, uint64_t config_flags, const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_message_context *message_context)
const char * shader_get_type_prefix(enum vkd3d_shader_type type)
void vkd3d_shader_parser_error(struct vkd3d_shader_parser *parser, enum vkd3d_shader_error error, const char *format,...) VKD3D_PRINTF_FUNC(3
int preproc_lexer_parse(const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context)
vkd3d_shader_dst_modifier
@ VKD3DSPDM_PARTIALPRECISION
@ VKD3DSPDM_MSAMPCENTROID
static unsigned int vkd3d_compact_swizzle(uint32_t swizzle, uint32_t write_mask)
void vkd3d_shader_parser_warning(struct vkd3d_shader_parser *parser, enum vkd3d_shader_error error, const char *format,...) VKD3D_PRINTF_FUNC(3
int shader_parse_input_signature(const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_message_context *message_context, struct shader_signature *signature)
static bool vsir_register_is_label(const struct vkd3d_shader_register *reg)
#define VKD3DSP_WRITEMASK_0
void vkd3d_shader_message_context_trace_messages_(const struct vkd3d_shader_message_context *context, const char *function)
void shader_signature_cleanup(struct shader_signature *signature)
void set_u32(struct vkd3d_bytecode_buffer *buffer, size_t offset, uint32_t value)
enum vkd3d_shader_input_sysval_semantic vkd3d_siv_from_sysval_indexed(enum vkd3d_shader_sysval_semantic sysval, unsigned int index)
bool sm1_usage_from_semantic_name(const char *semantic_name, uint32_t semantic_index, enum vkd3d_decl_usage *usage, uint32_t *usage_idx)
#define DXBC_MAX_SECTION_COUNT
int fx_parse(const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context)
#define VKD3DSP_WRITEMASK_1
void vsir_instruction_init(struct vkd3d_shader_instruction *ins, const struct vkd3d_shader_location *location, enum vkd3d_shader_opcode opcode)
bool shader_instruction_array_clone_instruction(struct vkd3d_shader_instruction_array *instructions, unsigned int dst, unsigned int src)
void vkd3d_shader_vnote(struct vkd3d_shader_message_context *context, const struct vkd3d_shader_location *location, enum vkd3d_shader_log_level level, const char *format, va_list args)
bool sm4_sysval_semantic_from_semantic_name(enum vkd3d_shader_sysval_semantic *sysval_semantic, const struct vkd3d_shader_version *version, bool semantic_compat_mapping, enum vkd3d_tessellator_domain domain, const char *semantic_name, unsigned int semantic_idx, bool output, bool is_patch_constant_func)
uint64_t vkd3d_shader_init_config_flags(void)
static struct vkd3d_shader_src_param * shader_src_param_allocator_get(struct vkd3d_shader_param_allocator *allocator, unsigned int count)
static bool register_is_numeric_array(const struct vkd3d_shader_register *reg)
static enum vkd3d_shader_input_sysval_semantic vkd3d_siv_from_sysval(enum vkd3d_shader_sysval_semantic sysval)
void dxbc_writer_init(struct dxbc_writer *dxbc)
void void vkd3d_shader_parser_init(struct vkd3d_shader_parser *parser, struct vsir_program *program, struct vkd3d_shader_message_context *message_context, const char *source_name)
int vsir_program_compile(struct vsir_program *program, uint64_t config_flags, const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context)
enum vkd3d_result vsir_program_validate(struct vsir_program *program, uint64_t config_flags, const char *source_name, struct vkd3d_shader_message_context *message_context)
static size_t bytecode_get_size(struct vkd3d_bytecode_buffer *buffer)
void free_dxbc_shader_desc(struct dxbc_shader_desc *desc)
bool shader_instruction_array_reserve(struct vkd3d_shader_instruction_array *instructions, unsigned int reserve)
#define VKD3DSP_WRITEMASK_2
int vkd3d_string_buffer_printf(struct vkd3d_string_buffer *buffer, const char *format,...) VKD3D_PRINTF_FUNC(2
enum vkd3d_result vsir_program_transform_early(struct vsir_program *program, uint64_t config_flags, const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_message_context *message_context)
static struct vkd3d_shader_dst_param * shader_dst_param_allocator_get(struct vkd3d_shader_param_allocator *allocator, unsigned int count)
void dxbc_writer_add_section(struct dxbc_writer *dxbc, uint32_t tag, const void *data, size_t size)
size_t bytecode_put_bytes(struct vkd3d_bytecode_buffer *buffer, const void *bytes, size_t size)
void vkd3d_string_buffer_trace_(const struct vkd3d_string_buffer *buffer, const char *function)
void vkd3d_shader_trace_text_(const char *text, size_t size, const char *function)
static bool vkd3d_shader_ver_le(const struct vkd3d_shader_version *v, unsigned int major, unsigned int minor)
static size_t put_u32(struct vkd3d_bytecode_buffer *buffer, uint32_t value)
static uint32_t vsir_swizzle_32_from_64(uint32_t swizzle64)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out