ReactOS 0.4.17-dev-934-g091855f
vkd3d_shader_private.h File Reference
#include "vkd3d_common.h"
#include "vkd3d_memory.h"
#include "vkd3d_shader.h"
#include "wine/list.h"
#include <inttypes.h>
#include <limits.h>
#include <stdbool.h>
#include <string.h>
Include dependency graph for vkd3d_shader_private.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  vkd3d_shader_version
 
struct  vkd3d_shader_immediate_constant_buffer
 
struct  vkd3d_shader_indexable_temp
 
struct  vkd3d_shader_register_index
 
struct  vkd3d_shader_register
 
struct  vkd3d_shader_dst_param
 
struct  vkd3d_shader_src_param
 
struct  vkd3d_shader_index_range
 
struct  vkd3d_shader_register_range
 
struct  vkd3d_shader_resource
 
struct  vkd3d_shader_semantic
 
struct  signature_element
 
struct  shader_signature
 
struct  dxbc_shader_desc
 
struct  vkd3d_shader_register_semantic
 
struct  vkd3d_shader_sampler
 
struct  vkd3d_shader_constant_buffer
 
struct  vkd3d_shader_structured_resource
 
struct  vkd3d_shader_raw_resource
 
struct  vkd3d_shader_tgsm
 
struct  vkd3d_shader_tgsm_raw
 
struct  vkd3d_shader_tgsm_structured
 
struct  vsir_thread_group_size
 
struct  vkd3d_shader_function_table_pointer
 
struct  vkd3d_shader_texel_offset
 
struct  vkd3d_shader_primitive_type
 
struct  vkd3d_shader_location
 
struct  vkd3d_shader_instruction
 
struct  vkd3d_shader_param_node
 
struct  vkd3d_shader_param_allocator
 
struct  vkd3d_shader_instruction_array
 
struct  vsir_program
 
struct  vkd3d_shader_parser
 
struct  vkd3d_shader_descriptor_info1
 
struct  vkd3d_shader_scan_descriptor_info1
 
struct  vkd3d_string_buffer
 
struct  vkd3d_string_buffer_cache
 
struct  vkd3d_bytecode_buffer
 
struct  vkd3d_shader_message_context
 
struct  vkd3d_struct
 
struct  dxbc_writer
 

Macros

#define NONAMELESSUNION
 
#define VKD3D_VEC4_SIZE   4
 
#define VKD3D_DVEC2_SIZE   2
 
#define VKD3D_SHADER_COMPONENT_TYPE_COUNT   (VKD3D_SHADER_COMPONENT_UINT64 + 1)
 
#define VKD3D_SHADER_MINIMUM_PRECISION_COUNT   (VKD3D_SHADER_MINIMUM_PRECISION_UINT_16 + 1)
 
#define VKD3DSP_WRITEMASK_0   0x1u /* .x r */
 
#define VKD3DSP_WRITEMASK_1   0x2u /* .y g */
 
#define VKD3DSP_WRITEMASK_2   0x4u /* .z b */
 
#define VKD3DSP_WRITEMASK_3   0x8u /* .w a */
 
#define VKD3DSP_WRITEMASK_ALL   0xfu /* all */
 
#define VKD3DSI_NONE   0x0
 
#define VKD3DSI_TEXLD_PROJECT   0x1
 
#define VKD3DSI_TEXLD_BIAS   0x2
 
#define VKD3DSI_INDEXED_DYNAMIC   0x4
 
#define VKD3DSI_RESINFO_RCP_FLOAT   0x1
 
#define VKD3DSI_RESINFO_UINT   0x2
 
#define VKD3DSI_SAMPLE_INFO_UINT   0x1
 
#define VKD3DSI_SAMPLER_COMPARISON_MODE   0x1
 
#define VKD3DSI_SHIFT_UNMASKED   0x1
 
#define VKD3DSI_WAVE_PREFIX   0x1
 
#define VKD3DSI_PRECISE_X   0x100
 
#define VKD3DSI_PRECISE_Y   0x200
 
#define VKD3DSI_PRECISE_Z   0x400
 
#define VKD3DSI_PRECISE_W   0x800
 
#define VKD3DSI_PRECISE_XYZW
 
#define VKD3DSI_PRECISE_SHIFT   8
 
#define MAX_REG_OUTPUT   32
 
#define SM1_COLOR_REGISTER_OFFSET   8
 
#define SM1_RASTOUT_REGISTER_OFFSET   10
 
#define SIGNATURE_TARGET_LOCATION_UNUSED   (~0u)
 
#define vkd3d_string_buffer_trace(buffer)    vkd3d_string_buffer_trace_(buffer, __FUNCTION__)
 
#define vkd3d_shader_message_context_trace_messages(context)    vkd3d_shader_message_context_trace_messages_(context, __FUNCTION__)
 
#define vkd3d_shader_trace_text(text, size)    vkd3d_shader_trace_text_(text, size, __FUNCTION__)
 
#define SPIRV_MAX_SRC_COUNT   6
 
#define vkd3d_find_struct(c, t)   vkd3d_find_struct_(c, VKD3D_SHADER_STRUCTURE_TYPE_##t)
 
#define VKD3D_DXBC_HEADER_SIZE   (8 * sizeof(uint32_t))
 
#define VKD3D_DXBC_CHUNK_ALIGNMENT   sizeof(uint32_t)
 
#define DXBC_MAX_SECTION_COUNT   7
 

Enumerations

enum  vkd3d_shader_error {
  VKD3D_SHADER_ERROR_DXBC_INVALID_SIZE = 1 , VKD3D_SHADER_ERROR_DXBC_INVALID_MAGIC = 2 , VKD3D_SHADER_ERROR_DXBC_INVALID_CHECKSUM = 3 , VKD3D_SHADER_ERROR_DXBC_INVALID_VERSION = 4 ,
  VKD3D_SHADER_ERROR_DXBC_INVALID_CHUNK_OFFSET = 5 , VKD3D_SHADER_ERROR_DXBC_INVALID_CHUNK_SIZE = 6 , VKD3D_SHADER_ERROR_DXBC_OUT_OF_MEMORY = 7 , VKD3D_SHADER_ERROR_DXBC_INVALID_SIGNATURE = 8 ,
  VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF = 1000 , VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_RANGE = 1001 , VKD3D_SHADER_ERROR_TPF_OUT_OF_MEMORY = 1002 , VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_INDEX_COUNT = 1003 ,
  VKD3D_SHADER_ERROR_TPF_TOO_MANY_REGISTERS = 1004 , VKD3D_SHADER_ERROR_TPF_INVALID_IO_REGISTER = 1005 , VKD3D_SHADER_ERROR_TPF_INVALID_INDEX_RANGE_DCL = 1006 , VKD3D_SHADER_ERROR_TPF_INVALID_CASE_VALUE = 1007 ,
  VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_DIMENSION = 1008 , VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_SWIZZLE = 1009 , VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_DCL = 1010 , VKD3D_SHADER_WARNING_TPF_MASK_NOT_CONTIGUOUS = 1300 ,
  VKD3D_SHADER_WARNING_TPF_UNHANDLED_INDEX_RANGE_MASK = 1301 , VKD3D_SHADER_WARNING_TPF_UNHANDLED_REGISTER_MASK = 1302 , VKD3D_SHADER_WARNING_TPF_UNHANDLED_REGISTER_SWIZZLE = 1303 , VKD3D_SHADER_ERROR_SPV_DESCRIPTOR_BINDING_NOT_FOUND = 2000 ,
  VKD3D_SHADER_ERROR_SPV_INVALID_REGISTER_TYPE = 2001 , VKD3D_SHADER_ERROR_SPV_INVALID_DESCRIPTOR_BINDING = 2002 , VKD3D_SHADER_ERROR_SPV_DESCRIPTOR_IDX_UNSUPPORTED = 2003 , VKD3D_SHADER_ERROR_SPV_UNSUPPORTED_FEATURE = 2004 ,
  VKD3D_SHADER_ERROR_SPV_OUT_OF_MEMORY = 2005 , VKD3D_SHADER_ERROR_SPV_INVALID_TYPE = 2006 , VKD3D_SHADER_ERROR_SPV_INVALID_HANDLER = 2007 , VKD3D_SHADER_ERROR_SPV_NOT_IMPLEMENTED = 2008 ,
  VKD3D_SHADER_ERROR_SPV_INVALID_SHADER = 2009 , VKD3D_SHADER_WARNING_SPV_INVALID_SWIZZLE = 2300 , VKD3D_SHADER_WARNING_SPV_INVALID_UAV_FLAGS = 2301 , VKD3D_SHADER_WARNING_SPV_IGNORING_FLAG = 2302 ,
  VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY = 3000 , VKD3D_SHADER_ERROR_RS_INVALID_VERSION = 3001 , VKD3D_SHADER_ERROR_RS_INVALID_ROOT_PARAMETER_TYPE = 3002 , VKD3D_SHADER_ERROR_RS_INVALID_DESCRIPTOR_RANGE_TYPE = 3003 ,
  VKD3D_SHADER_ERROR_RS_MIXED_DESCRIPTOR_RANGE_TYPES = 3004 , VKD3D_SHADER_ERROR_PP_INVALID_SYNTAX = 4000 , VKD3D_SHADER_ERROR_PP_ERROR_DIRECTIVE = 4001 , VKD3D_SHADER_ERROR_PP_INCLUDE_FAILED = 4002 ,
  VKD3D_SHADER_WARNING_PP_ALREADY_DEFINED = 4300 , VKD3D_SHADER_WARNING_PP_INVALID_DIRECTIVE = 4301 , VKD3D_SHADER_WARNING_PP_ARGUMENT_COUNT_MISMATCH = 4302 , VKD3D_SHADER_WARNING_PP_UNKNOWN_DIRECTIVE = 4303 ,
  VKD3D_SHADER_WARNING_PP_UNTERMINATED_MACRO = 4304 , VKD3D_SHADER_WARNING_PP_UNTERMINATED_IF = 4305 , VKD3D_SHADER_WARNING_PP_DIV_BY_ZERO = 4306 , VKD3D_SHADER_ERROR_HLSL_INVALID_SYNTAX = 5000 ,
  VKD3D_SHADER_ERROR_HLSL_INVALID_MODIFIER = 5001 , VKD3D_SHADER_ERROR_HLSL_INVALID_TYPE = 5002 , VKD3D_SHADER_ERROR_HLSL_MODIFIES_CONST = 5003 , VKD3D_SHADER_ERROR_HLSL_MISSING_SEMANTIC = 5004 ,
  VKD3D_SHADER_ERROR_HLSL_NOT_DEFINED = 5005 , VKD3D_SHADER_ERROR_HLSL_REDEFINED = 5006 , VKD3D_SHADER_ERROR_HLSL_WRONG_PARAMETER_COUNT = 5007 , VKD3D_SHADER_ERROR_HLSL_INVALID_SIZE = 5008 ,
  VKD3D_SHADER_ERROR_HLSL_MISSING_INITIALIZER = 5009 , VKD3D_SHADER_ERROR_HLSL_INVALID_LVALUE = 5010 , VKD3D_SHADER_ERROR_HLSL_INVALID_WRITEMASK = 5011 , VKD3D_SHADER_ERROR_HLSL_INVALID_INDEX = 5012 ,
  VKD3D_SHADER_ERROR_HLSL_INVALID_SEMANTIC = 5013 , VKD3D_SHADER_ERROR_HLSL_INVALID_RETURN = 5014 , VKD3D_SHADER_ERROR_HLSL_OVERLAPPING_RESERVATIONS = 5015 , VKD3D_SHADER_ERROR_HLSL_INVALID_RESERVATION = 5016 ,
  VKD3D_SHADER_ERROR_HLSL_NOT_IMPLEMENTED = 5017 , VKD3D_SHADER_ERROR_HLSL_INVALID_TEXEL_OFFSET = 5018 , VKD3D_SHADER_ERROR_HLSL_OFFSET_OUT_OF_BOUNDS = 5019 , VKD3D_SHADER_ERROR_HLSL_INCOMPATIBLE_PROFILE = 5020 ,
  VKD3D_SHADER_ERROR_HLSL_DIVISION_BY_ZERO = 5021 , VKD3D_SHADER_ERROR_HLSL_NON_STATIC_OBJECT_REF = 5022 , VKD3D_SHADER_ERROR_HLSL_INVALID_THREAD_COUNT = 5023 , VKD3D_SHADER_ERROR_HLSL_MISSING_ATTRIBUTE = 5024 ,
  VKD3D_SHADER_ERROR_HLSL_RECURSIVE_CALL = 5025 , VKD3D_SHADER_ERROR_HLSL_INCONSISTENT_SAMPLER = 5026 , VKD3D_SHADER_ERROR_HLSL_NON_FINITE_RESULT = 5027 , VKD3D_SHADER_ERROR_HLSL_DUPLICATE_SWITCH_CASE = 5028 ,
  VKD3D_SHADER_ERROR_HLSL_MISSING_TECHNIQUE = 5029 , VKD3D_SHADER_ERROR_HLSL_UNKNOWN_MODIFIER = 5030 , VKD3D_SHADER_ERROR_HLSL_INVALID_STATE_BLOCK_ENTRY = 5031 , VKD3D_SHADER_ERROR_HLSL_FAILED_FORCED_UNROLL = 5032 ,
  VKD3D_SHADER_ERROR_HLSL_INVALID_PROFILE = 5033 , VKD3D_SHADER_ERROR_HLSL_MISPLACED_COMPILE = 5034 , VKD3D_SHADER_ERROR_HLSL_INVALID_DOMAIN = 5035 , VKD3D_SHADER_ERROR_HLSL_INVALID_CONTROL_POINT_COUNT = 5036 ,
  VKD3D_SHADER_ERROR_HLSL_INVALID_OUTPUT_PRIMITIVE = 5037 , VKD3D_SHADER_ERROR_HLSL_INVALID_PARTITIONING = 5038 , VKD3D_SHADER_ERROR_HLSL_MISPLACED_SAMPLER_STATE = 5039 , VKD3D_SHADER_WARNING_HLSL_IMPLICIT_TRUNCATION = 5300 ,
  VKD3D_SHADER_WARNING_HLSL_DIVISION_BY_ZERO = 5301 , VKD3D_SHADER_WARNING_HLSL_UNKNOWN_ATTRIBUTE = 5302 , VKD3D_SHADER_WARNING_HLSL_IMAGINARY_NUMERIC_RESULT = 5303 , VKD3D_SHADER_WARNING_HLSL_NON_FINITE_RESULT = 5304 ,
  VKD3D_SHADER_WARNING_HLSL_IGNORED_ATTRIBUTE = 5305 , VKD3D_SHADER_WARNING_HLSL_IGNORED_DEFAULT_VALUE = 5306 , VKD3D_SHADER_ERROR_GLSL_INTERNAL = 6000 , VKD3D_SHADER_ERROR_GLSL_BINDING_NOT_FOUND = 6001 ,
  VKD3D_SHADER_ERROR_GLSL_UNSUPPORTED = 6002 , VKD3D_SHADER_ERROR_D3DBC_UNEXPECTED_EOF = 7000 , VKD3D_SHADER_ERROR_D3DBC_INVALID_VERSION_TOKEN = 7001 , VKD3D_SHADER_ERROR_D3DBC_INVALID_OPCODE = 7002 ,
  VKD3D_SHADER_ERROR_D3DBC_INVALID_RESOURCE_TYPE = 7003 , VKD3D_SHADER_ERROR_D3DBC_OUT_OF_MEMORY = 7004 , VKD3D_SHADER_ERROR_D3DBC_INVALID_REGISTER_INDEX = 7005 , VKD3D_SHADER_ERROR_D3DBC_UNDECLARED_SEMANTIC = 7006 ,
  VKD3D_SHADER_ERROR_D3DBC_INVALID_REGISTER_TYPE = 7007 , VKD3D_SHADER_ERROR_D3DBC_INVALID_REGISTER_COUNT = 7008 , VKD3D_SHADER_ERROR_D3DBC_NOT_IMPLEMENTED = 7009 , VKD3D_SHADER_ERROR_D3DBC_INVALID_PROFILE = 7010 ,
  VKD3D_SHADER_ERROR_D3DBC_INVALID_WRITEMASK = 7011 , VKD3D_SHADER_WARNING_D3DBC_IGNORED_INSTRUCTION_FLAGS = 7300 , VKD3D_SHADER_ERROR_DXIL_OUT_OF_MEMORY = 8000 , VKD3D_SHADER_ERROR_DXIL_INVALID_SIZE = 8001 ,
  VKD3D_SHADER_ERROR_DXIL_INVALID_CHUNK_OFFSET = 8002 , VKD3D_SHADER_ERROR_DXIL_INVALID_CHUNK_SIZE = 8003 , VKD3D_SHADER_ERROR_DXIL_INVALID_BITCODE = 8004 , VKD3D_SHADER_ERROR_DXIL_INVALID_OPERAND_COUNT = 8005 ,
  VKD3D_SHADER_ERROR_DXIL_INVALID_TYPE_TABLE = 8006 , VKD3D_SHADER_ERROR_DXIL_INVALID_VALUE_SYMTAB = 8007 , VKD3D_SHADER_ERROR_DXIL_UNSUPPORTED_BITCODE_FORMAT = 8008 , VKD3D_SHADER_ERROR_DXIL_INVALID_FUNCTION_DCL = 8009 ,
  VKD3D_SHADER_ERROR_DXIL_INVALID_TYPE_ID = 8010 , VKD3D_SHADER_ERROR_DXIL_INVALID_MODULE = 8011 , VKD3D_SHADER_ERROR_DXIL_INVALID_OPERAND = 8012 , VKD3D_SHADER_ERROR_DXIL_UNHANDLED_INTRINSIC = 8013 ,
  VKD3D_SHADER_ERROR_DXIL_INVALID_METADATA = 8014 , VKD3D_SHADER_ERROR_DXIL_INVALID_ENTRY_POINT = 8015 , VKD3D_SHADER_ERROR_DXIL_INVALID_SIGNATURE = 8016 , VKD3D_SHADER_ERROR_DXIL_INVALID_PROPERTIES = 8017 ,
  VKD3D_SHADER_ERROR_DXIL_INVALID_RESOURCES = 8018 , VKD3D_SHADER_ERROR_DXIL_INVALID_RESOURCE_HANDLE = 8019 , VKD3D_SHADER_WARNING_DXIL_UNKNOWN_MAGIC_NUMBER = 8300 , VKD3D_SHADER_WARNING_DXIL_UNKNOWN_SHADER_TYPE = 8301 ,
  VKD3D_SHADER_WARNING_DXIL_INVALID_BLOCK_LENGTH = 8302 , VKD3D_SHADER_WARNING_DXIL_INVALID_MODULE_LENGTH = 8303 , VKD3D_SHADER_WARNING_DXIL_IGNORING_OPERANDS = 8304 , VKD3D_SHADER_WARNING_DXIL_TYPE_MISMATCH = 8305 ,
  VKD3D_SHADER_WARNING_DXIL_ENTRY_POINT_MISMATCH = 8306 , VKD3D_SHADER_WARNING_DXIL_INVALID_MASK = 8307 , VKD3D_SHADER_WARNING_DXIL_INVALID_OPERATION = 8308 , VKD3D_SHADER_WARNING_DXIL_IGNORING_ATTACHMENT = 8309 ,
  VKD3D_SHADER_WARNING_DXIL_UNDEFINED_OPERAND = 8310 , VKD3D_SHADER_ERROR_VSIR_NOT_IMPLEMENTED = 9000 , VKD3D_SHADER_ERROR_VSIR_INVALID_HANDLER = 9001 , VKD3D_SHADER_ERROR_VSIR_INVALID_REGISTER_TYPE = 9002 ,
  VKD3D_SHADER_ERROR_VSIR_INVALID_WRITE_MASK = 9003 , VKD3D_SHADER_ERROR_VSIR_INVALID_MODIFIERS = 9004 , VKD3D_SHADER_ERROR_VSIR_INVALID_SHIFT = 9005 , VKD3D_SHADER_ERROR_VSIR_INVALID_SWIZZLE = 9006 ,
  VKD3D_SHADER_ERROR_VSIR_INVALID_PRECISION = 9007 , VKD3D_SHADER_ERROR_VSIR_INVALID_DATA_TYPE = 9008 , VKD3D_SHADER_ERROR_VSIR_INVALID_DIMENSION = 9009 , VKD3D_SHADER_ERROR_VSIR_INVALID_INDEX_COUNT = 9010 ,
  VKD3D_SHADER_ERROR_VSIR_INVALID_DEST_COUNT = 9011 , VKD3D_SHADER_ERROR_VSIR_INVALID_SOURCE_COUNT = 9012 , VKD3D_SHADER_ERROR_VSIR_DUPLICATE_DCL_TEMPS = 9013 , VKD3D_SHADER_ERROR_VSIR_INVALID_DCL_TEMPS = 9014 ,
  VKD3D_SHADER_ERROR_VSIR_INVALID_INDEX = 9015 , VKD3D_SHADER_ERROR_VSIR_INVALID_CONTROL_FLOW = 9016 , VKD3D_SHADER_ERROR_VSIR_INVALID_SSA_USAGE = 9017 , VKD3D_SHADER_ERROR_VSIR_INVALID_TESSELLATION = 9018 ,
  VKD3D_SHADER_ERROR_VSIR_INVALID_GS = 9019 , VKD3D_SHADER_ERROR_VSIR_INVALID_PARAMETER = 9020 , VKD3D_SHADER_ERROR_VSIR_MISSING_SEMANTIC = 9021 , VKD3D_SHADER_ERROR_VSIR_INVALID_SIGNATURE = 9022 ,
  VKD3D_SHADER_WARNING_VSIR_DYNAMIC_DESCRIPTOR_ARRAY = 9300 , VKD3D_SHADER_ERROR_MSL_INTERNAL = 10000 , VKD3D_SHADER_ERROR_MSL_BINDING_NOT_FOUND = 10001 , VKD3D_SHADER_ERROR_FX_NOT_IMPLEMENTED = 11000 ,
  VKD3D_SHADER_ERROR_FX_INVALID_VERSION = 11001 , VKD3D_SHADER_ERROR_FX_INVALID_DATA = 11002
}
 
enum  vkd3d_shader_opcode {
  VKD3DSIH_ABS , VKD3DSIH_ACOS , VKD3DSIH_ADD , VKD3DSIH_AND ,
  VKD3DSIH_ASIN , VKD3DSIH_ATAN , VKD3DSIH_ATOMIC_AND , VKD3DSIH_ATOMIC_CMP_STORE ,
  VKD3DSIH_ATOMIC_IADD , VKD3DSIH_ATOMIC_IMAX , VKD3DSIH_ATOMIC_IMIN , VKD3DSIH_ATOMIC_OR ,
  VKD3DSIH_ATOMIC_UMAX , VKD3DSIH_ATOMIC_UMIN , VKD3DSIH_ATOMIC_XOR , VKD3DSIH_BEM ,
  VKD3DSIH_BFI , VKD3DSIH_BFREV , VKD3DSIH_BRANCH , VKD3DSIH_BREAK ,
  VKD3DSIH_BREAKC , VKD3DSIH_BREAKP , VKD3DSIH_BUFINFO , VKD3DSIH_CALL ,
  VKD3DSIH_CALLNZ , VKD3DSIH_CASE , VKD3DSIH_CHECK_ACCESS_FULLY_MAPPED , VKD3DSIH_CMP ,
  VKD3DSIH_CND , VKD3DSIH_CONTINUE , VKD3DSIH_CONTINUEP , VKD3DSIH_COUNTBITS ,
  VKD3DSIH_CRS , VKD3DSIH_CUT , VKD3DSIH_CUT_STREAM , VKD3DSIH_DADD ,
  VKD3DSIH_DCL , VKD3DSIH_DCL_CONSTANT_BUFFER , VKD3DSIH_DCL_FUNCTION_BODY , VKD3DSIH_DCL_FUNCTION_TABLE ,
  VKD3DSIH_DCL_GLOBAL_FLAGS , VKD3DSIH_DCL_GS_INSTANCES , VKD3DSIH_DCL_HS_FORK_PHASE_INSTANCE_COUNT , VKD3DSIH_DCL_HS_JOIN_PHASE_INSTANCE_COUNT ,
  VKD3DSIH_DCL_HS_MAX_TESSFACTOR , VKD3DSIH_DCL_IMMEDIATE_CONSTANT_BUFFER , VKD3DSIH_DCL_INDEX_RANGE , VKD3DSIH_DCL_INDEXABLE_TEMP ,
  VKD3DSIH_DCL_INPUT , VKD3DSIH_DCL_INPUT_CONTROL_POINT_COUNT , VKD3DSIH_DCL_INPUT_PRIMITIVE , VKD3DSIH_DCL_INPUT_PS ,
  VKD3DSIH_DCL_INPUT_PS_SGV , VKD3DSIH_DCL_INPUT_PS_SIV , VKD3DSIH_DCL_INPUT_SGV , VKD3DSIH_DCL_INPUT_SIV ,
  VKD3DSIH_DCL_INTERFACE , VKD3DSIH_DCL_OUTPUT , VKD3DSIH_DCL_OUTPUT_CONTROL_POINT_COUNT , VKD3DSIH_DCL_OUTPUT_SIV ,
  VKD3DSIH_DCL_OUTPUT_TOPOLOGY , VKD3DSIH_DCL_RESOURCE_RAW , VKD3DSIH_DCL_RESOURCE_STRUCTURED , VKD3DSIH_DCL_SAMPLER ,
  VKD3DSIH_DCL_STREAM , VKD3DSIH_DCL_TEMPS , VKD3DSIH_DCL_TESSELLATOR_DOMAIN , VKD3DSIH_DCL_TESSELLATOR_OUTPUT_PRIMITIVE ,
  VKD3DSIH_DCL_TESSELLATOR_PARTITIONING , VKD3DSIH_DCL_TGSM_RAW , VKD3DSIH_DCL_TGSM_STRUCTURED , VKD3DSIH_DCL_THREAD_GROUP ,
  VKD3DSIH_DCL_UAV_RAW , VKD3DSIH_DCL_UAV_STRUCTURED , VKD3DSIH_DCL_UAV_TYPED , VKD3DSIH_DCL_VERTICES_OUT ,
  VKD3DSIH_DDIV , VKD3DSIH_DEF , VKD3DSIH_DEFAULT , VKD3DSIH_DEFB ,
  VKD3DSIH_DEFI , VKD3DSIH_DEQO , VKD3DSIH_DFMA , VKD3DSIH_DGEO ,
  VKD3DSIH_DISCARD , VKD3DSIH_DIV , VKD3DSIH_DLT , VKD3DSIH_DMAX ,
  VKD3DSIH_DMIN , VKD3DSIH_DMOV , VKD3DSIH_DMOVC , VKD3DSIH_DMUL ,
  VKD3DSIH_DNE , VKD3DSIH_DP2 , VKD3DSIH_DP2ADD , VKD3DSIH_DP3 ,
  VKD3DSIH_DP4 , VKD3DSIH_DRCP , VKD3DSIH_DST , VKD3DSIH_DSX ,
  VKD3DSIH_DSX_COARSE , VKD3DSIH_DSX_FINE , VKD3DSIH_DSY , VKD3DSIH_DSY_COARSE ,
  VKD3DSIH_DSY_FINE , VKD3DSIH_DTOF , VKD3DSIH_DTOI , VKD3DSIH_DTOU ,
  VKD3DSIH_ELSE , VKD3DSIH_EMIT , VKD3DSIH_EMIT_STREAM , VKD3DSIH_ENDIF ,
  VKD3DSIH_ENDLOOP , VKD3DSIH_ENDREP , VKD3DSIH_ENDSWITCH , VKD3DSIH_EQO ,
  VKD3DSIH_EQU , VKD3DSIH_EVAL_CENTROID , VKD3DSIH_EVAL_SAMPLE_INDEX , VKD3DSIH_EXP ,
  VKD3DSIH_EXPP , VKD3DSIH_F16TOF32 , VKD3DSIH_F32TOF16 , VKD3DSIH_FCALL ,
  VKD3DSIH_FIRSTBIT_HI , VKD3DSIH_FIRSTBIT_LO , VKD3DSIH_FIRSTBIT_SHI , VKD3DSIH_FRC ,
  VKD3DSIH_FREM , VKD3DSIH_FTOD , VKD3DSIH_FTOI , VKD3DSIH_FTOU ,
  VKD3DSIH_GATHER4 , VKD3DSIH_GATHER4_C , VKD3DSIH_GATHER4_C_S , VKD3DSIH_GATHER4_PO ,
  VKD3DSIH_GATHER4_PO_C , VKD3DSIH_GATHER4_PO_C_S , VKD3DSIH_GATHER4_PO_S , VKD3DSIH_GATHER4_S ,
  VKD3DSIH_GEO , VKD3DSIH_GEU , VKD3DSIH_HCOS , VKD3DSIH_HS_CONTROL_POINT_PHASE ,
  VKD3DSIH_HS_DECLS , VKD3DSIH_HS_FORK_PHASE , VKD3DSIH_HS_JOIN_PHASE , VKD3DSIH_HSIN ,
  VKD3DSIH_HTAN , VKD3DSIH_IADD , VKD3DSIH_IBFE , VKD3DSIH_IDIV ,
  VKD3DSIH_IEQ , VKD3DSIH_IF , VKD3DSIH_IFC , VKD3DSIH_IGE ,
  VKD3DSIH_ILT , VKD3DSIH_IMAD , VKD3DSIH_IMAX , VKD3DSIH_IMIN ,
  VKD3DSIH_IMM_ATOMIC_ALLOC , VKD3DSIH_IMM_ATOMIC_AND , VKD3DSIH_IMM_ATOMIC_CMP_EXCH , VKD3DSIH_IMM_ATOMIC_CONSUME ,
  VKD3DSIH_IMM_ATOMIC_EXCH , VKD3DSIH_IMM_ATOMIC_IADD , VKD3DSIH_IMM_ATOMIC_IMAX , VKD3DSIH_IMM_ATOMIC_IMIN ,
  VKD3DSIH_IMM_ATOMIC_OR , VKD3DSIH_IMM_ATOMIC_UMAX , VKD3DSIH_IMM_ATOMIC_UMIN , VKD3DSIH_IMM_ATOMIC_XOR ,
  VKD3DSIH_IMUL , VKD3DSIH_INE , VKD3DSIH_INEG , VKD3DSIH_ISFINITE ,
  VKD3DSIH_ISHL , VKD3DSIH_ISHR , VKD3DSIH_ISINF , VKD3DSIH_ISNAN ,
  VKD3DSIH_ITOD , VKD3DSIH_ITOF , VKD3DSIH_ITOI , VKD3DSIH_LABEL ,
  VKD3DSIH_LD , VKD3DSIH_LD2DMS , VKD3DSIH_LD2DMS_S , VKD3DSIH_LD_RAW ,
  VKD3DSIH_LD_RAW_S , VKD3DSIH_LD_S , VKD3DSIH_LD_STRUCTURED , VKD3DSIH_LD_STRUCTURED_S ,
  VKD3DSIH_LD_UAV_TYPED , VKD3DSIH_LD_UAV_TYPED_S , VKD3DSIH_LIT , VKD3DSIH_LOD ,
  VKD3DSIH_LOG , VKD3DSIH_LOGP , VKD3DSIH_LOOP , VKD3DSIH_LRP ,
  VKD3DSIH_LTO , VKD3DSIH_LTU , VKD3DSIH_M3x2 , VKD3DSIH_M3x3 ,
  VKD3DSIH_M3x4 , VKD3DSIH_M4x3 , VKD3DSIH_M4x4 , VKD3DSIH_MAD ,
  VKD3DSIH_MAX , VKD3DSIH_MIN , VKD3DSIH_MOV , VKD3DSIH_MOVA ,
  VKD3DSIH_MOVC , VKD3DSIH_MSAD , VKD3DSIH_MUL , VKD3DSIH_NEO ,
  VKD3DSIH_NEU , VKD3DSIH_NOP , VKD3DSIH_NOT , VKD3DSIH_NRM ,
  VKD3DSIH_OR , VKD3DSIH_ORD , VKD3DSIH_PHASE , VKD3DSIH_PHI ,
  VKD3DSIH_POW , VKD3DSIH_QUAD_READ_ACROSS_D , VKD3DSIH_QUAD_READ_ACROSS_X , VKD3DSIH_QUAD_READ_ACROSS_Y ,
  VKD3DSIH_QUAD_READ_LANE_AT , VKD3DSIH_RCP , VKD3DSIH_REP , VKD3DSIH_RESINFO ,
  VKD3DSIH_RET , VKD3DSIH_RETP , VKD3DSIH_ROUND_NE , VKD3DSIH_ROUND_NI ,
  VKD3DSIH_ROUND_PI , VKD3DSIH_ROUND_Z , VKD3DSIH_RSQ , VKD3DSIH_SAMPLE ,
  VKD3DSIH_SAMPLE_B , VKD3DSIH_SAMPLE_B_CL_S , VKD3DSIH_SAMPLE_C , VKD3DSIH_SAMPLE_C_CL_S ,
  VKD3DSIH_SAMPLE_C_LZ , VKD3DSIH_SAMPLE_C_LZ_S , VKD3DSIH_SAMPLE_CL_S , VKD3DSIH_SAMPLE_GRAD ,
  VKD3DSIH_SAMPLE_GRAD_CL_S , VKD3DSIH_SAMPLE_INFO , VKD3DSIH_SAMPLE_LOD , VKD3DSIH_SAMPLE_LOD_S ,
  VKD3DSIH_SAMPLE_POS , VKD3DSIH_SETP , VKD3DSIH_SGE , VKD3DSIH_SGN ,
  VKD3DSIH_SINCOS , VKD3DSIH_SLT , VKD3DSIH_SQRT , VKD3DSIH_STORE_RAW ,
  VKD3DSIH_STORE_STRUCTURED , VKD3DSIH_STORE_UAV_TYPED , VKD3DSIH_SUB , VKD3DSIH_SWAPC ,
  VKD3DSIH_SWITCH , VKD3DSIH_SWITCH_MONOLITHIC , VKD3DSIH_SYNC , VKD3DSIH_TAN ,
  VKD3DSIH_TEX , VKD3DSIH_TEXBEM , VKD3DSIH_TEXBEML , VKD3DSIH_TEXCOORD ,
  VKD3DSIH_TEXDEPTH , VKD3DSIH_TEXDP3 , VKD3DSIH_TEXDP3TEX , VKD3DSIH_TEXKILL ,
  VKD3DSIH_TEXLDD , VKD3DSIH_TEXLDL , VKD3DSIH_TEXM3x2DEPTH , VKD3DSIH_TEXM3x2PAD ,
  VKD3DSIH_TEXM3x2TEX , VKD3DSIH_TEXM3x3 , VKD3DSIH_TEXM3x3DIFF , VKD3DSIH_TEXM3x3PAD ,
  VKD3DSIH_TEXM3x3SPEC , VKD3DSIH_TEXM3x3TEX , VKD3DSIH_TEXM3x3VSPEC , VKD3DSIH_TEXREG2AR ,
  VKD3DSIH_TEXREG2GB , VKD3DSIH_TEXREG2RGB , VKD3DSIH_UBFE , VKD3DSIH_UDIV ,
  VKD3DSIH_UGE , VKD3DSIH_ULT , VKD3DSIH_UMAX , VKD3DSIH_UMIN ,
  VKD3DSIH_UMUL , VKD3DSIH_UNO , VKD3DSIH_USHR , VKD3DSIH_UTOD ,
  VKD3DSIH_UTOF , VKD3DSIH_UTOU , VKD3DSIH_WAVE_ACTIVE_ALL_EQUAL , VKD3DSIH_WAVE_ACTIVE_BALLOT ,
  VKD3DSIH_WAVE_ACTIVE_BIT_AND , VKD3DSIH_WAVE_ACTIVE_BIT_OR , VKD3DSIH_WAVE_ACTIVE_BIT_XOR , VKD3DSIH_WAVE_ALL_BIT_COUNT ,
  VKD3DSIH_WAVE_ALL_TRUE , VKD3DSIH_WAVE_ANY_TRUE , VKD3DSIH_WAVE_IS_FIRST_LANE , VKD3DSIH_WAVE_OP_ADD ,
  VKD3DSIH_WAVE_OP_IMAX , VKD3DSIH_WAVE_OP_IMIN , VKD3DSIH_WAVE_OP_MAX , VKD3DSIH_WAVE_OP_MIN ,
  VKD3DSIH_WAVE_OP_MUL , VKD3DSIH_WAVE_OP_UMAX , VKD3DSIH_WAVE_OP_UMIN , VKD3DSIH_WAVE_PREFIX_BIT_COUNT ,
  VKD3DSIH_WAVE_READ_LANE_AT , VKD3DSIH_WAVE_READ_LANE_FIRST , VKD3DSIH_XOR , VKD3DSIH_INVALID ,
  VKD3DSIH_COUNT
}
 
