ReactOS  0.4.14-dev-822-g065afd9
d3dcompiler_private.h
Go to the documentation of this file.
1 /*
2  * Copyright 2008 Stefan Dösinger
3  * Copyright 2009 Matteo Bruni
4  * Copyright 2010 Rico Schüller
5  * Copyright 2012 Matteo Bruni for CodeWeavers
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20  */
21 
22 #ifndef __WINE_D3DCOMPILER_PRIVATE_H
23 #define __WINE_D3DCOMPILER_PRIVATE_H
24 
25 #include "wine/debug.h"
26 #include "wine/list.h"
27 #include "wine/rbtree.h"
28 #include "wine/heap.h"
29 
30 #define COBJMACROS
31 #include "windef.h"
32 #include "winbase.h"
33 #include "objbase.h"
34 
35 #include "d3dcompiler.h"
36 
37 #include <assert.h>
38 
39 /*
40  * This doesn't belong here, but for some functions it is possible to return that value,
41  * see http://msdn.microsoft.com/en-us/library/bb205278%28v=VS.85%29.aspx
42  * The original definition is in D3DX10core.h.
43  */
44 #define D3DERR_INVALIDCALL 0x8876086c
45 
46 /* TRACE helper functions */
50 
52 {
56 };
57 
59 {
67 };
68 
69 struct constant {
71  union {
72  float f;
73  INT i;
76  } value[4];
77 };
78 
79 struct shader_reg {
84  union {
87  } u;
88 };
89 
90 struct instruction {
96  struct shader_reg dst;
97  struct shader_reg *src;
98  unsigned int num_srcs; /* For freeing the rel_regs */
102 };
103 
104 struct declaration {
110 };
111 
112 struct samplerdecl {
116 };
117 
118 #define INSTRARRAY_INITIAL_SIZE 8
121 
122  /* Shader version selected */
124 
125  /* Local constants. Every constant that is not defined below is loaded from
126  * the global constant set at shader runtime
127  */
128  struct constant **constF;
129  struct constant **constI;
130  struct constant **constB;
131  unsigned int num_cf, num_ci, num_cb;
132 
133  /* Declared input and output varyings */
135  unsigned int num_inputs, num_outputs;
137  unsigned int num_samplers;
138 
139  /* Are special pixel shader 3.0 registers declared? */
141 
142  /* Array of shader instructions - The shader code itself */
143  struct instruction **instr;
145 };
146 
147 static inline void *d3dcompiler_alloc(SIZE_T size)
148 {
150 }
151 
152 static inline void *d3dcompiler_realloc(void *ptr, SIZE_T size)
153 {
154  return HeapReAlloc(GetProcessHeap(), 0, ptr, size);
155 }
156 
157 static inline BOOL d3dcompiler_free(void *ptr)
158 {
159  return HeapFree(GetProcessHeap(), 0, ptr);
160 }
161 
162 static inline char *d3dcompiler_strdup(const char *string)
163 {
164  char *copy;
165  SIZE_T len;
166 
167  if (!string)
168  return NULL;
169 
170  len = strlen(string);
171  copy = d3dcompiler_alloc(len + 1);
172  if (copy)
173  memcpy(copy, string, len + 1);
174  return copy;
175 }
176 
177 struct asm_parser;
178 
179 /* This structure is only used in asmshader.y, but since the .l file accesses the semantic types
180  * too it has to know it as well
181  */
182 struct rel_reg {
188 };
189 
190 #define MAX_SRC_REGS 4
191 
192 struct src_regs {
194  unsigned int count;
195 };
196 
198  void (*constF)(struct asm_parser *This, DWORD reg, float x, float y, float z, float w);
201 
203  const struct shader_reg *dst);
204  void (*srcreg)(struct asm_parser *This, struct instruction *instr, int num,
205  const struct shader_reg *src);
206 
208  const struct shader_reg *predicate);
210 
212  const struct shader_reg *reg);
214  DWORD mod, const struct shader_reg *reg);
215  void (*dcl_sampler)(struct asm_parser *This, DWORD samptype, DWORD mod,
216  DWORD regnum, unsigned int line_no);
217 
218  void (*end)(struct asm_parser *This);
219 
221  enum bwriter_comparison_type comp, const struct shader_reg *dst,
222  const struct src_regs *srcs, int expectednsrcs);
223 };
224 
225 struct instruction *alloc_instr(unsigned int srcs) DECLSPEC_HIDDEN;
227 BOOL add_constF(struct bwriter_shader *shader, DWORD reg, float x, float y, float z, float w) DECLSPEC_HIDDEN;
231  DWORD mod, BOOL output, DWORD regnum, DWORD writemask, BOOL builtin) DECLSPEC_HIDDEN;
233 
234 #define MESSAGEBUFFER_INITIAL_SIZE 256
235 
237 {
241 };
242 
244 {
245  char *string;
246  unsigned int size;
247  unsigned int capacity;
248 };
249 
251 {
252  /* The function table of the parser implementation */
253  const struct asmparser_backend *funcs;
254 
255  /* Private data follows */
257  unsigned int m3x3pad_count;
258 
261  unsigned int line_no;
262 };
263 
264 extern struct asm_parser asm_ctx DECLSPEC_HIDDEN;
265 
279 
281 
282 #ifdef __GNUC__
283 #define PRINTF_ATTR(fmt,args) __attribute__((format (printf,fmt,args)))
284 #else
285 #define PRINTF_ATTR(fmt,args)
286 #endif
287 
289 void WINAPIV asmparser_message(struct asm_parser *ctx, const char *fmt, ...) PRINTF_ATTR(2,3) DECLSPEC_HIDDEN;
291 {
292  if (update == PARSE_ERR)
293  *current = PARSE_ERR;
294  else if (update == PARSE_WARN && *current == PARSE_SUCCESS)
295  *current = PARSE_WARN;
296 }
297 
298 /* A reasonable value as initial size */
299 #define BYTECODEBUFFER_INITIAL_SIZE 32
304  /* For tracking rare out of memory situations without passing
305  * return values around everywhere
306  */
308 };
309 
310 struct bc_writer; /* Predeclaration for use in vtable parameters */
311 
312 typedef void (*instr_writer)(struct bc_writer *This,
313  const struct instruction *instr,
314  struct bytecode_buffer *buffer);
315 
317  void (*header)(struct bc_writer *This, const struct bwriter_shader *shader,
318  struct bytecode_buffer *buffer);
319  void (*end)(struct bc_writer *This, const struct bwriter_shader *shader,
320  struct bytecode_buffer *buffer);
321  void (*srcreg)(struct bc_writer *This, const struct shader_reg *reg,
322  struct bytecode_buffer *buffer);
323  void (*dstreg)(struct bc_writer *This, const struct shader_reg *reg,
325  void (*opcode)(struct bc_writer *This, const struct instruction *instr,
326  DWORD token, struct bytecode_buffer *buffer);
327 
328  const struct instr_handler_table {
331  } *instructions;
332 };
333 
334 /* Bytecode writing stuff */
335 struct bc_writer {
336  const struct bytecode_backend *funcs;
337 
338  /* Avoid result checking */
340 
342 
343  /* Vertex shader varying mapping */
351 
352  /* Pixel shader specific members */
355 };
356 
357 /* Debug utility routines */
361 const char *debug_print_dstreg(const struct shader_reg *reg) DECLSPEC_HIDDEN;
362 const char *debug_print_srcreg(const struct shader_reg *reg) DECLSPEC_HIDDEN;
363 const char *debug_print_comp(DWORD comp) DECLSPEC_HIDDEN;
365 
366 /* Used to signal an incorrect swizzle/writemask */
367 #define SWIZZLE_ERR ~0U
368 
369 /* Enumerations and defines used in the bytecode writer intermediate
370  * representation. */
372 {
422 
457 
461 };
462 
464 {
483 };
484 
486 {
490 };
491 
492 #define BWRITERSP_WRITEMASK_0 0x1 /* .x r */
493 #define BWRITERSP_WRITEMASK_1 0x2 /* .y g */
494 #define BWRITERSP_WRITEMASK_2 0x4 /* .z b */
495 #define BWRITERSP_WRITEMASK_3 0x8 /* .w a */
496 #define BWRITERSP_WRITEMASK_ALL 0xf /* all */
497 
499 {
504 };
505 
507 {
513 };
514 
515 #define BWRITERSI_TEXLD_PROJECT 1
516 #define BWRITERSI_TEXLD_BIAS 2
517 
519 {
534 };
535 
536 #define BWRITER_SM1_VS 0xfffeu
537 #define BWRITER_SM1_PS 0xffffu
538 
539 #define BWRITERPS_VERSION(major, minor) ((BWRITER_SM1_PS << 16) | ((major) << 8) | (minor))
540 #define BWRITERVS_VERSION(major, minor) ((BWRITER_SM1_VS << 16) | ((major) << 8) | (minor))
541 
542 #define BWRITERVS_SWIZZLE_SHIFT 16
543 #define BWRITERVS_SWIZZLE_MASK (0xFF << BWRITERVS_SWIZZLE_SHIFT)
544 
545 #define BWRITERVS_X_X (0 << BWRITERVS_SWIZZLE_SHIFT)
546 #define BWRITERVS_X_Y (1 << BWRITERVS_SWIZZLE_SHIFT)
547 #define BWRITERVS_X_Z (2 << BWRITERVS_SWIZZLE_SHIFT)
548 #define BWRITERVS_X_W (3 << BWRITERVS_SWIZZLE_SHIFT)
549 
550 #define BWRITERVS_Y_X (0 << (BWRITERVS_SWIZZLE_SHIFT + 2))
551 #define BWRITERVS_Y_Y (1 << (BWRITERVS_SWIZZLE_SHIFT + 2))
552 #define BWRITERVS_Y_Z (2 << (BWRITERVS_SWIZZLE_SHIFT + 2))
553 #define BWRITERVS_Y_W (3 << (BWRITERVS_SWIZZLE_SHIFT + 2))
554 
555 #define BWRITERVS_Z_X (0 << (BWRITERVS_SWIZZLE_SHIFT + 4))
556 #define BWRITERVS_Z_Y (1 << (BWRITERVS_SWIZZLE_SHIFT + 4))
557 #define BWRITERVS_Z_Z (2 << (BWRITERVS_SWIZZLE_SHIFT + 4))
558 #define BWRITERVS_Z_W (3 << (BWRITERVS_SWIZZLE_SHIFT + 4))
559 
560 #define BWRITERVS_W_X (0 << (BWRITERVS_SWIZZLE_SHIFT + 6))
561 #define BWRITERVS_W_Y (1 << (BWRITERVS_SWIZZLE_SHIFT + 6))
562 #define BWRITERVS_W_Z (2 << (BWRITERVS_SWIZZLE_SHIFT + 6))
563 #define BWRITERVS_W_W (3 << (BWRITERVS_SWIZZLE_SHIFT + 6))
564 
565 #define BWRITERVS_NOSWIZZLE (BWRITERVS_X_X | BWRITERVS_Y_Y | BWRITERVS_Z_Z | BWRITERVS_W_W)
566 
567 #define BWRITERVS_SWIZZLE_X (BWRITERVS_X_X | BWRITERVS_Y_X | BWRITERVS_Z_X | BWRITERVS_W_X)
568 #define BWRITERVS_SWIZZLE_Y (BWRITERVS_X_Y | BWRITERVS_Y_Y | BWRITERVS_Z_Y | BWRITERVS_W_Y)
569 #define BWRITERVS_SWIZZLE_Z (BWRITERVS_X_Z | BWRITERVS_Y_Z | BWRITERVS_Z_Z | BWRITERVS_W_Z)
570 #define BWRITERVS_SWIZZLE_W (BWRITERVS_X_W | BWRITERVS_Y_W | BWRITERVS_Z_W | BWRITERVS_W_W)
571 
573 {
588 };
589 
590 /* ps 1.x texture registers mappings */
591 #define T0_REG 2
592 #define T1_REG 3
593 #define T2_REG 4
594 #define T3_REG 5
595 
596 struct bwriter_shader *SlAssembleShader(const char *text, char **messages) DECLSPEC_HIDDEN;
599 
600 /* The general IR structure is inspired by Mesa GLSL hir, even though the code
601  * ends up being quite different in practice. Anyway, here comes the relevant
602  * licensing information.
603  *
604  * Copyright © 2010 Intel Corporation
605  *
606  * Permission is hereby granted, free of charge, to any person obtaining a
607  * copy of this software and associated documentation files (the "Software"),
608  * to deal in the Software without restriction, including without limitation
609  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
610  * and/or sell copies of the Software, and to permit persons to whom the
611  * Software is furnished to do so, subject to the following conditions:
612  *
613  * The above copyright notice and this permission notice (including the next
614  * paragraph) shall be included in all copies or substantial portions of the
615  * Software.
616  *
617  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
618  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
619  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
620  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
621  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
622  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
623  * DEALINGS IN THE SOFTWARE.
624  */
625 
627 {
635 };
636 
638 {
652 };
653 
655 {
661 };
662 
664 {
667 };
668 
669 struct hlsl_type
670 {
671  struct list entry;
676  const char *name;
677  unsigned int modifiers;
678  unsigned int dimx;
679  unsigned int dimy;
680  union
681  {
682  struct list *elements;
683  struct
684  {
685  struct hlsl_type *type;
686  unsigned int elements_count;
687  } array;
688  } e;
689 };
690 
692 {
693  struct list entry;
694  struct hlsl_type *type;
695  const char *name;
696  const char *semantic;
698 };
699 
701 {
702  const char *file;
703  unsigned int line;
704  unsigned int col;
705 };
706 
708 {
718 };
719 
721 {
722  struct list entry;
725 
727 };
728 
729 #define HLSL_STORAGE_EXTERN 0x00000001
730 #define HLSL_STORAGE_NOINTERPOLATION 0x00000002
731 #define HLSL_MODIFIER_PRECISE 0x00000004
732 #define HLSL_STORAGE_SHARED 0x00000008
733 #define HLSL_STORAGE_GROUPSHARED 0x00000010
734 #define HLSL_STORAGE_STATIC 0x00000020
735 #define HLSL_STORAGE_UNIFORM 0x00000040
736 #define HLSL_STORAGE_VOLATILE 0x00000080
737 #define HLSL_MODIFIER_CONST 0x00000100
738 #define HLSL_MODIFIER_ROW_MAJOR 0x00000200
739 #define HLSL_MODIFIER_COLUMN_MAJOR 0x00000400
740 #define HLSL_MODIFIER_IN 0x00000800
741 #define HLSL_MODIFIER_OUT 0x00001000
742 
743 #define HLSL_TYPE_MODIFIERS_MASK (HLSL_MODIFIER_PRECISE | HLSL_STORAGE_VOLATILE | \
744  HLSL_MODIFIER_CONST | HLSL_MODIFIER_ROW_MAJOR | \
745  HLSL_MODIFIER_COLUMN_MAJOR)
746 
747 #define HLSL_MODIFIERS_COMPARISON_MASK (HLSL_MODIFIER_ROW_MAJOR | HLSL_MODIFIER_COLUMN_MAJOR)
748 
750 {
753 };
754 
756 {
759  const char *name;
760  const char *semantic;
761  unsigned int modifiers;
763  struct list scope_entry, param_entry;
764 
765  struct hlsl_var_allocation *allocation;
766 };
767 
769 {
771  const char *name;
774 };
775 
777 {
782  const char *semantic;
783  struct list *parameters;
784  struct list *body;
785 };
786 
788 {
791  struct list *then_instrs;
792  struct list *else_instrs;
793 };
794 
796 {
798  /* loop condition is stored in the body (as "if (!condition) break;") */
799  struct list *body;
800 };
801 
803 {
805  struct hlsl_ir_node *lhs;
806  struct hlsl_ir_node *rhs;
807  unsigned char writemask;
808 };
809 
822 
824 
826 
829  HLSL_IR_UNOP_SIN_REDUCED, /* Reduced range [-pi, pi] */
830  HLSL_IR_UNOP_COS_REDUCED, /* Reduced range [-pi, pi] */
831 
834 
836 
841 
846 
848 
855 
858 
864 
869 
871 
873 
875 };
876 
878 {
881  struct hlsl_ir_node *operands[3];
883 };
884 
886 {
891 };
892 
894 {
898 };
899 
901 {
903  struct hlsl_ir_node *val;
905 };
906 
908 {
912 };
913 
915 {
918  union
919  {
920  struct hlsl_ir_var *var;
921  struct
922  {
925  } array;
926  struct
927  {
930  } record;
931  } v;
932 };
933 
935 {
937  union
938  {
939  union
940  {
941  unsigned u[16];
942  int i[16];
943  float f[16];
944  double d[16];
945  BOOL b[16];
946  } value;
949  } v;
950 };
951 
953 {
955  struct hlsl_ir_node *args[16];
956  unsigned int args_count;
957 };
958 
960 {
961  struct list entry;
962  struct list vars;
964  struct hlsl_scope *upper;
965 };
966 
967 /* Structures used only during parsing */
969 {
970  struct hlsl_type *type;
971  const char *name;
972  const char *semantic;
974  unsigned int modifiers;
975 };
976 
978 {
979  const char *semantic;
981 };
982 
984 {
985  struct hlsl_ir_node **args;
986  unsigned int args_count;
987 };
988 
990 {
991  struct list entry;
993 
994  char *name;
995  unsigned int array_size;
996  const char *semantic;
999 };
1000 
1002 {
1003  char *name;
1005 };
1006 
1008 {
1011 };
1012 
1014 {
1019 };
1020 
1022 {
1034 };
1035 
1037 {
1038  const char **source_files;
1039  unsigned int source_files_count;
1040  const char *source_file;
1041  unsigned int line_no;
1042  unsigned int column;
1045 
1048  struct list scopes;
1049 
1050  struct list types;
1052 
1054 };
1055 
1057 
1059 {
1063 };
1064 
1065 void WINAPIV hlsl_message(const char *fmt, ...) PRINTF_ATTR(1,2) DECLSPEC_HIDDEN;
1068 
1070 {
1071  assert(node->type == HLSL_IR_EXPR);
1072  return CONTAINING_RECORD(node, struct hlsl_ir_expr, node);
1073 }
1074 
1075 static inline struct hlsl_ir_deref *deref_from_node(const struct hlsl_ir_node *node)
1076 {
1077  assert(node->type == HLSL_IR_DEREF);
1078  return CONTAINING_RECORD(node, struct hlsl_ir_deref, node);
1079 }
1080 
1081 static inline struct hlsl_ir_constant *constant_from_node(const struct hlsl_ir_node *node)
1082 {
1083  assert(node->type == HLSL_IR_CONSTANT);
1084  return CONTAINING_RECORD(node, struct hlsl_ir_constant, node);
1085 }
1086 
1087 static inline struct hlsl_ir_jump *jump_from_node(const struct hlsl_ir_node *node)
1088 {
1089  assert(node->type == HLSL_IR_JUMP);
1090  return CONTAINING_RECORD(node, struct hlsl_ir_jump, node);
1091 }
1092 
1093 static inline struct hlsl_ir_assignment *assignment_from_node(const struct hlsl_ir_node *node)
1094 {
1095  assert(node->type == HLSL_IR_ASSIGNMENT);
1096  return CONTAINING_RECORD(node, struct hlsl_ir_assignment, node);
1097 }
1098 
1099 static inline struct hlsl_ir_swizzle *swizzle_from_node(const struct hlsl_ir_node *node)
1100 {
1101  assert(node->type == HLSL_IR_SWIZZLE);
1102  return CONTAINING_RECORD(node, struct hlsl_ir_swizzle, node);
1103 }
1104 
1105 static inline struct hlsl_ir_constructor *constructor_from_node(const struct hlsl_ir_node *node)
1106 {
1107  assert(node->type == HLSL_IR_CONSTRUCTOR);
1109 }
1110 
1111 static inline struct hlsl_ir_if *if_from_node(const struct hlsl_ir_node *node)
1112 {
1113  assert(node->type == HLSL_IR_IF);
1114  return CONTAINING_RECORD(node, struct hlsl_ir_if, node);
1115 }
1116 
1117 static inline struct hlsl_ir_loop *loop_from_node(const struct hlsl_ir_node *node)
1118 {
1119  assert(node->type == HLSL_IR_LOOP);
1120  return CONTAINING_RECORD(node, struct hlsl_ir_loop, node);
1121 }
1122 
1123 BOOL add_declaration(struct hlsl_scope *scope, struct hlsl_ir_var *decl, BOOL local_var) DECLSPEC_HIDDEN;
1124 struct hlsl_ir_var *get_variable(struct hlsl_scope *scope, const char *name) DECLSPEC_HIDDEN;
1125 void free_declaration(struct hlsl_ir_var *decl) DECLSPEC_HIDDEN;
1126 struct hlsl_type *new_hlsl_type(const char *name, enum hlsl_type_class type_class,
1127  enum hlsl_base_type base_type, unsigned dimx, unsigned dimy) DECLSPEC_HIDDEN;
1128 struct hlsl_type *new_array_type(struct hlsl_type *basic_type, unsigned int array_size) DECLSPEC_HIDDEN;
1129 struct hlsl_type *clone_hlsl_type(struct hlsl_type *old) DECLSPEC_HIDDEN;
1130 struct hlsl_type *get_type(struct hlsl_scope *scope, const char *name, BOOL recursive) DECLSPEC_HIDDEN;
1131 BOOL find_function(const char *name) DECLSPEC_HIDDEN;
1132 unsigned int components_count_type(struct hlsl_type *type) DECLSPEC_HIDDEN;
1133 BOOL compare_hlsl_types(const struct hlsl_type *t1, const struct hlsl_type *t2) DECLSPEC_HIDDEN;
1136  struct source_location *loc) DECLSPEC_HIDDEN;
1137 struct hlsl_ir_expr *new_cast(struct hlsl_ir_node *node, struct hlsl_type *type,
1138  struct source_location *loc) DECLSPEC_HIDDEN;
1141 struct hlsl_ir_node *make_assignment(struct hlsl_ir_node *left, enum parse_assign_op assign_op,
1142  DWORD writemask, struct hlsl_ir_node *right) DECLSPEC_HIDDEN;
1143 void push_scope(struct hlsl_parse_ctx *ctx) DECLSPEC_HIDDEN;
1147 void add_function_decl(struct wine_rb_tree *funcs, char *name, struct hlsl_ir_function_decl *decl,
1148  BOOL intrinsic) DECLSPEC_HIDDEN;
1150  const char *entrypoint, char **messages) DECLSPEC_HIDDEN;
1151 
1152 const char *debug_hlsl_type(const struct hlsl_type *type) DECLSPEC_HIDDEN;
1153 const char *debug_modifiers(DWORD modifiers) DECLSPEC_HIDDEN;
1155 
1160 
1161 static inline struct hlsl_ir_node *new_unary_expr(enum hlsl_ir_expr_op op,
1162  struct hlsl_ir_node *op1, struct source_location loc)
1163 {
1164  struct hlsl_ir_node *operands[3] = {op1};
1165  return &new_expr(op, operands, &loc)->node;
1166 }
1167 
1168 static inline struct hlsl_ir_node *new_binary_expr(enum hlsl_ir_expr_op op,
1169  struct hlsl_ir_node *op1, struct hlsl_ir_node *op2, struct source_location loc)
1170 {
1171  struct hlsl_ir_node *operands[3] = {op1, op2};
1172  return &new_expr(op, operands, &loc)->node;
1173 }
1174 
1175 #define MAKE_TAG(ch0, ch1, ch2, ch3) \
1176  ((DWORD)(ch0) | ((DWORD)(ch1) << 8) | \
1177  ((DWORD)(ch2) << 16) | ((DWORD)(ch3) << 24 ))
1178 #define TAG_Aon9 MAKE_TAG('A', 'o', 'n', '9')
1179 #define TAG_DXBC MAKE_TAG('D', 'X', 'B', 'C')
1180 #define TAG_ISGN MAKE_TAG('I', 'S', 'G', 'N')
1181 #define TAG_OSGN MAKE_TAG('O', 'S', 'G', 'N')
1182 #define TAG_OSG5 MAKE_TAG('O', 'S', 'G', '5')
1183 #define TAG_PCSG MAKE_TAG('P', 'C', 'S', 'G')
1184 #define TAG_RDEF MAKE_TAG('R', 'D', 'E', 'F')
1185 #define TAG_SDBG MAKE_TAG('S', 'D', 'B', 'G')
1186 #define TAG_SHDR MAKE_TAG('S', 'H', 'D', 'R')
1187 #define TAG_SHEX MAKE_TAG('S', 'H', 'E', 'X')
1188 #define TAG_STAT MAKE_TAG('S', 'T', 'A', 'T')
1189 #define TAG_XNAP MAKE_TAG('X', 'N', 'A', 'P')
1190 #define TAG_XNAS MAKE_TAG('X', 'N', 'A', 'S')
1191 
1193 {
1195  const char *data;
1197 };
1198 
1199 struct dxbc
1200 {
1204 };
1205 
1207 void dxbc_destroy(struct dxbc *dxbc) DECLSPEC_HIDDEN;
1210 HRESULT dxbc_init(struct dxbc *dxbc, unsigned int size) DECLSPEC_HIDDEN;
1211 
1212 static inline void read_dword(const char **ptr, DWORD *d)
1213 {
1214  memcpy(d, *ptr, sizeof(*d));
1215  *ptr += sizeof(*d);
1216 }
1217 
1218 static inline void write_dword(char **ptr, DWORD d)
1219 {
1220  memcpy(*ptr, &d, sizeof(d));
1221  *ptr += sizeof(d);
1222 }
1223 
1224 void skip_dword_unknown(const char **ptr, unsigned int count) DECLSPEC_HIDDEN;
1225 
1226 #endif /* __WINE_D3DCOMPILER_PRIVATE_H */
BOOL record_sampler(struct bwriter_shader *shader, DWORD samptype, DWORD mod, DWORD regnum) DECLSPEC_HIDDEN
const char * semantic
struct wine_rb_entry entry
struct list * else_instrs
struct list * subexpressions
GLenum func
Definition: glext.h:6028
void SlDeleteShader(struct bwriter_shader *shader) DECLSPEC_HIDDEN
const char * debug_d3dcompiler_d3d_blob_part(D3D_BLOB_PART part) DECLSPEC_HIDDEN
Definition: utils.c:106
struct hlsl_scope * cur_scope
unsigned int dimx
const char * debug_print_opcode(DWORD opcode) DECLSPEC_HIDDEN
Definition: utils.c:416
void free_hlsl_type(struct hlsl_type *type) DECLSPEC_HIDDEN
Definition: utils.c:2105
bwritershader_param_register_type
GLint level
Definition: gl.h:1546
const char ** source_files
unsigned int num_samplers
unsigned int num_instrs
struct S2 s2
static void * d3dcompiler_realloc(void *ptr, SIZE_T size)
static UCHAR ULONG UCHAR ULONG UCHAR * output
Definition: bcrypt.c:29
struct parse_initializer initializer
HRESULT dxbc_add_section(struct dxbc *dxbc, DWORD tag, const char *data, DWORD data_size) DECLSPEC_HIDDEN
Definition: utils.c:529
#define shift
Definition: input.c:1761
GLubyte GLubyte GLubyte GLubyte w
Definition: glext.h:6102
hlsl_base_type
hlsl_matrix_majority
static struct hlsl_ir_deref * deref_from_node(const struct hlsl_ir_node *node)
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:49
HRESULT dxbc_init(struct dxbc *dxbc, unsigned int size) DECLSPEC_HIDDEN
Definition: utils.c:557
void(* dcl_input)(struct asm_parser *This, DWORD usage, DWORD num, DWORD mod, const struct shader_reg *reg)
const struct reg_reservation * reg_reservation
struct hlsl_ir_expr * new_expr(enum hlsl_ir_expr_op op, struct hlsl_ir_node **operands, struct source_location *loc) DECLSPEC_HIDDEN
Definition: utils.c:1286
enum hlsl_type_class type
D3D_BLOB_PART
Definition: d3dcompiler.h:85
static static const char __ms_va_list
Definition: printf.c:76
const char * debug_print_shift(DWORD shift) DECLSPEC_HIDDEN
Definition: utils.c:178
unsigned int modifiers
void(* opcode)(struct bc_writer *This, const struct instruction *instr, DWORD token, struct bytecode_buffer *buffer)
Definition: image.c:133
hlsl_ir_jump_type
struct asm_parser asm_ctx
Definition: asmshader.tab.c:85
void(* instr_writer)(struct bc_writer *This, const struct instruction *instr, struct bytecode_buffer *buffer)
struct x86_inst instr
void push_scope(struct hlsl_parse_ctx *ctx) DECLSPEC_HIDDEN
Definition: utils.c:1534
Definition: http.c:7094
struct source_location loc
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
const char * source_file
static void read_dword(const char **ptr, DWORD *d)
void add_function_decl(struct wine_rb_tree *funcs, char *name, struct hlsl_ir_function_decl *decl, BOOL intrinsic) DECLSPEC_HIDDEN
Definition: utils.c:2282
struct list vars
struct wine_rb_entry entry
struct hlsl_type * clone_hlsl_type(struct hlsl_type *old) DECLSPEC_HIDDEN
Definition: utils.c:929
const struct asmparser_backend * funcs
static struct hlsl_ir_if * if_from_node(const struct hlsl_ir_node *node)
struct constant ** constI
const WCHAR * text
Definition: package.c:1827
bwriter_comparison_type
HRESULT SlWriteBytecode(const struct bwriter_shader *shader, int dxversion, DWORD **result, DWORD *size) DECLSPEC_HIDDEN
GLuint GLuint GLsizei count
Definition: gl.h:1545
unsigned int components_count_type(struct hlsl_type *type) DECLSPEC_HIDDEN
Definition: utils.c:857
enum hlsl_sampler_dim sampler_dim
void free_instr(struct hlsl_ir_node *node) DECLSPEC_HIDDEN
Definition: utils.c:2224
void compilation_message(struct compilation_messages *msg, const char *fmt, __ms_va_list args) DECLSPEC_HIDDEN
Definition: utils.c:719
enum hlsl_ir_node_type type
unsigned int num_outputs
static struct hlsl_ir_constructor * constructor_from_node(const struct hlsl_ir_node *node)
struct wine_rb_entry scope_entry
unsigned int num_inputs
static struct hlsl_ir_constant * constant_from_node(const struct hlsl_ir_node *node)
union hlsl_ir_constant::@238::@239 value
static struct hlsl_ir_assignment * assignment_from_node(const struct hlsl_ir_node *node)
struct hlsl_ir_node ** args
enum hlsl_matrix_majority matrix_majority
static BOOL d3dcompiler_free(void *ptr)
static void write_dword(char **ptr, DWORD d)
struct hlsl_ir_node * return_value
D3D_FL9_3_MAX_TEXTURE_REPEAT enum _D3D_SHADER_VARIABLE_CLASS D3D_SHADER_VARIABLE_CLASS
enum _D3D_SHADER_VARIABLE_TYPE D3D_SHADER_VARIABLE_TYPE
#define MAX_SRC_REGS
static struct hlsl_ir_expr * expr_from_node(const struct hlsl_ir_node *node)
GLdouble GLdouble t
Definition: gl.h:2047
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
struct shader_reg predicate
struct hlsl_type * type
#define assert(x)
Definition: debug.h:53
Definition: ecma_167.h:138
void(* constF)(struct asm_parser *This, DWORD reg, float x, float y, float z, float w)
GLuint buffer
Definition: glext.h:5915
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
void debug_dump_ir_function_decl(const struct hlsl_ir_function_decl *func) DECLSPEC_HIDDEN
Definition: utils.c:2086
const char * debug_hlsl_type(const struct hlsl_type *type) DECLSPEC_HIDDEN
Definition: utils.c:1695
hlsl_error_level
struct samplerdecl * samplers
struct hlsl_type * new_hlsl_type(const char *name, enum hlsl_type_class type_class, enum hlsl_base_type base_type, unsigned dimx, unsigned dimy) DECLSPEC_HIDDEN
Definition: utils.c:806
GLuint GLuint end
Definition: gl.h:1545
union hlsl_type::@233 e
unsigned int source_files_count
struct list scope_entry param_entry
union shader_reg::@232 u
const char * filename
Definition: ioapi.h:135
void WINAPIV hlsl_report_message(const char *filename, DWORD line, DWORD column, enum hlsl_error_level level, const char *fmt,...) PRINTF_ATTR(5
Definition: match.c:390
void create_vs10_parser(struct asm_parser *ret) DECLSPEC_HIDDEN
Definition: asmparser.c:1347
void(* dstreg)(struct bc_writer *This, const struct shader_reg *reg, struct bytecode_buffer *buffer, DWORD shift, DWORD mod)
enum hlsl_ir_jump_type type
int32_t INT
Definition: typedefs.h:56
static struct hlsl_ir_swizzle * swizzle_from_node(const struct hlsl_ir_node *node)
void free_instr_list(struct list *list) DECLSPEC_HIDDEN
Definition: utils.c:2122
static void * d3dcompiler_alloc(SIZE_T size)
unsigned int instr_alloc_size
static UINT array_size
Definition: msctf.c:67
void WINAPIV asmparser_message(struct asm_parser *ctx, const char *fmt,...) PRINTF_ATTR(2
struct hlsl_ir_var * get_variable(struct hlsl_scope *scope, const char *name) DECLSPEC_HIDDEN
Definition: utils.c:784
void(* dcl_output)(struct asm_parser *This, DWORD usage, DWORD num, const struct shader_reg *reg)
struct hlsl_ir_constant * array_elements
unsigned int line_no
struct source_location loc
void create_ps2x_parser(struct asm_parser *ret) DECLSPEC_HIDDEN
Definition: asmparser.c:1522
const char * debug_print_srcmod(DWORD mod) DECLSPEC_HIDDEN
Definition: utils.c:128
struct asm_parser asm_ctx DECLSPEC_HIDDEN
struct hlsl_type * type
static struct hlsl_ir_node * new_unary_expr(enum hlsl_ir_expr_op op, struct hlsl_ir_node *op1, struct source_location loc)
unsigned int num_srcs
struct hlsl_scope * globals
BOOL add_constB(struct bwriter_shader *shader, DWORD reg, BOOL x) DECLSPEC_HIDDEN
void(* coissue)(struct asm_parser *This)
unsigned int BOOL
Definition: ntddk_ex.h:94
struct instruction * alloc_instr(unsigned int srcs) DECLSPEC_HIDDEN
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
Definition: glfuncs.h:210
static PVOID ptr
Definition: dispmode.c:27
struct bwriter_shader * parse_asm_shader(char **messages) DECLSPEC_HIDDEN
GLdouble GLdouble z
Definition: glext.h:5874
void free_function_rb(struct wine_rb_entry *entry, void *context) DECLSPEC_HIDDEN
Definition: utils.c:2277
struct hlsl_ir_deref * new_record_deref(struct hlsl_ir_node *record, struct hlsl_struct_field *field) DECLSPEC_HIDDEN
Definition: utils.c:1370
bwriterdeclusage
DWORD additional_offset
struct hlsl_ir_node * condition
const char * debug_d3dcompiler_shader_variable_class(D3D_SHADER_VARIABLE_CLASS c) DECLSPEC_HIDDEN
Definition: utils.c:32
struct list * then_instrs
smooth NULL
Definition: ftsmooth.c:416
struct constant ** constF
Definition: parser.c:48
#define inline
Definition: module.h:38
struct declaration * inputs
void(* constB)(struct asm_parser *This, DWORD reg, BOOL x)
void(* instr)(struct asm_parser *parser, DWORD opcode, DWORD mod, DWORD shift, enum bwriter_comparison_type comp, const struct shader_reg *dst, const struct src_regs *srcs, int expectednsrcs)
struct hlsl_struct_field * field
struct bwriter_shader * SlAssembleShader(const char *text, char **messages) DECLSPEC_HIDDEN
void create_ps30_parser(struct asm_parser *ret) DECLSPEC_HIDDEN
Definition: asmparser.c:1538
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560
union hlsl_ir_constant::@238 v
struct hlsl_scope * upper
struct hlsl_ir_node * index
struct hlsl_ir_node * operands[3]
struct list entry
GLuint shader
Definition: glext.h:6030
struct dxbc_section * sections
hlsl_ir_node_type
GLfloat f
Definition: glext.h:7540
struct shader_reg reg[MAX_SRC_REGS]
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
#define PRINTF_ATTR(fmt, args)
struct hlsl_type * return_type
struct shader_reg * src
GLsizeiptr size
Definition: glext.h:5919
static char * d3dcompiler_strdup(const char *string)
#define GetProcessHeap()
Definition: compat.h:403
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
#define d
Definition: ke_i.h:81
void create_vs20_parser(struct asm_parser *ret) DECLSPEC_HIDDEN
Definition: asmparser.c:1379
Definition: cmds.c:130
void create_ps12_parser(struct asm_parser *ret) DECLSPEC_HIDDEN
Definition: asmparser.c:1458
Definition: parser.c:43
LONG HRESULT
Definition: typedefs.h:77
enum bwriter_comparison_type comptype
HRESULT dxbc_parse(const char *data, SIZE_T data_size, struct dxbc *dxbc) DECLSPEC_HIDDEN
Definition: utils.c:577
struct S1 s1
hlsl_ir_expr_op
void create_ps10_parser(struct asm_parser *ret) DECLSPEC_HIDDEN
Definition: asmparser.c:1426
struct hlsl_type * data_type
struct wine_rb_tree overloads
const struct reg_reservation * reg_reservation
BOOL add_constI(struct bwriter_shader *shader, DWORD reg, INT x, INT y, INT z, INT w) DECLSPEC_HIDDEN
const GLubyte * c
Definition: glext.h:8905
static struct __wine_debug_functions funcs
Definition: debug.c:59
struct hlsl_type * type
struct hlsl_type * data_type
void create_ps13_parser(struct asm_parser *ret) DECLSPEC_HIDDEN
Definition: asmparser.c:1474
void create_vs11_parser(struct asm_parser *ret) DECLSPEC_HIDDEN
Definition: asmparser.c:1363
unsigned long DWORD
Definition: ntddk_ex.h:95
struct constant ** constB
GLuint GLuint num
Definition: glext.h:9618
GLint left
Definition: glext.h:7726
struct hlsl_ir_function_decl * new_func_decl(struct hlsl_type *return_type, struct list *parameters) DECLSPEC_HIDDEN
Definition: utils.c:1562
BOOL compare_hlsl_types(const struct hlsl_type *t1, const struct hlsl_type *t2) DECLSPEC_HIDDEN
Definition: utils.c:883
struct shader_reg * rel_reg
const char * debug_print_srcreg(const struct shader_reg *reg) DECLSPEC_HIDDEN
Definition: utils.c:337
GLdouble GLdouble right
Definition: glext.h:10859
enum hlsl_base_type base_type
struct bwriter_shader * shader
void skip_dword_unknown(const char **ptr, unsigned int count) DECLSPEC_HIDDEN
Definition: utils.c:510
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
const char * debug_modifiers(DWORD modifiers) DECLSPEC_HIDDEN
Definition: utils.c:1722
const char * debug_d3dcompiler_shader_variable_type(D3D_SHADER_VARIABLE_TYPE t) DECLSPEC_HIDDEN
Definition: utils.c:50
const char * name
const struct bytecode_backend::instr_handler_table * instructions
BOOL pop_scope(struct hlsl_parse_ctx *ctx) DECLSPEC_HIDDEN
Definition: utils.c:1551
struct list * elements
const char * debug_print_dstreg(const struct shader_reg *reg) DECLSPEC_HIDDEN
Definition: utils.c:330
HRESULT dxbc_write_blob(struct dxbc *dxbc, ID3DBlob **blob) DECLSPEC_HIDDEN
Definition: utils.c:655
struct source_location loc
struct hlsl_parse_ctx hlsl_ctx
Definition: hlsl.tab.c:90
int ret
bwritershader_instruction_opcode_type
BOOL compatible_data_types(struct hlsl_type *s1, struct hlsl_type *s2) DECLSPEC_HIDDEN
Definition: utils.c:1007
BOOL find_function(const char *name) DECLSPEC_HIDDEN
Definition: utils.c:852
union hlsl_ir_deref::@235 v
struct list * body
struct declaration * outputs
struct hlsl_ir_function_decl * decl
GLsizeiptr const GLvoid GLenum usage
Definition: glext.h:5919
uint32_t entry
Definition: isohybrid.c:63
struct list * else_instrs
bwritersampler_texture_type
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
GLenum GLsizei len
Definition: glext.h:6722
void create_ps20_parser(struct asm_parser *ret) DECLSPEC_HIDDEN
Definition: asmparser.c:1506
BOOL add_instruction(struct bwriter_shader *shader, struct instruction *instr) DECLSPEC_HIDDEN
Definition: _list.h:228
static void set_parse_status(enum parse_status *current, enum parse_status update)
BOOL record_declaration(struct bwriter_shader *shader, DWORD usage, DWORD usage_idx, DWORD mod, BOOL output, DWORD regnum, DWORD writemask, BOOL builtin) DECLSPEC_HIDDEN
struct list * struct_elements
GLenum src
Definition: glext.h:6340
unsigned int modifiers
void(* dstreg)(struct asm_parser *This, struct instruction *instr, const struct shader_reg *dst)
#define WINAPIV
Definition: sdbpapi.h:64
BYTE usage_idx
void free_declaration(struct hlsl_ir_var *decl) DECLSPEC_HIDDEN
Definition: utils.c:798
struct hlsl_ir_deref * new_var_deref(struct hlsl_ir_var *var) DECLSPEC_HIDDEN
Definition: utils.c:1354
hlsl_type_class
void(* srcreg)(struct asm_parser *This, struct instruction *instr, int num, const struct shader_reg *src)
struct hlsl_ir_node * val
void dxbc_destroy(struct dxbc *dxbc) DECLSPEC_HIDDEN
Definition: utils.c:648
enum hlsl_ir_expr_op op
void create_ps11_parser(struct asm_parser *ret) DECLSPEC_HIDDEN
Definition: asmparser.c:1442
ULONG_PTR SIZE_T
Definition: typedefs.h:78
static struct hlsl_ir_jump * jump_from_node(const struct hlsl_ir_node *node)
enum hlsl_ir_deref_type type
struct source_location loc
struct hlsl_ir_var * var
BOOL add_declaration(struct hlsl_scope *scope, struct hlsl_ir_var *decl, BOOL local_var) DECLSPEC_HIDDEN
Definition: utils.c:761
static struct hlsl_ir_node * new_binary_expr(enum hlsl_ir_expr_op op, struct hlsl_ir_node *op1, struct hlsl_ir_node *op2, struct source_location loc)
unsigned int elements_count
void create_vs30_parser(struct asm_parser *ret) DECLSPEC_HIDDEN
Definition: asmparser.c:1411
struct hlsl_ir_expr * new_cast(struct hlsl_ir_node *node, struct hlsl_type *type, struct source_location *loc) DECLSPEC_HIDDEN
Definition: utils.c:1343
DWORD oD_regnum[2]
void(* dcl_sampler)(struct asm_parser *This, DWORD samptype, DWORD mod, DWORD regnum, unsigned int line_no)
bwritershader_param_dstmod_type
Definition: rbtree.h:35
#define major(rdev)
Definition: propsheet.cpp:916
#define HeapReAlloc
Definition: compat.h:401
GLenum GLenum dst
Definition: glext.h:6340
struct list entry
INT copy(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], INT append, DWORD lpdwFlags, BOOL bTouch)
Definition: copy.c:51
void(* predicate)(struct asm_parser *This, const struct shader_reg *predicate)
struct instruction ** instr
BOOL add_constF(struct bwriter_shader *shader, DWORD reg, float x, float y, float z, float w) DECLSPEC_HIDDEN
unsigned int UINT
Definition: ndis.h:50
struct reg_reservation * reg_reservation
DWORD oT_regnum[8]
struct hlsl_type::@233::@234 array
#define HEAP_ZERO_MEMORY
Definition: compat.h:123
static int reg
Definition: i386-dis.c:1275
struct list * then_instrs
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
void create_ps14_parser(struct asm_parser *ret) DECLSPEC_HIDDEN
Definition: asmparser.c:1490
struct wine_rb_tree functions
bwritervs_rastout_offsets
void(* srcreg)(struct bc_writer *This, const struct shader_reg *reg, struct bytecode_buffer *buffer)
#define msg(x)
Definition: auth_time.c:54
Definition: import.c:85
void init_functions_tree(struct wine_rb_tree *funcs) DECLSPEC_HIDDEN
Definition: utils.c:1662
Definition: name.c:38
struct hlsl_ir_node * rhs
enum shader_type type
struct hlsl_ir_node * lhs
struct reg_reservation * reg_reservation
struct hlsl_ir_node * make_assignment(struct hlsl_ir_node *left, enum parse_assign_op assign_op, DWORD writemask, struct hlsl_ir_node *right) DECLSPEC_HIDDEN
Definition: utils.c:1407
#define const
Definition: zconf.h:230
#define minor(rdev)
Definition: propsheet.cpp:917
struct hlsl_type * get_type(struct hlsl_scope *scope, const char *name, BOOL recursive) DECLSPEC_HIDDEN
Definition: utils.c:841
hlsl_sampler_dim
unsigned int modifiers
void(* constI)(struct asm_parser *This, DWORD reg, INT x, INT y, INT z, INT w)
const char * debug_print_comp(DWORD comp) DECLSPEC_HIDDEN
Definition: utils.c:401
enum parse_status status
void create_vs2x_parser(struct asm_parser *ret) DECLSPEC_HIDDEN
Definition: asmparser.c:1395
UINT op
Definition: effect.c:223
struct hlsl_ir_node * array
const char * name
void WINAPIV hlsl_message(const char *fmt,...) PRINTF_ATTR(1
struct bwriter_shader * parse_hlsl_shader(const char *text, enum shader_type type, DWORD major, DWORD minor, const char *entrypoint, char **messages) DECLSPEC_HIDDEN
Definition: hlsl.yy.c:3176
enum bwritershader_param_register_type type
unsigned int m3x3pad_count
struct hlsl_var_allocation * allocation
struct hlsl_type * new_array_type(struct hlsl_type *basic_type, unsigned int array_size) DECLSPEC_HIDDEN
Definition: utils.c:828
static struct hlsl_ir_loop * loop_from_node(const struct hlsl_ir_node *node)
GLuint64EXT * result
Definition: glext.h:11304
struct hlsl_ir_function * func
const char * debug_print_dstmod(DWORD mod) DECLSPEC_HIDDEN
Definition: utils.c:153
struct hlsl_ir_node * record
Definition: dsound.c:943
#define HeapFree(x, y, z)
Definition: compat.h:402
hlsl_ir_deref_type
const struct bytecode_backend * funcs
enum parse_status status
bwritershader_param_srcmod_type
struct task_struct * current
Definition: linux.c:32
unsigned int count
unsigned int dimy
static int mod
Definition: i386-dis.c:1273
Definition: dlist.c:348