20#define LIBVKD3D_SHADER_SOURCE
26#define WINED3D_SM4_INSTRUCTION_MODIFIER (0x1u << 31)
28#define WINED3D_SM4_MODIFIER_MASK 0x3fu
30#define WINED3D_SM5_MODIFIER_DATA_TYPE_SHIFT 6
31#define WINED3D_SM5_MODIFIER_DATA_TYPE_MASK (0xffffu << WINED3D_SM5_MODIFIER_DATA_TYPE_SHIFT)
33#define WINED3D_SM5_MODIFIER_RESOURCE_TYPE_SHIFT 6
34#define WINED3D_SM5_MODIFIER_RESOURCE_TYPE_MASK (0xfu << WINED3D_SM5_MODIFIER_RESOURCE_TYPE_SHIFT)
36#define WINED3D_SM4_AOFFIMMI_U_SHIFT 9
37#define WINED3D_SM4_AOFFIMMI_U_MASK (0xfu << WINED3D_SM4_AOFFIMMI_U_SHIFT)
38#define WINED3D_SM4_AOFFIMMI_V_SHIFT 13
39#define WINED3D_SM4_AOFFIMMI_V_MASK (0xfu << WINED3D_SM4_AOFFIMMI_V_SHIFT)
40#define WINED3D_SM4_AOFFIMMI_W_SHIFT 17
41#define WINED3D_SM4_AOFFIMMI_W_MASK (0xfu << WINED3D_SM4_AOFFIMMI_W_SHIFT)
43#define WINED3D_SM4_INSTRUCTION_LENGTH_SHIFT 24
44#define WINED3D_SM4_INSTRUCTION_LENGTH_MASK (0x1fu << WINED3D_SM4_INSTRUCTION_LENGTH_SHIFT)
46#define WINED3D_SM4_INSTRUCTION_FLAGS_SHIFT 11
47#define WINED3D_SM4_INSTRUCTION_FLAGS_MASK (0x7u << WINED3D_SM4_INSTRUCTION_FLAGS_SHIFT)
49#define WINED3D_SM4_RESOURCE_TYPE_SHIFT 11
50#define WINED3D_SM4_RESOURCE_TYPE_MASK (0xfu << WINED3D_SM4_RESOURCE_TYPE_SHIFT)
52#define WINED3D_SM4_RESOURCE_SAMPLE_COUNT_SHIFT 16
53#define WINED3D_SM4_RESOURCE_SAMPLE_COUNT_MASK (0xfu << WINED3D_SM4_RESOURCE_SAMPLE_COUNT_SHIFT)
55#define WINED3D_SM4_PRIMITIVE_TYPE_SHIFT 11
56#define WINED3D_SM4_PRIMITIVE_TYPE_MASK (0x3fu << WINED3D_SM4_PRIMITIVE_TYPE_SHIFT)
58#define WINED3D_SM4_INDEX_TYPE_SHIFT 11
59#define WINED3D_SM4_INDEX_TYPE_MASK (0x1u << WINED3D_SM4_INDEX_TYPE_SHIFT)
61#define WINED3D_SM4_SAMPLER_MODE_SHIFT 11
62#define WINED3D_SM4_SAMPLER_MODE_MASK (0xfu << WINED3D_SM4_SAMPLER_MODE_SHIFT)
64#define WINED3D_SM4_SHADER_DATA_TYPE_SHIFT 11
65#define WINED3D_SM4_SHADER_DATA_TYPE_MASK (0xfu << WINED3D_SM4_SHADER_DATA_TYPE_SHIFT)
67#define WINED3D_SM4_INTERPOLATION_MODE_SHIFT 11
68#define WINED3D_SM4_INTERPOLATION_MODE_MASK (0xfu << WINED3D_SM4_INTERPOLATION_MODE_SHIFT)
70#define WINED3D_SM4_GLOBAL_FLAGS_SHIFT 11
71#define WINED3D_SM4_GLOBAL_FLAGS_MASK (0xffu << WINED3D_SM4_GLOBAL_FLAGS_SHIFT)
73#define WINED3D_SM5_PRECISE_SHIFT 19
74#define WINED3D_SM5_PRECISE_MASK (0xfu << WINED3D_SM5_PRECISE_SHIFT)
76#define WINED3D_SM5_CONTROL_POINT_COUNT_SHIFT 11
77#define WINED3D_SM5_CONTROL_POINT_COUNT_MASK (0xffu << WINED3D_SM5_CONTROL_POINT_COUNT_SHIFT)
79#define WINED3D_SM5_FP_ARRAY_SIZE_SHIFT 16
80#define WINED3D_SM5_FP_TABLE_COUNT_MASK 0xffffu
82#define WINED3D_SM5_UAV_FLAGS_SHIFT 15
83#define WINED3D_SM5_UAV_FLAGS_MASK (0x1ffu << WINED3D_SM5_UAV_FLAGS_SHIFT)
85#define WINED3D_SM5_SYNC_FLAGS_SHIFT 11
86#define WINED3D_SM5_SYNC_FLAGS_MASK (0xffu << WINED3D_SM5_SYNC_FLAGS_SHIFT)
88#define WINED3D_SM5_TESSELLATOR_SHIFT 11
89#define WINED3D_SM5_TESSELLATOR_MASK (0xfu << WINED3D_SM5_TESSELLATOR_SHIFT)
91#define WINED3D_SM4_OPCODE_MASK 0xff
93#define WINED3D_SM4_REGISTER_MODIFIER (0x1u << 31)
95#define WINED3D_SM4_ADDRESSING_SHIFT1 25
96#define WINED3D_SM4_ADDRESSING_MASK1 (0x3u << WINED3D_SM4_ADDRESSING_SHIFT1)
98#define WINED3D_SM4_ADDRESSING_SHIFT0 22
99#define WINED3D_SM4_ADDRESSING_MASK0 (0x3u << WINED3D_SM4_ADDRESSING_SHIFT0)
101#define WINED3D_SM4_REGISTER_ORDER_SHIFT 20
102#define WINED3D_SM4_REGISTER_ORDER_MASK (0x3u << WINED3D_SM4_REGISTER_ORDER_SHIFT)
104#define WINED3D_SM4_REGISTER_TYPE_SHIFT 12
105#define WINED3D_SM4_REGISTER_TYPE_MASK (0xffu << WINED3D_SM4_REGISTER_TYPE_SHIFT)
107#define WINED3D_SM4_SWIZZLE_TYPE_SHIFT 2
108#define WINED3D_SM4_SWIZZLE_TYPE_MASK (0x3u << WINED3D_SM4_SWIZZLE_TYPE_SHIFT)
110#define WINED3D_SM4_DIMENSION_SHIFT 0
111#define WINED3D_SM4_DIMENSION_MASK (0x3u << WINED3D_SM4_DIMENSION_SHIFT)
113#define WINED3D_SM4_WRITEMASK_SHIFT 4
114#define WINED3D_SM4_WRITEMASK_MASK (0xfu << WINED3D_SM4_WRITEMASK_SHIFT)
116#define WINED3D_SM4_SWIZZLE_SHIFT 4
117#define WINED3D_SM4_SWIZZLE_MASK (0xffu << WINED3D_SM4_SWIZZLE_SHIFT)
119#define WINED3D_SM4_VERSION_MAJOR(version) (((version) >> 4) & 0xf)
120#define WINED3D_SM4_VERSION_MINOR(version) (((version) >> 0) & 0xf)
122#define WINED3D_SM4_ADDRESSING_RELATIVE 0x2
123#define WINED3D_SM4_ADDRESSING_OFFSET 0x1
125#define WINED3D_SM4_INSTRUCTION_FLAG_SATURATE 0x4
127#define WINED3D_SM4_CONDITIONAL_NZ (0x1u << 18)
543 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
552 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
556 unsigned int icb_size;
561 FIXME(
"Ignoring shader data type %#x.\n",
type);
567 icb_size = token_count - 1;
570 FIXME(
"Unexpected immediate constant buffer size %u.\n", icb_size);
575 priv->
icb.vec4_count = icb_size / 4;
576 memcpy(priv->
icb.data, tokens,
sizeof(*tokens) * icb_size);
581 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
592 FIXME(
"Unhandled resource type %#x.\n", resource_type);
629 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
638 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
643 FIXME(
"Unhandled sampler mode %#x.\n", ins->
flags);
648 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
657 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
669 FIXME(
"Unhandled output primitive type %#x.\n", primitive_type);
673 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
694 FIXME(
"Unhandled input primitive type %#x.\n", primitive_type);
698 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
705 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
712 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
721 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
729 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
739 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
748 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
755 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
758 priv->
src_param[0].reg.u.fp_body_idx = *tokens++;
763 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
770 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
774 FIXME(
"Ignoring set of function bodies (count %lu).\n", *tokens);
778 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
785 FIXME(
"Ignoring set of function tables (count %u).\n", ins->
declaration.
fp.table_count);
789 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
797 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
805 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
813 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
821 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
828 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
837 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
845 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
857 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
867 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
879 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
890 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
897 DWORD opcode,
DWORD opcode_token,
const DWORD *tokens,
unsigned int token_count,
1211 unsigned int reg_idx =
reg->idx[0].offset;
1215 ERR(
"Invalid output index %u.\n", reg_idx);
1248 ERR(
"Invalid data type '%c'.\n",
t);
1257 if (byte_code_size /
sizeof(*byte_code) < 1)
1259 WARN(
"Invalid byte code size %lu.\n", (
long)byte_code_size);
1293 unsigned int version_token, token_count;
1297 if (byte_code_size /
sizeof(*byte_code) < 2)
1299 WARN(
"Invalid byte code size %lu.\n", (
long)byte_code_size);
1303 version_token = byte_code[0];
1304 TRACE(
"Version: 0x%08x.\n", version_token);
1305 token_count = byte_code[1];
1306 TRACE(
"Token count: %u.\n", token_count);
1308 if (token_count < 2 || byte_code_size /
sizeof(*byte_code) < token_count)
1310 WARN(
"Invalid token count %u.\n", token_count);
1314 if (!(priv =
malloc(
sizeof(*priv))))
1316 ERR(
"Failed to allocate private data\n");
1320 priv->
start = &byte_code[2];
1321 priv->
end = &byte_code[token_count];
1339 &&
stricmp(
e->semantic_name,
"SV_TARGET"))
1343 WARN(
"Invalid output index %u.\n",
e->register_idx);
1406 if (!(reg_idx->
rel_addr = rel_addr))
1408 ERR(
"Failed to get src param for relative addressing.\n");
1413 reg_idx->
offset = *(*ptr)++;
1421 reg_idx->
offset = *(*ptr)++;
1436 WARN(
"Invalid ptr %p >= end %p.\n", *
ptr,
end);
1445 FIXME(
"Unhandled register type %#x.\n", register_type);
1460 WARN(
"Invalid ptr %p >= end %p.\n", *
ptr,
end);
1480 FIXME(
"Skipping modifier 0x%08x.\n",
m);
1494 param->idx[0].offset = ~0
U;
1500 ERR(
"Failed to read register index.\n");
1506 param->idx[1].offset = ~0
U;
1512 ERR(
"Failed to read register index.\n");
1530 WARN(
"Invalid ptr %p, end %p.\n", *
ptr,
end);
1541 WARN(
"Invalid ptr %p, end %p.\n", *
ptr,
end);
1549 FIXME(
"Unhandled dimension %#x.\n", dimension);
1566 WARN(
"Invalid ptr %p >= end %p.\n", *
ptr,
end);
1573 ERR(
"Failed to read parameter.\n");
1586 switch (swizzle_type)
1602 FIXME(
"Unhandled swizzle type %#x.\n", swizzle_type);
1618 WARN(
"Invalid ptr %p >= end %p.\n", *
ptr,
end);
1625 ERR(
"Failed to read parameter.\n");
1631 ERR(
"Invalid source modifier %#x on destination register.\n", modifier);
1637 dst_param->
shift = 0;
1646 switch (modifier_type)
1664 if (modifier & ~recognized_bits)
1665 FIXME(
"Unhandled instruction modifier %#x.\n", modifier);
1697 FIXME(
"Unhandled instruction modifier %#x.\n", modifier);
1704 uint32_t opcode_token, previous_token;
1706 unsigned int opcode;
1707 unsigned int i,
len;
1716 WARN(
"End of byte-code, failed to read opcode.\n");
1719 remaining = priv->
end - *
ptr;
1721 opcode_token = *(*ptr)++;
1729 WARN(
"End of byte-code, failed to read length token.\n");
1734 if (!
len || remaining <
len)
1736 WARN(
"Read invalid length %u (remaining %Iu).\n",
len, remaining);
1743 TRACE_(d3d_bytecode)(
"[ %08x ", opcode_token);
1744 for (
i = 0;
i <
len; ++
i)
1746 TRACE_(d3d_bytecode)(
"%08lx ", (*ptr)[
i]);
1748 TRACE_(d3d_bytecode)(
"]\n");
1753 FIXME(
"Unrecognized opcode %#x, opcode_token 0x%08x.\n", opcode, opcode_token);
1782 previous_token = opcode_token;
1789 ins->
flags &= ~WINED3D_SM4_INSTRUCTION_FLAG_SATURATE;
1803 priv->
dst_param[
i].modifiers |= instruction_dst_modifier;
1828 return *
ptr == priv->
end;
1840#define TAG_AON9 WINEMAKEFOURCC('A', 'o', 'n', '9')
1841#define TAG_ISG1 WINEMAKEFOURCC('I', 'S', 'G', '1')
1842#define TAG_ISGN WINEMAKEFOURCC('I', 'S', 'G', 'N')
1843#define TAG_OSG1 WINEMAKEFOURCC('O', 'S', 'G', '1')
1844#define TAG_OSG5 WINEMAKEFOURCC('O', 'S', 'G', '5')
1845#define TAG_OSGN WINEMAKEFOURCC('O', 'S', 'G', 'N')
1846#define TAG_PCSG WINEMAKEFOURCC('P', 'C', 'S', 'G')
1847#define TAG_PSG1 WINEMAKEFOURCC('P', 'S', 'G', '1')
1848#define TAG_SHDR WINEMAKEFOURCC('S', 'H', 'D', 'R')
1849#define TAG_SHEX WINEMAKEFOURCC('S', 'H', 'E', 'X')
1877 WARN(
"Skipping %u unknown DWORDs:\n",
count);
1881 WARN(
"\t0x%08x\n",
d);
1889 WARN(
"Invalid offset %#x (data size %#lx).\n",
offset, (
long)data_size);
1903 bool has_stream_index, has_min_precision;
1910 WARN(
"Invalid data size %#x.\n", data_size);
1921 WARN(
"Invalid count %#x (data size %#x).\n",
count, data_size);
1927 ERR(
"Failed to allocate input signature memory.\n");
1932 has_stream_index =
tag ==
TAG_OSG5 || has_min_precision;
1936 unsigned int name_offset;
1938 if (has_stream_index)
1941 e[
i].stream_idx = 0;
1945 WARN(
"Invalid name offset %#x (data size %#x).\n", name_offset, data_size);
1955 if (has_min_precision)
1958 e[
i].min_precision = 0;
1960 TRACE(
"Stream: %u, semantic: %s, semantic idx: %u, sysval_semantic %#x, "
1961 "type %u, register idx: %u, use_mask %#x, input_mask %#x, min_precision %u.\n",
1967 s->element_count =
count;
1975 unsigned int data_size =
section->data.size;
1984 if (max_version < 4)
1986 TRACE(
"Skipping shader input signature.\n");
1989 if (
shader->input_signature.elements)
1991 FIXME(
"Multiple input signatures.\n");
2001 if (max_version < 4)
2003 TRACE(
"Skipping shader output signature.\n");
2006 if (
shader->output_signature.elements)
2008 FIXME(
"Multiple output signatures.\n");
2017 if (
shader->patch_constant_signature.elements)
2019 FIXME(
"Multiple patch constant signatures.\n");
2028 if (max_version < 4)
2030 TRACE(
"Skipping SM4+ shader.\n");
2034 FIXME(
"Multiple shader code chunks.\n");
2036 shader->functionLength = data_size;
2041 if (max_version < 4)
2044 unsigned int unknown_dword_count;
2045 const char *byte_code;
2047 if (data_size <
sizeof(*
header))
2049 WARN(
"Invalid Aon9 data size %#x.\n", data_size);
2053 byte_code +=
header->byte_code_offset;
2054 unknown_dword_count = (
header->byte_code_offset -
sizeof(*header)) /
sizeof(
DWORD);
2056 if (data_size - 2 *
sizeof(
DWORD) <
header->byte_code_offset)
2058 WARN(
"Invalid byte code offset %#x (size %#x).\n",
header->byte_code_offset, data_size);
2061 FIXME(
"Skipping %u unknown DWORDs.\n", unknown_dword_count);
2064 FIXME(
"Multiple shader code chunks.\n");
2066 shader->functionLength = data_size -
header->byte_code_offset;
2068 TRACE(
"Feature level 9 shader version 0%08x, 0%08lx.\n",
2073 TRACE(
"Skipping feature level 9 shader code.\n");
2096 WARN(
"Failed to parse DXBC, ret %d.\n",
ret);
2111 WARN(
"Failed to parse DXBC, hr %#lx.\n",
hr);
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void list_remove(struct list_entry *entry)
static int list_empty(struct list_entry *head)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
#define stricmp(_String1, _String2)
#define WINE_DECLARE_DEBUG_CHANNEL(x)
_ACRTIMP size_t __cdecl strlen(const char *)
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLenum GLuint components
GLuint GLdouble GLdouble GLint GLint order
GLubyte GLubyte GLubyte GLubyte w
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
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 token
enum wined3d_data_type data_type
#define memcpy(s1, s2, n)
static __inline const char * debugstr_fourcc(unsigned int cc)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
__WINE_SERVER_LIST_INLINE void list_move_head(struct list *dst, struct list *src)
static void shader_sm5_read_sync(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
static void shader_sm4_read_header(void *data, const DWORD **ptr, struct wined3d_shader_version *shader_version)
#define WINED3D_SM5_MODIFIER_DATA_TYPE_SHIFT
wined3d_sm4_instruction_modifier
@ WINED3D_SM4_MODIFIER_AOFFIMMI
@ WINED3D_SM5_MODIFIER_DATA_TYPE
@ WINED3D_SM5_MODIFIER_RESOURCE_TYPE
#define WINED3D_SM5_UAV_FLAGS_MASK
static void shader_sm4_read_dcl_indexable_temp(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
#define WINED3D_SM4_SAMPLER_MODE_MASK
static void shader_sm5_read_dcl_hs_max_tessfactor(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
static void shader_sm4_read_instruction_modifier(uint32_t modifier, struct wined3d_shader_instruction *ins)
static void shader_sm5_read_dcl_uav_structured(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
#define WINED3D_SM4_SHADER_DATA_TYPE_SHIFT
static BOOL shader_sm4_read_src_param(struct wined3d_sm4_data *priv, const DWORD **ptr, const DWORD *end, enum wined3d_data_type data_type, struct wined3d_shader_src_param *src_param)
#define WINED3D_SM4_SWIZZLE_MASK
static void shader_sm5_read_dcl_tgsm_structured(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
#define WINED3D_SM4_MODIFIER_MASK
#define WINED3D_SM4_INDEX_TYPE_MASK
@ WINED3D_SM4_SAMPLER_COMPARISON
@ WINED3D_SM4_SAMPLER_DEFAULT
static unsigned int read_dword(const char **ptr)
wined3d_sm4_resource_type
@ WINED3D_SM4_RESOURCE_TEXTURE_1DARRAY
@ WINED3D_SM4_RESOURCE_TEXTURE_2DMS
@ WINED3D_SM4_RESOURCE_TEXTURE_2DMSARRAY
@ WINED3D_SM4_RESOURCE_TEXTURE_1D
@ WINED3D_SM4_RESOURCE_TEXTURE_CUBE
@ WINED3D_SM4_RESOURCE_TEXTURE_CUBEARRAY
@ WINED3D_SM4_RESOURCE_TEXTURE_2DARRAY
@ WINED3D_SM4_RESOURCE_BUFFER
@ WINED3D_SM4_RESOURCE_TEXTURE_2D
@ WINED3D_SM4_RESOURCE_TEXTURE_3D
#define WINED3D_SM4_DIMENSION_SHIFT
wined3d_sm4_input_primitive_type
@ WINED3D_SM5_INPUT_PT_PATCH23
@ WINED3D_SM5_INPUT_PT_PATCH25
@ WINED3D_SM5_INPUT_PT_PATCH3
@ WINED3D_SM4_INPUT_PT_POINT
@ WINED3D_SM4_INPUT_PT_TRIANGLEADJ
@ WINED3D_SM5_INPUT_PT_PATCH32
@ WINED3D_SM4_INPUT_PT_TRIANGLE
@ WINED3D_SM5_INPUT_PT_PATCH7
@ WINED3D_SM5_INPUT_PT_PATCH21
@ WINED3D_SM5_INPUT_PT_PATCH6
@ WINED3D_SM5_INPUT_PT_PATCH29
@ WINED3D_SM5_INPUT_PT_PATCH10
@ WINED3D_SM5_INPUT_PT_PATCH22
@ WINED3D_SM5_INPUT_PT_PATCH14
@ WINED3D_SM5_INPUT_PT_PATCH18
@ WINED3D_SM5_INPUT_PT_PATCH11
@ WINED3D_SM5_INPUT_PT_PATCH8
@ WINED3D_SM5_INPUT_PT_PATCH30
@ WINED3D_SM5_INPUT_PT_PATCH20
@ WINED3D_SM5_INPUT_PT_PATCH31
@ WINED3D_SM4_INPUT_PT_LINE
@ WINED3D_SM5_INPUT_PT_PATCH24
@ WINED3D_SM5_INPUT_PT_PATCH4
@ WINED3D_SM5_INPUT_PT_PATCH9
@ WINED3D_SM5_INPUT_PT_PATCH5
@ WINED3D_SM5_INPUT_PT_PATCH2
@ WINED3D_SM4_INPUT_PT_LINEADJ
@ WINED3D_SM5_INPUT_PT_PATCH19
@ WINED3D_SM5_INPUT_PT_PATCH12
@ WINED3D_SM5_INPUT_PT_PATCH27
@ WINED3D_SM5_INPUT_PT_PATCH13
@ WINED3D_SM5_INPUT_PT_PATCH17
@ WINED3D_SM5_INPUT_PT_PATCH16
@ WINED3D_SM5_INPUT_PT_PATCH15
@ WINED3D_SM5_INPUT_PT_PATCH1
@ WINED3D_SM5_INPUT_PT_PATCH26
@ WINED3D_SM5_INPUT_PT_PATCH28
#define WINED3D_SM4_ADDRESSING_RELATIVE
const struct wined3d_shader_frontend sm4_shader_frontend
static HRESULT shader_parse_signature(DWORD tag, const char *data, unsigned int data_size, struct wined3d_shader_signature *s)
static void shader_sm4_read_dcl_sampler(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
#define WINED3D_SM4_REGISTER_TYPE_MASK
wined3d_sm4_output_primitive_type
@ WINED3D_SM4_OUTPUT_PT_LINESTRIP
@ WINED3D_SM4_OUTPUT_PT_TRIANGLESTRIP
@ WINED3D_SM4_OUTPUT_PT_POINTLIST
static const struct wined3d_sm4_opcode_info * get_opcode_info(enum wined3d_sm4_opcode opcode)
wined3d_sm4_shader_data_type
@ WINED3D_SM4_SHADER_DATA_MESSAGE
@ WINED3D_SM4_SHADER_DATA_IMMEDIATE_CONSTANT_BUFFER
#define WINED3D_SM4_RESOURCE_SAMPLE_COUNT_SHIFT
static void map_register(const struct wined3d_sm4_data *priv, struct wined3d_shader_register *reg)
#define WINED3D_SM4_ADDRESSING_SHIFT1
@ WINED3D_SM4_OP_DCL_INPUT_PRIMITIVE
@ WINED3D_SM5_OP_DCL_UAV_STRUCTURED
@ WINED3D_SM4_OP_DCL_CONSTANT_BUFFER
@ WINED3D_SM5_OP_IMM_ATOMIC_EXCH
@ WINED3D_SM4_OP_SAMPLE_C_LZ
@ WINED3D_SM5_OP_HS_JOIN_PHASE
@ WINED3D_SM5_OP_DCL_OUTPUT_CONTROL_POINT_COUNT
@ WINED3D_SM5_OP_DCL_HS_FORK_PHASE_INSTANCE_COUNT
@ WINED3D_SM5_OP_DCL_RESOURCE_RAW
@ WINED3D_SM5_OP_DCL_TGSM_RAW
@ WINED3D_SM4_OP_SAMPLE_B
@ WINED3D_SM5_OP_EMIT_STREAM
@ WINED3D_SM4_OP_CONTINUE
@ WINED3D_SM5_OP_IMM_ATOMIC_UMAX
@ WINED3D_SM5_OP_ATOMIC_UMIN
@ WINED3D_SM4_OP_SAMPLE_LOD
@ WINED3D_SM4_OP_DERIV_RTY
@ WINED3D_SM4_OP_ROUND_PI
@ WINED3D_SM5_OP_DCL_INTERFACE
@ WINED3D_SM5_OP_STORE_UAV_TYPED
@ WINED3D_SM4_OP_SAMPLE_INFO
@ WINED3D_SM5_OP_F16TOF32
@ WINED3D_SM5_OP_ATOMIC_UMAX
@ WINED3D_SM5_OP_ATOMIC_XOR
@ WINED3D_SM5_OP_DCL_FUNCTION_TABLE
@ WINED3D_SM5_OP_EVAL_SAMPLE_INDEX
@ WINED3D_SM4_OP_DCL_INPUT_PS_SIV
@ WINED3D_SM4_OP_SAMPLE_GRAD
@ WINED3D_SM5_OP_ATOMIC_OR
@ WINED3D_SM5_OP_GATHER4_PO
@ WINED3D_SM5_OP_GATHER4_PO_C
@ WINED3D_SM5_OP_DERIV_RTX_FINE
@ WINED3D_SM5_OP_DCL_RESOURCE_STRUCTURED
@ WINED3D_SM5_OP_DERIV_RTX_COARSE
@ WINED3D_SM4_OP_SAMPLE_C
@ WINED3D_SM4_OP_DERIV_RTX
@ WINED3D_SM5_OP_IMM_ATOMIC_ALLOC
@ WINED3D_SM5_OP_FIRSTBIT_SHI
@ WINED3D_SM5_OP_DCL_HS_JOIN_PHASE_INSTANCE_COUNT
@ WINED3D_SM5_OP_IMM_ATOMIC_CONSUME
@ WINED3D_SM5_OP_DCL_STREAM
@ WINED3D_SM5_OP_STORE_STRUCTURED
@ WINED3D_SM5_OP_STORE_RAW
@ WINED3D_SM5_OP_F32TOF16
@ WINED3D_SM5_OP_IMM_ATOMIC_UMIN
@ WINED3D_SM5_OP_GATHER4_C
@ WINED3D_SM5_OP_EVAL_CENTROID
@ WINED3D_SM4_OP_DCL_INPUT
@ WINED3D_SM4_OP_DCL_OUTPUT
@ WINED3D_SM5_OP_ATOMIC_CMP_STORE
@ WINED3D_SM4_OP_ROUND_NE
@ WINED3D_SM5_OP_FIRSTBIT_HI
@ WINED3D_SM4_OP_DCL_INPUT_SIV
@ WINED3D_SM5_OP_HS_CONTROL_POINT_PHASE
@ WINED3D_SM5_OP_ATOMIC_IMIN
@ WINED3D_SM5_OP_IMM_ATOMIC_AND
@ WINED3D_SM4_OP_DCL_INDEX_RANGE
@ WINED3D_SM4_OP_DCL_VERTICES_OUT
@ WINED3D_SM4_OP_SAMPLE_POS
@ WINED3D_SM5_OP_DCL_TGSM_STRUCTURED
@ WINED3D_SM4_OP_DCL_OUTPUT_TOPOLOGY
@ WINED3D_SM5_OP_LD_STRUCTURED
@ WINED3D_SM5_OP_DCL_UAV_RAW
@ WINED3D_SM5_OP_HS_FORK_PHASE
@ WINED3D_SM4_OP_DCL_OUTPUT_SIV
@ WINED3D_SM5_OP_DERIV_RTY_FINE
@ WINED3D_SM5_OP_DCL_TESSELLATOR_PARTITIONING
@ WINED3D_SM4_OP_ENDSWITCH
@ WINED3D_SM5_OP_IMM_ATOMIC_IADD
@ WINED3D_SM5_OP_HS_DECLS
@ WINED3D_SM5_OP_DCL_TESSELLATOR_DOMAIN
@ WINED3D_SM5_OP_DCL_FUNCTION_BODY
@ WINED3D_SM5_OP_CUT_STREAM
@ WINED3D_SM4_OP_DCL_SAMPLER
@ WINED3D_SM5_OP_IMM_ATOMIC_IMAX
@ WINED3D_SM4_OP_DCL_INPUT_PS_SGV
@ WINED3D_SM5_OP_IMM_ATOMIC_OR
@ WINED3D_SM5_OP_DCL_HS_MAX_TESSFACTOR
@ WINED3D_SM5_OP_LD_UAV_TYPED
@ WINED3D_SM5_OP_DERIV_RTY_COARSE
@ WINED3D_SM5_OP_DCL_GS_INSTANCES
@ WINED3D_SM5_OP_IMM_ATOMIC_CMP_EXCH
@ WINED3D_SM4_OP_DCL_GLOBAL_FLAGS
@ WINED3D_SM5_OP_COUNTBITS
@ WINED3D_SM5_OP_FIRSTBIT_LO
@ WINED3D_SM4_OP_ROUND_NI
@ WINED3D_SM4_OP_DCL_TEMPS
@ WINED3D_SM5_OP_ATOMIC_IMAX
@ WINED3D_SM4_OP_CONTINUEC
@ WINED3D_SM5_OP_DCL_THREAD_GROUP
@ WINED3D_SM5_OP_DCL_TESSELLATOR_OUTPUT_PRIMITIVE
@ WINED3D_SM4_OP_DCL_INPUT_PS
@ WINED3D_SM4_OP_DCL_RESOURCE
@ WINED3D_SM4_OP_DCL_INPUT_SGV
@ WINED3D_SM5_OP_IMM_ATOMIC_IMIN
@ WINED3D_SM4_OP_DCL_INDEXABLE_TEMP
@ WINED3D_SM5_OP_DCL_INPUT_CONTROL_POINT_COUNT
@ WINED3D_SM5_OP_ATOMIC_AND
@ WINED3D_SM4_OP_SHADER_DATA
@ WINED3D_SM5_OP_DCL_UAV_TYPED
@ WINED3D_SM5_OP_ATOMIC_IADD
@ WINED3D_SM5_OP_IMM_ATOMIC_XOR
static const struct wined3d_sm4_opcode_info opcode_table[]
#define WINED3D_SM5_MODIFIER_RESOURCE_TYPE_MASK
static void shader_sm5_read_dcl_resource_raw(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
static BOOL require_space(size_t offset, size_t count, size_t size, size_t data_size)
static struct wined3d_shader_src_param * get_src_param(struct wined3d_sm4_data *priv)
#define WINED3D_SM5_SYNC_FLAGS_SHIFT
#define WINED3D_SM4_REGISTER_ORDER_MASK
#define WINED3D_SM5_CONTROL_POINT_COUNT_SHIFT
static void shader_sm4_read_dcl_index_range(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
static void shader_sm5_read_dcl_tessellator_output_primitive(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
#define WINED3D_SM4_INSTRUCTION_FLAGS_SHIFT
static void shader_sm5_read_fcall(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
#define WINED3D_SM4_GLOBAL_FLAGS_MASK
static void shader_sm4_free(void *data)
#define WINED3D_SM4_REGISTER_ORDER_SHIFT
#define WINED3D_SM4_PRIMITIVE_TYPE_MASK
static enum wined3d_shader_type wined3d_get_sm4_shader_type(const DWORD *byte_code, size_t byte_code_size)
#define WINED3D_SM4_RESOURCE_TYPE_SHIFT
static void shader_sm5_read_dcl_function_body(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
static BOOL shader_sm4_read_dst_param(struct wined3d_sm4_data *priv, const DWORD **ptr, const DWORD *end, enum wined3d_data_type data_type, struct wined3d_shader_dst_param *dst_param)
static void shader_sm5_read_control_point_count(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
static void shader_sm4_read_declaration_count(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
static BOOL shader_sm4_is_end(void *data, const DWORD **ptr)
#define WINED3D_SM4_INSTRUCTION_LENGTH_SHIFT
static void * shader_sm4_init(const DWORD *byte_code, size_t byte_code_size, const struct wined3d_shader_signature *output_signature)
#define WINED3D_SM4_PRIMITIVE_TYPE_SHIFT
#define WINED3D_SM4_INSTRUCTION_FLAGS_MASK
#define WINED3D_SM4_DIMENSION_MASK
#define WINED3D_SM5_TESSELLATOR_SHIFT
#define WINED3D_SM4_SAMPLER_MODE_SHIFT
static void shader_sm5_read_dcl_tgsm_raw(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
static BOOL shader_sm4_read_reg_idx(struct wined3d_sm4_data *priv, const DWORD **ptr, const DWORD *end, DWORD addressing, struct wined3d_shader_register_index *reg_idx)
#define WINED3D_SM5_FP_TABLE_COUNT_MASK
#define WINED3D_SM4_SWIZZLE_SHIFT
#define WINED3D_SM4_OPCODE_MASK
#define WINED3D_SM4_AOFFIMMI_V_SHIFT
#define WINED3D_SM4_INSTRUCTION_FLAG_SATURATE
#define WINED3D_SM4_WRITEMASK_SHIFT
static void shader_sm5_read_dcl_thread_group(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
static enum wined3d_primitive_type output_primitive_type_table[]
static void shader_sm4_read_declaration_register_semantic(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
wined3d_sm4_register_type
@ WINED3D_SM5_RT_DEPTHOUT_LESS_EQUAL
@ WINED3D_SM5_RT_THREAD_ID
@ WINED3D_SM5_RT_OUTPUT_STENCIL_REF
@ WINED3D_SM5_RT_THREAD_GROUP_ID
@ WINED3D_SM5_RT_FUNCTION_BODY
@ WINED3D_SM5_RT_PATCH_CONSTANT_DATA
@ WINED3D_SM5_RT_DEPTHOUT_GREATER_EQUAL
@ WINED3D_SM5_RT_GS_INSTANCE_ID
@ WINED3D_SM5_RT_FORK_INSTANCE_ID
@ WINED3D_SM4_RT_CONSTBUFFER
@ WINED3D_SM5_RT_JOIN_INSTANCE_ID
@ WINED3D_SM4_RT_IMMCONST
@ WINED3D_SM5_RT_INPUT_CONTROL_POINT
@ WINED3D_SM5_RT_LOCAL_THREAD_INDEX
@ WINED3D_SM4_RT_INDEXABLE_TEMP
@ WINED3D_SM5_RT_SHARED_MEMORY
@ WINED3D_SM5_RT_LOCAL_THREAD_ID
@ WINED3D_SM5_RT_OUTPUT_CONTROL_POINT
@ WINED3D_SM5_RT_DOMAIN_LOCATION
@ WINED3D_SM4_RT_RASTERIZER
@ WINED3D_SM5_RT_FUNCTION_POINTER
@ WINED3D_SM5_RT_OUTPUT_CONTROL_POINT_ID
@ WINED3D_SM5_RT_COVERAGE
@ WINED3D_SM4_RT_IMMCONSTBUFFER
@ WINED3D_SM4_RT_DEPTHOUT
@ WINED3D_SM4_RT_RESOURCE
#define WINED3D_SM4_REGISTER_MODIFIER
#define WINED3D_SM4_ADDRESSING_SHIFT0
#define WINED3D_SM5_TESSELLATOR_MASK
#define WINED3D_SM5_MODIFIER_DATA_TYPE_MASK
#define WINED3D_SM4_AOFFIMMI_U_SHIFT
#define WINED3D_SM4_INSTRUCTION_LENGTH_MASK
#define WINED3D_SM4_ADDRESSING_MASK0
static void shader_sm4_read_dcl_output_topology(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
static void shader_sm4_read_dcl_global_flags(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
static void skip_dword_unknown(const char **ptr, unsigned int count)
static void shader_sm5_read_dcl_tessellator_domain(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
#define WINED3D_SM4_CONDITIONAL_NZ
static void shader_sm4_read_instruction(void *data, const DWORD **ptr, struct wined3d_shader_instruction *ins)
static enum wined3d_shader_resource_type resource_type_table[]
static void shader_sm4_read_dcl_input_primitive(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
#define WINED3D_SM4_AOFFIMMI_V_MASK
#define WINED3D_SM5_FP_ARRAY_SIZE_SHIFT
#define WINED3D_SM5_MODIFIER_RESOURCE_TYPE_SHIFT
#define WINED3D_SM4_INTERPOLATION_MODE_SHIFT
#define WINED3D_SM4_ADDRESSING_OFFSET
@ WINED3D_SM4_SWIZZLE_NONE
@ WINED3D_SM4_SWIZZLE_SCALAR
@ WINED3D_SM4_SWIZZLE_VEC4
#define WINED3D_SM5_UAV_FLAGS_SHIFT
#define WINED3D_SM4_AOFFIMMI_U_MASK
#define WINED3D_SM4_SHADER_DATA_TYPE_MASK
#define WINED3D_SM5_CONTROL_POINT_COUNT_MASK
#define WINED3D_SM4_INTERPOLATION_MODE_MASK
#define WINED3D_SM4_REGISTER_TYPE_SHIFT
#define WINED3D_SM4_RESOURCE_TYPE_MASK
#define WINED3D_SM5_SYNC_FLAGS_MASK
#define WINED3D_SM4_VERSION_MINOR(version)
static enum wined3d_data_type map_data_type(char t)
#define WINED3D_SM4_ADDRESSING_MASK1
static void shader_sm4_read_dcl_input_ps(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
static void shader_sm5_read_dcl_function_table(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
#define WINED3D_SM4_AOFFIMMI_W_MASK
static void shader_sm4_read_conditional_op(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
static void shader_sm5_read_dcl_resource_structured(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
static enum wined3d_data_type data_type_table[]
static void shader_sm4_read_dcl_constant_buffer(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
static enum wined3d_shader_register_type register_type_table[]
static BOOL shader_sm4_read_param(struct wined3d_sm4_data *priv, const DWORD **ptr, const DWORD *end, enum wined3d_data_type data_type, struct wined3d_shader_register *param, enum wined3d_shader_src_modifier *modifier)
static void shader_sm5_read_dcl_interface(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
HRESULT wined3d_shader_extract_from_dxbc(struct wined3d_shader *shader, unsigned int max_shader_version, enum vkd3d_shader_source_type *source_type)
#define WINED3D_SM4_VERSION_MAJOR(version)
#define WINED3D_SM4_WRITEMASK_MASK
static HRESULT shader_dxbc_process_section(struct wined3d_shader *shader, unsigned int max_version, enum vkd3d_shader_source_type *source_type, const struct vkd3d_shader_dxbc_section_desc *section)
#define WINED3D_SM4_INSTRUCTION_MODIFIER
static void shader_sm5_read_dcl_uav_raw(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
#define WINED3D_SM4_SWIZZLE_TYPE_MASK
static void shader_sm4_read_dcl_resource(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
static void shader_sm4_read_dcl_input_ps_siv(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
static void shader_sm5_read_dcl_tessellator_partitioning(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
#define WINED3D_SM4_AOFFIMMI_W_SHIFT
static void shader_sm4_read_shader_data(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
#define WINED3D_SM5_PRECISE_SHIFT
static const char * shader_get_string(const char *data, size_t data_size, unsigned int offset)
#define WINED3D_SM4_RESOURCE_SAMPLE_COUNT_MASK
#define WINED3D_SM5_PRECISE_MASK
static void shader_sm4_read_declaration_dst(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
@ WINED3D_SM4_DIMENSION_SCALAR
@ WINED3D_SM4_DIMENSION_VEC4
#define WINED3D_SM4_SWIZZLE_TYPE_SHIFT
static enum wined3d_primitive_type input_primitive_type_table[]
#define WINED3D_SM4_GLOBAL_FLAGS_SHIFT
struct vkd3d_shader_dxbc_section_desc * sections
struct wined3d_shader_register reg
enum wined3d_data_type resource_data_type
struct wined3d_shader_primitive_type primitive_type
struct wined3d_shader_tgsm_structured tgsm_structured
enum wined3d_tessellator_partitioning tessellator_partitioning
const struct wined3d_shader_src_param * src
union wined3d_shader_instruction::@348 declaration
struct wined3d_shader_semantic semantic
const struct wined3d_shader_dst_param * dst
enum wined3d_shader_resource_type resource_type
struct wined3d_shader_function_table_pointer fp
const struct wined3d_shader_src_param * predicate
enum WINED3D_SHADER_INSTRUCTION_HANDLER handler_idx
struct wined3d_shader_indexable_temp indexable_temp
struct wined3d_shader_structured_resource structured_resource
struct wined3d_shader_index_range index_range
float max_tessellation_factor
enum wined3d_tessellator_output_primitive tessellator_output_primitive
enum wined3d_tessellator_domain tessellator_domain
struct wined3d_shader_tgsm_raw tgsm_raw
const struct wined3d_shader_immediate_constant_buffer * icb
struct wined3d_shader_texel_offset texel_offset
struct wined3d_shader_thread_group_size thread_group_size
struct wined3d_shader_register_semantic register_semantic
const struct wined3d_shader_src_param * rel_addr
unsigned int register_idx
const char * semantic_name
unsigned int semantic_idx
unsigned int min_precision
enum wined3d_sysval_semantic sysval_semantic
unsigned int element_count
struct wined3d_shader_signature_element * elements
enum wined3d_shader_src_modifier modifiers
struct wined3d_shader_register reg
struct wined3d_shader_immediate_constant_buffer icb
struct wined3d_shader_dst_param dst_param[2]
struct wined3d_shader_src_param src_param[5]
unsigned int output_map[MAX_REG_OUTPUT]
struct wined3d_shader_version shader_version
enum WINED3D_SHADER_INSTRUCTION_HANDLER handler_idx
void(* read_opcode_func)(struct wined3d_shader_instruction *ins, DWORD opcode, DWORD opcode_token, const DWORD *tokens, unsigned int token_count, struct wined3d_sm4_data *priv)
enum wined3d_sm4_opcode opcode
@ VKD3D_SHADER_SOURCE_D3D_BYTECODE
@ VKD3D_SHADER_SOURCE_DXBC_TPF
VKD3D_SHADER_API void vkd3d_shader_free_dxbc(struct vkd3d_shader_dxbc_desc *dxbc)
VKD3D_SHADER_API int vkd3d_shader_parse_dxbc(const struct vkd3d_shader_code *dxbc, uint32_t flags, struct vkd3d_shader_dxbc_desc *desc, char **messages)
@ WINED3D_PT_TRIANGLELIST_ADJ
@ WINED3D_PT_LINELIST_ADJ
@ WINED3D_PT_TRIANGLESTRIP
@ WINED3D_PT_TRIANGLELIST
@ WINED3D_SHADER_TYPE_HULL
@ WINED3D_SHADER_TYPE_PIXEL
@ WINED3D_SHADER_TYPE_GEOMETRY
@ WINED3D_SHADER_TYPE_DOMAIN
@ WINED3D_SHADER_TYPE_COMPUTE
@ WINED3D_SHADER_TYPE_VERTEX
@ WINED3D_SHADER_TYPE_INVALID
WINED3D_SHADER_INSTRUCTION_HANDLER
@ WINED3DSIH_DCL_TESSELLATOR_PARTITIONING
@ WINED3DSIH_GATHER4_PO_C
@ WINED3DSIH_DCL_FUNCTION_TABLE
@ WINED3DSIH_DCL_INPUT_SIV
@ WINED3DSIH_IMM_ATOMIC_XOR
@ WINED3DSIH_DCL_CONSTANT_BUFFER
@ WINED3DSIH_DCL_INTERFACE
@ WINED3DSIH_IMM_ATOMIC_IADD
@ WINED3DSIH_STORE_STRUCTURED
@ WINED3DSIH_IMM_ATOMIC_UMAX
@ WINED3DSIH_STORE_UAV_TYPED
@ WINED3DSIH_DCL_INPUT_SGV
@ WINED3DSIH_DCL_INPUT_PS_SGV
@ WINED3DSIH_DCL_IMMEDIATE_CONSTANT_BUFFER
@ WINED3DSIH_DCL_THREAD_GROUP
@ WINED3DSIH_DCL_OUTPUT_SIV
@ WINED3DSIH_DCL_INDEX_RANGE
@ WINED3DSIH_DCL_TESSELLATOR_OUTPUT_PRIMITIVE
@ WINED3DSIH_ATOMIC_CMP_STORE
@ WINED3DSIH_HS_CONTROL_POINT_PHASE
@ WINED3DSIH_LD_STRUCTURED
@ WINED3DSIH_IMM_ATOMIC_AND
@ WINED3DSIH_IMM_ATOMIC_CONSUME
@ WINED3DSIH_IMM_ATOMIC_UMIN
@ WINED3DSIH_HS_FORK_PHASE
@ WINED3DSIH_EVAL_CENTROID
@ WINED3DSIH_IMM_ATOMIC_CMP_EXCH
@ WINED3DSIH_DCL_VERTICES_OUT
@ WINED3DSIH_HS_JOIN_PHASE
@ WINED3DSIH_DCL_OUTPUT_TOPOLOGY
@ WINED3DSIH_DCL_HS_MAX_TESSFACTOR
@ WINED3DSIH_DCL_GS_INSTANCES
@ WINED3DSIH_DCL_TGSM_RAW
@ WINED3DSIH_DCL_UAV_TYPED
@ WINED3DSIH_IMM_ATOMIC_IMAX
@ WINED3DSIH_DCL_INPUT_PS
@ WINED3DSIH_LD_UAV_TYPED
@ WINED3DSIH_DCL_UAV_STRUCTURED
@ WINED3DSIH_DCL_HS_FORK_PHASE_INSTANCE_COUNT
@ WINED3DSIH_DCL_INPUT_CONTROL_POINT_COUNT
@ WINED3DSIH_DCL_GLOBAL_FLAGS
@ WINED3DSIH_EVAL_SAMPLE_INDEX
@ WINED3DSIH_IMM_ATOMIC_ALLOC
@ WINED3DSIH_IMM_ATOMIC_IMIN
@ WINED3DSIH_DCL_TESSELLATOR_DOMAIN
@ WINED3DSIH_IMM_ATOMIC_EXCH
@ WINED3DSIH_FIRSTBIT_SHI
@ WINED3DSIH_DCL_INPUT_PS_SIV
@ WINED3DSIH_DCL_TGSM_STRUCTURED
@ WINED3DSIH_DCL_FUNCTION_BODY
@ WINED3DSIH_DCL_OUTPUT_CONTROL_POINT_COUNT
@ WINED3DSIH_IMM_ATOMIC_OR
@ WINED3DSIH_DCL_INDEXABLE_TEMP
@ WINED3DSIH_DCL_RESOURCE_RAW
@ WINED3DSIH_DCL_INPUT_PRIMITIVE
@ WINED3DSIH_DCL_HS_JOIN_PHASE_INSTANCE_COUNT
@ WINED3DSIH_DCL_RESOURCE_STRUCTURED
wined3d_shader_src_modifier
wined3d_shader_dst_modifier
wined3d_shader_resource_type
@ WINED3D_SHADER_RESOURCE_BUFFER
@ WINED3D_SHADER_RESOURCE_TEXTURE_3D
@ WINED3D_SHADER_RESOURCE_TEXTURE_2D
@ WINED3D_SHADER_RESOURCE_TEXTURE_1DARRAY
@ WINED3D_SHADER_RESOURCE_TEXTURE_2DARRAY
@ WINED3D_SHADER_RESOURCE_NONE
@ WINED3D_SHADER_RESOURCE_TEXTURE_2DMSARRAY
@ WINED3D_SHADER_RESOURCE_TEXTURE_2DMS
@ WINED3D_SHADER_RESOURCE_TEXTURE_CUBEARRAY
@ WINED3D_SHADER_RESOURCE_TEXTURE_CUBE
@ WINED3D_SHADER_RESOURCE_TEXTURE_1D
#define MAX_IMMEDIATE_CONSTANT_BUFFER_SIZE
#define WINED3DSI_INDEXED_DYNAMIC
wined3d_shader_register_type
@ WINED3DSPR_LOCALTHREADID
@ WINED3DSPR_FUNCTIONPOINTER
@ WINED3DSPR_OUTCONTROLPOINT
@ WINED3DSPR_INCONTROLPOINT
@ WINED3DSPR_THREADGROUPID
@ WINED3DSPR_FUNCTIONBODY
@ WINED3DSPR_GROUPSHAREDMEM
@ WINED3DSPR_LOCALTHREADINDEX
@ WINED3DSPR_IMMCONSTBUFFER
#define WINED3DSI_PRECISE_SHIFT
#define WINED3DSP_NOSWIZZLE
@ WINED3D_IMMCONST_SCALAR
@ WINED3D_SHADER_CONDITIONAL_OP_NZ
@ WINED3D_SHADER_CONDITIONAL_OP_Z