enum  vkd3d_shader_register_type {
  VKD3DSPR_TEMP = 0 , VKD3DSPR_INPUT = 1 , VKD3DSPR_CONST = 2 , VKD3DSPR_ADDR = 3 ,
  VKD3DSPR_TEXTURE = 3 , VKD3DSPR_RASTOUT = 4 , VKD3DSPR_ATTROUT = 5 , VKD3DSPR_TEXCRDOUT = 6 ,
  VKD3DSPR_OUTPUT = 6 , VKD3DSPR_CONSTINT = 7 , VKD3DSPR_COLOROUT = 8 , VKD3DSPR_DEPTHOUT = 9 ,
  VKD3DSPR_COMBINED_SAMPLER = 10 , VKD3DSPR_CONST2 = 11 , VKD3DSPR_CONST3 = 12 , VKD3DSPR_CONST4 = 13 ,
  VKD3DSPR_CONSTBOOL = 14 , VKD3DSPR_LOOP = 15 , VKD3DSPR_TEMPFLOAT16 = 16 , VKD3DSPR_MISCTYPE = 17 ,
  VKD3DSPR_LABEL = 18 , VKD3DSPR_PREDICATE = 19 , VKD3DSPR_IMMCONST , VKD3DSPR_IMMCONST64 ,
  VKD3DSPR_CONSTBUFFER , VKD3DSPR_IMMCONSTBUFFER , VKD3DSPR_PRIMID , VKD3DSPR_NULL ,
  VKD3DSPR_SAMPLER , VKD3DSPR_RESOURCE , VKD3DSPR_UAV , VKD3DSPR_OUTPOINTID ,
  VKD3DSPR_FORKINSTID , VKD3DSPR_JOININSTID , VKD3DSPR_INCONTROLPOINT , VKD3DSPR_OUTCONTROLPOINT ,
  VKD3DSPR_PATCHCONST , VKD3DSPR_TESSCOORD , VKD3DSPR_GROUPSHAREDMEM , VKD3DSPR_THREADID ,
  VKD3DSPR_THREADGROUPID , VKD3DSPR_LOCALTHREADID , VKD3DSPR_LOCALTHREADINDEX , VKD3DSPR_IDXTEMP ,
  VKD3DSPR_STREAM , VKD3DSPR_FUNCTIONBODY , VKD3DSPR_FUNCTIONPOINTER , VKD3DSPR_COVERAGE ,
  VKD3DSPR_SAMPLEMASK , VKD3DSPR_GSINSTID , VKD3DSPR_DEPTHOUTGE , VKD3DSPR_DEPTHOUTLE ,
  VKD3DSPR_RASTERIZER , VKD3DSPR_OUTSTENCILREF , VKD3DSPR_UNDEF , VKD3DSPR_SSA ,
  VKD3DSPR_WAVELANECOUNT , VKD3DSPR_WAVELANEINDEX , VKD3DSPR_PARAMETER , VKD3DSPR_POINT_COORD ,
  VKD3DSPR_COUNT , VKD3DSPR_INVALID = ~0u
}
 
enum  vsir_rastout_register { VSIR_RASTOUT_POSITION = 0x0 , VSIR_RASTOUT_FOG = 0x1 , VSIR_RASTOUT_POINT_SIZE = 0x2 }
 
enum  vkd3d_shader_register_precision {
  VKD3D_SHADER_REGISTER_PRECISION_DEFAULT , VKD3D_SHADER_REGISTER_PRECISION_MIN_FLOAT_16 , VKD3D_SHADER_REGISTER_PRECISION_MIN_FLOAT_10 , VKD3D_SHADER_REGISTER_PRECISION_MIN_INT_16 ,
  VKD3D_SHADER_REGISTER_PRECISION_MIN_UINT_16 , VKD3D_SHADER_REGISTER_PRECISION_COUNT , VKD3D_SHADER_REGISTER_PRECISION_INVALID = ~0u
}
 
enum  vkd3d_data_type {
  VKD3D_DATA_FLOAT , VKD3D_DATA_INT , VKD3D_DATA_UINT , VKD3D_DATA_UNORM ,
  VKD3D_DATA_SNORM , VKD3D_DATA_OPAQUE , VKD3D_DATA_MIXED , VKD3D_DATA_DOUBLE ,
  VKD3D_DATA_CONTINUED , VKD3D_DATA_UNUSED , VKD3D_DATA_UINT8 , VKD3D_DATA_UINT64 ,
  VKD3D_DATA_BOOL , VKD3D_DATA_UINT16 , VKD3D_DATA_HALF , VKD3D_DATA_COUNT
}
 
enum  vsir_dimension { VSIR_DIMENSION_NONE , VSIR_DIMENSION_SCALAR , VSIR_DIMENSION_VEC4 , VSIR_DIMENSION_COUNT }
 
enum  vkd3d_shader_src_modifier {
  VKD3DSPSM_NONE = 0 , VKD3DSPSM_NEG = 1 , VKD3DSPSM_BIAS = 2 , VKD3DSPSM_BIASNEG = 3 ,
  VKD3DSPSM_SIGN = 4 , VKD3DSPSM_SIGNNEG = 5 , VKD3DSPSM_COMP = 6 , VKD3DSPSM_X2 = 7 ,
  VKD3DSPSM_X2NEG = 8 , VKD3DSPSM_DZ = 9 , VKD3DSPSM_DW = 10 , VKD3DSPSM_ABS = 11 ,
  VKD3DSPSM_ABSNEG = 12 , VKD3DSPSM_NOT = 13 , VKD3DSPSM_COUNT
}
 
enum  vkd3d_shader_dst_modifier {
  VKD3DSPDM_NONE = 0 , VKD3DSPDM_SATURATE = 1 , VKD3DSPDM_PARTIALPRECISION = 2 , VKD3DSPDM_MSAMPCENTROID = 4 ,
  VKD3DSPDM_MASK = 7
}
 
enum  vkd3d_shader_interpolation_mode {
  VKD3DSIM_NONE = 0 , VKD3DSIM_CONSTANT = 1 , VKD3DSIM_LINEAR = 2 , VKD3DSIM_LINEAR_CENTROID = 3 ,
  VKD3DSIM_LINEAR_NOPERSPECTIVE = 4 , VKD3DSIM_LINEAR_NOPERSPECTIVE_CENTROID = 5 , VKD3DSIM_LINEAR_SAMPLE = 6 , VKD3DSIM_LINEAR_NOPERSPECTIVE_SAMPLE = 7 ,
  VKD3DSIM_COUNT = 8
}
 
enum  vsir_global_flags {
  VKD3DSGF_REFACTORING_ALLOWED = 0x01 , VKD3DSGF_ENABLE_DOUBLE_PRECISION_FLOAT_OPS = 0x02 , VKD3DSGF_FORCE_EARLY_DEPTH_STENCIL = 0x04 , VKD3DSGF_ENABLE_RAW_AND_STRUCTURED_BUFFERS = 0x08 ,
  VKD3DSGF_SKIP_OPTIMIZATION = 0x10 , VKD3DSGF_ENABLE_MINIMUM_PRECISION = 0x20 , VKD3DSGF_ENABLE_11_1_DOUBLE_EXTENSIONS = 0x40 , VKD3DSGF_ENABLE_SHADER_EXTENSIONS = 0x80 ,
  VKD3DSGF_BIND_FOR_DURATION = 0x100 , VKD3DSGF_ENABLE_VP_AND_RT_ARRAY_INDEX = 0x200 , VKD3DSGF_ENABLE_INNER_COVERAGE = 0x400 , VKD3DSGF_ENABLE_STENCIL_REF = 0x800 ,
  VKD3DSGF_ENABLE_TILED_RESOURCE_INTRINSICS = 0x1000 , VKD3DSGF_ENABLE_RELAXED_TYPED_UAV_FORMATS = 0x2000 , VKD3DSGF_ENABLE_LVL_9_COMPARISON_FILTERING = 0x4000 , VKD3DSGF_ENABLE_UP_TO_64_UAVS = 0x8000 ,
  VKD3DSGF_ENABLE_UAVS_AT_EVERY_STAGE = 0x10000 , VKD3DSGF_ENABLE_CS4_RAW_STRUCTURED_BUFFERS = 0x20000 , VKD3DSGF_ENABLE_RASTERIZER_ORDERED_VIEWS = 0x40000 , VKD3DSGF_ENABLE_WAVE_INTRINSICS = 0x80000 ,
  VKD3DSGF_ENABLE_INT64 = 0x100000 , VKD3DSGF_ENABLE_VIEWID = 0x200000 , VKD3DSGF_ENABLE_BARYCENTRICS = 0x400000 , VKD3DSGF_FORCE_NATIVE_LOW_PRECISION = 0x800000 ,
  VKD3DSGF_ENABLE_SHADINGRATE = 0x1000000 , VKD3DSGF_ENABLE_RAYTRACING_TIER_1_1 = 0x2000000 , VKD3DSGF_ENABLE_SAMPLER_FEEDBACK = 0x4000000 , VKD3DSGF_ENABLE_ATOMIC_INT64_ON_TYPED_RESOURCE = 0x8000000 ,
  VKD3DSGF_ENABLE_ATOMIC_INT64_ON_GROUP_SHARED = 0x10000000 , VKD3DSGF_ENABLE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS = 0x20000000 , VKD3DSGF_ENABLE_RESOURCE_DESCRIPTOR_HEAP_INDEXING = 0x40000000 , VKD3DSGF_ENABLE_SAMPLER_DESCRIPTOR_HEAP_INDEXING = 0x80000000 ,
  VKD3DSGF_ENABLE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE = 0x100000000ull
}
 
enum  vkd3d_shader_sync_flags { VKD3DSSF_THREAD_GROUP = 0x1 , VKD3DSSF_GROUP_SHARED_MEMORY = 0x2 , VKD3DSSF_THREAD_GROUP_UAV = 0x4 , VKD3DSSF_GLOBAL_UAV = 0x8 }
 
enum  vkd3d_shader_uav_flags { VKD3DSUF_GLOBALLY_COHERENT = 0x002 , VKD3DSUF_RASTERISER_ORDERED_VIEW = 0x004 , VKD3DSUF_ORDER_PRESERVING_COUNTER = 0x100 }
 
enum  vkd3d_shader_atomic_rmw_flags { VKD3DARF_SEQ_CST = 0x1 , VKD3DARF_VOLATILE = 0x2 }
 
enum  vkd3d_tessellator_domain {
  VKD3D_TESSELLATOR_DOMAIN_INVALID = 0 , VKD3D_TESSELLATOR_DOMAIN_LINE = 1 , VKD3D_TESSELLATOR_DOMAIN_TRIANGLE = 2 , VKD3D_TESSELLATOR_DOMAIN_QUAD = 3 ,
  VKD3D_TESSELLATOR_DOMAIN_COUNT = 4
}
 
enum  vkd3d_shader_rel_op {
  VKD3D_SHADER_REL_OP_GT = 1 , VKD3D_SHADER_REL_OP_EQ = 2 , VKD3D_SHADER_REL_OP_GE = 3 , VKD3D_SHADER_REL_OP_LT = 4 ,
  VKD3D_SHADER_REL_OP_NE = 5 , VKD3D_SHADER_REL_OP_LE = 6
}
 
enum  vkd3d_shader_conditional_op { VKD3D_SHADER_CONDITIONAL_OP_NZ = 0 , VKD3D_SHADER_CONDITIONAL_OP_Z = 1 }
 
enum  vkd3d_shader_type {
  VKD3D_SHADER_TYPE_PIXEL , VKD3D_SHADER_TYPE_VERTEX , VKD3D_SHADER_TYPE_GEOMETRY , VKD3D_SHADER_TYPE_HULL ,
  VKD3D_SHADER_TYPE_DOMAIN , VKD3D_SHADER_TYPE_GRAPHICS_COUNT , VKD3D_SHADER_TYPE_COMPUTE = VKD3D_SHADER_TYPE_GRAPHICS_COUNT , VKD3D_SHADER_TYPE_EFFECT ,
  VKD3D_SHADER_TYPE_TEXTURE , VKD3D_SHADER_TYPE_LIBRARY , VKD3D_SHADER_TYPE_COUNT
}
 
enum  vkd3d_decl_usage {
  VKD3D_DECL_USAGE_POSITION = 0 , VKD3D_DECL_USAGE_BLEND_WEIGHT = 1 , VKD3D_DECL_USAGE_BLEND_INDICES = 2 , VKD3D_DECL_USAGE_NORMAL = 3 ,
  VKD3D_DECL_USAGE_PSIZE = 4 , VKD3D_DECL_USAGE_TEXCOORD = 5 , VKD3D_DECL_USAGE_TANGENT = 6 , VKD3D_DECL_USAGE_BINORMAL = 7 ,
  VKD3D_DECL_USAGE_TESS_FACTOR = 8 , VKD3D_DECL_USAGE_POSITIONT = 9 , VKD3D_DECL_USAGE_COLOR = 10 , VKD3D_DECL_USAGE_FOG = 11 ,
  VKD3D_DECL_USAGE_DEPTH = 12 , VKD3D_DECL_USAGE_SAMPLE = 13
}
 
enum  vkd3d_shader_input_sysval_semantic {
  VKD3D_SIV_NONE = 0 , VKD3D_SIV_POSITION = 1 , VKD3D_SIV_CLIP_DISTANCE = 2 , VKD3D_SIV_CULL_DISTANCE = 3 ,
  VKD3D_SIV_RENDER_TARGET_ARRAY_INDEX = 4 , VKD3D_SIV_VIEWPORT_ARRAY_INDEX = 5 , VKD3D_SIV_VERTEX_ID = 6 , VKD3D_SIV_PRIMITIVE_ID = 7 ,
  VKD3D_SIV_INSTANCE_ID = 8 , VKD3D_SIV_IS_FRONT_FACE = 9 , VKD3D_SIV_SAMPLE_INDEX = 10 , VKD3D_SIV_QUAD_U0_TESS_FACTOR = 11 ,
  VKD3D_SIV_QUAD_V0_TESS_FACTOR = 12 , VKD3D_SIV_QUAD_U1_TESS_FACTOR = 13 , VKD3D_SIV_QUAD_V1_TESS_FACTOR = 14 , VKD3D_SIV_QUAD_U_INNER_TESS_FACTOR = 15 ,
  VKD3D_SIV_QUAD_V_INNER_TESS_FACTOR = 16 , VKD3D_SIV_TRIANGLE_U_TESS_FACTOR = 17 , VKD3D_SIV_TRIANGLE_V_TESS_FACTOR = 18 , VKD3D_SIV_TRIANGLE_W_TESS_FACTOR = 19 ,
  VKD3D_SIV_TRIANGLE_INNER_TESS_FACTOR = 20 , VKD3D_SIV_LINE_DETAIL_TESS_FACTOR = 21 , VKD3D_SIV_LINE_DENSITY_TESS_FACTOR = 22
}
 
enum  vkd3d_primitive_type {
  VKD3D_PT_UNDEFINED = 0 , VKD3D_PT_POINTLIST = 1 , VKD3D_PT_LINELIST = 2 , VKD3D_PT_LINESTRIP = 3 ,
  VKD3D_PT_TRIANGLELIST = 4 , VKD3D_PT_TRIANGLESTRIP = 5 , VKD3D_PT_TRIANGLEFAN = 6 , VKD3D_PT_LINELIST_ADJ = 10 ,
  VKD3D_PT_LINESTRIP_ADJ = 11 , VKD3D_PT_TRIANGLELIST_ADJ = 12 , VKD3D_PT_TRIANGLESTRIP_ADJ = 13 , VKD3D_PT_PATCH = 14 ,
  VKD3D_PT_COUNT = 15
}
 
enum  vkd3d_shader_config_flags { VKD3D_SHADER_CONFIG_FLAG_FORCE_VALIDATION = 0x00000001 }
 
enum  vsir_control_flow_type { VSIR_CF_STRUCTURED , VSIR_CF_BLOCKS }
 
enum  vsir_normalisation_level { VSIR_NOT_NORMALISED , VSIR_NORMALISED_HULL_CONTROL_POINT_IO , VSIR_FULLY_NORMALISED_IO }
 
enum  vsir_asm_flags { VSIR_ASM_FLAG_NONE = 0 , VSIR_ASM_FLAG_DUMP_TYPES = 0x1 , VSIR_ASM_FLAG_DUMP_ALL_INDICES = 0x2 }
 
enum  vkd3d_md5_variant { VKD3D_MD5_STANDARD , VKD3D_MD5_DXBC }
 

Functions

static bool data_type_is_integer (enum vkd3d_data_type data_type)
 
static bool data_type_is_bool (enum vkd3d_data_type data_type)
 
static bool data_type_is_floating_point (enum vkd3d_data_type data_type)
 
static bool data_type_is_64_bit (enum vkd3d_data_type data_type)
 
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)
 
static bool vsir_register_is_descriptor (const struct vkd3d_shader_register *reg)
 
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)
 
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)
 
void vsir_src_param_init_label (struct vkd3d_shader_src_param *param, unsigned int label_id)
 
static bool vsir_sysval_semantic_is_tess_factor (enum vkd3d_shader_sysval_semantic sysval_semantic)
 
static bool vsir_sysval_semantic_is_clip_cull (enum vkd3d_shader_sysval_semantic sysval_semantic)
 
struct signature_element * vsir_signature_find_element_for_reg (const struct shader_signature *signature, unsigned int reg_idx, unsigned int write_mask)
 
bool vsir_signature_find_sysval (const struct shader_signature *signature, enum vkd3d_shader_sysval_semantic sysval, unsigned int semantic_index, unsigned int *element_index)
 
void shader_signature_cleanup (struct shader_signature *signature)
 
static bool vkd3d_shader_ver_ge (const struct vkd3d_shader_version *v, unsigned int major, unsigned int minor)
 
static bool vkd3d_shader_ver_le (const struct vkd3d_shader_version *v, unsigned int major, unsigned int minor)
 
void vsir_instruction_init (struct vkd3d_shader_instruction *ins, const struct vkd3d_shader_location *location, enum vkd3d_shader_opcode opcode)
 
static bool vkd3d_shader_instruction_has_texel_offset (const struct vkd3d_shader_instruction *ins)
 
static bool register_is_constant (const struct vkd3d_shader_register *reg)
 
static bool register_is_undef (const struct vkd3d_shader_register *reg)
 
static bool register_is_constant_or_undef (const struct vkd3d_shader_register *reg)
 
static bool register_is_scalar_constant_zero (const struct vkd3d_shader_register *reg)
 
static bool register_is_numeric_array (const struct vkd3d_shader_register *reg)
 
static bool vsir_register_is_label (const struct vkd3d_shader_register *reg)
 
static bool register_is_ssa (const struct vkd3d_shader_register *reg)
 
void * shader_param_allocator_get (struct vkd3d_shader_param_allocator *allocator, unsigned int count)
 
static struct vkd3d_shader_src_param * shader_src_param_allocator_get (struct vkd3d_shader_param_allocator *allocator, unsigned int count)
 
static struct vkd3d_shader_dst_param * shader_dst_param_allocator_get (struct vkd3d_shader_param_allocator *allocator, unsigned int count)
 
bool shader_instruction_array_init (struct vkd3d_shader_instruction_array *instructions, unsigned int reserve)
 
bool shader_instruction_array_reserve (struct vkd3d_shader_instruction_array *instructions, unsigned int reserve)
 
bool shader_instruction_array_insert_at (struct vkd3d_shader_instruction_array *instructions, unsigned int idx, unsigned int count)
 
bool shader_instruction_array_add_icb (struct vkd3d_shader_instruction_array *instructions, struct vkd3d_shader_immediate_constant_buffer *icb)
 
bool shader_instruction_array_clone_instruction (struct vkd3d_shader_instruction_array *instructions, unsigned int dst, unsigned int src)
 
void shader_instruction_array_destroy (struct vkd3d_shader_instruction_array *instructions)
 
void vsir_program_cleanup (struct vsir_program *program)
 
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)
 
const struct vkd3d_shader_parameter1 * vsir_program_get_parameter (const struct vsir_program *program, enum vkd3d_shader_parameter_name name)
 
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)
 
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)
 
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)
 
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)
 
struct vkd3d_shader_src_param * vsir_program_create_outpointid_param (struct vsir_program *program)
 
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 struct vkd3d_shader_dst_param * vsir_program_get_dst_params (struct vsir_program *program, unsigned int count)
 
static struct vkd3d_shader_src_param * vsir_program_get_src_params (struct vsir_program *program, unsigned int count)
 
void vkd3d_shader_parser_error (struct vkd3d_shader_parser *parser, enum vkd3d_shader_error error, const char *format,...) VKD3D_PRINTF_FUNC(3
 
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)
 
void vkd3d_shader_parser_warning (struct vkd3d_shader_parser *parser, enum vkd3d_shader_error error, const char *format,...) VKD3D_PRINTF_FUNC(3
 
void vsir_program_trace (const struct vsir_program *program)
 
const char * shader_get_type_prefix (enum vkd3d_shader_type type)
 
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 vkd3d_string_buffer_cleanup (struct vkd3d_string_buffer *buffer)
 
struct vkd3d_string_buffer * vkd3d_string_buffer_get (struct vkd3d_string_buffer_cache *list)
 
void vkd3d_string_buffer_init (struct vkd3d_string_buffer *buffer)
 
void vkd3d_string_buffer_cache_cleanup (struct vkd3d_string_buffer_cache *list)
 
void vkd3d_string_buffer_cache_init (struct vkd3d_string_buffer_cache *list)
 
void vkd3d_string_buffer_clear (struct vkd3d_string_buffer *buffer)
 
void vkd3d_string_buffer_truncate (struct vkd3d_string_buffer *buffer, size_t size)
 
int vkd3d_string_buffer_print_f32 (struct vkd3d_string_buffer *buffer, float f)
 
int vkd3d_string_buffer_print_f64 (struct vkd3d_string_buffer *buffer, double d)
 
int vkd3d_string_buffer_printf (struct vkd3d_string_buffer *buffer, const char *format,...) VKD3D_PRINTF_FUNC(2
 
int void vkd3d_string_buffer_release (struct vkd3d_string_buffer_cache *list, struct vkd3d_string_buffer *buffer)
 
void vkd3d_string_buffer_trace_ (const struct vkd3d_string_buffer *buffer, const char *function)
 
int vkd3d_string_buffer_vprintf (struct vkd3d_string_buffer *buffer, const char *format, va_list args)
 
void vkd3d_shader_code_from_string_buffer (struct vkd3d_shader_code *code, struct vkd3d_string_buffer *buffer)
 
size_t bytecode_align (struct vkd3d_bytecode_buffer *buffer)
 
size_t bytecode_put_bytes (struct vkd3d_bytecode_buffer *buffer, const void *bytes, size_t size)
 
size_t bytecode_put_bytes_unaligned (struct vkd3d_bytecode_buffer *buffer, const void *bytes, size_t size)
 
size_t bytecode_reserve_bytes (struct vkd3d_bytecode_buffer *buffer, size_t size)
 
void set_u32 (struct vkd3d_bytecode_buffer *buffer, size_t offset, uint32_t value)
 
void set_string (struct vkd3d_bytecode_buffer *buffer, size_t offset, const char *string, size_t length)
 
static size_t put_u32 (struct vkd3d_bytecode_buffer *buffer, uint32_t value)
 
static size_t put_f32 (struct vkd3d_bytecode_buffer *buffer, float value)
 
static size_t put_string (struct vkd3d_bytecode_buffer *buffer, const char *string)
 
static size_t bytecode_get_size (struct vkd3d_bytecode_buffer *buffer)
 
uint32_t vkd3d_parse_integer (const char *s)
 
void vkd3d_shader_message_context_cleanup (struct vkd3d_shader_message_context *context)
 
bool vkd3d_shader_message_context_copy_messages (struct vkd3d_shader_message_context *context, char **out)
 
void vkd3d_shader_message_context_init (struct vkd3d_shader_message_context *context, enum vkd3d_shader_log_level log_level)
 
void vkd3d_shader_message_context_trace_messages_ (const struct vkd3d_shader_message_context *context, const char *function)
 
void vkd3d_shader_error (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 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_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)
 
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 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)
 
uint64_t vkd3d_shader_init_config_flags (void)
 
void vkd3d_shader_trace_text_ (const char *text, size_t size, const char *function)
 
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)
 
bool sm1_usage_from_semantic_name (const char *semantic_name, uint32_t semantic_index, enum vkd3d_decl_usage *usage, uint32_t *usage_idx)
 
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)
 
bool shader_sm4_is_scalar_register (const struct vkd3d_shader_register *reg)
 
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)
 
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)
 
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)
 
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)
 
int fx_parse (const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context)
 
void free_dxbc_shader_desc (struct dxbc_shader_desc *desc)
 
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)
 
int shader_parse_input_signature (const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_message_context *message_context, struct shader_signature *signature)
 
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)
 
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)
 
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)
 
void vkd3d_compute_md5 (const void *dxbc, size_t size, uint32_t checksum[4], enum vkd3d_md5_variant variant)
 
int preproc_lexer_parse (const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *out, struct vkd3d_shader_message_context *message_context)
 
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)
 
static enum vkd3d_shader_component_type vkd3d_component_type_from_data_type (enum vkd3d_data_type data_type)
 
static enum vkd3d_data_type vkd3d_data_type_from_component_type (enum vkd3d_shader_component_type component_type)
 
static enum vkd3d_shader_component_type vkd3d_component_type_from_resource_data_type (enum vkd3d_shader_resource_data_type data_type)
 
static bool component_type_is_64_bit (enum vkd3d_shader_component_type component_type)
 
enum vkd3d_shader_input_sysval_semantic vkd3d_siv_from_sysval_indexed (enum vkd3d_shader_sysval_semantic sysval, unsigned int index)
 
static enum vkd3d_shader_input_sysval_semantic vkd3d_siv_from_sysval (enum vkd3d_shader_sysval_semantic sysval)
 
static unsigned int vsir_write_mask_get_component_idx (uint32_t write_mask)
 
static unsigned int vsir_write_mask_component_count (uint32_t write_mask)
 
static unsigned int vkd3d_write_mask_from_component_count (unsigned int component_count)
 
static uint32_t vsir_write_mask_64_from_32 (uint32_t write_mask32)
 
static uint32_t vsir_write_mask_32_from_64 (uint32_t write_mask64)
 
static uint32_t vsir_swizzle_64_from_32 (uint32_t swizzle32)
 
static uint32_t vsir_swizzle_32_from_64 (uint32_t swizzle64)
 
static unsigned int vsir_swizzle_get_component (uint32_t swizzle, unsigned int idx)
 
static unsigned int vkd3d_compact_swizzle (uint32_t swizzle, uint32_t write_mask)
 
static uint32_t vsir_swizzle_from_writemask (unsigned int writemask)
 
static void * vkd3d_find_struct_ (const struct vkd3d_struct *chain, enum vkd3d_shader_structure_type type)
 
void dxbc_writer_add_section (struct dxbc_writer *dxbc, uint32_t tag, const void *data, size_t size)
 
void dxbc_writer_init (struct dxbc_writer *dxbc)
 
int dxbc_writer_write (struct dxbc_writer *dxbc, struct vkd3d_shader_code *code)
 

Macro Definition Documentation

◆ DXBC_MAX_SECTION_COUNT

#define DXBC_MAX_SECTION_COUNT   7

Definition at line 1943 of file vkd3d_shader_private.h.

◆ MAX_REG_OUTPUT

#define MAX_REG_OUTPUT   32

Definition at line 883 of file vkd3d_shader_private.h.

◆ NONAMELESSUNION

#define NONAMELESSUNION

Definition at line 48 of file vkd3d_shader_private.h.

◆ SIGNATURE_TARGET_LOCATION_UNUSED

#define SIGNATURE_TARGET_LOCATION_UNUSED   (~0u)

Definition at line 1077 of file vkd3d_shader_private.h.

◆ SM1_COLOR_REGISTER_OFFSET

#define SM1_COLOR_REGISTER_OFFSET   8

Definition at line 1074 of file vkd3d_shader_private.h.

◆ SM1_RASTOUT_REGISTER_OFFSET

#define SM1_RASTOUT_REGISTER_OFFSET   10

Definition at line 1075 of file vkd3d_shader_private.h.

◆ SPIRV_MAX_SRC_COUNT

#define SPIRV_MAX_SRC_COUNT   6

Definition at line 1652 of file vkd3d_shader_private.h.

◆ VKD3D_DVEC2_SIZE

#define VKD3D_DVEC2_SIZE   2

Definition at line 60 of file vkd3d_shader_private.h.

◆ VKD3D_DXBC_CHUNK_ALIGNMENT

#define VKD3D_DXBC_CHUNK_ALIGNMENT   sizeof(uint32_t)

Definition at line 1941 of file vkd3d_shader_private.h.

◆ VKD3D_DXBC_HEADER_SIZE

#define VKD3D_DXBC_HEADER_SIZE   (8 * sizeof(uint32_t))

Definition at line 1940 of file vkd3d_shader_private.h.

◆ vkd3d_find_struct

#define vkd3d_find_struct (   c,
  t 
)    vkd3d_find_struct_(c, VKD3D_SHADER_STRUCTURE_TYPE_##t)

Definition at line 1925 of file vkd3d_shader_private.h.

◆ VKD3D_SHADER_COMPONENT_TYPE_COUNT

#define VKD3D_SHADER_COMPONENT_TYPE_COUNT   (VKD3D_SHADER_COMPONENT_UINT64 + 1)

Definition at line 62 of file vkd3d_shader_private.h.

◆ vkd3d_shader_message_context_trace_messages

#define vkd3d_shader_message_context_trace_messages (   context)     vkd3d_shader_message_context_trace_messages_(context, __FUNCTION__)

Definition at line 1601 of file vkd3d_shader_private.h.

◆ VKD3D_SHADER_MINIMUM_PRECISION_COUNT

#define VKD3D_SHADER_MINIMUM_PRECISION_COUNT   (VKD3D_SHADER_MINIMUM_PRECISION_UINT_16 + 1)

Definition at line 63 of file vkd3d_shader_private.h.

◆ vkd3d_shader_trace_text

#define vkd3d_shader_trace_text (   text,
  size 
)     vkd3d_shader_trace_text_(text, size, __FUNCTION__)

Definition at line 1616 of file vkd3d_shader_private.h.

◆ vkd3d_string_buffer_trace

#define vkd3d_string_buffer_trace (   buffer)     vkd3d_string_buffer_trace_(buffer, __FUNCTION__)

Definition at line 1546 of file vkd3d_shader_private.h.

◆ VKD3D_VEC4_SIZE

#define VKD3D_VEC4_SIZE   4

Definition at line 59 of file vkd3d_shader_private.h.

◆ VKD3DSI_INDEXED_DYNAMIC

#define VKD3DSI_INDEXED_DYNAMIC   0x4

Definition at line 851 of file vkd3d_shader_private.h.

◆ VKD3DSI_NONE

#define VKD3DSI_NONE   0x0

Definition at line 848 of file vkd3d_shader_private.h.

◆ VKD3DSI_PRECISE_SHIFT

#define VKD3DSI_PRECISE_SHIFT   8

Definition at line 865 of file vkd3d_shader_private.h.

◆ VKD3DSI_PRECISE_W

#define VKD3DSI_PRECISE_W   0x800

Definition at line 862 of file vkd3d_shader_private.h.

◆ VKD3DSI_PRECISE_X

#define VKD3DSI_PRECISE_X   0x100

Definition at line 859 of file vkd3d_shader_private.h.

◆ VKD3DSI_PRECISE_XYZW

#define VKD3DSI_PRECISE_XYZW
Value:
#define VKD3DSI_PRECISE_X
#define VKD3DSI_PRECISE_Z
#define VKD3DSI_PRECISE_W
#define VKD3DSI_PRECISE_Y

Definition at line 863 of file vkd3d_shader_private.h.

◆ VKD3DSI_PRECISE_Y

#define VKD3DSI_PRECISE_Y   0x200

Definition at line 860 of file vkd3d_shader_private.h.

◆ VKD3DSI_PRECISE_Z

#define VKD3DSI_PRECISE_Z   0x400

Definition at line 861 of file vkd3d_shader_private.h.

◆ VKD3DSI_RESINFO_RCP_FLOAT

#define VKD3DSI_RESINFO_RCP_FLOAT   0x1

Definition at line 852 of file vkd3d_shader_private.h.

◆ VKD3DSI_RESINFO_UINT

#define VKD3DSI_RESINFO_UINT   0x2

Definition at line 853 of file vkd3d_shader_private.h.

◆ VKD3DSI_SAMPLE_INFO_UINT

#define VKD3DSI_SAMPLE_INFO_UINT   0x1

Definition at line 854 of file vkd3d_shader_private.h.

◆ VKD3DSI_SAMPLER_COMPARISON_MODE

#define VKD3DSI_SAMPLER_COMPARISON_MODE   0x1

Definition at line 855 of file vkd3d_shader_private.h.

◆ VKD3DSI_SHIFT_UNMASKED

#define VKD3DSI_SHIFT_UNMASKED   0x1

Definition at line 856 of file vkd3d_shader_private.h.

◆ VKD3DSI_TEXLD_BIAS

