32 unsigned int max_capacity, new_capacity;
35 if (
count <= *capacity)
38 max_capacity = ~0
u /
size;
39 if (
count > max_capacity)
42 new_capacity =
max(8, *capacity);
43 while (new_capacity <
count && new_capacity <= max_capacity / 2)
45 if (new_capacity <
count)
48 if (!(new_elements =
realloc(*elements, new_capacity *
size)))
50 ERR(
"Failed to allocate memory.\n");
54 *elements = new_elements;
55 *capacity = new_capacity;
76 ERR(
"Failed to allocate memory for an instruction structure\n");
83 ERR(
"Failed to allocate memory for instruction registers\n");
126 ERR(
"Failed to grow the constants array\n");
129 shader->constF = newarray;
136 ERR(
"Failed to allocate the constants array\n");
141 newconst =
calloc(1,
sizeof(*newconst));
144 ERR(
"Failed to allocate a new constant\n");
168 ERR(
"Failed to grow the constants array\n");
171 shader->constI = newarray;
178 ERR(
"Failed to allocate the constants array\n");
183 newconst =
calloc(1,
sizeof(*newconst));
186 ERR(
"Failed to allocate a new constant\n");
210 ERR(
"Failed to grow the constants array\n");
213 shader->constB = newarray;
220 ERR(
"Failed to allocate the constants array\n");
225 newconst =
calloc(1,
sizeof(*newconst));
228 ERR(
"Failed to allocate a new constant\n");
243 unsigned int i, *
num;
261 *decl =
calloc(1,
sizeof(**decl));
264 ERR(
"Error allocating declarations array\n");
272 for (
i = 0;
i < *
num;
i++)
275 WARN(
"Declaration of register %u already exists, writemask match 0x%x\n",
279 newdecl =
realloc(*decl,
sizeof(**decl) * ((*
num) + 1));
282 ERR(
"Error reallocating declarations array\n");
304 if (
shader->num_samplers == 0)
309 ERR(
"Error allocating samplers array\n");
317 for (
i = 0;
i <
shader->num_samplers;
i++)
321 WARN(
"Sampler %u already declared\n",
regnum);
330 ERR(
"Error reallocating samplers array\n");
333 shader->samplers = newarray;
430 ERR(
"Invalid shader type %#x.\n",
shader->type);
476 switch (bwriter_srcmod)
493 FIXME(
"Unhandled BWRITERSPSM token %#x.\n", bwriter_srcmod);
511 switch (asmshader_comparetype)
520 FIXME(
"Unexpected BWRITER_COMPARISON type %#x.\n", asmshader_comparetype);
532 FIXME(
"Unexpected BWRITERSAMPLER_TEXTURE_TYPE type %#x.\n", bwriter_sampler);
558 FIXME(
"Unexpected BWRITERSPR %#x.\n", bwriter_register);
564 switch (bwriter_opcode)
657 FIXME(
"Unhandled BWRITERSIO token %#x.\n", bwriter_opcode);
682 if (writer->
shader->major_version > 1)
685 for(
i = 0;
i <
num;
i++) {
718 for(
i = 0;
i <
num;
i++) {
742 for (
i = 0;
i <
shader->num_outputs;
i++)
744 if (!
shader->outputs[
i].builtin)
758 WARN(
"dcl_position%u not supported in sm 1/2 shaders.\n",
usage_idx);
768 WARN(
"dcl_color%u not supported in sm 1/2 shaders.\n",
usage_idx);
773 WARN(
"Only WRITEMASK_ALL is supported on color in sm 1/2\n");
783 WARN(
"dcl_color%u not supported in sm 1/2 shaders.\n",
usage_idx);
791 WARN(
"Partial writemasks not supported on texture coordinates in sm 1 and 2\n");
801 WARN(
"dcl_psize%u not supported in sm 1/2 shaders.\n",
usage_idx);
812 WARN(
"dcl_fog%u not supported in sm 1 shaders.\n",
usage_idx);
818 WARN(
"Unsupported fog writemask\n");
827 WARN(
"Varying type %u is not supported in shader model 1.x.\n",
usage);
839 WARN(
"Int and bool constants are not supported in shader model 1 shaders\n");
840 WARN(
"Got %u int and %u boolean constants\n",
shader->num_ci,
shader->num_cb);
863 for (
i = 0;
i < 8;
i++)
868 if (!
shader->inputs[
i].builtin)
881 WARN(
"dcl_color%u not supported in sm 1 shaders\n",
usage_idx);
886 WARN(
"Only WRITEMASK_ALL is supported on color in sm 1\n");
896 WARN(
"dcl_texcoord%u not supported in this shader version\n",
usage_idx);
903 WARN(
"Partial writemasks not supported on texture coordinates in sm 1 and 2\n");
911 WARN(
"Varying type %u is not supported in shader model 1.x\n",
usage);
924 WARN(
"Int and bool constants are not supported in shader model 1 shaders\n");
925 WARN(
"Got %u int and %u boolean constants\n",
shader->num_ci,
shader->num_cb);
944 WARN(
"Int and bool constants are not supported in shader model 1 shaders\n");
945 WARN(
"Got %u int and %u boolean constants\n",
shader->num_ci,
shader->num_cb);
967 *has_components =
TRUE;
974 *has_components =
FALSE;
979 *has_components =
FALSE;
982 for (
i = 0;
i < 2;
i++)
987 for (
i = 0;
i < 8;
i++)
1009 WARN(
"Relative addressing not supported for destination registers\n");
1025 FIXME(
"Unexpected register type %u.\n",
reg->type);
1035 if (
reg->regnum != 0)
1037 WARN(
"Only a0 exists\n");
1046 if (writer->
shader->major_version != 2 || writer->
shader->minor_version != 1)
1048 WARN(
"Predicate register is allowed only in vs_2_x\n");
1052 if (
reg->regnum != 0)
1054 WARN(
"Only predicate register p0 exists\n");
1063 WARN(
"Invalid register type for 1.x-2.x vertex shader\n");
1091 switch (
reg->swizzle)
1116 FIXME(
"Unexpected register type %u.\n",
reg->type);
1128 WARN(
"Relative addressing in vs_1_x is only allowed with a0.x\n");
1137 WARN(
"Invalid register type for 1.x vshader\n");
1188 WARN(
"Invalid ps 1/2 varying\n");
1199 WARN(
"Relative addressing not supported in <= ps_3_0\n");
1223 WARN(
"Invalid register type for <= ps_1_3 shader\n");
1234 WARN(
"Invalid source modifier %u for <= ps_1_3\n",
reg->srcmod);
1249 WARN(
"Relative addressing not supported for destination registers\n");
1266 WARN(
"Invalid dest register type for 1.x pshader\n");
1286 if (dsts && instr->
dst.rel_reg)
1288 for (
i = 0;
i < srcs; ++
i)
1289 if (instr->
src[
i].rel_reg)
1363 WARN(
"Unsupported sampler type %u regnum %u.\n", instr->
src[1].type, instr->
src[1].regnum);
1369 WARN(
"Can only sample into a temp register\n");
1374 idx = instr->
src[1].regnum;
1378 WARN(
"Sampling from sampler s%u to register r%u is not possible in ps_1_x\n",
idx, instr->
dst.regnum);
1387 WARN(
"Cannot sample from s%u with texture address data from interpolator %u\n",
idx, instr->
src[0].regnum);
1398 swizzlemask = 3 | (3 << 2) | (3 << 4);
1401 TRACE(
"writing texreg2rgb\n");
1406 TRACE(
"writing texreg2ar\n");
1411 TRACE(
"writing texreg2gb\n");
1416 WARN(
"Unsupported src addr swizzle in dependent texld: 0x%08x\n", instr->
src[0].swizzle);
1432 WARN(
"Invalid address data source register\n");
1459 WARN(
"A varying -> temp copy is only supported with the SATURATE modifier in <=ps_1_3\n");
1470 WARN(
"Unsupported varying -> temp mov in <= ps_1_3\n");
1527 WARN(
"Relative addressing not supported in <= ps_3_0.\n");
1545 WARN(
"Invalid register type for ps_1_4 shader\n");
1554 WARN(
"Invalid source modifier %u for ps_1_4\n",
reg->srcmod);
1569 WARN(
"Relative addressing not supported for destination registers\n");
1586 WARN(
"Invalid dest register type for 1.x pshader\n");
1618 WARN(
"Unsupported varying -> temp mov in ps_1_4\n");
1634 WARN(
"Unsupported sampler type %u regnum %u.\n",
1635 instr->
src[1].type, instr->
src[1].regnum);
1641 WARN(
"Can only sample into a temp register\n");
1646 if (instr->
src[1].regnum != instr->
dst.regnum)
1648 WARN(
"Sampling from sampler s%u to register r%u is not possible in ps_1_4.\n",
1649 instr->
src[1].regnum, instr->
dst.regnum);
1728 switch (
reg->swizzle)
1753 FIXME(
"Unexpected register type %u.\n",
reg->type);
1767 if (
reg->regnum != 0)
1769 WARN(
"Only regnum 0 is supported for the loop index register in vs_2_0\n");
1777 if (writer->
shader->major_version != 2 || writer->
shader->minor_version != 1)
1779 WARN(
"Predicate register is allowed only in vs_2_x\n");
1783 if (
reg->regnum > 0)
1785 WARN(
"Only predicate register 0 is supported\n");
1793 WARN(
"Invalid register type for 2.0 vshader\n");
1815 unsigned int dst_count = instr->
has_dst ? 1 : 0;
1959 for (
i = 0;
i <
shader->num_samplers; ++
i)
1994 WARN(
"Relative addressing not supported in <= ps_3_0\n");
2019 if (writer->
shader->minor_version == 0)
2021 WARN(
"Predicate register not supported in ps_2_0\n");
2026 WARN(
"Predicate register with regnum %u not supported.\n",
reg->regnum);
2033 WARN(
"Invalid register type for ps_2_0 shader\n");
2052 WARN(
"Relative addressing not supported for destination registers\n");
2067 if (writer->
shader->minor_version == 0)
2069 WARN(
"Predicate register not supported in ps_2_0\n");
2081 WARN(
"Invalid dest register type for 2.x pshader\n");
2235 WARN(
"c%u[...] is unsupported in ps_3_0.\n",
reg->regnum);
2247 WARN(
"Unsupported relative addressing register\n");
2276 WARN(
"Relative addressing not supported for this shader type or register type\n");
2463 if (instr->
opcode == writer->
funcs->instructions[
i].opcode)
2465 if (!writer->
funcs->instructions[
i].func)
2467 WARN(
"Opcode %u not supported by this profile.\n", instr->
opcode);
2470 writer->
funcs->instructions[
i].func(writer, instr,
buffer);
2487 ERR(
"NULL shader structure, aborting\n");
2491 if (!(writer =
calloc(1,
sizeof(*writer))))
2507 FIXME(
"Unsupported shader type %#x, version %u.%u.\n",
2518 WARN(
"Failed to allocate a buffer for the shader bytecode\n");
2532 for(
i = 0;
i <
shader->num_instrs;
i++) {
2587 for(
i = 0;
i <
shader->num_instrs;
i++) {
2588 for(
j = 0;
j <
shader->instr[
i]->num_srcs;
j++) {
std::map< E_MODULE, HMODULE > mod
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static uint32_t d3d9_opcode(uint32_t bwriter_opcode)
static void put_u32(struct bytecode_buffer *buffer, uint32_t value)
static uint32_t d3d9_srcmod(uint32_t bwriter_srcmod)
static const struct @269 shader_backends[]
BOOL add_constB(struct bwriter_shader *shader, uint32_t reg, BOOL x)
static void write_constI(const struct bwriter_shader *shader, struct bytecode_buffer *buffer, BOOL len)
static void sm_3_dstreg(struct bc_writer *writer, const struct shader_reg *reg, struct bytecode_buffer *buffer, uint32_t shift, uint32_t mod)
static void write_srcregs(struct bc_writer *writer, const struct instruction *instr, struct bytecode_buffer *buffer)
static void instr_ps_1_0123_mov(struct bc_writer *writer, const struct instruction *instr, struct bytecode_buffer *buffer)
static uint32_t d3d9_swizzle(uint32_t bwriter_swizzle)
static const struct bytecode_backend ps_2_x_backend
static const struct instr_handler_table vs_2_x_handlers[]
static uint32_t map_vs_output(struct bc_writer *writer, uint32_t regnum, uint32_t mask, BOOL *has_components)
static const struct bytecode_backend ps_1_4_backend
static BOOL array_reserve(void **elements, unsigned int *capacity, unsigned int count, unsigned int size)
static void write_const(struct constant **consts, int num, uint32_t opcode, uint32_t reg_type, struct bytecode_buffer *buffer, BOOL len)
HRESULT shader_write_bytecode(const struct bwriter_shader *shader, uint32_t **result, uint32_t *size)
static uint32_t d3d9_sampler(uint32_t bwriter_sampler)
static HRESULT call_instr_handler(struct bc_writer *writer, const struct instruction *instr, struct bytecode_buffer *buffer)
static void ps_1_4_dstreg(struct bc_writer *writer, const struct shader_reg *reg, struct bytecode_buffer *buffer, uint32_t shift, uint32_t mod)
const struct bytecode_backend * backend
static uint32_t map_ps_input(struct bc_writer *writer, const struct shader_reg *reg)
static const struct bytecode_backend ps_2_0_backend
static uint32_t sm1_version(const struct bwriter_shader *shader)
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 HRESULT find_ps_builtin_semantics(struct bc_writer *writer, const struct bwriter_shader *shader, uint32_t texcoords)
static void write_constF(const struct bwriter_shader *shader, struct bytecode_buffer *buffer, BOOL len)
static void ps_1_4_srcreg(struct bc_writer *writer, const struct shader_reg *reg, struct bytecode_buffer *buffer)
static uint32_t d3d9_register(uint32_t bwriter_register)
BOOL add_constF(struct bwriter_shader *shader, uint32_t reg, float x, float y, float z, float w)
static const struct instr_handler_table ps_3_handlers[]
static uint32_t map_ps13_temp(struct bc_writer *writer, const struct shader_reg *reg)
BOOL record_sampler(struct bwriter_shader *shader, uint32_t samptype, uint32_t mod, uint32_t regnum)
static void sm_2_opcode(struct bc_writer *writer, const struct instruction *instr, uint32_t token, struct bytecode_buffer *buffer)
struct instruction * alloc_instr(unsigned int srcs)
static const struct instr_handler_table ps_2_0_handlers[]
static void sm_3_srcreg(struct bc_writer *writer, const struct shader_reg *reg, struct bytecode_buffer *buffer)
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 void instr_ps_1_4_mov(struct bc_writer *writer, const struct instruction *instr, struct bytecode_buffer *buffer)
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 write_declarations(struct bc_writer *writer, struct bytecode_buffer *buffer, const struct declaration *decls, unsigned int num, uint32_t type)
static HRESULT vs_find_builtin_varyings(struct bc_writer *writer, const struct bwriter_shader *shader)
void SlDeleteShader(struct bwriter_shader *shader)
static uint32_t d3d9_writemask(uint32_t bwriter_writemask)
static const struct bytecode_backend vs_2_0_backend
static uint32_t d3d9_comparetype(uint32_t asmshader_comparetype)
static uint32_t d3d9_dstmod(uint32_t bwriter_mod)
static void ps_2_srcreg(struct bc_writer *writer, const struct shader_reg *reg, struct bytecode_buffer *buffer)
static const struct instr_handler_table ps_2_x_handlers[]
static void instr_handler(struct bc_writer *writer, const struct instruction *instr, struct bytecode_buffer *buffer)
static const struct instr_handler_table vs_1_x_handlers[]
static void ps_1_0123_srcreg(struct bc_writer *writer, const struct shader_reg *reg, struct bytecode_buffer *buffer)
static void sm_1_x_opcode(struct bc_writer *writer, const struct instruction *instr, uint32_t token, struct bytecode_buffer *buffer)
static const struct bytecode_backend vs_2_x_backend
static void instr_ps_1_4_texld(struct bc_writer *writer, const struct instruction *instr, struct bytecode_buffer *buffer)
static const struct bytecode_backend ps_1_0123_backend
static const struct bytecode_backend vs_3_backend
static void vs_12_dstreg(struct bc_writer *writer, const struct shader_reg *reg, struct bytecode_buffer *buffer, uint32_t shift, uint32_t mod)
static const struct instr_handler_table vs_3_handlers[]
static const struct instr_handler_table ps_1_4_handlers[]
void(* instr_writer)(struct bc_writer *writer, const struct instruction *instr, struct bytecode_buffer *buffer)
static void ps_2_0_dstreg(struct bc_writer *writer, const struct shader_reg *reg, struct bytecode_buffer *buffer, uint32_t shift, uint32_t mod)
static unsigned int instrlen(const struct instruction *instr, unsigned int srcs, unsigned int dsts)
static struct bytecode_buffer * allocate_buffer(void)
BOOL record_declaration(struct bwriter_shader *shader, uint32_t usage, uint32_t usage_idx, uint32_t mod, BOOL output, uint32_t regnum, uint32_t writemask, BOOL builtin)
static const struct bytecode_backend ps_3_backend
static void vs_2_srcreg(struct bc_writer *writer, const struct shader_reg *reg, struct bytecode_buffer *buffer)
static void vs_1_x_srcreg(struct bc_writer *writer, const struct shader_reg *reg, struct bytecode_buffer *buffer)
static void ps_1_x_header(struct bc_writer *This, const struct bwriter_shader *shader, struct bytecode_buffer *buffer)
static void write_constB(const struct bwriter_shader *shader, struct bytecode_buffer *buffer, BOOL len)
static void ps_1_0123_dstreg(struct bc_writer *writer, const struct shader_reg *reg, struct bytecode_buffer *buffer, uint32_t shift, uint32_t mod)
static const struct instr_handler_table ps_1_0123_handlers[]
static void instr_ps_1_0123_texld(struct bc_writer *writer, const struct instruction *instr, struct bytecode_buffer *buffer)
static void ps_1_4_header(struct bc_writer *This, const struct bwriter_shader *shader, struct bytecode_buffer *buffer)
BOOL add_constI(struct bwriter_shader *shader, uint32_t reg, int x, int y, int z, int w)
static uint32_t d3dsp_register(D3DSHADER_PARAM_REGISTER_TYPE type, uint32_t num)
BOOL add_instruction(struct bwriter_shader *shader, struct instruction *instr)
#define D3DSP_WRITEMASK_ALL
#define D3DSP_WRITEMASK_2
#define D3DPS_VERSION(major, minor)
#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 D3DVS_VERSION(major, minor)
#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
@ BWRITERSPDM_PARTIALPRECISION
@ BWRITERSPDM_MSAMPCENTROID
@ BWRITERDECLUSAGE_POSITION
@ BWRITERDECLUSAGE_POSITIONT
@ BWRITERDECLUSAGE_TEXCOORD
#define BWRITERSP_WRITEMASK_ALL
#define BWRITERVS_SWIZZLE_X
#define BWRITERVS_SWIZZLE_W
#define BWRITERVS_NOSWIZZLE
#define BWRITERSP_WRITEMASK_1
#define BWRITERSP_WRITEMASK_2
@ BWRITERSIO_TEXM3x2DEPTH
@ BWRITERSIO_TEXM3x3VSPEC
#define BWRITERVS_SWIZZLE_Y
const char * debug_print_opcode(uint32_t opcode)
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
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 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
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
for(i=0;i< sizeof(testsuite)/sizeof(testsuite[0]);++i) ok(call_test(testsuite[i].func)
enum vkd3d_shader_register_type reg_type
struct vkd3d_spirv_builtin builtin
const struct bwriter_shader * shader
const struct bytecode_backend * funcs
const struct bytecode_backend::instr_handler_table * instructions
void(* dstreg)(struct bc_writer *writer, const struct shader_reg *reg, struct bytecode_buffer *buffer, uint32_t shift, uint32_t mod)
void(* opcode)(struct bc_writer *writer, const struct instruction *instr, uint32_t token, struct bytecode_buffer *buffer)
void(* srcreg)(struct bc_writer *writer, const struct shader_reg *reg, struct bytecode_buffer *buffer)
union constant::@270 value[4]
enum bwriter_comparison_type comptype
struct shader_reg predicate