47 ERR(
"Failed to allocate memory for an instruction structure\n");
54 ERR(
"Failed to allocate memory for instruction registers\n");
80 if(
shader->instr_alloc_size == 0) {
83 ERR(
"Failed to allocate the shader instruction array\n");
87 }
else if(
shader->instr_alloc_size ==
shader->num_instrs) {
89 sizeof(*
shader->instr) * (
shader->instr_alloc_size) * 2);
90 if(!new_instructions) {
91 ERR(
"Failed to grow the shader instruction array\n");
94 shader->instr = new_instructions;
96 }
else if(
shader->num_instrs >
shader->instr_alloc_size) {
97 ERR(
"More instructions than allocated. This should not happen\n");
114 ERR(
"Failed to grow the constants array\n");
117 shader->constF = newarray;
121 ERR(
"Failed to allocate the constants array\n");
128 ERR(
"Failed to allocate a new constant\n");
150 ERR(
"Failed to grow the constants array\n");
153 shader->constI = newarray;
157 ERR(
"Failed to allocate the constants array\n");
164 ERR(
"Failed to allocate a new constant\n");
186 ERR(
"Failed to grow the constants array\n");
189 shader->constB = newarray;
193 ERR(
"Failed to allocate the constants array\n");
200 ERR(
"Failed to allocate a new constant\n");
231 ERR(
"Error allocating declarations array\n");
236 for(
i = 0;
i < *
num;
i++) {
238 WARN(
"Declaration of register %u already exists, writemask match 0x%x\n",
244 sizeof(**decl) * ((*
num) + 1));
246 ERR(
"Error reallocating declarations array\n");
267 if(
shader->num_samplers == 0) {
270 ERR(
"Error allocating samplers array\n");
276 for(
i = 0;
i <
shader->num_samplers;
i++) {
278 WARN(
"Sampler %u already declared\n",
regnum);
286 sizeof(*
shader->samplers) * (
shader->num_samplers + 1));
288 ERR(
"Error reallocating samplers array\n");
291 shader->samplers = newarray;
333 ERR(
"Failed to grow the buffer data memory\n");
386 switch (bwriter_srcmod)
403 FIXME(
"Unhandled BWRITERSPSM token %#x.\n", bwriter_srcmod);
421 switch (asmshader_comparetype)
430 FIXME(
"Unexpected BWRITER_COMPARISON type %#x.\n", asmshader_comparetype);
442 FIXME(
"Unexpected BWRITERSAMPLER_TEXTURE_TYPE type %#x.\n", bwriter_sampler);
468 FIXME(
"Unexpected BWRITERSPR %#x.\n", bwriter_register);
474 switch (bwriter_opcode)
567 FIXME(
"Unhandled BWRITERSIO token %#x.\n", bwriter_opcode);
596 for(
i = 0;
i <
num;
i++) {
597 if(decls[
i].builtin)
continue;
628 for(
i = 0;
i <
num;
i++) {
651 for(
i = 0;
i <
shader->num_outputs;
i++) {
652 if(!
shader->outputs[
i].builtin)
continue;
663 WARN(
"dcl_position%u not supported in sm 1/2 shaders\n",
usage_idx);
672 WARN(
"dcl_color%u not supported in sm 1/2 shaders\n",
usage_idx);
676 WARN(
"Only WRITEMASK_ALL is supported on color in sm 1/2\n");
685 WARN(
"dcl_color%u not supported in sm 1/2 shaders\n",
usage_idx);
692 WARN(
"Partial writemasks not supported on texture coordinates in sm 1 and 2\n");
701 WARN(
"dcl_psize%u not supported in sm 1/2 shaders\n",
usage_idx);
711 WARN(
"dcl_fog%u not supported in sm 1 shaders\n",
usage_idx);
716 WARN(
"Unsupported fog writemask\n");
725 WARN(
"Varying type %u is not supported in shader model 1.x\n",
usage);
737 WARN(
"Int and bool constants are not supported in shader model 1 shaders\n");
738 WARN(
"Got %u int and %u boolean constants\n",
shader->num_ci,
shader->num_cb);
759 This->v_regnum[0] = -1;
This->v_regnum[1] = -1;
760 for(
i = 0;
i < 8;
i++)
This->t_regnum[
i] = -1;
762 for(
i = 0; i < shader->num_inputs;
i++) {
763 if(!
shader->inputs[
i].builtin)
continue;
773 WARN(
"dcl_color%u not supported in sm 1 shaders\n",
usage_idx);
777 WARN(
"Only WRITEMASK_ALL is supported on color in sm 1\n");
786 WARN(
"dcl_texcoord%u not supported in this shader version\n",
usage_idx);
793 WARN(
"Partial writemasks not supported on texture coordinates in sm 1 and 2\n");
802 WARN(
"Varying type %u is not supported in shader model 1.x\n",
usage);
815 WARN(
"Int and bool constants are not supported in shader model 1 shaders\n");
816 WARN(
"Got %u int and %u boolean constants\n",
shader->num_ci,
shader->num_cb);
835 WARN(
"Int and bool constants are not supported in shader model 1 shaders\n");
836 WARN(
"Got %u int and %u boolean constants\n",
shader->num_ci,
shader->num_cb);
856 *has_components =
TRUE;
861 *has_components =
FALSE;
865 *has_components =
FALSE;
868 for(
i = 0;
i < 2;
i++) {
873 for(
i = 0;
i < 8;
i++) {
894 WARN(
"Relative addressing not supported for destination registers\n");
909 FIXME(
"Unexpected register type %u\n",
reg->type);
919 if(
reg->regnum != 0) {
920 WARN(
"Only a0 exists\n");
930 WARN(
"Predicate register is allowed only in vs_2_x\n");
934 if(
reg->regnum != 0) {
935 WARN(
"Only predicate register p0 exists\n");
944 WARN(
"Invalid register type for 1.x-2.x vertex shader\n");
973 switch(
reg->u.swizzle) {
997 FIXME(
"Unexpected register type %u\n",
reg->type);
1006 reg->rel_reg->regnum != 0 ||
1008 WARN(
"Relative addressing in vs_1_x is only allowed with a0.x\n");
1017 WARN(
"Invalid register type for 1.x vshader\n");
1057 for(
i = 0;
i < 2;
i++) {
1058 if(
reg->regnum ==
This->v_regnum[
i]) {
1062 for(
i = 0;
i < 8;
i++) {
1063 if(
reg->regnum ==
This->t_regnum[
i]) {
1068 WARN(
"Invalid ps 1/2 varying\n");
1077 WARN(
"Relative addressing not supported in <= ps_3_0\n");
1100 WARN(
"Invalid register type for <= ps_1_3 shader\n");
1110 WARN(
"Invalid source modifier %u for <= ps_1_3\n",
reg->srcmod);
1124 WARN(
"Relative addressing not supported for destination registers\n");
1140 WARN(
"Invalid dest register type for 1.x pshader\n");
1161 if(instr->
dst.rel_reg)
ret++;
1163 for(
i = 0;
i < srcs;
i++) {
1164 if(instr->
src[
i].rel_reg)
ret++;
1238 instr->
src[1].regnum > 3) {
1239 WARN(
"Unsupported sampler type %u regnum %u\n",
1240 instr->
src[1].type, instr->
src[1].regnum);
1244 WARN(
"Can only sample into a temp register\n");
1249 idx = instr->
src[1].regnum;
1254 WARN(
"Sampling from sampler s%u to register r%u is not possible in ps_1_x\n",
1261 if(instr->
src[0].regnum !=
This->t_regnum[
idx]) {
1262 WARN(
"Cannot sample from s%u with texture address data from interpolator %u\n",
1263 idx, instr->
src[0].regnum);
1277 TRACE(
"writing texreg2rgb\n");
1280 TRACE(
"writing texreg2ar\n");
1283 TRACE(
"writing texreg2gb\n");
1286 WARN(
"Unsupported src addr swizzle in dependent texld: 0x%08x\n", instr->
src[0].u.swizzle);
1300 WARN(
"Invalid address data source register\n");
1312 if((instr->
dst.regnum ==
T0_REG && instr->
src[0].regnum ==
This->t_regnum[0]) ||
1313 (instr->
dst.regnum ==
T1_REG && instr->
src[0].regnum ==
This->t_regnum[1]) ||
1314 (instr->
dst.regnum ==
T2_REG && instr->
src[0].regnum ==
This->t_regnum[2]) ||
1315 (instr->
dst.regnum ==
T3_REG && instr->
src[0].regnum ==
This->t_regnum[3])) {
1322 WARN(
"A varying -> temp copy is only supported with the SATURATE modifier in <=ps_1_3\n");
1326 }
else if(instr->
src[0].regnum ==
This->v_regnum[0] ||
1327 instr->
src[0].regnum ==
This->v_regnum[1]) {
1330 WARN(
"Unsupported varying -> temp mov in <= ps_1_3\n");
1385 WARN(
"Relative addressing not supported in <= ps_3_0\n");
1402 WARN(
"Invalid register type for ps_1_4 shader\n");
1411 WARN(
"Invalid source modifier %u for ps_1_4\n",
reg->srcmod);
1425 WARN(
"Relative addressing not supported for destination registers\n");
1441 WARN(
"Invalid dest register type for 1.x pshader\n");
1459 if(instr->
src[0].regnum ==
This->t_regnum[0] ||
1460 instr->
src[0].regnum ==
This->t_regnum[1] ||
1461 instr->
src[0].regnum ==
This->t_regnum[2] ||
1462 instr->
src[0].regnum ==
This->t_regnum[3] ||
1463 instr->
src[0].regnum ==
This->t_regnum[4] ||
1464 instr->
src[0].regnum ==
This->t_regnum[5]) {
1467 }
else if(instr->
src[0].regnum ==
This->v_regnum[0] ||
1468 instr->
src[0].regnum ==
This->v_regnum[1]) {
1471 WARN(
"Unsupported varying -> temp mov in ps_1_4\n");
1486 instr->
src[1].regnum > 5) {
1487 WARN(
"Unsupported sampler type %u regnum %u\n",
1488 instr->
src[1].type, instr->
src[1].regnum);
1492 WARN(
"Can only sample into a temp register\n");
1497 if(instr->
src[1].regnum != instr->
dst.regnum) {
1498 WARN(
"Sampling from sampler s%u to register r%u is not possible in ps_1_4\n",
1499 instr->
src[1].regnum, instr->
dst.regnum);
1579 switch(
reg->u.swizzle) {
1603 FIXME(
"Unexpected register type %u\n",
reg->type);
1617 if(
reg->regnum != 0) {
1618 WARN(
"Only regnum 0 is supported for the loop index register in vs_2_0\n");
1627 WARN(
"Predicate register is allowed only in vs_2_x\n");
1631 if(
reg->regnum > 0) {
1632 WARN(
"Only predicate register 0 is supported\n");
1640 WARN(
"Invalid register type for 2.0 vshader\n");
1665 int dsts = instr->
has_dst ? 1 : 0;
1806 for(
i = 0;
i <
shader->num_samplers;
i++) {
1839 WARN(
"Relative addressing not supported in <= ps_3_0\n");
1864 WARN(
"Predicate register not supported in ps_2_0\n");
1868 WARN(
"Predicate register with regnum %u not supported\n",
1876 WARN(
"Invalid register type for ps_2_0 shader\n");
1895 WARN(
"Relative addressing not supported for destination registers\n");
1910 WARN(
"Predicate register not supported in ps_2_0\n");
1922 WARN(
"Invalid dest register type for 2.x pshader\n");
2074 WARN(
"c%u[...] is unsupported in ps_3_0\n",
reg->regnum);
2080 reg->rel_reg->regnum == 0) {
2083 WARN(
"Unsupported relative addressing register\n");
2111 WARN(
"Relative addressing not supported for this shader type or register type\n");
2270 TRACE(
"Creating DirectX9 vertex shader 1.0 writer\n");
2275 TRACE(
"Creating DirectX9 vertex shader 1.1 writer\n");
2280 TRACE(
"Creating DirectX9 vertex shader 2.0 writer\n");
2285 TRACE(
"Creating DirectX9 vertex shader 2.x writer\n");
2290 TRACE(
"Creating DirectX9 vertex shader 3.0 writer\n");
2295 TRACE(
"Creating DirectX9 pixel shader 1.0 writer\n");
2300 TRACE(
"Creating DirectX9 pixel shader 1.1 writer\n");
2305 TRACE(
"Creating DirectX9 pixel shader 1.2 writer\n");
2310 TRACE(
"Creating DirectX9 pixel shader 1.3 writer\n");
2315 TRACE(
"Creating DirectX9 pixel shader 1.4 writer\n");
2320 TRACE(
"Creating DirectX9 pixel shader 2.0 writer\n");
2325 TRACE(
"Creating DirectX9 pixel shader 2.x writer\n");
2330 TRACE(
"Creating DirectX9 pixel shader 3.0 writer\n");
2338 WARN(
"Failed to allocate a bytecode writer instance\n");
2344 if(dxversion != 9) {
2345 WARN(
"Unsupported dxversion for vertex shader 1.0 requested: %u\n", dxversion);
2351 if(dxversion != 9) {
2352 WARN(
"Unsupported dxversion for vertex shader 1.1 requested: %u\n", dxversion);
2358 if(dxversion != 9) {
2359 WARN(
"Unsupported dxversion for vertex shader 2.0 requested: %u\n", dxversion);
2365 if(dxversion != 9) {
2366 WARN(
"Unsupported dxversion for vertex shader 2.x requested: %u\n", dxversion);
2372 if(dxversion != 9) {
2373 WARN(
"Unsupported dxversion for vertex shader 3.0 requested: %u\n", dxversion);
2380 if(dxversion != 9) {
2381 WARN(
"Unsupported dxversion for pixel shader 1.0 requested: %u\n", dxversion);
2387 if(dxversion != 9) {
2388 WARN(
"Unsupported dxversion for pixel shader 1.1 requested: %u\n", dxversion);
2394 if(dxversion != 9) {
2395 WARN(
"Unsupported dxversion for pixel shader 1.2 requested: %u\n", dxversion);
2401 if(dxversion != 9) {
2402 WARN(
"Unsupported dxversion for pixel shader 1.3 requested: %u\n", dxversion);
2408 if(dxversion != 9) {
2409 WARN(
"Unsupported dxversion for pixel shader 1.4 requested: %u\n", dxversion);
2416 if(dxversion != 9) {
2417 WARN(
"Unsupported dxversion for pixel shader 2.0 requested: %u\n", dxversion);
2424 if(dxversion != 9) {
2425 WARN(
"Unsupported dxversion for pixel shader 2.x requested: %u\n", dxversion);
2432 if(dxversion != 9) {
2433 WARN(
"Unsupported dxversion for pixel shader 3.0 requested: %u\n", dxversion);
2440 WARN(
"Unexpected shader version requested: %08x\n",
version);
2457 if(instr->
opcode == writer->
funcs->instructions[
i].opcode) {
2458 if(!writer->
funcs->instructions[
i].func) {
2459 WARN(
"Opcode %u not supported by this profile\n", instr->
opcode);
2462 writer->
funcs->instructions[
i].func(writer, instr,
buffer);
2468 FIXME(
"Unhandled instruction %u - %s\n", instr->
opcode,
2481 ERR(
"NULL shader structure, aborting\n");
2488 WARN(
"Could not create a bytecode writer instance. Either unsupported version\n");
2489 WARN(
"or out of memory\n");
2496 WARN(
"Failed to allocate a buffer for the shader bytecode\n");
2510 for(
i = 0;
i <
shader->num_instrs;
i++) {
2565 for(
i = 0;
i <
shader->num_instrs;
i++) {
2566 for(
j = 0;
j <
shader->instr[
i]->num_srcs;
j++) {
std::map< E_MODULE, HMODULE > mod
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void write_const(struct constant **consts, int num, DWORD opcode, DWORD reg_type, struct bytecode_buffer *buffer, BOOL len)
BOOL add_constI(struct bwriter_shader *shader, DWORD reg, INT x, INT y, INT z, INT w)
static void ps_1_0123_srcreg(struct bc_writer *This, const struct shader_reg *reg, struct bytecode_buffer *buffer)
static DWORD d3d9_dstmod(DWORD bwriter_mod)
static DWORD d3d9_opcode(DWORD bwriter_opcode)
BOOL record_declaration(struct bwriter_shader *shader, DWORD usage, DWORD usage_idx, DWORD mod, BOOL output, DWORD regnum, DWORD writemask, BOOL builtin)
static void write_constI(const struct bwriter_shader *shader, struct bytecode_buffer *buffer, BOOL len)
static HRESULT find_ps_builtin_semantics(struct bc_writer *This, const struct bwriter_shader *shader, DWORD texcoords)
static void vs_12_dstreg(struct bc_writer *This, const struct shader_reg *reg, struct bytecode_buffer *buffer, DWORD shift, DWORD mod)
BOOL add_constF(struct bwriter_shader *shader, DWORD reg, float x, float y, float z, float w)
HRESULT SlWriteBytecode(const struct bwriter_shader *shader, int dxversion, DWORD **result, DWORD *size)
static void instr_handler(struct bc_writer *This, const struct instruction *instr, struct bytecode_buffer *buffer)
static void sm_3_dstreg(struct bc_writer *This, const struct shader_reg *reg, struct bytecode_buffer *buffer, DWORD shift, DWORD mod)
static const struct bytecode_backend ps_2_x_backend
static void init_vs20_dx9_writer(struct bc_writer *writer)
static const struct instr_handler_table vs_2_x_handlers[]
static void ps_1_4_dstreg(struct bc_writer *This, const struct shader_reg *reg, struct bytecode_buffer *buffer, DWORD shift, DWORD mod)
static void write_declarations(struct bc_writer *This, struct bytecode_buffer *buffer, BOOL len, const struct declaration *decls, unsigned int num, DWORD type)
static DWORD d3d9_sampler(DWORD bwriter_sampler)
static const struct bytecode_backend ps_1_4_backend
BOOL record_sampler(struct bwriter_shader *shader, DWORD samptype, DWORD mod, DWORD regnum)
static DWORD d3dsp_register(D3DSHADER_PARAM_REGISTER_TYPE type, DWORD num)
static void sm_3_srcreg(struct bc_writer *This, const struct shader_reg *reg, struct bytecode_buffer *buffer)
static void instr_ps_1_4_texld(struct bc_writer *This, const struct instruction *instr, struct bytecode_buffer *buffer)
static HRESULT call_instr_handler(struct bc_writer *writer, const struct instruction *instr, struct bytecode_buffer *buffer)
static void instr_ps_1_4_mov(struct bc_writer *This, const struct instruction *instr, struct bytecode_buffer *buffer)
static const struct bytecode_backend ps_2_0_backend
static const struct bytecode_backend vs_1_x_backend
static const struct instr_handler_table vs_2_0_handlers[]
static void vs_1_x_header(struct bc_writer *This, const struct bwriter_shader *shader, struct bytecode_buffer *buffer)
static void write_constF(const struct bwriter_shader *shader, struct bytecode_buffer *buffer, BOOL len)
static void init_vs10_dx9_writer(struct bc_writer *writer)
static const struct instr_handler_table ps_3_handlers[]
static struct bc_writer * create_writer(DWORD version, DWORD dxversion)
static DWORD d3d9_writemask(DWORD bwriter_writemask)
static void init_vs2x_dx9_writer(struct bc_writer *writer)
struct instruction * alloc_instr(unsigned int srcs)
static void instr_ps_1_0123_texld(struct bc_writer *This, const struct instruction *instr, struct bytecode_buffer *buffer)
static DWORD d3d9_comparetype(DWORD asmshader_comparetype)
static const struct instr_handler_table ps_2_0_handlers[]
static DWORD instrlen(const struct instruction *instr, unsigned int srcs, unsigned int dsts)
static void put_dword(struct bytecode_buffer *buffer, DWORD value)
static void ps_2_header(struct bc_writer *This, const struct bwriter_shader *shader, struct bytecode_buffer *buffer)
static void vs_2_header(struct bc_writer *This, const struct bwriter_shader *shader, struct bytecode_buffer *buffer)
static DWORD map_vs_output(struct bc_writer *This, DWORD regnum, DWORD mask, DWORD *has_components)
static void init_ps30_dx9_writer(struct bc_writer *writer)
static void write_samplers(const struct bwriter_shader *shader, struct bytecode_buffer *buffer)
static void sm_3_header(struct bc_writer *This, const struct bwriter_shader *shader, struct bytecode_buffer *buffer)
static void init_vs11_dx9_writer(struct bc_writer *writer)
static void init_ps14_dx9_writer(struct bc_writer *writer)
static void ps_1_0123_dstreg(struct bc_writer *This, const struct shader_reg *reg, struct bytecode_buffer *buffer, DWORD shift, DWORD mod)
static void vs_1_x_srcreg(struct bc_writer *This, const struct shader_reg *reg, struct bytecode_buffer *buffer)
void SlDeleteShader(struct bwriter_shader *shader)
static DWORD map_ps_input(struct bc_writer *This, const struct shader_reg *reg)
static const struct bytecode_backend vs_2_0_backend
static void instr_ps_1_0123_mov(struct bc_writer *This, const struct instruction *instr, struct bytecode_buffer *buffer)
static void vs_2_srcreg(struct bc_writer *This, const struct shader_reg *reg, struct bytecode_buffer *buffer)
static DWORD d3d9_register(DWORD bwriter_register)
static void init_ps11_dx9_writer(struct bc_writer *writer)
static void sm_1_x_opcode(struct bc_writer *This, const struct instruction *instr, DWORD token, struct bytecode_buffer *buffer)
static void write_srcregs(struct bc_writer *This, const struct instruction *instr, struct bytecode_buffer *buffer)
static void sm_2_opcode(struct bc_writer *This, const struct instruction *instr, DWORD token, struct bytecode_buffer *buffer)
static const struct instr_handler_table ps_2_x_handlers[]
static const struct instr_handler_table vs_1_x_handlers[]
static const struct bytecode_backend vs_2_x_backend
BOOL add_constB(struct bwriter_shader *shader, DWORD reg, BOOL x)
static void ps_2_0_dstreg(struct bc_writer *This, const struct shader_reg *reg, struct bytecode_buffer *buffer, DWORD shift, DWORD mod)
static const struct bytecode_backend ps_1_0123_backend
static DWORD d3d9_swizzle(DWORD bwriter_swizzle)
static const struct bytecode_backend vs_3_backend
static const struct instr_handler_table vs_3_handlers[]
static void ps_2_srcreg(struct bc_writer *This, const struct shader_reg *reg, struct bytecode_buffer *buffer)
static void init_ps10_dx9_writer(struct bc_writer *writer)
static const struct instr_handler_table ps_1_4_handlers[]
static void ps_1_4_srcreg(struct bc_writer *This, const struct shader_reg *reg, struct bytecode_buffer *buffer)
static HRESULT vs_find_builtin_varyings(struct bc_writer *This, const struct bwriter_shader *shader)
static struct bytecode_buffer * allocate_buffer(void)
static void init_ps20_dx9_writer(struct bc_writer *writer)
static const struct bytecode_backend ps_3_backend
static void init_vs30_dx9_writer(struct bc_writer *writer)
static DWORD d3d9_srcmod(DWORD bwriter_srcmod)
static void init_ps12_dx9_writer(struct bc_writer *writer)
static void ps_1_x_header(struct bc_writer *This, const struct bwriter_shader *shader, struct bytecode_buffer *buffer)
static void init_ps13_dx9_writer(struct bc_writer *writer)
static void write_constB(const struct bwriter_shader *shader, struct bytecode_buffer *buffer, BOOL len)
static DWORD map_ps13_temp(struct bc_writer *This, const struct shader_reg *reg)
static const struct instr_handler_table ps_1_0123_handlers[]
static void ps_1_4_header(struct bc_writer *This, const struct bwriter_shader *shader, struct bytecode_buffer *buffer)
static void init_ps2x_dx9_writer(struct bc_writer *writer)
BOOL add_instruction(struct bwriter_shader *shader, struct instruction *instr)
#define D3DSP_WRITEMASK_ALL
#define D3DSP_WRITEMASK_2
#define D3DVS_SWIZZLE_MASK
#define D3DSP_WRITEMASK_3
#define D3DSP_DSTSHIFT_SHIFT
#define D3DSP_DSTSHIFT_MASK
#define D3DSI_OPCODE_MASK
#define D3DSP_WRITEMASK_0
enum _D3DSHADER_PARAM_REGISTER_TYPE D3DSHADER_PARAM_REGISTER_TYPE
#define D3DSP_WRITEMASK_1
#define D3DVS_ADDRESSMODE_MASK
#define D3DSP_REGTYPE_MASK
#define D3DSP_REGTYPE_SHIFT
@ D3DVS_ADDRMODE_RELATIVE
#define D3DSP_REGTYPE_MASK2
#define D3DSI_INSTLENGTH_SHIFT
@ D3DSPDM_PARTIALPRECISION
#define D3DSP_DCL_USAGE_MASK
#define D3DSHADER_INSTRUCTION_PREDICATED
#define D3DSP_REGTYPE_SHIFT2
#define D3DSI_TEXLD_PROJECT
#define D3DSP_DCL_USAGE_SHIFT
#define D3DSP_REGNUM_MASK
#define D3DSP_TEXTURETYPE_MASK
#define D3DSP_DCL_USAGEINDEX_MASK
#define D3DSP_DCL_USAGEINDEX_SHIFT
#define BWRITERVS_SWIZZLE_Z
#define BWRITERSP_WRITEMASK_3
#define BWRITERSP_WRITEMASK_0
static BOOL d3dcompiler_free(void *ptr)
@ BWRITERSPDM_PARTIALPRECISION
@ BWRITERSPDM_MSAMPCENTROID
#define INSTRARRAY_INITIAL_SIZE
static void * d3dcompiler_realloc(void *ptr, SIZE_T size)
const char * debug_print_opcode(DWORD opcode) DECLSPEC_HIDDEN
@ BWRITERDECLUSAGE_POSITION
@ BWRITERDECLUSAGE_POSITIONT
@ BWRITERDECLUSAGE_TEXCOORD
#define BWRITERSP_WRITEMASK_ALL
#define BWRITERVS_SWIZZLE_X
static void * d3dcompiler_alloc(SIZE_T size)
#define BWRITERPS_VERSION(major, minor)
#define BWRITERVS_SWIZZLE_W
#define BWRITERVS_NOSWIZZLE
#define BWRITERVS_VERSION(major, minor)
#define BWRITERSP_WRITEMASK_1
#define BYTECODEBUFFER_INITIAL_SIZE
#define BWRITERSP_WRITEMASK_2
#define BWRITERVS_SWIZZLE_SHIFT
@ BWRITERSIO_TEXM3x2DEPTH
@ BWRITERSIO_TEXM3x3VSPEC
#define BWRITERVS_SWIZZLE_Y
static int instr_def(const struct instr_info *info, DWORD **ptr, char *buffer, BOOL ps)
static int instr_dcl(const struct instr_info *info, DWORD **ptr, char *buffer, BOOL ps)
static const WCHAR version[]
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei GLenum type
GLint GLint GLint GLint GLint GLint y
GLubyte GLubyte GLubyte GLubyte w
GLsizeiptr const GLvoid GLenum usage
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat token
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
const struct bytecode_backend * funcs
union constant::@230 value[4]
enum bwriter_comparison_type comptype
struct shader_reg predicate
type_t * reg_type(type_t *type, const char *name, struct namespace *namespace, int t)