#define VKD3DSI_TEXLD_BIAS   0x2

Definition at line 850 of file vkd3d_shader_private.h.

◆ VKD3DSI_TEXLD_PROJECT

#define VKD3DSI_TEXLD_PROJECT   0x1

Definition at line 849 of file vkd3d_shader_private.h.

◆ VKD3DSI_WAVE_PREFIX

#define VKD3DSI_WAVE_PREFIX   0x1

Definition at line 857 of file vkd3d_shader_private.h.

◆ VKD3DSP_WRITEMASK_0

#define VKD3DSP_WRITEMASK_0   0x1u /* .x r */

Definition at line 750 of file vkd3d_shader_private.h.

◆ VKD3DSP_WRITEMASK_1

#define VKD3DSP_WRITEMASK_1   0x2u /* .y g */

Definition at line 751 of file vkd3d_shader_private.h.

◆ VKD3DSP_WRITEMASK_2

#define VKD3DSP_WRITEMASK_2   0x4u /* .z b */

Definition at line 752 of file vkd3d_shader_private.h.

◆ VKD3DSP_WRITEMASK_3

#define VKD3DSP_WRITEMASK_3   0x8u /* .w a */

Definition at line 753 of file vkd3d_shader_private.h.

◆ VKD3DSP_WRITEMASK_ALL

#define VKD3DSP_WRITEMASK_ALL   0xfu /* all */

Definition at line 754 of file vkd3d_shader_private.h.

Enumeration Type Documentation

◆ vkd3d_data_type

Enumerator
VKD3D_DATA_FLOAT 
VKD3D_DATA_INT 
VKD3D_DATA_UINT 
VKD3D_DATA_UNORM 
VKD3D_DATA_SNORM 
VKD3D_DATA_OPAQUE 
VKD3D_DATA_MIXED 
VKD3D_DATA_DOUBLE 
VKD3D_DATA_CONTINUED 
VKD3D_DATA_UNUSED 
VKD3D_DATA_UINT8 
VKD3D_DATA_UINT64 
VKD3D_DATA_BOOL 
VKD3D_DATA_UINT16 
VKD3D_DATA_HALF 
VKD3D_DATA_COUNT 

Definition at line 680 of file vkd3d_shader_private.h.

681{
697
699};
@ VKD3D_DATA_UINT64
@ VKD3D_DATA_COUNT
@ VKD3D_DATA_SNORM
@ VKD3D_DATA_INT
@ VKD3D_DATA_BOOL
@ VKD3D_DATA_UNUSED
@ VKD3D_DATA_DOUBLE
@ VKD3D_DATA_HALF
@ VKD3D_DATA_UINT8
@ VKD3D_DATA_OPAQUE
@ VKD3D_DATA_UINT
@ VKD3D_DATA_UNORM
@ VKD3D_DATA_FLOAT
@ VKD3D_DATA_UINT16
@ VKD3D_DATA_MIXED
@ VKD3D_DATA_CONTINUED

◆ vkd3d_decl_usage

Enumerator
VKD3D_DECL_USAGE_POSITION 
VKD3D_DECL_USAGE_BLEND_WEIGHT 
VKD3D_DECL_USAGE_BLEND_INDICES 
VKD3D_DECL_USAGE_NORMAL 
VKD3D_DECL_USAGE_PSIZE 
VKD3D_DECL_USAGE_TEXCOORD 
VKD3D_DECL_USAGE_TANGENT 
VKD3D_DECL_USAGE_BINORMAL 
VKD3D_DECL_USAGE_TESS_FACTOR 
VKD3D_DECL_USAGE_POSITIONT 
VKD3D_DECL_USAGE_COLOR 
VKD3D_DECL_USAGE_FOG 
VKD3D_DECL_USAGE_DEPTH 
VKD3D_DECL_USAGE_SAMPLE 

Definition at line 1019 of file vkd3d_shader_private.h.

1020{
1035};
@ 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_COLOR
@ VKD3D_DECL_USAGE_POSITION
@ VKD3D_DECL_USAGE_PSIZE
@ VKD3D_DECL_USAGE_TESS_FACTOR
@ VKD3D_DECL_USAGE_NORMAL
@ VKD3D_DECL_USAGE_DEPTH
@ VKD3D_DECL_USAGE_FOG
@ VKD3D_DECL_USAGE_POSITIONT

◆ vkd3d_md5_variant

Enumerator
VKD3D_MD5_STANDARD 
VKD3D_MD5_DXBC 

Definition at line 1664 of file vkd3d_shader_private.h.

1665{
1668};
@ VKD3D_MD5_DXBC
@ VKD3D_MD5_STANDARD

◆ vkd3d_primitive_type

Enumerator
VKD3D_PT_UNDEFINED 
VKD3D_PT_POINTLIST 
VKD3D_PT_LINELIST 
VKD3D_PT_LINESTRIP 
VKD3D_PT_TRIANGLELIST 
VKD3D_PT_TRIANGLESTRIP 
VKD3D_PT_TRIANGLEFAN 
VKD3D_PT_LINELIST_ADJ 
VKD3D_PT_LINESTRIP_ADJ 
VKD3D_PT_TRIANGLELIST_ADJ 
VKD3D_PT_TRIANGLESTRIP_ADJ 
VKD3D_PT_PATCH 
VKD3D_PT_COUNT 

Definition at line 1207 of file vkd3d_shader_private.h.

1208{
1220 VKD3D_PT_PATCH = 14,
1221
1222 VKD3D_PT_COUNT = 15,
1223};
@ VKD3D_PT_TRIANGLESTRIP
@ VKD3D_PT_LINESTRIP
@ VKD3D_PT_PATCH
@ VKD3D_PT_COUNT
@ VKD3D_PT_TRIANGLELIST
@ VKD3D_PT_TRIANGLELIST_ADJ
@ VKD3D_PT_TRIANGLEFAN
@ VKD3D_PT_LINESTRIP_ADJ
@ VKD3D_PT_UNDEFINED
@ VKD3D_PT_LINELIST_ADJ
@ VKD3D_PT_TRIANGLESTRIP_ADJ
@ VKD3D_PT_POINTLIST
@ VKD3D_PT_LINELIST

◆ vkd3d_shader_atomic_rmw_flags

Enumerator
VKD3DARF_SEQ_CST 
VKD3DARF_VOLATILE 

Definition at line 831 of file vkd3d_shader_private.h.

832{
833 VKD3DARF_SEQ_CST = 0x1,
834 VKD3DARF_VOLATILE = 0x2,
835};
@ VKD3DARF_SEQ_CST
@ VKD3DARF_VOLATILE

◆ vkd3d_shader_conditional_op

Enumerator
VKD3D_SHADER_CONDITIONAL_OP_NZ 
VKD3D_SHADER_CONDITIONAL_OP_Z 

Definition at line 877 of file vkd3d_shader_private.h.

878{
881};
@ VKD3D_SHADER_CONDITIONAL_OP_NZ
@ VKD3D_SHADER_CONDITIONAL_OP_Z

◆ vkd3d_shader_config_flags

Enumerator
VKD3D_SHADER_CONFIG_FLAG_FORCE_VALIDATION 

Definition at line 1390 of file vkd3d_shader_private.h.

1391{
1393};
@ VKD3D_SHADER_CONFIG_FLAG_FORCE_VALIDATION

◆ vkd3d_shader_dst_modifier

Enumerator
VKD3DSPDM_NONE 
VKD3DSPDM_SATURATE 
VKD3DSPDM_PARTIALPRECISION 
VKD3DSPDM_MSAMPCENTROID 
VKD3DSPDM_MASK 

Definition at line 756 of file vkd3d_shader_private.h.

757{
758 VKD3DSPDM_NONE = 0,
762 VKD3DSPDM_MASK = 7,
763};
@ VKD3DSPDM_SATURATE
@ VKD3DSPDM_NONE
@ VKD3DSPDM_MASK
@ VKD3DSPDM_PARTIALPRECISION
@ VKD3DSPDM_MSAMPCENTROID

◆ vkd3d_shader_error

Enumerator
VKD3D_SHADER_ERROR_DXBC_INVALID_SIZE 
VKD3D_SHADER_ERROR_DXBC_INVALID_MAGIC 
VKD3D_SHADER_ERROR_DXBC_INVALID_CHECKSUM 
VKD3D_SHADER_ERROR_DXBC_INVALID_VERSION 
VKD3D_SHADER_ERROR_DXBC_INVALID_CHUNK_OFFSET 
VKD3D_SHADER_ERROR_DXBC_INVALID_CHUNK_SIZE 
VKD3D_SHADER_ERROR_DXBC_OUT_OF_MEMORY 
VKD3D_SHADER_ERROR_DXBC_INVALID_SIGNATURE 
VKD3D_SHADER_ERROR_TPF_MISMATCHED_CF 
VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_RANGE 
VKD3D_SHADER_ERROR_TPF_OUT_OF_MEMORY 
VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_INDEX_COUNT 
VKD3D_SHADER_ERROR_TPF_TOO_MANY_REGISTERS 
VKD3D_SHADER_ERROR_TPF_INVALID_IO_REGISTER 
VKD3D_SHADER_ERROR_TPF_INVALID_INDEX_RANGE_DCL 
VKD3D_SHADER_ERROR_TPF_INVALID_CASE_VALUE 
VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_DIMENSION 
VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_SWIZZLE 
VKD3D_SHADER_ERROR_TPF_INVALID_REGISTER_DCL 
VKD3D_SHADER_WARNING_TPF_MASK_NOT_CONTIGUOUS 
VKD3D_SHADER_WARNING_TPF_UNHANDLED_INDEX_RANGE_MASK 
VKD3D_SHADER_WARNING_TPF_UNHANDLED_REGISTER_MASK 
VKD3D_SHADER_WARNING_TPF_UNHANDLED_REGISTER_SWIZZLE 
VKD3D_SHADER_ERROR_SPV_DESCRIPTOR_BINDING_NOT_FOUND 
VKD3D_SHADER_ERROR_SPV_INVALID_REGISTER_TYPE 
VKD3D_SHADER_ERROR_SPV_INVALID_DESCRIPTOR_BINDING 
VKD3D_SHADER_ERROR_SPV_DESCRIPTOR_IDX_UNSUPPORTED 
VKD3D_SHADER_ERROR_SPV_UNSUPPORTED_FEATURE 
VKD3D_SHADER_ERROR_SPV_OUT_OF_MEMORY 
VKD3D_SHADER_ERROR_SPV_INVALID_TYPE 
VKD3D_SHADER_ERROR_SPV_INVALID_HANDLER 
VKD3D_SHADER_ERROR_SPV_NOT_IMPLEMENTED 
VKD3D_SHADER_ERROR_SPV_INVALID_SHADER 
VKD3D_SHADER_WARNING_SPV_INVALID_SWIZZLE 
VKD3D_SHADER_WARNING_SPV_INVALID_UAV_FLAGS 
VKD3D_SHADER_WARNING_SPV_IGNORING_FLAG 
VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY 
VKD3D_SHADER_ERROR_RS_INVALID_VERSION 
VKD3D_SHADER_ERROR_RS_INVALID_ROOT_PARAMETER_TYPE 
VKD3D_SHADER_ERROR_RS_INVALID_DESCRIPTOR_RANGE_TYPE 
VKD3D_SHADER_ERROR_RS_MIXED_DESCRIPTOR_RANGE_TYPES 
VKD3D_SHADER_ERROR_PP_INVALID_SYNTAX 
VKD3D_SHADER_ERROR_PP_ERROR_DIRECTIVE 
VKD3D_SHADER_ERROR_PP_INCLUDE_FAILED 
VKD3D_SHADER_WARNING_PP_ALREADY_DEFINED 
VKD3D_SHADER_WARNING_PP_INVALID_DIRECTIVE 
VKD3D_SHADER_WARNING_PP_ARGUMENT_COUNT_MISMATCH 
VKD3D_SHADER_WARNING_PP_UNKNOWN_DIRECTIVE 
VKD3D_SHADER_WARNING_PP_UNTERMINATED_MACRO 
VKD3D_SHADER_WARNING_PP_UNTERMINATED_IF 
VKD3D_SHADER_WARNING_PP_DIV_BY_ZERO 
VKD3D_SHADER_ERROR_HLSL_INVALID_SYNTAX 
VKD3D_SHADER_ERROR_HLSL_INVALID_MODIFIER 
VKD3D_SHADER_ERROR_HLSL_INVALID_TYPE 
VKD3D_SHADER_ERROR_HLSL_MODIFIES_CONST 
VKD3D_SHADER_ERROR_HLSL_MISSING_SEMANTIC 
VKD3D_SHADER_ERROR_HLSL_NOT_DEFINED 
VKD3D_SHADER_ERROR_HLSL_REDEFINED 
VKD3D_SHADER_ERROR_HLSL_WRONG_PARAMETER_COUNT 
VKD3D_SHADER_ERROR_HLSL_INVALID_SIZE 
VKD3D_SHADER_ERROR_HLSL_MISSING_INITIALIZER 
VKD3D_SHADER_ERROR_HLSL_INVALID_LVALUE 
VKD3D_SHADER_ERROR_HLSL_INVALID_WRITEMASK 
VKD3D_SHADER_ERROR_HLSL_INVALID_INDEX 
VKD3D_SHADER_ERROR_HLSL_INVALID_SEMANTIC 
VKD3D_SHADER_ERROR_HLSL_INVALID_RETURN 
VKD3D_SHADER_ERROR_HLSL_OVERLAPPING_RESERVATIONS 
VKD3D_SHADER_ERROR_HLSL_INVALID_RESERVATION 
VKD3D_SHADER_ERROR_HLSL_NOT_IMPLEMENTED 
VKD3D_SHADER_ERROR_HLSL_INVALID_TEXEL_OFFSET 
VKD3D_SHADER_ERROR_HLSL_OFFSET_OUT_OF_BOUNDS 
VKD3D_SHADER_ERROR_HLSL_INCOMPATIBLE_PROFILE 
VKD3D_SHADER_ERROR_HLSL_DIVISION_BY_ZERO 
VKD3D_SHADER_ERROR_HLSL_NON_STATIC_OBJECT_REF 
VKD3D_SHADER_ERROR_HLSL_INVALID_THREAD_COUNT 
VKD3D_SHADER_ERROR_HLSL_MISSING_ATTRIBUTE 
VKD3D_SHADER_ERROR_HLSL_RECURSIVE_CALL 
VKD3D_SHADER_ERROR_HLSL_INCONSISTENT_SAMPLER 
VKD3D_SHADER_ERROR_HLSL_NON_FINITE_RESULT 
VKD3D_SHADER_ERROR_HLSL_DUPLICATE_SWITCH_CASE 
VKD3D_SHADER_ERROR_HLSL_MISSING_TECHNIQUE 
VKD3D_SHADER_ERROR_HLSL_UNKNOWN_MODIFIER 
VKD3D_SHADER_ERROR_HLSL_INVALID_STATE_BLOCK_ENTRY 
VKD3D_SHADER_ERROR_HLSL_FAILED_FORCED_UNROLL 
VKD3D_SHADER_ERROR_HLSL_INVALID_PROFILE 
VKD3D_SHADER_ERROR_HLSL_MISPLACED_COMPILE 
VKD3D_SHADER_ERROR_HLSL_INVALID_DOMAIN 
VKD3D_SHADER_ERROR_HLSL_INVALID_CONTROL_POINT_COUNT 
VKD3D_SHADER_ERROR_HLSL_INVALID_OUTPUT_PRIMITIVE 
VKD3D_SHADER_ERROR_HLSL_INVALID_PARTITIONING 
VKD3D_SHADER_ERROR_HLSL_MISPLACED_SAMPLER_STATE 
VKD3D_SHADER_WARNING_HLSL_IMPLICIT_TRUNCATION 
VKD3D_SHADER_WARNING_HLSL_DIVISION_BY_ZERO 
VKD3D_SHADER_WARNING_HLSL_UNKNOWN_ATTRIBUTE 
VKD3D_SHADER_WARNING_HLSL_IMAGINARY_NUMERIC_RESULT 
VKD3D_SHADER_WARNING_HLSL_NON_FINITE_RESULT 
VKD3D_SHADER_WARNING_HLSL_IGNORED_ATTRIBUTE 
VKD3D_SHADER_WARNING_HLSL_IGNORED_DEFAULT_VALUE 
VKD3D_SHADER_ERROR_GLSL_INTERNAL 
VKD3D_SHADER_ERROR_GLSL_BINDING_NOT_FOUND 
VKD3D_SHADER_ERROR_GLSL_UNSUPPORTED 
VKD3D_SHADER_ERROR_D3DBC_UNEXPECTED_EOF 
VKD3D_SHADER_ERROR_D3DBC_INVALID_VERSION_TOKEN 
VKD3D_SHADER_ERROR_D3DBC_INVALID_OPCODE 
VKD3D_SHADER_ERROR_D3DBC_INVALID_RESOURCE_TYPE 
VKD3D_SHADER_ERROR_D3DBC_OUT_OF_MEMORY 
VKD3D_SHADER_ERROR_D3DBC_INVALID_REGISTER_INDEX 
VKD3D_SHADER_ERROR_D3DBC_UNDECLARED_SEMANTIC 
VKD3D_SHADER_ERROR_D3DBC_INVALID_REGISTER_TYPE 
VKD3D_SHADER_ERROR_D3DBC_INVALID_REGISTER_COUNT 
VKD3D_SHADER_ERROR_D3DBC_NOT_IMPLEMENTED 
VKD3D_SHADER_ERROR_D3DBC_INVALID_PROFILE 
VKD3D_SHADER_ERROR_D3DBC_INVALID_WRITEMASK 
VKD3D_SHADER_WARNING_D3DBC_IGNORED_INSTRUCTION_FLAGS 
VKD3D_SHADER_ERROR_DXIL_OUT_OF_MEMORY 
VKD3D_SHADER_ERROR_DXIL_INVALID_SIZE 
VKD3D_SHADER_ERROR_DXIL_INVALID_CHUNK_OFFSET 
VKD3D_SHADER_ERROR_DXIL_INVALID_CHUNK_SIZE 
VKD3D_SHADER_ERROR_DXIL_INVALID_BITCODE 
VKD3D_SHADER_ERROR_DXIL_INVALID_OPERAND_COUNT 
VKD3D_SHADER_ERROR_DXIL_INVALID_TYPE_TABLE 
VKD3D_SHADER_ERROR_DXIL_INVALID_VALUE_SYMTAB 
VKD3D_SHADER_ERROR_DXIL_UNSUPPORTED_BITCODE_FORMAT 
VKD3D_SHADER_ERROR_DXIL_INVALID_FUNCTION_DCL 
VKD3D_SHADER_ERROR_DXIL_INVALID_TYPE_ID 
VKD3D_SHADER_ERROR_DXIL_INVALID_MODULE 
VKD3D_SHADER_ERROR_DXIL_INVALID_OPERAND 
VKD3D_SHADER_ERROR_DXIL_UNHANDLED_INTRINSIC 
VKD3D_SHADER_ERROR_DXIL_INVALID_METADATA 
VKD3D_SHADER_ERROR_DXIL_INVALID_ENTRY_POINT 
VKD3D_SHADER_ERROR_DXIL_INVALID_SIGNATURE 
VKD3D_SHADER_ERROR_DXIL_INVALID_PROPERTIES 
VKD3D_SHADER_ERROR_DXIL_INVALID_RESOURCES 
VKD3D_SHADER_ERROR_DXIL_INVALID_RESOURCE_HANDLE 
VKD3D_SHADER_WARNING_DXIL_UNKNOWN_MAGIC_NUMBER 
VKD3D_SHADER_WARNING_DXIL_UNKNOWN_SHADER_TYPE 
VKD3D_SHADER_WARNING_DXIL_INVALID_BLOCK_LENGTH 
VKD3D_SHADER_WARNING_DXIL_INVALID_MODULE_LENGTH 
VKD3D_SHADER_WARNING_DXIL_IGNORING_OPERANDS 
VKD3D_SHADER_WARNING_DXIL_TYPE_MISMATCH 
VKD3D_SHADER_WARNING_DXIL_ENTRY_POINT_MISMATCH 
VKD3D_SHADER_WARNING_DXIL_INVALID_MASK 
VKD3D_SHADER_WARNING_DXIL_INVALID_OPERATION 
VKD3D_SHADER_WARNING_DXIL_IGNORING_ATTACHMENT 
VKD3D_SHADER_WARNING_DXIL_UNDEFINED_OPERAND 
VKD3D_SHADER_ERROR_VSIR_NOT_IMPLEMENTED 
VKD3D_SHADER_ERROR_VSIR_INVALID_HANDLER 
VKD3D_SHADER_ERROR_VSIR_INVALID_REGISTER_TYPE 
VKD3D_SHADER_ERROR_VSIR_INVALID_WRITE_MASK 
VKD3D_SHADER_ERROR_VSIR_INVALID_MODIFIERS 
VKD3D_SHADER_ERROR_VSIR_INVALID_SHIFT 
VKD3D_SHADER_ERROR_VSIR_INVALID_SWIZZLE 
VKD3D_SHADER_ERROR_VSIR_INVALID_PRECISION 
VKD3D_SHADER_ERROR_VSIR_INVALID_DATA_TYPE 
VKD3D_SHADER_ERROR_VSIR_INVALID_DIMENSION 
VKD3D_SHADER_ERROR_VSIR_INVALID_INDEX_COUNT 
VKD3D_SHADER_ERROR_VSIR_INVALID_DEST_COUNT 
VKD3D_SHADER_ERROR_VSIR_INVALID_SOURCE_COUNT 
VKD3D_SHADER_ERROR_VSIR_DUPLICATE_DCL_TEMPS 
VKD3D_SHADER_ERROR_VSIR_INVALID_DCL_TEMPS 
VKD3D_SHADER_ERROR_VSIR_INVALID_INDEX 
VKD3D_SHADER_ERROR_VSIR_INVALID_CONTROL_FLOW 
VKD3D_SHADER_ERROR_VSIR_INVALID_SSA_USAGE 
VKD3D_SHADER_ERROR_VSIR_INVALID_TESSELLATION 
VKD3D_SHADER_ERROR_VSIR_INVALID_GS 
VKD3D_SHADER_ERROR_VSIR_INVALID_PARAMETER 
VKD3D_SHADER_ERROR_VSIR_MISSING_SEMANTIC 
VKD3D_SHADER_ERROR_VSIR_INVALID_SIGNATURE 
VKD3D_SHADER_WARNING_VSIR_DYNAMIC_DESCRIPTOR_ARRAY 
VKD3D_SHADER_ERROR_MSL_INTERNAL 
VKD3D_SHADER_ERROR_MSL_BINDING_NOT_FOUND 
VKD3D_SHADER_ERROR_FX_NOT_IMPLEMENTED 
VKD3D_SHADER_ERROR_FX_INVALID_VERSION 
VKD3D_SHADER_ERROR_FX_INVALID_DATA 

Definition at line 65 of file vkd3d_shader_private.h.

66{
75
87
92
103
107
113
117
125
166
174
178
191
193
214
226
250
252
255
259};
@ 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

◆ vkd3d_shader_input_sysval_semantic

Enumerator
VKD3D_SIV_NONE 
VKD3D_SIV_POSITION 
VKD3D_SIV_CLIP_DISTANCE 
VKD3D_SIV_CULL_DISTANCE 
VKD3D_SIV_RENDER_TARGET_ARRAY_INDEX 
VKD3D_SIV_VIEWPORT_ARRAY_INDEX 
VKD3D_SIV_VERTEX_ID 
VKD3D_SIV_PRIMITIVE_ID 
VKD3D_SIV_INSTANCE_ID 
VKD3D_SIV_IS_FRONT_FACE 
VKD3D_SIV_SAMPLE_INDEX 
VKD3D_SIV_QUAD_U0_TESS_FACTOR 
VKD3D_SIV_QUAD_V0_TESS_FACTOR 
VKD3D_SIV_QUAD_U1_TESS_FACTOR 
VKD3D_SIV_QUAD_V1_TESS_FACTOR 
VKD3D_SIV_QUAD_U_INNER_TESS_FACTOR 
VKD3D_SIV_QUAD_V_INNER_TESS_FACTOR 
VKD3D_SIV_TRIANGLE_U_TESS_FACTOR 
VKD3D_SIV_TRIANGLE_V_TESS_FACTOR 
VKD3D_SIV_TRIANGLE_W_TESS_FACTOR 
VKD3D_SIV_TRIANGLE_INNER_TESS_FACTOR 
VKD3D_SIV_LINE_DETAIL_TESS_FACTOR 
VKD3D_SIV_LINE_DENSITY_TESS_FACTOR 

Definition at line 1047 of file vkd3d_shader_private.h.

1048{
1049 VKD3D_SIV_NONE = 0,
1072};
@ 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_PRIMITIVE_ID
@ VKD3D_SIV_VERTEX_ID
@ VKD3D_SIV_QUAD_U1_TESS_FACTOR
@ VKD3D_SIV_INSTANCE_ID
@ VKD3D_SIV_QUAD_U0_TESS_FACTOR
@ VKD3D_SIV_QUAD_U_INNER_TESS_FACTOR
@ VKD3D_SIV_TRIANGLE_INNER_TESS_FACTOR
@ VKD3D_SIV_NONE
@ VKD3D_SIV_SAMPLE_INDEX
@ VKD3D_SIV_POSITION
@ 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

◆ vkd3d_shader_interpolation_mode

Enumerator
VKD3DSIM_NONE 
VKD3DSIM_CONSTANT 
VKD3DSIM_LINEAR 
VKD3DSIM_LINEAR_CENTROID 
VKD3DSIM_LINEAR_NOPERSPECTIVE 
VKD3DSIM_LINEAR_NOPERSPECTIVE_CENTROID 
VKD3DSIM_LINEAR_SAMPLE 
VKD3DSIM_LINEAR_NOPERSPECTIVE_SAMPLE 
VKD3DSIM_COUNT 

Definition at line 765 of file vkd3d_shader_private.h.

766{
767 VKD3DSIM_NONE = 0,
769 VKD3DSIM_LINEAR = 2,
775
776 VKD3DSIM_COUNT = 8,
777};
@ VKD3DSIM_CONSTANT
@ VKD3DSIM_NONE
@ VKD3DSIM_LINEAR_NOPERSPECTIVE_CENTROID
@ VKD3DSIM_LINEAR_NOPERSPECTIVE_SAMPLE
@ VKD3DSIM_LINEAR_CENTROID
@ VKD3DSIM_LINEAR
@ VKD3DSIM_LINEAR_NOPERSPECTIVE
@ VKD3DSIM_LINEAR_SAMPLE
@ VKD3DSIM_COUNT

◆ vkd3d_shader_opcode

Enumerator
VKD3DSIH_ABS 
VKD3DSIH_ACOS 
VKD3DSIH_ADD 
VKD3DSIH_AND 
VKD3DSIH_ASIN 
VKD3DSIH_ATAN 
VKD3DSIH_ATOMIC_AND 
VKD3DSIH_ATOMIC_CMP_STORE 
VKD3DSIH_ATOMIC_IADD 
VKD3DSIH_ATOMIC_IMAX 
VKD3DSIH_ATOMIC_IMIN 
VKD3DSIH_ATOMIC_OR 
VKD3DSIH_ATOMIC_UMAX 
VKD3DSIH_ATOMIC_UMIN 
VKD3DSIH_ATOMIC_XOR 
VKD3DSIH_BEM 
VKD3DSIH_BFI 
VKD3DSIH_BFREV 
VKD3DSIH_BRANCH 
VKD3DSIH_BREAK 
VKD3DSIH_BREAKC 
VKD3DSIH_BREAKP 
VKD3DSIH_BUFINFO 
VKD3DSIH_CALL 
VKD3DSIH_CALLNZ 
VKD3DSIH_CASE 
VKD3DSIH_CHECK_ACCESS_FULLY_MAPPED 
VKD3DSIH_CMP 
VKD3DSIH_CND 
VKD3DSIH_CONTINUE 
VKD3DSIH_CONTINUEP 
VKD3DSIH_COUNTBITS 
VKD3DSIH_CRS 
VKD3DSIH_CUT 
VKD3DSIH_CUT_STREAM 
VKD3DSIH_DADD 
VKD3DSIH_DCL 
VKD3DSIH_DCL_CONSTANT_BUFFER 
VKD3DSIH_DCL_FUNCTION_BODY 
VKD3DSIH_DCL_FUNCTION_TABLE 
VKD3DSIH_DCL_GLOBAL_FLAGS 
VKD3DSIH_DCL_GS_INSTANCES 
VKD3DSIH_DCL_HS_FORK_PHASE_INSTANCE_COUNT 
VKD3DSIH_DCL_HS_JOIN_PHASE_INSTANCE_COUNT 
VKD3DSIH_DCL_HS_MAX_TESSFACTOR 
VKD3DSIH_DCL_IMMEDIATE_CONSTANT_BUFFER 
VKD3DSIH_DCL_INDEX_RANGE 
VKD3DSIH_DCL_INDEXABLE_TEMP 
VKD3DSIH_DCL_INPUT 
VKD3DSIH_DCL_INPUT_CONTROL_POINT_COUNT 
VKD3DSIH_DCL_INPUT_PRIMITIVE 
VKD3DSIH_DCL_INPUT_PS 
VKD3DSIH_DCL_INPUT_PS_SGV 
VKD3DSIH_DCL_INPUT_PS_SIV 
VKD3DSIH_DCL_INPUT_SGV 
VKD3DSIH_DCL_INPUT_SIV 
VKD3DSIH_DCL_INTERFACE 
VKD3DSIH_DCL_OUTPUT 
VKD3DSIH_DCL_OUTPUT_CONTROL_POINT_COUNT 
VKD3DSIH_DCL_OUTPUT_SIV 
VKD3DSIH_DCL_OUTPUT_TOPOLOGY 
VKD3DSIH_DCL_RESOURCE_RAW 
VKD3DSIH_DCL_RESOURCE_STRUCTURED 
VKD3DSIH_DCL_SAMPLER 
VKD3DSIH_DCL_STREAM 
VKD3DSIH_DCL_TEMPS 
VKD3DSIH_DCL_TESSELLATOR_DOMAIN 
VKD3DSIH_DCL_TESSELLATOR_OUTPUT_PRIMITIVE 
VKD3DSIH_DCL_TESSELLATOR_PARTITIONING 
VKD3DSIH_DCL_TGSM_RAW 
VKD3DSIH_DCL_TGSM_STRUCTURED 
VKD3DSIH_DCL_THREAD_GROUP 
VKD3DSIH_DCL_UAV_RAW 
VKD3DSIH_DCL_UAV_STRUCTURED 
VKD3DSIH_DCL_UAV_TYPED 
VKD3DSIH_DCL_VERTICES_OUT 
VKD3DSIH_DDIV 
VKD3DSIH_DEF 
VKD3DSIH_DEFAULT 
VKD3DSIH_DEFB 
VKD3DSIH_DEFI 
VKD3DSIH_DEQO 
VKD3DSIH_DFMA 
VKD3DSIH_DGEO 
VKD3DSIH_DISCARD 
VKD3DSIH_DIV 
VKD3DSIH_DLT 
VKD3DSIH_DMAX 
VKD3DSIH_DMIN 
VKD3DSIH_DMOV 
VKD3DSIH_DMOVC 
VKD3DSIH_DMUL 
VKD3DSIH_DNE 
VKD3DSIH_DP2 
VKD3DSIH_DP2ADD 
VKD3DSIH_DP3 
VKD3DSIH_DP4 
VKD3DSIH_DRCP 
VKD3DSIH_DST 
VKD3DSIH_DSX 
VKD3DSIH_DSX_COARSE 
VKD3DSIH_DSX_FINE 
VKD3DSIH_DSY 
VKD3DSIH_DSY_COARSE 
VKD3DSIH_DSY_FINE 
VKD3DSIH_DTOF 
VKD3DSIH_DTOI 
VKD3DSIH_DTOU 
VKD3DSIH_ELSE 
VKD3DSIH_EMIT 
VKD3DSIH_EMIT_STREAM 
VKD3DSIH_ENDIF 
VKD3DSIH_ENDLOOP 
VKD3DSIH_ENDREP 
VKD3DSIH_ENDSWITCH 
VKD3DSIH_EQO 
VKD3DSIH_EQU 
VKD3DSIH_EVAL_CENTROID 
VKD3DSIH_EVAL_SAMPLE_INDEX 
VKD3DSIH_EXP 
VKD3DSIH_EXPP 
VKD3DSIH_F16TOF32 
VKD3DSIH_F32TOF16 
VKD3DSIH_FCALL 
VKD3DSIH_FIRSTBIT_HI 
VKD3DSIH_FIRSTBIT_LO 
VKD3DSIH_FIRSTBIT_SHI 
VKD3DSIH_FRC 
VKD3DSIH_FREM 
VKD3DSIH_FTOD 
VKD3DSIH_FTOI 
VKD3DSIH_FTOU 
VKD3DSIH_GATHER4 
VKD3DSIH_GATHER4_C 
VKD3DSIH_GATHER4_C_S 
VKD3DSIH_GATHER4_PO 
VKD3DSIH_GATHER4_PO_C 
VKD3DSIH_GATHER4_PO_C_S 
VKD3DSIH_GATHER4_PO_S 
VKD3DSIH_GATHER4_S 
VKD3DSIH_GEO 
VKD3DSIH_GEU 
VKD3DSIH_HCOS 
VKD3DSIH_HS_CONTROL_POINT_PHASE 
VKD3DSIH_HS_DECLS 
VKD3DSIH_HS_FORK_PHASE 
VKD3DSIH_HS_JOIN_PHASE 
VKD3DSIH_HSIN 
VKD3DSIH_HTAN 
VKD3DSIH_IADD 
VKD3DSIH_IBFE 
VKD3DSIH_IDIV 
VKD3DSIH_IEQ 
VKD3DSIH_IF 
VKD3DSIH_IFC 
VKD3DSIH_IGE 
VKD3DSIH_ILT 
VKD3DSIH_IMAD 
VKD3DSIH_IMAX 
VKD3DSIH_IMIN 
VKD3DSIH_IMM_ATOMIC_ALLOC 
VKD3DSIH_IMM_ATOMIC_AND 
VKD3DSIH_IMM_ATOMIC_CMP_EXCH 
VKD3DSIH_IMM_ATOMIC_CONSUME 
VKD3DSIH_IMM_ATOMIC_EXCH 
VKD3DSIH_IMM_ATOMIC_IADD 
VKD3DSIH_IMM_ATOMIC_IMAX 
VKD3DSIH_IMM_ATOMIC_IMIN 
VKD3DSIH_IMM_ATOMIC_OR 
VKD3DSIH_IMM_ATOMIC_UMAX 
VKD3DSIH_IMM_ATOMIC_UMIN 
VKD3DSIH_IMM_ATOMIC_XOR 
VKD3DSIH_IMUL 
VKD3DSIH_INE 
VKD3DSIH_INEG 
VKD3DSIH_ISFINITE 
VKD3DSIH_ISHL 
VKD3DSIH_ISHR 
VKD3DSIH_ISINF 
VKD3DSIH_ISNAN 
VKD3DSIH_ITOD 
VKD3DSIH_ITOF 
VKD3DSIH_ITOI 
VKD3DSIH_LABEL 
VKD3DSIH_LD 
VKD3DSIH_LD2DMS 
VKD3DSIH_LD2DMS_S 
VKD3DSIH_LD_RAW 
VKD3DSIH_LD_RAW_S 
VKD3DSIH_LD_S 
VKD3DSIH_LD_STRUCTURED 
VKD3DSIH_LD_STRUCTURED_S 
VKD3DSIH_LD_UAV_TYPED 
VKD3DSIH_LD_UAV_TYPED_S 
VKD3DSIH_LIT 
VKD3DSIH_LOD 
VKD3DSIH_LOG 
VKD3DSIH_LOGP 
VKD3DSIH_LOOP 
VKD3DSIH_LRP 
VKD3DSIH_LTO 
VKD3DSIH_LTU 
VKD3DSIH_M3x2 
VKD3DSIH_M3x3 
VKD3DSIH_M3x4 
VKD3DSIH_M4x3 
VKD3DSIH_M4x4 
VKD3DSIH_MAD 
VKD3DSIH_MAX 
VKD3DSIH_MIN 
VKD3DSIH_MOV 
VKD3DSIH_MOVA 
VKD3DSIH_MOVC 
VKD3DSIH_MSAD 
VKD3DSIH_MUL 
VKD3DSIH_NEO 
VKD3DSIH_NEU 
VKD3DSIH_NOP 
VKD3DSIH_NOT 
VKD3DSIH_NRM 
VKD3DSIH_OR 
VKD3DSIH_ORD 
VKD3DSIH_PHASE 
VKD3DSIH_PHI 
VKD3DSIH_POW 
VKD3DSIH_QUAD_READ_ACROSS_D 
VKD3DSIH_QUAD_READ_ACROSS_X 
VKD3DSIH_QUAD_READ_ACROSS_Y 
VKD3DSIH_QUAD_READ_LANE_AT 
VKD3DSIH_RCP 
VKD3DSIH_REP 
VKD3DSIH_RESINFO 
VKD3DSIH_RET 
VKD3DSIH_RETP 
VKD3DSIH_ROUND_NE 
VKD3DSIH_ROUND_NI 
VKD3DSIH_ROUND_PI 
VKD3DSIH_ROUND_Z 
VKD3DSIH_RSQ 
VKD3DSIH_SAMPLE 
VKD3DSIH_SAMPLE_B 
VKD3DSIH_SAMPLE_B_CL_S 
VKD3DSIH_SAMPLE_C 
VKD3DSIH_SAMPLE_C_CL_S 
VKD3DSIH_SAMPLE_C_LZ 
VKD3DSIH_SAMPLE_C_LZ_S 
VKD3DSIH_SAMPLE_CL_S 
VKD3DSIH_SAMPLE_GRAD 
VKD3DSIH_SAMPLE_GRAD_CL_S 
VKD3DSIH_SAMPLE_INFO 
VKD3DSIH_SAMPLE_LOD 
VKD3DSIH_SAMPLE_LOD_S 
VKD3DSIH_SAMPLE_POS 
VKD3DSIH_SETP 
VKD3DSIH_SGE 
VKD3DSIH_SGN 
VKD3DSIH_SINCOS 
VKD3DSIH_SLT 
VKD3DSIH_SQRT 
VKD3DSIH_STORE_RAW 
VKD3DSIH_STORE_STRUCTURED 
VKD3DSIH_STORE_UAV_TYPED 
VKD3DSIH_SUB 
VKD3DSIH_SWAPC 
VKD3DSIH_SWITCH 
VKD3DSIH_SWITCH_MONOLITHIC 
VKD3DSIH_SYNC 
VKD3DSIH_TAN 
VKD3DSIH_TEX 
VKD3DSIH_TEXBEM 
VKD3DSIH_TEXBEML 
VKD3DSIH_TEXCOORD 
VKD3DSIH_TEXDEPTH 
VKD3DSIH_TEXDP3 
VKD3DSIH_TEXDP3TEX 
VKD3DSIH_TEXKILL 
VKD3DSIH_TEXLDD 
VKD3DSIH_TEXLDL 
VKD3DSIH_TEXM3x2DEPTH 
VKD3DSIH_TEXM3x2PAD 
VKD3DSIH_TEXM3x2TEX 
VKD3DSIH_TEXM3x3 
VKD3DSIH_TEXM3x3DIFF 
VKD3DSIH_TEXM3x3PAD 
VKD3DSIH_TEXM3x3SPEC 
VKD3DSIH_TEXM3x3TEX 
VKD3DSIH_TEXM3x3VSPEC 
VKD3DSIH_TEXREG2AR 
VKD3DSIH_TEXREG2GB 
VKD3DSIH_TEXREG2RGB 
VKD3DSIH_UBFE 
VKD3DSIH_UDIV 
VKD3DSIH_UGE 
VKD3DSIH_ULT 
VKD3DSIH_UMAX 
VKD3DSIH_UMIN 
VKD3DSIH_UMUL 
VKD3DSIH_UNO 
VKD3DSIH_USHR 
VKD3DSIH_UTOD 
VKD3DSIH_UTOF 
VKD3DSIH_UTOU 
VKD3DSIH_WAVE_ACTIVE_ALL_EQUAL 
VKD3DSIH_WAVE_ACTIVE_BALLOT 
VKD3DSIH_WAVE_ACTIVE_BIT_AND 
VKD3DSIH_WAVE_ACTIVE_BIT_OR 
VKD3DSIH_WAVE_ACTIVE_BIT_XOR 
VKD3DSIH_WAVE_ALL_BIT_COUNT 
VKD3DSIH_WAVE_ALL_TRUE 
VKD3DSIH_WAVE_ANY_TRUE 
VKD3DSIH_WAVE_IS_FIRST_LANE 
VKD3DSIH_WAVE_OP_ADD 
VKD3DSIH_WAVE_OP_IMAX 
VKD3DSIH_WAVE_OP_IMIN 
VKD3DSIH_WAVE_OP_MAX 
VKD3DSIH_WAVE_OP_MIN 
VKD3DSIH_WAVE_OP_MUL 
VKD3DSIH_WAVE_OP_UMAX 
VKD3DSIH_WAVE_OP_UMIN 
VKD3DSIH_WAVE_PREFIX_BIT_COUNT 
VKD3DSIH_WAVE_READ_LANE_AT 
VKD3DSIH_WAVE_READ_LANE_FIRST 
VKD3DSIH_XOR 
VKD3DSIH_INVALID 
VKD3DSIH_COUNT 

Definition at line 261 of file vkd3d_shader_private.h.

262{
586
588
590};
@ VKD3DSIH_LD_UAV_TYPED_S
@ VKD3DSIH_UTOU
@ VKD3DSIH_NOP
@ VKD3DSIH_RESINFO
@ VKD3DSIH_ENDSWITCH
@ VKD3DSIH_DP2
@ VKD3DSIH_TEXM3x3SPEC
@ VKD3DSIH_HS_JOIN_PHASE
@ VKD3DSIH_SETP
@ VKD3DSIH_TEXREG2RGB
@ VKD3DSIH_TEXDP3TEX
@ VKD3DSIH_WAVE_OP_IMAX
@ VKD3DSIH_SGE
@ VKD3DSIH_IMAD
@ VKD3DSIH_TEX
@ VKD3DSIH_F16TOF32
@ VKD3DSIH_M3x4
@ VKD3DSIH_UMUL
@ VKD3DSIH_DCL_IMMEDIATE_CONSTANT_BUFFER
@ VKD3DSIH_AND
@ VKD3DSIH_QUAD_READ_LANE_AT
@ VKD3DSIH_IMM_ATOMIC_UMAX
@ VKD3DSIH_TEXM3x3PAD
@ VKD3DSIH_DCL_HS_JOIN_PHASE_INSTANCE_COUNT
@ VKD3DSIH_DMOV
@ VKD3DSIH_CRS
@ VKD3DSIH_DCL_TESSELLATOR_OUTPUT_PRIMITIVE
@ VKD3DSIH_GEU
@ VKD3DSIH_WAVE_READ_LANE_AT
@ VKD3DSIH_GATHER4_PO_C
@ VKD3DSIH_DCL_INPUT_CONTROL_POINT_COUNT
@ VKD3DSIH_WAVE_PREFIX_BIT_COUNT
@ VKD3DSIH_ISHL
@ VKD3DSIH_GATHER4_S
@ VKD3DSIH_SAMPLE_C_LZ
@ VKD3DSIH_IMUL
@ VKD3DSIH_LOOP
@ VKD3DSIH_SAMPLE_INFO
@ VKD3DSIH_TEXDP3
@ VKD3DSIH_HSIN
@ VKD3DSIH_ROUND_PI
@ VKD3DSIH_TEXREG2AR
@ VKD3DSIH_NRM
@ VKD3DSIH_WAVE_OP_MAX
@ VKD3DSIH_RETP
@ VKD3DSIH_DCL_INPUT_PS
@ VKD3DSIH_NEO
@ VKD3DSIH_TEXM3x3DIFF
@ VKD3DSIH_WAVE_OP_UMIN
@ VKD3DSIH_SWITCH
@ VKD3DSIH_ATOMIC_OR
@ VKD3DSIH_CND
@ VKD3DSIH_UGE
@ VKD3DSIH_DSX_COARSE
@ VKD3DSIH_DCL_INTERFACE
@ VKD3DSIH_WAVE_ACTIVE_ALL_EQUAL
@ VKD3DSIH_IMM_ATOMIC_XOR
@ VKD3DSIH_IADD
@ VKD3DSIH_GATHER4_PO_C_S
@ VKD3DSIH_ISINF
@ VKD3DSIH_M4x3
@ VKD3DSIH_TEXM3x2PAD
@ VKD3DSIH_DCL_INPUT_PRIMITIVE
@ VKD3DSIH_DP4
@ VKD3DSIH_DRCP
@ VKD3DSIH_DIV
@ VKD3DSIH_STORE_UAV_TYPED
@ VKD3DSIH_EMIT_STREAM
@ VKD3DSIH_WAVE_IS_FIRST_LANE
@ VKD3DSIH_DTOI
@ VKD3DSIH_UNO
@ VKD3DSIH_DTOF
@ VKD3DSIH_IEQ
@ VKD3DSIH_DNE
@ VKD3DSIH_DCL_OUTPUT
@ VKD3DSIH_SAMPLE_B_CL_S
@ VKD3DSIH_WAVE_ACTIVE_BIT_OR
@ VKD3DSIH_LD_UAV_TYPED
@ VKD3DSIH_XOR
@ VKD3DSIH_DCL_GS_INSTANCES
@ VKD3DSIH_LIT
@ VKD3DSIH_SUB
@ VKD3DSIH_SAMPLE
@ VKD3DSIH_UMAX
@ VKD3DSIH_TEXKILL
@ VKD3DSIH_QUAD_READ_ACROSS_X
@ VKD3DSIH_WAVE_ANY_TRUE
@ VKD3DSIH_ENDREP
@ VKD3DSIH_LD_STRUCTURED
@ VKD3DSIH_SAMPLE_C_CL_S
@ VKD3DSIH_DCL_OUTPUT_SIV
@ VKD3DSIH_SAMPLE_C
@ VKD3DSIH_DSY_FINE
@ VKD3DSIH_ISHR
@ VKD3DSIH_DCL_FUNCTION_TABLE
@ VKD3DSIH_QUAD_READ_ACROSS_D
@ VKD3DSIH_NEU
@ VKD3DSIH_TEXCOORD
@ VKD3DSIH_ATOMIC_XOR
@ VKD3DSIH_DCL_RESOURCE_RAW
@ VKD3DSIH_FTOD
@ VKD3DSIH_DCL_VERTICES_OUT
@ VKD3DSIH_ISNAN
@ VKD3DSIH_DCL_SAMPLER
@ VKD3DSIH_DADD
@ VKD3DSIH_BEM
@ VKD3DSIH_DCL_INPUT_SGV
@ VKD3DSIH_LOGP
@ VKD3DSIH_GATHER4_PO
@ VKD3DSIH_ROUND_NE
@ VKD3DSIH_DCL_OUTPUT_TOPOLOGY
@ VKD3DSIH_EVAL_CENTROID
@ VKD3DSIH_IMM_ATOMIC_CONSUME
@ VKD3DSIH_ACOS
@ VKD3DSIH_TEXREG2GB
@ VKD3DSIH_MUL
@ VKD3DSIH_BREAK
@ VKD3DSIH_CALL
@ VKD3DSIH_COUNT
@ VKD3DSIH_DCL_UAV_RAW
@ VKD3DSIH_LD2DMS
@ VKD3DSIH_EXP
@ VKD3DSIH_TEXBEM
@ VKD3DSIH_DISCARD
@ VKD3DSIH_SWAPC
@ VKD3DSIH_IFC
@ VKD3DSIH_BFREV
@ VKD3DSIH_HS_DECLS
@ VKD3DSIH_DFMA
@ VKD3DSIH_LTU
@ VKD3DSIH_ATOMIC_UMIN
@ VKD3DSIH_SAMPLE_LOD
@ VKD3DSIH_ATOMIC_AND
@ VKD3DSIH_CASE
@ VKD3DSIH_MIN
@ VKD3DSIH_BREAKC
@ VKD3DSIH_RCP
@ VKD3DSIH_DEQO
@ VKD3DSIH_CONTINUE
@ VKD3DSIH_INVALID
@ VKD3DSIH_SAMPLE_POS
@ VKD3DSIH_DCL_GLOBAL_FLAGS
@ VKD3DSIH_IF
@ VKD3DSIH_TEXM3x2TEX
@ VKD3DSIH_M4x4
@ VKD3DSIH_COUNTBITS
@ VKD3DSIH_HTAN
@ VKD3DSIH_UDIV
@ VKD3DSIH_RSQ
@ VKD3DSIH_EVAL_SAMPLE_INDEX
@ VKD3DSIH_ENDIF
@ VKD3DSIH_REP
@ VKD3DSIH_CUT_STREAM
@ VKD3DSIH_UTOD
@ VKD3DSIH_CHECK_ACCESS_FULLY_MAPPED
@ VKD3DSIH_LOD
@ VKD3DSIH_DCL_FUNCTION_BODY
@ VKD3DSIH_DCL_HS_MAX_TESSFACTOR
@ VKD3DSIH_DCL_TEMPS
@ VKD3DSIH_IMAX
@ VKD3DSIH_SLT
@ VKD3DSIH_FTOI
@ VKD3DSIH_TAN
@ VKD3DSIH_DCL_UAV_STRUCTURED
@ VKD3DSIH_DCL_INPUT
@ VKD3DSIH_HS_CONTROL_POINT_PHASE
@ VKD3DSIH_LOG
@ VKD3DSIH_ROUND_NI
@ VKD3DSIH_DMAX
@ VKD3DSIH_EQO
@ VKD3DSIH_DCL_INPUT_PS_SIV
@ VKD3DSIH_IMM_ATOMIC_IADD
@ VKD3DSIH_IMM_ATOMIC_EXCH
@ VKD3DSIH_DCL_TGSM_RAW
@ VKD3DSIH_SYNC
@ VKD3DSIH_ATOMIC_IADD
@ VKD3DSIH_ATOMIC_CMP_STORE
@ VKD3DSIH_LD_RAW
@ VKD3DSIH_ATOMIC_UMAX
@ VKD3DSIH_DCL_HS_FORK_PHASE_INSTANCE_COUNT
@ VKD3DSIH_WAVE_OP_UMAX
@ VKD3DSIH_TEXLDD
@ VKD3DSIH_TEXM3x2DEPTH
@ VKD3DSIH_SGN
@ VKD3DSIH_DCL_THREAD_GROUP
@ VKD3DSIH_WAVE_ACTIVE_BIT_XOR
@ VKD3DSIH_TEXM3x3VSPEC
@ VKD3DSIH_IMM_ATOMIC_IMIN
@ VKD3DSIH_DCL_STREAM
@ VKD3DSIH_F32TOF16
@ VKD3DSIH_UTOF
@ VKD3DSIH_LTO
@ VKD3DSIH_QUAD_READ_ACROSS_Y
@ VKD3DSIH_WAVE_ACTIVE_BIT_AND
@ VKD3DSIH_IMM_ATOMIC_IMAX
@ VKD3DSIH_NOT
@ VKD3DSIH_SAMPLE_C_LZ_S
@ VKD3DSIH_IMM_ATOMIC_ALLOC
@ VKD3DSIH_GATHER4_C
@ VKD3DSIH_CONTINUEP
@ VKD3DSIH_SAMPLE_B
@ VKD3DSIH_DEFB
@ VKD3DSIH_MAD
@ VKD3DSIH_IMM_ATOMIC_AND
@ VKD3DSIH_ATAN
@ VKD3DSIH_TEXDEPTH
@ VKD3DSIH_CALLNZ
@ VKD3DSIH_DMIN
@ VKD3DSIH_WAVE_ACTIVE_BALLOT
@ VKD3DSIH_ADD
@ VKD3DSIH_DEF
@ VKD3DSIH_DCL_TGSM_STRUCTURED
@ VKD3DSIH_SAMPLE_LOD_S
@ VKD3DSIH_DCL_RESOURCE_STRUCTURED
@ VKD3DSIH_TEXBEML
@ VKD3DSIH_DEFI
@ VKD3DSIH_BFI
@ VKD3DSIH_DSY_COARSE
@ VKD3DSIH_MOVA
@ VKD3DSIH_INE
@ VKD3DSIH_DCL_INPUT_SIV
@ VKD3DSIH_MOVC
@ VKD3DSIH_WAVE_READ_LANE_FIRST
@ VKD3DSIH_HS_FORK_PHASE
@ VKD3DSIH_DSY
@ VKD3DSIH_UBFE
@ VKD3DSIH_ASIN
@ VKD3DSIH_MOV
@ VKD3DSIH_DTOU
@ VKD3DSIH_DMOVC
@ VKD3DSIH_DLT
@ VKD3DSIH_MAX
@ VKD3DSIH_MSAD
@ VKD3DSIH_ORD
@ VKD3DSIH_ISFINITE
@ VKD3DSIH_FIRSTBIT_HI
@ VKD3DSIH_DST
@ VKD3DSIH_WAVE_OP_MUL
@ VKD3DSIH_ULT
@ VKD3DSIH_FCALL
@ VKD3DSIH_IMIN
@ VKD3DSIH_STORE_RAW
@ VKD3DSIH_SWITCH_MONOLITHIC
@ VKD3DSIH_BUFINFO
@ VKD3DSIH_EXPP
@ VKD3DSIH_FTOU
@ VKD3DSIH_PHI
@ VKD3DSIH_WAVE_ALL_TRUE
@ VKD3DSIH_TEXLDL
@ VKD3DSIH_DSX_FINE
@ VKD3DSIH_IMM_ATOMIC_OR
@ VKD3DSIH_OR
@ VKD3DSIH_PHASE
@ VKD3DSIH_DGEO
@ VKD3DSIH_DCL_TESSELLATOR_DOMAIN
@ VKD3DSIH_CMP
@ VKD3DSIH_M3x2
@ VKD3DSIH_WAVE_OP_ADD
@ VKD3DSIH_ILT
@ VKD3DSIH_DCL_OUTPUT_CONTROL_POINT_COUNT
@ VKD3DSIH_SAMPLE_GRAD_CL_S
@ VKD3DSIH_POW
@ VKD3DSIH_STORE_STRUCTURED
@ VKD3DSIH_GATHER4_PO_S
@ VKD3DSIH_USHR
@ VKD3DSIH_ENDLOOP
@ VKD3DSIH_EQU
@ VKD3DSIH_DCL
@ VKD3DSIH_DCL_UAV_TYPED
@ VKD3DSIH_WAVE_OP_IMIN
@ VKD3DSIH_CUT
@ VKD3DSIH_TEXM3x3
@ VKD3DSIH_IBFE
@ VKD3DSIH_WAVE_OP_MIN
@ VKD3DSIH_LD_S
@ VKD3DSIH_FRC
@ VKD3DSIH_ITOD
@ VKD3DSIH_IMM_ATOMIC_UMIN
@ VKD3DSIH_LD2DMS_S
@ VKD3DSIH_TEXM3x3TEX
@ VKD3DSIH_DCL_INDEX_RANGE
@ VKD3DSIH_SAMPLE_GRAD
@ VKD3DSIH_ELSE
@ VKD3DSIH_DCL_INPUT_PS_SGV
@ VKD3DSIH_EMIT
@ VKD3DSIH_DCL_CONSTANT_BUFFER
@ VKD3DSIH_LD
@ VKD3DSIH_DCL_INDEXABLE_TEMP
@ VKD3DSIH_FREM
@ VKD3DSIH_ITOI
@ VKD3DSIH_LABEL
@ VKD3DSIH_BREAKP
@ VKD3DSIH_GEO
@ VKD3DSIH_DP2ADD
@ VKD3DSIH_INEG
@ VKD3DSIH_ITOF
@ VKD3DSIH_GATHER4_C_S
@ VKD3DSIH_IMM_ATOMIC_CMP_EXCH
@ VKD3DSIH_SAMPLE_CL_S
@ VKD3DSIH_ROUND_Z
@ VKD3DSIH_IGE
@ VKD3DSIH_SINCOS
@ VKD3DSIH_FIRSTBIT_LO
@ VKD3DSIH_DEFAULT
@ VKD3DSIH_LRP
@ VKD3DSIH_UMIN
@ VKD3DSIH_ATOMIC_IMIN
@ VKD3DSIH_RET
@ VKD3DSIH_DP3
@ VKD3DSIH_BRANCH
@ VKD3DSIH_DSX
@ VKD3DSIH_IDIV
@ VKD3DSIH_GATHER4
@ VKD3DSIH_ABS
@ VKD3DSIH_LD_RAW_S
@ VKD3DSIH_SQRT
@ VKD3DSIH_DMUL
@ VKD3DSIH_M3x3
@ VKD3DSIH_WAVE_ALL_BIT_COUNT
@ VKD3DSIH_FIRSTBIT_SHI
@ VKD3DSIH_ATOMIC_IMAX
@ VKD3DSIH_HCOS
@ VKD3DSIH_LD_STRUCTURED_S
@ VKD3DSIH_DDIV
@ VKD3DSIH_DCL_TESSELLATOR_PARTITIONING

◆ vkd3d_shader_register_precision

Enumerator
VKD3D_SHADER_REGISTER_PRECISION_DEFAULT 
VKD3D_SHADER_REGISTER_PRECISION_MIN_FLOAT_16 
VKD3D_SHADER_REGISTER_PRECISION_MIN_FLOAT_10 
VKD3D_SHADER_REGISTER_PRECISION_MIN_INT_16 
VKD3D_SHADER_REGISTER_PRECISION_MIN_UINT_16 
VKD3D_SHADER_REGISTER_PRECISION_COUNT 
VKD3D_SHADER_REGISTER_PRECISION_INVALID 

Definition at line 667 of file vkd3d_shader_private.h.

668{
674
676
678};
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
Definition: glfuncs.h:240
@ 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

◆ vkd3d_shader_register_type

Enumerator
VKD3DSPR_TEMP 
VKD3DSPR_INPUT 
VKD3DSPR_CONST 
VKD3DSPR_ADDR 
VKD3DSPR_TEXTURE 
VKD3DSPR_RASTOUT 
VKD3DSPR_ATTROUT 
VKD3DSPR_TEXCRDOUT 
VKD3DSPR_OUTPUT 
VKD3DSPR_CONSTINT 
VKD3DSPR_COLOROUT 
VKD3DSPR_DEPTHOUT 
VKD3DSPR_COMBINED_SAMPLER 
VKD3DSPR_CONST2 
VKD3DSPR_CONST3 
VKD3DSPR_CONST4 
VKD3DSPR_CONSTBOOL 
VKD3DSPR_LOOP 
VKD3DSPR_TEMPFLOAT16 
VKD3DSPR_MISCTYPE 
VKD3DSPR_LABEL 
VKD3DSPR_PREDICATE 
VKD3DSPR_IMMCONST 
VKD3DSPR_IMMCONST64 
VKD3DSPR_CONSTBUFFER 
VKD3DSPR_IMMCONSTBUFFER 
VKD3DSPR_PRIMID 
VKD3DSPR_NULL 
VKD3DSPR_SAMPLER 
VKD3DSPR_RESOURCE 
VKD3DSPR_UAV 
VKD3DSPR_OUTPOINTID 
VKD3DSPR_FORKINSTID 
VKD3DSPR_JOININSTID 
VKD3DSPR_INCONTROLPOINT 
VKD3DSPR_OUTCONTROLPOINT 
VKD3DSPR_PATCHCONST 
VKD3DSPR_TESSCOORD 
VKD3DSPR_GROUPSHAREDMEM 
VKD3DSPR_THREADID 
VKD3DSPR_THREADGROUPID 
VKD3DSPR_LOCALTHREADID 
VKD3DSPR_LOCALTHREADINDEX 
VKD3DSPR_IDXTEMP 
VKD3DSPR_STREAM 
VKD3DSPR_FUNCTIONBODY 
VKD3DSPR_FUNCTIONPOINTER 
VKD3DSPR_COVERAGE 
VKD3DSPR_SAMPLEMASK 
VKD3DSPR_GSINSTID 
VKD3DSPR_DEPTHOUTGE 
VKD3DSPR_DEPTHOUTLE 
VKD3DSPR_RASTERIZER 
VKD3DSPR_OUTSTENCILREF 
VKD3DSPR_UNDEF 
VKD3DSPR_SSA 
VKD3DSPR_WAVELANECOUNT 
VKD3DSPR_WAVELANEINDEX 
VKD3DSPR_PARAMETER 
VKD3DSPR_POINT_COORD 
VKD3DSPR_COUNT 
VKD3DSPR_INVALID 

Definition at line 592 of file vkd3d_shader_private.h.

593{
594 VKD3DSPR_TEMP = 0,
595 VKD3DSPR_INPUT = 1,
596 VKD3DSPR_CONST = 2,
597 VKD3DSPR_ADDR = 3,
602 VKD3DSPR_OUTPUT = 6,
607 VKD3DSPR_CONST2 = 11,
608 VKD3DSPR_CONST3 = 12,
609 VKD3DSPR_CONST4 = 13,
611 VKD3DSPR_LOOP = 15,
614 VKD3DSPR_LABEL = 18,
654
656
658};
@ VKD3DSPR_PRIMID
@ VKD3DSPR_DEPTHOUTGE
@ VKD3DSPR_RASTERIZER
@ VKD3DSPR_PARAMETER
@ VKD3DSPR_POINT_COORD
@ VKD3DSPR_INCONTROLPOINT
@ VKD3DSPR_LABEL
@ VKD3DSPR_IMMCONST
@ VKD3DSPR_CONSTBOOL
@ VKD3DSPR_GROUPSHAREDMEM
@ VKD3DSPR_SAMPLEMASK
@ VKD3DSPR_GSINSTID
@ VKD3DSPR_UNDEF
@ VKD3DSPR_FUNCTIONPOINTER
@ VKD3DSPR_NULL
@ VKD3DSPR_CONSTBUFFER
@ VKD3DSPR_CONST4
@ VKD3DSPR_FUNCTIONBODY
@ VKD3DSPR_SSA
@ VKD3DSPR_RASTOUT
@ VKD3DSPR_RESOURCE
@ VKD3DSPR_COUNT
@ VKD3DSPR_COLOROUT
@ VKD3DSPR_PREDICATE
@ VKD3DSPR_LOOP
@ VKD3DSPR_MISCTYPE
@ VKD3DSPR_DEPTHOUT
@ VKD3DSPR_DEPTHOUTLE
@ VKD3DSPR_TEMPFLOAT16
@ VKD3DSPR_WAVELANECOUNT
@ VKD3DSPR_CONSTINT
@ VKD3DSPR_CONST
@ VKD3DSPR_JOININSTID
@ VKD3DSPR_TESSCOORD
@ VKD3DSPR_COVERAGE
@ VKD3DSPR_IMMCONST64
@ VKD3DSPR_UAV
@ VKD3DSPR_TEMP
@ VKD3DSPR_THREADGROUPID
@ VKD3DSPR_COMBINED_SAMPLER
@ VKD3DSPR_CONST2
@ VKD3DSPR_IDXTEMP
@ VKD3DSPR_LOCALTHREADINDEX
@ VKD3DSPR_CONST3
@ VKD3DSPR_THREADID
@ VKD3DSPR_ADDR
@ VKD3DSPR_OUTPUT
@ VKD3DSPR_LOCALTHREADID
@ VKD3DSPR_SAMPLER
@ VKD3DSPR_FORKINSTID
@ VKD3DSPR_OUTCONTROLPOINT
@ VKD3DSPR_OUTPOINTID
@ VKD3DSPR_IMMCONSTBUFFER
@ VKD3DSPR_OUTSTENCILREF
@ VKD3DSPR_TEXCRDOUT
@ VKD3DSPR_TEXTURE
@ VKD3DSPR_WAVELANEINDEX
@ VKD3DSPR_STREAM
@ VKD3DSPR_ATTROUT
@ VKD3DSPR_INVALID
@ VKD3DSPR_PATCHCONST
@ VKD3DSPR_INPUT

◆ vkd3d_shader_rel_op

Enumerator
VKD3D_SHADER_REL_OP_GT 
VKD3D_SHADER_REL_OP_EQ 
VKD3D_SHADER_REL_OP_GE 
VKD3D_SHADER_REL_OP_LT 
VKD3D_SHADER_REL_OP_NE 
VKD3D_SHADER_REL_OP_LE 

Definition at line 867 of file vkd3d_shader_private.h.

868{
875};
@ VKD3D_SHADER_REL_OP_LT
@ VKD3D_SHADER_REL_OP_GT
@ VKD3D_SHADER_REL_OP_EQ
@ VKD3D_SHADER_REL_OP_GE
@ VKD3D_SHADER_REL_OP_NE
@ VKD3D_SHADER_REL_OP_LE

◆ vkd3d_shader_src_modifier

Enumerator
VKD3DSPSM_NONE 
VKD3DSPSM_NEG 
VKD3DSPSM_BIAS 
VKD3DSPSM_BIASNEG 
VKD3DSPSM_SIGN 
VKD3DSPSM_SIGNNEG 
VKD3DSPSM_COMP 
VKD3DSPSM_X2 
VKD3DSPSM_X2NEG 
VKD3DSPSM_DZ 
VKD3DSPSM_DW 
VKD3DSPSM_ABS 
VKD3DSPSM_ABSNEG 
VKD3DSPSM_NOT 
VKD3DSPSM_COUNT 

Definition at line 731 of file vkd3d_shader_private.h.

732{
733 VKD3DSPSM_NONE = 0,
734 VKD3DSPSM_NEG = 1,
735 VKD3DSPSM_BIAS = 2,
737 VKD3DSPSM_SIGN = 4,
739 VKD3DSPSM_COMP = 6,
740 VKD3DSPSM_X2 = 7,
741 VKD3DSPSM_X2NEG = 8,
742 VKD3DSPSM_DZ = 9,
743 VKD3DSPSM_DW = 10,
744 VKD3DSPSM_ABS = 11,
745 VKD3DSPSM_ABSNEG = 12,
746 VKD3DSPSM_NOT = 13,
748};
@ VKD3DSPSM_DZ
@ VKD3DSPSM_DW
@ VKD3DSPSM_SIGNNEG
@ VKD3DSPSM_ABS
@ VKD3DSPSM_SIGN
@ VKD3DSPSM_NONE
@ VKD3DSPSM_COMP
@ VKD3DSPSM_NOT
@ VKD3DSPSM_COUNT
@ VKD3DSPSM_BIASNEG
@ VKD3DSPSM_X2
@ VKD3DSPSM_BIAS
@ VKD3DSPSM_X2NEG
@ VKD3DSPSM_NEG
@ VKD3DSPSM_ABSNEG

◆ vkd3d_shader_sync_flags

Enumerator
VKD3DSSF_THREAD_GROUP 
VKD3DSSF_GROUP_SHARED_MEMORY 
VKD3DSSF_THREAD_GROUP_UAV 
VKD3DSSF_GLOBAL_UAV 

Definition at line 816 of file vkd3d_shader_private.h.

817{
822};
@ VKD3DSSF_GLOBAL_UAV
@ VKD3DSSF_GROUP_SHARED_MEMORY
@ VKD3DSSF_THREAD_GROUP
@ VKD3DSSF_THREAD_GROUP_UAV

◆ vkd3d_shader_type

Enumerator
VKD3D_SHADER_TYPE_PIXEL 
VKD3D_SHADER_TYPE_VERTEX 
VKD3D_SHADER_TYPE_GEOMETRY 
VKD3D_SHADER_TYPE_HULL 
VKD3D_SHADER_TYPE_DOMAIN 
VKD3D_SHADER_TYPE_GRAPHICS_COUNT 
VKD3D_SHADER_TYPE_COMPUTE 
VKD3D_SHADER_TYPE_EFFECT 
VKD3D_SHADER_TYPE_TEXTURE 
VKD3D_SHADER_TYPE_LIBRARY 
VKD3D_SHADER_TYPE_COUNT 

Definition at line 885 of file vkd3d_shader_private.h.

◆ vkd3d_shader_uav_flags

Enumerator
VKD3DSUF_GLOBALLY_COHERENT 
VKD3DSUF_RASTERISER_ORDERED_VIEW 
VKD3DSUF_ORDER_PRESERVING_COUNTER 

Definition at line 824 of file vkd3d_shader_private.h.

825{
829};
@ VKD3DSUF_GLOBALLY_COHERENT
@ VKD3DSUF_RASTERISER_ORDERED_VIEW
@ VKD3DSUF_ORDER_PRESERVING_COUNTER

◆ vkd3d_tessellator_domain

Enumerator
VKD3D_TESSELLATOR_DOMAIN_INVALID 
VKD3D_TESSELLATOR_DOMAIN_LINE 
VKD3D_TESSELLATOR_DOMAIN_TRIANGLE 
VKD3D_TESSELLATOR_DOMAIN_QUAD 
VKD3D_TESSELLATOR_DOMAIN_COUNT 

Definition at line 837 of file vkd3d_shader_private.h.

838{
840
844
846};
@ VKD3D_TESSELLATOR_DOMAIN_INVALID
@ VKD3D_TESSELLATOR_DOMAIN_COUNT
@ VKD3D_TESSELLATOR_DOMAIN_TRIANGLE
@ VKD3D_TESSELLATOR_DOMAIN_LINE
@ VKD3D_TESSELLATOR_DOMAIN_QUAD

◆ vsir_asm_flags

Enumerator
VSIR_ASM_FLAG_NONE 
VSIR_ASM_FLAG_DUMP_TYPES 
VSIR_ASM_FLAG_DUMP_ALL_INDICES 

Definition at line 1525 of file vkd3d_shader_private.h.

1526{
1530};
@ VSIR_ASM_FLAG_DUMP_ALL_INDICES
@ VSIR_ASM_FLAG_NONE
@ VSIR_ASM_FLAG_DUMP_TYPES

◆ vsir_control_flow_type

Enumerator
VSIR_CF_STRUCTURED 
VSIR_CF_BLOCKS 

Definition at line 1395 of file vkd3d_shader_private.h.

1396{
1399};
@ VSIR_CF_BLOCKS
@ VSIR_CF_STRUCTURED

◆ vsir_dimension

Enumerator
VSIR_DIMENSION_NONE 
VSIR_DIMENSION_SCALAR 
VSIR_DIMENSION_VEC4 
VSIR_DIMENSION_COUNT 

Definition at line 722 of file vkd3d_shader_private.h.

723{
727
729};
@ VSIR_DIMENSION_SCALAR
@ VSIR_DIMENSION_VEC4
@ VSIR_DIMENSION_COUNT
@ VSIR_DIMENSION_NONE

◆ vsir_global_flags

Enumerator
VKD3DSGF_REFACTORING_ALLOWED 
VKD3DSGF_ENABLE_DOUBLE_PRECISION_FLOAT_OPS 
VKD3DSGF_FORCE_EARLY_DEPTH_STENCIL 
VKD3DSGF_ENABLE_RAW_AND_STRUCTURED_BUFFERS 
VKD3DSGF_SKIP_OPTIMIZATION 
VKD3DSGF_ENABLE_MINIMUM_PRECISION 
VKD3DSGF_ENABLE_11_1_DOUBLE_EXTENSIONS 
VKD3DSGF_ENABLE_SHADER_EXTENSIONS 
VKD3DSGF_BIND_FOR_DURATION 
VKD3DSGF_ENABLE_VP_AND_RT_ARRAY_INDEX 
VKD3DSGF_ENABLE_INNER_COVERAGE 
VKD3DSGF_ENABLE_STENCIL_REF 
VKD3DSGF_ENABLE_TILED_RESOURCE_INTRINSICS 
VKD3DSGF_ENABLE_RELAXED_TYPED_UAV_FORMATS 
VKD3DSGF_ENABLE_LVL_9_COMPARISON_FILTERING 
VKD3DSGF_ENABLE_UP_TO_64_UAVS 
VKD3DSGF_ENABLE_UAVS_AT_EVERY_STAGE 
VKD3DSGF_ENABLE_CS4_RAW_STRUCTURED_BUFFERS 
VKD3DSGF_ENABLE_RASTERIZER_ORDERED_VIEWS 
VKD3DSGF_ENABLE_WAVE_INTRINSICS 
VKD3DSGF_ENABLE_INT64 
VKD3DSGF_ENABLE_VIEWID 
VKD3DSGF_ENABLE_BARYCENTRICS 
VKD3DSGF_FORCE_NATIVE_LOW_PRECISION 
VKD3DSGF_ENABLE_SHADINGRATE 
VKD3DSGF_ENABLE_RAYTRACING_TIER_1_1 
VKD3DSGF_ENABLE_SAMPLER_FEEDBACK 
VKD3DSGF_ENABLE_ATOMIC_INT64_ON_TYPED_RESOURCE 
VKD3DSGF_ENABLE_ATOMIC_INT64_ON_GROUP_SHARED 
VKD3DSGF_ENABLE_DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS 
VKD3DSGF_ENABLE_RESOURCE_DESCRIPTOR_HEAP_INDEXING 
VKD3DSGF_ENABLE_SAMPLER_DESCRIPTOR_HEAP_INDEXING 
VKD3DSGF_ENABLE_ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE 

Definition at line 779 of file vkd3d_shader_private.h.

780{
788 VKD3DSGF_ENABLE_SHADER_EXTENSIONS = 0x80, /* never emitted? */
801 VKD3DSGF_ENABLE_INT64 = 0x100000,
802 VKD3DSGF_ENABLE_VIEWID = 0x200000,
805 VKD3DSGF_ENABLE_SHADINGRATE = 0x1000000,
814};
@ VKD3DSGF_ENABLE_WAVE_INTRINSICS
@ VKD3DSGF_ENABLE_RESOURCE_DESCRIPTOR_HEAP_INDEXING
@ VKD3DSGF_ENABLE_UAVS_AT_EVERY_STAGE
@ VKD3DSGF_ENABLE_RASTERIZER_ORDERED_VIEWS
@ VKD3DSGF_ENABLE_VIEWID
@ VKD3DSGF_ENABLE_STENCIL_REF
@ VKD3DSGF_FORCE_NATIVE_LOW_PRECISION
@ VKD3DSGF_ENABLE_INT64
@ 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

◆ vsir_normalisation_level

Enumerator
VSIR_NOT_NORMALISED 
VSIR_NORMALISED_HULL_CONTROL_POINT_IO 
VSIR_FULLY_NORMALISED_IO 

Definition at line 1401 of file vkd3d_shader_private.h.

◆ vsir_rastout_register

Enumerator
VSIR_RASTOUT_POSITION 
VSIR_RASTOUT_FOG 
VSIR_RASTOUT_POINT_SIZE 

Definition at line 660 of file vkd3d_shader_private.h.

661{
663 VSIR_RASTOUT_FOG = 0x1,
665};
@ VSIR_RASTOUT_POINT_SIZE
@ VSIR_RASTOUT_FOG
@ VSIR_RASTOUT_POSITION

Function Documentation

◆ bytecode_align()

size_t bytecode_align ( struct vkd3d_bytecode_buffer *  buffer)

Definition at line 370 of file vkd3d_shader_main.c.

371{
372 size_t aligned_size = align(buffer->size, 4);
373
374 if (!vkd3d_array_reserve((void **)&buffer->data, &buffer->capacity, aligned_size, 1))
375 {
377 return aligned_size;
378 }
379
380 memset(buffer->data + buffer->size, 0xab, aligned_size - buffer->size);
381 buffer->size = aligned_size;
382 return aligned_size;
383}
GLuint buffer
Definition: glext.h:5915
#define memset(x, y, z)
Definition: compat.h:39
bool vkd3d_array_reserve(void **elements, size_t *capacity, size_t element_count, size_t element_size)
Definition: memory.c:22
@ VKD3D_ERROR_OUT_OF_MEMORY
Definition: vkd3d_types.h:49
static size_t align(size_t addr, size_t alignment)

Referenced by add_section(), bytecode_put_bytes(), bytecode_reserve_bytes(), shader_write_root_parameters(), vkd3d_shader_serialize_dxbc(), write_sm1_type(), write_sm1_uniforms(), write_sm4_rdef(), and write_sm4_type().

◆ bytecode_get_size()

◆ bytecode_put_bytes()

size_t bytecode_put_bytes ( struct vkd3d_bytecode_buffer *  buffer,
const void *  bytes,
size_t  size 
)

Definition at line 402 of file vkd3d_shader_main.c.

403{
406}
static unsigned char bytes[4]
Definition: adnsresfilter.c:74
GLsizeiptr size
Definition: glext.h:5919
size_t bytecode_put_bytes_unaligned(struct vkd3d_bytecode_buffer *buffer, const void *bytes, size_t size)
size_t bytecode_align(struct vkd3d_bytecode_buffer *buffer)

Referenced by d3dbc_compile(), hlsl_fx_2_write(), hlsl_fx_4_write(), hlsl_fx_5_write(), put_f32(), put_string(), put_u32(), vkd3d_shader_serialize_dxbc(), write_fx_2_object_initializer(), and write_fx_2_string().

◆ bytecode_put_bytes_unaligned()

size_t bytecode_put_bytes_unaligned ( struct vkd3d_bytecode_buffer *  buffer,
const void *  bytes,
size_t  size 
)

Definition at line 385 of file vkd3d_shader_main.c.

386{
387 size_t offset = buffer->size;
388
389 if (buffer->status)
390 return offset;
391
392 if (!vkd3d_array_reserve((void **)&buffer->data, &buffer->capacity, offset + size, 1))
393 {
395 return offset;
396 }
397 memcpy(buffer->data + offset, bytes, size);
398 buffer->size = offset + size;
399 return offset;
400}
GLintptr offset
Definition: glext.h:5920
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878

Referenced by bytecode_put_bytes(), hlsl_fx_4_write(), hlsl_fx_5_write(), put_u32_unaligned(), write_fx_2_string(), and write_fx_4_string().

◆ bytecode_reserve_bytes()

size_t bytecode_reserve_bytes ( struct vkd3d_bytecode_buffer *  buffer,
size_t  size 
)

Definition at line 408 of file vkd3d_shader_main.c.

409{
410 size_t offset = bytecode_align(buffer);
411
412 if (buffer->status)
413 return offset;
414
415 if (!vkd3d_array_reserve((void **)&buffer->data, &buffer->capacity, offset + size, 1))
416 {
418 return offset;
419 }
420
421 memset(buffer->data + offset, 0, size);
422 buffer->size = offset + size;
423 return offset;
424}

Referenced by write_sm1_uniforms(), and write_sm4_rdef().

◆ component_type_is_64_bit()

static bool component_type_is_64_bit ( enum vkd3d_shader_component_type  component_type)
inlinestatic

Definition at line 1750 of file vkd3d_shader_private.h.

1751{
1753}
component_type
@ VKD3D_SHADER_COMPONENT_DOUBLE
@ VKD3D_SHADER_COMPONENT_UINT64

Referenced by spirv_compiler_emit_load_reg().

◆ d3d_asm_compile()

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 
)

Definition at line 2370 of file d3d_asm.c.

2373{
2374 const struct vkd3d_shader_version *shader_version = &program->shader_version;
2376 struct vkd3d_d3d_asm_compiler compiler =
2377 {
2378 .flags = flags,
2379 };
2382 unsigned int indent, i, j;
2383 const char *indent_str;
2384
2385 static const struct vkd3d_d3d_asm_colours no_colours =
2386 {
2387 .reset = "",
2388 .error = "",
2389 .literal = "",
2390 .modifier = "",
2391 .opcode = "",
2392 .reg = "",
2393 .swizzle = "",
2394 .version = "",
2395 .write_mask = "",
2396 .label = "",
2397 };
2398 static const struct vkd3d_d3d_asm_colours colours =
2399 {
2400 .reset = "\x1b[m",
2401 .error = "\x1b[97;41m",
2402 .literal = "\x1b[95m",
2403 .modifier = "\x1b[36m",
2404 .opcode = "\x1b[96;1m",
2405 .reg = "\x1b[96m",
2406 .swizzle = "\x1b[93m",
2407 .version = "\x1b[36m",
2408 .write_mask = "\x1b[93m",
2409 .label = "\x1b[91m",
2410 };
2411
2414 if (compile_info)
2415 {
2416 for (i = 0; i < compile_info->option_count; ++i)
2417 {
2418 const struct vkd3d_shader_compile_option *option = &compile_info->options[i];
2419
2421 formatting = option->value;
2422 }
2423 }
2424
2426 compiler.colours = colours;
2427 else
2428 compiler.colours = no_colours;
2430 indent_str = " ";
2431 else
2432 indent_str = "";
2433
2434 buffer = &compiler.buffer;
2436
2437 compiler.shader_version = *shader_version;
2438 shader_version = &compiler.shader_version;
2439 vkd3d_string_buffer_printf(buffer, "%s%s_%u_%u%s\n", compiler.colours.version,
2440 shader_get_type_prefix(shader_version->type), shader_version->major,
2441 shader_version->minor, compiler.colours.reset);
2442
2443 /* The signatures we emit only make sense for DXBC shaders. D3DBC
2444 * doesn't even have an explicit concept of signature. */
2445 if (formatting & VKD3D_SHADER_COMPILE_OPTION_FORMATTING_IO_SIGNATURES && shader_version->major >= 4)
2446 {
2447 if ((result = dump_dxbc_signatures(&compiler, program)) < 0)
2448 {
2450 return result;
2451 }
2452 }
2453
2454 indent = 0;
2455 for (i = 0; i < program->instructions.count; ++i)
2456 {
2457 struct vkd3d_shader_instruction *ins = &program->instructions.elements[i];
2458
2459 switch (ins->opcode)
2460 {
2461 case VKD3DSIH_ELSE:
2462 case VKD3DSIH_ENDIF:
2463 case VKD3DSIH_ENDLOOP:
2464 case VKD3DSIH_ENDSWITCH:
2465 if (indent)
2466 --indent;
2467 break;
2468
2469 case VKD3DSIH_LABEL:
2470 case VKD3DSIH_HS_DECLS:
2474 indent = 0;
2475 break;
2476
2477 default:
2478 break;
2479 }
2480
2481 for (j = 0; j < indent; ++j)
2482 {
2483 vkd3d_string_buffer_printf(buffer, "%s", indent_str);
2484 }
2485
2486 shader_dump_instruction(&compiler, ins);
2487
2488 switch (ins->opcode)
2489 {
2490 case VKD3DSIH_ELSE:
2491 case VKD3DSIH_IF:
2492 case VKD3DSIH_IFC:
2493 case VKD3DSIH_LOOP:
2494 case VKD3DSIH_SWITCH:
2495 case VKD3DSIH_LABEL:
2496 ++indent;
2497 break;
2498
2499 default:
2500 break;
2501 }
2502 }
2503
2505
2506 return result;
2507}
static enum vkd3d_result dump_dxbc_signatures(struct vkd3d_d3d_asm_compiler *compiler, const struct vsir_program *program)
Definition: d3d_asm.c:2345
const char * shader_get_type_prefix(enum vkd3d_shader_type type)
Definition: d3d_asm.c:1737
static void shader_dump_instruction(struct vkd3d_d3d_asm_compiler *compiler, const struct vkd3d_shader_instruction *ins)
Definition: d3d_asm.c:1951
static const WCHAR indent[]
Definition: object.c:1231
GLuint program
Definition: glext.h:6723
GLbitfield flags
Definition: glext.h:7161
GLuint64EXT * result
Definition: glext.h:11304
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
Definition: glfuncs.h:248
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 GLint GLint j
Definition: glfuncs.h:250
Definition: getopt.h:109
WCHAR * name
Definition: getopt.h:110
const char * reset
Definition: d3d_asm.c:359
struct vkd3d_string_buffer buffer
Definition: d3d_asm.c:373
enum vsir_asm_flags flags
Definition: d3d_asm.c:376
struct vkd3d_shader_version shader_version
Definition: d3d_asm.c:374
struct vkd3d_d3d_asm_colours colours
Definition: d3d_asm.c:375
const struct vkd3d_shader_compile_option * options
enum vkd3d_shader_opcode opcode
enum vkd3d_shader_type type
@ VKD3D_SHADER_COMPILE_OPTION_FORMATTING
Definition: vkd3d_shader.h:277
vkd3d_shader_compile_option_formatting_flags
Definition: vkd3d_shader.h:153
@ VKD3D_SHADER_COMPILE_OPTION_FORMATTING_IO_SIGNATURES
Definition: vkd3d_shader.h:165
@ VKD3D_SHADER_COMPILE_OPTION_FORMATTING_HEADER
Definition: vkd3d_shader.h:158
@ VKD3D_SHADER_COMPILE_OPTION_FORMATTING_COLOUR
Definition: vkd3d_shader.h:155
@ VKD3D_SHADER_COMPILE_OPTION_FORMATTING_INDENT
Definition: vkd3d_shader.h:156
void vkd3d_string_buffer_init(struct vkd3d_string_buffer *buffer)
void vkd3d_shader_code_from_string_buffer(struct vkd3d_shader_code *code, struct vkd3d_string_buffer *buffer)
void vkd3d_string_buffer_cleanup(struct vkd3d_string_buffer *buffer)
int vkd3d_string_buffer_printf(struct vkd3d_string_buffer *buffer, const char *format,...)
vkd3d_result
Definition: vkd3d_types.h:41
@ VKD3D_OK
Definition: vkd3d_types.h:43
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383

Referenced by vsir_program_compile(), and vsir_program_trace().

◆ d3dbc_parse()

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 
)

Definition at line 1349 of file d3dbc.c.

1351{
1352 struct vkd3d_shader_instruction_array *instructions;
1353 struct vkd3d_shader_sm1_parser sm1 = {0};
1354 struct vkd3d_shader_instruction *ins;
1355 unsigned int i;
1356 int ret;
1357
1358 if ((ret = shader_sm1_init(&sm1, program, compile_info, message_context)) < 0)
1359 {
1360 WARN("Failed to initialise shader parser, ret %d.\n", ret);
1361 return ret;
1362 }
1363
1364 instructions = &program->instructions;
1365 while (!shader_sm1_is_end(&sm1))
1366 {
1367 if (!shader_instruction_array_reserve(instructions, instructions->count + 1))
1368 {
1369 ERR("Failed to allocate instructions.\n");
1373 }
1374 ins = &instructions->elements[instructions->count];
1375 shader_sm1_read_instruction(&sm1, ins);
1376
1377 if (ins->opcode == VKD3DSIH_INVALID)
1378 {
1379 WARN("Encountered unrecognized or invalid instruction.\n");
1382 }
1383 ++instructions->count;
1384 }
1385
1386 for (i = 0; i < ARRAY_SIZE(program->flat_constant_count); ++i)
1387 program->flat_constant_count[i] = get_external_constant_count(&sm1, i);
1388
1389 if (sm1.p.failed && ret >= 0)
1391
1392 if (ret < 0)
1393 {
1395 return ret;
1396 }
1397
1398 return VKD3D_OK;
1399}
#define ARRAY_SIZE(A)
Definition: main.h:20
#define WARN(fmt,...)
Definition: precomp.h:61
#define ERR(fmt,...)
Definition: precomp.h:57
static bool shader_sm1_is_end(struct vkd3d_shader_sm1_parser *sm1)
Definition: d3dbc.c:1249
static enum vkd3d_result shader_sm1_init(struct vkd3d_shader_sm1_parser *sm1, struct vsir_program *program, const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_message_context *message_context)
Definition: d3dbc.c:1267
static uint32_t get_external_constant_count(struct vkd3d_shader_sm1_parser *sm1, enum vkd3d_shader_d3dbc_constant_register set)
Definition: d3dbc.c:1332
static void shader_sm1_read_instruction(struct vkd3d_shader_sm1_parser *sm1, struct vkd3d_shader_instruction *ins)
Definition: d3dbc.c:1126
return ret
Definition: mutex.c:147
void vsir_program_cleanup(struct vsir_program *program)
Definition: ir.c:105
struct vkd3d_shader_instruction * elements
struct vkd3d_shader_parser p
Definition: d3dbc.c:222
bool shader_instruction_array_reserve(struct vkd3d_shader_instruction_array *instructions, unsigned int reserve)
void vkd3d_shader_parser_error(struct vkd3d_shader_parser *parser, enum vkd3d_shader_error error, const char *format,...) VKD3D_PRINTF_FUNC(3
@ VKD3D_ERROR_INVALID_SHADER
Definition: vkd3d_types.h:53

Referenced by hlsl_compile_shader(), and vsir_parse().

◆ data_type_is_64_bit()

◆ data_type_is_bool()

static bool data_type_is_bool ( enum vkd3d_data_type  data_type)
inlinestatic

Definition at line 707 of file vkd3d_shader_private.h.

708{
709 return data_type == VKD3D_DATA_BOOL;
710}

Referenced by register_get_uint_value().

◆ data_type_is_floating_point()

◆ data_type_is_integer()

static bool data_type_is_integer ( enum vkd3d_data_type  data_type)
inlinestatic

◆ dxbc_writer_add_section()

void dxbc_writer_add_section ( struct dxbc_writer *  dxbc,
uint32_t  tag,
const void *  data,
size_t  size 
)

Definition at line 41 of file dxbc.c.

42{
44
46
47 section = &dxbc->sections[dxbc->section_count++];
48 section->tag = tag;
49 section->data.code = data;
50 section->data.size = size;
51}
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
struct vkd3d_shader_dxbc_section_desc sections[DXBC_MAX_SECTION_COUNT]
unsigned int section_count
Definition: parser.c:56
#define VKD3D_ASSERT(cond)
Definition: vkd3d_common.h:49

Referenced by add_section(), and tpf_write_sfi0().

◆ dxbc_writer_init()

void dxbc_writer_init ( struct dxbc_writer *  dxbc)

Definition at line 36 of file dxbc.c.

37{
38 memset(dxbc, 0, sizeof(*dxbc));
39}

Referenced by tpf_compile().

◆ dxbc_writer_write()

int dxbc_writer_write ( struct dxbc_writer *  dxbc,
struct vkd3d_shader_code *  code 
)

Definition at line 100 of file dxbc.c.

101{
103}
#define NULL
Definition: types.h:112
int vkd3d_shader_serialize_dxbc(size_t section_count, const struct vkd3d_shader_dxbc_section_desc *sections, struct vkd3d_shader_code *dxbc, char **messages)
Definition: dxbc.c:53

Referenced by tpf_compile().

◆ dxil_parse()

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 
)

Definition at line 10606 of file dxil.c.

10608{
10609 struct dxbc_shader_desc dxbc_desc = {0};
10610 struct sm6_parser sm6 = {0};
10611 uint32_t *byte_code = NULL;
10612 int ret;
10613
10614 MESSAGE("Creating a DXIL parser. This is unsupported; you get to keep all the pieces if it breaks.\n");
10615
10616 dxbc_desc.is_dxil = true;
10617 if ((ret = shader_extract_from_dxbc(&compile_info->source, message_context, compile_info->source_name,
10618 &dxbc_desc)) < 0)
10619 {
10620 WARN("Failed to extract shader, vkd3d result %d.\n", ret);
10621 return ret;
10622 }
10623
10624 if (((uintptr_t)dxbc_desc.byte_code & (VKD3D_DXBC_CHUNK_ALIGNMENT - 1)))
10625 {
10626 /* LLVM bitcode should be 32-bit aligned, but before dxc v1.7.2207 this was not always the case in the DXBC
10627 * container due to missing padding after signature names. Get an aligned copy to prevent unaligned access. */
10628 if (!(byte_code = vkd3d_malloc(align(dxbc_desc.byte_code_size, VKD3D_DXBC_CHUNK_ALIGNMENT))))
10629 {
10630 ERR("Failed to allocate aligned chunk.\n");
10631 free_dxbc_shader_desc(&dxbc_desc);
10633 }
10634
10635 memcpy(byte_code, dxbc_desc.byte_code, dxbc_desc.byte_code_size);
10636 dxbc_desc.byte_code = byte_code;
10637 }
10638
10639 ret = sm6_parser_init(&sm6, program, compile_info, message_context, &dxbc_desc);
10640 free_dxbc_shader_desc(&dxbc_desc);
10641 vkd3d_free(byte_code);
10642
10643 if (ret < 0)
10644 return ret;
10645
10646 sm6_parser_cleanup(&sm6);
10647
10648 return VKD3D_OK;
10649}
UINT32 uint32_t
Definition: types.h:75
unsigned int uintptr_t
Definition: corecrt.h:185
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)
Definition: dxbc.c:580
void free_dxbc_shader_desc(struct dxbc_shader_desc *desc)
Definition: dxbc.c:573
static enum vkd3d_result sm6_parser_init(struct sm6_parser *sm6, struct vsir_program *program, const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_message_context *message_context, struct dxbc_shader_desc *dxbc_desc)
Definition: dxil.c:10256
static void sm6_parser_cleanup(struct sm6_parser *sm6)
Definition: dxil.c:10235
#define MESSAGE
Definition: options.h:86
const uint32_t * byte_code
struct vkd3d_shader_code source
static void vkd3d_free(void *ptr)
Definition: vkd3d_memory.h:52
static void * vkd3d_malloc(size_t size)
Definition: vkd3d_memory.h:28
#define VKD3D_DXBC_CHUNK_ALIGNMENT

Referenced by vsir_parse().

◆ free_dxbc_shader_desc()

void free_dxbc_shader_desc ( struct dxbc_shader_desc *  desc)

Definition at line 573 of file dxbc.c.

574{
575 shader_signature_cleanup(&desc->input_signature);
576 shader_signature_cleanup(&desc->output_signature);
577 shader_signature_cleanup(&desc->patch_constant_signature);
578}
D3D11_SHADER_VARIABLE_DESC desc
Definition: reflection.c:1683
void shader_signature_cleanup(struct shader_signature *signature)

Referenced by dxil_parse(), shader_extract_from_dxbc(), and tpf_parse().

◆ fx_parse()

int fx_parse ( const struct vkd3d_shader_compile_info *  compile_info,
struct vkd3d_shader_code *  out,
struct vkd3d_shader_message_context *  message_context 
)

Definition at line 3789 of file fx.c.

3791{
3792 struct fx_parser parser =
3793 {
3794 .start = compile_info->source.code,
3795 .ptr = compile_info->source.code,
3796 .end = (uint8_t *)compile_info->source.code + compile_info->source.size,
3797 .message_context = message_context,
3798 };
3800 int ret;
3801
3803
3804 if (parser.end - parser.start < sizeof(version))
3805 return -1;
3806 version = *(uint32_t *)parser.ptr;
3807
3808 switch (version)
3809 {
3810 case 0xfeff0901:
3811 ret = fx_2_parse(&parser);
3812 break;
3813 case 0xfeff1001:
3814 case 0xfeff1011:
3815 ret = fx_4_parse(&parser);
3816 break;
3817 case 0xfeff2001:
3818 ret = fx_5_parse(&parser);
3819 break;
3820 default:
3822 "Invalid effect binary version value 0x%08x.", version);
3823 ret = -1;
3824 }
3825
3827
3828 return ret;
3829}
static const WCHAR version[]
Definition: asmname.c:66
unsigned char uint8_t
Definition: stdint.h:33
switch(r->id)
Definition: btrfs.c:3046
static int fx_4_parse(struct fx_parser *parser)
Definition: fx.c:3683
static int fx_2_parse(struct fx_parser *parser)
Definition: fx.c:2952
static int fx_5_parse(struct fx_parser *parser)
Definition: fx.c:3734
Definition: fx.c:2886
struct vkd3d_shader_message_context * message_context
Definition: fx.c:2888
Definition: import.c:81
const CHAR * end
Definition: inffile.c:88
const CHAR * start
Definition: inffile.c:87

Referenced by vkd3d_shader_compile().

◆ glsl_compile()

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 
)

Definition at line 2467 of file glsl.c.

2472{
2473 struct vkd3d_glsl_generator generator;
2474 int ret;
2475
2476 if ((ret = vsir_program_transform(program, config_flags, compile_info, message_context)) < 0)
2477 return ret;
2478
2479 VKD3D_ASSERT(program->normalisation_level == VSIR_FULLY_NORMALISED_IO);
2480
2481 vkd3d_glsl_generator_init(&generator, program, compile_info,
2483 ret = vkd3d_glsl_generator_generate(&generator, out);
2484 vkd3d_glsl_generator_cleanup(&generator);
2485
2486 return ret;
2487}
static int vkd3d_glsl_generator_generate(struct vkd3d_glsl_generator *gen, struct vkd3d_shader_code *out)
Definition: glsl.c:2357
static void vkd3d_glsl_generator_cleanup(struct vkd3d_glsl_generator *gen)
Definition: glsl.c:2400
static void vkd3d_glsl_generator_init(struct vkd3d_glsl_generator *gen, struct vsir_program *program, const struct vkd3d_shader_compile_info *compile_info, const struct vkd3d_shader_scan_descriptor_info1 *descriptor_info, const struct vkd3d_shader_scan_combined_resource_sampler_info *combined_sampler_info, struct vkd3d_shader_message_context *message_context)
Definition: glsl.c:2437
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)
Definition: ir.c:8324
struct vkd3d_shader_message_context * message_context
Definition: glsl.c:52
const struct vkd3d_shader_scan_descriptor_info1 * descriptor_info
Definition: glsl.c:67
const struct vkd3d_shader_scan_combined_resource_sampler_info * combined_sampler_info
Definition: glsl.c:68

Referenced by vsir_program_compile().

◆ hlsl_compile_shader()

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 
)

Definition at line 4496 of file hlsl.c.

4498{
4500 const struct vkd3d_shader_hlsl_source_info *hlsl_source_info;
4501 struct hlsl_ir_function_decl *decl, *entry_func = NULL;
4502 const struct hlsl_profile_info *profile;
4503 struct hlsl_ir_function *func;
4504 const char *entry_point;
4505 struct hlsl_ctx ctx;
4506 int ret;
4507
4508 if (!(hlsl_source_info = vkd3d_find_struct(compile_info->next, HLSL_SOURCE_INFO)))
4509 {
4510 ERR("No HLSL source info given.\n");
4512 }
4513 entry_point = hlsl_source_info->entry_point ? hlsl_source_info->entry_point : "main";
4514
4515 if (!(profile = hlsl_get_target_info(hlsl_source_info->profile)))
4516 {
4517 FIXME("Unknown compilation target %s.\n", debugstr_a(hlsl_source_info->profile));
4519 }
4520
4522 {
4524 "The '%s' target profile is only compatible with the 'fx' target type.", profile->name);
4526 }
4527 else if (target_type == VKD3D_SHADER_TARGET_D3D_BYTECODE && profile->major_version > 3)
4528 {
4530 "The '%s' target profile is incompatible with the 'd3dbc' target type.", profile->name);
4532 }
4533 else if (target_type == VKD3D_SHADER_TARGET_DXBC_TPF && profile->major_version < 4)
4534 {
4536 "The '%s' target profile is incompatible with the 'dxbc-tpf' target type.", profile->name);
4538 }
4540 {
4542 "The '%s' target profile is incompatible with the 'fx' target type.", profile->name);
4544 }
4545
4546 if (!hlsl_ctx_init(&ctx, compile_info, profile, message_context))
4548
4549 if ((ret = hlsl_lexer_compile(&ctx, hlsl)) == 2)
4550 {
4553 }
4554
4555 if (ctx.result)
4556 {
4558 return ctx.result;
4559 }
4560
4561 /* If parsing failed without an error condition being recorded, we
4562 * plausibly hit some unimplemented feature. */
4563 if (ret)
4564 {
4567 }
4568
4569 if (ctx.profile->type == VKD3D_SHADER_TYPE_EFFECT)
4570 {
4572
4574 return ret;
4575 }
4576
4577 if ((func = hlsl_get_function(&ctx, entry_point)))
4578 {
4579 LIST_FOR_EACH_ENTRY(decl, &func->overloads, struct hlsl_ir_function_decl, entry)
4580 {
4581 if (!decl->has_body)
4582 continue;
4583 if (entry_func)
4584 {
4585 /* Depending on d3dcompiler version, either the first or last is
4586 * selected. */
4587 hlsl_fixme(&ctx, &decl->loc, "Multiple valid entry point definitions.");
4588 }
4589 entry_func = decl;
4590 }
4591 }
4592
4593 if (!entry_func)
4594 {
4595 const struct vkd3d_shader_location loc = {.source_name = compile_info->source_name};
4596
4598 "Entry point \"%s\" is not defined.", entry_point);
4601 }
4602
4606 {
4608 struct vkd3d_shader_compile_info info = *compile_info;
4609 struct vsir_program program;
4610
4611 if (profile->major_version < 4)
4612 {
4613 if ((ret = hlsl_emit_bytecode(&ctx, entry_func, VKD3D_SHADER_TARGET_D3D_BYTECODE, &info.source)) < 0)
4614 goto done;
4616 ret = d3dbc_parse(&info, config_flags, message_context, &program);
4617 }
4618 else
4619 {
4620 if ((ret = hlsl_emit_bytecode(&ctx, entry_func, VKD3D_SHADER_TARGET_DXBC_TPF, &info.source)) < 0)
4621 goto done;
4622 info.source_type = VKD3D_SHADER_SOURCE_DXBC_TPF;
4623 ret = tpf_parse(&info, config_flags, message_context, &program);
4624 }
4625 if (ret >= 0)
4626 {
4627 ret = vsir_program_compile(&program, config_flags, &info, out, message_context);
4629 }
4631 }
4632 else
4633 {
4634 ret = hlsl_emit_bytecode(&ctx, entry_func, target_type, out);
4635 }
4636
4637done:
4639 return ret;
4640}
#define FIXME(fmt,...)
Definition: precomp.h:53
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)
Definition: d3dbc.c:1349
UINT64 uint64_t
Definition: types.h:77
int hlsl_emit_effect_binary(struct hlsl_ctx *ctx, struct vkd3d_shader_code *out)
Definition: fx.c:2865
GLenum func
Definition: glext.h:6028
void hlsl_fixme(struct hlsl_ctx *ctx, const struct vkd3d_shader_location *loc, const char *fmt,...)
Definition: hlsl.c:58
void hlsl_error(struct hlsl_ctx *ctx, const struct vkd3d_shader_location *loc, enum vkd3d_shader_error error, const char *fmt,...)
Definition: hlsl.c:35
static void hlsl_ctx_cleanup(struct hlsl_ctx *ctx)
Definition: hlsl.c:4444
static bool hlsl_ctx_init(struct hlsl_ctx *ctx, const struct vkd3d_shader_compile_info *compile_info, const struct hlsl_profile_info *profile, struct vkd3d_shader_message_context *message_context)
Definition: hlsl.c:4343
const struct hlsl_profile_info * hlsl_get_target_info(const char *target)
Definition: hlsl.c:4054
struct hlsl_ir_function * hlsl_get_function(struct hlsl_ctx *ctx, const char *name)
Definition: hlsl.c:1019
int hlsl_emit_bytecode(struct hlsl_ctx *ctx, struct hlsl_ir_function_decl *entry_func, enum vkd3d_shader_target_type target_type, struct vkd3d_shader_code *out)
int hlsl_lexer_compile(struct hlsl_ctx *ctx, const struct vkd3d_shader_code *hlsl)
uint32_t entry
Definition: isohybrid.c:63
#define debugstr_a
Definition: kernel32.h:31
#define profile
Definition: kernel32.h:12
static const char * target_type(DWORD dwType)
Definition: mixer.c:95
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:236
char * name
Definition: wpp.c:52
struct vkd3d_shader_message_context * message_context
Definition: hlsl.h:1026
struct vkd3d_shader_location loc
Definition: hlsl.h:603
enum vkd3d_shader_target_type target_type
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)
Definition: tpf.c:2900
VKD3D_SHADER_API void vkd3d_shader_free_shader_code(struct vkd3d_shader_code *code)
@ VKD3D_SHADER_SOURCE_D3D_BYTECODE
@ VKD3D_SHADER_SOURCE_DXBC_TPF
vkd3d_shader_target_type
@ VKD3D_SHADER_TARGET_SPIRV_BINARY
@ VKD3D_SHADER_TARGET_D3D_ASM
@ VKD3D_SHADER_TARGET_SPIRV_TEXT
@ VKD3D_SHADER_TARGET_DXBC_TPF
@ VKD3D_SHADER_TARGET_D3D_BYTECODE
@ VKD3D_SHADER_TARGET_FX
uint64_t vkd3d_shader_init_config_flags(void)
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)
#define vkd3d_find_struct(c, t)
vkd3d_shader_error
@ VKD3D_ERROR_INVALID_ARGUMENT
Definition: vkd3d_types.h:51
@ VKD3D_ERROR_NOT_IMPLEMENTED
Definition: vkd3d_types.h:55

Referenced by compile_hlsl().

◆ msl_compile()

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 
)

Definition at line 879 of file msl.c.

883{
884 struct msl_generator generator;
885 int ret;
886
887 if ((ret = vsir_program_transform(program, config_flags, compile_info, message_context)) < 0)
888 return ret;
889
890 VKD3D_ASSERT(program->normalisation_level == VSIR_FULLY_NORMALISED_IO);
891
892 if ((ret = msl_generator_init(&generator, program, compile_info, descriptor_info, message_context)) < 0)
893 return ret;
894 ret = msl_generator_generate(&generator, out);
895 msl_generator_cleanup(&generator);
896
897 return ret;
898}
static int msl_generator_generate(struct msl_generator *gen, struct vkd3d_shader_code *out)
Definition: msl.c:785
static void msl_generator_cleanup(struct msl_generator *gen)
Definition: msl.c:845
static int msl_generator_init(struct msl_generator *gen, struct vsir_program *program, const struct vkd3d_shader_compile_info *compile_info, const struct vkd3d_shader_scan_descriptor_info1 *descriptor_info, struct vkd3d_shader_message_context *message_context)
Definition: msl.c:851
const struct vkd3d_shader_scan_descriptor_info1 * descriptor_info
Definition: msl.c:45
struct vkd3d_shader_message_context * message_context
Definition: msl.c:39

Referenced by vsir_program_compile().

◆ preproc_lexer_parse()

int preproc_lexer_parse ( const struct vkd3d_shader_compile_info *  compile_info,
struct vkd3d_shader_code *  out,
struct vkd3d_shader_message_context *  message_context 
)

◆ put_f32()

static size_t put_f32 ( struct vkd3d_bytecode_buffer *  buffer,
float  value 
)
inlinestatic

Definition at line 1572 of file vkd3d_shader_private.h.

1573{
1574 return bytecode_put_bytes(buffer, &value, sizeof(value));
1575}
Definition: pdh_main.c:64
size_t bytecode_put_bytes(struct vkd3d_bytecode_buffer *buffer, const void *bytes, size_t size)

Referenced by d3dbc_write_vsir_def(), and shader_write_static_samplers().

◆ put_string()

static size_t put_string ( struct vkd3d_bytecode_buffer *  buffer,
const char *  string 
)
inlinestatic

Definition at line 1577 of file vkd3d_shader_private.h.

1578{
1579 return bytecode_put_bytes(buffer, string, strlen(string) + 1);
1580}
_ACRTIMP size_t __cdecl strlen(const char *)
Definition: string.c:1597

Referenced by tpf_write_signature(), write_sm1_type(), write_sm1_uniforms(), write_sm4_rdef(), and write_sm4_type().

◆ put_u32()

static size_t put_u32 ( struct vkd3d_bytecode_buffer *  buffer,
uint32_t  value 
)
inlinestatic

Definition at line 1567 of file vkd3d_shader_private.h.

1568{
1569 return bytecode_put_bytes(buffer, &value, sizeof(value));
1570}

◆ register_is_constant()

◆ register_is_constant_or_undef()

static bool register_is_constant_or_undef ( const struct vkd3d_shader_register *  reg)
inlinestatic

Definition at line 1307 of file vkd3d_shader_private.h.

1308{
1310}
static bool register_is_undef(const struct vkd3d_shader_register *reg)
static bool register_is_constant(const struct vkd3d_shader_register *reg)

Referenced by spirv_compiler_emit_load_scalar(), spirv_compiler_emit_mov(), spirv_compiler_emit_quad_read_lane_at(), spirv_compiler_emit_store_reg(), spirv_compiler_emit_wave_read_lane_at(), spirv_compiler_get_register_info(), and vsir_validate_phi().

◆ register_is_numeric_array()

static bool register_is_numeric_array ( const struct vkd3d_shader_register *  reg)
inlinestatic

Definition at line 1318 of file vkd3d_shader_private.h.

1319{
1320 return (reg->type == VKD3DSPR_IMMCONSTBUFFER || reg->type == VKD3DSPR_IDXTEMP
1321 || reg->type == VKD3DSPR_GROUPSHAREDMEM);
1322}

Referenced by sm6_value_is_numeric_array().

◆ register_is_scalar_constant_zero()

static bool register_is_scalar_constant_zero ( const struct vkd3d_shader_register *  reg)
inlinestatic

Definition at line 1312 of file vkd3d_shader_private.h.

1313{
1314 return register_is_constant(reg) && reg->dimension == VSIR_DIMENSION_SCALAR
1315 && (data_type_is_64_bit(reg->data_type) ? !reg->u.immconst_u64[0] : !reg->u.immconst_u32[0]);
1316}
static bool data_type_is_64_bit(enum vkd3d_data_type data_type)

Referenced by sm6_value_is_constant_zero().

◆ register_is_ssa()

◆ register_is_undef()

static bool register_is_undef ( const struct vkd3d_shader_register *  reg)
inlinestatic

Definition at line 1302 of file vkd3d_shader_private.h.

1303{
1304 return reg->type == VKD3DSPR_UNDEF;
1305}

Referenced by register_is_constant_or_undef().

◆ set_string()

void set_string ( struct vkd3d_bytecode_buffer *  buffer,
size_t  offset,
const char *  string,
size_t  length 
)

Definition at line 441 of file vkd3d_shader_main.c.

442{
444}
GLuint GLsizei GLsizei * length
Definition: glext.h:6040
static void bytecode_set_bytes(struct vkd3d_bytecode_buffer *buffer, size_t offset, const void *value, size_t size)

◆ set_u32()

◆ shader_dst_param_allocator_get()

static struct vkd3d_shader_dst_param * shader_dst_param_allocator_get ( struct vkd3d_shader_param_allocator *  allocator,
unsigned int  count 
)
inlinestatic

Definition at line 1358 of file vkd3d_shader_private.h.

1360{
1361 VKD3D_ASSERT(allocator->stride == sizeof(struct vkd3d_shader_dst_param));
1363}
GLuint GLuint GLsizei count
Definition: gl.h:1545
void * shader_param_allocator_get(struct vkd3d_shader_param_allocator *allocator, unsigned int count)

Referenced by shader_instruction_array_clone_dst_params(), and vsir_program_get_dst_params().

◆ shader_extract_from_dxbc()

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 
)

Definition at line 580 of file dxbc.c.

582{
583 int ret;
584
585 ret = for_each_dxbc_section(dxbc, message_context, source_name, shdr_handler, desc);
586 if (!desc->byte_code)
588
589 if (ret < 0)
590 {
591 WARN("Failed to parse shader, vkd3d result %d.\n", ret);
593 }
594
595 return ret;
596}
static int shdr_handler(const struct vkd3d_shader_dxbc_section_desc *section, struct vkd3d_shader_message_context *message_context, void *context)
Definition: dxbc.c:505
static int for_each_dxbc_section(const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_message_context *message_context, const char *source_name, int(*section_handler)(const struct vkd3d_shader_dxbc_section_desc *section, struct vkd3d_shader_message_context *message_context, void *ctx), void *ctx)
Definition: dxbc.c:297

Referenced by dxil_parse(), and tpf_parse().

◆ shader_get_type_prefix()

const char * shader_get_type_prefix ( enum vkd3d_shader_type  type)

Definition at line 1737 of file d3d_asm.c.

1738{
1739 switch (type)
1740 {
1742 return "vs";
1743
1745 return "hs";
1746
1748 return "ds";
1749
1751 return "gs";
1752
1754 return "ps";
1755
1757 return "cs";
1758
1760 return "fx";
1761
1763 return "tx";
1764
1766 return "lib";
1767
1768 default:
1769 FIXME("Unhandled shader type %#x.\n", type);
1770 return "unknown";
1771 }
1772}
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545

Referenced by d3d_asm_compile().

◆ shader_instruction_array_add_icb()

bool shader_instruction_array_add_icb ( struct vkd3d_shader_instruction_array *  instructions,
struct vkd3d_shader_immediate_constant_buffer *  icb 
)

Definition at line 2171 of file vkd3d_shader_main.c.

2173{
2174 if (!vkd3d_array_reserve((void **)&instructions->icbs, &instructions->icb_capacity, instructions->icb_count + 1,
2175 sizeof(*instructions->icbs)))
2176 return false;
2177 instructions->icbs[instructions->icb_count++] = icb;
2178 return true;
2179}
struct vkd3d_shader_immediate_constant_buffer ** icbs

Referenced by shader_sm4_read_shader_data(), and value_allocate_constant_array().

◆ shader_instruction_array_clone_instruction()

bool shader_instruction_array_clone_instruction ( struct vkd3d_shader_instruction_array *  instructions,
unsigned int  dst,
unsigned int  src 
)

Definition at line 2244 of file vkd3d_shader_main.c.

2246{
2247 struct vkd3d_shader_instruction *ins = &instructions->elements[dst];
2248
2249 *ins = instructions->elements[src];
2250
2251 if (ins->dst_count && ins->dst && !(ins->dst = shader_instruction_array_clone_dst_params(instructions,
2252 ins->dst, ins->dst_count)))
2253 return false;
2254
2255 return !ins->src_count || !!(ins->src = shader_instruction_array_clone_src_params(instructions,
2256 ins->src, ins->src_count));
2257}
GLenum src
Definition: glext.h:6340
GLenum GLenum dst
Definition: glext.h:6340
struct vkd3d_shader_src_param * src
struct vkd3d_shader_dst_param * dst
static struct vkd3d_shader_dst_param * shader_instruction_array_clone_dst_params(struct vkd3d_shader_instruction_array *instructions, const struct vkd3d_shader_dst_param *params, unsigned int count)
static struct vkd3d_shader_src_param * shader_instruction_array_clone_src_params(struct vkd3d_shader_instruction_array *instructions, const struct vkd3d_shader_src_param *params, unsigned int count)

Referenced by flattener_flatten_phases().

◆ shader_instruction_array_destroy()

void shader_instruction_array_destroy ( struct vkd3d_shader_instruction_array *  instructions)

Definition at line 2259 of file vkd3d_shader_main.c.

2260{
2261 unsigned int i;
2262
2263 vkd3d_free(instructions->elements);
2266 for (i = 0; i < instructions->icb_count; ++i)
2267 vkd3d_free(instructions->icbs[i]);
2268 vkd3d_free(instructions->icbs);
2269}
struct vkd3d_shader_param_allocator dst_params
struct vkd3d_shader_param_allocator src_params
static void shader_param_allocator_destroy(struct vkd3d_shader_param_allocator *allocator)

Referenced by spirv_compiler_generate_spirv(), and vsir_program_cleanup().

◆ shader_instruction_array_init()

bool shader_instruction_array_init ( struct vkd3d_shader_instruction_array *  instructions,
unsigned int  reserve 
)

Definition at line 2132 of file vkd3d_shader_main.c.

2133{
2134 memset(instructions, 0, sizeof(*instructions));
2135 /* Size the parameter initial allocations so they are large enough for most shaders. The
2136 * code path for chained allocations will be tested if a few shaders need to use it. */
2138 sizeof(*instructions->elements->dst));
2139 shader_param_allocator_init(&instructions->src_params, reserve * 2u, sizeof(*instructions->elements->src));
2140 return shader_instruction_array_reserve(instructions, reserve);
2141}
static BOOL reserve(struct dynamic_array *array, int count, int itemsize)
Definition: mesh.c:5499
static void shader_param_allocator_init(struct vkd3d_shader_param_allocator *allocator, unsigned int count, unsigned int stride)

Referenced by vsir_program_init().

◆ shader_instruction_array_insert_at()

bool shader_instruction_array_insert_at ( struct vkd3d_shader_instruction_array *  instructions,
unsigned int  idx,
unsigned int  count 
)

Definition at line 2154 of file vkd3d_shader_main.c.

2156{
2157 VKD3D_ASSERT(idx <= instructions->count);
2158
2159 if (!shader_instruction_array_reserve(instructions, instructions->count + count))
2160 return false;
2161
2162 memmove(&instructions->elements[idx + count], &instructions->elements[idx],
2163 (instructions->count - idx) * sizeof(*instructions->elements));
2164 memset(&instructions->elements[idx], 0, count * sizeof(*instructions->elements));
2165
2166 instructions->count += count;
2167
2168 return true;
2169}
unsigned int idx
Definition: utils.c:40
#define memmove(s1, s2, n)
Definition: mkisofs.h:881

Referenced by insert_alpha_test_before_ret(), insert_clip_planes_before_ret(), insert_point_size_before_ret(), vsir_program_ensure_diffuse(), vsir_program_ensure_ret(), vsir_program_insert_point_coord(), vsir_program_insert_point_size_clamp(), vsir_program_lower_ifc(), vsir_program_lower_precise_mad(), vsir_program_lower_sm1_sincos(), vsir_program_lower_texkill(), and vsir_program_remap_output_signature().

◆ shader_instruction_array_reserve()

bool shader_instruction_array_reserve ( struct vkd3d_shader_instruction_array *  instructions,
unsigned int  reserve 
)

◆ shader_param_allocator_get()

void * shader_param_allocator_get ( struct vkd3d_shader_param_allocator *  allocator,
unsigned int  count 
)

Definition at line 2106 of file vkd3d_shader_main.c.

2107{
2108 void *params;
2109
2110 if (!allocator->current || count > allocator->count - allocator->index)
2111 {
2113
2114 /* Monolithic switch has no definite parameter count limit. */
2115 allocator->count = max(allocator->count, count);
2116
2118 return NULL;
2119 if (allocator->current)
2120 allocator->current->next = next;
2121 else
2122 allocator->head = next;
2123 allocator->current = next;
2124 allocator->index = 0;
2125 }
2126
2127 params = &allocator->current->param[allocator->index * allocator->stride];
2128 allocator->index += count;
2129 return params;
2130}
GLenum const GLfloat * params
Definition: glext.h:5645
static unsigned __int64 next
Definition: rand_nt.c:6
#define max(a, b)
Definition: svc.c:63
static struct vkd3d_shader_param_node * shader_param_allocator_node_create(struct vkd3d_shader_param_allocator *allocator)

Referenced by shader_dst_param_allocator_get(), and shader_src_param_allocator_get().

◆ shader_parse_input_signature()

int shader_parse_input_signature ( const struct vkd3d_shader_code *  dxbc,
struct vkd3d_shader_message_context *  message_context,
struct shader_signature *  signature 
)

Definition at line 493 of file dxbc.c.

495{
496 int ret;
497
498 memset(signature, 0, sizeof(*signature));
499 if ((ret = for_each_dxbc_section(dxbc, message_context, NULL, isgn_handler, signature)) < 0)
500 ERR("Failed to parse input signature.\n");
501
502 return ret;
503}
static int isgn_handler(const struct vkd3d_shader_dxbc_section_desc *section, struct vkd3d_shader_message_context *message_context, void *ctx)
Definition: dxbc.c:477

Referenced by vkd3d_shader_parse_input_signature().

◆ shader_signature_cleanup()

void shader_signature_cleanup ( struct shader_signature *  signature)

Definition at line 1846 of file vkd3d_shader_main.c.

1847{
1848 for (unsigned int i = 0; i < signature->element_count; ++i)
1849 {
1850 vkd3d_free((void *)signature->elements[i].semantic_name);
1851 }
1852 vkd3d_free(signature->elements);
1853 signature->elements = NULL;
1854 signature->elements_capacity = 0;
1855 signature->element_count = 0;
1856}

Referenced by free_dxbc_shader_desc(), isgn_handler(), sm6_parser_init(), sm6_parser_read_signature(), spirv_compiler_destroy(), tpf_parse(), vkd3d_shader_parse_input_signature(), and vsir_program_cleanup().

◆ shader_sm4_is_scalar_register()

bool shader_sm4_is_scalar_register ( const struct vkd3d_shader_register *  reg)

Definition at line 2238 of file tpf.c.

2239{
2240 switch (reg->type)
2241 {
2242 case VKD3DSPR_COVERAGE:
2243 case VKD3DSPR_DEPTHOUT:
2246 case VKD3DSPR_GSINSTID:
2249 case VKD3DSPR_PRIMID:
2252 return true;
2253 default:
2254 return false;
2255 }
2256}

Referenced by shader_sm4_read_dst_param(), sm4_generate_vsir_instr_dcl_semantic(), and sm4_register_from_deref().

◆ shader_src_param_allocator_get()

◆ sm1_register_from_semantic_name()

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 
)

Definition at line 1401 of file d3dbc.c.

1403{
1404 unsigned int i;
1405
1406 static const struct
1407 {
1408 const char *semantic;
1409 bool output;
1411 unsigned int major_version;
1413 unsigned int offset;
1414 }
1415 register_table[] =
1416 {
1417 {"color", false, VKD3D_SHADER_TYPE_PIXEL, 1, VKD3DSPR_INPUT},
1418 {"texcoord", false, VKD3D_SHADER_TYPE_PIXEL, 1, VKD3DSPR_TEXTURE},
1419
1420 {"color", true, VKD3D_SHADER_TYPE_PIXEL, 2, VKD3DSPR_COLOROUT},
1421 {"depth", true, VKD3D_SHADER_TYPE_PIXEL, 2, VKD3DSPR_DEPTHOUT},
1422 {"sv_depth", true, VKD3D_SHADER_TYPE_PIXEL, 2, VKD3DSPR_DEPTHOUT},
1423 {"sv_target", true, VKD3D_SHADER_TYPE_PIXEL, 2, VKD3DSPR_COLOROUT},
1424 {"color", false, VKD3D_SHADER_TYPE_PIXEL, 2, VKD3DSPR_INPUT},
1425 {"texcoord", false, VKD3D_SHADER_TYPE_PIXEL, 2, VKD3DSPR_TEXTURE},
1426
1427 {"color", true, VKD3D_SHADER_TYPE_PIXEL, 3, VKD3DSPR_COLOROUT},
1428 {"depth", true, VKD3D_SHADER_TYPE_PIXEL, 3, VKD3DSPR_DEPTHOUT},
1429 {"sv_depth", true, VKD3D_SHADER_TYPE_PIXEL, 3, VKD3DSPR_DEPTHOUT},
1430 {"sv_target", true, VKD3D_SHADER_TYPE_PIXEL, 3, VKD3DSPR_COLOROUT},
1434
1435 {"color", true, VKD3D_SHADER_TYPE_VERTEX, 1, VKD3DSPR_ATTROUT},
1440 {"texcoord", true, VKD3D_SHADER_TYPE_VERTEX, 1, VKD3DSPR_TEXCRDOUT},
1441
1442 {"color", true, VKD3D_SHADER_TYPE_VERTEX, 2, VKD3DSPR_ATTROUT},
1447 {"texcoord", true, VKD3D_SHADER_TYPE_VERTEX, 2, VKD3DSPR_TEXCRDOUT},
1448 };
1449
1450 for (i = 0; i < ARRAY_SIZE(register_table); ++i)
1451 {
1452 if (!ascii_strcasecmp(semantic_name, register_table[i].semantic)
1453 && output == register_table[i].output
1454 && version->type == register_table[i].shader_type
1455 && version->major == register_table[i].major_version)
1456 {
1457 *type = register_table[i].type;
1458 if (register_table[i].type == VKD3DSPR_MISCTYPE || register_table[i].type == VKD3DSPR_RASTOUT)
1459 *reg = register_table[i].offset;
1460 else
1461 *reg = semantic_index;
1462 return true;
1463 }
1464 }
1465
1466 return false;
1467}
@ VKD3D_SM1_MISC_FACE
Definition: d3dbc.c:110
@ VKD3D_SM1_MISC_POSITION
Definition: d3dbc.c:109
static int ascii_strcasecmp(const char *a, const char *b)
Definition: vkd3d_common.h:437
vkd3d_shader_type
vkd3d_shader_register_type

Referenced by allocate_semantic_register(), d3dbc_write_semantic_dcl(), generate_vsir_signature_entry(), sm1_generate_vsir_init_dst_param_from_deref(), and sm1_generate_vsir_init_src_param_from_deref().

◆ sm1_usage_from_semantic_name()

bool sm1_usage_from_semantic_name ( const char *  semantic_name,
uint32_t  semantic_index,
enum vkd3d_decl_usage *  usage,
uint32_t *  usage_idx 
)

Definition at line 1469 of file d3dbc.c.

1471{
1472 static const struct
1473 {
1474 const char *name;
1476 }
1477 semantics[] =
1478 {
1479 {"binormal", VKD3D_DECL_USAGE_BINORMAL},
1480 {"blendindices", VKD3D_DECL_USAGE_BLEND_INDICES},
1481 {"blendweight", VKD3D_DECL_USAGE_BLEND_WEIGHT},
1482 {"color", VKD3D_DECL_USAGE_COLOR},
1483 {"depth", VKD3D_DECL_USAGE_DEPTH},
1484 {"fog", VKD3D_DECL_USAGE_FOG},
1485 {"normal", VKD3D_DECL_USAGE_NORMAL},
1486 {"position", VKD3D_DECL_USAGE_POSITION},
1487 {"positiont", VKD3D_DECL_USAGE_POSITIONT},
1488 {"psize", VKD3D_DECL_USAGE_PSIZE},
1489 {"sample", VKD3D_DECL_USAGE_SAMPLE},
1490 {"sv_depth", VKD3D_DECL_USAGE_DEPTH},
1491 {"sv_position", VKD3D_DECL_USAGE_POSITION},
1492 {"sv_target", VKD3D_DECL_USAGE_COLOR},
1493 {"tangent", VKD3D_DECL_USAGE_TANGENT},
1494 {"tessfactor", VKD3D_DECL_USAGE_TESS_FACTOR},
1495 {"texcoord", VKD3D_DECL_USAGE_TEXCOORD},
1496 };
1497
1498 unsigned int i;
1499
1500 for (i = 0; i < ARRAY_SIZE(semantics); ++i)
1501 {
1502 if (!ascii_strcasecmp(semantic_name, semantics[i].name))
1503 {
1504 *usage = semantics[i].usage;
1505 *usage_idx = semantic_index;
1506 return true;
1507 }
1508 }
1509
1510 return false;
1511}
BYTE usage_idx
GLsizeiptr const GLvoid GLenum usage
Definition: glext.h:5919
Definition: name.c:39

Referenced by allocate_semantic_register(), d3dbc_write_semantic_dcl(), and generate_vsir_signature_entry().

◆ sm4_register_from_semantic_name()

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 
)

Definition at line 2998 of file tpf.c.

3000{
3001 unsigned int i;
3002
3003 static const struct
3004 {
3005 const char *semantic;
3006 bool output;
3009 bool has_idx;
3010 }
3011 register_table[] =
3012 {
3013 {"sv_dispatchthreadid", false, VKD3D_SHADER_TYPE_COMPUTE, VKD3DSPR_THREADID, false},
3014 {"sv_groupid", false, VKD3D_SHADER_TYPE_COMPUTE, VKD3DSPR_THREADGROUPID, false},
3015 {"sv_groupindex", false, VKD3D_SHADER_TYPE_COMPUTE, VKD3DSPR_LOCALTHREADINDEX, false},
3016 {"sv_groupthreadid", false, VKD3D_SHADER_TYPE_COMPUTE, VKD3DSPR_LOCALTHREADID, false},
3017
3018 {"sv_domainlocation", false, VKD3D_SHADER_TYPE_DOMAIN, VKD3DSPR_TESSCOORD, false},
3019 {"sv_primitiveid", false, VKD3D_SHADER_TYPE_DOMAIN, VKD3DSPR_PRIMID, false},
3020
3021 {"sv_primitiveid", false, VKD3D_SHADER_TYPE_GEOMETRY, VKD3DSPR_PRIMID, false},
3022
3023 {"sv_outputcontrolpointid", false, VKD3D_SHADER_TYPE_HULL, VKD3DSPR_OUTPOINTID, false},
3024 {"sv_primitiveid", false, VKD3D_SHADER_TYPE_HULL, VKD3DSPR_PRIMID, false},
3025
3026 /* Put sv_target in this table, instead of letting it fall through to
3027 * default varying allocation, so that the register index matches the
3028 * usage index. */
3029 {"color", true, VKD3D_SHADER_TYPE_PIXEL, VKD3DSPR_OUTPUT, true},
3030 {"depth", true, VKD3D_SHADER_TYPE_PIXEL, VKD3DSPR_DEPTHOUT, false},
3031 {"sv_depth", true, VKD3D_SHADER_TYPE_PIXEL, VKD3DSPR_DEPTHOUT, false},
3032 {"sv_target", true, VKD3D_SHADER_TYPE_PIXEL, VKD3DSPR_OUTPUT, true},
3033 {"sv_coverage", true, VKD3D_SHADER_TYPE_PIXEL, VKD3DSPR_SAMPLEMASK, false},
3034 };
3035
3036 for (i = 0; i < ARRAY_SIZE(register_table); ++i)
3037 {
3038 if (!ascii_strcasecmp(semantic_name, register_table[i].semantic)
3039 && output == register_table[i].output
3040 && version->type == register_table[i].shader_type)
3041 {
3042 if (type)
3043 *type = register_table[i].type;
3044 *has_idx = register_table[i].has_idx;
3045 return true;
3046 }
3047 }
3048
3049 return false;
3050}

Referenced by allocate_semantic_register(), generate_vsir_signature_entry(), sm4_generate_vsir_instr_dcl_semantic(), and sm4_register_from_deref().

◆ sm4_sysval_semantic_from_semantic_name()

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 
)

Definition at line 3100 of file tpf.c.

3103{
3104 unsigned int i;
3105
3106 static const struct
3107 {
3108 const char *name;
3109 bool output;
3111 enum vkd3d_shader_sysval_semantic semantic;
3112 }
3113 semantics[] =
3114 {
3115 {"sv_dispatchthreadid", false, VKD3D_SHADER_TYPE_COMPUTE, ~0u},
3116 {"sv_groupid", false, VKD3D_SHADER_TYPE_COMPUTE, ~0u},
3117 {"sv_groupindex", false, VKD3D_SHADER_TYPE_COMPUTE, ~0u},
3118 {"sv_groupthreadid", false, VKD3D_SHADER_TYPE_COMPUTE, ~0u},
3119
3120 {"sv_domainlocation", false, VKD3D_SHADER_TYPE_DOMAIN, ~0u},
3121 {"sv_position", false, VKD3D_SHADER_TYPE_DOMAIN, VKD3D_SHADER_SV_NONE},
3122 {"sv_primitiveid", false, VKD3D_SHADER_TYPE_DOMAIN, ~0u},
3123
3124 {"sv_position", true, VKD3D_SHADER_TYPE_DOMAIN, VKD3D_SHADER_SV_POSITION},
3125
3128 {"sv_primitiveid", false, VKD3D_SHADER_TYPE_GEOMETRY, VKD3D_SHADER_SV_PRIMITIVE_ID},
3129
3133
3134 {"sv_outputcontrolpointid", false, VKD3D_SHADER_TYPE_HULL, ~0u},
3135 {"sv_position", false, VKD3D_SHADER_TYPE_HULL, ~0u},
3136 {"sv_primitiveid", false, VKD3D_SHADER_TYPE_HULL, ~0u},
3137
3138 {"sv_position", true, VKD3D_SHADER_TYPE_HULL, VKD3D_SHADER_SV_POSITION},
3139
3141 {"sv_position", false, VKD3D_SHADER_TYPE_PIXEL, VKD3D_SHADER_SV_POSITION},
3142 {"sv_primitiveid", false, VKD3D_SHADER_TYPE_PIXEL, VKD3D_SHADER_SV_PRIMITIVE_ID},
3143 {"sv_isfrontface", false, VKD3D_SHADER_TYPE_PIXEL, VKD3D_SHADER_SV_IS_FRONT_FACE},
3144 {"sv_rendertargetarrayindex", false, VKD3D_SHADER_TYPE_PIXEL, VKD3D_SHADER_SV_RENDER_TARGET_ARRAY_INDEX},
3145 {"sv_viewportarrayindex", false, VKD3D_SHADER_TYPE_PIXEL, VKD3D_SHADER_SV_VIEWPORT_ARRAY_INDEX},
3146 {"sv_sampleindex", false, VKD3D_SHADER_TYPE_PIXEL, VKD3D_SHADER_SV_SAMPLE_INDEX},
3147
3150 {"sv_target", true, VKD3D_SHADER_TYPE_PIXEL, VKD3D_SHADER_SV_TARGET},
3152 {"sv_coverage", true, VKD3D_SHADER_TYPE_PIXEL, VKD3D_SHADER_SV_COVERAGE},
3153
3154 {"sv_position", false, VKD3D_SHADER_TYPE_VERTEX, VKD3D_SHADER_SV_NONE},
3155 {"sv_vertexid", false, VKD3D_SHADER_TYPE_VERTEX, VKD3D_SHADER_SV_VERTEX_ID},
3156 {"sv_instanceid", false, VKD3D_SHADER_TYPE_VERTEX, VKD3D_SHADER_SV_INSTANCE_ID},
3157
3159 {"sv_position", true, VKD3D_SHADER_TYPE_VERTEX, VKD3D_SHADER_SV_POSITION},
3160 {"sv_rendertargetarrayindex", true, VKD3D_SHADER_TYPE_VERTEX, VKD3D_SHADER_SV_RENDER_TARGET_ARRAY_INDEX},
3161 {"sv_viewportarrayindex", true, VKD3D_SHADER_TYPE_VERTEX, VKD3D_SHADER_SV_VIEWPORT_ARRAY_INDEX},
3162 };
3163 bool needs_compat_mapping = ascii_strncasecmp(semantic_name, "sv_", 3);
3164
3165 if (is_patch_constant_func)
3166 {
3167 if (output)
3168 {
3169 if (!ascii_strcasecmp(semantic_name, "sv_tessfactor"))
3170 return get_tessfactor_sysval_semantic(sysval_semantic, domain, semantic_idx);
3171 if (!ascii_strcasecmp(semantic_name, "sv_insidetessfactor"))
3172 return get_insidetessfactor_sysval_semantic(sysval_semantic, domain, semantic_idx);
3173 if (!ascii_strcasecmp(semantic_name, "sv_position"))
3174 {
3175 *sysval_semantic = VKD3D_SHADER_SV_NONE;
3176 return true;
3177 }
3178 }
3179 else
3180 {
3181 if (!ascii_strcasecmp(semantic_name, "sv_primitiveid")
3182 || !ascii_strcasecmp(semantic_name, "sv_position"))
3183 {
3184 *sysval_semantic = ~0u;
3185 return true;
3186 }
3187 return false;
3188 }
3189 }
3190 else if (version->type == VKD3D_SHADER_TYPE_DOMAIN)
3191 {
3192 if (!output)
3193 {
3194 if (!ascii_strcasecmp(semantic_name, "sv_tessfactor"))
3195 return get_tessfactor_sysval_semantic(sysval_semantic, domain, semantic_idx);
3196 if (!ascii_strcasecmp(semantic_name, "sv_insidetessfactor"))
3197 return get_insidetessfactor_sysval_semantic(sysval_semantic, domain, semantic_idx);
3198 }
3199 }
3200
3201 for (i = 0; i < ARRAY_SIZE(semantics); ++i)
3202 {
3203 if (!ascii_strcasecmp(semantic_name, semantics[i].name)
3204 && output == semantics[i].output
3205 && (semantic_compat_mapping == needs_compat_mapping || !needs_compat_mapping)
3206 && version->type == semantics[i].shader_type)
3207 {
3208 *sysval_semantic = semantics[i].semantic;
3209 return true;
3210 }
3211 }
3212
3213 if (!needs_compat_mapping)
3214 return false;
3215
3216 *sysval_semantic = VKD3D_SHADER_SV_NONE;
3217 return true;
3218}
Definition: cookie.c:42
static bool get_insidetessfactor_sysval_semantic(enum vkd3d_shader_sysval_semantic *semantic, enum vkd3d_tessellator_domain domain, uint32_t index)
Definition: tpf.c:3079
static bool get_tessfactor_sysval_semantic(enum vkd3d_shader_sysval_semantic *semantic, enum vkd3d_tessellator_domain domain, uint32_t index)
Definition: tpf.c:3052
static int ascii_strncasecmp(const char *a, const char *b, size_t n)
Definition: vkd3d_common.h:423
vkd3d_shader_sysval_semantic
@ VKD3D_SHADER_SV_VERTEX_ID
@ VKD3D_SHADER_SV_RENDER_TARGET_ARRAY_INDEX
@ VKD3D_SHADER_SV_PRIMITIVE_ID
@ VKD3D_SHADER_SV_COVERAGE
@ VKD3D_SHADER_SV_DEPTH
@ VKD3D_SHADER_SV_TARGET
@ VKD3D_SHADER_SV_NONE
@ VKD3D_SHADER_SV_IS_FRONT_FACE
@ VKD3D_SHADER_SV_VIEWPORT_ARRAY_INDEX
@ VKD3D_SHADER_SV_INSTANCE_ID
@ VKD3D_SHADER_SV_SAMPLE_INDEX
@ VKD3D_SHADER_SV_POSITION

Referenced by allocate_semantic_register(), generate_vsir_signature_entry(), and sm4_generate_vsir_instr_dcl_semantic().

◆ spirv_compile()

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 
)

Definition at line 10835 of file spirv.c.

10839{
10841 int ret;
10842
10843 if (!(spirv_compiler = spirv_compiler_create(program, compile_info,
10845 {
10846 ERR("Failed to create SPIR-V compiler.\n");
10847 return VKD3D_ERROR;
10848 }
10849
10851
10853 return ret;
10854}
static int spirv_compiler_generate_spirv(struct spirv_compiler *compiler, struct vsir_program *program, const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_code *spirv)
Definition: spirv.c:10665
static struct spirv_compiler * spirv_compiler_create(const struct vsir_program *program, const struct vkd3d_shader_compile_info *compile_info, const struct vkd3d_shader_scan_descriptor_info1 *scan_descriptor_info, struct vkd3d_shader_message_context *message_context, uint64_t config_flags)
Definition: spirv.c:2554
static void spirv_compiler_destroy(struct spirv_compiler *compiler)
Definition: spirv.c:2527
uint64_t config_flags
Definition: spirv.c:2492
const struct vkd3d_shader_scan_descriptor_info1 * scan_descriptor_info
Definition: spirv.c:2465
struct vkd3d_shader_message_context * message_context
Definition: spirv.c:2417
@ VKD3D_ERROR
Definition: vkd3d_types.h:47

Referenced by vsir_program_compile().

◆ tpf_parse()

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 
)

Definition at line 2900 of file tpf.c.

2902{
2903 struct vkd3d_shader_instruction_array *instructions;
2904 struct vkd3d_shader_sm4_parser sm4 = {0};
2905 struct dxbc_shader_desc dxbc_desc = {0};
2906 struct vkd3d_shader_instruction *ins;
2907 int ret;
2908
2909 dxbc_desc.is_dxil = false;
2910 if ((ret = shader_extract_from_dxbc(&compile_info->source,
2911 message_context, compile_info->source_name, &dxbc_desc)) < 0)
2912 {
2913 WARN("Failed to extract shader, vkd3d result %d.\n", ret);
2914 return ret;
2915 }
2916
2917 if (!shader_sm4_init(&sm4, program, dxbc_desc.byte_code, dxbc_desc.byte_code_size,
2918 compile_info, message_context))
2919 {
2920 WARN("Failed to initialise shader parser.\n");
2921 free_dxbc_shader_desc(&dxbc_desc);
2923 }
2924
2925 program->input_signature = dxbc_desc.input_signature;
2926 program->output_signature = dxbc_desc.output_signature;
2927 program->patch_constant_signature = dxbc_desc.patch_constant_signature;
2928 memset(&dxbc_desc, 0, sizeof(dxbc_desc));
2929
2930 /* DXBC stores used masks inverted for output signatures, for some reason.
2931 * We return them un-inverted. */
2932 uninvert_used_masks(&program->output_signature);
2933 if (program->shader_version.type == VKD3D_SHADER_TYPE_HULL)
2934 uninvert_used_masks(&program->patch_constant_signature);
2935
2936 switch (program->shader_version.type)
2937 {
2940 break;
2941
2942 default:
2943 if (program->patch_constant_signature.element_count != 0)
2944 {
2945 WARN("The patch constant signature only makes sense for Hull and Domain Shaders, ignoring it.\n");
2946 shader_signature_cleanup(&program->patch_constant_signature);
2947 }
2948 break;
2949 }
2950
2951 if (!shader_sm4_parser_validate_signature(&sm4, &program->input_signature,
2952 sm4.input_register_masks, "Input")
2953 || !shader_sm4_parser_validate_signature(&sm4, &program->output_signature,
2954 sm4.output_register_masks, "Output")
2955 || !shader_sm4_parser_validate_signature(&sm4, &program->patch_constant_signature,
2956 sm4.patch_constant_register_masks, "Patch constant"))
2957 {
2960 }
2961
2962 instructions = &program->instructions;
2963 while (sm4.ptr != sm4.end)
2964 {
2965 if (!shader_instruction_array_reserve(instructions, instructions->count + 1))
2966 {
2967 ERR("Failed to allocate instructions.\n");
2971 }
2972 ins = &instructions->elements[instructions->count];
2973 shader_sm4_read_instruction(&sm4, ins);
2974
2975 if (ins->opcode == VKD3DSIH_INVALID)
2976 {
2977 WARN("Encountered unrecognized or invalid instruction.\n");
2980 }
2981 ++instructions->count;
2982 }
2983 if (program->shader_version.type == VKD3D_SHADER_TYPE_HULL
2984 && !sm4.has_control_point_phase && !sm4.p.failed)
2986
2987 if (sm4.p.failed)
2988 {
2991 }
2992
2993 return VKD3D_OK;
2994}
struct shader_signature input_signature
struct shader_signature patch_constant_signature
struct shader_signature output_signature
unsigned int output_register_masks[MAX_REG_OUTPUT]
Definition: tpf.c:690
const uint32_t * end
Definition: tpf.c:685
const uint32_t * ptr
Definition: tpf.c:685
struct vkd3d_shader_parser p
Definition: tpf.c:699
unsigned int input_register_masks[MAX_REG_OUTPUT]
Definition: tpf.c:689
unsigned int patch_constant_register_masks[MAX_REG_OUTPUT]
Definition: tpf.c:691
bool has_control_point_phase
Definition: tpf.c:688
static void uninvert_used_masks(struct shader_signature *signature)
Definition: tpf.c:2829
static void shader_sm4_validate_default_phase_index_ranges(struct vkd3d_shader_sm4_parser *sm4)
Definition: tpf.c:2877
static void shader_sm4_read_instruction(struct vkd3d_shader_sm4_parser *sm4, struct vkd3d_shader_instruction *ins)
Definition: tpf.c:2616
static bool shader_sm4_init(struct vkd3d_shader_sm4_parser *sm4, struct vsir_program *program, const uint32_t *byte_code, size_t byte_code_size, const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_message_context *message_context)
Definition: tpf.c:2758
static bool shader_sm4_parser_validate_signature(struct vkd3d_shader_sm4_parser *sm4, const struct shader_signature *signature, unsigned int *masks, const char *name)
Definition: tpf.c:2839

Referenced by hlsl_compile_shader(), and vsir_parse().

◆ vkd3d_compact_swizzle()

static unsigned int vkd3d_compact_swizzle ( uint32_t  swizzle,
uint32_t  write_mask 
)
inlinestatic

Definition at line 1878 of file vkd3d_shader_private.h.

1879{
1880 unsigned int i, compacted_swizzle = 0;
1881
1882 for (i = 0; i < VKD3D_VEC4_SIZE; ++i)
1883 {
1884 if (write_mask & (VKD3DSP_WRITEMASK_0 << i))
1885 {
1886 compacted_swizzle <<= VKD3D_SHADER_SWIZZLE_SHIFT(1);
1887 compacted_swizzle |= vsir_swizzle_get_component(swizzle, i);
1888 }
1889 }
1890
1891 return compacted_swizzle;
1892}
GLuint GLenum swizzle
Definition: glext.h:9511
#define VKD3D_SHADER_SWIZZLE_SHIFT(idx)
static unsigned int vsir_swizzle_get_component(uint32_t swizzle, unsigned int idx)
#define VKD3DSP_WRITEMASK_0
#define VKD3D_VEC4_SIZE

Referenced by vkd3d_swizzle_is_equal().

◆ vkd3d_component_type_from_data_type()

static enum vkd3d_shader_component_type vkd3d_component_type_from_data_type ( enum vkd3d_data_type  data_type)
inlinestatic

Definition at line 1678 of file vkd3d_shader_private.h.

1680{
1681 switch (data_type)
1682 {
1683 case VKD3D_DATA_HALF: /* Minimum precision. TODO: native 16-bit */
1684 case VKD3D_DATA_FLOAT:
1685 case VKD3D_DATA_UNORM:
1686 case VKD3D_DATA_SNORM:
1688 case VKD3D_DATA_UINT16: /* Minimum precision. TODO: native 16-bit */
1689 case VKD3D_DATA_UINT:
1691 case VKD3D_DATA_INT:
1693 case VKD3D_DATA_DOUBLE:
1695 case VKD3D_DATA_UINT64:
1697 case VKD3D_DATA_BOOL:
1699 default:
1700 FIXME("Unhandled data type %#x.\n", data_type);
1701 /* fall-through */
1702 case VKD3D_DATA_MIXED:
1704 }
1705}
@ VKD3D_SHADER_COMPONENT_INT
@ VKD3D_SHADER_COMPONENT_UINT
@ VKD3D_SHADER_COMPONENT_FLOAT
@ VKD3D_SHADER_COMPONENT_BOOL

Referenced by spirv_compiler_emit_bitfield_instruction(), spirv_compiler_emit_constant_array(), spirv_compiler_emit_dcl_immediate_constant_buffer(), spirv_compiler_emit_dcl_indexable_temp(), spirv_compiler_emit_dot(), spirv_compiler_emit_f16tof32(), spirv_compiler_emit_f32tof16(), spirv_compiler_emit_ftoi(), spirv_compiler_emit_load_constant(), spirv_compiler_emit_load_constant64(), spirv_compiler_emit_load_reg(), spirv_compiler_emit_load_scalar(), spirv_compiler_emit_load_ssa_reg(), spirv_compiler_emit_shader_parameter(), spirv_compiler_emit_spec_constant(), spirv_compiler_emit_store_reg(), spirv_compiler_generate_spirv(), spirv_compiler_get_buffer_parameter(), spirv_compiler_get_type_id_for_reg(), and vkd3d_spirv_get_type_id_for_data_type().

◆ vkd3d_component_type_from_resource_data_type()

static enum vkd3d_shader_component_type vkd3d_component_type_from_resource_data_type ( enum vkd3d_shader_resource_data_type  data_type)
inlinestatic

Definition at line 1726 of file vkd3d_shader_private.h.

1728{
1729 switch (data_type)
1730 {
1742 default:
1743 FIXME("Unhandled data type %#x.\n", data_type);
1744 /* fall-through */
1747 }
1748}
@ 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

Referenced by shader_glsl_generate_sampler_declaration(), shader_glsl_generate_uav_declaration(), shader_glsl_ld(), shader_glsl_load_uav_typed(), shader_glsl_sample(), shader_glsl_store_uav_typed(), and spirv_compiler_emit_resource_declaration().

◆ vkd3d_compute_md5()

void vkd3d_compute_md5 ( const void *  dxbc,
size_t  size,
uint32_t  checksum[4],
enum vkd3d_md5_variant  variant 
)

Definition at line 305 of file checksum.c.

306{
307 const uint8_t *ptr = data;
308 struct md5_ctx ctx;
309
310 md5_init(&ctx);
312 md5_final(&ctx, variant);
313
314 memcpy(checksum, ctx.digest, sizeof(ctx.digest));
315}
#define md5_update
Definition: compat-1.3.h:2043
#define md5_init
Definition: compat-1.3.h:2039
static cab_ULONG checksum(const cab_UBYTE *data, cab_UWORD bytes, cab_ULONG csum)
Definition: fdi.c:353
static PVOID ptr
Definition: dispmode.c:27
static void md5_final(struct md5_ctx *ctx, enum vkd3d_md5_variant variant)
Definition: checksum.c:238
Definition: msi.c:4007

Referenced by compute_dxbc_checksum(), and fill_shader_dump_data().

◆ vkd3d_data_type_from_component_type()

◆ vkd3d_find_struct_()

static void * vkd3d_find_struct_ ( const struct vkd3d_struct *  chain,
enum vkd3d_shader_structure_type  type 
)
inlinestatic

Definition at line 1926 of file vkd3d_shader_private.h.

1928{
1929 while (chain)
1930 {
1931 if (chain->type == type)
1932 return (void *)chain;
1933
1934 chain = chain->next;
1935 }
1936
1937 return NULL;
1938}
struct sock * chain
Definition: tcpcore.h:1

◆ vkd3d_parse_integer()

uint32_t vkd3d_parse_integer ( const char *  s)

Definition at line 37 of file vkd3d_shader_main.c.

38{
39 uint32_t base = 10, ret = 0;
40 int digit;
41
42 if (*s == '0')
43 {
44 base = 8;
45 ++s;
46 if (*s == 'x' || *s == 'X')
47 {
48 base = 16;
49 ++s;
50 }
51 }
52
53 while ((digit = char_to_int(*s++)) >= 0)
54 ret = ret * base + (uint32_t)digit;
55 return ret;
56}
GLdouble s
Definition: gl.h:2039
#define uint32_t
Definition: nsiface.idl:61
static int char_to_int(char c)

◆ vkd3d_shader_code_from_string_buffer()

void vkd3d_shader_code_from_string_buffer ( struct vkd3d_shader_code *  code,
struct vkd3d_string_buffer *  buffer 
)

Definition at line 235 of file vkd3d_shader_main.c.

236{
237 code->code = buffer->buffer;
238 code->size = buffer->content_size;
239
240 buffer->buffer = NULL;
241 buffer->buffer_size = 0;
242 buffer->content_size = 0;
243}
Definition: inflate.c:139

Referenced by d3d_asm_compile(), fx_parse(), and msl_generator_generate().

◆ vkd3d_shader_error()

◆ vkd3d_shader_init_config_flags()

uint64_t vkd3d_shader_init_config_flags ( void  )

Definition at line 592 of file vkd3d_shader_main.c.

593{
594 uint64_t config_flags;
595 const char *config;
596
597 config = getenv("VKD3D_SHADER_CONFIG");
599
600 if (config_flags)
601 TRACE("VKD3D_SHADER_CONFIG='%s'.\n", config);
602
603 return config_flags;
604}
struct config_s config
char *CDECL getenv(const char *name)
Definition: environ.c:227
#define TRACE(s)
Definition: solgame.cpp:4
uint64_t vkd3d_parse_debug_options(const char *string, const struct vkd3d_debug_option *options, unsigned int option_count)
Definition: debug.c:370
static const struct vkd3d_debug_option vkd3d_shader_config_options[]

Referenced by hlsl_compile_shader(), hlsl_emit_bytecode(), vkd3d_shader_compile(), and vkd3d_shader_scan().

◆ vkd3d_shader_instruction_has_texel_offset()

static bool vkd3d_shader_instruction_has_texel_offset ( const struct vkd3d_shader_instruction *  ins)
inlinestatic

◆ vkd3d_shader_message_context_cleanup()

◆ vkd3d_shader_message_context_copy_messages()

bool vkd3d_shader_message_context_copy_messages ( struct vkd3d_shader_message_context *  context,
char **  out 
)

Definition at line 263 of file vkd3d_shader_main.c.

264{
265 char *messages;
266
267 if (!out)
268 return true;
269
270 *out = NULL;
271
272 if (!context->messages.content_size)
273 return true;
274
275 if (!(messages = vkd3d_malloc(context->messages.content_size + 1)))
276 return false;
277 memcpy(messages, context->messages.buffer, context->messages.content_size + 1);
278 *out = messages;
279 return true;
280}

Referenced by vkd3d_shader_compile(), vkd3d_shader_parse_dxbc(), vkd3d_shader_parse_input_signature(), vkd3d_shader_parse_root_signature(), vkd3d_shader_preprocess(), vkd3d_shader_scan(), and vkd3d_shader_serialize_root_signature().

◆ vkd3d_shader_message_context_init()

◆ vkd3d_shader_message_context_trace_messages_()

void vkd3d_shader_message_context_trace_messages_ ( const struct vkd3d_shader_message_context *  context,
const char *  function 
)

Definition at line 257 of file vkd3d_shader_main.c.

259{
260 vkd3d_string_buffer_trace_(&context->messages, function);
261}
void vkd3d_string_buffer_trace_(const struct vkd3d_string_buffer *buffer, const char *function)

◆ vkd3d_shader_parser_error()

void vkd3d_shader_parser_error ( struct vkd3d_shader_parser *  parser,
enum vkd3d_shader_error  error,
const char *  format,
  ... 
)

Referenced by add_signature_element_from_register(), d3dbc_parse(), dxil_record_to_string(), dxil_record_validate_operand_min_count(), instruction_dst_params_alloc(), instruction_src_params_alloc(), map_binary_op(), map_dx_atomic_binop(), metadata_value_create_node(), resolve_forward_initialiser(), resolve_forward_zero_initialiser(), resources_load_additional_values(), shader_sm1_read_comment(), shader_sm1_read_dst_param(), shader_sm1_read_immconst(), shader_sm1_read_instruction(), shader_sm1_read_param(), shader_sm1_read_semantic(), shader_sm1_read_src_param(), shader_sm4_parser_validate_signature(), shader_sm4_read_case_condition(), shader_sm4_read_dcl_index_range(), shader_sm4_read_dcl_input_ps(), shader_sm4_read_dcl_input_ps_siv(), shader_sm4_read_dst_param(), shader_sm4_read_instruction(), shader_sm4_read_param(), shader_sm4_read_shader_data(), shader_sm4_read_src_param(), shader_sm4_set_descriptor_register_range(), shader_sm4_validate_default_phase_index_ranges(), shader_sm4_validate_input_output_register(), signature_element_read_additional_element_values(), sm6_block_phi_require_space(), sm6_dx_map_wave_bit_op(), sm6_dx_map_wave_op(), sm6_function_emit_blocks(), sm6_function_get_block(), sm6_function_resolve_phi_incomings(), sm6_map_cast_op(), sm6_parser_constants_init(), sm6_parser_declare_global(), sm6_parser_declare_tgsm_raw(), sm6_parser_declare_tgsm_structured(), sm6_parser_decode_dx_op(), sm6_parser_descriptor_type_init(), sm6_parser_ds_properties_init(), sm6_parser_emit_alloca(), sm6_parser_emit_atomicrmw(), sm6_parser_emit_br(), sm6_parser_emit_call(), sm6_parser_emit_cmp2(), sm6_parser_emit_cmpxchg(), sm6_parser_emit_dcl_max_tessellation_factor(), sm6_parser_emit_dcl_tessellator_domain(), sm6_parser_emit_dcl_tessellator_output_primitive(), sm6_parser_emit_dcl_tessellator_partitioning(), sm6_parser_emit_dx_buffer_store(), sm6_parser_emit_dx_buffer_update_counter(), sm6_parser_emit_dx_create_handle(), sm6_parser_emit_dx_domain_location(), sm6_parser_emit_dx_load_input(), sm6_parser_emit_dx_quad_op(), sm6_parser_emit_dx_raw_buffer_load(), sm6_parser_emit_dx_raw_buffer_store(), sm6_parser_emit_dx_sample_index(), sm6_parser_emit_dx_store_output(), sm6_parser_emit_dx_stream(), sm6_parser_emit_dx_texture_gather(), sm6_parser_emit_dx_texture_store(), sm6_parser_emit_extractval(), sm6_parser_emit_gep(), sm6_parser_emit_global_flags(), sm6_parser_emit_phi(), sm6_parser_emit_switch(), sm6_parser_emit_thread_group(), sm6_parser_entry_point_init(), sm6_parser_function_init(), sm6_parser_get_type(), sm6_parser_get_value_index(), sm6_parser_get_value_safe(), sm6_parser_globals_init(), sm6_parser_gs_properties_init(), sm6_parser_hs_properties_init(), sm6_parser_init(), sm6_parser_init_constexpr_gep(), sm6_parser_metadata_attachment_block_init(), sm6_parser_metadata_init(), sm6_parser_read_signature(), sm6_parser_resources_init(), sm6_parser_resources_load_cbv(), sm6_parser_resources_load_common_info(), sm6_parser_resources_load_sampler(), sm6_parser_resources_load_srv(), sm6_parser_resources_load_uav(), sm6_parser_signatures_init(), sm6_parser_validate_control_point_count(), sm6_parser_validate_dx_op(), sm6_value_validate_is_backward_ref(), sm6_value_validate_is_bool(), sm6_value_validate_is_handle(), sm6_value_validate_is_i32(), sm6_value_validate_is_numeric(), sm6_value_validate_is_pointer(), sm6_value_validate_is_pointer_to_i32(), sm6_value_validate_is_register(), sm6_value_validate_is_sampler_handle(), sm6_value_validate_is_texture_2dms_handle(), sm6_value_validate_is_texture_handle(), tpf_parse(), value_allocate_constant_array(), and vkd3d_data_type_from_dxil_component_type().

◆ vkd3d_shader_parser_init()

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 
)

Definition at line 606 of file vkd3d_shader_main.c.

608{
609 parser->message_context = message_context;
610 parser->location.source_name = source_name;
611 parser->location.line = 1;
612 parser->location.column = 0;
613 parser->program = program;
614}
PINFCACHELINE line
Definition: inffile.c:95

Referenced by shader_sm1_init(), shader_sm4_init(), and sm6_parser_init().

◆ vkd3d_shader_parser_warning()

void vkd3d_shader_parser_warning ( struct vkd3d_shader_parser *  parser,
enum vkd3d_shader_error  error,
const char *  format,
  ... 
)

Referenced by add_signature_mask(), dxil_record_validate_operand_max_count(), map_binary_op(), metadata_attachment_record_apply(), metadata_node_get_unary_uint(), resources_load_additional_values(), shader_sm1_validate_instruction(), shader_sm4_parser_validate_signature(), shader_sm4_read_dst_param(), shader_sm4_read_src_param(), signature_element_read_additional_element_values(), sm6_block_emit_terminator(), sm6_function_resolve_phi_incomings(), sm6_parser_constants_init(), sm6_parser_ds_properties_init(), sm6_parser_emit_binop(), sm6_parser_emit_call(), sm6_parser_emit_cmp2(), sm6_parser_emit_dx_atomic_binop(), sm6_parser_emit_dx_barrier(), sm6_parser_emit_dx_buffer_load(), sm6_parser_emit_dx_buffer_store(), sm6_parser_emit_dx_buffer_update_counter(), sm6_parser_emit_dx_get_dimensions(), sm6_parser_emit_dx_load_input(), sm6_parser_emit_dx_raw_buffer_store(), sm6_parser_emit_dx_sample(), sm6_parser_emit_gep(), sm6_parser_emit_load(), sm6_parser_emit_store(), sm6_parser_emit_switch(), sm6_parser_entry_point_init(), sm6_parser_find_named_metadata(), sm6_parser_function_init(), sm6_parser_get_value_idx_by_ref(), sm6_parser_gs_properties_init(), sm6_parser_hs_properties_init(), sm6_parser_init(), sm6_parser_init_constexpr_gep(), sm6_parser_metadata_attachment_block_init(), sm6_parser_metadata_init(), sm6_parser_read_signature(), sm6_parser_resources_load_cbv(), sm6_parser_resources_load_register_range(), sm6_parser_resources_load_sampler(), sm6_parser_resources_load_srv(), and sm6_parser_resources_load_uav().

◆ vkd3d_shader_trace_text_()

void vkd3d_shader_trace_text_ ( const char *  text,
size_t  size,
const char *  function 
)

Definition at line 169 of file vkd3d_shader_main.c.

170{
171 const char *p, *q, *end = text + size;
172
173 if (!TRACE_ON())
174 return;
175
176 for (p = text; p < end; p = q)
177 {
178 if (!(q = memchr(p, '\n', end - p)))
179 q = end;
180 else
181 ++q;
182 vkd3d_dbg_printf(VKD3D_DBG_LEVEL_TRACE, function, "%.*s", (int)(q - p), p);
183 }
184}
#define TRACE_ON(x)
Definition: compat.h:75
const WCHAR * text
Definition: package.c:1826
GLuint GLuint end
Definition: gl.h:1545
GLdouble GLdouble GLdouble GLdouble q
Definition: gl.h:2063
GLfloat GLfloat p
Definition: glext.h:8902
#define memchr(s, c, n)
Definition: mkisofs.h:875
void vkd3d_dbg_printf(enum vkd3d_dbg_level level, const char *function, const char *fmt,...) VKD3D_PRINTF_FUNC(3
@ VKD3D_DBG_LEVEL_TRACE
Definition: vkd3d_common.h:149

Referenced by vkd3d_string_buffer_trace_().

◆ vkd3d_shader_ver_ge()

◆ vkd3d_shader_ver_le()

static bool vkd3d_shader_ver_le ( const struct vkd3d_shader_version *  v,
unsigned int  major,
unsigned int  minor 
)
inlinestatic

Definition at line 1284 of file vkd3d_shader_private.h.

1285{
1286 return v->major < major || (v->major == major && v->minor <= minor);
1287}

Referenced by shader_sm1_get_opcode_info(), shader_sm1_get_opcode_info_from_vsir(), and shader_sm1_init().

◆ vkd3d_shader_verror()

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 
)

Definition at line 336 of file vkd3d_shader_main.c.

338{
339 if (context->log_level < VKD3D_SHADER_LOG_ERROR)
340 return;
341
342 if (location)
343 {
344 const char *source_name = location->source_name ? location->source_name : "<anonymous>";
345
346 if (location->line)
347 vkd3d_string_buffer_printf(&context->messages, "%s:%u:%u: E%04u: ",
348 source_name, location->line, location->column, error);
349 else
350 vkd3d_string_buffer_printf(&context->messages, "%s: E%04u: ", source_name, error);
351 }
352 else
353 {
354 vkd3d_string_buffer_printf(&context->messages, "E%04u: ", error);
355 }
357 vkd3d_string_buffer_printf(&context->messages, "\n");
358}
#define error(str)
Definition: mkdosfs.c:1605
Definition: match.c:390
@ VKD3D_SHADER_LOG_ERROR
int vkd3d_string_buffer_vprintf(struct vkd3d_string_buffer *buffer, const char *format, va_list args)

Referenced by hlsl_error(), VKD3D_PRINTF_FUNC(), and vkd3d_shader_error().

◆ vkd3d_shader_vnote()

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 
)

Definition at line 282 of file vkd3d_shader_main.c.

284{
285 if (context->log_level < level)
286 return;
287
288 if (location)
289 {
290 const char *source_name = location->source_name ? location->source_name : "<anonymous>";
291
292 if (location->line)
293 vkd3d_string_buffer_printf(&context->messages, "%s:%u:%u: ",
294 source_name, location->line, location->column);
295 else
296 vkd3d_string_buffer_printf(&context->messages, "%s: ", source_name);
297 }
299 vkd3d_string_buffer_printf(&context->messages, "\n");
300}
GLint level
Definition: gl.h:1546

Referenced by hlsl_note().

◆ vkd3d_shader_vwarning()

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 
)

Definition at line 302 of file vkd3d_shader_main.c.

304{
305 if (context->log_level < VKD3D_SHADER_LOG_WARNING)
306 return;
307
308 if (location)
309 {
310 const char *source_name = location->source_name ? location->source_name : "<anonymous>";
311
312 if (location->line)
313 vkd3d_string_buffer_printf(&context->messages, "%s:%u:%u: W%04u: ",
314 source_name, location->line, location->column, error);
315 else
316 vkd3d_string_buffer_printf(&context->messages, "%s: W%04u: ", source_name, error);
317 }
318 else
319 {
320 vkd3d_string_buffer_printf(&context->messages, "W%04u: ", error);
321 }
323 vkd3d_string_buffer_printf(&context->messages, "\n");
324}
@ VKD3D_SHADER_LOG_WARNING

Referenced by hlsl_warning(), and vkd3d_shader_warning().

◆ vkd3d_shader_warning()

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_siv_from_sysval()

static enum vkd3d_shader_input_sysval_semantic vkd3d_siv_from_sysval ( enum vkd3d_shader_sysval_semantic  sysval)
inlinestatic

Definition at line 1758 of file vkd3d_shader_private.h.

1759{
1761}
enum vkd3d_shader_sysval_semantic sysval
Definition: spirv.c:4839
enum vkd3d_shader_input_sysval_semantic vkd3d_siv_from_sysval_indexed(enum vkd3d_shader_sysval_semantic sysval, unsigned int index)
Definition: spirv.c:199

Referenced by control_point_normaliser_emit_hs_input().

◆ vkd3d_siv_from_sysval_indexed()

enum vkd3d_shader_input_sysval_semantic vkd3d_siv_from_sysval_indexed ( enum vkd3d_shader_sysval_semantic  sysval,
unsigned int  index 
)

Definition at line 199 of file spirv.c.

201{
202 switch (sysval)
203 {
211 return VKD3D_SIV_NONE;
213 return VKD3D_SIV_POSITION;
241 return VKD3D_SIV_VERTEX_ID;
244 default:
245 FIXME("Unhandled sysval %#x, index %u.\n", sysval, index);
246 return VKD3D_SIV_NONE;
247 }
248}
#define index(s, c)
Definition: various.h:29
GLuint index
Definition: glext.h:6031
@ VKD3D_SHADER_SV_DEPTH_LESS_EQUAL
@ VKD3D_SHADER_SV_CULL_DISTANCE
@ VKD3D_SHADER_SV_TESS_FACTOR_TRIEDGE
@ VKD3D_SHADER_SV_TESS_FACTOR_LINEDET
@ VKD3D_SHADER_SV_TESS_FACTOR_QUADEDGE
@ VKD3D_SHADER_SV_TESS_FACTOR_QUADINT
@ VKD3D_SHADER_SV_TESS_FACTOR_TRIINT
@ VKD3D_SHADER_SV_TESS_FACTOR_LINEDEN
@ VKD3D_SHADER_SV_DEPTH_GREATER_EQUAL
@ VKD3D_SHADER_SV_CLIP_DISTANCE
@ VKD3D_SHADER_SV_STENCIL_REF

Referenced by sm4_generate_vsir_instr_dcl_semantic(), and vkd3d_siv_from_sysval().

◆ vkd3d_string_buffer_cache_cleanup()

void vkd3d_string_buffer_cache_cleanup ( struct vkd3d_string_buffer_cache *  list)

Definition at line 191 of file vkd3d_shader_main.c.

192{
193 unsigned int i;
194
195 for (i = 0; i < cache->count; ++i)
196 {
198 vkd3d_free(cache->buffers[i]);
199 }
200 vkd3d_free(cache->buffers);
202}
Definition: cache.c:41
void vkd3d_string_buffer_cache_init(struct vkd3d_string_buffer_cache *cache)

Referenced by hlsl_ctx_cleanup(), msl_generator_cleanup(), msl_generator_init(), spirv_compiler_destroy(), and vkd3d_glsl_generator_cleanup().

◆ vkd3d_string_buffer_cache_init()

void vkd3d_string_buffer_cache_init ( struct vkd3d_string_buffer_cache *  list)

◆ vkd3d_string_buffer_cleanup()

◆ vkd3d_string_buffer_clear()

void vkd3d_string_buffer_clear ( struct vkd3d_string_buffer *  buffer)

Definition at line 72 of file vkd3d_shader_main.c.

73{
75}
void vkd3d_string_buffer_truncate(struct vkd3d_string_buffer *buffer, size_t size)

Referenced by declare_predefined_types(), trace_signature(), vkd3d_string_buffer_get(), vsir_cfg_compute_dominators(), vsir_cfg_compute_loops(), and vsir_cfg_sort_nodes().

◆ vkd3d_string_buffer_get()

struct vkd3d_string_buffer * vkd3d_string_buffer_get ( struct vkd3d_string_buffer_cache *  list)

Definition at line 204 of file vkd3d_shader_main.c.

205{
207
208 if (!cache->count)
209 {
210 if (!vkd3d_array_reserve((void **)&cache->buffers, &cache->capacity,
211 cache->max_count + 1, sizeof(*cache->buffers)))
212 return NULL;
213 ++cache->max_count;
214
215 if (!(buffer = vkd3d_malloc(sizeof(*buffer))))
216 return NULL;
218 }
219 else
220 {
221 buffer = cache->buffers[--cache->count];
222 }
224 return buffer;
225}
void vkd3d_string_buffer_clear(struct vkd3d_string_buffer *buffer)

Referenced by glsl_dst_init(), glsl_src_init(), hlsl_get_string_buffer(), msl_dst_init(), msl_generator_init(), msl_src_init(), shader_glsl_intrinsic(), shader_glsl_ld(), shader_glsl_load_uav_typed(), shader_glsl_print_src(), shader_glsl_sample(), shader_glsl_store_uav_typed(), vkd3d_glsl_generator_init(), and vkd3d_shader_register_range_string().

◆ vkd3d_string_buffer_init()

void vkd3d_string_buffer_init ( struct vkd3d_string_buffer *  buffer)

◆ vkd3d_string_buffer_print_f32()

int vkd3d_string_buffer_print_f32 ( struct vkd3d_string_buffer *  buffer,
float  f 
)

Definition at line 134 of file vkd3d_shader_main.c.

135{
136 unsigned int idx = buffer->content_size + 1;
137 int ret;
138
139 if (!(ret = vkd3d_string_buffer_printf(buffer, "%.8e", f)) && isfinite(f))
140 {
141 if (signbit(f))
142 ++idx;
143 buffer->buffer[idx] = '.';
144 }
145
146 return ret;
147}
#define isfinite(x)
Definition: math.h:363
#define signbit(x)
Definition: math.h:362
GLfloat f
Definition: glext.h:7540

Referenced by shader_print_float_literal().

◆ vkd3d_string_buffer_print_f64()

int vkd3d_string_buffer_print_f64 ( struct vkd3d_string_buffer *  buffer,
double  d 
)

Definition at line 149 of file vkd3d_shader_main.c.

150{
151 unsigned int idx = buffer->content_size + 1;
152 int ret;
153
154 if (!(ret = vkd3d_string_buffer_printf(buffer, "%.16e", d)) && isfinite(d))
155 {
156 if (signbit(d))
157 ++idx;
158 buffer->buffer[idx] = '.';
159 }
160
161 return ret;
162}
#define d
Definition: ke_i.h:81

Referenced by shader_print_double_literal().

◆ vkd3d_string_buffer_printf()

int vkd3d_string_buffer_printf ( struct vkd3d_string_buffer *  buffer,
const char *  format,
  ... 
)

◆ vkd3d_string_buffer_release()

◆ vkd3d_string_buffer_trace_()

void vkd3d_string_buffer_trace_ ( const struct vkd3d_string_buffer *  buffer,
const char *  function 
)

Definition at line 164 of file vkd3d_shader_main.c.

165{
166 vkd3d_shader_trace_text_(buffer->buffer, buffer->content_size, function);
167}
void vkd3d_shader_trace_text_(const char *text, size_t size, const char *function)

Referenced by vkd3d_shader_message_context_trace_messages_().

◆ vkd3d_string_buffer_truncate()

void vkd3d_string_buffer_truncate ( struct vkd3d_string_buffer *  buffer,
size_t  size 
)

Definition at line 77 of file vkd3d_shader_main.c.

78{
79 if (size < buffer->content_size)
80 {
81 buffer->buffer[size] = '\0';
82 buffer->content_size = size;
83 }
84}

Referenced by vkd3d_string_buffer_clear(), and vsir_cfg_structure_list_dump().

◆ vkd3d_string_buffer_vprintf()

int vkd3d_string_buffer_vprintf ( struct vkd3d_string_buffer *  buffer,
const char *  format,
va_list  args 
)

Definition at line 99 of file vkd3d_shader_main.c.

100{
101 unsigned int rem;
102 va_list a;
103 int rc;
104
105 for (;;)
106 {
107 rem = buffer->buffer_size - buffer->content_size;
108 va_copy(a, args);
109 rc = vsnprintf(&buffer->buffer[buffer->content_size], rem, format, a);
110 va_end(a);
111 if (rc >= 0 && (unsigned int)rc < rem)
112 {
113 buffer->content_size += rc;
114 return 0;
115 }
116
118 return -1;
119 }
120}
#define vsnprintf
Definition: acwin.h:108
#define va_copy(d, s)
Definition: stdarg.h:29
#define va_end(v)
Definition: stdarg.h:28
char * va_list
Definition: vadefs.h:50
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204
#define a
Definition: ke_i.h:78
static bool vkd3d_string_buffer_resize(struct vkd3d_string_buffer *buffer, int rc)

Referenced by hlsl_fixme(), hlsl_sprintf_alloc(), VKD3D_PRINTF_FUNC(), vkd3d_shader_verror(), vkd3d_shader_vnote(), vkd3d_shader_vwarning(), and vkd3d_string_buffer_printf().

◆ vkd3d_write_mask_from_component_count()

◆ vsir_dst_param_init()

◆ vsir_instruction_init()

void vsir_instruction_init ( struct vkd3d_shader_instruction *  ins,
const struct vkd3d_shader_location *  location,
enum vkd3d_shader_opcode  opcode 
)

Definition at line 321 of file ir.c.

323{
324 memset(ins, 0, sizeof(*ins));
325 ins->location = *location;
326 ins->opcode = opcode;
327}
#define location(file, line)
Definition: kmtest.h:18
struct vkd3d_shader_location location

Referenced by cf_flattener_emit_branch(), cf_flattener_iterate_instruction_array(), control_point_normaliser_emit_hs_input(), instruction_init_with_resource(), shader_sm1_read_instruction(), shader_sm4_read_instruction(), sm6_parser_add_instruction(), sm6_parser_declare_indexable_temp(), sm6_parser_emit_atomicrmw(), sm6_parser_emit_binop(), sm6_parser_emit_cast(), sm6_parser_emit_cmp2(), sm6_parser_emit_cmpxchg(), sm6_parser_emit_dx_atomic_binop(), sm6_parser_emit_dx_barrier(), sm6_parser_emit_dx_binary(), sm6_parser_emit_dx_buffer_store(), sm6_parser_emit_dx_buffer_update_counter(), sm6_parser_emit_dx_calculate_lod(), sm6_parser_emit_dx_cbuffer_load(), sm6_parser_emit_dx_compute_builtin(), sm6_parser_emit_dx_discard(), sm6_parser_emit_dx_domain_location(), sm6_parser_emit_dx_dot(), sm6_parser_emit_dx_fabs(), sm6_parser_emit_dx_get_dimensions(), sm6_parser_emit_dx_get_sample_count(), sm6_parser_emit_dx_get_sample_pos(), sm6_parser_emit_dx_input_register_mov(), sm6_parser_emit_dx_load_input(), sm6_parser_emit_dx_ma(), sm6_parser_emit_dx_make_double(), sm6_parser_emit_dx_quad_op(), sm6_parser_emit_dx_raw_buffer_store(), sm6_parser_emit_dx_sample_index(), sm6_parser_emit_dx_saturate(), sm6_parser_emit_dx_sincos(), sm6_parser_emit_dx_split_double(), sm6_parser_emit_dx_store_output(), sm6_parser_emit_dx_stream(), sm6_parser_emit_dx_tertiary(), sm6_parser_emit_dx_texture_store(), sm6_parser_emit_dx_unary(), sm6_parser_emit_dx_void(), sm6_parser_emit_dx_wave_active_ballot(), sm6_parser_emit_dx_wave_active_bit(), sm6_parser_emit_dx_wave_op(), sm6_parser_emit_extractval(), sm6_parser_emit_load(), sm6_parser_emit_reg_composite_construct(), sm6_parser_emit_store(), sm6_parser_emit_vselect(), sm6_parser_resources_load_cbv(), sm6_parser_resources_load_sampler(), sm6_parser_resources_load_srv(), sm6_parser_resources_load_uav(), vkd3d_shader_instruction_make_nop(), vsir_cfg_structure_list_emit_loop(), vsir_cfg_structure_list_emit_selection(), vsir_instruction_init_label(), vsir_instruction_init_with_params(), vsir_program_ensure_ret(), and vsir_program_flatten_hull_shader_phases().

◆ vsir_instruction_init_with_params()

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 
)

Definition at line 329 of file ir.c.

332{
333 vsir_instruction_init(ins, location, opcode);
334 ins->dst_count = dst_count;
335 ins->src_count = src_count;
336
338 {
339 ERR("Failed to allocate %u destination parameters.\n", dst_count);
340 return false;
341 }
342
344 {
345 ERR("Failed to allocate %u source parameters.\n", src_count);
346 return false;
347 }
348
349 memset(ins->dst, 0, sizeof(*ins->dst) * ins->dst_count);
350 memset(ins->src, 0, sizeof(*ins->src) * ins->src_count);
351 return true;
352}
void vsir_instruction_init(struct vkd3d_shader_instruction *ins, const struct vkd3d_shader_location *location, enum vkd3d_shader_opcode opcode)
Definition: ir.c:321
static struct vkd3d_shader_dst_param * vsir_program_get_dst_params(struct vsir_program *program, unsigned int count)
static struct vkd3d_shader_src_param * vsir_program_get_src_params(struct vsir_program *program, unsigned int count)

Referenced by generate_vsir_add_program_instruction(), insert_alpha_test_before_ret(), insert_clip_planes_before_ret(), insert_point_size_before_ret(), sm1_generate_vsir_constant_defs(), sm1_generate_vsir_sampler_dcls(), vsir_cfg_structure_list_emit_jump(), vsir_cfg_structure_list_emit_loop(), vsir_cfg_structure_list_emit_selection(), vsir_program_ensure_diffuse(), vsir_program_insert_point_coord(), vsir_program_insert_point_size_clamp(), vsir_program_lower_ifc(), vsir_program_lower_precise_mad(), vsir_program_lower_sm1_sincos(), vsir_program_lower_switch_to_selection_ladder(), vsir_program_lower_texkill(), vsir_program_materialise_phi_ssas_to_temps(), and vsir_program_remap_output_signature().

◆ vsir_program_cleanup()

void vsir_program_cleanup ( struct vsir_program *  program)

Definition at line 105 of file ir.c.

106{
107 size_t i;
108
109 if (program->free_parameters)
110 vkd3d_free((void *)program->parameters);
111 for (i = 0; i < program->block_name_count; ++i)
112 vkd3d_free((void *)program->block_names[i]);
113 vkd3d_free(program->block_names);
115 shader_signature_cleanup(&program->input_signature);
116 shader_signature_cleanup(&program->output_signature);
117 shader_signature_cleanup(&program->patch_constant_signature);
118}
void shader_instruction_array_destroy(struct vkd3d_shader_instruction_array *instructions)

Referenced by d3dbc_parse(), hlsl_compile_shader(), hlsl_emit_bytecode(), sm6_parser_init(), tpf_parse(), vkd3d_shader_compile(), vkd3d_shader_scan(), and vsir_parse().

◆ vsir_program_compile()

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 
)

Definition at line 1640 of file vkd3d_shader_main.c.

1643{
1644 struct vkd3d_shader_scan_combined_resource_sampler_info combined_sampler_info;
1645 struct vkd3d_shader_scan_descriptor_info1 scan_descriptor_info;
1646 struct vkd3d_shader_compile_info scan_info;
1647 int ret;
1648
1649 scan_info = *compile_info;
1650
1651 switch (compile_info->target_type)
1652 {
1655 break;
1656
1659 combined_sampler_info.next = scan_info.next;
1660 scan_info.next = &combined_sampler_info;
1661 if ((ret = vsir_program_scan(program, &scan_info, message_context, &scan_descriptor_info)) < 0)
1662 return ret;
1663 ret = glsl_compile(program, config_flags, &scan_descriptor_info,
1664 &combined_sampler_info, compile_info, out, message_context);
1666 vkd3d_shader_free_scan_descriptor_info1(&scan_descriptor_info);
1667 break;
1668
1671 if ((ret = vsir_program_scan(program, &scan_info, message_context, &scan_descriptor_info)) < 0)
1672 return ret;
1673 ret = spirv_compile(program, config_flags, &scan_descriptor_info,
1674 compile_info, out, message_context);
1675 vkd3d_shader_free_scan_descriptor_info1(&scan_descriptor_info);
1676 break;
1677
1679 if ((ret = vsir_program_scan(program, &scan_info, message_context, &scan_descriptor_info)) < 0)
1680 return ret;
1681 ret = msl_compile(program, config_flags, &scan_descriptor_info, compile_info, out, message_context);
1682 vkd3d_shader_free_scan_descriptor_info1(&scan_descriptor_info);
1683 break;
1684
1685 default:
1686 /* Validation should prevent us from reaching this. */
1688 }
1689
1690 return ret;
1691}
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)
Definition: d3d_asm.c:2370
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)
Definition: glsl.c:2467
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)
Definition: msl.c:879
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)
Definition: spirv.c:10835
#define vkd3d_unreachable()
Definition: vkd3d_common.h:119
@ VKD3D_SHADER_STRUCTURE_TYPE_SCAN_COMBINED_RESOURCE_SAMPLER_INFO
Definition: vkd3d_shader.h:109
@ VKD3D_SHADER_TARGET_GLSL
@ VKD3D_SHADER_TARGET_MSL
static int vsir_program_scan(struct vsir_program *program, const struct vkd3d_shader_compile_info *compile_info, struct vkd3d_shader_message_context *message_context, struct vkd3d_shader_scan_descriptor_info1 *descriptor_info1)
void vkd3d_shader_free_scan_combined_resource_sampler_info(struct vkd3d_shader_scan_combined_resource_sampler_info *info)
static void vkd3d_shader_free_scan_descriptor_info1(struct vkd3d_shader_scan_descriptor_info1 *scan_descriptor_info)

Referenced by hlsl_compile_shader(), and vkd3d_shader_compile().

◆ vsir_program_create_outpointid_param()

struct vkd3d_shader_src_param * vsir_program_create_outpointid_param ( struct vsir_program *  program)

Definition at line 1336 of file ir.c.

1337{
1338 struct vkd3d_shader_instruction_array *instructions = &program->instructions;
1339 struct vkd3d_shader_src_param *rel_addr;
1340
1341 if (instructions->outpointid_param)
1342 return instructions->outpointid_param;
1343
1344 if (!(rel_addr = shader_src_param_allocator_get(&instructions->src_params, 1)))
1345 return NULL;
1346
1348 rel_addr->swizzle = 0;
1349 rel_addr->modifiers = 0;
1350
1351 instructions->outpointid_param = rel_addr;
1352 return rel_addr;
1353}
struct vkd3d_shader_src_param * outpointid_param
struct vkd3d_shader_register reg
enum vkd3d_shader_src_modifier modifiers
static struct vkd3d_shader_src_param * shader_src_param_allocator_get(struct vkd3d_shader_param_allocator *allocator, unsigned int count)

Referenced by instruction_array_normalise_hull_shader_control_point_io(), and sm6_parser_init_signature().

◆ vsir_program_get_dst_params()

static struct vkd3d_shader_dst_param * vsir_program_get_dst_params ( struct vsir_program *  program,
unsigned int  count 
)
inlinestatic

Definition at line 1460 of file vkd3d_shader_private.h.

1462{
1463 return shader_dst_param_allocator_get(&program->instructions.dst_params, count);
1464}
static struct vkd3d_shader_dst_param * shader_dst_param_allocator_get(struct vkd3d_shader_param_allocator *allocator, unsigned int count)

Referenced by instruction_dst_params_alloc(), shader_sm1_read_instruction(), shader_sm4_read_instruction(), sm6_parser_init(), and vsir_instruction_init_with_params().

◆ vsir_program_get_parameter()

const struct vkd3d_shader_parameter1 * vsir_program_get_parameter ( const struct vsir_program *  program,
enum vkd3d_shader_parameter_name  name 
)

Definition at line 120 of file ir.c.

122{
123 for (unsigned int i = 0; i < program->parameter_count; ++i)
124 {
125 if (program->parameters[i].name == name)
126 return &program->parameters[i];
127 }
128
129 return NULL;
130}

Referenced by spirv_compiler_emit_shader_parameter(), use_flat_interpolation(), and vsir_program_insert_alpha_test().

◆ vsir_program_get_src_params()

◆ vsir_program_init()

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 
)

Definition at line 76 of file ir.c.

79{
80 memset(program, 0, sizeof(*program));
81
82 if (compile_info)
83 {
84 const struct vkd3d_shader_parameter_info *parameter_info;
85
86 if ((parameter_info = vkd3d_find_struct(compile_info->next, PARAMETER_INFO)))
87 {
88 program->parameter_count = parameter_info->parameter_count;
89 program->parameters = parameter_info->parameters;
90 }
91 else
92 {
93 if (convert_parameter_info(compile_info, &program->parameter_count, &program->parameters) < 0)
94 return false;
95 program->free_parameters = true;
96 }
97 }
98
99 program->shader_version = *version;
100 program->cf_type = cf_type;
101 program->normalisation_level = normalisation_level;
102 return shader_instruction_array_init(&program->instructions, reserve);
103}
static int convert_parameter_info(const struct vkd3d_shader_compile_info *compile_info, unsigned int *ret_count, const struct vkd3d_shader_parameter1 **ret_parameters)
Definition: ir.c:31
const struct vkd3d_shader_parameter1 * parameters
bool shader_instruction_array_init(struct vkd3d_shader_instruction_array *instructions, unsigned int reserve)

Referenced by shader_sm1_init(), shader_sm4_init(), sm1_generate_vsir(), sm4_generate_vsir(), and sm6_parser_init().

◆ vsir_program_trace()

void vsir_program_trace ( const struct vsir_program *  program)

Definition at line 2550 of file d3d_asm.c.

2551{
2553 struct vkd3d_shader_code code;
2554 const char *p, *q, *end;
2555
2556 trace_signature(&program->input_signature, "Input");
2557 trace_signature(&program->output_signature, "Output");
2558 trace_signature(&program->patch_constant_signature, "Patch-constant");
2559
2561 return;
2562
2563 end = (const char *)code.code + code.size;
2564 for (p = code.code; p < end; p = q)
2565 {
2566 if (!(q = memchr(p, '\n', end - p)))
2567 q = end;
2568 else
2569 ++q;
2570 TRACE(" %.*s", (int)(q - p), p);
2571 }
2572
2574}
static void trace_signature(const struct shader_signature *signature, const char *signature_type)
Definition: d3d_asm.c:2513
for(i=0;i< sizeof(testsuite)/sizeof(testsuite[0]);++i) ok(call_test(testsuite[i].func)

Referenced by vsir_parse(), vsir_program_scan(), and vsir_program_transform().

◆ vsir_program_transform()

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 
)

Definition at line 8324 of file ir.c.

8326{
8328 {
8329 .result = VKD3D_OK,
8330 .program = program,
8331 .config_flags = config_flags,
8332 .compile_info = compile_info,
8333 .message_context = message_context,
8334 };
8335
8337
8338 if (program->shader_version.major >= 6)
8339 {
8345 }
8346 else
8347 {
8349
8350 if (program->shader_version.major <= 2)
8352
8353 if (program->shader_version.type != VKD3D_SHADER_TYPE_PIXEL)
8355
8356 if (program->shader_version.type == VKD3D_SHADER_TYPE_HULL)
8358
8363
8364 if (compile_info->target_type != VKD3D_SHADER_TARGET_GLSL
8365 && compile_info->target_type != VKD3D_SHADER_TARGET_MSL)
8367 }
8368
8375
8376 if (TRACE_ON())
8378
8379 return ctx.result;
8380}
void vsir_program_trace(const struct vsir_program *program)
Definition: d3d_asm.c:2550
static enum vkd3d_result vsir_program_materialize_undominated_ssas_to_temps(struct vsir_program *program, struct vsir_transformation_context *ctx)
Definition: ir.c:5805
static enum vkd3d_result instruction_array_normalise_hull_shader_control_point_io(struct vsir_program *program, struct vsir_transformation_context *ctx)
Definition: ir.c:1434
static enum vkd3d_result vsir_program_apply_flat_interpolation(struct vsir_program *program, struct vsir_transformation_context *ctx)
Definition: ir.c:5877
static enum vkd3d_result vsir_program_insert_point_size_clamp(struct vsir_program *program, struct vsir_transformation_context *ctx)
Definition: ir.c:6344
static enum vkd3d_result vsir_program_materialise_phi_ssas_to_temps(struct vsir_program *program, struct vsir_transformation_context *ctx)
Definition: ir.c:3398
static enum vkd3d_result vsir_program_flatten_control_flow_constructs(struct vsir_program *program, struct vsir_transformation_context *ctx)
Definition: ir.c:3129
static enum vkd3d_result vsir_program_ensure_ret(struct vsir_program *program, struct vsir_transformation_context *ctx)
Definition: ir.c:836
static enum vkd3d_result vsir_program_insert_alpha_test(struct vsir_program *program, struct vsir_transformation_context *ctx)
Definition: ir.c:5999
static enum vkd3d_result vsir_program_ensure_diffuse(struct vsir_program *program, struct vsir_transformation_context *ctx)
Definition: ir.c:888
static enum vkd3d_result vsir_program_insert_point_coord(struct vsir_program *program, struct vsir_transformation_context *ctx)
Definition: ir.c:6519
static enum vkd3d_result vsir_program_lower_instructions(struct vsir_program *program, struct vsir_transformation_context *ctx)
Definition: ir.c:712
static enum vkd3d_result vsir_program_normalise_flat_constants(struct vsir_program *program, struct vsir_transformation_context *ctx)
Definition: ir.c:2365
static enum vkd3d_result vsir_program_remap_output_signature(struct vsir_program *program, struct vsir_transformation_context *ctx)
Definition: ir.c:1007
#define vsir_transform(ctx, step)
Definition: ir.c:8277
static enum vkd3d_result vsir_program_lower_switch_to_selection_ladder(struct vsir_program *program, struct vsir_transformation_context *ctx)
Definition: ir.c:3205
static enum vkd3d_result vsir_program_insert_point_size(struct vsir_program *program, struct vsir_transformation_context *ctx)
Definition: ir.c:6293
static enum vkd3d_result vsir_program_remove_dead_code(struct vsir_program *program, struct vsir_transformation_context *ctx)
Definition: ir.c:2405
static enum vkd3d_result vsir_program_structurize(struct vsir_program *program, struct vsir_transformation_context *ctx)
Definition: ir.c:5621
static enum vkd3d_result vsir_program_normalise_io_registers(struct vsir_program *program, struct vsir_transformation_context *ctx)
Definition: ir.c:2225
static enum vkd3d_result vsir_program_flatten_hull_shader_phases(struct vsir_program *program, struct vsir_transformation_context *ctx)
Definition: ir.c:1295
static enum vkd3d_result vsir_program_insert_clip_planes(struct vsir_program *program, struct vsir_transformation_context *ctx)
Definition: ir.c:6132
struct vkd3d_shader_message_context * message_context
Definition: ir.c:28
uint64_t config_flags
Definition: ir.c:26
const struct vkd3d_shader_compile_info * compile_info
Definition: ir.c:27

Referenced by glsl_compile(), msl_compile(), and spirv_compiler_generate_spirv().

◆ vsir_program_transform_early()

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 
)

Definition at line 8305 of file ir.c.

8307{
8309 {
8310 .result = VKD3D_OK,
8311 .program = program,
8312 .config_flags = config_flags,
8313 .compile_info = compile_info,
8314 .message_context = message_context,
8315 };
8316
8317 /* For vsir_program_ensure_diffuse(). */
8318 if (program->shader_version.major <= 2)
8320
8321 return ctx.result;
8322}
static enum vkd3d_result vsir_program_add_diffuse_output(struct vsir_program *program, struct vsir_transformation_context *ctx)
Definition: ir.c:850

Referenced by vsir_parse().

◆ vsir_program_validate()

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 
)

Definition at line 8169 of file ir.c.

8171{
8172 struct validation_context ctx =
8173 {
8174 .message_context = message_context,
8175 .program = program,
8176 .null_location = {.source_name = source_name},
8177 .status = VKD3D_OK,
8178 .phase = VKD3DSIH_INVALID,
8179 .invalid_instruction_idx = true,
8180 };
8181 unsigned int i;
8182
8183 if (!(config_flags & VKD3D_SHADER_CONFIG_FLAG_FORCE_VALIDATION))
8184 return VKD3D_OK;
8185
8186 switch (program->shader_version.type)
8187 {
8190 break;
8191
8192 default:
8193 if (program->patch_constant_signature.element_count != 0)
8195 "Patch constant signature is only valid for hull and domain shaders.");
8196 }
8197
8198 switch (program->shader_version.type)
8199 {
8201 break;
8202
8205 if (program->input_control_point_count == 0)
8207 "Invalid zero input control point count.");
8208 break;
8209
8210 default:
8211 if (program->input_control_point_count != 0)
8213 "Invalid input control point count %u.",
8214 program->input_control_point_count);
8215 }
8216
8217 switch (program->shader_version.type)
8218 {
8220 break;
8221
8222 default:
8223 if (program->output_control_point_count != 0)
8225 "Invalid output control point count %u.",
8226 program->output_control_point_count);
8227 }
8228
8232
8233 if (!(ctx.temps = vkd3d_calloc(ctx.program->temp_count, sizeof(*ctx.temps))))
8234 goto fail;
8235
8236 if (!(ctx.ssas = vkd3d_calloc(ctx.program->ssa_count, sizeof(*ctx.ssas))))
8237 goto fail;
8238
8239 ctx.invalid_instruction_idx = false;
8240
8241 for (ctx.instruction_idx = 0; ctx.instruction_idx < program->instructions.count
8242 && ctx.status != VKD3D_ERROR_OUT_OF_MEMORY; ++ctx.instruction_idx)
8244
8245 ctx.invalid_instruction_idx = true;
8246
8247 if (ctx.depth != 0)
8248 validator_error(&ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_CONTROL_FLOW, "%zu nested blocks were not closed.", ctx.depth);
8249
8250 if (ctx.inside_block)
8251 validator_error(&ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_CONTROL_FLOW, "Last block was not closed.");
8252
8253 for (i = 0; i < ctx.program->ssa_count; ++i)
8254 {
8255 struct validation_context_ssa_data *data = &ctx.ssas[i];
8256
8257 if ((data->write_mask | data->read_mask) != data->write_mask)
8259 "SSA register %u has invalid read mask %#x, which is not a subset of the write mask %#x "
8260 "at the point of definition.", i, data->read_mask, data->write_mask);
8261 }
8262
8263 vkd3d_free(ctx.blocks);
8264 vkd3d_free(ctx.temps);
8265 vkd3d_free(ctx.ssas);
8266
8267 return ctx.status;
8268
8269fail:
8270 vkd3d_free(ctx.blocks);
8271 vkd3d_free(ctx.temps);
8272 vkd3d_free(ctx.ssas);
8273
8275}
@ SIGNATURE_TYPE_OUTPUT
Definition: ir.c:7426
@ SIGNATURE_TYPE_INPUT
Definition: ir.c:7425
@ SIGNATURE_TYPE_PATCH_CONSTANT
Definition: ir.c:7427
static void vsir_validate_signature(struct validation_context *ctx, const struct shader_signature *signature, enum vsir_signature_type signature_type)
Definition: ir.c:7634
static void vsir_validate_instruction(struct validation_context *ctx)
Definition: ir.c:8091
struct vkd3d_shader_message_context * message_context
Definition: ir.c:6639
static void * vkd3d_calloc(size_t count, size_t size)
Definition: vkd3d_memory.h:43

Referenced by vsir_parse(), and vsir_transform_().

◆ vsir_register_init()

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 
)

Definition at line 164 of file ir.c.

166{
167 reg->type = reg_type;
169 reg->non_uniform = false;
170 reg->data_type = data_type;
171 reg->idx[0].offset = ~0u;
172 reg->idx[0].rel_addr = NULL;
173 reg->idx[0].is_in_bounds = false;
174 reg->idx[1].offset = ~0u;
175 reg->idx[1].rel_addr = NULL;
176 reg->idx[1].is_in_bounds = false;
177 reg->idx[2].offset = ~0u;
178 reg->idx[2].rel_addr = NULL;
179 reg->idx[2].is_in_bounds = false;
180 reg->idx_count = idx_count;
181 reg->dimension = VSIR_DIMENSION_SCALAR;
182 reg->alignment = 0;
183}

Referenced by dst_param_io_init(), generate_vsir_instr_swizzle(), init_resource_declaration(), register_init_with_id(), register_make_constant_uint(), shader_dst_param_io_init(), shader_instruction_eliminate_phase_instance_id(), shader_sm1_parse_dst_param(), shader_sm1_parse_src_param(), shader_sm4_read_param(), sm1_generate_vsir_constant_defs(), sm1_generate_vsir_init_dst_param_from_deref(), sm1_generate_vsir_init_src_param_from_deref(), sm1_generate_vsir_instr_constant(), sm1_generate_vsir_instr_expr_per_component_instr_op(), sm1_generate_vsir_instr_expr_sincos(), sm1_generate_vsir_instr_jump(), sm1_generate_vsir_instr_load(), sm1_generate_vsir_instr_resource_load(), sm1_generate_vsir_sampler_dcls(), sm4_generate_vsir_instr_dcl_semantic(), sm6_parser_constants_init(), sm6_parser_dcl_register_builtin(), sm6_parser_emit_binop(), sm6_parser_emit_dx_compute_builtin(), sm6_parser_emit_dx_create_handle(), sm6_parser_emit_dx_domain_location(), sm6_parser_emit_dx_get_sample_count(), sm6_parser_emit_dx_get_sample_pos(), sm6_parser_emit_dx_input_register_mov(), sm6_parser_emit_dx_sincos(), sm6_parser_emit_reg_composite_construct(), sm6_parser_emit_unhandled(), sm6_parser_resources_load_cbv(), sm6_parser_resources_load_sampler(), spirv_compiler_emit_cbv_declaration(), spirv_compiler_emit_dcl_immediate_constant_buffer(), spirv_compiler_emit_dcl_indexable_temp(), spirv_compiler_emit_default_control_point_phase(), spirv_compiler_emit_hull_shader_builtins(), spirv_compiler_emit_input(), spirv_compiler_emit_resource_declaration(), spirv_compiler_emit_sampler_declaration(), spirv_compiler_get_invocation_id(), vsir_dst_param_init(), vsir_program_create_outpointid_param(), vsir_program_lower_ifc(), vsir_program_lower_precise_mad(), vsir_program_lower_texkill(), vsir_src_from_hlsl_node(), and vsir_src_param_init().

◆ vsir_register_is_descriptor()

static bool vsir_register_is_descriptor ( const struct vkd3d_shader_register *  reg)
inlinestatic

Definition at line 965 of file vkd3d_shader_private.h.

966{
967 switch (reg->type)
968 {
969 case VKD3DSPR_SAMPLER:
972 case VKD3DSPR_UAV:
973 return true;
974
975 default:
976 return false;
977 }
978}

Referenced by shader_sm4_read_param(), and spirv_compiler_emit_dereference_register().

◆ vsir_register_is_label()

◆ vsir_signature_find_element_for_reg()

struct signature_element * vsir_signature_find_element_for_reg ( const struct shader_signature *  signature,
unsigned int  reg_idx,
unsigned int  write_mask 
)

Definition at line 1573 of file ir.c.

1575{
1576 unsigned int element_idx;
1577
1578 if (shader_signature_find_element_for_reg(signature, reg_idx, write_mask, &element_idx))
1579 return &signature->elements[element_idx];
1580
1581 return NULL;
1582}
static bool shader_signature_find_element_for_reg(const struct shader_signature *signature, unsigned int reg_idx, unsigned int write_mask, unsigned int *element_idx)
Definition: ir.c:1553

Referenced by io_normaliser_add_index_range(), remove_unread_output_components(), shader_sm4_read_dcl_index_range(), shader_sm4_read_dcl_input_ps(), and shader_sm4_read_dcl_input_ps_siv().

◆ vsir_signature_find_sysval()

bool vsir_signature_find_sysval ( const struct shader_signature *  signature,
enum vkd3d_shader_sysval_semantic  sysval,
unsigned int  semantic_index,
unsigned int *  element_index 
)

Definition at line 145 of file ir.c.

147{
148 const struct signature_element *e;
149 unsigned int i;
150
151 for (i = 0; i < signature->element_count; ++i)
152 {
153 e = &signature->elements[i];
154 if (e->sysval_semantic == sysval && e->semantic_index == semantic_index)
155 {
156 *element_index = i;
157 return true;
158 }
159 }
160
161 return false;
162}
#define e
Definition: ke_i.h:82

Referenced by sm6_parser_emit_dx_sample_index(), vsir_program_insert_alpha_test(), and vsir_program_insert_clip_planes().

◆ vsir_src_param_init()

◆ vsir_src_param_init_label()

void vsir_src_param_init_label ( struct vkd3d_shader_src_param *  param,
unsigned int  label_id 
)

Definition at line 204 of file ir.c.

205{
207 param->reg.dimension = VSIR_DIMENSION_NONE;
208 param->reg.idx[0].offset = label_id;
209}
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)
Definition: ir.c:190

Referenced by cf_flattener_emit_branch(), cf_flattener_iterate_instruction_array(), sm6_block_emit_phi(), sm6_block_emit_terminator(), sm6_parser_emit_label(), vsir_instruction_init_label(), and vsir_program_lower_switch_to_selection_ladder().

◆ vsir_swizzle_32_from_64()

static uint32_t vsir_swizzle_32_from_64 ( uint32_t  swizzle64)
inlinestatic

Definition at line 1851 of file vkd3d_shader_private.h.

1852{
1853 switch (swizzle64)
1854 {
1855 case VKD3D_SHADER_SWIZZLE(X, X, X, X):
1857
1858 case VKD3D_SHADER_SWIZZLE(X, Y, X, X):
1860
1861 case VKD3D_SHADER_SWIZZLE(Y, X, X, X):
1863
1864 case VKD3D_SHADER_SWIZZLE(Y, Y, X, X):
1866
1867 default:
1868 ERR("Invalid 64 bit swizzle: %#x.\n", swizzle64);
1869 return VKD3D_SHADER_SWIZZLE(X, Y, X, Y);
1870 }
1871}
return
Definition: dirsup.c:529
#define Z(I)
#define Y(I)
Definition: polytest.cpp:36
#define VKD3D_SHADER_SWIZZLE(x, y, z, w)

Referenced by shader_print_src_param(), spirv_compiler_emit_load_reg(), and spirv_compiler_emit_mov().

◆ vsir_swizzle_64_from_32()

static uint32_t vsir_swizzle_64_from_32 ( uint32_t  swizzle32)
inlinestatic

Definition at line 1829 of file vkd3d_shader_private.h.

1830{
1831 switch (swizzle32)
1832 {
1833 case VKD3D_SHADER_SWIZZLE(X, Y, X, Y):
1835
1836 case VKD3D_SHADER_SWIZZLE(X, Y, Z, W):
1838
1839 case VKD3D_SHADER_SWIZZLE(Z, W, X, Y):
1841
1842 case VKD3D_SHADER_SWIZZLE(Z, W, Z, W):
1844
1845 default:
1846 ERR("Invalid 32 bit swizzle when converting to 64 bit: %#x.\n", swizzle32);
1847 return VKD3D_SHADER_SWIZZLE(X, X, X, X);
1848 }
1849}

Referenced by shader_sm4_read_src_param(), and sm6_parser_emit_dx_cbuffer_load().

◆ vsir_swizzle_from_writemask()

static uint32_t vsir_swizzle_from_writemask ( unsigned int  writemask)
inlinestatic

Definition at line 1894 of file vkd3d_shader_private.h.

1895{
1896 static const unsigned int swizzles[16] =
1897 {
1898 0,
1914 };
1915
1916 return swizzles[writemask & 0xf];
1917}

Referenced by sm1_generate_vsir_instr_expr_per_component_instr_op(), and vsir_program_lower_precise_mad().

◆ vsir_swizzle_get_component()

◆ vsir_sysval_semantic_is_clip_cull()

static bool vsir_sysval_semantic_is_clip_cull ( enum vkd3d_shader_sysval_semantic  sysval_semantic)
inlinestatic

Definition at line 1115 of file vkd3d_shader_private.h.

1116{
1117 return sysval_semantic == VKD3D_SHADER_SV_CLIP_DISTANCE || sysval_semantic == VKD3D_SHADER_SV_CULL_DISTANCE;
1118}

Referenced by shader_sm4_read_dcl_index_range(), and spirv_compiler_emit_input().

◆ vsir_sysval_semantic_is_tess_factor()

◆ vsir_write_mask_32_from_64()

static uint32_t vsir_write_mask_32_from_64 ( uint32_t  write_mask64)
inlinestatic

Definition at line 1810 of file vkd3d_shader_private.h.

1811{
1812 switch (write_mask64)
1813 {
1816
1819
1822
1823 default:
1824 ERR("Invalid 64 bit writemask: %#x.\n", write_mask64);
1825 return VKD3DSP_WRITEMASK_0;
1826 }
1827}
#define VKD3DSP_WRITEMASK_3
#define VKD3DSP_WRITEMASK_1
#define VKD3DSP_WRITEMASK_2

Referenced by shader_print_dst_param(), spirv_compiler_emit_load_reg(), spirv_compiler_emit_mov(), and spirv_compiler_emit_store_reg().

◆ vsir_write_mask_64_from_32()

static uint32_t vsir_write_mask_64_from_32 ( uint32_t  write_mask32)
inlinestatic

Definition at line 1791 of file vkd3d_shader_private.h.

1792{
1793 switch (write_mask32)
1794 {
1796 return VKD3DSP_WRITEMASK_0;
1797
1799 return VKD3DSP_WRITEMASK_1;
1800
1803
1804 default:
1805 ERR("Invalid 32 bit writemask when converting to 64 bit: %#x.\n", write_mask32);
1806 return VKD3DSP_WRITEMASK_0;
1807 }
1808}

Referenced by shader_sm4_read_dst_param(), and spirv_compiler_emit_mov().

◆ vsir_write_mask_component_count()

static unsigned int vsir_write_mask_component_count ( uint32_t  write_mask)
inlinestatic

Definition at line 1778 of file vkd3d_shader_private.h.

1779{
1780 unsigned int count = vkd3d_popcount(write_mask & VKD3DSP_WRITEMASK_ALL);
1782 return count;
1783}
static unsigned int vkd3d_popcount(unsigned int v)
Definition: vkd3d_common.h:280
#define VKD3DSP_WRITEMASK_ALL

Referenced by range_map_set_register_range(), shader_glsl_cast(), shader_glsl_dot(), shader_glsl_movc(), shader_glsl_relop(), signature_element_range_expand_mask(), sm6_parser_emit_dx_buffer_store(), sm6_parser_emit_dx_raw_buffer_load(), sm6_parser_emit_dx_raw_buffer_store(), sm6_parser_emit_dx_store_output(), sm6_parser_emit_dx_texture_store(), spirv_compiler_emit_alu_instruction(), spirv_compiler_emit_comparison_instruction(), spirv_compiler_emit_default_control_point_phase(), spirv_compiler_emit_dereference_register(), spirv_compiler_emit_dot(), spirv_compiler_emit_eval_attrib(), spirv_compiler_emit_ext_glsl_instruction(), spirv_compiler_emit_float_comparison_instruction(), spirv_compiler_emit_ftoi(), spirv_compiler_emit_ftou(), spirv_compiler_emit_imad(), spirv_compiler_emit_input(), spirv_compiler_emit_int_div(), spirv_compiler_emit_load_constant(), spirv_compiler_emit_load_constant64(), spirv_compiler_emit_load_reg(), spirv_compiler_emit_load_scalar(), spirv_compiler_emit_load_undef(), spirv_compiler_emit_mov(), spirv_compiler_emit_movc(), spirv_compiler_emit_output(), spirv_compiler_emit_quad_read_across(), spirv_compiler_emit_quad_read_lane_at(), spirv_compiler_emit_rcp(), spirv_compiler_emit_sat(), spirv_compiler_emit_store(), spirv_compiler_emit_store_dst_components(), spirv_compiler_emit_store_dst_scalar(), spirv_compiler_emit_store_reg(), spirv_compiler_emit_store_scalar(), spirv_compiler_emit_store_shader_output(), spirv_compiler_emit_store_tgsm(), spirv_compiler_emit_store_uav_raw_structured(), spirv_compiler_emit_swapc(), spirv_compiler_emit_swizzle(), spirv_compiler_emit_wave_alu_op(), spirv_compiler_emit_wave_read_lane_at(), spirv_compiler_emit_wave_read_lane_first(), spirv_compiler_get_type_id_for_reg(), and vsir_validate_signature_element().

◆ vsir_write_mask_get_component_idx()