ReactOS 0.4.15-dev-7788-g1ad9096
shader.c
Go to the documentation of this file.
1/*
2 * Copyright 2008 Luis Busquets
3 * Copyright 2011 Travis Athougies
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18 */
19
20#include "wine/test.h"
21#include "d3dx9.h"
22
23#define FCC_TEXT MAKEFOURCC('T','E','X','T')
24#define FCC_CTAB MAKEFOURCC('C','T','A','B')
25
26static const DWORD shader_zero[] = {0x0};
27
28static const DWORD shader_invalid[] = {0xeeee0100};
29
30static const DWORD shader_empty[] = {0xfffe0200, 0x0000ffff};
31
32static const DWORD simple_fx[] = {0x46580000, 0x0002fffe, FCC_TEXT, 0x00000000, 0x0000ffff};
33
34static const DWORD simple_tx[] = {0x54580000, 0x0002fffe, FCC_TEXT, 0x00000000, 0x0000ffff};
35
36static const DWORD simple_7ffe[] = {0x7ffe0000, 0x0002fffe, FCC_TEXT, 0x00000000, 0x0000ffff};
37
38static const DWORD simple_7fff[] = {0x7fff0000, 0x0002fffe, FCC_TEXT, 0x00000000, 0x0000ffff};
39
40static const DWORD simple_vs[] = {
41 0xfffe0101, /* vs_1_1 */
42 0x0000001f, 0x80000000, 0x900f0000, /* dcl_position0 v0 */
43 0x00000009, 0xc0010000, 0x90e40000, 0xa0e40000, /* dp4 oPos.x, v0, c0 */
44 0x00000009, 0xc0020000, 0x90e40000, 0xa0e40001, /* dp4 oPos.y, v0, c1 */
45 0x00000009, 0xc0040000, 0x90e40000, 0xa0e40002, /* dp4 oPos.z, v0, c2 */
46 0x00000009, 0xc0080000, 0x90e40000, 0xa0e40003, /* dp4 oPos.w, v0, c3 */
47 0x0000ffff}; /* END */
48
49static const DWORD simple_ps[] = {
50 0xffff0101, /* ps_1_1 */
51 0x00000051, 0xa00f0001, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, /* def c1 = 1.0, 0.0, 0.0, 0.0 */
52 0x00000042, 0xb00f0000, /* tex t0 */
53 0x00000008, 0x800f0000, 0xa0e40001, 0xa0e40000, /* dp3 r0, c1, c0 */
54 0x00000005, 0x800f0000, 0x90e40000, 0x80e40000, /* mul r0, v0, r0 */
55 0x00000005, 0x800f0000, 0xb0e40000, 0x80e40000, /* mul r0, t0, r0 */
56 0x0000ffff}; /* END */
57
58static const DWORD shader_with_ctab[] = {
59 0xfffe0300, /* vs_3_0 */
60 0x0002fffe, FCC_TEXT, 0x00000000, /* TEXT comment */
61 0x0008fffe, FCC_CTAB, 0x0000001c, 0x00000010, 0xfffe0300, 0x00000000, /* CTAB comment */
62 0x00000000, 0x00000000, 0x00000000,
63 0x0004fffe, FCC_TEXT, 0x00000000, 0x00000000, 0x00000000, /* TEXT comment */
64 0x0000ffff}; /* END */
65
67 0xfffe0300, /* vs_3_0 */
68 0x0005fffe, FCC_CTAB, /* CTAB comment */
69 0x0000001c, 0x000000a9, 0xfffe0300,
70 0x00000000, 0x00000000,
71 0x0000ffff}; /* END */
72
74 0xfffe0300, /* vs_3_0 */
75 0x002efffe, FCC_CTAB, /* CTAB comment */
76 0x0000001c, 0x000000a4, 0xfffe0300, 0x00000003, 0x0000001c, 0x20008100, /* Header */
77 0x0000009c,
78 0x00000058, 0x00070002, 0x00000001, 0x00000064, 0x00000000, /* Constant 1 desc */
79 0x00000074, 0x00000002, 0x00000004, 0x00000080, 0x00000000, /* Constant 2 desc */
80 0x00000090, 0x00040002, 0x00000003, 0x00000080, 0x00000000, /* Constant 3 desc */
81 0x736e6f43, 0x746e6174, 0xabab0031, /* Constant 1 name string */
82 0x00030001, 0x00040001, 0x00000001, 0x00000000, /* Constant 1 type desc */
83 0x736e6f43, 0x746e6174, 0xabab0032, /* Constant 2 name string */
84 0x00030003, 0x00040004, 0x00000001, 0x00000000, /* Constant 2 & 3 type desc */
85 0x736e6f43, 0x746e6174, 0xabab0033, /* Constant 3 name string */
86 0x335f7376, 0xab00305f, /* Target name string */
87 0x656e6957, 0x6f727020, 0x7463656a, 0xababab00, /* Creator name string */
88 0x0000ffff}; /* END */
89
90static const DWORD ctab_basic[] = {
91 0xfffe0300, /* vs_3_0 */
92 0x0040fffe, FCC_CTAB, /* CTAB comment */
93 0x0000001c, 0x000000ec, 0xfffe0300, 0x00000005, 0x0000001c, 0x20008100, /* Header */
94 0x000000e4,
95 0x00000080, 0x00060002, 0x00000001, 0x00000084, 0x00000000, /* Constant 1 desc (f) */
96 0x00000094, 0x00070002, 0x00000001, 0x00000098, 0x00000000, /* Constant 2 desc (f4) */
97 0x000000A8, 0x00040002, 0x00000001, 0x000000AC, 0x00000000, /* Constant 3 desc (i) */
98 0x000000BC, 0x00050002, 0x00000001, 0x000000C0, 0x00000000, /* Constant 4 desc (i4) */
99 0x000000D0, 0x00000002, 0x00000004, 0x000000D4, 0x00000000, /* Constant 5 desc (mvp) */
100 0xabab0066, 0x00030000, 0x00010001, 0x00000001, 0x00000000, /* Constant 1 name/type desc */
101 0xab003466, 0x00030001, 0x00040001, 0x00000001, 0x00000000, /* Constant 2 name/type desc */
102 0xabab0069, 0x00020000, 0x00010001, 0x00000001, 0x00000000, /* Constant 3 name/type desc */
103 0xab003469, 0x00020001, 0x00040001, 0x00000001, 0x00000000, /* Constant 4 name/type desc */
104 0x0070766d, 0x00030003, 0x00040004, 0x00000001, 0x00000000, /* Constant 5 name/type desc */
105 0x335f7376, 0xab00305f, /* Target name string */
106 0x656e6957, 0x6f727020, 0x7463656a, 0xababab00, /* Creator name string */
107 0x0000ffff}; /* END */
108
110 {"mvp", D3DXRS_FLOAT4, 0, 4, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 4, 4, 1, 0, 64, NULL},
111 {"i", D3DXRS_FLOAT4, 4, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL},
112 {"i4", D3DXRS_FLOAT4, 5, 1, D3DXPC_VECTOR, D3DXPT_INT, 1, 4, 1, 0, 16, NULL},
113 {"f", D3DXRS_FLOAT4, 6, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL},
114 {"f4", D3DXRS_FLOAT4, 7, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 4, 1, 0, 16, NULL}};
115
116static const DWORD ctab_matrices[] = {
117 0xfffe0300, /* vs_3_0 */
118 0x0032fffe, FCC_CTAB, /* CTAB comment */
119 0x0000001c, 0x000000b4, 0xfffe0300, 0x00000003, 0x0000001c, 0x20008100, /* Header */
120 0x000000ac,
121 0x00000058, 0x00070002, 0x00000001, 0x00000064, 0x00000000, /* Constant 1 desc (fmatrix3x1) */
122 0x00000074, 0x00000002, 0x00000004, 0x00000080, 0x00000000, /* Constant 2 desc (fmatrix4x4) */
123 0x00000090, 0x00040002, 0x00000002, 0x0000009c, 0x00000000, /* Constant 3 desc (imatrix2x3) */
124 0x74616D66, 0x33786972, 0xab003178, /* Constant 1 name */
125 0x00030003, 0x00010003, 0x00000001, 0x00000000, /* Constant 1 type desc */
126 0x74616D66, 0x34786972, 0xab003478, /* Constant 2 name */
127 0x00030003, 0x00040004, 0x00000001, 0x00000000, /* Constant 2 type desc */
128 0x74616D69, 0x32786972, 0xab003378, /* Constant 3 name */
129 0x00020002, 0x00030002, 0x00000001, 0x00000000, /* Constant 3 type desc */
130 0x335f7376, 0xab00305f, /* Target name string */
131 0x656e6957, 0x6f727020, 0x7463656a, 0xababab00, /* Creator name string */
132 0x0000ffff}; /* END */
133
135 {"fmatrix4x4", D3DXRS_FLOAT4, 0, 4, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 4, 4, 1, 0, 64, NULL},
136 {"imatrix2x3", D3DXRS_FLOAT4, 4, 2, D3DXPC_MATRIX_ROWS, D3DXPT_INT, 2, 3, 1, 0, 24, NULL},
137 {"fmatrix3x1", D3DXRS_FLOAT4, 7, 1, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 3, 1, 1, 0, 12, NULL},
138};
139
140static const DWORD ctab_matrices2[] = {
141 0xfffe0200, /* vs_2_0 */
142 0x0058fffe, FCC_CTAB, /* CTAB comment */
143 0x0000001c, 0x0000012b, 0xfffe0200, 0x00000006, 0x0000001c, 0x00000100, /* Header */
144 0x00000124,
145 0x00000094, 0x00070002, 0x00000003, 0x0000009c, 0x00000000, /* Constant 1 desc (c2x3) */
146 0x000000ac, 0x000d0002, 0x00000002, 0x000000b4, 0x00000000, /* Constant 2 desc (c3x2) */
147 0x000000c4, 0x000a0002, 0x00000003, 0x000000cc, 0x00000000, /* Constant 3 desc (c3x3) */
148 0x000000dc, 0x000f0002, 0x00000002, 0x000000e4, 0x00000000, /* Constant 4 desc (r2x3) */
149 0x000000f4, 0x00040002, 0x00000003, 0x000000fc, 0x00000000, /* Constant 5 desc (r3x2) */
150 0x0000010c, 0x00000002, 0x00000004, 0x00000114, 0x00000000, /* Constant 6 desc (r4x4) */
151 0x33783263, 0xababab00, /* Constant 1 name */
152 0x00030003, 0x00030002, 0x00000001, 0x00000000, /* Constant 1 type desc */
153 0x32783363, 0xababab00, /* Constant 2 name */
154 0x00030003, 0x00020003, 0x00000001, 0x00000000, /* Constant 2 type desc */
155 0x33783363, 0xababab00, /* Constant 3 name */
156 0x00030003, 0x00030003, 0x00000001, 0x00000000, /* Constant 3 type desc */
157 0x33783272, 0xababab00, /* Constant 4 name */
158 0x00030002, 0x00030002, 0x00000001, 0x00000000, /* Constant 4 type desc */
159 0x32783372, 0xababab00, /* Constant 5 name */
160 0x00030002, 0x00020003, 0x00000001, 0x00000000, /* Constant 5 type desc */
161 0x34783472, 0xababab00, /* Constant 6 name */
162 0x00030002, 0x00040004, 0x00000001, 0x00000000, /* Constant 6 type desc */
163 0x325f7376, 0x4100305f, 0x41414141, 0x00414141, /* Target and Creator name */
164 0x0000ffff}; /* END */
165
167 {"c2x3", D3DXRS_FLOAT4, 7, 3, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 2, 3, 1, 0, 24, NULL},
168 {"c3x2", D3DXRS_FLOAT4, 13, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 3, 2, 1, 0, 24, NULL},
169 {"c3x3", D3DXRS_FLOAT4, 10, 3, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 3, 3, 1, 0, 36, NULL},
170 {"r2x3", D3DXRS_FLOAT4, 15, 2, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 2, 3, 1, 0, 24, NULL},
171 {"r3x2", D3DXRS_FLOAT4, 4, 3, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 3, 2, 1, 0, 24, NULL},
172 {"r4x4", D3DXRS_FLOAT4, 0, 4, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 4, 4, 1, 0, 64, NULL}};
173
174static const DWORD ctab_arrays[] = {
175 0xfffe0300, /* vs_3_0 */
176 0x0052fffe, FCC_CTAB, /* CTAB comment */
177 0x0000001c, 0x0000013c, 0xfffe0300, 0x00000006, 0x0000001c, 0x20008100, /* Header */
178 0x00000134,
179 0x00000094, 0x000E0002, 0x00000002, 0x0000009c, 0x00000000, /* Constant 1 desc (barray) */
180 0x000000ac, 0x00100002, 0x00000002, 0x000000b8, 0x00000000, /* Constant 2 desc (bvecarray) */
181 0x000000c8, 0x00080002, 0x00000004, 0x000000d0, 0x00000000, /* Constant 3 desc (farray) */
182 0x000000e0, 0x00000002, 0x00000008, 0x000000ec, 0x00000000, /* Constant 4 desc (fmtxarray) */
183 0x000000fc, 0x000C0002, 0x00000002, 0x00000108, 0x00000000, /* Constant 5 desc (fvecarray) */
184 0x00000118, 0x00120002, 0x00000001, 0x00000124, 0x00000000, /* Constant 6 desc (ivecarray) */
185 0x72726162, 0xab007961, /* Constant 1 name */
186 0x00010000, 0x00010001, 0x00000002, 0x00000000, /* Constant 1 type desc */
187 0x63657662, 0x61727261, 0xabab0079, /* Constant 2 name */
188 0x00010001, 0x00030001, 0x00000003, 0x00000000, /* Constant 2 type desc */
189 0x72726166, 0xab007961, /* Constant 3 name */
190 0x00030000, 0x00010001, 0x00000004, 0x00000000, /* constant 3 type desc */
191 0x78746d66, 0x61727261, 0xabab0079, /* Constant 4 name */
192 0x00030002, 0x00040004, 0x00000002, 0x00000000, /* Constant 4 type desc */
193 0x63657666, 0x61727261, 0xabab0079, /* Constant 5 name */
194 0x00030001, 0x00040001, 0x00000002, 0x00000000, /* Constant 5 type desc */
195 0x63657669, 0x61727261, 0xabab0079, /* Constant 6 name */
196 0x00020001, 0x00040001, 0x00000001, 0x00000000, /* Constant 6 type desc */
197 0x335f7376, 0xab00305f, /* Target name string */
198 0x656e6957, 0x6f727020, 0x7463656a, 0xababab00, /* Creator name string */
199 0x0000ffff}; /* END */
200
202 {"fmtxarray", D3DXRS_FLOAT4, 0, 8, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 4, 4, 2, 0, 128, NULL},
203 {"farray", D3DXRS_FLOAT4, 8, 4, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 4, 0, 16, NULL},
204 {"fvecarray", D3DXRS_FLOAT4, 12, 2, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 4, 2, 0, 32, NULL},
205 {"barray", D3DXRS_FLOAT4, 14, 2, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 2, 0, 8, NULL},
206 {"bvecarray", D3DXRS_FLOAT4, 16, 2, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 3, 0, 36, NULL},
207 {"ivecarray", D3DXRS_FLOAT4, 18, 1, D3DXPC_VECTOR, D3DXPT_INT, 1, 4, 1, 0, 16, NULL}};
208
210 0xfffe0200, /* vs_2_0 */
211 0x007bfffe, FCC_CTAB, /* CTAB comment */
212 0x0000001c, 0x000001b7, 0xfffe0200, 0x00000005, 0x0000001c, /* header */
213 0x00000100, 0x000001b0,
214 0x00000080, 0x00080002, 0x00000003, 0x00000084, 0x00000094, /* constant 1 desc (arr) */
215 0x000000c4, 0x000c0002, 0x00000001, 0x000000c8, 0x000000d8, /* constant 2 desc (flt) */
216 0x000000e8, 0x00040002, 0x00000004, 0x000000f0, 0x00000100, /* constant 3 desc (mat3) */
217 0x00000140, 0x00000002, 0x00000004, 0x000000f0, 0x00000148, /* constant 4 desc (mat4) */
218 0x00000188, 0x000b0002, 0x00000001, 0x00000190, 0x000001a0, /* constant 5 desc (vec4) */
219 0x00727261, /* constant 1 name */
220 0x00030000, 0x00010001, 0x00000003, 0x00000000, /* constant 1 type desc */
221 0x42c80000, 0x00000000, 0x00000000, 0x00000000, /* constant 1 default value */
222 0x43480000, 0x00000000, 0x00000000, 0x00000000,
223 0x43960000, 0x00000000, 0x00000000, 0x00000000,
224 0x00746c66, /* constant 2 name */
225 0x00030000, 0x00010001, 0x00000001, 0x00000000, /* constant 2 type desc */
226 0x411fd70a, 0x00000000, 0x00000000, 0x00000000, /* constant 2 default value */
227 0x3374616d, /* constant 3 name */
228 0xababab00,
229 0x00030003, 0x00040004, 0x00000001, 0x00000000, /* constant 3 & 4 type desc */
230 0x41300000, 0x425c0000, 0x42c60000, 0x44a42000, /* constat 3 default value */
231 0x41b00000, 0x42840000, 0x447c8000, 0x44b0c000,
232 0x42040000, 0x429a0000, 0x448ae000, 0x44bd6000,
233 0x42300000, 0x42b00000, 0x44978000, 0x44ca0000,
234 0x3474616d, /* constant 4 name */
235 0xababab00,
236 0x3f800000, 0x40a00000, 0x41100000, 0x41500000, /* constant 4 default value */
237 0x40000000, 0x40c00000, 0x41200000, 0x41600000,
238 0x40400000, 0x40e00000, 0x41300000, 0x41700000,
239 0x40800000, 0x41000000, 0x41400000, 0x41800000,
240 0x34636576, /* constant 5 name */
241 0xababab00,
242 0x00030001, 0x00040001, 0x00000001, 0x00000000, /* constant 5 type desc */
243 0x41200000, 0x41a00000, 0x41f00000, 0x42200000, /* constant 5 default value */
244 0x325f7376, 0x4d004141, 0x41414141, 0x00000000, /* target & creator string */
245 0x0000ffff}; /* END */
246
247static const float mat4_default_value[] = {1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15, 4, 8, 12, 16};
248static const float mat3_default_value[] = {11, 55, 99, 1313, 22, 66, 1010, 1414, 33, 77, 1111, 1515, 44, 88, 1212, 1616};
249static const float arr_default_value[] = {100, 0, 0, 0, 200, 0, 0, 0, 300, 0, 0, 0};
250static const float vec4_default_value[] = {10, 20, 30, 40};
251static const float flt_default_value[] = {9.99, 0, 0, 0};
252
254 {"mat4", D3DXRS_FLOAT4, 0, 4, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 4, 4, 1, 0, 64, mat4_default_value},
255 {"mat3", D3DXRS_FLOAT4, 4, 4, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 4, 4, 1, 0, 64, mat3_default_value},
256 {"arr", D3DXRS_FLOAT4, 8, 3, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 3, 0, 12, arr_default_value},
257 {"vec4", D3DXRS_FLOAT4, 11, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 4, 1, 0, 16, vec4_default_value},
258 {"flt", D3DXRS_FLOAT4, 12, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, flt_default_value}};
259
260static const DWORD ctab_samplers[] = {
261 0xfffe0300, /* vs_3_0 */
262 0x0032fffe, FCC_CTAB, /* CTAB comment */
263 0x0000001c, 0x000000b4, 0xfffe0300, 0x00000003, 0x0000001c, 0x20008100, /* Header */
264 0x000000ac,
265 0x00000058, 0x00020002, 0x00000001, 0x00000064, 0x00000000, /* Constant 1 desc (notsampler) */
266 0x00000074, 0x00000003, 0x00000001, 0x00000080, 0x00000000, /* Constant 2 desc (sampler1) */
267 0x00000090, 0x00030003, 0x00000001, 0x0000009c, 0x00000000, /* Constant 3 desc (sampler2) */
268 0x73746f6e, 0x6c706d61, 0xab007265, /* Constant 1 name */
269 0x00030001, 0x00040001, 0x00000001, 0x00000000, /* Constant 1 type desc */
270 0x706d6173, 0x3172656c, 0xababab00, /* Constant 2 name */
271 0x000c0004, 0x00010001, 0x00000001, 0x00000000, /* Constant 2 type desc */
272 0x706d6173, 0x3272656c, 0xababab00, /* Constant 3 name */
273 0x000d0004, 0x00010001, 0x00000001, 0x00000000, /* Constant 3 type desc */
274 0x335f7376, 0xab00305f, /* Target name string */
275 0x656e6957, 0x6f727020, 0x7463656a, 0xababab00, /* Creator name string */
276 0x0000ffff}; /* END */
277
279 {"sampler1", D3DXRS_SAMPLER, 0, 1, D3DXPC_OBJECT, D3DXPT_SAMPLER2D, 1, 1, 1, 0, 4, NULL},
280 {"sampler2", D3DXRS_SAMPLER, 3, 1, D3DXPC_OBJECT, D3DXPT_SAMPLER3D, 1, 1, 1, 0, 4, NULL},
281 {"notsampler", D3DXRS_FLOAT4, 2, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 4, 1, 0, 16, NULL}};
282
284{
285 0x46580200, /* FX20 */
286 0x002efffe, FCC_CTAB, /* CTAB comment */
287 0x0000001c, 0x000000a4, 0xfffe0300, 0x00000003, 0x0000001c, 0x20008100, /* Header */
288 0x0000009c,
289 0x00000058, 0x00070002, 0x00000001, 0x00000064, 0x00000000, /* Constant 1 desc */
290 0x00000074, 0x00000002, 0x00000004, 0x00000080, 0x00000000, /* Constant 2 desc */
291 0x00000090, 0x00040002, 0x00000003, 0x00000080, 0x00000000, /* Constant 3 desc */
292 0x736e6f43, 0x746e6174, 0xabab0031, /* Constant 1 name string */
293 0x00030001, 0x00040001, 0x00000001, 0x00000000, /* Constant 1 type desc */
294 0x736e6f43, 0x746e6174, 0xabab0032, /* Constant 2 name string */
295 0x00030003, 0x00040004, 0x00000001, 0x00000000, /* Constant 2 & 3 type desc */
296 0x736e6f43, 0x746e6174, 0xabab0033, /* Constant 3 name string */
297 0x335f7376, 0xab00305f, /* Target name string */
298 0x656e6957, 0x6f727020, 0x7463656a, 0xababab00, /* Creator name string */
299 0x0000ffff /* END */
300};
301
302static void test_get_shader_size(void)
303{
304 UINT shader_size, expected;
305
306 shader_size = D3DXGetShaderSize(simple_vs);
307 expected = sizeof(simple_vs);
308 ok(shader_size == expected, "Got shader size %u, expected %u\n", shader_size, expected);
309
310 shader_size = D3DXGetShaderSize(simple_ps);
311 expected = sizeof(simple_ps);
312 ok(shader_size == expected, "Got shader size %u, expected %u\n", shader_size, expected);
313
314 shader_size = D3DXGetShaderSize(NULL);
315 ok(shader_size == 0, "Got shader size %u, expected 0\n", shader_size);
316}
317
318static void test_get_shader_version(void)
319{
320 DWORD shader_version;
321
322 shader_version = D3DXGetShaderVersion(simple_vs);
323 ok(shader_version == D3DVS_VERSION(1, 1), "Got shader version 0x%08x, expected 0x%08x\n",
324 shader_version, D3DVS_VERSION(1, 1));
325
326 shader_version = D3DXGetShaderVersion(simple_ps);
327 ok(shader_version == D3DPS_VERSION(1, 1), "Got shader version 0x%08x, expected 0x%08x\n",
328 shader_version, D3DPS_VERSION(1, 1));
329
330 shader_version = D3DXGetShaderVersion(NULL);
331 ok(shader_version == 0, "Got shader version 0x%08x, expected 0\n", shader_version);
332}
333
335{
336 const void *data = (void *)0xdeadbeef;
337 HRESULT hr;
338 UINT size = 100;
339
340 hr = D3DXFindShaderComment(NULL, MAKEFOURCC('C','T','A','B'), &data, &size);
341 ok(hr == D3DERR_INVALIDCALL, "Got result %x, expected %x (D3DERR_INVALIDCALL)\n", hr, D3DERR_INVALIDCALL);
342 ok(!data, "Got %p, expected NULL\n", data);
343 ok(!size, "Got %u, expected 0\n", size);
344
346 ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
347 ok(size == 28, "Got %u, expected 28\n", size);
348
350 ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
351 ok(data == shader_with_ctab + 6, "Got result %p, expected %p\n", data, shader_with_ctab + 6);
352
354 ok(hr == S_FALSE, "Got result %x, expected 1 (S_FALSE)\n", hr);
355 ok(!data, "Got %p, expected NULL\n", data);
356 ok(!size, "Got %u, expected 0\n", size);
357
359 ok(hr == S_FALSE, "Got result %x, expected 1 (S_FALSE)\n", hr);
360 ok(!data, "Got %p, expected NULL\n", data);
361 ok(!size, "Got %u, expected 0\n", size);
362
364 ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
365 ok(data == shader_with_ctab + 6, "Got result %p, expected %p\n", data, shader_with_ctab + 6);
366 ok(size == 28, "Got result %u, expected 28\n", size);
367
368 hr = D3DXFindShaderComment(shader_zero, MAKEFOURCC('C','T','A','B'), &data, &size);
369 ok(hr == D3DXERR_INVALIDDATA, "Got result %x, expected %x (D3DXERR_INVALIDDATA)\n", hr, D3DXERR_INVALIDDATA);
370 ok(!data, "Got %p, expected NULL\n", data);
371 ok(!size, "Got %u, expected 0\n", size);
372
374 ok(hr == D3DXERR_INVALIDDATA, "Got result %x, expected %x (D3DXERR_INVALIDDATA)\n", hr, D3DXERR_INVALIDDATA);
375 ok(!data, "Got %p, expected NULL\n", data);
376 ok(!size, "Got %u, expected 0\n", size);
377
378 hr = D3DXFindShaderComment(shader_empty, MAKEFOURCC('C','T','A','B'), &data, &size);
379 ok(hr == S_FALSE, "Got result %x, expected %x (S_FALSE)\n", hr, S_FALSE);
380 ok(!data, "Got %p, expected NULL\n", data);
381 ok(!size, "Got %u, expected 0\n", size);
382
384 ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
385 ok(data == simple_fx + 3, "Got result %p, expected %p\n", data, simple_fx + 3);
386 ok(size == 4, "Got result %u, expected 4\n", size);
387
389 ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
390 ok(data == simple_tx + 3, "Got result %p, expected %p\n", data, simple_tx + 3);
391 ok(size == 4, "Got result %u, expected 4\n", size);
392
394 ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
395 ok(data == simple_7ffe + 3, "Got result %p, expected %p\n", data, simple_7ffe + 3);
396 ok(size == 4, "Got result %u, expected 4\n", size);
397
399 ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
400 ok(data == simple_7fff + 3, "Got result %p, expected %p\n", data, simple_7fff + 3);
401 ok(size == 4, "Got result %u, expected 4\n", size);
402}
403
405{
406 ID3DXConstantTable *constant_table;
407 HRESULT hr;
408 void *data;
409 DWORD size;
411
412 constant_table = (ID3DXConstantTable *)0xdeadbeef;
413 hr = D3DXGetShaderConstantTableEx(NULL, 0, &constant_table);
414 ok(hr == D3DERR_INVALIDCALL, "Got result %x, expected %x (D3DERR_INVALIDCALL)\n", hr, D3DERR_INVALIDCALL);
415 ok(constant_table == NULL, "D3DXGetShaderConstantTableEx() failed, got %p\n", constant_table);
416
417 constant_table = (ID3DXConstantTable *)0xdeadbeef;
418 hr = D3DXGetShaderConstantTableEx(shader_zero, 0, &constant_table);
419 ok(hr == D3D_OK, "Got result %x, expected %x (D3D_OK)\n", hr, D3D_OK);
420 ok(constant_table == NULL, "D3DXGetShaderConstantTableEx() failed, got %p\n", constant_table);
421
422 constant_table = (ID3DXConstantTable *)0xdeadbeef;
423 hr = D3DXGetShaderConstantTableEx(shader_invalid, 0, &constant_table);
424 ok(hr == D3D_OK, "Got result %x, expected %x (D3D_OK)\n", hr, D3D_OK);
425 ok(constant_table == NULL, "D3DXGetShaderConstantTableEx() failed, got %p\n", constant_table);
426
427 constant_table = (ID3DXConstantTable *)0xdeadbeef;
428 hr = D3DXGetShaderConstantTableEx(shader_empty, 0, &constant_table);
429 ok(hr == D3DXERR_INVALIDDATA, "Got result %x, expected %x (D3DXERR_INVALIDDATA)\n", hr, D3DXERR_INVALIDDATA);
430 ok(constant_table == NULL, "D3DXGetShaderConstantTableEx() failed, got %p\n", constant_table);
431
432 /* No CTAB data */
433 constant_table = (ID3DXConstantTable *)0xdeadbeef;
434 hr = D3DXGetShaderConstantTableEx(simple_ps, 0, &constant_table);
435 ok(hr == D3DXERR_INVALIDDATA, "Got result %x, expected %x (D3DXERR_INVALIDDATA)\n", hr, D3DXERR_INVALIDDATA);
436 ok(constant_table == NULL, "D3DXGetShaderConstantTableEx() failed, got %p\n", constant_table);
437
438 /* With invalid CTAB data */
440 ok(hr == D3DXERR_INVALIDDATA || broken(hr == D3D_OK), /* winxp 64-bit, w2k3 64-bit */
441 "Got result %x, expected %x (D3DXERR_INVALIDDATA)\n", hr, D3DXERR_INVALIDDATA);
442 if (constant_table) ID3DXConstantTable_Release(constant_table);
443
444 hr = D3DXGetShaderConstantTableEx(simple_fx, 0, &constant_table);
445 ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK).\n", hr);
446 ok(!constant_table, "D3DXGetShaderConstantTableEx() returned a non-NULL constant table.\n");
447
448 hr = D3DXGetShaderConstantTableEx(simple_tx, 0, &constant_table);
449 ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK).\n", hr);
450 ok(!constant_table, "D3DXGetShaderConstantTableEx() returned a non-NULL constant table.\n");
451
452 hr = D3DXGetShaderConstantTableEx(shader_with_ctab, 0, &constant_table);
453 ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
454 ok(constant_table != NULL, "D3DXGetShaderConstantTableEx() failed, got NULL\n");
455
456 if (constant_table)
457 {
458 size = ID3DXConstantTable_GetBufferSize(constant_table);
459 ok(size == 28, "Got result %x, expected 28\n", size);
460
462 ok(!memcmp(data, shader_with_ctab + 6, size), "Retrieved wrong CTAB data\n");
463
464 hr = ID3DXConstantTable_GetDesc(constant_table, NULL);
465 ok(hr == D3DERR_INVALIDCALL, "Got result %x, expected %x (D3DERR_INVALIDCALL)\n", hr, D3DERR_INVALIDCALL);
466
467 hr = ID3DXConstantTable_GetDesc(constant_table, &desc);
468 ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
469 ok(desc.Creator == (const char *)data + 0x10, "Got result %p, expected %p\n",
470 desc.Creator, (const char *)data + 0x10);
471 ok(desc.Version == D3DVS_VERSION(3, 0), "Got result %x, expected %x\n", desc.Version, D3DVS_VERSION(3, 0));
472 ok(desc.Constants == 0, "Got result %x, expected 0\n", desc.Constants);
473
474 ID3DXConstantTable_Release(constant_table);
475 }
476
478 ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
479 ok(constant_table != NULL, "D3DXGetShaderConstantTableEx() failed, got NULL\n");
480
481 if (constant_table)
482 {
484 D3DXCONSTANT_DESC constant_desc;
485 D3DXCONSTANT_DESC constant_desc_save;
486 UINT nb;
487
488 /* Test GetDesc */
489 hr = ID3DXConstantTable_GetDesc(constant_table, &desc);
490 ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
491 ok(!strcmp(desc.Creator, "Wine project"), "Got result '%s', expected 'Wine project'\n", desc.Creator);
492 ok(desc.Version == D3DVS_VERSION(3, 0), "Got result %x, expected %x\n", desc.Version, D3DVS_VERSION(3, 0));
493 ok(desc.Constants == 3, "Got result %x, expected 3\n", desc.Constants);
494
495 /* Test GetConstant */
496 constant = ID3DXConstantTable_GetConstant(constant_table, NULL, 0);
497 ok(constant != NULL, "No constant found\n");
498 hr = ID3DXConstantTable_GetConstantDesc(constant_table, constant, &constant_desc, &nb);
499 ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
500 ok(!strcmp(constant_desc.Name, "Constant1"), "Got result '%s', expected 'Constant1'\n",
501 constant_desc.Name);
502 ok(constant_desc.Class == D3DXPC_VECTOR, "Got result %x, expected %u (D3DXPC_VECTOR)\n",
503 constant_desc.Class, D3DXPC_VECTOR);
504 ok(constant_desc.Type == D3DXPT_FLOAT, "Got result %x, expected %u (D3DXPT_FLOAT)\n",
505 constant_desc.Type, D3DXPT_FLOAT);
506 ok(constant_desc.Rows == 1, "Got result %x, expected 1\n", constant_desc.Rows);
507 ok(constant_desc.Columns == 4, "Got result %x, expected 4\n", constant_desc.Columns);
508
509 constant = ID3DXConstantTable_GetConstant(constant_table, NULL, 1);
510 ok(constant != NULL, "No constant found\n");
511 hr = ID3DXConstantTable_GetConstantDesc(constant_table, constant, &constant_desc, &nb);
512 ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
513 ok(!strcmp(constant_desc.Name, "Constant2"), "Got result '%s', expected 'Constant2'\n",
514 constant_desc.Name);
515 ok(constant_desc.Class == D3DXPC_MATRIX_COLUMNS, "Got result %x, expected %u (D3DXPC_MATRIX_COLUMNS)\n",
516 constant_desc.Class, D3DXPC_MATRIX_COLUMNS);
517 ok(constant_desc.Type == D3DXPT_FLOAT, "Got result %x, expected %u (D3DXPT_FLOAT)\n",
518 constant_desc.Type, D3DXPT_FLOAT);
519 ok(constant_desc.Rows == 4, "Got result %x, expected 1\n", constant_desc.Rows);
520 ok(constant_desc.Columns == 4, "Got result %x, expected 4\n", constant_desc.Columns);
521
522 constant = ID3DXConstantTable_GetConstant(constant_table, NULL, 2);
523 ok(constant != NULL, "No constant found\n");
524 hr = ID3DXConstantTable_GetConstantDesc(constant_table, constant, &constant_desc, &nb);
525 ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
526 ok(!strcmp(constant_desc.Name, "Constant3"), "Got result '%s', expected 'Constant3'\n",
527 constant_desc.Name);
528 ok(constant_desc.Class == D3DXPC_MATRIX_COLUMNS, "Got result %x, expected %u (D3DXPC_MATRIX_COLUMNS)\n",
529 constant_desc.Class, D3DXPC_MATRIX_COLUMNS);
530 ok(constant_desc.Type == D3DXPT_FLOAT, "Got result %x, expected %u (D3DXPT_FLOAT)\n",
531 constant_desc.Type, D3DXPT_FLOAT);
532 ok(constant_desc.Rows == 4, "Got result %x, expected 1\n", constant_desc.Rows);
533 ok(constant_desc.Columns == 4, "Got result %x, expected 4\n", constant_desc.Columns);
534 constant_desc_save = constant_desc; /* For GetConstantDesc test */
535
536 constant = ID3DXConstantTable_GetConstant(constant_table, NULL, 3);
537 ok(constant == NULL, "Got result %p, expected NULL\n", constant);
538
539 /* Test GetConstantByName */
540 constant = ID3DXConstantTable_GetConstantByName(constant_table, NULL, "Constant unknown");
541 ok(constant == NULL, "Got result %p, expected NULL\n", constant);
542 constant = ID3DXConstantTable_GetConstantByName(constant_table, NULL, "Constant3");
543 ok(constant != NULL, "No constant found\n");
544 hr = ID3DXConstantTable_GetConstantDesc(constant_table, constant, &constant_desc, &nb);
545 ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
546 ok(!memcmp(&constant_desc, &constant_desc_save, sizeof(D3DXCONSTANT_DESC)), "Got different constant data\n");
547
548 /* Test GetConstantDesc */
549 constant = ID3DXConstantTable_GetConstant(constant_table, NULL, 0);
550 ok(constant != NULL, "No constant found\n");
551 hr = ID3DXConstantTable_GetConstantDesc(constant_table, NULL, &constant_desc, &nb);
552 ok(hr == D3DERR_INVALIDCALL, "Got result %x, expected %x (D3DERR_INVALIDCALL)\n", hr, D3DERR_INVALIDCALL);
553 hr = ID3DXConstantTable_GetConstantDesc(constant_table, constant, NULL, &nb);
554 ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
555 hr = ID3DXConstantTable_GetConstantDesc(constant_table, constant, &constant_desc, NULL);
556 ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
557 hr = ID3DXConstantTable_GetConstantDesc(constant_table, "Constant unknown", &constant_desc, &nb);
558 ok(hr == D3DERR_INVALIDCALL, "Got result %x, expected %x (D3DERR_INVALIDCALL)\n", hr, D3DERR_INVALIDCALL);
559 hr = ID3DXConstantTable_GetConstantDesc(constant_table, "Constant3", &constant_desc, &nb);
560 ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n", hr);
561 ok(!memcmp(&constant_desc, &constant_desc_save, sizeof(D3DXCONSTANT_DESC)), "Got different constant data\n");
562
563 ID3DXConstantTable_Release(constant_table);
564 }
565
567 ok(hr == D3D_OK, "Got result %x, expected 0 (D3D_OK).\n", hr);
568 ok(!constant_table, "D3DXGetShaderConstantTableEx() returned a non-NULL constant table.\n");
569}
570
571static void test_constant_table(const char *test_name, const DWORD *ctable_fn,
572 const D3DXCONSTANT_DESC *expecteds, UINT count)
573{
574 UINT i;
575 ID3DXConstantTable *ctable;
576
577 HRESULT res;
578
579 /* Get the constant table from the shader itself */
581 ok(res == D3D_OK, "D3DXGetShaderConstantTable failed on %s: got %08x\n", test_name, res);
582
583 for (i = 0; i < count; i++)
584 {
585 const D3DXCONSTANT_DESC *expected = &expecteds[i];
586 D3DXHANDLE const_handle;
587 D3DXCONSTANT_DESC actual;
588 UINT pCount = 1;
589
591
592 res = ID3DXConstantTable_GetConstantDesc(ctable, const_handle, &actual, &pCount);
593 ok(SUCCEEDED(res), "%s in %s: ID3DXConstantTable_GetConstantDesc returned %08x\n", expected->Name,
594 test_name, res);
595 ok(pCount == 1, "%s in %s: Got more or less descriptions: %d\n", expected->Name, test_name, pCount);
596
597 ok(strcmp(actual.Name, expected->Name) == 0,
598 "%s in %s: Got different names: Got %s, expected %s\n", expected->Name,
599 test_name, actual.Name, expected->Name);
600 ok(actual.RegisterSet == expected->RegisterSet,
601 "%s in %s: Got different register sets: Got %d, expected %d\n",
602 expected->Name, test_name, actual.RegisterSet, expected->RegisterSet);
603 ok(actual.RegisterIndex == expected->RegisterIndex,
604 "%s in %s: Got different register indices: Got %d, expected %d\n",
605 expected->Name, test_name, actual.RegisterIndex, expected->RegisterIndex);
606 ok(actual.RegisterCount == expected->RegisterCount,
607 "%s in %s: Got different register counts: Got %d, expected %d\n",
608 expected->Name, test_name, actual.RegisterCount, expected->RegisterCount);
609 ok(actual.Class == expected->Class,
610 "%s in %s: Got different classes: Got %d, expected %d\n", expected->Name,
611 test_name, actual.Class, expected->Class);
612 ok(actual.Type == expected->Type,
613 "%s in %s: Got different types: Got %d, expected %d\n", expected->Name,
614 test_name, actual.Type, expected->Type);
615 ok(actual.Rows == expected->Rows && actual.Columns == expected->Columns,
616 "%s in %s: Got different dimensions: Got (%d, %d), expected (%d, %d)\n",
617 expected->Name, test_name, actual.Rows, actual.Columns, expected->Rows,
618 expected->Columns);
619 ok(actual.Elements == expected->Elements,
620 "%s in %s: Got different element count: Got %d, expected %d\n",
621 expected->Name, test_name, actual.Elements, expected->Elements);
622 ok(actual.StructMembers == expected->StructMembers,
623 "%s in %s: Got different struct member count: Got %d, expected %d\n",
624 expected->Name, test_name, actual.StructMembers, expected->StructMembers);
625 ok(actual.Bytes == expected->Bytes,
626 "%s in %s: Got different byte count: Got %d, expected %d\n",
627 expected->Name, test_name, actual.Bytes, expected->Bytes);
628
629 if (!expected->DefaultValue)
630 {
631 ok(actual.DefaultValue == NULL,
632 "%s in %s: Got different default value: expected NULL\n",
633 expected->Name, test_name);
634 }
635 else
636 {
637 ok(actual.DefaultValue != NULL,
638 "%s in %s: Got different default value: expected non-NULL\n",
639 expected->Name, test_name);
640 ok(memcmp(actual.DefaultValue, expected->DefaultValue, expected->Bytes) == 0,
641 "%s in %s: Got different default value\n", expected->Name, test_name);
642 }
643 }
644
645 /* Finally, release the constant table */
647}
648
649static void test_constant_tables(void)
650{
663}
664
665static void test_setting_basic_table(IDirect3DDevice9 *device)
666{
667 static const D3DXMATRIX mvp = {{{
668 0.514f, 0.626f, 0.804f, 0.786f,
669 0.238f, 0.956f, 0.374f, 0.483f,
670 0.109f, 0.586f, 0.900f, 0.255f,
671 0.898f, 0.411f, 0.932f, 0.275f}}};
672 static const D3DXVECTOR4 f4 = {0.350f, 0.526f, 0.925f, 0.021f};
673 static const float f = 0.12543f;
674 static const int i = 321;
675 static const D3DXMATRIX *matrix_pointer[] = {&mvp};
676
677 ID3DXConstantTable *ctable;
678
679 HRESULT res;
680 float out[16];
681 ULONG refcnt;
682
683 /* Get the constant table from the shader itself */
685 ok(res == D3D_OK, "D3DXGetShaderConstantTable failed: got 0x%08x\n", res);
686
687 /* Set constants */
689 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrix failed on variable mvp: got 0x%08x\n", res);
690
692 ok(res == D3D_OK, "ID3DXConstantTable_SetInt failed on variable i: got 0x%08x\n", res);
693
694 /* Check that setting i again will overwrite the previous value */
696 ok(res == D3D_OK, "ID3DXConstantTable_SetInt failed on variable i: got 0x%08x\n", res);
697
699 ok(res == D3D_OK, "ID3DXConstantTable_SetFloat failed on variable f: got 0x%08x\n", res);
700
702 ok(res == D3D_OK, "ID3DXConstantTable_SetVector failed on variable f4: got 0x%08x\n", res);
703
704 /* Get constants back and validate */
706 ok(out[0] == S(U(mvp))._11 && out[4] == S(U(mvp))._12 && out[8] == S(U(mvp))._13 && out[12] == S(U(mvp))._14,
707 "The first row of mvp was not set correctly, got {%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
708 out[0], out[4], out[8], out[12], S(U(mvp))._11, S(U(mvp))._12, S(U(mvp))._13, S(U(mvp))._14);
709 ok(out[1] == S(U(mvp))._21 && out[5] == S(U(mvp))._22 && out[9] == S(U(mvp))._23 && out[13] == S(U(mvp))._24,
710 "The second row of mvp was not set correctly, got {%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
711 out[1], out[5], out[9], out[13], S(U(mvp))._21, S(U(mvp))._22, S(U(mvp))._23, S(U(mvp))._24);
712 ok(out[2] == S(U(mvp))._31 && out[6] == S(U(mvp))._32 && out[10] == S(U(mvp))._33 && out[14] == S(U(mvp))._34,
713 "The third row of mvp was not set correctly, got {%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
714 out[2], out[6], out[10], out[14], S(U(mvp))._31, S(U(mvp))._32, S(U(mvp))._33, S(U(mvp))._34);
715 ok(out[3] == S(U(mvp))._41 && out[7] == S(U(mvp))._42 && out[11] == S(U(mvp))._43 && out[15] == S(U(mvp))._44,
716 "The fourth row of mvp was not set correctly, got {%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
717 out[3], out[7], out[11], out[15], S(U(mvp))._41, S(U(mvp))._42, S(U(mvp))._43, S(U(mvp))._44);
718
720 ok(out[0] == (float)i && out[1] == 0.0f && out[2] == 0.0f && out[3] == 0.0f,
721 "The variable i was not set correctly, out={%f, %f, %f, %f}, should be {%d, 0.0, 0.0, 0.0}\n",
722 out[0], out[1], out[2], out[3], i);
723
725 ok(out[0] == f && out[1] == 0.0f && out[2] == 0.0f && out[3] == 0.0f,
726 "The variable f was not set correctly, out={%f, %f, %f, %f}, should be {%f, 0.0, 0.0, 0.0}\n",
727 out[0], out[1], out[2], out[3], f);
728
730 ok(memcmp(out, &f4, sizeof(f4)) == 0,
731 "The variable f4 was not set correctly, out={%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
732 out[0], out[1], out[2], out[3], f4.x, f4.y, f4.z, f4.w);
733
734 /* Finally test using a set* function for one type to set a variable of another type (should succeed) */
736 ok(res == D3D_OK, "ID3DXConstantTable_SetVector failed on variable f: 0x%08x\n", res);
737
739 ok(out[0] == f4.x && out[1] == 0.0f && out[2] == 0.0f && out[3] == 0.0f,
740 "The variable f was not set correctly by ID3DXConstantTable_SetVector, got %f, should be %f\n",
741 out[0], f4.x);
742
743 memset(out, 0, sizeof(out));
746 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrix failed on variable f: 0x%08x\n", res);
747
749 ok(out[0] == S(U(mvp))._11 && out[1] == 0.0f && out[2] == 0.0f && out[3] == 0.0f,
750 "The variable f was not set correctly by ID3DXConstantTable_SetMatrix, got %f, should be %f\n",
751 out[0], S(U(mvp))._11);
752
753 /* Clear registers */
754 memset(out, 0, sizeof(out));
758
759 /* SetVector shouldn't change the value of a matrix constant */
761 ok(res == D3D_OK, "ID3DXConstantTable_SetVector failed on variable f: 0x%08x\n", res);
762
764 ok(out[0] == 0.0f && out[1] == 0.0f && out[2] == 0.0f && out[3] == 0.0f
765 && out[4] == 0.0f && out[5] == 0.0f && out[6] == 0.0f && out[7] == 0.0f
766 && out[8] == 0.0f && out[9] == 0.0f && out[10] == 0.0f && out[11] == 0.0f
767 && out[12] == 0.0f && out[13] == 0.0f && out[14] == 0.0f && out[15] == 0.0f,
768 "The variable mvp was not set correctly by ID3DXConstantTable_SetVector, "
769 "got {%f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f %f; %f, %f, %f, %f}, "
770 "should be all 0.0f\n",
771 out[0], out[1], out[2], out[3],
772 out[4], out[5], out[6], out[7],
773 out[8], out[9], out[10], out[11],
774 out[12], out[13], out[14], out[15]);
775
777 ok(res == D3D_OK, "ID3DXConstantTable_SetFloat failed on variable mvp: 0x%08x\n", res);
778
780 ok(out[0] == 0.0f && out[1] == 0.0f && out[2] == 0.0f && out[3] == 0.0f
781 && out[4] == 0.0f && out[5] == 0.0f && out[6] == 0.0f && out[7] == 0.0f
782 && out[8] == 0.0f && out[9] == 0.0f && out[10] == 0.0f && out[11] == 0.0f
783 && out[12] == 0.0f && out[13] == 0.0f && out[14] == 0.0f && out[15] == 0.0f,
784 "The variable mvp was not set correctly by ID3DXConstantTable_SetFloat, "
785 "got {%f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f %f; %f, %f, %f, %f}, "
786 "should be all 0.0f\n",
787 out[0], out[1], out[2], out[3],
788 out[4], out[5], out[6], out[7],
789 out[8], out[9], out[10], out[11],
790 out[12], out[13], out[14], out[15]);
791
793 ok(res == D3D_OK, "ID3DXConstantTable_SetFloat failed on variable f4: 0x%08x\n", res);
794
796 ok(out[0] == 0.0f && out[1] == 0.0f && out[2] == 0.0f && out[3] == 0.0f,
797 "The variable f4 was not set correctly by ID3DXConstantTable_SetFloat, "
798 "got {%f, %f, %f, %f}, should be all 0.0f\n",
799 out[0], out[1], out[2], out[3]);
800
802 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrixTranspose failed on variable f: 0x%08x\n", res);
803
805 ok(out[0] == S(U(mvp))._11 && out[1] == 0.0f && out[2] == 0.0f && out[3] == 0.0f,
806 "The variable f was not set correctly by ID3DXConstantTable_SetMatrixTranspose, got %f, should be %f\n",
807 out[0], S(U(mvp))._11);
808
810 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrixTranspose failed on variable f4: 0x%08x\n", res);
811
813 ok(out[0] == S(U(mvp))._11 && out[1] == S(U(mvp))._21 && out[2] == S(U(mvp))._31 && out[3] == S(U(mvp))._41,
814 "The variable f4 was not set correctly by ID3DXConstantTable_SetMatrixTranspose, "
815 "got {%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
816 out[0], out[1], out[2], out[3],
817 S(U(mvp))._11, S(U(mvp))._21, S(U(mvp))._31, S(U(mvp))._41);
818
819 memset(out, 0, sizeof(out));
821 res = ID3DXConstantTable_SetMatrixPointerArray(ctable, device, "f", matrix_pointer, 1);
822 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrixPointerArray failed on variable f: got %#x\n", res);
823
825 ok(out[0] == S(U(mvp))._11 && out[1] == 0.0f && out[2] == 0.0f && out[3] == 0.0f,
826 "The variable f was not set correctly by ID3DXConstantTable_SetMatrixPointerArray, "
827 "got %f, should be %f\n",
828 out[0], S(U(mvp))._11);
829
830 res = ID3DXConstantTable_SetMatrixPointerArray(ctable, device, "f4", matrix_pointer, 1);
831 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrixPointerArray failed on variable f4: got %#x\n", res);
832
834 ok(out[0] == S(U(mvp))._11 && out[1] == S(U(mvp))._12 && out[2] == S(U(mvp))._13 && out[3] == S(U(mvp))._14,
835 "The variable f4 was not set correctly by ID3DXConstantTable_SetMatrixPointerArray, "
836 "got {%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
837 out[0], out[1], out[2], out[3],
838 S(U(mvp))._11, S(U(mvp))._12, S(U(mvp))._13, S(U(mvp))._14);
839
840 memset(out, 0, sizeof(out));
843 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrixTransposePointerArray failed on variable f: got %#x\n", res);
844
846 ok(out[0] == S(U(mvp))._11 && out[1] == 0.0f && out[2] == 0.0f && out[3] == 0.0f,
847 "The variable f was not set correctly by ID3DXConstantTable_SetMatrixTransposePointerArray, "
848 "got %f, should be %f\n",
849 out[0], S(U(mvp))._11);
850
852 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrixTransposePointerArray failed on variable f4: got %#x\n", res);
853
855 ok(out[0] == S(U(mvp))._11 && out[1] == S(U(mvp))._21 && out[2] == S(U(mvp))._31 && out[3] == S(U(mvp))._41,
856 "The variable f4 was not set correctly by ID3DXConstantTable_SetMatrixTransposePointerArray, "
857 "got {%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
858 out[0], out[1], out[2], out[3],
859 S(U(mvp))._11, S(U(mvp))._21, S(U(mvp))._31, S(U(mvp))._41);
860
862 ok(refcnt == 0, "The constant table reference count was %u, should be 0\n", refcnt);
863}
864
865static void test_setting_matrices_table(IDirect3DDevice9 *device)
866{
867 static const D3DXMATRIX fmatrix =
868 {{{2.001f, 1.502f, 9.003f, 1.004f,
869 5.005f, 3.006f, 3.007f, 6.008f,
870 9.009f, 5.010f, 7.011f, 1.012f,
871 5.013f, 5.014f, 5.015f, 9.016f}}};
872 static const D3DXMATRIX *matrix_pointer[] = {&fmatrix};
873
874 ID3DXConstantTable *ctable;
875
876 HRESULT res;
877 float out[32];
878
880 ok(res == D3D_OK, "D3DXGetShaderConstantTable failed: got %#x\n", res);
881
882 res = ID3DXConstantTable_SetMatrix(ctable, device, "imatrix2x3", &fmatrix);
883 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrix failed on variable imatrix2x3: got %#x\n", res);
884
885 res = ID3DXConstantTable_SetMatrix(ctable, device, "fmatrix3x1", &fmatrix);
886 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrix failed on variable fmatrix3x1: got %#x\n", res);
887
889 ok(out[0] == (int)S(U(fmatrix))._11 && out[1] == (int)S(U(fmatrix))._12 && out[2] == (int)S(U(fmatrix))._13
890 && out[3] == 0
891 && out[4] == (int)S(U(fmatrix))._21 && out[5] == (int)S(U(fmatrix))._22 && out[6] == (int)S(U(fmatrix))._23
892 && out[7] == 0,
893 "The variable imatrix2x3 was not set correctly, out={%f, %f, %f, %f; %f, %f, %f, %f}, "
894 "should be {%d, %d, %d, %d; %d, %d, %d, %d}\n",
895 out[0], out[1], out[2], out[3], out[4], out[5], out[6], out[7],
896 (int)S(U(fmatrix))._11, (int)S(U(fmatrix))._12, (int)S(U(fmatrix))._13, 0,
897 (int)S(U(fmatrix))._21, (int)S(U(fmatrix))._22, (int)S(U(fmatrix))._23, 0);
898
900 ok(out[0] == S(U(fmatrix))._11 && out[1] == S(U(fmatrix))._21 && out[2] == S(U(fmatrix))._31 && out[3] == 0.0f,
901 "The variable fmatrix3x1 was not set correctly, out={%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
902 out[0], out[1], out[2], out[3],
903 S(U(fmatrix))._11, S(U(fmatrix))._21, S(U(fmatrix))._31, 0.0f);
904
906
908 ok(res == D3D_OK, "D3DXGetShaderConstantTable failed: got %#x\n", res);
909
910 /* SetMatrix */
911 res = ID3DXConstantTable_SetMatrix(ctable, device, "c2x3", &fmatrix);
912 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrix failed on variable c2x3: got %#x\n", res);
913
914 res = ID3DXConstantTable_SetMatrix(ctable, device, "r2x3", &fmatrix);
915 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrix failed on variable r2x3: got %#x\n", res);
916
917 res = ID3DXConstantTable_SetMatrix(ctable, device, "c3x2", &fmatrix);
918 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrix failed on variable c3x2: got %#x\n", res);
919
920 res = ID3DXConstantTable_SetMatrix(ctable, device, "r3x2", &fmatrix);
921 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrix failed on variable r3x2: got %#x\n", res);
922
923 res = ID3DXConstantTable_SetMatrix(ctable, device, "c3x3", &fmatrix);
924 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrix failed on variable c3x3: got %#x\n", res);
925
927 ok(out[0] == S(U(fmatrix))._11 && out[1] == S(U(fmatrix))._21 && out[2] == 0.0f && out[3] == 0.0f
928 && out[4] == S(U(fmatrix))._12 && out[5] == S(U(fmatrix))._22 && out[6] == 0.0f && out[7] == 0.0f
929 && out[8] == S(U(fmatrix))._13 && out[9] == S(U(fmatrix))._23 && out[10] == 0.0f && out[11] == 0.0f,
930 "The variable c2x3 was not set correctly, out={%f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f}, "
931 "should be {%f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f}\n",
932 out[0], out[1], out[2], out[3],
933 out[4], out[5], out[6], out[7],
934 out[8], out[9], out[10], out[11],
935 S(U(fmatrix))._11, S(U(fmatrix))._21, 0.0f, 0.0f,
936 S(U(fmatrix))._12, S(U(fmatrix))._22, 0.0f, 0.0f,
937 S(U(fmatrix))._13, S(U(fmatrix))._23, 0.0f, 0.0f);
938
939 res = ID3DXConstantTable_SetMatrix(ctable, device, "r4x4", &fmatrix);
940 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrix failed on variable r4x4: got %#x\n", res);
941
943 ok(out[0] == S(U(fmatrix))._11 && out[1] == S(U(fmatrix))._12 && out[2] == S(U(fmatrix))._13 && out[3] == 0.0f
944 && out[4] == S(U(fmatrix))._21 && out[5] == S(U(fmatrix))._22 && out[6] == S(U(fmatrix))._23 && out[7] == 0.0f,
945 "The variable r2x3 was not set correctly, out={%f, %f, %f, %f; %f, %f, %f, %f}, "
946 "should be {%f, %f, %f, %f; %f, %f, %f, %f}\n",
947 out[0], out[1], out[2], out[3], out[4], out[5], out[6], out[7],
948 S(U(fmatrix))._11, S(U(fmatrix))._12, S(U(fmatrix))._13, 0.0f,
949 S(U(fmatrix))._21, S(U(fmatrix))._22, S(U(fmatrix))._23, 0.0f);
950
952 ok(out[0] == S(U(fmatrix))._11 && out[1] == S(U(fmatrix))._21 && out[2] == S(U(fmatrix))._31 && out[3] == 0.0f
953 && out[4] == S(U(fmatrix))._12 && out[5] == S(U(fmatrix))._22 && out[6] == S(U(fmatrix))._32 && out[7] == 0.0f,
954 "The variable c3x2 was not set correctly, out={%f, %f, %f, %f; %f, %f, %f, %f}, "
955 "should be {%f, %f, %f, %f; %f, %f, %f, %f}\n",
956 out[0], out[1], out[2], out[3], out[4], out[5], out[6], out[7],
957 S(U(fmatrix))._11, S(U(fmatrix))._21, S(U(fmatrix))._31, 0.0f,
958 S(U(fmatrix))._12, S(U(fmatrix))._22, S(U(fmatrix))._32, 0.0f);
959
961 ok(out[0] == S(U(fmatrix))._11 && out[1] == S(U(fmatrix))._12 && out[2] == 0.0f && out[3] == 0.0f
962 && out[4] == S(U(fmatrix))._21 && out[5] == S(U(fmatrix))._22 && out[6] == 0.0f && out[7] == 0.0f
963 && out[8] == S(U(fmatrix))._31 && out[9] == S(U(fmatrix))._32 && out[10] == 0.0f && out[11] == 0.0f,
964 "The variable r3x2 was not set correctly, out={%f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f}, "
965 "should be {%f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f}\n",
966 out[0], out[1], out[2], out[3], out[4], out[5], out[6], out[7], out[8], out[9], out[10], out[11],
967 S(U(fmatrix))._11, S(U(fmatrix))._12, 0.0f, 0.0f,
968 S(U(fmatrix))._21, S(U(fmatrix))._22, 0.0f, 0.0f,
969 S(U(fmatrix))._31, S(U(fmatrix))._32, 0.0f, 0.0f);
970
972 ok(out[0] == S(U(fmatrix))._11 && out[1] == S(U(fmatrix))._21 && out[2] == S(U(fmatrix))._31 && out[3] == 0.0f
973 && out[4] == S(U(fmatrix))._12 && out[5] == S(U(fmatrix))._22 && out[6] == S(U(fmatrix))._32 && out[7] == 0.0f
974 && out[8] == S(U(fmatrix))._13 && out[9] == S(U(fmatrix))._23 && out[10] == S(U(fmatrix))._33 && out[11] == 0.0f,
975 "The variable c3x3 was not set correctly, out={%f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f}, "
976 "should be {%f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f}\n",
977 out[0], out[1], out[2], out[3], out[4], out[5], out[6], out[7], out[8], out[9], out[10], out[11],
978 S(U(fmatrix))._11, S(U(fmatrix))._21, S(U(fmatrix))._31, 0.0f,
979 S(U(fmatrix))._12, S(U(fmatrix))._22, S(U(fmatrix))._32, 0.0f,
980 S(U(fmatrix))._13, S(U(fmatrix))._23, S(U(fmatrix))._33, 0.0f);
981
983 ok(out[0] == S(U(fmatrix))._11 && out[1] == S(U(fmatrix))._12 && out[2] == S(U(fmatrix))._13 && out[3] == S(U(fmatrix))._14
984 && out[4] == S(U(fmatrix))._21 && out[5] == S(U(fmatrix))._22 && out[6] == S(U(fmatrix))._23 && out[7] == S(U(fmatrix))._24
985 && out[8] == S(U(fmatrix))._31 && out[9] == S(U(fmatrix))._32 && out[10] == S(U(fmatrix))._33 && out[11] == S(U(fmatrix))._34
986 && out[12] == S(U(fmatrix))._41 && out[13] == S(U(fmatrix))._42 && out[14] == S(U(fmatrix))._43 && out[15] == S(U(fmatrix))._44,
987 "The variable r4x4 was not set correctly, out={%f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f}, "
988 "should be {%f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f}\n",
989 out[0], out[1], out[2], out[3], out[4], out[5], out[6], out[7],
990 out[8], out[9], out[10], out[11], out[12], out[13], out[14], out[15],
991 S(U(fmatrix))._11, S(U(fmatrix))._12, S(U(fmatrix))._13, S(U(fmatrix))._14,
992 S(U(fmatrix))._21, S(U(fmatrix))._22, S(U(fmatrix))._23, S(U(fmatrix))._24,
993 S(U(fmatrix))._31, S(U(fmatrix))._32, S(U(fmatrix))._33, S(U(fmatrix))._34,
994 S(U(fmatrix))._41, S(U(fmatrix))._42, S(U(fmatrix))._43, S(U(fmatrix))._44);
995
996 /* SetMatrixTranspose */
998 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrixTranspose failed on variable c2x3: got %#x\n", res);
999
1001 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrixTranspose failed on variable r2x3: got %#x\n", res);
1002
1004 ok(out[0] == S(U(fmatrix))._11 && out[1] == S(U(fmatrix))._12 && out[2] == 0.0f && out[3] == 0.0f
1005 && out[4] == S(U(fmatrix))._21 && out[5] == S(U(fmatrix))._22 && out[6] == 0.0f && out[7] == 0.0f
1006 && out[8] == S(U(fmatrix))._31 && out[9] == S(U(fmatrix))._32 && out[10] == 0.0f && out[11] == 0.0f,
1007 "The variable c2x3 was not set correctly, out={%f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f}, "
1008 "should be {%f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f}\n",
1009 out[0], out[1], out[2], out[3],
1010 out[4], out[5], out[6], out[7],
1011 out[8], out[9], out[10], out[11],
1012 S(U(fmatrix))._11, S(U(fmatrix))._12, 0.0f, 0.0f,
1013 S(U(fmatrix))._21, S(U(fmatrix))._22, 0.0f, 0.0f,
1014 S(U(fmatrix))._31, S(U(fmatrix))._32, 0.0f, 0.0f);
1015
1017 ok(out[0] == S(U(fmatrix))._11 && out[1] == S(U(fmatrix))._21 && out[2] == S(U(fmatrix))._31 && out[3] == 0.0f
1018 && out[4] == S(U(fmatrix))._12 && out[5] == S(U(fmatrix))._22 && out[6] == S(U(fmatrix))._32 && out[7] == 0.0f,
1019 "The variable r2x3 was not set correctly, out={%f, %f, %f, %f; %f, %f, %f, %f}, "
1020 "should be {%f, %f, %f, %f; %f, %f, %f, %f}\n",
1021 out[0], out[1], out[2], out[3], out[4], out[5], out[6], out[7],
1022 S(U(fmatrix))._11, S(U(fmatrix))._21, S(U(fmatrix))._31, 0.0f,
1023 S(U(fmatrix))._12, S(U(fmatrix))._22, S(U(fmatrix))._32, 0.0f);
1024
1025 /* SetMatrixPointerArray */
1026 res = ID3DXConstantTable_SetMatrixPointerArray(ctable, device, "c2x3", matrix_pointer, 1);
1027 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrixPointerArray failed on variable c2x3: got %#x\n", res);
1028
1029 res = ID3DXConstantTable_SetMatrixPointerArray(ctable, device, "r2x3", matrix_pointer, 1);
1030 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrixPointerArray failed on variable r2x3: got %#x\n", res);
1031
1033 ok(out[0] == S(U(fmatrix))._11 && out[1] == S(U(fmatrix))._21 && out[2] == 0.0f && out[3] == 0.0f
1034 && out[4] == S(U(fmatrix))._12 && out[5] == S(U(fmatrix))._22 && out[6] == 0.0f && out[7] == 0.0f
1035 && out[8] == S(U(fmatrix))._13 && out[9] == S(U(fmatrix))._23 && out[10] == 0.0f && out[11] == 0.0f,
1036 "The variable c2x3 was not set correctly, out={%f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f}, "
1037 "should be {%f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f}\n",
1038 out[0], out[1], out[2], out[3],
1039 out[4], out[5], out[6], out[7],
1040 out[8], out[9], out[10], out[11],
1041 S(U(fmatrix))._11, S(U(fmatrix))._21, 0.0f, 0.0f,
1042 S(U(fmatrix))._12, S(U(fmatrix))._22, 0.0f, 0.0f,
1043 S(U(fmatrix))._13, S(U(fmatrix))._23, 0.0f, 0.0f);
1044
1046 ok(out[0] == S(U(fmatrix))._11 && out[1] == S(U(fmatrix))._12 && out[2] == S(U(fmatrix))._13 && out[3] == 0.0f
1047 && out[4] == S(U(fmatrix))._21 && out[5] == S(U(fmatrix))._22 && out[6] == S(U(fmatrix))._23 && out[7] == 0.0f,
1048 "The variable r2x3 was not set correctly, out={%f, %f, %f, %f; %f, %f, %f, %f}, "
1049 "should be {%f, %f, %f, %f; %f, %f, %f, %f}\n",
1050 out[0], out[1], out[2], out[3], out[4], out[5], out[6], out[7],
1051 S(U(fmatrix))._11, S(U(fmatrix))._12, S(U(fmatrix))._13, 0.0f,
1052 S(U(fmatrix))._21, S(U(fmatrix))._22, S(U(fmatrix))._23, 0.0f);
1053
1054 /* SetMatrixTransposePointerArray */
1056 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrixTransposePointerArray failed on variable c2x3: got %#x\n", res);
1057
1059 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrixTransposePointerArray failed on variable r2x3: got %#x\n", res);
1060
1062 ok(out[0] == S(U(fmatrix))._11 && out[1] == S(U(fmatrix))._12 && out[2] == 0.0f && out[3] == 0.0f
1063 && out[4] == S(U(fmatrix))._21 && out[5] == S(U(fmatrix))._22 && out[6] == 0.0f && out[7] == 0.0f
1064 && out[8] == S(U(fmatrix))._31 && out[9] == S(U(fmatrix))._32 && out[10] == 0.0f && out[11] == 0.0f,
1065 "The variable c2x3 was not set correctly, out={%f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f}, "
1066 "should be {%f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f}\n",
1067 out[0], out[1], out[2], out[3],
1068 out[4], out[5], out[6], out[7],
1069 out[8], out[9], out[10], out[11],
1070 S(U(fmatrix))._11, S(U(fmatrix))._12, 0.0f, 0.0f,
1071 S(U(fmatrix))._21, S(U(fmatrix))._22, 0.0f, 0.0f,
1072 S(U(fmatrix))._31, S(U(fmatrix))._32, 0.0f, 0.0f);
1073
1075 ok(out[0] == S(U(fmatrix))._11 && out[1] == S(U(fmatrix))._21 && out[2] == S(U(fmatrix))._31 && out[3] == 0.0f
1076 && out[4] == S(U(fmatrix))._12 && out[5] == S(U(fmatrix))._22 && out[6] == S(U(fmatrix))._32 && out[7] == 0.0f,
1077 "The variable r2x3 was not set correctly, out={%f, %f, %f, %f; %f, %f, %f, %f}, "
1078 "should be {%f, %f, %f, %f; %f, %f, %f, %f}\n",
1079 out[0], out[1], out[2], out[3], out[4], out[5], out[6], out[7],
1080 S(U(fmatrix))._11, S(U(fmatrix))._21, S(U(fmatrix))._31, 0.0f,
1081 S(U(fmatrix))._12, S(U(fmatrix))._22, S(U(fmatrix))._32, 0.0f);
1082
1084}
1085
1086static void test_setting_arrays_table(IDirect3DDevice9 *device)
1087{
1088 static const float farray[8] = {
1089 0.005f, 0.745f, 0.973f, 0.264f,
1090 0.010f, 0.020f, 0.030f, 0.040f};
1091 static const D3DXMATRIX fmtxarray[2] = {
1092 {{{0.001f, 0.002f, 0.003f, 0.004f,
1093 0.005f, 0.006f, 0.007f, 0.008f,
1094 0.009f, 0.010f, 0.011f, 0.012f,
1095 0.013f, 0.014f, 0.015f, 0.016f}}},
1096 {{{0.010f, 0.020f, 0.030f, 0.040f,
1097 0.050f, 0.060f, 0.070f, 0.080f,
1098 0.090f, 0.100f, 0.110f, 0.120f,
1099 0.130f, 0.140f, 0.150f, 0.160f}}}};
1100 static const int iarray[4] = {1, 2, 3, 4};
1101 static const D3DXVECTOR4 fvecarray[2] = {
1102 {0.745f, 0.997f, 0.353f, 0.237f},
1103 {0.060f, 0.455f, 0.333f, 0.983f}};
1104 static BOOL barray[4] = {FALSE, 100, TRUE, TRUE};
1105
1106 ID3DXConstantTable *ctable;
1107
1108 HRESULT res;
1109 float out[32];
1110 ULONG refcnt;
1111
1112 /* Clear registers */
1113 memset(out, 0, sizeof(out));
1116
1117 /* Get the constant table from the shader */
1119 ok(res == D3D_OK, "D3DXGetShaderConstantTable failed: got 0x%08x\n", res);
1120
1121 /* Set constants */
1122
1123 /* Make sure that we cannot set registers that do not belong to this constant */
1124 res = ID3DXConstantTable_SetFloatArray(ctable, device, "farray", farray, 8);
1125 ok(res == D3D_OK, "ID3DXConstantTable_SetFloatArray failed: got 0x%08x\n", res);
1126
1128 ok(out[0] == farray[0] && out[4] == farray[1] && out[8] == farray[2] && out[12] == farray[3],
1129 "The in-bounds elements of the array were not set, out={%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
1130 out[0], out[4], out[8], out[12], farray[0], farray[1], farray[2], farray[3]);
1131 ok(out[16] == 0.0f && out[20] == 0.0f && out[24] == 0.0f && out[28] == 0.0f,
1132 "The excess elements of the array were set, out={%f, %f, %f, %f}, should be all 0.0f\n",
1133 out[16], out[20], out[24], out[28]);
1134
1135 /* ivecarray takes up only 1 register, but a matrix takes up 4, so no elements should be set */
1136 res = ID3DXConstantTable_SetMatrix(ctable, device, "ivecarray", &fmtxarray[0]);
1137 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrix failed: got 0x%08x\n", res);
1138
1140 ok(out[0] == 0.0f && out[1] == 0.0f && out[2] == 0.0f && out[3] == 0.0f,
1141 "The array was set, out={%f, %f, %f, %f}, should be all 0.0f\n", out[0], out[1], out[2], out[3]);
1142
1143 /* Try setting an integer array to an array declared as a float array */
1144 res = ID3DXConstantTable_SetIntArray(ctable, device, "farray", iarray, 4);
1145 ok(res == D3D_OK, "ID3DXConstantTable_SetIntArray failed: got 0x%08x\n", res);
1146
1148 ok(out[0] == iarray[0] && out[4] == iarray[1] && out[8] == iarray[2] && out[12] == iarray[3],
1149 "SetIntArray did not properly set a float array: out={%f, %f, %f, %f}, should be {%d, %d, %d, %d}\n",
1150 out[0], out[4], out[8], out[12], iarray[0], iarray[1], iarray[2], iarray[3]);
1151
1152 res = ID3DXConstantTable_SetFloatArray(ctable, device, "farray", farray, 4);
1153 ok(res == D3D_OK, "ID3DXConstantTable_SetFloatArray failed: got x0%08x\n", res);
1154
1155 res = ID3DXConstantTable_SetVectorArray(ctable, device, "fvecarray", fvecarray, 2);
1156 ok(res == D3D_OK, "ID3DXConstantTable_SetVectorArray failed: got 0x%08x\n", res);
1157
1158 res = ID3DXConstantTable_SetMatrixArray(ctable, device, "fmtxarray", fmtxarray, 2);
1159 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrixArray failed: got 0x%08x\n", res);
1160
1161 res = ID3DXConstantTable_SetBoolArray(ctable, device, "barray", barray, 2);
1162 ok(res == D3D_OK, "ID3DXConstantTable_SetBoolArray failed: got 0x%08x\n", res);
1163
1164 /* Read back constants */
1166 ok(out[0] == farray[0] && out[4] == farray[1] && out[8] == farray[2] && out[12] == farray[3],
1167 "The variable farray was not set correctly, out={%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
1168 out[0], out[4], out[8], out[12], farray[0], farray[1], farray[2], farray[3]);
1169
1171 ok(out[0] == fvecarray[0].x && out[1] == fvecarray[0].y && out[2] == fvecarray[0].z && out[3] == fvecarray[0].w &&
1172 out[4] == fvecarray[1].x && out[5] == fvecarray[1].y && out[6] == fvecarray[1].z && out[7] == fvecarray[1].w,
1173 "The variable fvecarray was not set correctly, out={{%f, %f, %f, %f}, {%f, %f, %f, %f}}, should be "
1174 "{{%f, %f, %f, %f}, {%f, %f, %f, %f}}\n", out[0], out[1], out[2], out[3], out[4], out[5], out[6], out[7],
1175 fvecarray[0].x, fvecarray[0].y, fvecarray[0].z, fvecarray[0].w, fvecarray[1].x, fvecarray[1].y,
1176 fvecarray[1].z, fvecarray[1].w);
1177
1179 ok(out[0] == 0.0f && out[1] == 0.0f && out[2] == 0.0f && out[3] == 0.0f
1180 && out[4] == 1.0f && out[5] == 0.0f && out[6] == 0.0f && out[7] == 0.0f,
1181 "The variable barray was not set correctly, out={%f, %f %f, %f; %f, %f, %f, %f}, should be {%f, %f, %f, %f; %f, %f, %f, %f}\n",
1182 out[0], out[1], out[2], out[3], out[4], out[5], out[6], out[7],
1183 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f);
1184
1186 /* Just check a few elements in each matrix to make sure fmtxarray was set row-major */
1187 ok(out[0] == S(U(fmtxarray[0]))._11 && out[1] == S(U(fmtxarray[0]))._12 && out[2] == S(U(fmtxarray[0]))._13 && out[3] == S(U(fmtxarray[0]))._14,
1188 "The variable fmtxarray was not set row-major, out={%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
1189 out[0], out[1], out[2], out[3], S(U(fmtxarray[0]))._11, S(U(fmtxarray[0]))._12, S(U(fmtxarray[0]))._13, S(U(fmtxarray[0]))._14);
1190 ok(out[16] == S(U(fmtxarray[1]))._11 && out[17] == S(U(fmtxarray[1]))._12 && out[18] == S(U(fmtxarray[1]))._13 && out[19] == S(U(fmtxarray[1]))._14,
1191 "The variable fmtxarray was not set row-major, out={%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
1192 out[16], out[17], out[18], out[19], S(U(fmtxarray[1]))._11, S(U(fmtxarray[1]))._12, S(U(fmtxarray[1]))._13, S(U(fmtxarray[1]))._14);
1193
1195 ok(refcnt == 0, "The constant table reference count was %u, should be 0\n", refcnt);
1196}
1197
1198static void test_SetDefaults(IDirect3DDevice9 *device)
1199{
1200 static const D3DXMATRIX mvp = {{{
1201 0.51f, 0.62f, 0.80f, 0.78f,
1202 0.23f, 0.95f, 0.37f, 0.48f,
1203 0.10f, 0.58f, 0.90f, 0.25f,
1204 0.89f, 0.41f, 0.93f, 0.27f}}};
1205 static const D3DXVECTOR4 f4 = {0.2f, 0.4f, 0.8f, 1.2f};
1206
1207 float out[16];
1208
1209 HRESULT res;
1210 ID3DXConstantTable *ctable;
1211
1213 ok(res == D3D_OK, "D3DXGetShaderConstantTable failed: got %08x\n", res);
1214
1216 ok(res == D3D_OK, "ID3DXConstantTable_SetVector failed: got %08x\n", res);
1217
1219 ok(res == D3D_OK, "ID3DXConstantTable_SetMatrix failed: got %08x\n", res);
1220
1222 ok(res == D3D_OK, "ID3dXConstantTable_SetDefaults failed: got %08x\n", res);
1223
1224 /* SetDefaults doesn't change constants without default values */
1226 ok(out[0] == S(U(mvp))._11 && out[4] == S(U(mvp))._12 && out[8] == S(U(mvp))._13 && out[12] == S(U(mvp))._14,
1227 "The first row of mvp was not set correctly, got {%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
1228 out[0], out[4], out[8], out[12], S(U(mvp))._11, S(U(mvp))._12, S(U(mvp))._13, S(U(mvp))._14);
1229 ok(out[1] == S(U(mvp))._21 && out[5] == S(U(mvp))._22 && out[9] == S(U(mvp))._23 && out[13] == S(U(mvp))._24,
1230 "The second row of mvp was not set correctly, got {%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
1231 out[1], out[5], out[9], out[13], S(U(mvp))._21, S(U(mvp))._22, S(U(mvp))._23, S(U(mvp))._24);
1232 ok(out[2] == S(U(mvp))._31 && out[6] == S(U(mvp))._32 && out[10] == S(U(mvp))._33 && out[14] == S(U(mvp))._34,
1233 "The third row of mvp was not set correctly, got {%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
1234 out[2], out[6], out[10], out[14], S(U(mvp))._31, S(U(mvp))._32, S(U(mvp))._33, S(U(mvp))._34);
1235 ok(out[3] == S(U(mvp))._41 && out[7] == S(U(mvp))._42 && out[11] == S(U(mvp))._43 && out[15] == S(U(mvp))._44,
1236 "The fourth row of mvp was not set correctly, got {%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
1237 out[3], out[7], out[11], out[15], S(U(mvp))._41, S(U(mvp))._42, S(U(mvp))._43, S(U(mvp))._44);
1238
1240 ok(memcmp(out, &f4, sizeof(f4)) == 0,
1241 "The variable f4 was not set correctly, out={%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
1242 out[0], out[1], out[2], out[3], f4.x, f4.y, f4.z, f4.w);
1243
1245
1247 ok(res == D3D_OK, "D3DXGetShaderConstantTable failed: got %08x\n", res);
1248
1250 ok(res == D3D_OK, "ID3DXConstantTable_SetDefaults failed: got %08x\n", res);
1251
1254 "The variable mat4 was not set correctly to default value\n");
1255
1258 "The variable mat3 was not set correctly to default value\n");
1259
1262 "The variable array was not set correctly to default value\n");
1263
1266 "The variable vec4 was not set correctly to default value\n");
1267
1270 "The variable flt was not set correctly to default value\n");
1271
1273}
1274
1275static void test_SetValue(IDirect3DDevice9 *device)
1276{
1277 static const D3DXMATRIX mvp = {{{
1278 0.51f, 0.62f, 0.80f, 0.78f,
1279 0.23f, 0.95f, 0.37f, 0.48f,
1280 0.10f, 0.58f, 0.90f, 0.25f,
1281 0.89f, 0.41f, 0.93f, 0.27f}}};
1282 static const D3DXVECTOR4 f4 = {0.2f, 0.4f, 0.8f, 1.2f};
1283 static const FLOAT arr[] = {0.33f, 0.55f, 0.96f, 1.00f,
1284 1.00f, 1.00f, 1.00f, 1.00f,
1285 1.00f, 1.00f, 1.00f, 1.00f};
1286 static int imatrix[] = {1, 2, 3, 4, 5, 6};
1287 static float fmatrix[] = {1.1f, 2.2f, 3.3f, 4.4f};
1288 static BOOL barray[] = {TRUE, FALSE};
1289 static float fvecarray[] = {9.1f, 9.2f, 9.3f, 9.4f, 9.5f, 9.6f, 9.7f, 9.8f};
1290 static float farray[] = {2.2f, 3.3f};
1291
1292 static const float def[16] = {5.5f, 5.5f, 5.5f, 5.5f,
1293 5.5f, 5.5f, 5.5f, 5.5f,
1294 5.5f, 5.5f, 5.5f, 5.5f,
1295 5.5f, 5.5f, 5.5f, 5.5f};
1296 float out[16];
1297
1298 HRESULT res;
1299 ID3DXConstantTable *ctable;
1300
1302 ok(res == D3D_OK, "D3DXGetShaderConstantTable failed: got %08x\n", res);
1303
1305
1306 /* SetValue called with 0 bytes size doesn't change value */
1308 ok(res == D3D_OK, "ID3DXConstantTable_SetValue failed: got %08x\n", res);
1309
1311 ok(memcmp(out, def, sizeof(f4)) == 0,
1312 "The variable f4 was not set correctly, out={%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
1313 out[0], out[1], out[2], out[3], def[0], def[1], def[2], def[3]);
1314
1315 res = ID3DXConstantTable_SetValue(ctable, device, "f4", &f4, sizeof(f4));
1316 ok(res == D3D_OK, "ID3DXConstantTable_SetValue failed: got %08x\n", res);
1317
1319 ok(memcmp(out, &f4, sizeof(f4)) == 0,
1320 "The variable f4 was not set correctly, out={%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
1321 out[0], out[1], out[2], out[3], f4.x, f4.y, f4.z, f4.w);
1322
1324
1325 /* SetValue called with size smaller than constant size doesn't change value */
1326 res = ID3DXConstantTable_SetValue(ctable, device, "mvp", &mvp, sizeof(mvp) / 2);
1327 ok(res == D3D_OK, "ID3DXConstantTable_SetValue returned %08x\n", res);
1328
1330 ok(memcmp(out, def, sizeof(def)) == 0,
1331 "The variable mvp was not set correctly, out={%f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f}, "
1332 "should be {%f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f}\n",
1333 out[0], out[4], out[ 8], out[12],
1334 out[1], out[5], out[ 9], out[13],
1335 out[2], out[6], out[10], out[14],
1336 out[3], out[7], out[11], out[15],
1337 def[0], def[4], def[ 8], def[12],
1338 def[1], def[5], def[ 9], def[13],
1339 def[2], def[6], def[10], def[14],
1340 def[3], def[7], def[11], def[15]);
1341
1342 res = ID3DXConstantTable_SetValue(ctable, device, "mvp", &mvp, sizeof(mvp));
1343 ok(res == D3D_OK, "ID3DXConstantTable_SetValue failed: got %08x\n", res);
1344
1346 ok(out[0] == S(U(mvp))._11 && out[4] == S(U(mvp))._12 && out[8] == S(U(mvp))._13 && out[12] == S(U(mvp))._14,
1347 "The first row of mvp was not set correctly, got {%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
1348 out[0], out[4], out[8], out[12], S(U(mvp))._11, S(U(mvp))._12, S(U(mvp))._13, S(U(mvp))._14);
1349 ok(out[1] == S(U(mvp))._21 && out[5] == S(U(mvp))._22 && out[9] == S(U(mvp))._23 && out[13] == S(U(mvp))._24,
1350 "The second row of mvp was not set correctly, got {%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
1351 out[1], out[5], out[9], out[13], S(U(mvp))._21, S(U(mvp))._22, S(U(mvp))._23, S(U(mvp))._24);
1352 ok(out[2] == S(U(mvp))._31 && out[6] == S(U(mvp))._32 && out[10] == S(U(mvp))._33 && out[14] == S(U(mvp))._34,
1353 "The third row of mvp was not set correctly, got {%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
1354 out[2], out[6], out[10], out[14], S(U(mvp))._31, S(U(mvp))._32, S(U(mvp))._33, S(U(mvp))._34);
1355 ok(out[3] == S(U(mvp))._41 && out[7] == S(U(mvp))._42 && out[11] == S(U(mvp))._43 && out[15] == S(U(mvp))._44,
1356 "The fourth row of mvp was not set correctly, got {%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
1357 out[3], out[7], out[11], out[15], S(U(mvp))._41, S(U(mvp))._42, S(U(mvp))._43, S(U(mvp))._44);
1358
1360
1362 ok(res == D3D_OK, "D3DXGetShaderConstantTable failed: got %08x\n", res);
1363
1364 res = ID3DXConstantTable_SetValue(ctable, device, "arr", arr, sizeof(arr));
1365 ok(res == D3D_OK, "ID3DXConstantTable_SetValue failed: got %08x\n", res);
1366
1368 ok(out[0] == arr[0] && out[4] == arr[1] && out[8] == arr[2]
1369 && out[1] == 0 && out[2] == 0 && out[3] == 0 && out[5] == 0 && out[6] == 0 && out[7] == 0
1370 && out[9] == 0 && out[10] == 0 && out[11] == 0,
1371 "The variable arr was not set correctly, out={%f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f}, "
1372 "should be {0.33, 0, 0, 0, 0.55, 0, 0, 0, 0.96, 0, 0, 0}\n",
1373 out[0], out[1], out[2], out[3], out[4], out[5], out[6], out[7], out[8], out[9], out[10], out[11]);
1374
1376
1378 ok(res == D3D_OK, "D3DXGetShaderConstantTable failed: got %08x\n", res);
1379
1380 res = ID3DXConstantTable_SetValue(ctable, device, "fmatrix3x1", fmatrix, sizeof(fmatrix));
1381 ok(res == D3D_OK, "ID3DXConstantTable_SetValue failed: got %08x\n", res);
1382
1383 res = ID3DXConstantTable_SetValue(ctable, device, "imatrix2x3", imatrix, sizeof(imatrix));
1384 ok(res == D3D_OK, "ID3DXConstantTable_SetValue failed: got %08x\n", res);
1385
1387 ok(out[0] == imatrix[0] && out[1] == imatrix[1] && out[2] == imatrix[2] && out[3] == 0.0f
1388 && out[4] == imatrix[3] && out[5] == imatrix[4] && out[6] == imatrix[5] && out[7] == 0.0f,
1389 "The variable imatrix2x3 was not set correctly, out={%f, %f, %f, %f, %f, %f, %f, %f}, "
1390 "should be {%d, %d, %d, 0, %d, %d, %d, 0}\n",
1391 out[0], out[1], out[2], out[3], out[4], out[5], out[6], out[7],
1392 imatrix[0], imatrix[1], imatrix[2], imatrix[3], imatrix[4], imatrix[5]);
1393
1395 ok(out[0] == fmatrix[0] && out[1] == fmatrix[1] && out[2] == fmatrix[2] && out[3] == 0.0f,
1396 "The variable fmatrix3x1 was not set correctly, out={%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
1397 out[0], out[1] ,out[2], out[4],
1398 fmatrix[0], fmatrix[1], fmatrix[2], 0.0f);
1399
1401
1403 ok(res == D3D_OK, "D3DXGetShaderConstantTable failed: got %08x\n", res);
1404
1405 res = ID3DXConstantTable_SetValue(ctable, device, "barray", barray, sizeof(barray));
1406 ok(res == D3D_OK, "ID3DXConstantTable_SetValue failed: got %08x\n", res);
1407
1408 res = ID3DXConstantTable_SetValue(ctable, device, "fvecarray", fvecarray, sizeof(fvecarray));
1409 ok(res == D3D_OK, "ID3DXConstantTable_SetValue failed: got %08x\n", res);
1410
1412 res = ID3DXConstantTable_SetValue(ctable, device, "farray", farray, sizeof(farray));
1413 ok(res == D3D_OK, "ID3DXConstantTable_SetValue failed: got %08x\n", res);
1414
1415 /* 2 elements of farray were set */
1417 ok(out[0] == farray[0] && out[1] == 0.0f && out[2] == 0.0f && out[3] == 0.0f
1418 && out[4] == farray[1] && out[5] == 0.0f && out[6] == 0.0f && out[7] == 0.0f
1419 && out[8] == def[8] && out[9] == def[9] && out[10] == def[10] && out[11] == def[11]
1420 && out[12] == def[12] && out[13] == def[13] && out[14] == def[14] && out[15] == def[15],
1421 "The variable farray was not set correctly, should be {%f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f}, "
1422 "should be {%f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f; %f, %f, %f, %f}\n",
1423 out[0], out[1], out[2], out[3], out[4], out[5], out[6], out[7],
1424 out[8], out[9], out[10], out[11], out[12], out[13], out[14], out[15],
1425 farray[0], 0.0f, 0.0f, 0.0f,
1426 farray[1], 0.0f, 0.0f, 0.0f,
1427 def[8], def[9], def[10], def[11],
1428 def[12], def[13], def[14], def[15]);
1429
1431 ok(out[0] == fvecarray[0] && out[1] == fvecarray[1] && out[2] == fvecarray[2] && out[3] == fvecarray[3]
1432 && out[4] == fvecarray[4] && out[5] == fvecarray[5] && out[6] == fvecarray[6] && out[7] == fvecarray[7],
1433 "The variable fvecarray was not set correctly, out ={%f, %f, %f, %f, %f, %f, %f, %f}, "
1434 "should be {%f, %f, %f, %f, %f, %f, %f, %f}\n",
1435 out[0], out[1], out[2], out[3], out[4], out[5], out[6], out[7],
1436 fvecarray[0], fvecarray[1], fvecarray[2], fvecarray[3], fvecarray[4], fvecarray[5], fvecarray[6], fvecarray[7]);
1437
1439 ok(out[0] == 1.0f && out[1] == 0.0f && out[2] == 0.0f && out[3] == 0.0f
1440 && out[4] == 0.0f && out[5] == 0.0f && out[6] == 0.0f && out[7] == 0.0f,
1441 "The variable barray was not set correctly, out={%f, %f, %f, %f, %f, %f, %f, %f}, "
1442 "should be {%f, %f, %f, %f, %f, %f, %f, %f}\n",
1443 out[0], out[1], out[2], out[3], out[4], out[5], out[6], out[7],
1444 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
1445
1447}
1448
1449static void test_setting_constants(void)
1450{
1451 HWND wnd;
1452 IDirect3D9 *d3d;
1453 IDirect3DDevice9 *device;
1455 HRESULT hr;
1456 ULONG refcnt;
1457
1458 if (!(wnd = CreateWindowA("static", "d3dx9_test", WS_OVERLAPPEDWINDOW, 0, 0,
1459 640, 480, NULL, NULL, NULL, NULL)))
1460 {
1461 skip("Couldn't create application window\n");
1462 return;
1463 }
1464 if (!(d3d = Direct3DCreate9(D3D_SDK_VERSION)))
1465 {
1466 skip("Couldn't create IDirect3D9 object\n");
1467 DestroyWindow(wnd);
1468 return;
1469 }
1470
1471 ZeroMemory(&d3dpp, sizeof(d3dpp));
1472 d3dpp.Windowed = TRUE;
1475 if (FAILED(hr))
1476 {
1477 skip("Failed to create IDirect3DDevice9 object %#x\n", hr);
1478 IDirect3D9_Release(d3d);
1479 DestroyWindow(wnd);
1480 return;
1481 }
1482
1488
1489 /* Release resources */
1491 ok(refcnt == 0, "The Direct3D device reference count was %u, should be 0\n", refcnt);
1492
1493 refcnt = IDirect3D9_Release(d3d);
1494 ok(refcnt == 0, "The Direct3D object reference count was %u, should be 0\n", refcnt);
1495
1496 if (wnd) DestroyWindow(wnd);
1497}
1498
1499static void test_get_sampler_index(void)
1500{
1501 ID3DXConstantTable *ctable;
1502
1503 HRESULT res;
1504 UINT index;
1505
1506 ULONG refcnt;
1507
1509 ok(res == D3D_OK, "D3DXGetShaderConstantTable failed on ctab_samplers: got %08x\n", res);
1510
1512 ok(index == 0, "ID3DXConstantTable_GetSamplerIndex returned wrong index: Got %d, expected 0\n", index);
1513
1515 ok(index == 3, "ID3DXConstantTable_GetSamplerIndex returned wrong index: Got %d, expected 3\n", index);
1516
1518 ok(index == -1, "ID3DXConstantTable_GetSamplerIndex found nonexistent sampler: Got %d\n",
1519 index);
1520
1522 ok(index == -1, "ID3DXConstantTable_GetSamplerIndex succeeded on non-sampler constant: Got %d\n",
1523 index);
1524
1526 ok(refcnt == 0, "The ID3DXConstantTable reference count was %u, should be 0\n", refcnt);
1527}
1528
1529/*
1530 * fxc.exe /Tps_3_0
1531 */
1532#if 0
1533sampler s;
1534sampler1D s1D;
1535sampler2D s2D;
1536sampler3D s3D;
1537samplerCUBE scube;
1538float4 init;
1539float4 main(float3 tex : TEXCOORD0) : COLOR
1540{
1541 float4 tmp = init;
1542 tmp = tmp + tex1D(s1D, tex.x);
1543 tmp = tmp + tex1D(s1D, tex.y);
1544 tmp = tmp + tex3D(s3D, tex.xyz);
1545 tmp = tmp + tex1D(s, tex.x);
1546 tmp = tmp + tex2D(s2D, tex.xy);
1547 tmp = tmp + texCUBE(scube, tex.xyz);
1548 return tmp;
1549}
1550#endif
1552{
1553 0xffff0300, /* ps_3_0 */
1554 0x0054fffe, FCC_CTAB, /* CTAB comment */
1555 0x0000001c, 0x0000011b, 0xffff0300, 0x00000006, 0x0000001c, 0x00000100, /* Header */
1556 0x00000114,
1557 0x00000094, 0x00000002, 0x00000001, 0x0000009c, 0x00000000, /* Constant 1 desc (init) */
1558 0x000000ac, 0x00040003, 0x00000001, 0x000000b0, 0x00000000, /* Constant 2 desc (s) */
1559 0x000000c0, 0x00000003, 0x00000001, 0x000000c4, 0x00000000, /* Constant 3 desc (s1D) */
1560 0x000000d4, 0x00010003, 0x00000001, 0x000000d8, 0x00000000, /* Constant 4 desc (s2D) */
1561 0x000000e8, 0x00030003, 0x00000001, 0x000000ec, 0x00000000, /* Constant 5 desc (s3D) */
1562 0x000000fc, 0x00020003, 0x00000001, 0x00000104, 0x00000000, /* Constant 6 desc (scube) */
1563 0x74696e69, 0xababab00, /* Constant 1 name */
1564 0x00030001, 0x00040001, 0x00000001, 0x00000000, /* Constant 1 type desc */
1565 0xabab0073, /* Constant 2 name */
1566 0x000c0004, 0x00010001, 0x00000001, 0x00000000, /* Constant 2 type desc */
1567 0x00443173, /* Constant 3 name */
1568 0x000b0004, 0x00010001, 0x00000001, 0x00000000, /* Constant 3 type desc */
1569 0x00443273, /* Constant 4 name */
1570 0x000c0004, 0x00010001, 0x00000001, 0x00000000, /* Constant 4 type desc */
1571 0x00443373, /* Constant 5 name */
1572 0x000d0004, 0x00010001, 0x00000001, 0x00000000, /* Constant 5 type desc */
1573 0x62756373, 0xabab0065, /* Constant 6 name */
1574 0x000e0004, 0x00010001, 0x00000001, 0x00000000, /* Constant 6 type desc */
1575 0x335f7370, 0x4d00305f, 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820, /* Target/Creator name string */
1576 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970, 0x2e392072, 0x392e3932,
1577 0x332e3235, 0x00313131,
1578 0x0200001f, 0x80000005, 0x90070000, 0x0200001f, 0x90000000, 0xa00f0800, /* shader */
1579 0x0200001f, 0x90000000, 0xa00f0801, 0x0200001f, 0x98000000, 0xa00f0802,
1580 0x0200001f, 0xa0000000, 0xa00f0803, 0x0200001f, 0x90000000, 0xa00f0804,
1581 0x03000042, 0x800f0000, 0x90e40000, 0xa0e40800, 0x03000002, 0x800f0000,
1582 0x80e40000, 0xa0e40000, 0x03000042, 0x800f0001, 0x90550000, 0xa0e40800,
1583 0x03000002, 0x800f0000, 0x80e40000, 0x80e40001, 0x03000042, 0x800f0001,
1584 0x90e40000, 0xa0e40803, 0x03000002, 0x800f0000, 0x80e40000, 0x80e40001,
1585 0x03000042, 0x800f0001, 0x90e40000, 0xa0e40804, 0x03000002, 0x800f0000,
1586 0x80e40000, 0x80e40001, 0x03000042, 0x800f0001, 0x90e40000, 0xa0e40801,
1587 0x03000002, 0x800f0000, 0x80e40000, 0x80e40001, 0x03000042, 0x800f0001,
1588 0x90e40000, 0xa0e40802, 0x03000002, 0x800f0800, 0x80e40000, 0x80e40001,
1589 0x0000ffff, /* END */
1590};
1591
1593{
1594 const char *samplers[16] = {NULL}; /* maximum number of sampler registers v/ps 3.0 = 16 */
1595 const char *sampler_orig;
1596 UINT count = 2;
1597 HRESULT hr;
1598
1599if (0)
1600{
1601 /* crashes if bytecode is NULL */
1603 ok(hr == D3D_OK, "D3DXGetShaderSamplers failed, got %x, expected %x\n", hr, D3D_OK);
1604}
1605
1607 ok(hr == D3D_OK, "D3DXGetShaderSamplers failed, got %x, expected %x\n", hr, D3D_OK);
1608
1609 samplers[5] = "dummy";
1610
1612 ok(hr == D3D_OK, "D3DXGetShaderSamplers failed, got %x, expected %x\n", hr, D3D_OK);
1613
1614 /* check that sampler points to shader blob */
1615 sampler_orig = (const char *)&get_shader_samplers_blob[0x2e];
1616 ok(sampler_orig == samplers[0], "D3DXGetShaderSamplers failed, got %p, expected %p\n", samplers[0], sampler_orig);
1617
1618 sampler_orig = (const char *)&get_shader_samplers_blob[0x33];
1619 ok(sampler_orig == samplers[1], "D3DXGetShaderSamplers failed, got %p, expected %p\n", samplers[1], sampler_orig);
1620
1621 sampler_orig = (const char *)&get_shader_samplers_blob[0x38];
1622 ok(sampler_orig == samplers[2], "D3DXGetShaderSamplers failed, got %p, expected %p\n", samplers[2], sampler_orig);
1623
1624 sampler_orig = (const char *)&get_shader_samplers_blob[0x3d];
1625 ok(sampler_orig == samplers[3], "D3DXGetShaderSamplers failed, got %p, expected %p\n", samplers[3], sampler_orig);
1626
1627 sampler_orig = (const char *)&get_shader_samplers_blob[0x42];
1628 ok(sampler_orig == samplers[4], "D3DXGetShaderSamplers failed, got %p, expected %p\n", samplers[4], sampler_orig);
1629
1630 ok(!strcmp(samplers[5], "dummy"), "D3DXGetShaderSamplers failed, got \"%s\", expected \"%s\"\n", samplers[5], "dummy");
1631
1632 /* reset samplers */
1633 memset(samplers, 0, sizeof(samplers));
1634 samplers[5] = "dummy";
1635
1637 ok(hr == D3D_OK, "D3DXGetShaderSamplers failed, got %x, expected %x\n", hr, D3D_OK);
1638 ok(count == 5, "D3DXGetShaderSamplers failed, got %u, expected %u\n", count, 5);
1639
1641 ok(hr == D3D_OK, "D3DXGetShaderSamplers failed, got %x, expected %x\n", hr, D3D_OK);
1642 ok(count == 5, "D3DXGetShaderSamplers failed, got %u, expected %u\n", count, 5);
1643
1644 /* check that sampler points to shader blob */
1645 sampler_orig = (const char *)&get_shader_samplers_blob[0x2e];
1646 ok(sampler_orig == samplers[0], "D3DXGetShaderSamplers failed, got %p, expected %p\n", samplers[0], sampler_orig);
1647
1648 sampler_orig = (const char *)&get_shader_samplers_blob[0x33];
1649 ok(sampler_orig == samplers[1], "D3DXGetShaderSamplers failed, got %p, expected %p\n", samplers[1], sampler_orig);
1650
1651 sampler_orig = (const char *)&get_shader_samplers_blob[0x38];
1652 ok(sampler_orig == samplers[2], "D3DXGetShaderSamplers failed, got %p, expected %p\n", samplers[2], sampler_orig);
1653
1654 sampler_orig = (const char *)&get_shader_samplers_blob[0x3d];
1655 ok(sampler_orig == samplers[3], "D3DXGetShaderSamplers failed, got %p, expected %p\n", samplers[3], sampler_orig);
1656
1657 sampler_orig = (const char *)&get_shader_samplers_blob[0x42];
1658 ok(sampler_orig == samplers[4], "D3DXGetShaderSamplers failed, got %p, expected %p\n", samplers[4], sampler_orig);
1659
1660 ok(!strcmp(samplers[5], "dummy"), "D3DXGetShaderSamplers failed, got \"%s\", expected \"%s\"\n", samplers[5], "dummy");
1661
1662 /* check without ctab */
1664 ok(hr == D3D_OK, "D3DXGetShaderSamplers failed, got %x, expected %x\n", hr, D3D_OK);
1665 ok(count == 0, "D3DXGetShaderSamplers failed, got %u, expected %u\n", count, 0);
1666
1667 /* check invalid ctab */
1669 ok(hr == D3D_OK, "D3DXGetShaderSamplers failed, got %x, expected %x\n", hr, D3D_OK);
1670 ok(count == 0, "D3DXGetShaderSamplers failed, got %u, expected %u\n", count, 0);
1671}
1672
1673/*
1674 * fxc.exe /Tvs_3_0
1675 */
1676#if 0
1677float f = {1.1f}, f_2[2] = {2.1f, 2.2f};
1678struct {float f; int i;} s = {3.1f, 31},
1679s_2[2] = {{4.1f, 41}, {4.2f, 42}},
1680s_3[3] = {{5.1f, 51}, {5.2f, 52}, {5.3f, 53}};
1681struct {int i1; int i2; float2 f_2; row_major float3x1 r[2];}
1682p[2] = {{11, 12, {13.1, 14.1}, {{3.11, 3.21, 3.31}, {3.41, 3.51, 3.61}}},
1683 {15, 16, {17.1, 18.1}, {{4.11, 4.21, 4.31}, {4.41, 4.51, 4.61}}}};
1684int i[1] = {6};
1685float2x3 f23[2] = {{0.11, 0.21, 0.31, 0.41, 0.51, 0.61}, {0.12, 0.22, 0.32, 0.42, 0.52, 0.62}};
1686float3x2 f32[2] = {{1.11, 1.21, 1.31, 1.41, 1.51, 1.61}, {1.12, 1.22, 1.32, 1.42, 1.52, 1.62}};
1687float3 v[2] = {{2.11, 2.21, 2.31}, {2.41, 2.51, 2.61}};
1688row_major float3x1 r31[2] = {{3.11, 3.21, 3.31}, {3.41, 3.51, 3.61}};
1689row_major float1x3 r13[2] = {{4.11, 4.21, 4.31}, {4.41, 4.51, 4.61}};
1690float4 main(float4 pos : POSITION) : POSITION
1691{
1692 float4 tmp = 0.0f;
1693 tmp.zyw = v[1] + r13[1] + r31[1] + p[1].r[1];
1694 tmp.x += f * f_2[1] * pos.x * p[1].f_2.y;
1695 tmp.y += s.f * pos.y * s_2[0].i;
1696 tmp.z += s_3[0].f * pos.z * s_3[2].f * i[0] * f23[1]._11 * f32[1]._32;
1697 return tmp;
1698}
1699#endif
1701{
17020xfffe0300, 0x0185fffe, 0x42415443, 0x0000001c, 0x000005df, 0xfffe0300, 0x0000000c, 0x0000001c,
17030x00000100, 0x000005d8, 0x0000010c, 0x002d0002, 0x00000001, 0x00000110, 0x00000120, 0x00000130,
17040x001d0002, 0x00000004, 0x00000134, 0x00000144, 0x000001a4, 0x00210002, 0x00000004, 0x000001a8,
17050x000001b8, 0x000001f8, 0x00250002, 0x00000002, 0x000001fc, 0x0000020c, 0x0000022c, 0x002f0002,
17060x00000001, 0x00000230, 0x00000240, 0x00000250, 0x00000002, 0x00000012, 0x000002b0, 0x000002c0,
17070x000003e0, 0x002b0002, 0x00000002, 0x000003e4, 0x000003f4, 0x00000414, 0x00120002, 0x00000006,
17080x00000418, 0x00000428, 0x00000488, 0x002e0002, 0x00000001, 0x000004ac, 0x000004bc, 0x000004dc,
17090x00270002, 0x00000002, 0x000004e0, 0x000004f0, 0x00000530, 0x00180002, 0x00000005, 0x00000534,
17100x00000544, 0x000005a4, 0x00290002, 0x00000002, 0x000005a8, 0x000005b8, 0xabab0066, 0x00030000,
17110x00010001, 0x00000001, 0x00000000, 0x3f8ccccd, 0x00000000, 0x00000000, 0x00000000, 0x00333266,
17120x00030003, 0x00030002, 0x00000002, 0x00000000, 0x3de147ae, 0x3ed1eb85, 0x00000000, 0x00000000,
17130x3e570a3d, 0x3f028f5c, 0x00000000, 0x00000000, 0x3e9eb852, 0x3f1c28f6, 0x00000000, 0x00000000,
17140x3df5c28f, 0x3ed70a3d, 0x00000000, 0x00000000, 0x3e6147ae, 0x3f051eb8, 0x00000000, 0x00000000,
17150x3ea3d70a, 0x3f1eb852, 0x00000000, 0x00000000, 0x00323366, 0x00030003, 0x00020003, 0x00000002,
17160x00000000, 0x3f8e147b, 0x3fa7ae14, 0x3fc147ae, 0x00000000, 0x3f9ae148, 0x3fb47ae1, 0x3fce147b,
17170x00000000, 0x3f8f5c29, 0x3fa8f5c3, 0x3fc28f5c, 0x00000000, 0x3f9c28f6, 0x3fb5c28f, 0x3fcf5c29,
17180x00000000, 0x00325f66, 0x00030000, 0x00010001, 0x00000002, 0x00000000, 0x40066666, 0x00000000,
17190x00000000, 0x00000000, 0x400ccccd, 0x00000000, 0x00000000, 0x00000000, 0xabab0069, 0x00020000,
17200x00010001, 0x00000001, 0x00000000, 0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x31690070,
17210xababab00, 0x00020000, 0x00010001, 0x00000001, 0x00000000, 0xab003269, 0x00030001, 0x00020001,
17220x00000001, 0x00000000, 0xabab0072, 0x00030002, 0x00010003, 0x00000002, 0x00000000, 0x00000252,
17230x00000258, 0x00000268, 0x00000258, 0x000001f8, 0x0000026c, 0x0000027c, 0x00000280, 0x00000005,
17240x000a0001, 0x00040002, 0x00000290, 0x41300000, 0x00000000, 0x00000000, 0x00000000, 0x41400000,
17250x00000000, 0x00000000, 0x00000000, 0x4151999a, 0x4161999a, 0x00000000, 0x00000000, 0x40470a3d,
17260x00000000, 0x00000000, 0x00000000, 0x404d70a4, 0x00000000, 0x00000000, 0x00000000, 0x4053d70a,
17270x00000000, 0x00000000, 0x00000000, 0x405a3d71, 0x00000000, 0x00000000, 0x00000000, 0x4060a3d7,
17280x00000000, 0x00000000, 0x00000000, 0x40670a3d, 0x00000000, 0x00000000, 0x00000000, 0x41700000,
17290x00000000, 0x00000000, 0x00000000, 0x41800000, 0x00000000, 0x00000000, 0x00000000, 0x4188cccd,
17300x4190cccd, 0x00000000, 0x00000000, 0x4083851f, 0x00000000, 0x00000000, 0x00000000, 0x4086b852,
17310x00000000, 0x00000000, 0x00000000, 0x4089eb85, 0x00000000, 0x00000000, 0x00000000, 0x408d1eb8,
17320x00000000, 0x00000000, 0x00000000, 0x409051ec, 0x00000000, 0x00000000, 0x00000000, 0x4093851f,
17330x00000000, 0x00000000, 0x00000000, 0x00333172, 0x00030002, 0x00030001, 0x00000002, 0x00000000,
17340x4083851f, 0x4086b852, 0x4089eb85, 0x00000000, 0x408d1eb8, 0x409051ec, 0x4093851f, 0x00000000,
17350x00313372, 0x00030002, 0x00010003, 0x00000002, 0x00000000, 0x40470a3d, 0x00000000, 0x00000000,
17360x00000000, 0x404d70a4, 0x00000000, 0x00000000, 0x00000000, 0x4053d70a, 0x00000000, 0x00000000,
17370x00000000, 0x405a3d71, 0x00000000, 0x00000000, 0x00000000, 0x4060a3d7, 0x00000000, 0x00000000,
17380x00000000, 0x40670a3d, 0x00000000, 0x00000000, 0x00000000, 0xabab0073, 0x00030000, 0x00010001,
17390x00000001, 0x00000000, 0x0000010c, 0x0000048c, 0x0000022c, 0x00000258, 0x00000005, 0x00020001,
17400x00020001, 0x0000049c, 0x40466666, 0x00000000, 0x00000000, 0x00000000, 0x41f80000, 0x00000000,
17410x00000000, 0x00000000, 0x00325f73, 0x00000005, 0x00020001, 0x00020002, 0x0000049c, 0x40833333,
17420x00000000, 0x00000000, 0x00000000, 0x42240000, 0x00000000, 0x00000000, 0x00000000, 0x40866666,
17430x00000000, 0x00000000, 0x00000000, 0x42280000, 0x00000000, 0x00000000, 0x00000000, 0x00335f73,
17440x00000005, 0x00020001, 0x00020003, 0x0000049c, 0x40a33333, 0x00000000, 0x00000000, 0x00000000,
17450x424c0000, 0x00000000, 0x00000000, 0x00000000, 0x40a66666, 0x00000000, 0x00000000, 0x00000000,
17460x42500000, 0x00000000, 0x00000000, 0x00000000, 0x40a9999a, 0x00000000, 0x00000000, 0x00000000,
17470x42540000, 0x00000000, 0x00000000, 0x00000000, 0xabab0076, 0x00030001, 0x00030001, 0x00000002,
17480x00000000, 0x40070a3d, 0x400d70a4, 0x4013d70a, 0x00000000, 0x401a3d71, 0x4020a3d7, 0x40270a3d,
17490x00000000, 0x335f7376, 0x4d00305f, 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820, 0x6853204c,
17500x72656461, 0x6d6f4320, 0x656c6970, 0x2e392072, 0x392e3932, 0x332e3235, 0x00313131, 0x0200001f,
17510x80000000, 0x900f0000, 0x0200001f, 0x80000000, 0xe00f0000, 0x02000001, 0x80070000, 0xa0e4002a,
17520x03000002, 0x80070000, 0x80e40000, 0xa0e4002c, 0x03000002, 0x80040000, 0x80aa0000, 0xa0000017,
17530x03000002, 0xe0080000, 0x80aa0000, 0xa0000011, 0x02000001, 0x80010001, 0xa000002d, 0x03000005,
17540x80040000, 0x80000001, 0xa0000026, 0x03000005, 0x80040000, 0x80aa0000, 0x90000000, 0x03000005,
17550xe0010000, 0x80aa0000, 0xa055000b, 0x03000002, 0x80020000, 0x80550000, 0xa0000016, 0x03000002,
17560x80010000, 0x80000000, 0xa0000015, 0x03000002, 0x80010000, 0x80000000, 0xa000000f, 0x03000002,
17570x80020000, 0x80550000, 0xa0000010, 0x03000005, 0x80040000, 0xa000002e, 0x90550000, 0x04000004,
17580xe0020000, 0x80aa0000, 0xa0000028, 0x80550000, 0x03000005, 0x80020000, 0xa0000018, 0x90aa0000,
17590x03000005, 0x80020000, 0x80550000, 0xa000001c, 0x03000005, 0x80020000, 0x80550000, 0xa000002f,
17600x03000005, 0x80020000, 0x80550000, 0xa0000020, 0x04000004, 0xe0040000, 0x80550000, 0xa0aa0024,
17610x80000000, 0x0000ffff,
1762};
1763
1764const struct
1765{
1766 const char *fullname;
1769}
1771{
1772 {"f", {"f", D3DXRS_FLOAT4, 45, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL}, 72},
1773 {"f23", {"f23", D3DXRS_FLOAT4, 29, 4, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 2, 3, 2, 0, 48, NULL}, 81},
1774 {"f23[0]", {"f23", D3DXRS_FLOAT4, 29, 3, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 2, 3, 1, 0, 24, NULL}, 81},
1775 {"f23[1]", {"f23", D3DXRS_FLOAT4, 32, 1, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 2, 3, 1, 0, 24, NULL}, 93},
1776 {"f32", {"f32", D3DXRS_FLOAT4, 33, 4, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 3, 2, 2, 0, 48, NULL}, 110},
1777 {"f32[0]", {"f32", D3DXRS_FLOAT4, 33, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 3, 2, 1, 0, 24, NULL}, 110},
1778 {"f32[1]", {"f32", D3DXRS_FLOAT4, 35, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 3, 2, 1, 0, 24, NULL}, 118},
1779 {"f_2", {"f_2", D3DXRS_FLOAT4, 37, 2, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 2, 0, 8, NULL}, 131},
1780 {"f_2[0]", {"f_2", D3DXRS_FLOAT4, 37, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL}, 131},
1781 {"f_2[1]", {"f_2", D3DXRS_FLOAT4, 38, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL}, 135},
1782 {"i", {"i", D3DXRS_FLOAT4, 47, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 144},
1783 {"i[0]", {"i", D3DXRS_FLOAT4, 47, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 144},
1784 {"p", {"p", D3DXRS_FLOAT4, 0, 18, D3DXPC_STRUCT, D3DXPT_VOID, 1, 10, 2, 4, 80, NULL}, 176},
1785 {"p[0]", {"p", D3DXRS_FLOAT4, 0, 9, D3DXPC_STRUCT, D3DXPT_VOID, 1, 10, 1, 4, 40, NULL}, 176},
1786 {"p[0].i1", {"i1", D3DXRS_FLOAT4, 0, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 176},
1787 {"p[0].i2", {"i2", D3DXRS_FLOAT4, 1, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 180},
1788 {"p[0].f_2", {"f_2", D3DXRS_FLOAT4, 2, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 2, 1, 0, 8, NULL}, 184},
1789 {"p[0].r", {"r", D3DXRS_FLOAT4, 3, 6, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 3, 1, 2, 0, 24, NULL}, 188},
1790 {"p[0].r[0]", {"r", D3DXRS_FLOAT4, 3, 3, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 3, 1, 1, 0, 12, NULL}, 188},
1791 {"p[0].r[1]", {"r", D3DXRS_FLOAT4, 6, 3, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 3, 1, 1, 0, 12, NULL}, 200},
1792 {"p[1]", {"p", D3DXRS_FLOAT4, 9, 9, D3DXPC_STRUCT, D3DXPT_VOID, 1, 10, 1, 4, 40, NULL}, 212},
1793 {"p[1].i1", {"i1", D3DXRS_FLOAT4, 9, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 212},
1794 {"p[1].i2", {"i2", D3DXRS_FLOAT4, 10, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 216},
1795 {"p[1].f_2", {"f_2", D3DXRS_FLOAT4, 11, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 2, 1, 0, 8, NULL}, 220},
1796 {"p[1].r", {"r", D3DXRS_FLOAT4, 12, 6, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 3, 1, 2, 0, 24, NULL}, 224},
1797 {"p[1].r[0]", {"r", D3DXRS_FLOAT4, 12, 3, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 3, 1, 1, 0, 12, NULL}, 224},
1798 {"p[1].r[1]", {"r", D3DXRS_FLOAT4, 15, 3, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 3, 1, 1, 0, 12, NULL}, 236},
1799 {"r13", {"r13", D3DXRS_FLOAT4, 43, 2, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 1, 3, 2, 0, 24, NULL}, 253},
1800 {"r13[0]", {"r13", D3DXRS_FLOAT4, 43, 1, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 253},
1801 {"r13[1]", {"r13", D3DXRS_FLOAT4, 44, 1, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 257},
1802 {"r31", {"r31", D3DXRS_FLOAT4, 18, 6, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 3, 1, 2, 0, 24, NULL}, 266},
1803 {"r31[0]", {"r31", D3DXRS_FLOAT4, 18, 3, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 3, 1, 1, 0, 12, NULL}, 266},
1804 {"r31[1]", {"r31", D3DXRS_FLOAT4, 21, 3, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 3, 1, 1, 0, 12, NULL}, 278},
1805 {"s", {"s", D3DXRS_FLOAT4, 46, 1, D3DXPC_STRUCT, D3DXPT_VOID, 1, 2, 1, 2, 8, NULL}, 303},
1806 {"s.f", {"f", D3DXRS_FLOAT4, 46, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL}, 303},
1807 {"s.i", {"i", D3DXRS_FLOAT4, 47, 0, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 307},
1808 {"s_2", {"s_2", D3DXRS_FLOAT4, 39, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 2, 2, 2, 16, NULL}, 316},
1809 {"s_2[0]", {"s_2", D3DXRS_FLOAT4, 39, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 2, 1, 2, 8, NULL}, 316},
1810 {"s_2[0].f", {"f", D3DXRS_FLOAT4, 39, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL}, 316},
1811 {"s_2[0].i", {"i", D3DXRS_FLOAT4, 40, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 320},
1812 {"s_2[1]", {"s_2", D3DXRS_FLOAT4, 41, 0, D3DXPC_STRUCT, D3DXPT_VOID, 1, 2, 1, 2, 8, NULL}, 324},
1813 {"s_2[1].f", {"f", D3DXRS_FLOAT4, 41, 0, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL}, 324},
1814 {"s_2[1].i", {"i", D3DXRS_FLOAT4, 41, 0, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 328},
1815 {"s_3", {"s_3", D3DXRS_FLOAT4, 24, 5, D3DXPC_STRUCT, D3DXPT_VOID, 1, 2, 3, 2, 24, NULL}, 337},
1816 {"s_3[0]", {"s_3", D3DXRS_FLOAT4, 24, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 2, 1, 2, 8, NULL}, 337},
1817 {"s_3[0].f", {"f", D3DXRS_FLOAT4, 24, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL}, 337},
1818 {"s_3[0].i", {"i", D3DXRS_FLOAT4, 25, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 341},
1819 {"s_3[1]", {"s_3", D3DXRS_FLOAT4, 26, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 2, 1, 2, 8, NULL}, 345},
1820 {"s_3[1].f", {"f", D3DXRS_FLOAT4, 26, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL}, 345},
1821 {"s_3[1].i", {"i", D3DXRS_FLOAT4, 27, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 349},
1822 {"s_3[2]", {"s_3", D3DXRS_FLOAT4, 28, 1, D3DXPC_STRUCT, D3DXPT_VOID, 1, 2, 1, 2, 8, NULL}, 353},
1823 {"s_3[2].f", {"f", D3DXRS_FLOAT4, 28, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL}, 353},
1824 {"s_3[2].i", {"i", D3DXRS_FLOAT4, 29, 0, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 357},
1825 {"v", {"v", D3DXRS_FLOAT4, 41, 2, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 2, 0, 24, NULL}, 366},
1826 {"v[0]", {"v", D3DXRS_FLOAT4, 41, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 366},
1827 {"v[1]", {"v", D3DXRS_FLOAT4, 42, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 370},
1829
1831{
1832 ID3DXConstantTable *ctable;
1833 HRESULT hr;
1834 ULONG count;
1835 UINT i;
1836 UINT nr = 1;
1839 DWORD *ctab;
1840
1842 ok(hr == D3D_OK, "D3DXGetShaderConstantTable failed, got %08x, expected %08x\n", hr, D3D_OK);
1843
1845 ok(ctab[0] == test_get_shader_constant_variables_blob[3], "ID3DXConstantTable_GetBufferPointer failed\n");
1846
1848 {
1849 const char *fullname = test_get_shader_constant_variables_data[i].fullname;
1850 const D3DXCONSTANT_DESC *expected_desc = &test_get_shader_constant_variables_data[i].desc;
1852
1854 ok(constant != NULL, "GetConstantByName \"%s\" failed\n", fullname);
1855
1857 ok(hr == D3D_OK, "GetConstantDesc \"%s\" failed, got %08x, expected %08x\n", fullname, hr, D3D_OK);
1858
1859 ok(!strcmp(expected_desc->Name, desc.Name), "GetConstantDesc \"%s\" failed, got \"%s\", expected \"%s\"\n",
1860 fullname, desc.Name, expected_desc->Name);
1861 ok(expected_desc->RegisterSet == desc.RegisterSet, "GetConstantDesc \"%s\" failed, got %#x, expected %#x\n",
1862 fullname, desc.RegisterSet, expected_desc->RegisterSet);
1863 ok(expected_desc->RegisterIndex == desc.RegisterIndex, "GetConstantDesc \"%s\" failed, got %u, expected %u\n",
1864 fullname, desc.RegisterIndex, expected_desc->RegisterIndex);
1865 ok(expected_desc->RegisterCount == desc.RegisterCount, "GetConstantDesc \"%s\" failed, got %u, expected %u\n",
1866 fullname, desc.RegisterCount, expected_desc->RegisterCount);
1867 ok(expected_desc->Class == desc.Class, "GetConstantDesc \"%s\" failed, got %u, expected %u\n",
1868 fullname, desc.Class, expected_desc->Class);
1869 ok(expected_desc->Type == desc.Type, "GetConstantDesc \"%s\" failed, got %#x, expected %#x\n",
1870 fullname, desc.Type, expected_desc->Type);
1871 ok(expected_desc->Rows == desc.Rows, "GetConstantDesc \"%s\" failed, got %#x, expected %#x\n",
1872 fullname, desc.Rows, expected_desc->Rows);
1873 ok(expected_desc->Columns == desc.Columns, "GetConstantDesc \"%s\" failed, got %u, expected %u\n",
1874 fullname, desc.Columns, expected_desc->Columns);
1875 ok(expected_desc->Elements == desc.Elements, "GetConstantDesc \"%s\" failed, got %u, expected %u\n",
1876 fullname, desc.Elements, expected_desc->Elements);
1877 ok(expected_desc->StructMembers == desc.StructMembers, "GetConstantDesc \"%s\" failed, got %u, expected %u\n",
1878 fullname, desc.StructMembers, expected_desc->StructMembers);
1879 ok(expected_desc->Bytes == desc.Bytes, "GetConstantDesc \"%s\" failed, got %u, expected %u\n",
1880 fullname, desc.Bytes, expected_desc->Bytes);
1881 ok(ctaboffset == (DWORD *)desc.DefaultValue - ctab, "GetConstantDesc \"%s\" failed, got %u, expected %u\n",
1882 fullname, (UINT)((DWORD *)desc.DefaultValue - ctab), ctaboffset);
1883 }
1884
1886 ok(element == NULL, "GetConstantElement failed\n");
1887
1889 ok(constant != NULL, "GetConstantByName failed\n");
1890
1892 ok(constant == element, "GetConstantByName failed, got %p, expected %p\n", element, constant);
1893
1895 ok(element == constant, "GetConstantElement failed, got %p, expected %p\n", element, constant);
1896
1898 ok(constant != NULL, "GetConstantByName failed\n");
1899
1901 ok(element == constant, "GetConstant failed, got %p, expected %p\n", element, constant);
1902
1904 ok(element == NULL, "GetConstant failed\n");
1905
1907 ok(element == NULL, "GetConstant failed\n");
1908
1910 ok(constant == element, "GetConstantByName failed, got %p, expected %p\n", element, constant);
1911
1913 ok(NULL == element, "GetConstantByName failed\n");
1914
1916 ok(constant == element, "GetConstantByName failed, got %p, expected %p\n", element, constant);
1917
1919 ok(element == NULL, "GetConstantByName failed\n");
1920
1922 ok(element == constant, "GetConstantElement failed, got %p, expected %p\n", element, constant);
1923
1925 ok(element == NULL, "GetConstantElement failed\n");
1926
1928 ok(constant != NULL, "GetConstantByName failed\n");
1929
1931 ok(element != constant, "GetConstantByName failed, got %p, expected %p\n", element, constant);
1932
1934 ok(element == constant, "GetConstantElement failed, got %p, expected %p\n", element, constant);
1935
1937 ok(constant != NULL, "GetConstantByName failed\n");
1938
1940 ok(element == constant, "GetConstantElement failed, got %p, expected %p\n", element, constant);
1941
1943 ok(constant != NULL, "GetConstantByName failed\n");
1944
1946 ok(element == constant, "GetConstant failed, got %p, expected %p\n", element, constant);
1947
1949 ok(element == constant, "GetConstantByName failed, got %p, expected %p\n", element, constant);
1950
1951 element = ID3DXConstantTable_GetConstantByName(ctable, "s_2[0]", "invalid");
1952 ok(element == NULL, "GetConstantByName failed\n");
1953
1955 ok(constant != NULL, "GetConstantByName failed\n");
1956
1958 ok(constant == element, "GetConstantByName failed, got %p, expected %p\n", element, constant);
1959
1961 ok(count == 0, "Release failed, got %u, expected %u\n", count, 0);
1962}
1963
1964#define REGISTER_OUTPUT_SIZE 48
1965
1969
1971{
1978};
1979
1981{
1982 const char *fullname;
1985};
1986
1988{
1989 /* float */
1990 {0x40000123, 0x00000000, 0x40800123, 0x40a00123,
1991 0x40c00123, 0x40e00123, 0x41000123, 0x41100123,
1992 0x41200123, 0x41300123, 0x41400123, 0x41500123,
1993 0x41600123, 0x41700123, 0x41800123, 0x41900123,
1994 0x41a00123, 0x41b00123, 0x41c00123, 0x41d00123,
1995 0x00000000, 0x41f00123, 0x42000123, 0x42100123,
1996 0x00000000, 0x42300123, 0x42400123, 0x42500123,
1997 0x42600123, 0x42700123, 0x42800123, 0x42900123,
1998 0x43000123, 0x43100123, 0x43200123, 0x43300123,
1999 0x43400123, 0x43500123, 0x43600123, 0x43700123,
2000 0x43800123, 0x43900123, 0x43a00123, 0x43b00123,
2001 0x43c00123, 0x43d00123, 0x43e00123, 0x43f00123},
2002 /* int */
2003 {0x00000002, 0x00000003, 0x00000004, 0x00000005,
2004 0x00000000, 0x00000007, 0x00000008, 0x00000009,
2005 0x0000000a, 0x0000000b, 0x0000000c, 0x0000000d,
2006 0x0000000e, 0x0000000f, 0x00000010, 0x00000011,
2007 0x00000012, 0x00000000, 0x00000000, 0x00000015,
2008 0x00000016, 0x00000017, 0x00000018, 0x00000019,
2009 0x0000001a, 0x0000001b, 0x0000001c, 0x0000001d,
2010 0x0000001e, 0x0000001f, 0x00000020, 0x00000021,
2011 0x00000022, 0x00000023, 0x00000024, 0x00000025,
2012 0x00000026, 0x00000027, 0x00000028, 0x00000029,
2013 0x0000002a, 0x0000002b, 0x0000002c, 0x0000002d,
2014 0x0000002e, 0x0000002f, 0x00000030, 0x00000031},
2015};
2016
2017/*
2018 * fxc.exe /Tvs_3_0
2019 */
2020#if 0
2021bool b = 1;
2022int n = 8;
2023float f = 5.1;
2024int nf = 11;
2025bool bf = 1;
2026float4 main(float4 pos : POSITION) : POSITION
2027{
2028 float4 tmp = 0;
2029 int i;
2030 if (b) for (i = 0; i < n; i++) tmp.x += pos.z * f * nf;
2031 else for (i = 0; i < n; i++) tmp.y += pos.y * f * bf;
2032 return tmp;
2033}
2034#endif
2036{
20370xfffe0300, 0x0051fffe, 0x42415443, 0x0000001c, 0x0000010f, 0xfffe0300, 0x00000005, 0x0000001c,
20380x00000100, 0x00000108, 0x00000080, 0x00000000, 0x00000001, 0x00000084, 0x00000094, 0x00000098,
20390x00020002, 0x00000001, 0x00000084, 0x0000009c, 0x000000ac, 0x00000002, 0x00000001, 0x000000b0,
20400x000000c0, 0x000000d0, 0x00000001, 0x00000001, 0x000000d4, 0x000000e4, 0x000000f4, 0x00010002,
20410x00000001, 0x000000d4, 0x000000f8, 0xabab0062, 0x00010000, 0x00010001, 0x00000001, 0x00000000,
20420xffffffff, 0xab006662, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0xabab0066, 0x00030000,
20430x00010001, 0x00000001, 0x00000000, 0x40a33333, 0x00000000, 0x00000000, 0x00000000, 0xabab006e,
20440x00020000, 0x00010001, 0x00000001, 0x00000000, 0x00000008, 0x00000000, 0x00000001, 0x00000000,
20450xab00666e, 0x41300000, 0x00000000, 0x00000000, 0x00000000, 0x335f7376, 0x4d00305f, 0x6f726369,
20460x74666f73, 0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970, 0x2e392072,
20470x392e3932, 0x332e3235, 0x00313131, 0x05000051, 0xa00f0003, 0x00000000, 0x00000000, 0x00000000,
20480x00000000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x80000000, 0xe00f0000, 0x01000028,
20490xe0e40800, 0x03000005, 0x80010000, 0xa0000000, 0x90aa0000, 0x02000001, 0x80010001, 0xa0000003,
20500x01000026, 0xf0e40000, 0x04000004, 0x80010001, 0x80000000, 0xa0000001, 0x80000001, 0x00000027,
20510x02000001, 0x80020001, 0xa0000003, 0x0000002a, 0x03000005, 0x80010000, 0xa0000000, 0x90550000,
20520x02000001, 0x80020001, 0xa0000003, 0x01000026, 0xf0e40000, 0x04000004, 0x80020001, 0x80000000,
20530xa0000002, 0x80550001, 0x00000027, 0x02000001, 0x80010001, 0xa0000003, 0x0000002b, 0x02000001,
20540xe0030000, 0x80e40001, 0x02000001, 0xe00c0000, 0xa0000003, 0x0000ffff,
2055};
2056
2058{
2059 {"f", {"f", D3DXRS_FLOAT4, 0, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL}, 48},
2060};
2061
2063{
2064 {SetFloat, 0, 0, 0, 4, {0x40000123}},
2065 {SetInt, 1, 0, 0, 4, {0x40000000}},
2066 {SetBool, 1, 0, 0, 4, {0x3f800000}},
2067 {SetIntArray},
2068 {SetIntArray, 1, 1, REGISTER_OUTPUT_SIZE, 4, {0x40000000}},
2069 {SetBoolArray},
2070 {SetBoolArray, 1, 1, REGISTER_OUTPUT_SIZE, 4, {0x3f800000}},
2071 {SetFloatArray},
2072 {SetFloatArray, 0, 1, REGISTER_OUTPUT_SIZE, 4, {0x40000123}},
2073 {SetValue, 0, 0, 3},
2074 {SetValue, 0, 4, REGISTER_OUTPUT_SIZE * 4, 4, {0x40000123}},
2075 {SetVector, 0, 0, 0, 4, {0x40000123}},
2077 {SetVectorArray, 0, 1, REGISTER_OUTPUT_SIZE / 4, 4, {0x40000123}},
2078 {SetMatrix, 0, 0, 0, 4, {0x40000123},},
2080 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x40000123}},
2081 {SetMatrixTranspose, 0, 0, 0, 4, {0x40000123},},
2083 {SetMatrixTransposeArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x40000123}},
2085 {SetMatrixPointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x40000123}},
2087 {SetMatrixTransposePointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x40000123}},
2088};
2089
2091{
2092 {"n", {"n", D3DXRS_INT4, 0, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 57},
2093};
2094
2096{
2097 {SetFloat, 0, 0, 0, 4,
2098 {0x00000002, 0x00000000, 0x00000001}},
2099 {SetInt, 1, 0, 0, 4,
2100 {0x00000002, 0x00000000, 0x00000001}},
2101 {SetBool, 1, 0, 0, 4,
2102 {0x00000001, 0x00000000, 0x00000001}},
2103 {SetIntArray},
2105 {0x00000002, 0x00000000, 0x00000001}},
2106 {SetBoolArray},
2108 {0x00000001, 0x00000000, 0x00000001}},
2109 {SetFloatArray},
2111 {0x00000002, 0x00000000, 0x00000001}},
2112 {SetValue, 1, 0, 3},
2113 {SetValue, 1, 4, REGISTER_OUTPUT_SIZE * 4, 4,
2114 {0x00000002, 0x00000000, 0x00000001}},
2115 {SetVector, 0, 0, 0, 4,
2116 {0x00000002, 0x00000000, 0x00000001},},
2118 {SetVectorArray, 0, 1, REGISTER_OUTPUT_SIZE / 4, 4,
2119 {0x00000002, 0x00000000, 0x00000001}},
2120 {SetMatrix, 0, 0, 0, 4,
2121 {0x00000002, 0x00000000, 0x00000001}},
2123 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4,
2124 {0x00000002, 0x00000000, 0x00000001}},
2125 {SetMatrixTranspose, 0, 0, 0, 4,
2126 {0x00000002, 0x00000000, 0x00000001}},
2129 {0x00000002, 0x00000000, 0x00000001}},
2132 {0x00000002, 0x00000000, 0x00000001}},
2135 {0x00000002, 0x00000000, 0x00000001}},
2136};
2137
2139{
2140 {"nf", {"nf", D3DXRS_FLOAT4, 1, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 62},
2141};
2142
2144{
2145 {SetFloat, 0, 0, 0, 4, {0x40000000}},
2146 {SetInt, 1, 0, 0, 4, {0x40000000}},
2147 {SetBool, 1, 0, 0, 4, {0x3f800000}},
2148 {SetIntArray},
2149 {SetIntArray, 1, 1, REGISTER_OUTPUT_SIZE, 4, {0x40000000}},
2150 {SetBoolArray},
2151 {SetBoolArray, 1, 1, REGISTER_OUTPUT_SIZE, 4, {0x3f800000}},
2152 {SetFloatArray},
2153 {SetFloatArray, 0, 1, REGISTER_OUTPUT_SIZE, 4, {0x40000000}},
2154 {SetValue, 1, 0, 3},
2155 {SetValue, 1, 4, REGISTER_OUTPUT_SIZE * 4, 4, {0x40000000}},
2156 {SetVector, 0, 0, 0, 4, {0x40000000}},
2158 {SetVectorArray, 0, 1, REGISTER_OUTPUT_SIZE / 4, 4, {0x40000000}},
2159 {SetMatrix, 0, 0, 0, 4, {0x40000000}},
2161 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x40000000}},
2162 {SetMatrixTranspose, 0, 0, 0, 4, {0x40000000}},
2164 {SetMatrixTransposeArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x40000000}},
2166 {SetMatrixPointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x40000000}},
2168 {SetMatrixTransposePointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x40000000}},
2169};
2170
2172{
2173 {"bf", {"bf", D3DXRS_FLOAT4, 2, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 39},
2174};
2175
2177{
2178 {SetFloat, 0, 0, 0, 4, {0x3f800000}},
2179 {SetInt, 1, 0, 0, 4, {0x3f800000}},
2180 {SetBool, 1, 0, 0, 4, {0x3f800000}},
2181 {SetIntArray},
2182 {SetIntArray, 1, 1, REGISTER_OUTPUT_SIZE, 4, {0x3f800000}},
2183 {SetBoolArray},
2184 {SetBoolArray, 1, 1, REGISTER_OUTPUT_SIZE, 4, {0x3f800000}},
2185 {SetFloatArray},
2186 {SetFloatArray, 0, 1, REGISTER_OUTPUT_SIZE, 4, {0x3f800000}},
2187 {SetValue, 1, 0, 3},
2188 {SetValue, 1, 4, REGISTER_OUTPUT_SIZE * 4, 4, {0x3f800000}},
2189 {SetVector, 0, 0, 0, 4, {0x3f800000}},
2191 {SetVectorArray, 0, 1, REGISTER_OUTPUT_SIZE / 4, 4, {0x3f800000}},
2192 {SetMatrix, 0, 0, 0, 4, {0x3f800000}},
2194 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x3f800000}},
2195 {SetMatrixTranspose, 0, 0, 0, 4, {0x3f800000}},
2197 {SetMatrixTransposeArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x3f800000}},
2199 {SetMatrixPointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x3f800000}},
2201 {SetMatrixTransposePointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x3f800000}},
2202};
2203
2205{
2206 {"b", {"b", D3DXRS_BOOL, 0, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 37},
2207};
2208
2210{
2211 {SetFloat, 0, 0, 0, 1, {0x00000001}},
2212 {SetInt, 1, 0, 0, 1, {0x00000001}},
2213 {SetBool, 1, 0, 0, 1, {0x00000002}},
2214 {SetIntArray},
2215 {SetIntArray, 1, 1, REGISTER_OUTPUT_SIZE, 1, {0x00000001}},
2216 {SetBoolArray},
2217 {SetBoolArray, 1, 1, REGISTER_OUTPUT_SIZE, 1, {0x00000002}},
2218 {SetFloatArray},
2219 {SetFloatArray, 0, 1, REGISTER_OUTPUT_SIZE, 1, {0x00000001}},
2220 {SetValue, 1, 0, 3},
2221 {SetValue, 1, 4, REGISTER_OUTPUT_SIZE * 4, 1, {0x00000002}},
2222 {SetVector, 0, 0, 0, 1, {0x00000001}},
2224 {SetVectorArray, 0, 1, REGISTER_OUTPUT_SIZE / 4, 1, {0x00000001}},
2225 {SetMatrix, 0, 0, 0, 1, {0x00000001}},
2227 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 1, {0x00000001}},
2228 {SetMatrixTranspose, 0, 0, 0, 1, {0x00000001}},
2230 {SetMatrixTransposeArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 1, {0x00000001}},
2232 {SetMatrixPointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 1, {0x00000001}},
2234 {SetMatrixTransposePointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 1, {0x00000001}},
2235};
2236
2237/*
2238 * fxc.exe /Tvs_3_0
2239 */
2240#if 0
2241bool ab[2] = {1, 0};
2242int an[2] = {32, 33};
2243float af[2] = {3.1, 3.2};
2244int anf[2] = {14, 15};
2245bool abf[2] = {1, 1};
2246float4 main(float4 pos : POSITION) : POSITION
2247{
2248 float4 tmp = 0;
2249 int i;
2250 if (ab[1]) for (i = 0; i < an[1]; i++) tmp.x += pos.z * af[0] * anf[1];
2251 else for (i = 0; i < an[0]; i++) tmp.y += pos.y * af[1] * abf[1];
2252 return tmp;
2253}
2254#endif
2256{
22570xfffe0300, 0x006afffe, 0x42415443, 0x0000001c, 0x00000173, 0xfffe0300, 0x00000005, 0x0000001c,
22580x00000100, 0x0000016c, 0x00000080, 0x00000000, 0x00000002, 0x00000084, 0x00000094, 0x0000009c,
22590x00040002, 0x00000002, 0x000000a0, 0x000000b0, 0x000000d0, 0x00000002, 0x00000002, 0x000000d4,
22600x000000e4, 0x00000104, 0x00000001, 0x00000002, 0x00000108, 0x00000118, 0x00000138, 0x00020002,
22610x00000002, 0x0000013c, 0x0000014c, 0xab006261, 0x00010000, 0x00010001, 0x00000002, 0x00000000,
22620xffffffff, 0x00000000, 0x00666261, 0x00010000, 0x00010001, 0x00000002, 0x00000000, 0x3f800000,
22630x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0xab006661,
22640x00030000, 0x00010001, 0x00000002, 0x00000000, 0x40466666, 0x00000000, 0x00000000, 0x00000000,
22650x404ccccd, 0x00000000, 0x00000000, 0x00000000, 0xab006e61, 0x00020000, 0x00010001, 0x00000002,
22660x00000000, 0x00000020, 0x00000000, 0x00000001, 0x00000000, 0x00000021, 0x00000000, 0x00000001,
22670x00000000, 0x00666e61, 0x00020000, 0x00010001, 0x00000002, 0x00000000, 0x41600000, 0x00000000,
22680x00000000, 0x00000000, 0x41700000, 0x00000000, 0x00000000, 0x00000000, 0x335f7376, 0x4d00305f,
22690x6f726369, 0x74666f73, 0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
22700x2e392072, 0x392e3932, 0x332e3235, 0x00313131, 0x05000051, 0xa00f0006, 0x00000000, 0x00000000,
22710x00000000, 0x00000000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x80000000, 0xe00f0000,
22720x01000028, 0xe0e40801, 0x03000005, 0x80010000, 0xa0000000, 0x90aa0000, 0x02000001, 0x80010001,
22730xa0000006, 0x01000026, 0xf0e40001, 0x04000004, 0x80010001, 0x80000000, 0xa0000003, 0x80000001,
22740x00000027, 0x02000001, 0x80020001, 0xa0000006, 0x0000002a, 0x03000005, 0x80010000, 0xa0000001,
22750x90550000, 0x02000001, 0x80020001, 0xa0000006, 0x01000026, 0xf0e40000, 0x04000004, 0x80020001,
22760x80000000, 0xa0000005, 0x80550001, 0x00000027, 0x02000001, 0x80010001, 0xa0000006, 0x0000002b,
22770x02000001, 0xe0030000, 0x80e40001, 0x02000001, 0xe00c0000, 0xa0000006, 0x0000ffff,
2278};
2279
2281{
2282 {"af", {"af", D3DXRS_FLOAT4, 0, 2, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 2, 0, 8, NULL}, 57},
2283 {"af[0]", {"af", D3DXRS_FLOAT4, 0, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL}, 57},
2284 {"af[1]", {"af", D3DXRS_FLOAT4, 1, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL}, 61},
2285};
2286
2288{
2289 {SetFloat, 0, 0, 0, 4, {0x40000123}},
2290 {SetInt, 1, 0, 0, 4, {0x40000000}},
2291 {SetBool, 1, 0, 0, 4, {0x3f800000}},
2292 {SetIntArray},
2293 {SetIntArray, 1, 1, 1, 4, {0x40000000}},
2295 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40400000}},
2296 {SetBoolArray},
2297 {SetBoolArray, 1, 1, 1, 4, {0x3f800000}},
2299 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000}},
2300 {SetFloatArray},
2301 {SetFloatArray, 0, 1, 1, 4, {0x40000123}},
2303 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
2304 {SetValue, 0, 0, 3},
2305 {SetValue, 0, 4, 7, 4, {0x40000123}},
2306 {SetValue, 0, 8, REGISTER_OUTPUT_SIZE * 4, 8,
2307 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
2308 {SetVector, 0, 0, 0, 8,
2309 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
2311 {SetVectorArray, 0, 1, REGISTER_OUTPUT_SIZE / 4, 8,
2312 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
2313 {SetMatrix, 0, 0, 0, 8,
2314 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
2316 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
2317 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
2318 {SetMatrixTranspose, 0, 0, 0, 8,
2319 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40c00123}},
2322 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40c00123}},
2325 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
2328 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40c00123}},
2329};
2330
2332{
2333 {"an", {"an", D3DXRS_INT4, 0, 2, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 2, 0, 8, NULL}, 70},
2334 {"an[0]", {"an", D3DXRS_INT4, 0, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 70},
2335 {"an[1]", {"an", D3DXRS_INT4, 1, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 74},
2336};
2337
2339{
2340 {SetFloat, 0, 0, 0, 4, {0x00000002, 0x00000000, 0x00000001}},
2341 {SetInt, 1, 0, 0, 4, {0x00000002, 0x00000000, 0x00000001}},
2342 {SetBool, 1, 0, 0, 4, {0x00000001, 0x00000000, 0x00000001}},
2343 {SetIntArray},
2344 {SetIntArray, 1, 1, 1, 4, {0x00000002, 0x00000000, 0x00000001}},
2346 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000003, 0x00000000, 0x00000001}},
2347 {SetBoolArray},
2348 {SetBoolArray, 1, 1, 1, 4, {0x00000001, 0x00000000, 0x00000001}},
2350 {0x00000001, 0x00000000, 0x00000001, 0x00000000, 0x00000001, 0x00000000, 0x00000001}},
2351 {SetFloatArray},
2352 {SetFloatArray, 0, 1, 1, 4, {0x00000002, 0x00000000, 0x00000001}},
2354 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001}},
2355 {SetValue, 1, 0, 3},
2356 {SetValue, 1, 4, 7, 4, {0x00000002, 0x00000000, 0x00000001}},
2357 {SetValue, 1, 8, REGISTER_OUTPUT_SIZE * 4, 8,
2358 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000003, 0x00000000, 0x00000001}},
2359 {SetVector, 0, 0, 0, 8,
2360 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001}},
2362 {SetVectorArray, 0, 1, REGISTER_OUTPUT_SIZE / 4, 8,
2363 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001}},
2364 {SetMatrix, 0, 0, 0, 8,
2365 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001}},
2367 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
2368 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001}},
2369 {SetMatrixTranspose, 0, 0, 0, 8,
2370 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000006, 0x00000000, 0x00000001}},
2373 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000006, 0x00000000, 0x00000001}},
2376 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001}},
2379 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000006, 0x00000000, 0x00000001}},
2380};
2381
2383{
2384 {"ab", {"ab", D3DXRS_BOOL, 0, 2, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 2, 0, 8, NULL}, 37},
2385 {"ab[0]", {"ab", D3DXRS_BOOL, 0, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 37},
2386 {"ab[1]", {"ab", D3DXRS_BOOL, 1, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 38},
2387};
2388
2390{
2391 {SetFloat, 0, 0, 0, 1, {0x00000001}},
2392 {SetInt, 1, 0, 0, 1, {0x00000001}},
2393 {SetBool, 1, 0, 0, 1, {0x00000002}},
2394 {SetIntArray},
2395 {SetIntArray, 1, 1, 1, 1, {0x00000001}},
2396 {SetIntArray, 1, 2, REGISTER_OUTPUT_SIZE, 2, {0x00000001, 0x00000001}},
2397 {SetBoolArray},
2398 {SetBoolArray, 1, 1, 1, 1, {0x00000002}},
2399 {SetBoolArray, 1, 2, REGISTER_OUTPUT_SIZE, 2, {0x00000002, 0x00000003}},
2400 {SetFloatArray},
2401 {SetFloatArray, 0, 1, 1, 1, {0x00000001}},
2402 {SetFloatArray, 0, 2, REGISTER_OUTPUT_SIZE, 2, {0x00000001, 0x00000000}},
2403 {SetValue, 1, 0, 3},
2404 {SetValue, 1, 4, 7, 1, {0x00000002}},
2405 {SetValue, 1, 8, REGISTER_OUTPUT_SIZE * 4, 2, {0x00000002, 0x00000003}},
2406 {SetVector, 0, 0, 0, 2, {0x00000001, 0x00000000}},
2408 {SetVectorArray, 0, 1, REGISTER_OUTPUT_SIZE / 4, 2, {0x00000001, 0x00000000}},
2409 {SetMatrix, 0, 0, 0, 2, {0x00000001, 0x00000000}},
2411 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 2, {0x00000001, 0x00000000}},
2412 {SetMatrixTranspose, 0, 0, 0, 2, {0x00000001, 0x00000001}},
2414 {SetMatrixTransposeArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 2, {0x00000001, 0x00000001}},
2416 {SetMatrixPointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 2, {0x00000001, 0x00000000}},
2418 {SetMatrixTransposePointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 2, {0x00000001, 0x00000001}},
2419};
2420
2422{
2423 {"abf", {"abf", D3DXRS_FLOAT4, 4, 2, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 2, 0, 8, NULL}, 44},
2424 {"abf[0]", {"abf", D3DXRS_FLOAT4, 4, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 44},
2425 {"abf[1]", {"abf", D3DXRS_FLOAT4, 5, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 48},
2426};
2427
2429{
2430 {SetFloat, 0, 0, 0, 4, {0x3f800000}},
2431 {SetInt, 1, 0, 0, 4, {0x3f800000}},
2432 {SetBool, 1, 0, 0, 4, {0x3f800000}},
2433 {SetIntArray},
2434 {SetIntArray, 1, 1, 1, 4, {0x3f800000}},
2436 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000}},
2437 {SetBoolArray},
2438 {SetBoolArray, 1, 1, 1, 4, {0x3f800000}},
2440 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000}},
2441 {SetFloatArray},
2442 {SetFloatArray, 0, 1, 1, 4, {0x3f800000}},
2444 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
2445 {SetValue, 1, 0, 3},
2446 {SetValue, 1, 4, 7, 4, {0x3f800000}},
2447 {SetValue, 1, 8, REGISTER_OUTPUT_SIZE * 4, 8,
2448 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000}},
2449 {SetVector, 0, 0, 0, 8,
2450 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
2452 {SetVectorArray, 0, 1, REGISTER_OUTPUT_SIZE / 4, 8,
2453 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
2454 {SetMatrix, 0, 0, 0, 8,
2455 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
2457 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
2458 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
2459 {SetMatrixTranspose, 0, 0, 0, 8,
2460 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000}},
2463 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000}},
2466 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
2469 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000}},
2470};
2471
2473{
2474 {"anf", {"anf", D3DXRS_FLOAT4, 2, 2, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 2, 0, 8, NULL}, 83},
2475 {"anf[0]", {"anf", D3DXRS_FLOAT4, 2, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 83},
2476 {"anf[1]", {"anf", D3DXRS_FLOAT4, 3, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 87},
2477};
2478
2480{
2481 {SetFloat, 0, 0, 0, 4, {0x40000000}},
2482 {SetInt, 1, 0, 0, 4, {0x40000000}},
2483 {SetBool, 1, 0, 0, 4, {0x3f800000}},
2484 {SetIntArray},
2485 {SetIntArray, 1, 1, 1, 4, {0x40000000}},
2487 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40400000}},
2488 {SetBoolArray},
2489 {SetBoolArray, 1, 1, 1, 4, {0x3f800000}},
2491 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000}},
2492 {SetFloatArray},
2493 {SetFloatArray, 0, 1, 1, 4, {0x40000000}},
2495 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
2496 {SetValue, 1, 0, 3},
2497 {SetValue, 1, 4, 7, 4, {0x40000000}},
2498 {SetValue, 1, 8, REGISTER_OUTPUT_SIZE * 4, 8,
2499 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40400000}},
2500 {SetVector, 0, 0, 0, 8,
2501 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
2503 {SetVectorArray, 0, 1, REGISTER_OUTPUT_SIZE / 4, 8,
2504 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
2505 {SetMatrix, 0, 0, 0, 8,
2506 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
2508 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
2509 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
2510 {SetMatrixTranspose, 0, 0, 0, 8,
2511 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40c00000}},
2514 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40c00000}},
2517 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
2520 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40c00000}},
2521};
2522
2523/*
2524 * fxc.exe /Tvs_3_0
2525 */
2526#if 0
2527bool3 vb = {1, 0, 1};
2528int3 vn = {7, 8, 9};
2529float3 vf = {5.1, 5.2, 5.3};
2530int3 vnf = {11, 85, 62};
2531bool3 vbf = {1, 1, 1};
2532float4 main(float4 pos : POSITION) : POSITION
2533{
2534 float4 tmp = 0;
2535 int i;
2536 if (vb.z) for (i = 0; i < vn.z; i++) tmp.x += pos.z * vf.z * vnf.z;
2537 else for (i = 0; i < vn.y; i++) tmp.y += pos.y * vf.y * vbf.z;
2538 return tmp;
2539}
2540#endif
2542{
25430xfffe0300, 0x0053fffe, 0x42415443, 0x0000001c, 0x00000117, 0xfffe0300, 0x00000005, 0x0000001c,
25440x00000100, 0x00000110, 0x00000080, 0x00000000, 0x00000003, 0x00000084, 0x00000094, 0x000000a0,
25450x00020002, 0x00000001, 0x00000084, 0x000000a4, 0x000000b4, 0x00000002, 0x00000001, 0x000000b8,
25460x000000c8, 0x000000d8, 0x00000001, 0x00000003, 0x000000dc, 0x000000ec, 0x000000fc, 0x00010002,
25470x00000001, 0x000000dc, 0x00000100, 0xab006276, 0x00010001, 0x00030001, 0x00000001, 0x00000000,
25480xffffffff, 0x00000000, 0xffffffff, 0x00666276, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000,
25490xab006676, 0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x40a33333, 0x40a66666, 0x40a9999a,
25500x00000000, 0xab006e76, 0x00020001, 0x00030001, 0x00000001, 0x00000000, 0x00000007, 0x00000008,
25510x00000009, 0x00000000, 0x00666e76, 0x41300000, 0x42aa0000, 0x42780000, 0x00000000, 0x335f7376,
25520x4d00305f, 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320,
25530x656c6970, 0x2e392072, 0x392e3932, 0x332e3235, 0x00313131, 0x05000051, 0xa00f0003, 0x00000000,
25540x00000000, 0x00000000, 0x00000000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x80000000,
25550xe00f0000, 0x01000028, 0xe0e40802, 0x03000005, 0x80010000, 0xa0aa0000, 0x90aa0000, 0x02000001,
25560x80010001, 0xa0000003, 0x01000026, 0xf0e40002, 0x04000004, 0x80010001, 0x80000000, 0xa0aa0001,
25570x80000001, 0x00000027, 0x02000001, 0x80020001, 0xa0000003, 0x0000002a, 0x03000005, 0x80010000,
25580xa0550000, 0x90550000, 0x02000001, 0x80020001, 0xa0000003, 0x01000026, 0xf0e40001, 0x04000004,
25590x80020001, 0x80000000, 0xa0aa0002, 0x80550001, 0x00000027, 0x02000001, 0x80010001, 0xa0000003,
25600x0000002b, 0x02000001, 0xe0030000, 0x80e40001, 0x02000001, 0xe00c0000, 0xa0000003, 0x0000ffff,
2561};
2562
2564{
2565 {"vf", {"vf", D3DXRS_FLOAT4, 0, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 50},
2566};
2567
2569{
2570 {SetInt},
2571 {SetBool},
2572 {SetFloat},
2573 {SetIntArray, 1, 0, 2},
2574 {SetIntArray, 1, 3, REGISTER_OUTPUT_SIZE, 4, {0x40000000, 0x40400000, 0x40800000}},
2575 {SetBoolArray, 1, 0, 2},
2576 {SetBoolArray, 1, 3, REGISTER_OUTPUT_SIZE, 4, {0x3f800000, 0x3f800000, 0x3f800000}},
2577 {SetFloatArray, 0, 0, 2},
2578 {SetFloatArray, 0, 3, REGISTER_OUTPUT_SIZE, 4, {0x40000123, 0x00000000, 0x40800123}},
2579 {SetValue, 0, 0, 11},
2580 {SetValue, 0, 12, REGISTER_OUTPUT_SIZE * 4, 4, {0x40000123, 0x00000000, 0x40800123}},
2581 {SetVector, 0, 0, 0, 4, {0x40000123, 0x00000000, 0x40800123}},
2583 {SetVectorArray, 0, 1, REGISTER_OUTPUT_SIZE / 4, 4, {0x40000123, 0x00000000, 0x40800123}},
2584 {SetMatrix, 0, 0, 0, 4, {0x40000123, 0x00000000, 0x40800123}},
2586 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x40000123, 0x00000000, 0x40800123}},
2587 {SetMatrixTranspose, 0, 0, 0, 4, {0x40000123, 0x40c00123, 0x41200123}},
2589 {SetMatrixTransposeArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x40000123, 0x40c00123, 0x41200123}},
2591 {SetMatrixPointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x40000123, 0x00000000, 0x40800123}},
2593 {SetMatrixTransposePointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x40000123, 0x40c00123, 0x41200123}},
2594};
2595
2597{
2598 {"vn", {"vn", D3DXRS_INT4, 0, 3, D3DXPC_VECTOR, D3DXPT_INT, 1, 3, 1, 0, 12, NULL}, 59},
2599};
2600
2602{
2603 {SetInt},
2604 {SetBool},
2605 {SetFloat},
2606 {SetIntArray, 1, 0, 2},
2607 {SetIntArray, 1, 3, REGISTER_OUTPUT_SIZE, 4, {0x00000002, 0x00000003, 0x00000004}},
2608 {SetBoolArray, 1, 0, 2},
2609 {SetBoolArray, 1, 3, REGISTER_OUTPUT_SIZE, 4, {0x00000001, 0x00000001, 0x00000001}},
2610 {SetFloatArray, 0, 0, 2},
2611 {SetFloatArray, 0, 3, REGISTER_OUTPUT_SIZE, 4, {0x00000002, 0x00000000, 0x00000004}},
2612 {SetValue, 1, 0, 11},
2613 {SetValue, 1, 12, REGISTER_OUTPUT_SIZE * 4, 4, {0x00000002, 0x00000003, 0x00000004}},
2614 {SetVector, 0, 0, 0, 4, {0x00000002, 0x00000000, 0x00000004}},
2616 {SetVectorArray, 0, 1, REGISTER_OUTPUT_SIZE / 4, 4, {0x00000002, 0x00000000, 0x00000004}},
2617 {SetMatrix, 0, 0, 0, 4, {0x00000002, 0x00000000, 0x00000004}},
2619 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x00000002, 0x00000000, 0x00000004}},
2620 {SetMatrixTranspose, 0, 0, 0, 4, {0x00000002, 0x00000006, 0x0000000a}},
2622 {SetMatrixTransposeArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x00000002, 0x00000006, 0x0000000a}},
2624 {SetMatrixPointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x00000002, 0x00000000, 0x00000004}},
2626 {SetMatrixTransposePointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x00000002, 0x00000006, 0x0000000a}},
2627};
2628
2630{
2631 {"vb", {"vb", D3DXRS_BOOL, 0, 3, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 1, 0, 12, NULL}, 37},
2632};
2633
2635{
2636 {SetInt},
2637 {SetBool},
2638 {SetFloat},
2639 {SetIntArray, 1, 0, 2},
2640 {SetIntArray, 1, 3, REGISTER_OUTPUT_SIZE, 3, {0x00000001, 0x00000001, 0x00000001}},
2641 {SetBoolArray, 1, 0, 2},
2642 {SetBoolArray, 1, 3, REGISTER_OUTPUT_SIZE, 3, {0x00000002, 0x00000003, 0x00000004}},
2643 {SetFloatArray, 0, 0, 2},
2644 {SetFloatArray, 0, 3, REGISTER_OUTPUT_SIZE, 3, {0x00000001, 0x00000000, 0x00000001}},
2645 {SetValue, 1, 0, 11},
2646 {SetValue, 1, 12, REGISTER_OUTPUT_SIZE * 4, 3, {0x00000002, 0x00000003, 0x00000004}},
2647 {SetVector, 0, 0, 0, 3, {0x00000001, 0x00000000, 0x00000001}},
2649 {SetVectorArray, 0, 1, REGISTER_OUTPUT_SIZE / 4, 3, {0x00000001, 0x00000000, 0x00000001}},
2650 {SetMatrix, 0, 0, 0, 3, {0x00000001, 0x00000000, 0x00000001}},
2652 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 3, {0x00000001, 0x00000000, 0x00000001}},
2653 {SetMatrixTranspose, 0, 0, 0, 3, {0x00000001, 0x00000001, 0x00000001}},
2655 {SetMatrixTransposeArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 3, {0x00000001, 0x00000001, 0x00000001}},
2657 {SetMatrixPointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 3, {0x00000001, 0x00000000, 0x00000001}},
2659 {SetMatrixTransposePointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 3, {0x00000001, 0x00000001, 0x00000001}},
2660};
2661
2663{
2664 {"vbf", {"vbf", D3DXRS_FLOAT4, 2, 1, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 1, 0, 12, NULL}, 41},
2665};
2666
2668{
2669 {SetInt},
2670 {SetBool},
2671 {SetFloat},
2672 {SetIntArray, 1, 0, 2},
2673 {SetIntArray, 1, 3, REGISTER_OUTPUT_SIZE, 4, {0x3f800000, 0x3f800000, 0x3f800000}},
2674 {SetBoolArray, 1, 0, 2},
2675 {SetBoolArray, 1, 3, REGISTER_OUTPUT_SIZE, 4, {0x3f800000, 0x3f800000, 0x3f800000}},
2676 {SetFloatArray, 0, 0, 2},
2677 {SetFloatArray, 0, 3, REGISTER_OUTPUT_SIZE, 4, {0x3f800000, 0x00000000, 0x3f800000}},
2678 {SetValue, 1, 0, 11},
2679 {SetValue, 1, 12, REGISTER_OUTPUT_SIZE * 4, 4, {0x3f800000, 0x3f800000, 0x3f800000}},
2680 {SetVector, 0, 0, 0, 4, {0x3f800000, 0x00000000, 0x3f800000}},
2682 {SetVectorArray, 0, 1, REGISTER_OUTPUT_SIZE / 4, 4, {0x3f800000, 0x00000000, 0x3f800000}},
2683 {SetMatrix, 0, 0, 0, 4, {0x3f800000, 0x00000000, 0x3f800000}},
2685 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x3f800000, 0x00000000, 0x3f800000}},
2686 {SetMatrixTranspose, 0, 0, 0, 4, {0x3f800000, 0x3f800000, 0x3f800000}},
2688 {SetMatrixTransposeArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x3f800000, 0x3f800000, 0x3f800000}},
2690 {SetMatrixPointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x3f800000, 0x00000000, 0x3f800000}},
2692 {SetMatrixTransposePointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x3f800000, 0x3f800000, 0x3f800000}},
2693};
2694
2696{
2697 {"vnf", {"vnf", D3DXRS_FLOAT4, 1, 1, D3DXPC_VECTOR, D3DXPT_INT, 1, 3, 1, 0, 12, NULL}, 64},
2698};
2699
2701{
2702 {SetInt},
2703 {SetBool},
2704 {SetFloat},
2705 {SetIntArray, 1, 0, 2},
2706 {SetIntArray, 1, 3, REGISTER_OUTPUT_SIZE, 4, {0x40000000, 0x40400000, 0x40800000}},
2707 {SetBoolArray, 1, 0, 2},
2708 {SetBoolArray, 1, 3, REGISTER_OUTPUT_SIZE, 4, {0x3f800000, 0x3f800000, 0x3f800000}},
2709 {SetFloatArray, 0, 0, 2},
2710 {SetFloatArray, 0, 3, REGISTER_OUTPUT_SIZE, 4, {0x40000000, 0x00000000, 0x40800000}},
2711 {SetValue, 1, 0, 11},
2712 {SetValue, 1, 12, REGISTER_OUTPUT_SIZE * 4, 4, {0x40000000, 0x40400000, 0x40800000}},
2713 {SetVector, 0, 0, 0, 4, {0x40000000, 0x00000000, 0x40800000}},
2715 {SetVectorArray, 0, 1, REGISTER_OUTPUT_SIZE / 4, 4, {0x40000000, 0x00000000, 0x40800000}},
2716 {SetMatrix, 0, 0, 0, 4, {0x40000000, 0x00000000, 0x40800000}},
2718 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x40000000, 0x00000000, 0x40800000}},
2719 {SetMatrixTranspose, 0, 0, 0, 4, {0x40000000, 0x40c00000, 0x41200000}},
2721 {SetMatrixTransposeArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x40000000, 0x40c00000, 0x41200000}},
2723 {SetMatrixPointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x40000000, 0x00000000, 0x40800000}},
2725 {SetMatrixTransposePointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4, {0x40000000, 0x40c00000, 0x41200000}},
2726};
2727
2728/*
2729 * fxc.exe /Tvs_3_0
2730 */
2731#if 0
2732bool3 vab[2] = {1, 0, 1, 1, 0, 1};
2733int3 van[2] = {70, 80, 90, 100, 110, 120};
2734float3 vaf[2] = {55.1, 55.2, 55.3, 55.4, 55.5, 55.6};
2735int3 vanf[2] = {130, 140, 150, 160, 170, 180};
2736bool3 vabf[2] = {1, 1, 1, 1, 1, 1};
2737float4 main(float4 pos : POSITION) : POSITION
2738{
2739 float4 tmp = 0;
2740 int i;
2741 if (vab[1].z) for (i = 0; i < van[1].z; i++) tmp.x += pos.z * vaf[1].z * vanf[1].z;
2742 else for (i = 0; i < van[1].y; i++) tmp.y += pos.y * vaf[0].y * vabf[1].z;
2743 return tmp;
2744}
2745#endif
2747{
27480xfffe0300, 0x0070fffe, 0x42415443, 0x0000001c, 0x0000018b, 0xfffe0300, 0x00000005, 0x0000001c,
27490x00000100, 0x00000184, 0x00000080, 0x00000000, 0x00000006, 0x00000084, 0x00000094, 0x000000ac,
27500x00040002, 0x00000002, 0x000000b4, 0x000000c4, 0x000000e4, 0x00000002, 0x00000002, 0x000000e8,
27510x000000f8, 0x00000118, 0x00000001, 0x00000006, 0x0000011c, 0x0000012c, 0x0000014c, 0x00020002,
27520x00000002, 0x00000154, 0x00000164, 0x00626176, 0x00010001, 0x00030001, 0x00000002, 0x00000000,
27530xffffffff, 0x00000000, 0xffffffff, 0xffffffff, 0x00000000, 0xffffffff, 0x66626176, 0xababab00,
27540x00010001, 0x00030001, 0x00000002, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000,
27550x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00666176, 0x00030001, 0x00030001, 0x00000002,
27560x00000000, 0x425c6666, 0x425ccccd, 0x425d3333, 0x00000000, 0x425d999a, 0x425e0000, 0x425e6666,
27570x00000000, 0x006e6176, 0x00020001, 0x00030001, 0x00000002, 0x00000000, 0x00000046, 0x00000050,
27580x0000005a, 0x00000000, 0x00000064, 0x0000006e, 0x00000078, 0x00000000, 0x666e6176, 0xababab00,
27590x00020001, 0x00030001, 0x00000002, 0x00000000, 0x43020000, 0x430c0000, 0x43160000, 0x00000000,
27600x43200000, 0x432a0000, 0x43340000, 0x00000000, 0x335f7376, 0x4d00305f, 0x6f726369, 0x74666f73,
27610x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970, 0x2e392072, 0x392e3932,
27620x332e3235, 0x00313131, 0x05000051, 0xa00f0006, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
27630x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x80000000, 0xe00f0000, 0x01000028, 0xe0e40805,
27640x03000005, 0x80010000, 0xa0aa0001, 0x90aa0000, 0x02000001, 0x80010001, 0xa0000006, 0x01000026,
27650xf0e40005, 0x04000004, 0x80010001, 0x80000000, 0xa0aa0003, 0x80000001, 0x00000027, 0x02000001,
27660x80020001, 0xa0000006, 0x0000002a, 0x03000005, 0x80010000, 0xa0550000, 0x90550000, 0x02000001,
27670x80020001, 0xa0000006, 0x01000026, 0xf0e40004, 0x04000004, 0x80020001, 0x80000000, 0xa0aa0005,
27680x80550001, 0x00000027, 0x02000001, 0x80010001, 0xa0000006, 0x0000002b, 0x02000001, 0xe0030000,
27690x80e40001, 0x02000001, 0xe00c0000, 0xa0000006, 0x0000ffff,
2770};
2771
2773{
2774 {"vaf", {"vaf", D3DXRS_FLOAT4, 0, 2, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 2, 0, 24, NULL}, 62},
2775 {"vaf[0]", {"vaf", D3DXRS_FLOAT4, 0, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 62},
2776 {"vaf[1]", {"vaf", D3DXRS_FLOAT4, 1, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 66},
2777};
2778
2780{
2781 {SetInt},
2782 {SetBool},
2783 {SetFloat},
2784 {SetIntArray, 1, 0, 2},
2785 {SetIntArray, 1, 3, 5, 4, {0x40000000, 0x40400000, 0x40800000}},
2787 {0x40000000, 0x40400000, 0x40800000, 0x00000000, 0x40a00000, 0x00000000, 0x40e00000}},
2788 {SetBoolArray, 1, 0, 2},
2789 {SetBoolArray, 1, 3, 5, 4, {0x3f800000, 0x3f800000, 0x3f800000}},
2791 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000}},
2792 {SetFloatArray, 0, 0, 2},
2793 {SetFloatArray, 0, 3, 5, 4, {0x40000123, 0x00000000, 0x40800123}},
2795 {0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40a00123, 0x40c00123, 0x40e00123}},
2796 {SetValue, 0, 0, 11},
2797 {SetValue, 0, 12, 23, 4, {0x40000123, 0x00000000, 0x40800123}},
2798 {SetValue, 0, 24, REGISTER_OUTPUT_SIZE * 4, 8,
2799 {0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40a00123, 0x40c00123, 0x40e00123}},
2800 {SetVector, 0, 0, 0, 4, {0x40000123, 0x00000000, 0x40800123}},
2802 {SetVectorArray, 0, 1, 1, 4, {0x40000123, 0x00000000, 0x40800123}},
2803 {SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 8,
2804 {0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123}},
2805 {SetMatrix, 0, 0, 0, 8,
2806 {0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123}},
2808 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
2809 {0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123}},
2810 {SetMatrixTranspose, 0, 0, 0, 8,
2811 {0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123}},
2814 {0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123}},
2817 {0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123}},
2820 {0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123}},
2821};
2822
2824{
2825 {"van", {"van", D3DXRS_INT4, 0, 6, D3DXPC_VECTOR, D3DXPT_INT, 1, 3, 2, 0, 24, NULL}, 75},
2826 {"van[0]", {"van", D3DXRS_INT4, 0, 1, D3DXPC_VECTOR, D3DXPT_INT, 1, 3, 1, 0, 12, NULL}, 75},
2827 {"van[1]", {"van", D3DXRS_INT4, 1, 1, D3DXPC_VECTOR, D3DXPT_INT, 1, 3, 1, 0, 12, NULL}, 79},
2828};
2829
2831{
2832 {SetInt},
2833 {SetBool},
2834 {SetFloat},
2835 {SetIntArray, 1, 0, 2},
2836 {SetIntArray, 1, 3, 5, 4, {0x00000002, 0x00000003, 0x00000004}},
2838 {0x00000002, 0x00000003, 0x00000004, 0x00000000, 0x00000005, 0x00000000, 0x00000007}},
2839 {SetBoolArray, 1, 0, 2},
2840 {SetBoolArray, 1, 3, 5, 4, {0x00000001, 0x00000001, 0x00000001}},
2842 {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000000, 0x00000001}},
2843 {SetFloatArray, 0, 0, 2},
2844 {SetFloatArray, 0, 3, 5, 4, {0x00000002, 0x00000000, 0x00000004}},
2846 {0x00000002, 0x00000000, 0x00000004, 0x00000000, 0x00000005, 0x00000006, 0x00000007}},
2847 {SetValue, 1, 0, 11},
2848 {SetValue, 1, 12, 23, 4, {0x00000002, 0x00000003, 0x00000004}},
2849 {SetValue, 1, 24, REGISTER_OUTPUT_SIZE * 4, 8,
2850 {0x00000002, 0x00000003, 0x00000004, 0x00000000, 0x00000005, 0x00000000, 0x00000007}},
2851 {SetVector, 0, 0, 0, 4, {0x00000002, 0x00000000, 0x00000004}},
2852 {SetVectorArray, 0, 0, 0},
2853 {SetVectorArray, 0, 1, 1, 4, {0x00000002, 0x00000000, 0x00000004}},
2854 {SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 8,
2855 {0x00000002, 0x00000000, 0x00000004, 0x00000000, 0x00000006, 0x00000007, 0x00000008}},
2856 {SetMatrix, 0, 0, 0, 8,
2857 {0x00000002, 0x00000000, 0x00000004, 0x00000000, 0x00000006, 0x00000007, 0x00000008}},
2859 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
2860 {0x00000002, 0x00000000, 0x00000004, 0x00000000, 0x00000006, 0x00000007, 0x00000008}},
2861 {SetMatrixTranspose, 0, 0, 0, 8,
2862 {0x00000002, 0x00000006, 0x0000000a, 0x00000000, 0x00000000, 0x00000007, 0x0000000b}},
2865 {0x00000002, 0x00000006, 0x0000000a, 0x00000000, 0x00000000, 0x00000007, 0x0000000b}},
2868 {0x00000002, 0x00000000, 0x00000004, 0x00000000, 0x00000006, 0x00000007, 0x00000008}},
2871 {0x00000002, 0x00000006, 0x0000000a, 0x00000000, 0x00000000, 0x00000007, 0x0000000b}},
2872};
2873
2875{
2876 {"vab", {"vab", D3DXRS_BOOL, 0, 6, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 2, 0, 24, NULL}, 37},
2877 {"vab[0]", {"vab", D3DXRS_BOOL, 0, 3, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 1, 0, 12, NULL}, 37},
2878 {"vab[1]", {"vab", D3DXRS_BOOL, 3, 3, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 1, 0, 12, NULL}, 40},
2879};
2880
2882{
2883 {SetInt},
2884 {SetBool},
2885 {SetFloat},
2886 {SetIntArray, 1, 0, 2},
2887 {SetIntArray, 1, 3, 5, 3, {0x00000001, 0x00000001, 0x00000001}},
2889 {0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001}},
2890 {SetBoolArray, 1, 0},
2891 {SetBoolArray, 1, 3, 5, 3, {0x00000002, 0x00000003, 0x00000004}},
2893 {0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000000, 0x00000007}},
2894 {SetFloatArray, 0, 0, 2},
2895 {SetFloatArray, 0, 3, 5, 3, {0x00000001, 0x00000000, 0x00000001}},
2897 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
2898 {SetValue, 1, 0, 11},
2899 {SetValue, 1, 12, 23, 3, {0x00000002, 0x00000003, 0x00000004}},
2900 {SetValue, 1, 24, REGISTER_OUTPUT_SIZE * 4, 6,
2901 {0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000000, 0x00000007}},
2902 {SetVector, 0, 0, 0, 3, {0x00000001, 0x00000000, 0x00000001}},
2904 {SetVectorArray, 0, 1, 1, 3, {0x00000001, 0x00000000, 0x00000001}},
2905 {SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 6,
2906 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
2907 {SetMatrix, 0, 0, 0, 6,
2908 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
2910 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 6,
2911 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
2912 {SetMatrixTranspose, 0, 0, 0, 6,
2913 {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001}},
2916 {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001}},
2919 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
2922 {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001}},
2923};
2924
2926{
2927 {"vabf", {"vabf", D3DXRS_FLOAT4, 4, 2, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 2, 0, 24, NULL}, 49},
2928 {"vabf[0]", {"vabf", D3DXRS_FLOAT4, 4, 1, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 1, 0, 12, NULL}, 49},
2929 {"vabf[1]", {"vabf", D3DXRS_FLOAT4, 5, 1, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 1, 0, 12, NULL}, 53},
2930};
2931
2933{
2934 {SetInt},
2935 {SetBool},
2936 {SetFloat},
2937 {SetIntArray, 1, 0, 2},
2938 {SetIntArray, 1, 3, 5, 4, {0x3f800000, 0x3f800000, 0x3f800000}},
2940 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000}},
2941 {SetBoolArray, 1, 0, 2},
2942 {SetBoolArray, 1, 3, 5, 4, {0x3f800000, 0x3f800000, 0x3f800000}},
2944 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000}},
2945 {SetFloatArray, 0, 0, 2},
2946 {SetFloatArray, 0, 3, 5, 4, {0x3f800000, 0x00000000, 0x3f800000}},
2948 {0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
2949 {SetValue, 1, 0, 11},
2950 {SetValue, 1, 12, 23, 4, {0x3f800000, 0x3f800000, 0x3f800000}},
2951 {SetValue, 1, 24, REGISTER_OUTPUT_SIZE * 4, 8,
2952 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000}},
2953 {SetVector, 0, 0, 0, 4, {0x3f800000, 0x00000000, 0x3f800000},},
2955 {SetVectorArray, 0, 1, 1, 4, {0x3f800000, 0x00000000, 0x3f800000}},
2956 {SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 8,
2957 {0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
2958 {SetMatrix, 0, 0, 0, 8,
2959 {0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
2961 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
2962 {0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
2963 {SetMatrixTranspose, 0, 0, 0, 8,
2964 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
2967 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
2970 {0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
2973 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
2974};
2975
2977{
2978 {"vanf", {"vanf", D3DXRS_FLOAT4, 2, 2, D3DXPC_VECTOR, D3DXPT_INT, 1, 3, 2, 0, 24, NULL}, 89},
2979 {"vanf[0]", {"vanf", D3DXRS_FLOAT4, 2, 1, D3DXPC_VECTOR, D3DXPT_INT, 1, 3, 1, 0, 12, NULL}, 89},
2980 {"vanf[1]", {"vanf", D3DXRS_FLOAT4, 3, 1, D3DXPC_VECTOR, D3DXPT_INT, 1, 3, 1, 0, 12, NULL}, 93},
2981};
2982
2984{
2985 {SetInt},
2986 {SetBool},
2987 {SetFloat},
2988 {SetIntArray, 1, 0, 2},
2989 {SetIntArray, 1, 3, 5, 4, {0x40000000, 0x40400000, 0x40800000}},
2991 {0x40000000, 0x40400000, 0x40800000, 0x00000000, 0x40a00000, 0x00000000, 0x40e00000}},
2992 {SetBoolArray, 1, 0, 2},
2993 {SetBoolArray, 1, 3, 5, 4, {0x3f800000, 0x3f800000, 0x3f800000}},
2995 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000}},
2996 {SetFloatArray, 2, 0, 2,},
2997 {SetFloatArray, 0, 3, 5, 4, {0x40000000, 0x00000000, 0x40800000}},
2999 {0x40000000, 0x00000000, 0x40800000, 0x00000000, 0x40a00000, 0x40c00000, 0x40e00000}},
3000 {SetValue, 1, 0, 11},
3001 {SetValue, 1, 12, 23, 4, {0x40000000, 0x40400000, 0x40800000}},
3002 {SetValue, 1, 24, REGISTER_OUTPUT_SIZE * 4, 8,
3003 {0x40000000, 0x40400000, 0x40800000, 0x00000000, 0x40a00000, 0x00000000, 0x40e00000}},
3004 {SetVector, 0, 0, 0, 4, {0x40000000, 0x00000000, 0x40800000}},
3006 {SetVectorArray, 0, 1, 1, 4, {0x40000000, 0x00000000, 0x40800000}},
3007 {SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 8,
3008 {0x40000000, 0x00000000, 0x40800000, 0x00000000, 0x40c00000, 0x40e00000, 0x41000000}},
3009 {SetMatrix, 0, 0, 0, 8,
3010 {0x40000000, 0x00000000, 0x40800000, 0x00000000, 0x40c00000, 0x40e00000, 0x41000000}},
3012 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
3013 {0x40000000, 0x00000000, 0x40800000, 0x00000000, 0x40c00000, 0x40e00000, 0x41000000}},
3014 {SetMatrixTranspose, 0, 0, 0, 8,
3015 {0x40000000, 0x40c00000, 0x41200000, 0x00000000, 0x00000000, 0x40e00000, 0x41300000}},
3018 {0x40000000, 0x40c00000, 0x41200000, 0x00000000, 0x00000000, 0x40e00000, 0x41300000}},
3021 {0x40000000, 0x00000000, 0x40800000, 0x00000000, 0x40c00000, 0x40e00000, 0x41000000}},
3024 {0x40000000, 0x40c00000, 0x41200000, 0x00000000, 0x00000000, 0x40e00000, 0x41300000}},
3025};
3026
3027/*
3028 * fxc.exe /Tvs_3_0
3029 */
3030#if 0
3031bool3x2 cb = {1, 0, 1, 1, 0, 1};
3032int3x2 cn = {4, 5, 6, 7, 8, 9};
3033float3x2 cf = {15.1, 15.2, 15.3, 15.4, 15.5, 15.6};
3034bool3x2 cbf = {1, 1, 0, 1, 0, 1};
3035int3x2 cnf = {30, 31, 33, 32, 34, 36};
3036float4 main(float4 pos : POSITION) : POSITION
3037{
3038 float4 tmp = 0;
3039 int i;
3040 if (cb._32) for (i = 0; i < cn._31; i++) tmp.x += pos.z * cf._31 * cbf._32;
3041 else for (i = 0; i < cn._32; i++) tmp.y += pos.y * cf._32 * cnf._32;
3042 return tmp;
3043}
3044#endif
3046{
30470xfffe0300, 0x0066fffe, 0x42415443, 0x0000001c, 0x00000163, 0xfffe0300, 0x00000005, 0x0000001c,
30480x00000100, 0x0000015c, 0x00000080, 0x00000000, 0x00000006, 0x00000084, 0x00000094, 0x000000ac,
30490x00020002, 0x00000002, 0x00000084, 0x000000b0, 0x000000d0, 0x00000002, 0x00000002, 0x000000d4,
30500x000000e4, 0x00000104, 0x00000001, 0x00000006, 0x00000108, 0x00000118, 0x00000138, 0x00040002,
30510x00000002, 0x00000108, 0x0000013c, 0xab006263, 0x00010003, 0x00020003, 0x00000001, 0x00000000,
30520xffffffff, 0x00000000, 0xffffffff, 0xffffffff, 0x00000000, 0xffffffff, 0x00666263, 0x3f800000,
30530x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0xab006663,
30540x00030003, 0x00020003, 0x00000001, 0x00000000, 0x4171999a, 0x4174cccd, 0x41780000, 0x00000000,
30550x41733333, 0x41766666, 0x4179999a, 0x00000000, 0xab006e63, 0x00020003, 0x00020003, 0x00000001,
30560x00000000, 0x00000004, 0x00000006, 0x00000008, 0x00000000, 0x00000005, 0x00000007, 0x00000009,
30570x00000000, 0x00666e63, 0x41f00000, 0x42040000, 0x42080000, 0x00000000, 0x41f80000, 0x42000000,
30580x42100000, 0x00000000, 0x335f7376, 0x4d00305f, 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820,
30590x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970, 0x2e392072, 0x392e3932, 0x332e3235, 0x00313131,
30600x05000051, 0xa00f0006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
30610x900f0000, 0x0200001f, 0x80000000, 0xe00f0000, 0x01000028, 0xe0e40805, 0x03000005, 0x80010000,
30620xa0aa0000, 0x90aa0000, 0x02000001, 0x80010001, 0xa0000006, 0x01000026, 0xf0e40004, 0x04000004,
30630x80010001, 0x80000000, 0xa0aa0003, 0x80000001, 0x00000027, 0x02000001, 0x80020001, 0xa0000006,
30640x0000002a, 0x03000005, 0x80010000, 0xa0aa0001, 0x90550000, 0x02000001, 0x80020001, 0xa0000006,
30650x01000026, 0xf0e40005, 0x04000004, 0x80020001, 0x80000000, 0xa0aa0005, 0x80550001, 0x00000027,
30660x02000001, 0x80010001, 0xa0000006, 0x0000002b, 0x02000001, 0xe0030000, 0x80e40001, 0x02000001,
30670xe00c0000, 0xa0000006, 0x0000ffff,
3068};
3069
3071{
3072 {"cf", {"cf", D3DXRS_FLOAT4, 0, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 3, 2, 1, 0, 24, NULL}, 57},
3073};
3074
3076{
3077 {SetInt},
3078 {SetBool},
3079 {SetFloat},
3080 {SetIntArray, 1, 0, 5},
3082 {0x40000000, 0x40800000, 0x00000000, 0x00000000, 0x40400000, 0x40a00000, 0x40e00000}},
3083 {SetBoolArray, 1, 0, 5},
3085 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3086 {SetFloatArray, 0, 0, 5},
3088 {0x40000123, 0x40800123, 0x40c00123, 0x00000000, 0x00000000, 0x40a00123, 0x40e00123}},
3089 {SetValue, 0, 0, 23},
3090 {SetValue, 0, 24, REGISTER_OUTPUT_SIZE * 4, 8,
3091 {0x40000123, 0x40800123, 0x40c00123, 0x00000000, 0x00000000, 0x40a00123, 0x40e00123}},
3092 {SetVector},
3093 {SetVectorArray, 0, 0, 1},
3094 {SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 8,
3095 {0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123}},
3096 {SetMatrix, 0, 0, 0, 8,
3097 {0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123}},
3099 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
3100 {0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123}},
3101 {SetMatrixTranspose, 0, 0, 0, 8,
3102 {0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123}},
3105 {0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123}},
3108 {0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123}},
3111 {0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123}},
3112};
3113
3115{
3116 {"cn", {"cn", D3DXRS_INT4, 0, 6, D3DXPC_MATRIX_COLUMNS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 70},
3117};
3118
3120{
3121 {SetInt},
3122 {SetBool},
3123 {SetFloat},
3124 {SetIntArray, 1, 0, 5},
3126 {0x00000002, 0x00000004, 0x00000000, 0x00000000, 0x00000003, 0x00000005, 0x00000007}},
3127 {SetBoolArray, 1, 0, 5},
3129 {0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000001, 0x00000001, 0x00000001}},
3130 {SetFloatArray, 0, 0, 5},
3132 {0x00000002, 0x00000004, 0x00000006, 0x00000000, 0x00000000, 0x00000005, 0x00000007}},
3133 {SetValue, 1, 0, 23},
3134 {SetValue, 1, 24, REGISTER_OUTPUT_SIZE * 4, 8,
3135 {0x00000002, 0x00000004, 0x00000000, 0x00000000, 0x00000003, 0x00000005, 0x00000007}},
3136 {SetVector},
3137 {SetVectorArray, 0, 0, 1},
3138 {SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 8,
3139 {0x00000002, 0x00000006, 0x0000000a, 0x00000000, 0x00000000, 0x00000007, 0x0000000b}},
3140 {SetMatrix, 0, 0, 0, 8,
3141 {0x00000002, 0x00000006, 0x0000000a, 0x00000000, 0x00000000, 0x00000007, 0x0000000b}},
3143 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
3144 {0x00000002, 0x00000006, 0x0000000a, 0x00000000, 0x00000000, 0x00000007, 0x0000000b}},
3145 {SetMatrixTranspose, 0, 0, 0, 8,
3146 {0x00000002, 0x00000000, 0x00000004, 0x00000000, 0x00000006, 0x00000007, 0x00000008}},
3149 {0x00000002, 0x00000000, 0x00000004, 0x00000000, 0x00000006, 0x00000007, 0x00000008}},
3152 {0x00000002, 0x00000006, 0x0000000a, 0x00000000, 0x00000000, 0x00000007, 0x0000000b}},
3155 {0x00000002, 0x00000000, 0x00000004, 0x00000000, 0x00000006, 0x00000007, 0x00000008}},
3156};
3157
3159{
3160 {"cb", {"cb", D3DXRS_BOOL, 0, 6, D3DXPC_MATRIX_COLUMNS, D3DXPT_BOOL, 3, 2, 1, 0, 24, NULL}, 37},
3161};
3162
3164{
3165 {SetInt},
3166 {SetBool},
3167 {SetFloat},
3168 {SetIntArray, 1, 0, 5},
3170 {0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001}},
3171 {SetBoolArray, 1, 0, 5},
3173 {0x00000002, 0x00000004, 0x00000000, 0x00000003, 0x00000005, 0x00000007}},
3174 {SetFloatArray, 0, 0, 5},
3176 {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001}},
3177 {SetValue, 1, 0, 23},
3178 {SetValue, 1, 24, REGISTER_OUTPUT_SIZE * 4, 6,
3179 {0x00000002, 0x00000004, 0x00000000, 0x00000003, 0x00000005, 0x00000007}},
3180 {SetVector},
3181 {SetVectorArray, 0, 0, 1},
3182 {SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 6,
3183 {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001}},
3184 {SetMatrix, 0, 0, 0, 6,
3185 {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001}},
3187 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 6,
3188 {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001}},
3189 {SetMatrixTranspose, 0, 0, 0, 6,
3190 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
3193 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
3196 {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001}},
3199 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
3200};
3201
3203{
3204 {"cnf", {"cnf", D3DXRS_FLOAT4, 4, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 79},
3205};
3206
3208{
3209 {SetInt},
3210 {SetBool},
3211 {SetFloat},
3212 {SetIntArray, 1, 0, 5},
3214 {0x40000000, 0x40800000, 0x00000000, 0x00000000, 0x40400000, 0x40a00000, 0x40e00000}},
3215 {SetBoolArray, 1, 0, 5},
3217 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3218 {SetFloatArray, 0, 0, 5},
3220 {0x40000000, 0x40800000, 0x40c00000, 0x00000000, 0x00000000, 0x40a00000, 0x40e00000}},
3221 {SetValue, 1, 0, 23},
3222 {SetValue, 1, 24, REGISTER_OUTPUT_SIZE * 4, 8,
3223 {0x40000000, 0x40800000, 0x00000000, 0x00000000, 0x40400000, 0x40a00000, 0x40e00000}},
3224 {SetVector},
3225 {SetVectorArray, 0, 0, 1},
3226 {SetValue, 0, 0, 23},
3227 {SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 8,
3228 {0x40000000, 0x40c00000, 0x41200000, 0x00000000, 0x00000000, 0x40e00000, 0x41300000}},
3229 {SetMatrix, 0, 0, 0, 8,
3230 {0x40000000, 0x40c00000, 0x41200000, 0x00000000, 0x00000000, 0x40e00000, 0x41300000}},
3232 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
3233 {0x40000000, 0x40c00000, 0x41200000, 0x00000000, 0x00000000, 0x40e00000, 0x41300000}},
3234 {SetMatrixTranspose, 0, 0, 0, 8,
3235 {0x40000000, 0x00000000, 0x40800000, 0x00000000, 0x40c00000, 0x40e00000, 0x41000000}},
3238 {0x40000000, 0x00000000, 0x40800000, 0x00000000, 0x40c00000, 0x40e00000, 0x41000000}},
3241 {0x40000000, 0x40c00000, 0x41200000, 0x00000000, 0x00000000, 0x40e00000, 0x41300000}},
3244 {0x40000000, 0x00000000, 0x40800000, 0x00000000, 0x40c00000, 0x40e00000, 0x41000000}},
3245};
3246
3248{
3249 {"cbf", {"cbf", D3DXRS_FLOAT4, 2, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_BOOL, 3, 2, 1, 0, 24, NULL}, 44},
3250};
3251
3253{
3254 {SetInt},
3255 {SetBool},
3256 {SetFloat},
3257 {SetIntArray, 1, 0, 5},
3259 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3260 {SetBoolArray, 1, 0, 5},
3262 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3263 {SetFloatArray, 0, 0, 5},
3265 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
3266 {SetValue, 1, 0, 23},
3267 {SetValue, 1, 24, REGISTER_OUTPUT_SIZE * 4, 8,
3268 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3269 {SetVector},
3270 {SetVectorArray, 0, 0, 1},
3271 {SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 8,
3272 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
3273 {SetMatrix, 0, 0, 0, 8,
3274 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
3276 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
3277 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
3278 {SetMatrixTranspose, 0, 0, 0, 8,
3279 {0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3282 {0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3285 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
3288 {0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3289};
3290
3291/*
3292 * fxc.exe /Tvs_3_0
3293 */
3294#if 0
3295bool3x2 cab[2] = {1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1};
3296int3x2 can[2] = {14, 15, 16, 71, 18, 19, 55, 63, 96, 96, 97, 13};
3297float3x2 caf[2] = {1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 1.2, 1.3, 1.4};
3298bool3x2 cabf[2] = {1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1};
3299int3x2 canf[2] = {300, 301, 303, 302, 304, 306, 350, 365, 654, 612, 326, 999};
3300float4 main(float4 pos : POSITION) : POSITION
3301{
3302 float4 tmp = 0;
3303 int i;
3304 if (cab[1]._32) for (i = 0; i < can[1]._31; i++) tmp.x += pos.z * caf[1]._31 * cabf[1]._32;
3305 else for (i = 0; i < can[1]._32; i++) tmp.y += pos.y * caf[1]._32 * canf[1]._32;
3306 return tmp;
3307}
3308#endif
3310{
33110xfffe0300, 0x0096fffe, 0x42415443, 0x0000001c, 0x00000223, 0xfffe0300, 0x00000005, 0x0000001c,
33120x00000100, 0x0000021c, 0x00000080, 0x00000000, 0x0000000c, 0x00000084, 0x00000094, 0x000000c4,
33130x00040002, 0x00000004, 0x000000cc, 0x000000dc, 0x0000011c, 0x00000002, 0x00000004, 0x00000120,
33140x00000130, 0x00000170, 0x00000001, 0x0000000c, 0x00000174, 0x00000184, 0x000001c4, 0x00080002,
33150x00000004, 0x000001cc, 0x000001dc, 0x00626163, 0x00010003, 0x00020003, 0x00000002, 0x00000000,
33160xffffffff, 0x00000000, 0xffffffff, 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, 0x00000000,
33170xffffffff, 0xffffffff, 0x00000000, 0xffffffff, 0x66626163, 0xababab00, 0x00010003, 0x00020003,
33180x00000002, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000,
33190x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000,
33200x3f800000, 0x00000000, 0x00666163, 0x00030003, 0x00020003, 0x00000002, 0x00000000, 0x3f8ccccd,
33210x40533333, 0x40b00000, 0x00000000, 0x400ccccd, 0x408ccccd, 0x40d33333, 0x00000000, 0x40f66666,
33220x411e6666, 0x3fa66666, 0x00000000, 0x410ccccd, 0x3f99999a, 0x3fb33333, 0x00000000, 0x006e6163,
33230x00020003, 0x00020003, 0x00000002, 0x00000000, 0x0000000e, 0x00000010, 0x00000012, 0x00000000,
33240x0000000f, 0x00000047, 0x00000013, 0x00000000, 0x00000037, 0x00000060, 0x00000061, 0x00000000,
33250x0000003f, 0x00000060, 0x0000000d, 0x00000000, 0x666e6163, 0xababab00, 0x00020003, 0x00020003,
33260x00000002, 0x00000000, 0x43960000, 0x43978000, 0x43980000, 0x00000000, 0x43968000, 0x43970000,
33270x43990000, 0x00000000, 0x43af0000, 0x44238000, 0x43a30000, 0x00000000, 0x43b68000, 0x44190000,
33280x4479c000, 0x00000000, 0x335f7376, 0x4d00305f, 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820,
33290x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970, 0x2e392072, 0x392e3932, 0x332e3235, 0x00313131,
33300x05000051, 0xa00f000c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
33310x900f0000, 0x0200001f, 0x80000000, 0xe00f0000, 0x01000028, 0xe0e4080b, 0x03000005, 0x80010000,
33320xa0aa0002, 0x90aa0000, 0x02000001, 0x80010001, 0xa000000c, 0x01000026, 0xf0e4000a, 0x04000004,
33330x80010001, 0x80000000, 0xa0aa0007, 0x80000001, 0x00000027, 0x02000001, 0x80020001, 0xa000000c,
33340x0000002a, 0x03000005, 0x80010000, 0xa0aa0003, 0x90550000, 0x02000001, 0x80020001, 0xa000000c,
33350x01000026, 0xf0e4000b, 0x04000004, 0x80020001, 0x80000000, 0xa0aa000b, 0x80550001, 0x00000027,
33360x02000001, 0x80010001, 0xa000000c, 0x0000002b, 0x02000001, 0xe0030000, 0x80e40001, 0x02000001,
33370xe00c0000, 0xa000000c, 0x0000ffff,
3338};
3339
3341{
3342 {"caf", {"caf", D3DXRS_FLOAT4, 0, 4, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 3, 2, 2, 0, 48, NULL}, 76},
3343 {"caf[0]", {"caf", D3DXRS_FLOAT4, 0, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 3, 2, 1, 0, 24, NULL}, 76},
3344 {"caf[1]", {"caf", D3DXRS_FLOAT4, 2, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 3, 2, 1, 0, 24, NULL}, 84},
3345};
3346
3348{
3349 {SetInt},
3350 {SetBool},
3351 {SetFloat},
3352 {SetIntArray, 1, 0, 5},
3353 {SetIntArray, 1, 6, 11, 8,
3354 {0x40000000, 0x40800000, 0x00000000, 0x00000000, 0x40400000, 0x40a00000, 0x40e00000}},
3355 {SetIntArray, 1, 12, REGISTER_OUTPUT_SIZE, 16,
3356 {0x40000000, 0x40800000, 0x00000000, 0x00000000, 0x40400000, 0x40a00000, 0x40e00000, 0x00000000,
3357 0x41000000, 0x41200000, 0x41400000, 0x00000000, 0x41100000, 0x41300000, 0x41500000}},
3358 {SetBoolArray, 1, 0, 5},
3359 {SetBoolArray, 1, 6, 11, 8,
3360 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3362 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000,
3363 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3364 {SetFloatArray, 0, 0, 5},
3365 {SetFloatArray, 0, 6, 11, 8,
3366 {0x40000123, 0x40800123, 0x40c00123, 0x00000000, 0x00000000, 0x40a00123, 0x40e00123}},
3368 {0x40000123, 0x40800123, 0x40c00123, 0x00000000, 0x00000000, 0x40a00123, 0x40e00123, 0x00000000,
3369 0x41000123, 0x41200123, 0x41400123, 0x00000000, 0x41100123, 0x41300123, 0x41500123}},
3370 {SetValue, 0, 0, 23},
3371 {SetValue, 0, 24, 47, 8,
3372 {0x40000123, 0x40800123, 0x40c00123, 0x00000000, 0x00000000, 0x40a00123, 0x40e00123}},
3373 {SetValue, 0, 48, REGISTER_OUTPUT_SIZE * 4, 16,
3374 {0x40000123, 0x40800123, 0x40c00123, 0x00000000, 0x00000000, 0x40a00123, 0x40e00123, 0x00000000,
3375 0x41000123, 0x41200123, 0x41400123, 0x00000000, 0x41100123, 0x41300123, 0x41500123}},
3376 {SetVector},
3377 {SetVectorArray, 0, 0, 1},
3378 {SetVectorArray, 0, 2, 3, 8,
3379 {0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123}},
3380 {SetVectorArray, 0, 4, REGISTER_OUTPUT_SIZE / 4, 16,
3381 {0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123, 0x00000000,
3382 0x41600123, 0x41a00123, 0x00000000, 0x00000000, 0x41700123, 0x41b00123, 0x41f00123}},
3383 {SetMatrix, 0, 0, 0, 8,
3384 {0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123}},
3386 {SetMatrixArray, 0, 1, 1, 8,
3387 {0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123}},
3388 {SetMatrixArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 16,
3389 {0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123, 0x00000000,
3390 0x41a00123, 0x00000000, 0x00000000, 0x00000000, 0x41b00123, 0x41f00123, 0x42300123}},
3391 {SetMatrixTranspose, 0, 0, 0, 8,
3392 {0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123}},
3394 {SetMatrixTransposeArray, 0, 1, 1, 8,
3395 {0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123}},
3397 {0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123, 0x00000000,
3398 0x41a00123, 0x41b00123, 0x41c00123, 0x00000000, 0x00000000, 0x41f00123, 0x42000123}},
3400 {SetMatrixPointerArray, 0, 1, 1, 8,
3401 {0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123}},
3403 {0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123, 0x00000000,
3404 0x41900123, 0x41d00123, 0x42100123, 0x00000000, 0x41a00123, 0x00000000, 0x00000000}},
3406 {SetMatrixTransposePointerArray, 0, 1, 1, 8,
3407 {0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123}},
3409 {0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123, 0x00000000,
3410 0x41900123, 0x41a00123, 0x41b00123, 0x00000000, 0x41d00123, 0x00000000, 0x41f00123}},
3411};
3412
3414{
3415 {"can", {"can", D3DXRS_INT4, 0, 12, D3DXPC_MATRIX_COLUMNS, D3DXPT_INT, 3, 2, 2, 0, 48, NULL}, 97},
3416 {"can[0]", {"can", D3DXRS_INT4, 0, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 97},
3417 {"can[1]", {"can", D3DXRS_INT4, 2, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 105},
3418};
3419
3421{
3422 {SetInt},
3423 {SetBool},
3424 {SetFloat},
3425 {SetIntArray, 1, 0, 5},
3426 {SetIntArray, 1, 6, 11, 8,
3427 {0x00000002, 0x00000004, 0x00000000, 0x00000000, 0x00000003, 0x00000005, 0x00000007}},
3428 {SetIntArray, 1, 12, REGISTER_OUTPUT_SIZE, 16,
3429 {0x00000002, 0x00000004, 0x00000000, 0x00000000, 0x00000003, 0x00000005, 0x00000007, 0x00000000,
3430 0x00000008, 0x0000000a, 0x0000000c, 0x00000000, 0x00000009, 0x0000000b, 0x0000000d}},
3431 {SetBoolArray, 1, 0, 5},
3432 {SetBoolArray, 1, 6, 11, 8,
3433 {0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000001, 0x00000001, 0x00000001}},
3435 {0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000000,
3436 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001}},
3437 {SetFloatArray, 0, 0, 5},
3438 {SetFloatArray, 0, 6, 11, 8,
3439 {0x00000002, 0x00000004, 0x00000006, 0x00000000, 0x00000000, 0x00000005, 0x00000007}},
3441 {0x00000002, 0x00000004, 0x00000006, 0x00000000, 0x00000000, 0x00000005, 0x00000007, 0x00000000,
3442 0x00000008, 0x0000000a, 0x0000000c, 0x00000000, 0x00000009, 0x0000000b, 0x0000000d}},
3443 {SetValue, 1, 0, 23},
3444 {SetValue, 1, 24, 47, 8,
3445 {0x00000002, 0x00000004, 0x00000000, 0x00000000, 0x00000003, 0x00000005, 0x00000007}},
3446 {SetValue, 1, 48, REGISTER_OUTPUT_SIZE * 4, 16,
3447 {0x00000002, 0x00000004, 0x00000000, 0x00000000, 0x00000003, 0x00000005, 0x00000007, 0x00000000,
3448 0x00000008, 0x0000000a, 0x0000000c, 0x00000000, 0x00000009, 0x0000000b, 0x0000000d}},
3449 {SetVector},
3450 {SetVectorArray, 0, 0, 1},
3451 {SetVectorArray, 0, 2, 3, 8,
3452 {0x00000002, 0x00000006, 0x0000000a, 0x00000000, 0x00000000, 0x00000007, 0x0000000b}},
3453 {SetVectorArray, 0, 4, REGISTER_OUTPUT_SIZE / 4, 16,
3454 {0x00000002, 0x00000006, 0x0000000a, 0x00000000, 0x00000000, 0x00000007, 0x0000000b, 0x00000000,
3455 0x0000000e, 0x00000014, 0x00000000, 0x00000000, 0x0000000f, 0x00000016, 0x0000001e}},
3456 {SetMatrix, 0, 0, 0, 8,
3457 {0x00000002, 0x00000006, 0x0000000a, 0x00000000, 0x00000000, 0x00000007, 0x0000000b}},
3459 {SetMatrixArray, 0, 1, 1, 8,
3460 {0x00000002, 0x00000006, 0x0000000a, 0x00000000, 0x00000000, 0x00000007, 0x0000000b}},
3461 {SetMatrixArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 16,
3462 {0x00000002, 0x00000006, 0x0000000a, 0x00000000, 0x00000000, 0x00000007, 0x0000000b, 0x00000000,
3463 0x00000014, 0x00000000, 0x00000000, 0x00000000, 0x00000016, 0x0000001e, 0x0000002c}},
3464 {SetMatrixTranspose, 0, 0, 0, 8,
3465 {0x00000002, 0x00000000, 0x00000004, 0x00000000, 0x00000006, 0x00000007, 0x00000008}},
3467 {SetMatrixTransposeArray, 0, 1, 1, 8,
3468 {0x00000002, 0x00000000, 0x00000004, 0x00000000, 0x00000006, 0x00000007, 0x00000008}},
3470 {0x00000002, 0x00000000, 0x00000004, 0x00000000, 0x00000006, 0x00000007, 0x00000008, 0x00000000,
3471 0x00000014, 0x00000016, 0x00000018, 0x00000000, 0x00000000, 0x0000001e, 0x00000020}},
3473 {SetMatrixPointerArray, 0, 1, 1, 8,
3474 {0x00000002, 0x00000006, 0x0000000a, 0x00000000, 0x00000000, 0x00000007, 0x0000000b}},
3476 {0x00000002, 0x00000006, 0x0000000a, 0x00000000, 0x00000000, 0x00000007, 0x0000000b, 0x00000000,
3477 0x00000012, 0x0000001a, 0x00000024, 0x00000000, 0x00000014, 0x00000000, 0x00000000}},
3479 {SetMatrixTransposePointerArray, 0, 1, 1, 8,
3480 {0x00000002, 0x00000000, 0x00000004, 0x00000000, 0x00000006, 0x00000007, 0x00000008}},
3482 {0x00000002, 0x00000000, 0x00000004, 0x00000000, 0x00000006, 0x00000007, 0x00000008, 0x00000000,
3483 0x00000012, 0x00000014, 0x00000016, 0x00000000, 0x0000001a, 0x00000000, 0x0000001e}},
3484};
3485
3487{
3488 {"cab", {"cab", D3DXRS_BOOL, 0, 12, D3DXPC_MATRIX_COLUMNS, D3DXPT_BOOL, 3, 2, 2, 0, 48, NULL}, 37},
3489 {"cab[0]", {"cab", D3DXRS_BOOL, 0, 6, D3DXPC_MATRIX_COLUMNS, D3DXPT_BOOL, 3, 2, 1, 0, 24, NULL}, 37},
3490 {"cab[1]", {"cab", D3DXRS_BOOL, 6, 6, D3DXPC_MATRIX_COLUMNS, D3DXPT_BOOL, 3, 2, 1, 0, 24, NULL}, 43},
3491};
3492
3494{
3495 {SetInt},
3496 {SetBool},
3497 {SetFloat},
3498 {SetIntArray, 1, 0, 5},
3499 {SetIntArray, 1, 6, 11, 6,
3500 {0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001}},
3501 {SetIntArray, 1, 12, REGISTER_OUTPUT_SIZE, 12,
3502 {0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
3503 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
3504 {SetBoolArray, 1, 0, 5},
3505 {SetBoolArray, 1, 6, 11, 6,
3506 {0x00000002, 0x00000004, 0x00000000, 0x00000003, 0x00000005, 0x00000007}},
3508 {0x00000002, 0x00000004, 0x00000000, 0x00000003, 0x00000005, 0x00000007, 0x00000008, 0x0000000a,
3509 0x0000000c, 0x00000009, 0x0000000b, 0x0000000d}},
3510 {SetFloatArray, 0, 0, 5},
3511 {SetFloatArray, 0, 6, 11, 6,
3512 {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001}},
3514 {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
3515 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
3516 {SetValue, 1, 0, 23},
3517 {SetValue, 1, 24, 47, 6,
3518 {0x00000002, 0x00000004, 0x00000000, 0x00000003, 0x00000005, 0x00000007}},
3519 {SetValue, 1, 48, REGISTER_OUTPUT_SIZE * 4, 12,
3520 {0x00000002, 0x00000004, 0x00000000, 0x00000003, 0x00000005, 0x00000007, 0x00000008, 0x0000000a,
3521 0x0000000c, 0x00000009, 0x0000000b, 0x0000000d}},
3522 {SetVector},
3523 {SetVectorArray, 0, 0, 1},
3524 {SetVectorArray, 0, 2, 3, 6,
3525 {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001}},
3526 {SetVectorArray, 0, 4, REGISTER_OUTPUT_SIZE / 4, 12,
3527 {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
3528 0x00000000, 0x00000001, 0x00000001, 0x00000001}},
3529 {SetMatrix, 0, 0, 0, 6,
3530 {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001}},
3532 {SetMatrixArray, 0, 1, 1, 6,
3533 {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001}},
3534 {SetMatrixArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 12,
3535 {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000000,
3536 0x00000000, 0x00000001, 0x00000001, 0x00000001}},
3537 {SetMatrixTranspose, 0, 0, 0, 6,
3538 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
3540 {SetMatrixTransposeArray, 0, 1, 1, 6,
3541 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
3543 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
3544 0x00000001, 0x00000000, 0x00000001, 0x00000001}},
3546 {SetMatrixPointerArray, 0, 1, 1, 6,
3547 {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001}},
3549 {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
3550 0x00000001, 0x00000001, 0x00000000, 0x00000000}},
3552 {SetMatrixTransposePointerArray, 0, 1, 1, 6,
3553 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
3555 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
3556 0x00000001, 0x00000001, 0x00000000, 0x00000001}},
3557};
3558
3560{
3561 {"canf", {"canf", D3DXRS_FLOAT4, 8, 4, D3DXPC_MATRIX_COLUMNS, D3DXPT_INT, 3, 2, 2, 0, 48, NULL}, 119},
3562 {"canf[0]", {"canf", D3DXRS_FLOAT4, 8, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 119},
3563 {"canf[1]", {"canf", D3DXRS_FLOAT4, 10, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 127},
3564};
3565
3567{
3568 {SetInt},
3569 {SetBool},
3570 {SetFloat},
3571 {SetIntArray, 1, 0, 5},
3572 {SetIntArray, 1, 6, 11, 8,
3573 {0x40000000, 0x40800000, 0x00000000, 0x00000000, 0x40400000, 0x40a00000, 0x40e00000}},
3574 {SetIntArray, 1, 12, REGISTER_OUTPUT_SIZE, 16,
3575 {0x40000000, 0x40800000, 0x00000000, 0x00000000, 0x40400000, 0x40a00000, 0x40e00000, 0x00000000,
3576 0x41000000, 0x41200000, 0x41400000, 0x00000000, 0x41100000, 0x41300000, 0x41500000}},
3577 {SetBoolArray, 1, 0, 5},
3578 {SetBoolArray, 1, 6, 11, 8,
3579 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3581 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000,
3582 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3583 {SetFloatArray, 0, 0, 5},
3584 {SetFloatArray, 0, 6, 11, 8,
3585 {0x40000000, 0x40800000, 0x40c00000, 0x00000000, 0x00000000, 0x40a00000, 0x40e00000}},
3587 {0x40000000, 0x40800000, 0x40c00000, 0x00000000, 0x00000000, 0x40a00000, 0x40e00000, 0x00000000,
3588 0x41000000, 0x41200000, 0x41400000, 0x00000000, 0x41100000, 0x41300000, 0x41500000}},
3589 {SetValue, 1, 0, 23},
3590 {SetValue, 1, 24, 47, 8,
3591 {0x40000000, 0x40800000, 0x00000000, 0x00000000, 0x40400000, 0x40a00000, 0x40e00000}},
3592 {SetValue, 1, 48, REGISTER_OUTPUT_SIZE * 4, 16,
3593 {0x40000000, 0x40800000, 0x00000000, 0x00000000, 0x40400000, 0x40a00000, 0x40e00000, 0x00000000,
3594 0x41000000, 0x41200000, 0x41400000, 0x00000000, 0x41100000, 0x41300000, 0x41500000}},
3595 {SetVector},
3596 {SetVectorArray, 0, 0, 1},/*16*/
3597 {SetVectorArray, 0, 2, 3, 8,
3598 {0x40000000, 0x40c00000, 0x41200000, 0x00000000, 0x00000000, 0x40e00000, 0x41300000}},
3599 {SetVectorArray, 0, 4, REGISTER_OUTPUT_SIZE / 4, 16,
3600 {0x40000000, 0x40c00000, 0x41200000, 0x00000000, 0x00000000, 0x40e00000, 0x41300000, 0x00000000,
3601 0x41600000, 0x41a00000, 0x00000000, 0x00000000, 0x41700000, 0x41b00000, 0x41f00000}},
3602 {SetMatrix, 0, 0, 0, 8,
3603 {0x40000000, 0x40c00000, 0x41200000, 0x00000000, 0x00000000, 0x40e00000, 0x41300000}},
3605 {SetMatrixArray, 0, 1, 1, 8,
3606 {0x40000000, 0x40c00000, 0x41200000, 0x00000000, 0x00000000, 0x40e00000, 0x41300000}},
3607 {SetMatrixArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 16,
3608 {0x40000000, 0x40c00000, 0x41200000, 0x00000000, 0x00000000, 0x40e00000, 0x41300000, 0x00000000,
3609 0x41a00000, 0x00000000, 0x00000000, 0x00000000, 0x41b00000, 0x41f00000, 0x42300000}},
3610 {SetMatrixTranspose, 0, 0, 0, 8,
3611 {0x40000000, 0x00000000, 0x40800000, 0x00000000, 0x40c00000, 0x40e00000, 0x41000000}},
3613 {SetMatrixTransposeArray, 0, 1, 1, 8,
3614 {0x40000000, 0x00000000, 0x40800000, 0x00000000, 0x40c00000, 0x40e00000, 0x41000000}},
3616 {0x40000000, 0x00000000, 0x40800000, 0x00000000, 0x40c00000, 0x40e00000, 0x41000000, 0x00000000,
3617 0x41a00000, 0x41b00000, 0x41c00000, 0x00000000, 0x00000000, 0x41f00000, 0x42000000}},
3619 {SetMatrixPointerArray, 0, 1, 1, 8,
3620 {0x40000000, 0x40c00000, 0x41200000, 0x00000000, 0x00000000, 0x40e00000, 0x41300000}},
3622 {0x40000000, 0x40c00000, 0x41200000, 0x00000000, 0x00000000, 0x40e00000, 0x41300000, 0x00000000,
3623 0x41900000, 0x41d00000, 0x42100000, 0x00000000, 0x41a00000, 0x00000000, 0x00000000}},
3625 {SetMatrixTransposePointerArray, 0, 1, 1, 8,
3626 {0x40000000, 0x00000000, 0x40800000, 0x00000000, 0x40c00000, 0x40e00000, 0x41000000}},
3628 {0x40000000, 0x00000000, 0x40800000, 0x00000000, 0x40c00000, 0x40e00000, 0x41000000, 0x00000000,
3629 0x41900000, 0x41a00000, 0x41b00000, 0x00000000, 0x41d00000, 0x00000000, 0x41f00000}},
3630};
3631
3633{
3634 {"cabf", {"cabf", D3DXRS_FLOAT4, 4, 4, D3DXPC_MATRIX_COLUMNS, D3DXPT_BOOL, 3, 2, 2, 0, 48, NULL}, 55},
3635 {"cabf[0]", {"cabf", D3DXRS_FLOAT4, 4, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_BOOL, 3, 2, 1, 0, 24, NULL}, 55},
3636 {"cabf[1]", {"cabf", D3DXRS_FLOAT4, 6, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_BOOL, 3, 2, 1, 0, 24, NULL}, 63},
3637};
3638
3640{
3641 {SetInt},
3642 {SetBool},
3643 {SetFloat},
3644 {SetIntArray, 1, 0, 5},
3645 {SetIntArray, 1, 6, 11, 8,
3646 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3647 {SetIntArray, 1, 12, REGISTER_OUTPUT_SIZE, 16,
3648 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000,
3649 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3650 {SetBoolArray, 1, 0, 5},
3651 {SetBoolArray, 1, 6, 11, 8,
3652 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3654 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000,
3655 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3656 {SetFloatArray, 0, 0, 5},
3657 {SetFloatArray, 0, 6, 11, 8,
3658 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
3660 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000,
3661 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3662 {SetValue, 1, 0, 23},
3663 {SetValue, 1, 24, 47, 8,
3664 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3665 {SetValue, 1, 48, REGISTER_OUTPUT_SIZE * 4, 16,
3666 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000,
3667 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3668 {SetVector},
3669 {SetVectorArray, 0, 0, 1},
3670 {SetVectorArray, 0, 2, 3, 8,
3671 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
3672 {SetVectorArray, 0, 4, REGISTER_OUTPUT_SIZE / 4, 16,
3673 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000,
3674 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3675 {SetMatrix, 0, 0, 0, 8,
3676 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
3678 {SetMatrixArray, 0, 1, 1, 8,
3679 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
3680 {SetMatrixArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 16,
3681 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000,
3682 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3683 {SetMatrixTranspose, 0, 0, 0, 8,
3684 {0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3686 {SetMatrixTransposeArray, 0, 1, 1, 8,
3687 {0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3689 {0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000,
3690 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
3692 {SetMatrixPointerArray, 0, 1, 1, 8,
3693 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
3695 {0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000,
3696 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000}},
3698 {SetMatrixTransposePointerArray, 0, 1, 1, 8,
3699 {0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
3701 {0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000,
3702 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000}},
3703};
3704
3705/*
3706 * fxc.exe /Tvs_3_0
3707 */
3708#if 0
3709row_major bool3x2 rb = {1, 1, 0, 0, 1, 1};
3710row_major int3x2 rn = {80, 81, 82, 83, 84, 85};
3711row_major float3x2 rf = {95.1, 95.2, 95.3, 95.4, 95.5, 95.6};
3712row_major bool3x2 rbf = {1, 1, 1, 1, 0, 1};
3713row_major int3x2 rnf = {37, 13, 98, 54, 77, 36};
3714float4 main(float4 pos : POSITION) : POSITION
3715{
3716 float4 tmp = 0;
3717 int i;
3718 if (rb._32) for (i = 0; i < rn._31; i++) tmp.x += pos.z * rf._31 * rbf._32;
3719 else for (i = 0; i < rn._32; i++) tmp.y += pos.y * rf._32 * rnf._32;
3720 return tmp;
3721}
3722#endif
3724{
37250xfffe0300, 0x0076fffe, 0x42415443, 0x0000001c, 0x000001a3, 0xfffe0300, 0x00000005, 0x0000001c,
37260x00000100, 0x0000019c, 0x00000080, 0x00000000, 0x00000006, 0x00000084, 0x00000094, 0x000000ac,
37270x00030002, 0x00000003, 0x00000084, 0x000000b0, 0x000000e0, 0x00000002, 0x00000003, 0x000000e4,
37280x000000f4, 0x00000124, 0x00000001, 0x00000006, 0x00000128, 0x00000138, 0x00000168, 0x00060002,
37290x00000003, 0x00000128, 0x0000016c, 0xab006272, 0x00010002, 0x00020003, 0x00000001, 0x00000000,
37300xffffffff, 0xffffffff, 0x00000000, 0x00000000, 0xffffffff, 0xffffffff, 0x00666272, 0x3f800000,
37310x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000,
37320x3f800000, 0x00000000, 0x00000000, 0xab006672, 0x00030002, 0x00020003, 0x00000001, 0x00000000,
37330x42be3333, 0x42be6666, 0x00000000, 0x00000000, 0x42be999a, 0x42becccd, 0x00000000, 0x00000000,
37340x42bf0000, 0x42bf3333, 0x00000000, 0x00000000, 0xab006e72, 0x00020002, 0x00020003, 0x00000001,
37350x00000000, 0x00000050, 0x00000051, 0x00000001, 0x00000000, 0x00000052, 0x00000053, 0x00000001,
37360x00000000, 0x00000054, 0x00000055, 0x00000001, 0x00000000, 0x00666e72, 0x42140000, 0x41500000,
37370x00000000, 0x00000000, 0x42c40000, 0x42580000, 0x00000000, 0x00000000, 0x429a0000, 0x42100000,
37380x00000000, 0x00000000, 0x335f7376, 0x4d00305f, 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820,
37390x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970, 0x2e392072, 0x392e3932, 0x332e3235, 0x00313131,
37400x05000051, 0xa00f0009, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
37410x900f0000, 0x0200001f, 0x80000000, 0xe00f0000, 0x01000028, 0xe0e40805, 0x03000005, 0x80010000,
37420xa0000002, 0x90aa0000, 0x02000001, 0x80010001, 0xa0000009, 0x01000026, 0xf0e40004, 0x04000004,
37430x80010001, 0x80000000, 0xa0550005, 0x80000001, 0x00000027, 0x02000001, 0x80020001, 0xa0000009,
37440x0000002a, 0x03000005, 0x80010000, 0xa0550002, 0x90550000, 0x02000001, 0x80020001, 0xa0000009,
37450x01000026, 0xf0e40005, 0x04000004, 0x80020001, 0x80000000, 0xa0550008, 0x80550001, 0x00000027,
37460x02000001, 0x80010001, 0xa0000009, 0x0000002b, 0x02000001, 0xe0030000, 0x80e40001, 0x02000001,
37470xe00c0000, 0xa0000009, 0x0000ffff,
3748};
3749
3751{
3752 {"rf", {"rf", D3DXRS_FLOAT4, 0, 3, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 3, 2, 1, 0, 24, NULL}, 61},
3753};
3754
3756{
3757 {SetInt},
3758 {SetBool},
3759 {SetFloat},
3760 {SetIntArray, 1, 0, 5},
3762 {0x40000000, 0x40400000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000, 0x00000000,
3763 0x00000000, 0x40e00000}},
3764 {SetBoolArray, 1, 0, 5},
3766 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
3767 0x00000000, 0x3f800000}},
3768 {SetFloatArray, 0, 0, 5},
3770 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000, 0x00000000,
3771 0x40c00123, 0x40e00123}},
3772 {SetValue, 0, 0, 23},
3773 {SetValue, 0, 24, REGISTER_OUTPUT_SIZE * 4, 12,
3774 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000, 0x00000000,
3775 0x40c00123, 0x40e00123}},
3776 {SetVector},
3777 {SetVectorArray, 0, 0, 2},
3778 {SetVectorArray, 0, 3, REGISTER_OUTPUT_SIZE / 4, 12,
3779 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40c00123, 0x40e00123, 0x00000000, 0x00000000,
3780 0x41200123, 0x41300123}},
3781 {SetMatrix, 0, 0, 0, 12,
3782 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40c00123, 0x40e00123, 0x00000000, 0x00000000,
3783 0x41200123, 0x41300123}},
3785 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 12,
3786 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40c00123, 0x40e00123, 0x00000000, 0x00000000,
3787 0x41200123, 0x41300123}},
3788 {SetMatrixTranspose, 0, 0, 0, 12,
3789 {0x40000123, 0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x00000000, 0x00000000,
3790 0x40800123, 0x41000123}},
3793 {0x40000123, 0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x00000000, 0x00000000,
3794 0x40800123, 0x41000123}},
3797 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40c00123, 0x40e00123, 0x00000000, 0x00000000,
3798 0x41200123, 0x41300123}},
3801 {0x40000123, 0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x00000000, 0x00000000,
3802 0x40800123, 0x41000123}},
3803};
3804
3806{
3807 {"rn", {"rn", D3DXRS_INT4, 0, 6, D3DXPC_MATRIX_ROWS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 78},
3808};
3809
3811{
3812 {SetInt},
3813 {SetBool},
3814 {SetFloat},
3815 {SetIntArray, 1, 0, 5},
3817 {0x00000002, 0x00000003, 0x00000001, 0x00000000, 0x00000004, 0x00000005, 0x00000001, 0x00000000,
3818 0x00000000, 0x00000007, 0x00000001}},
3819 {SetBoolArray, 1, 0, 5},
3821 {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000000,
3822 0x00000000, 0x00000001, 0x00000001}},
3823 {SetFloatArray, 0, 0, 5},
3825 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000004, 0x00000005, 0x00000001, 0x00000000,
3826 0x00000006, 0x00000007, 0x00000001}},
3827 {SetValue, 1, 0, 23},
3828 {SetValue, 1, 24, REGISTER_OUTPUT_SIZE * 4, 12,
3829 {0x00000002, 0x00000003, 0x00000001, 0x00000000, 0x00000004, 0x00000005, 0x00000001, 0x00000000,
3830 0x00000000, 0x00000007, 0x00000001}},
3831 {SetVector},
3832 {SetVectorArray, 0, 0, 2},
3833 {SetVectorArray, 0, 3, REGISTER_OUTPUT_SIZE / 4, 12,
3834 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000006, 0x00000007, 0x00000001, 0x00000000,
3835 0x0000000a, 0x0000000b, 0x00000001}},
3836 {SetMatrix, 0, 0, 0, 12,
3837 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000006, 0x00000007, 0x00000001, 0x00000000,
3838 0x0000000a, 0x0000000b, 0x00000001}},
3840 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 12,
3841 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000006, 0x00000007, 0x00000001, 0x00000000,
3842 0x0000000a, 0x0000000b, 0x00000001}},
3843 {SetMatrixTranspose, 0, 0, 0, 12,
3844 {0x00000002, 0x00000006, 0x00000001, 0x00000000, 0x00000000, 0x00000007, 0x00000001, 0x00000000,
3845 0x00000004, 0x00000008, 0x00000001}},
3848 {0x00000002, 0x00000006, 0x00000001, 0x00000000, 0x00000000, 0x00000007, 0x00000001, 0x00000000,
3849 0x00000004, 0x00000008, 0x00000001}},
3852 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000006, 0x00000007, 0x00000001, 0x00000000,
3853 0x0000000a, 0x0000000b, 0x00000001}},
3856 {0x00000002, 0x00000006, 0x00000001, 0x00000000, 0x00000000, 0x00000007, 0x00000001, 0x00000000,
3857 0x00000004, 0x00000008, 0x00000001}},
3858};
3859
3861{
3862 {"rb", {"rb", D3DXRS_BOOL, 0, 6, D3DXPC_MATRIX_ROWS, D3DXPT_BOOL, 3, 2, 1, 0, 24, NULL}, 37},
3863};
3864
3866{
3867 {SetInt},
3868 {SetBool},
3869 {SetFloat},
3870 {SetIntArray, 0, 0, 5,},
3872 {0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001}},
3873 {SetBoolArray, 0, 0, 5},
3875 {0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000000, 0x00000007}},
3876 {SetFloatArray, 0, 0, 5},
3878 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
3879 {SetValue, 0, 0, 23},
3880 {SetValue, 1, 24, REGISTER_OUTPUT_SIZE * 4, 6,
3881 {0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000000, 0x00000007}},
3882 {SetVector},
3883 {SetVectorArray, 0, 0, 2},
3884 {SetVectorArray, 0, 3, REGISTER_OUTPUT_SIZE / 4, 6,
3885 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
3886 {SetMatrix, 0, 0, 0, 6,
3887 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001},},
3889 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 6,
3890 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
3891 {SetMatrixTranspose, 0, 0, 0, 6,
3892 {0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001}},
3895 {0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001}},
3898 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
3901 {0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001}},
3902};
3903
3905{
3906 {"rnf", {"rnf", D3DXRS_FLOAT4, 6, 3, D3DXPC_MATRIX_ROWS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 91},
3907};
3908
3910{
3911 {SetInt},
3912 {SetBool},
3913 {SetFloat},
3914 {SetIntArray, 1, 0, 5},
3916 {0x40000000, 0x40400000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000, 0x00000000,
3917 0x00000000, 0x40e00000}},
3918 {SetBoolArray, 1, 0, 5},
3920 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
3921 0x00000000, 0x3f800000}},
3922 {SetFloatArray, 0, 0, 5},
3924 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000, 0x00000000,
3925 0x40c00000, 0x40e00000}},
3926 {SetValue, 1, 0, 23},
3927 {SetValue, 1, 24, REGISTER_OUTPUT_SIZE * 4, 12,
3928 {0x40000000, 0x40400000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000, 0x00000000,
3929 0x00000000, 0x40e00000}},
3930 {SetVector},
3931 {SetVectorArray, 0, 0, 2},
3932 {SetVectorArray, 0, 3, REGISTER_OUTPUT_SIZE / 4, 12,
3933 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40c00000, 0x40e00000, 0x00000000, 0x00000000,
3934 0x41200000, 0x41300000}},
3935 {SetMatrix, 0, 0, 0, 12,
3936 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40c00000, 0x40e00000, 0x00000000, 0x00000000,
3937 0x41200000, 0x41300000}},
3939 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 12,
3940 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40c00000, 0x40e00000, 0x00000000, 0x00000000,
3941 0x41200000, 0x41300000}},
3942 {SetMatrixTranspose, 0, 0, 0, 12,
3943 {0x40000000, 0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x00000000, 0x00000000,
3944 0x40800000, 0x41000000}},
3947 {0x40000000, 0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x00000000, 0x00000000,
3948 0x40800000, 0x41000000}},
3951 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40c00000, 0x40e00000, 0x00000000, 0x00000000,
3952 0x41200000, 0x41300000}},
3955 {0x40000000, 0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x00000000, 0x00000000,
3956 0x40800000, 0x41000000}},
3957};
3958
3960{
3961 {"rbf", {"rbf", D3DXRS_FLOAT4, 3, 3, D3DXPC_MATRIX_ROWS, D3DXPT_BOOL, 3, 2, 1, 0, 24, NULL}, 44},
3962};
3963
3965{
3966 {SetInt},
3967 {SetBool},
3968 {SetFloat},
3969 {SetIntArray, 1, 0, 5},
3971 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
3972 0x00000000, 0x3f800000}},
3973 {SetBoolArray, 1, 0, 5},
3975 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
3976 0x00000000, 0x3f800000}},
3977 {SetFloatArray, 0, 0, 5},
3979 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
3980 0x3f800000, 0x3f800000}},
3981 {SetValue, 1, 0, 23},
3982 {SetValue, 1, 24, REGISTER_OUTPUT_SIZE * 4, 12,
3983 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
3984 0x00000000, 0x3f800000}},
3985 {SetVector},
3986 {SetVectorArray, 0, 0, 2},
3987 {SetVectorArray, 0, 3, REGISTER_OUTPUT_SIZE / 4, 12,
3988 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
3989 0x3f800000, 0x3f800000}},
3990 {SetMatrix, 0, 0, 0, 12,
3991 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
3992 0x3f800000, 0x3f800000}},
3994 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 12,
3995 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
3996 0x3f800000, 0x3f800000}},
3997 {SetMatrixTranspose, 0, 0, 0, 12,
3998 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000,
3999 0x3f800000, 0x3f800000}},
4002 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000,
4003 0x3f800000, 0x3f800000}},
4006 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4007 0x3f800000, 0x3f800000}},
4010 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000,
4011 0x3f800000, 0x3f800000}},
4012};
4013
4014/*
4015 * fxc.exe /Tvs_3_0
4016 */
4017#if 0
4018row_major bool3x2 rab[2] = {1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1};
4019row_major int3x2 ran[2] = {4, 5, 6, 1, 8, 1, 5, 3, 9, 6, 7, 3};
4020row_major float3x2 raf[2] = {1.5, 2.8, 3.3, 4.9, 5.9, 6.8, 7.9, 8.5, 9.4, 1.3, 1.2, 1.1};
4021row_major bool3x2 rabf[2] = {1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1};
4022row_major int3x2 ranf[2] = {35, 40, 60, 80, 70, 56, 37, 13, 98, 54, 77, 36};
4023float4 main(float4 pos : POSITION) : POSITION
4024{
4025 float4 tmp = 0;
4026 int i;
4027 if (rab[1]._32) for (i = 0; i < ran[1]._31; i++) tmp.x += pos.z * raf[1]._31 * rabf[1]._32;
4028 else for (i = 0; i < ran[1]._32; i++) tmp.y += pos.y * raf[1]._32 * ranf[1]._32;
4029 return tmp;
4030}
4031#endif
4033{
40340xfffe0300, 0x00b6fffe, 0x42415443, 0x0000001c, 0x000002a3, 0xfffe0300, 0x00000005, 0x0000001c,
40350x00000100, 0x0000029c, 0x00000080, 0x00000000, 0x0000000c, 0x00000084, 0x00000094, 0x000000c4,
40360x00060002, 0x00000006, 0x000000cc, 0x000000dc, 0x0000013c, 0x00000002, 0x00000006, 0x00000140,
40370x00000150, 0x000001b0, 0x00000001, 0x0000000c, 0x000001b4, 0x000001c4, 0x00000224, 0x000c0002,
40380x00000006, 0x0000022c, 0x0000023c, 0x00626172, 0x00010002, 0x00020003, 0x00000002, 0x00000000,
40390xffffffff, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0xffffffff, 0x00000000, 0x00000000,
40400xffffffff, 0xffffffff, 0x00000000, 0xffffffff, 0x66626172, 0xababab00, 0x00010002, 0x00020003,
40410x00000002, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000,
40420x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000,
40430x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000,
40440x00000000, 0x00000000, 0x00666172, 0x00030002, 0x00020003, 0x00000002, 0x00000000, 0x3fc00000,
40450x40333333, 0x00000000, 0x00000000, 0x40533333, 0x409ccccd, 0x00000000, 0x00000000, 0x40bccccd,
40460x40d9999a, 0x00000000, 0x00000000, 0x40fccccd, 0x41080000, 0x00000000, 0x00000000, 0x41166666,
40470x3fa66666, 0x00000000, 0x00000000, 0x3f99999a, 0x3f8ccccd, 0x00000000, 0x00000000, 0x006e6172,
40480x00020002, 0x00020003, 0x00000002, 0x00000000, 0x00000004, 0x00000005, 0x00000001, 0x00000000,
40490x00000006, 0x00000001, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000000,
40500x00000005, 0x00000003, 0x00000001, 0x00000000, 0x00000009, 0x00000006, 0x00000001, 0x00000000,
40510x00000007, 0x00000003, 0x00000001, 0x00000000, 0x666e6172, 0xababab00, 0x00020002, 0x00020003,
40520x00000002, 0x00000000, 0x420c0000, 0x42200000, 0x00000000, 0x00000000, 0x42700000, 0x42a00000,
40530x00000000, 0x00000000, 0x428c0000, 0x42600000, 0x00000000, 0x00000000, 0x42140000, 0x41500000,
40540x00000000, 0x00000000, 0x42c40000, 0x42580000, 0x00000000, 0x00000000, 0x429a0000, 0x42100000,
40550x00000000, 0x00000000, 0x335f7376, 0x4d00305f, 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820,
40560x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970, 0x2e392072, 0x392e3932, 0x332e3235, 0x00313131,
40570x05000051, 0xa00f0012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
40580x900f0000, 0x0200001f, 0x80000000, 0xe00f0000, 0x01000028, 0xe0e4080b, 0x03000005, 0x80010000,
40590xa0000005, 0x90aa0000, 0x02000001, 0x80010001, 0xa0000012, 0x01000026, 0xf0e4000a, 0x04000004,
40600x80010001, 0x80000000, 0xa055000b, 0x80000001, 0x00000027, 0x02000001, 0x80020001, 0xa0000012,
40610x0000002a, 0x03000005, 0x80010000, 0xa0550005, 0x90550000, 0x02000001, 0x80020001, 0xa0000012,
40620x01000026, 0xf0e4000b, 0x04000004, 0x80020001, 0x80000000, 0xa0550011, 0x80550001, 0x00000027,
40630x02000001, 0x80010001, 0xa0000012, 0x0000002b, 0x02000001, 0xe0030000, 0x80e40001, 0x02000001,
40640xe00c0000, 0xa0000012, 0x0000ffff,
4065};
4066
4068{
4069 {"raf", {"raf", D3DXRS_FLOAT4, 0, 6, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 3, 2, 2, 0, 48, NULL}, 84},
4070 {"raf[0]", {"raf", D3DXRS_FLOAT4, 0, 3, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 3, 2, 1, 0, 24, NULL}, 84},
4071 {"raf[1]", {"raf", D3DXRS_FLOAT4, 3, 3, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 3, 2, 1, 0, 24, NULL}, 96},
4072};
4073
4075{
4076 {SetInt},
4077 {SetBool},
4078 {SetFloat},
4079 {SetIntArray, 1, 0, 5},
4080 {SetIntArray, 1, 6, 11, 12,
4081 {0x40000000, 0x40400000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000, 0x00000000,
4082 0x00000000, 0x40e00000}},
4083 {SetIntArray, 1, 12, REGISTER_OUTPUT_SIZE, 24,
4084 {0x40000000, 0x40400000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000, 0x00000000,
4085 0x00000000, 0x40e00000, 0x00000000, 0x00000000, 0x41000000, 0x41100000, 0x00000000, 0x00000000,
4086 0x41200000, 0x41300000, 0x00000000, 0x00000000, 0x41400000, 0x41500000}},
4087 {SetBoolArray, 1, 0, 5},
4088 {SetBoolArray, 1, 6, 11, 12,
4089 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4090 0x00000000, 0x3f800000}},
4092 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4093 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4094 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
4095 {SetFloatArray, 0, 0, 5},
4096 {SetFloatArray, 0, 6, 11, 12,
4097 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000, 0x00000000,
4098 0x40c00123, 0x40e00123}},
4100 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000, 0x00000000,
4101 0x40c00123, 0x40e00123, 0x00000000, 0x00000000, 0x41000123, 0x41100123, 0x00000000, 0x00000000,
4102 0x41200123, 0x41300123, 0x00000000, 0x00000000, 0x41400123, 0x41500123}},
4103 {SetValue, 0, 0, 23},
4104 {SetValue, 0, 24, 47, 12,
4105 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000, 0x00000000,
4106 0x40c00123, 0x40e00123}},
4107 {SetValue, 0, 48, REGISTER_OUTPUT_SIZE * 4, 24,
4108 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000, 0x00000000,
4109 0x40c00123, 0x40e00123, 0x00000000, 0x00000000, 0x41000123, 0x41100123, 0x00000000, 0x00000000,
4110 0x41200123, 0x41300123, 0x00000000, 0x00000000, 0x41400123, 0x41500123}},
4111 {SetVector},
4112 {SetVectorArray, 0, 0, 2},
4113 {SetVectorArray, 0, 3, 5, 12,
4114 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40c00123, 0x40e00123, 0x00000000, 0x00000000,
4115 0x41200123, 0x41300123}},
4116 {SetVectorArray, 0, 6, REGISTER_OUTPUT_SIZE / 4, 24,
4117 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40c00123, 0x40e00123, 0x00000000, 0x00000000,
4118 0x41200123, 0x41300123, 0x00000000, 0x00000000, 0x41600123, 0x41700123, 0x00000000, 0x00000000,
4119 0x41a00123, 0x41b00123, 0x00000000, 0x00000000, 0x00000000, 0x41f00123}},
4120 {SetMatrix, 0, 0, 0, 12,
4121 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40c00123, 0x40e00123, 0x00000000, 0x00000000,
4122 0x41200123, 0x41300123}},
4124 {SetMatrixArray, 0, 1, 1, 12,
4125 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40c00123, 0x40e00123, 0x00000000, 0x00000000,
4126 0x41200123, 0x41300123}},
4127 {SetMatrixArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 24,
4128 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40c00123, 0x40e00123, 0x00000000, 0x00000000,
4129 0x41200123, 0x41300123, 0x00000000, 0x00000000, 0x41a00123, 0x41b00123, 0x00000000, 0x00000000,
4130 0x00000000, 0x41f00123, 0x00000000, 0x00000000, 0x00000000, 0x42300123}},
4131 {SetMatrixTranspose, 0, 0, 0, 12,
4132 {0x40000123, 0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x00000000, 0x00000000,
4133 0x40800123, 0x41000123}},
4135 {SetMatrixTransposeArray, 0, 1, 1, 12,
4136 {0x40000123, 0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x00000000, 0x00000000,
4137 0x40800123, 0x41000123}},
4139 {0x40000123, 0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x00000000, 0x00000000,
4140 0x40800123, 0x41000123, 0x00000000, 0x00000000, 0x41a00123, 0x00000000, 0x00000000, 0x00000000,
4141 0x41b00123, 0x41f00123, 0x00000000, 0x00000000, 0x41c00123, 0x42000123}},
4143 {SetMatrixPointerArray, 0, 1, 1, 12,
4144 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40c00123, 0x40e00123, 0x00000000, 0x00000000,
4145 0x41200123, 0x41300123}},
4147 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40c00123, 0x40e00123, 0x00000000, 0x00000000,
4148 0x41200123, 0x41300123, 0x00000000, 0x00000000, 0x41900123, 0x41a00123, 0x00000000, 0x00000000,
4149 0x41d00123, 0x00000000, 0x00000000, 0x00000000, 0x42100123, 0x00000000}},
4151 {SetMatrixTransposePointerArray, 0, 1, 1, 12,
4152 {0x40000123, 0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x00000000, 0x00000000,
4153 0x40800123, 0x41000123}},
4155 {0x40000123, 0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x00000000, 0x00000000,
4156 0x40800123, 0x41000123, 0x00000000, 0x00000000, 0x41900123, 0x41d00123, 0x00000000, 0x00000000,
4157 0x41a00123, 0x00000000, 0x00000000, 0x00000000, 0x41b00123, 0x41f00123}},
4158};
4159
4161{
4162 {"ran", {"ran", D3DXRS_INT4, 0, 12, D3DXPC_MATRIX_ROWS, D3DXPT_INT, 3, 2, 2, 0, 48, NULL}, 113},
4163 {"ran[0]", {"ran", D3DXRS_INT4, 0, 3, D3DXPC_MATRIX_ROWS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 113},
4164 {"ran[1]", {"ran", D3DXRS_INT4, 3, 3, D3DXPC_MATRIX_ROWS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 125},
4165};
4166
4168{
4169 {SetInt},
4170 {SetBool},
4171 {SetFloat},
4172 {SetIntArray, 1, 0, 5},
4173 {SetIntArray, 1, 6, 11, 12,
4174 {0x00000002, 0x00000003, 0x00000001, 0x00000000, 0x00000004, 0x00000005, 0x00000001, 0x00000000,
4175 0x00000000, 0x00000007, 0x00000001}},
4176 {SetIntArray, 1, 12, REGISTER_OUTPUT_SIZE, 24,
4177 {0x00000002, 0x00000003, 0x00000001, 0x00000000, 0x00000004, 0x00000005, 0x00000001, 0x00000000,
4178 0x00000000, 0x00000007, 0x00000001, 0x00000000, 0x00000008, 0x00000009, 0x00000001, 0x00000000,
4179 0x0000000a, 0x0000000b, 0x00000001, 0x00000000, 0x0000000c, 0x0000000d, 0x00000001}},
4180 {SetBoolArray, 1, 0, 5},
4181 {SetBoolArray, 1, 6, 11, 12,
4182 {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000000,
4183 0x00000000, 0x00000001, 0x00000001}},
4185 {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000000,
4186 0x00000000, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000000,
4187 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001}},
4188 {SetFloatArray, 0, 0, 5},
4189 {SetFloatArray, 0, 6, 11, 12,
4190 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000004, 0x00000005, 0x00000001, 0x00000000,
4191 0x00000006, 0x00000007, 0x00000001}},
4193 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000004, 0x00000005, 0x00000001, 0x00000000,
4194 0x00000006, 0x00000007, 0x00000001, 0x00000000, 0x00000008, 0x00000009, 0x00000001, 0x00000000,
4195 0x0000000a, 0x0000000b, 0x00000001, 0x00000000, 0x0000000c, 0x0000000d, 0x00000001}},
4196 {SetValue, 1, 0, 23},
4197 {SetValue, 1, 24, 47, 12,
4198 {0x00000002, 0x00000003, 0x00000001, 0x00000000, 0x00000004, 0x00000005, 0x00000001, 0x00000000,
4199 0x00000000, 0x00000007, 0x00000001}},
4200 {SetValue, 1, 48, REGISTER_OUTPUT_SIZE * 4, 24,
4201 {0x00000002, 0x00000003, 0x00000001, 0x00000000, 0x00000004, 0x00000005, 0x00000001, 0x00000000,
4202 0x00000000, 0x00000007, 0x00000001, 0x00000000, 0x00000008, 0x00000009, 0x00000001, 0x00000000,
4203 0x0000000a, 0x0000000b, 0x00000001, 0x00000000, 0x0000000c, 0x0000000d, 0x00000001}},
4204 {SetVector},
4205 {SetVectorArray, 0, 0, 2},
4206 {SetVectorArray, 0, 3, 5, 12,
4207 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000006, 0x00000007, 0x00000001, 0x00000000,
4208 0x0000000a, 0x0000000b, 0x00000001}},
4209 {SetVectorArray, 0, 6, REGISTER_OUTPUT_SIZE / 4, 24,
4210 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000006, 0x00000007, 0x00000001, 0x00000000,
4211 0x0000000a, 0x0000000b, 0x00000001, 0x00000000, 0x0000000e, 0x0000000f, 0x00000001, 0x00000000,
4212 0x00000014, 0x00000016, 0x00000001, 0x00000000, 0x00000000, 0x0000001e, 0x00000001}},
4213 {SetMatrix, 0, 0, 0, 12,
4214 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000006, 0x00000007, 0x00000001, 0x00000000,
4215 0x0000000a, 0x0000000b, 0x00000001}},
4217 {SetMatrixArray, 0, 1, 1, 12,
4218 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000006, 0x00000007, 0x00000001, 0x00000000,
4219 0x0000000a, 0x0000000b, 0x00000001}},
4220 {SetMatrixArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 24,
4221 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000006, 0x00000007, 0x00000001, 0x00000000,
4222 0x0000000a, 0x0000000b, 0x00000001, 0x00000000, 0x00000014, 0x00000016, 0x00000001, 0x00000000,
4223 0x00000000, 0x0000001e, 0x00000001, 0x00000000, 0x00000000, 0x0000002c, 0x00000001}},
4224 {SetMatrixTranspose, 0, 0, 0, 12,
4225 {0x00000002, 0x00000006, 0x00000001, 0x00000000, 0x00000000, 0x00000007, 0x00000001, 0x00000000,
4226 0x00000004, 0x00000008, 0x00000001}},
4228 {SetMatrixTransposeArray, 0, 1, 1, 12,
4229 {0x00000002, 0x00000006, 0x00000001, 0x00000000, 0x00000000, 0x00000007, 0x00000001, 0x00000000,
4230 0x00000004, 0x00000008, 0x00000001}},
4232 {0x00000002, 0x00000006, 0x00000001, 0x00000000, 0x00000000, 0x00000007, 0x00000001, 0x00000000,
4233 0x00000004, 0x00000008, 0x00000001, 0x00000000, 0x00000014, 0x00000000, 0x00000001, 0x00000000,
4234 0x00000016, 0x0000001e, 0x00000001, 0x00000000, 0x00000018, 0x00000020, 0x00000001}},
4236 {SetMatrixPointerArray, 0, 1, 1, 12,
4237 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000006, 0x00000007, 0x00000001, 0x00000000,
4238 0x0000000a, 0x0000000b, 0x00000001}},
4240 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000006, 0x00000007, 0x00000001, 0x00000000,
4241 0x0000000a, 0x0000000b, 0x00000001, 0x00000000, 0x00000012, 0x00000014, 0x00000001, 0x00000000,
4242 0x0000001a, 0x00000000, 0x00000001, 0x00000000, 0x00000024, 0x00000000, 0x00000001}},
4244 {SetMatrixTransposePointerArray, 0, 1, 1, 12,
4245 {0x00000002, 0x00000006, 0x00000001, 0x00000000, 0x00000000, 0x00000007, 0x00000001, 0x00000000,
4246 0x00000004, 0x00000008, 0x00000001}},
4248 {0x00000002, 0x00000006, 0x00000001, 0x00000000, 0x00000000, 0x00000007, 0x00000001, 0x00000000,
4249 0x00000004, 0x00000008, 0x00000001, 0x00000000, 0x00000012, 0x0000001a, 0x00000001, 0x00000000,
4250 0x00000014, 0x00000000, 0x00000001, 0x00000000, 0x00000016, 0x0000001e, 0x00000001}},
4251};
4252
4254{
4255 {"rab", {"rab", D3DXRS_BOOL, 0, 12, D3DXPC_MATRIX_ROWS, D3DXPT_BOOL, 3, 2, 2, 0, 48, NULL}, 37},
4256 {"rab[0]", {"rab", D3DXRS_BOOL, 0, 6, D3DXPC_MATRIX_ROWS, D3DXPT_BOOL, 3, 2, 1, 0, 24, NULL}, 37},
4257 {"rab[1]", {"rab", D3DXRS_BOOL, 6, 6, D3DXPC_MATRIX_ROWS, D3DXPT_BOOL, 3, 2, 1, 0, 24, NULL}, 43},
4258};
4259
4261{
4262 {SetInt},
4263 {SetBool},
4264 {SetFloat},
4265 {SetIntArray, 1, 0, 5,},
4266 {SetIntArray, 1, 6, 11, 6,
4267 {0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001}},
4268 {SetIntArray, 1, 12, REGISTER_OUTPUT_SIZE, 12,
4269 {0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001,
4270 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
4271 {SetBoolArray, 1, 0, 5},
4272 {SetBoolArray, 1, 6, 11, 6,
4273 {0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000000, 0x00000007}},
4275 {0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000000, 0x00000007, 0x00000008, 0x00000009,
4276 0x0000000a, 0x0000000b, 0x0000000c, 0x0000000d}},
4277 {SetFloatArray, 0, 0, 5},
4278 {SetFloatArray, 0, 6, 11, 6,
4279 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
4281 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
4282 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
4283 {SetValue, 1, 0, 23},
4284 {SetValue, 1, 24, 47, 6,
4285 {0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000000, 0x00000007}},
4286 {SetValue, 1, 48, REGISTER_OUTPUT_SIZE * 4, 12,
4287 {0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000000, 0x00000007, 0x00000008, 0x00000009,
4288 0x0000000a, 0x0000000b, 0x0000000c, 0x0000000d}},
4289 {SetVector},
4290 {SetVectorArray, 0, 0, 2},
4291 {SetVectorArray, 0, 3, 5, 6,
4292 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
4293 {SetVectorArray, 0, 6, REGISTER_OUTPUT_SIZE / 4, 12,
4294 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
4295 0x00000001, 0x00000001, 0x00000000, 0x00000001}},
4296 {SetMatrix, 0, 0, 0, 6,
4297 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
4299 {SetMatrixArray, 0, 1, 1, 6,
4300 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
4301 {SetMatrixArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 12,
4302 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
4303 0x00000000, 0x00000001, 0x00000000, 0x00000001}},
4304 {SetMatrixTranspose, 0, 0, 0, 6,
4305 {0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001}},
4307 {SetMatrixTransposeArray, 0, 1, 1, 6,
4308 {0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001}},
4310 {0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000000,
4311 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
4313 {SetMatrixPointerArray, 0, 1, 1, 6,
4314 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
4316 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
4317 0x00000001, 0x00000000, 0x00000001, 0x00000000}},
4319 {SetMatrixTransposePointerArray, 0, 1, 1, 6,
4320 {0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001}},
4322 {0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
4323 0x00000001, 0x00000000, 0x00000001, 0x00000001}},
4324};
4325
4327{
4328 {"ranf", {"ranf", D3DXRS_FLOAT4, 12, 6, D3DXPC_MATRIX_ROWS, D3DXPT_INT, 3, 2, 2, 0, 48, NULL}, 143},
4329 {"ranf[0]", {"ranf", D3DXRS_FLOAT4, 12, 3, D3DXPC_MATRIX_ROWS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 143},
4330 {"ranf[1]", {"ranf", D3DXRS_FLOAT4, 15, 3, D3DXPC_MATRIX_ROWS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 155},
4331};
4332
4334{
4335 {SetInt},
4336 {SetBool},
4337 {SetFloat},
4338 {SetIntArray, 1, 0, 5},
4339 {SetIntArray, 1, 6, 11, 12,
4340 {0x40000000, 0x40400000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000, 0x00000000,
4341 0x00000000, 0x40e00000,}},
4342 {SetIntArray, 1, 12, REGISTER_OUTPUT_SIZE, 24,
4343 {0x40000000, 0x40400000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000, 0x00000000,
4344 0x00000000, 0x40e00000, 0x00000000, 0x00000000, 0x41000000, 0x41100000, 0x00000000, 0x00000000,
4345 0x41200000, 0x41300000, 0x00000000, 0x00000000, 0x41400000, 0x41500000}},
4346 {SetBoolArray, 1, 0, 5},
4347 {SetBoolArray, 1, 6, 11, 12,
4348 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4349 0x00000000, 0x3f800000}},
4351 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4352 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4353 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
4354 {SetFloatArray, 0, 0, 5},
4355 {SetFloatArray, 0, 6, 11, 12,
4356 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000, 0x00000000,
4357 0x40c00000, 0x40e00000}},
4359 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000, 0x00000000,
4360 0x40c00000, 0x40e00000, 0x00000000, 0x00000000, 0x41000000, 0x41100000, 0x00000000, 0x00000000,
4361 0x41200000, 0x41300000, 0x00000000, 0x00000000, 0x41400000, 0x41500000}},
4362 {SetValue, 1, 0, 23},
4363 {SetValue, 1, 24, 47, 12,
4364 {0x40000000, 0x40400000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000, 0x00000000,
4365 0x00000000, 0x40e00000}},
4366 {SetValue, 1, 48, REGISTER_OUTPUT_SIZE * 4, 24,
4367 {0x40000000, 0x40400000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000, 0x00000000,
4368 0x00000000, 0x40e00000, 0x00000000, 0x00000000, 0x41000000, 0x41100000, 0x00000000, 0x00000000,
4369 0x41200000, 0x41300000, 0x00000000, 0x00000000, 0x41400000, 0x41500000}},
4370 {SetVector},
4371 {SetVectorArray, 0, 0, 2},
4372 {SetVectorArray, 0, 3, 5, 12,
4373 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40c00000, 0x40e00000, 0x00000000, 0x00000000,
4374 0x41200000, 0x41300000}},
4375 {SetVectorArray, 0, 6, REGISTER_OUTPUT_SIZE / 4, 24,
4376 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40c00000, 0x40e00000, 0x00000000, 0x00000000,
4377 0x41200000, 0x41300000, 0x00000000, 0x00000000, 0x41600000, 0x41700000, 0x00000000, 0x00000000,
4378 0x41a00000, 0x41b00000, 0x00000000, 0x00000000, 0x00000000, 0x41f00000}},
4379 {SetMatrix, 0, 0, 0, 12,
4380 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40c00000, 0x40e00000, 0x00000000, 0x00000000,
4381 0x41200000, 0x41300000}},
4383 {SetMatrixArray, 0, 1, 1, 12,
4384 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40c00000, 0x40e00000, 0x00000000, 0x00000000,
4385 0x41200000, 0x41300000}},
4386 {SetMatrixArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 24,
4387 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40c00000, 0x40e00000, 0x00000000, 0x00000000,
4388 0x41200000, 0x41300000, 0x00000000, 0x00000000, 0x41a00000, 0x41b00000, 0x00000000, 0x00000000,
4389 0x00000000, 0x41f00000, 0x00000000, 0x00000000, 0x00000000, 0x42300000}},
4390 {SetMatrixTranspose, 0, 0, 0, 12,
4391 {0x40000000, 0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x00000000, 0x00000000,
4392 0x40800000, 0x41000000}},
4394 {SetMatrixTransposeArray, 0, 1, 1, 12,
4395 {0x40000000, 0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x00000000, 0x00000000,
4396 0x40800000, 0x41000000}},
4398 {0x40000000, 0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x00000000, 0x00000000,
4399 0x40800000, 0x41000000, 0x00000000, 0x00000000, 0x41a00000, 0x00000000, 0x00000000, 0x00000000,
4400 0x41b00000, 0x41f00000, 0x00000000, 0x00000000, 0x41c00000, 0x42000000}},
4402 {SetMatrixPointerArray, 0, 1, 1, 12,
4403 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40c00000, 0x40e00000, 0x00000000, 0x00000000,
4404 0x41200000, 0x41300000}},
4406 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40c00000, 0x40e00000, 0x00000000, 0x00000000,
4407 0x41200000, 0x41300000, 0x00000000, 0x00000000, 0x41900000, 0x41a00000, 0x00000000, 0x00000000,
4408 0x41d00000, 0x00000000, 0x00000000, 0x00000000, 0x42100000, 0x00000000}},
4410 {SetMatrixTransposePointerArray, 0, 1, 1, 12,
4411 {0x40000000, 0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x00000000, 0x00000000,
4412 0x40800000, 0x41000000}},
4414 {0x40000000, 0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x00000000, 0x00000000,
4415 0x40800000, 0x41000000, 0x00000000, 0x00000000, 0x41900000, 0x41d00000, 0x00000000, 0x00000000,
4416 0x41a00000, 0x00000000, 0x00000000, 0x00000000, 0x41b00000, 0x41f00000}},
4417};
4418
4420{
4421 {"rabf", {"rabf", D3DXRS_FLOAT4, 6, 6, D3DXPC_MATRIX_ROWS, D3DXPT_BOOL, 3, 2, 2, 0, 48, NULL}, 55},
4422 {"rabf[0]", {"rabf", D3DXRS_FLOAT4, 6, 3, D3DXPC_MATRIX_ROWS, D3DXPT_BOOL, 3, 2, 1, 0, 24, NULL}, 55},
4423 {"rabf[1]", {"rabf", D3DXRS_FLOAT4, 9, 3, D3DXPC_MATRIX_ROWS, D3DXPT_BOOL, 3, 2, 1, 0, 24, NULL}, 67},
4424};
4425
4427{
4428 {SetInt},
4429 {SetBool},
4430 {SetFloat},
4431 {SetIntArray, 1, 0, 5},
4432 {SetIntArray, 1, 6, 11, 12,
4433 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4434 0x00000000, 0x3f800000}},
4435 {SetIntArray, 1, 12, REGISTER_OUTPUT_SIZE, 24,
4436 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4437 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4438 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
4439 {SetBoolArray, 1, 0, 5},
4440 {SetBoolArray, 1, 6, 11, 12,
4441 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4442 0x00000000, 0x3f800000}},
4444 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4445 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4446 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
4447 {SetFloatArray, 0, 0, 5},
4448 {SetFloatArray, 0, 6, 11, 12,
4449 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4450 0x3f800000, 0x3f800000}},
4452 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4453 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4454 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
4455 {SetValue, 1, 0, 23},
4456 {SetValue, 1, 24, 47, 12,
4457 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4458 0x00000000, 0x3f800000}},
4459 {SetValue, 1, 48, REGISTER_OUTPUT_SIZE * 4, 24,
4460 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4461 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4462 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
4463 {SetVector},
4464 {SetVectorArray, 0, 0, 2},
4465 {SetVectorArray, 0, 3, 5, 12,
4466 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4467 0x3f800000, 0x3f800000}},
4468 {SetVectorArray, 0, 6, REGISTER_OUTPUT_SIZE / 4, 24,
4469 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4470 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4471 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000}},
4472 {SetMatrix, 0, 0, 0, 12,
4473 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4474 0x3f800000, 0x3f800000}},
4476 {SetMatrixArray, 0, 1, 1, 12,
4477 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4478 0x3f800000, 0x3f800000}},
4479 {SetMatrixArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 24,
4480 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4481 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4482 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000}},
4483 {SetMatrixTranspose, 0, 0, 0, 12,
4484 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000,
4485 0x3f800000, 0x3f800000}},
4487 {SetMatrixTransposeArray, 0, 1, 1, 12,
4488 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000,
4489 0x3f800000, 0x3f800000}},
4491 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000,
4492 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000,
4493 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
4495 {SetMatrixPointerArray, 0, 1, 1, 12,
4496 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4497 0x3f800000, 0x3f800000}},
4499 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4500 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4501 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000}},
4503 {SetMatrixTransposePointerArray, 0, 1, 1, 12,
4504 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000,
4505 0x3f800000, 0x3f800000}},
4507 {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000,
4508 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
4509 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
4510};
4511
4512/*
4513 * fxc.exe /Tvs_3_0
4514 */
4515#if 0
4516struct {bool b; bool3 vb;} sb = {1, 1, 0, 1};
4517struct {int n; int3 vn;} sn = {11, 12, 13, 14};
4518struct {float f; float3 vf;} sf = {1.1f, 2.2f, 3.3f, 4.4f};
4519struct {int nf; int3 vnf;} snf = {31, 32, 33, 34};
4520struct {bool bf; bool3 vbf;} sbf = {1, 0, 0, 1};
4521float4 main(float4 pos : POSITION) : POSITION
4522{
4523 float4 tmp = 0;
4524 int i;
4525 if (sb.vb.z) for (i = 0; i < sn.n; i++) tmp.x += pos.z * sf.vf.x * snf.vnf.z;
4526 else for (i = 0; i < sn.vn.z; i++) tmp.y += pos.y * sf.vf.z * sbf.vbf.y;
4527 return tmp;
4528}
4529#endif
4531{
45320xfffe0300, 0x00a2fffe, 0x42415443, 0x0000001c, 0x00000253, 0xfffe0300, 0x00000005, 0x0000001c,
45330x00000100, 0x0000024c, 0x00000080, 0x00000000, 0x00000004, 0x000000bc, 0x000000cc, 0x000000dc,
45340x00040002, 0x00000002, 0x000000f8, 0x00000108, 0x00000128, 0x00000002, 0x00000002, 0x00000164,
45350x00000174, 0x00000194, 0x00000001, 0x00000004, 0x000001d0, 0x000001e0, 0x00000200, 0x00020002,
45360x00000002, 0x0000021c, 0x0000022c, 0x62006273, 0xababab00, 0x00010000, 0x00010001, 0x00000001,
45370x00000000, 0xab006276, 0x00010001, 0x00030001, 0x00000001, 0x00000000, 0x00000083, 0x00000088,
45380x00000098, 0x0000009c, 0x00000005, 0x00040001, 0x00020001, 0x000000ac, 0xffffffff, 0xffffffff,
45390x00000000, 0xffffffff, 0x00666273, 0x76006662, 0xab006662, 0x000000e0, 0x00000088, 0x000000e3,
45400x0000009c, 0x00000005, 0x00040001, 0x00020001, 0x000000e8, 0x3f800000, 0x00000000, 0x00000000,
45410x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x66006673, 0xababab00, 0x00030000,
45420x00010001, 0x00000001, 0x00000000, 0xab006676, 0x00030001, 0x00030001, 0x00000001, 0x00000000,
45430x0000012b, 0x00000130, 0x00000140, 0x00000144, 0x00000005, 0x00040001, 0x00020001, 0x00000154,
45440x3f8ccccd, 0x00000000, 0x00000000, 0x00000000, 0x400ccccd, 0x40533333, 0x408ccccd, 0x00000000,
45450x6e006e73, 0xababab00, 0x00020000, 0x00010001, 0x00000001, 0x00000000, 0xab006e76, 0x00020001,
45460x00030001, 0x00000001, 0x00000000, 0x00000197, 0x0000019c, 0x000001ac, 0x000001b0, 0x00000005,
45470x00040001, 0x00020001, 0x000001c0, 0x0000000b, 0x00000000, 0x00000001, 0x00000000, 0x0000000c,
45480x0000000d, 0x0000000e, 0x00000000, 0x00666e73, 0x7600666e, 0xab00666e, 0x00000204, 0x0000019c,
45490x00000207, 0x000001b0, 0x00000005, 0x00040001, 0x00020001, 0x0000020c, 0x41f80000, 0x00000000,
45500x00000000, 0x00000000, 0x42000000, 0x42040000, 0x42080000, 0x00000000, 0x335f7376, 0x4d00305f,
45510x6f726369, 0x74666f73, 0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970,
45520x2e392072, 0x392e3932, 0x332e3235, 0x00313131, 0x05000051, 0xa00f0006, 0x00000000, 0x00000000,
45530x00000000, 0x00000000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x80000000, 0xe00f0000,
45540x01000028, 0xe0e40803, 0x03000005, 0x80010000, 0xa0000001, 0x90aa0000, 0x02000001, 0x80010001,
45550xa0000006, 0x01000026, 0xf0e40000, 0x04000004, 0x80010001, 0x80000000, 0xa0aa0003, 0x80000001,
45560x00000027, 0x02000001, 0x80020001, 0xa0000006, 0x0000002a, 0x03000005, 0x80010000, 0xa0aa0001,
45570x90550000, 0x02000001, 0x80020001, 0xa0000006, 0x01000026, 0xf0e40003, 0x04000004, 0x80020001,
45580x80000000, 0xa0550005, 0x80550001, 0x00000027, 0x02000001, 0x80010001, 0xa0000006, 0x0000002b,
45590x02000001, 0xe0030000, 0x80e40001, 0x02000001, 0xe00c0000, 0xa0000006, 0x0000ffff,
4560};
4561
4563{
4564 {"sf", {"sf", D3DXRS_FLOAT4, 0, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 93},
4565 {"sf.f", {"f", D3DXRS_FLOAT4, 0, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL}, 93},
4566 {"sf.vf", {"vf", D3DXRS_FLOAT4, 1, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 97},
4567};
4568
4570{
4571 {SetInt},
4572 {SetBool},
4573 {SetFloat},
4574 {SetIntArray, 1, 0, 3},
4576 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40400000, 0x40800000, 0x40a00000, 0x00000000}},
4577 {SetBoolArray, 1, 0, 3},
4579 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
4580 {SetFloatArray, 0, 0, 3},
4582 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000}},
4583 {SetValue, 0, 0, 15},
4584 {SetValue, 0, 16, REGISTER_OUTPUT_SIZE * 4, 8,
4585 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000}},
4586 {SetVector, 0, 0, 0, 8,
4587 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000}},
4589 {SetVectorArray, 0, 1, REGISTER_OUTPUT_SIZE / 4, 8,
4590 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000}},
4591 {SetMatrix, 0, 0, 0, 8,
4592 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000}},
4594 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
4595 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000}},
4596 {SetMatrixTranspose, 0, 0, 0, 8,
4597 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4600 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4603 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4606 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4607};
4608
4610{
4611 {"sn", {"sn", D3DXRS_INT4, 0, 4, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 120},
4612 {"sn.n", {"n", D3DXRS_INT4, 0, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 120},
4613 {"sn.vn", {"vn", D3DXRS_INT4, 1, 1, D3DXPC_VECTOR, D3DXPT_INT, 1, 3, 1, 0, 12, NULL}, 124},
4614};
4615
4617{
4618 {SetInt},
4619 {SetBool},
4620 {SetFloat},
4621 {SetIntArray, 1, 0, 3},
4623 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000003, 0x00000004, 0x00000005, 0x00000000}},
4624 {SetBoolArray, 1, 0, 3},
4626 {0x00000001, 0x00000000, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000000}},
4627 {SetFloatArray, 0, 0, 3},
4629 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000004, 0x00000005, 0x00000000}},
4630 {SetValue, 1, 0, 15},
4631 {SetValue, 1, 16, REGISTER_OUTPUT_SIZE * 4, 8,
4632 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000003, 0x00000004, 0x00000005, 0x00000000}},
4633 {SetVector, 0, 0, 0, 8,
4634 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000004, 0x00000005, 0x00000000}},
4636 {SetVectorArray, 0, 1, REGISTER_OUTPUT_SIZE / 4, 8,
4637 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000004, 0x00000005, 0x00000000}},
4638 {SetMatrix, 0, 0, 0, 8,
4639 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000004, 0x00000005, 0x00000000}},
4641 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
4642 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000004, 0x00000005, 0x00000000}},
4643 {SetMatrixTranspose, 0, 0, 0, 8,
4644 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4647 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4650 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4653 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4654};
4655
4657{
4658 {"sb", {"sb", D3DXRS_BOOL, 0, 4, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 51},
4659 {"sb.b", {"b", D3DXRS_BOOL, 0, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 51},
4660 {"sb.vb", {"vb", D3DXRS_BOOL, 1, 3, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 1, 0, 12, NULL}, 52},
4661};
4662
4664{
4665 {SetInt},
4666 {SetBool},
4667 {SetFloat},
4668 {SetIntArray, 1, 0, 3},
4670 {0x00000001, 0x00000001, 0x00000001, 0x00000001}},
4671 {SetBoolArray, 1, 0, 3},
4673 {0x00000002, 0x00000003, 0x00000004, 0x00000005}},
4674 {SetFloatArray, 0, 0, 3},
4676 {0x00000001, 0x00000000, 0x00000001, 0x00000001}},
4677 {SetValue, 1, 0, 15},
4678 {SetValue, 1, 16, REGISTER_OUTPUT_SIZE * 4, 4,
4679 {0x00000002, 0x00000003, 0x00000004, 0x00000005}},
4680 {SetVector, 0, 0, 0, 4,
4681 {0x00000001, 0x00000000, 0x00000001, 0x00000001}},
4683 {SetVectorArray, 0, 1, REGISTER_OUTPUT_SIZE / 4, 4,
4684 {0x00000001, 0x00000000, 0x00000001, 0x00000001}},
4685 {SetMatrix, 0, 0, 0, 4,
4686 {0x00000001, 0x00000000, 0x00000001, 0x00000001}},
4688 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4,
4689 {0x00000001, 0x00000000, 0x00000001, 0x00000001}},
4690 {SetMatrixTranspose, 0, 0, 0, 4,
4691 {0x00000001, 0x00000001, 0x00000001, 0x00000001}},
4694 {0x00000001, 0x00000001, 0x00000001, 0x00000001}},
4697 {0x00000001, 0x00000000, 0x00000001, 0x00000001}},
4700 {0x00000001, 0x00000001, 0x00000001, 0x00000001}},
4701};
4702
4704{
4705 {"snf", {"snf", D3DXRS_FLOAT4, 2, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 139},
4706 {"snf.nf", {"nf", D3DXRS_FLOAT4, 2, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 139},
4707 {"snf.vnf", {"vnf", D3DXRS_FLOAT4, 3, 1, D3DXPC_VECTOR, D3DXPT_INT, 1, 3, 1, 0, 12, NULL}, 143},
4708};
4709
4711{
4712 {SetInt},
4713 {SetBool},
4714 {SetFloat},
4715 {SetIntArray, 1, 0, 3},
4717 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40400000, 0x40800000, 0x40a00000, 0x00000000}},
4718 {SetBoolArray, 1, 0, 3},
4720 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
4721 {SetFloatArray, 0, 0, 3},
4723 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000}},
4724 {SetValue, 1, 0, 15},
4725 {SetValue, 1, 16, REGISTER_OUTPUT_SIZE * 4, 8,
4726 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40400000, 0x40800000, 0x40a00000, 0x00000000}},
4727 {SetVector, 0, 0, 0, 8,
4728 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000}},
4730 {SetVectorArray, 0, 1, REGISTER_OUTPUT_SIZE / 4, 8,
4731 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000}},
4732 {SetMatrix, 0, 0, 0, 8,
4733 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000}},
4735 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
4736 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000}},
4737 {SetMatrixTranspose, 0, 0, 0, 8,
4738 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4741 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4744 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4747 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4748};
4749
4751{
4752 {"sbf", {"sbf", D3DXRS_FLOAT4, 4, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 66},
4753 {"sbf.bf", {"bf", D3DXRS_FLOAT4, 4, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 66},
4754 {"sbf.vbf", {"vbf", D3DXRS_FLOAT4, 5, 1, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 1, 0, 12, NULL}, 70},
4755};
4756
4758{
4759 {SetInt},
4760 {SetBool},
4761 {SetFloat},
4762 {SetIntArray, 1, 0, 3},
4764 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
4765 {SetBoolArray, 1, 0, 3},
4767 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
4768 {SetFloatArray, 0, 0, 3},
4770 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000}},
4771 {SetValue, 1, 0, 15},
4772 {SetValue, 1, 16, REGISTER_OUTPUT_SIZE * 4, 8,
4773 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
4774 {SetVector, 0, 0, 0, 8,
4775 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000}},
4777 {SetVectorArray, 0, 1, REGISTER_OUTPUT_SIZE / 4, 8,
4778 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000}},
4779 {SetMatrix, 0, 0, 0, 8,
4780 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000}},
4782 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
4783 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000}},
4784 {SetMatrixTranspose, 0, 0, 0, 8,
4785 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4788 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4791 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4794 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4795};
4796
4797/*
4798 * fxc.exe /Tvs_3_0
4799 */
4800#if 0
4801struct {bool b; bool3 vb;} sab[2] = {1, 1, 0, 1, 0, 1, 0, 1};
4802struct {int n; int3 vn;} san[2] = {21, 22, 23, 24, 25, 26, 27, 28};
4803struct {float f; float3 vf;} saf[2] = {1.1f, 2.1f, 3.1f, 4.1f, 5.1f, 6.1f, 7.1f, 8.1f};
4804struct {int nf; int3 vnf;} sanf[2] = {41, 0, 43, 44, 41, 42, 43, 44};
4805struct {bool bf; bool3 vbf;} sabf[2] = {1, 0, 0, 1, 1, 1, 0, 1};
4806float4 main(float4 pos : POSITION) : POSITION
4807{
4808 float4 tmp = 0;
4809 int i;
4810 if (sab[1].vb.z) for (i = 0; i < san[1].n; i++) tmp.x += pos.z * saf[1].vf.x * sanf[1].vnf.z;
4811 else for (i = 0; i < san[1].vn.z; i++) tmp.y += pos.y * saf[1].vf.z * sabf[1].vbf.y;
4812 return tmp;
4813}
4814#endif
4816{
48170xfffe0300, 0x00c6fffe, 0x42415443, 0x0000001c, 0x000002e3, 0xfffe0300, 0x00000005, 0x0000001c,
48180x00000100, 0x000002dc, 0x00000080, 0x00000000, 0x00000008, 0x000000bc, 0x000000cc, 0x000000ec,
48190x00080002, 0x00000004, 0x00000108, 0x00000118, 0x00000158, 0x00000002, 0x00000004, 0x00000194,
48200x000001a4, 0x000001e4, 0x00000001, 0x00000008, 0x00000220, 0x00000230, 0x00000270, 0x00040002,
48210x00000004, 0x0000028c, 0x0000029c, 0x00626173, 0xabab0062, 0x00010000, 0x00010001, 0x00000001,
48220x00000000, 0xab006276, 0x00010001, 0x00030001, 0x00000001, 0x00000000, 0x00000084, 0x00000088,
48230x00000098, 0x0000009c, 0x00000005, 0x00040001, 0x00020002, 0x000000ac, 0xffffffff, 0xffffffff,
48240x00000000, 0xffffffff, 0x00000000, 0xffffffff, 0x00000000, 0xffffffff, 0x66626173, 0x00666200,
48250x00666276, 0x000000f1, 0x00000088, 0x000000f4, 0x0000009c, 0x00000005, 0x00040001, 0x00020002,
48260x000000f8, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000,
48270x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000,
48280x00000000, 0x00666173, 0xabab0066, 0x00030000, 0x00010001, 0x00000001, 0x00000000, 0xab006676,
48290x00030001, 0x00030001, 0x00000001, 0x00000000, 0x0000015c, 0x00000160, 0x00000170, 0x00000174,
48300x00000005, 0x00040001, 0x00020002, 0x00000184, 0x3f8ccccd, 0x00000000, 0x00000000, 0x00000000,
48310x40066666, 0x40466666, 0x40833333, 0x00000000, 0x40a33333, 0x00000000, 0x00000000, 0x00000000,
48320x40c33333, 0x40e33333, 0x4101999a, 0x00000000, 0x006e6173, 0xabab006e, 0x00020000, 0x00010001,
48330x00000001, 0x00000000, 0xab006e76, 0x00020001, 0x00030001, 0x00000001, 0x00000000, 0x000001e8,
48340x000001ec, 0x000001fc, 0x00000200, 0x00000005, 0x00040001, 0x00020002, 0x00000210, 0x00000015,
48350x00000000, 0x00000001, 0x00000000, 0x00000016, 0x00000017, 0x00000018, 0x00000000, 0x00000019,
48360x00000000, 0x00000001, 0x00000000, 0x0000001a, 0x0000001b, 0x0000001c, 0x00000000, 0x666e6173,
48370x00666e00, 0x00666e76, 0x00000275, 0x000001ec, 0x00000278, 0x00000200, 0x00000005, 0x00040001,
48380x00020002, 0x0000027c, 0x42240000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x422c0000,
48390x42300000, 0x00000000, 0x42240000, 0x00000000, 0x00000000, 0x00000000, 0x42280000, 0x422c0000,
48400x42300000, 0x00000000, 0x335f7376, 0x4d00305f, 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820,
48410x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970, 0x2e392072, 0x392e3932, 0x332e3235, 0x00313131,
48420x05000051, 0xa00f000c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
48430x900f0000, 0x0200001f, 0x80000000, 0xe00f0000, 0x01000028, 0xe0e40807, 0x03000005, 0x80010000,
48440xa0000003, 0x90aa0000, 0x02000001, 0x80010001, 0xa000000c, 0x01000026, 0xf0e40004, 0x04000004,
48450x80010001, 0x80000000, 0xa0aa0007, 0x80000001, 0x00000027, 0x02000001, 0x80020001, 0xa000000c,
48460x0000002a, 0x03000005, 0x80010000, 0xa0aa0003, 0x90550000, 0x02000001, 0x80020001, 0xa000000c,
48470x01000026, 0xf0e40007, 0x04000004, 0x80020001, 0x80000000, 0xa055000b, 0x80550001, 0x00000027,
48480x02000001, 0x80010001, 0xa000000c, 0x0000002b, 0x02000001, 0xe0030000, 0x80e40001, 0x02000001,
48490xe00c0000, 0xa000000c, 0x0000ffff,
4850};
4851
4853{
4854 {"saf", {"saf", D3DXRS_FLOAT4, 0, 4, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 2, 2, 32, NULL}, 105},
4855 {"saf[0]", {"saf", D3DXRS_FLOAT4, 0, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 105},
4856 {"saf[0].f", {"f", D3DXRS_FLOAT4, 0, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL}, 105},
4857 {"saf[0].vf", {"vf", D3DXRS_FLOAT4, 1, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 109},
4858 {"saf[1]", {"saf", D3DXRS_FLOAT4, 2, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 113},
4859 {"saf[1].f", {"f", D3DXRS_FLOAT4, 2, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL}, 113},
4860 {"saf[1].vf", {"vf", D3DXRS_FLOAT4, 3, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 117},
4861};
4862
4864{
4865 {SetInt},
4866 {SetBool},
4867 {SetFloat},
4868 {SetIntArray, 1, 0, 3},
4869 {SetIntArray, 1, 4, 7, 8,
4870 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40400000, 0x40800000, 0x40a00000, 0x00000000}},
4872 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x41000000, 0x41100000, 0x00000000}},
4873 {SetBoolArray, 1, 0, 3},
4874 {SetBoolArray, 1, 4, 7, 8,
4875 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
4877 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
4878 {SetFloatArray, 0, 0, 3},
4879 {SetFloatArray, 0, 4, 7, 8,
4880 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000}},
4882 {0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x41000123, 0x41100123, 0x00000000}},
4883 {SetValue, 0, 0, 15},
4884 {SetValue, 0, 16, 31, 8,
4885 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000}},
4886 {SetValue, 0, 32, REGISTER_OUTPUT_SIZE * 4, 8,
4887 {0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x41000123, 0x41100123, 0x00000000}},
4888 {SetVector, 0, 0, 0, 8,
4889 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000}},
4891 {SetVectorArray, 0, 1, 1, 8,
4892 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000}},
4893 {SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 8,
4894 {0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x41000123, 0x41100123, 0x00000000}},
4895 {SetMatrix, 0, 0, 0, 8,
4896 {0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x41000123, 0x41100123, 0x00000000}},
4898 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
4899 {0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x41000123, 0x41100123, 0x00000000}},
4900 {SetMatrixTranspose, 0, 0, 0, 8,
4901 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4904 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4909};
4910
4912{
4913 {"san", {"san", D3DXRS_INT4, 0, 8, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 2, 2, 32, NULL}, 140},
4914 {"san[0]", {"san", D3DXRS_INT4, 0, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 140},
4915 {"san[0].n", {"n", D3DXRS_INT4, 0, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 140},
4916 {"san[0].vn", {"vn", D3DXRS_INT4, 1, 1, D3DXPC_VECTOR, D3DXPT_INT, 1, 3, 1, 0, 12, NULL}, 144},
4917 {"san[1]", {"san", D3DXRS_INT4, 2, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 148},
4918 {"san[1].n", {"n", D3DXRS_INT4, 2, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 148},
4919 {"san[1].vn", {"vn", D3DXRS_INT4, 3, 1, D3DXPC_VECTOR, D3DXPT_INT, 1, 3, 1, 0, 12, NULL}, 152},
4920};
4921
4923{
4924 {SetInt},
4925 {SetBool},
4926 {SetFloat},
4927 {SetIntArray, 1, 0, 3},
4928 {SetIntArray, 1, 4, 7, 8,
4929 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000003, 0x00000004, 0x00000005, 0x00000000}},
4931 {0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000007, 0x00000008, 0x00000009, 0x00000000}},
4932 {SetBoolArray, 1, 0, 3},
4933 {SetBoolArray, 1, 4, 7, 8,
4934 {0x00000001, 0x00000000, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000000}},
4936 {0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000000}},
4937 {SetFloatArray, 0, 0, 3},
4938 {SetFloatArray, 0, 4, 7, 8,
4939 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000004, 0x00000005, 0x00000000}},
4941 {0x00000006, 0x00000000, 0x00000001, 0x00000000, 0x00000007, 0x00000008, 0x00000009, 0x00000000}},
4942 {SetValue, 1, 0, 15},
4943 {SetValue, 1, 16, 31, 8,
4944 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000003, 0x00000004, 0x00000005, 0x00000000}},
4945 {SetValue, 1, 32, REGISTER_OUTPUT_SIZE * 4, 8,
4946 {0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000007, 0x00000008, 0x00000009, 0x00000000}},
4947 {SetVector, 0, 0, 0, 8,
4948 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000004, 0x00000005, 0x00000000}},
4950 {SetVectorArray, 0, 1, 1, 8,
4951 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000004, 0x00000005, 0x00000000}},
4952 {SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 8,
4953 {0x00000006, 0x00000000, 0x00000001, 0x00000000, 0x00000007, 0x00000008, 0x00000009, 0x00000000}},
4954 {SetMatrix, 0, 0, 0, 8,
4955 {0x00000006, 0x00000000, 0x00000001, 0x00000000, 0x00000007, 0x00000008, 0x00000009, 0x00000000},},
4957 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
4958 {0x00000006, 0x00000000, 0x00000001, 0x00000000, 0x00000007, 0x00000008, 0x00000009, 0x00000000}},
4959 {SetMatrixTranspose, 0, 0, 0, 8,
4960 {0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4963 {0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4966 {0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4969 {0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
4970};
4971
4973{
4974 {"sab", {"sab", D3DXRS_BOOL, 0, 8, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 2, 2, 32, NULL}, 51},
4975 {"sab[0]", {"sab", D3DXRS_BOOL, 0, 4, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 51},
4976 {"sab[0].b", {"b", D3DXRS_BOOL, 0, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 51},
4977 {"sab[0].vb", {"vb", D3DXRS_BOOL, 1, 3, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 1, 0, 12, NULL}, 52},
4978 {"sab[1]", {"sab", D3DXRS_BOOL, 4, 4, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 55},
4979 {"sab[1].b", {"b", D3DXRS_BOOL, 4, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 55},
4980 {"sab[1].vb", {"vb", D3DXRS_BOOL, 5, 3, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 1, 0, 12, NULL}, 56},
4981};
4982
4984{
4985 {SetInt},
4986 {SetBool},
4987 {SetFloat},
4988 {SetIntArray, 1, 0, 3},
4989 {SetIntArray, 1, 4, 7, 4,
4990 {0x00000001, 0x00000001, 0x00000001, 0x00000001}},
4992 {0x00000000, 0x00000001, 0x00000001, 0x00000001}},
4993 {SetBoolArray, 1, 0, 3},
4994 {SetBoolArray, 1, 4, 7, 4,
4995 {0x00000002, 0x00000003, 0x00000004, 0x00000005}},
4997 {0x00000000, 0x00000007, 0x00000008, 0x00000009}},
4998 {SetFloatArray, 0, 0, 3},
4999 {SetFloatArray, 0, 4, 7, 4,
5000 {0x00000001, 0x00000000, 0x00000001, 0x00000001}},
5002 {0x00000001, 0x00000001, 0x00000001, 0x00000001}},
5003 {SetValue, 1, 0, 15},
5004 {SetValue, 1, 16, 31, 4,
5005 {0x00000002, 0x00000003, 0x00000004, 0x00000005}},
5006 {SetValue, 1, 32, REGISTER_OUTPUT_SIZE * 4, 4,
5007 {0x00000000, 0x00000007, 0x00000008, 0x00000009}},
5008 {SetVector, 0, 0, 0, 4,
5009 {0x00000001, 0x00000000, 0x00000001, 0x00000001}},
5011 {SetVectorArray, 0, 1, 1, 4,
5012 {0x00000001, 0x00000000, 0x00000001, 0x00000001}},
5013 {SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 4,
5014 {0x00000001, 0x00000001, 0x00000001, 0x00000001}},
5015 {SetMatrix, 0, 0, 0, 4,
5016 {0x00000001, 0x00000001, 0x00000001, 0x00000001}},
5018 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4,
5019 {0x00000001, 0x00000001, 0x00000001, 0x00000001}},
5020 {SetMatrixTranspose, 0, 0, 0, 4,
5021 {0x00000000, 0x00000001, 0x00000001, 0x00000001}},
5024 {0x00000000, 0x00000001, 0x00000001, 0x00000001}},
5027 {0x00000001, 0x00000001, 0x00000001, 0x00000001}},
5030 {0x00000000, 0x00000001, 0x00000001, 0x00000001}},
5031};
5032
5034{
5035 {"sanf", {"sanf", D3DXRS_FLOAT4, 4, 4, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 2, 2, 32, NULL}, 167},
5036 {"sanf[0]", {"sanf", D3DXRS_FLOAT4, 4, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 167},
5037 {"sanf[0].nf", {"nf", D3DXRS_FLOAT4, 4, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 167},
5038 {"sanf[0].vnf", {"vnf", D3DXRS_FLOAT4, 5, 1, D3DXPC_VECTOR, D3DXPT_INT, 1, 3, 1, 0, 12, NULL}, 171},
5039 {"sanf[1]", {"sanf", D3DXRS_FLOAT4, 6, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 175},
5040 {"sanf[1].nf", {"nf", D3DXRS_FLOAT4, 6, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 175},
5041 {"sanf[1].vnf", {"vnf", D3DXRS_FLOAT4, 7, 1, D3DXPC_VECTOR, D3DXPT_INT, 1, 3, 1, 0, 12, NULL}, 179},
5042};
5043
5045{
5046 {SetInt},
5047 {SetBool},
5048 {SetFloat},
5049 {SetIntArray, 1, 0, 3},
5050 {SetIntArray, 1, 4, 7, 8,
5051 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40400000, 0x40800000, 0x40a00000, 0x00000000}},
5053 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x41000000, 0x41100000, 0x00000000}},
5054 {SetBoolArray, 1, 0, 3},
5055 {SetBoolArray, 1, 4, 7, 8,
5056 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
5058 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
5059 {SetFloatArray, 0, 0, 3},
5060 {SetFloatArray, 0, 4, 7, 8,
5061 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000}},
5063 {0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x41000000, 0x41100000, 0x00000000}},
5064 {SetValue, 1, 0, 15},
5065 {SetValue, 1, 16, 31, 8,
5066 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40400000, 0x40800000, 0x40a00000, 0x00000000}},
5067 {SetValue, 1, 32, REGISTER_OUTPUT_SIZE * 4, 8,
5068 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x41000000, 0x41100000, 0x00000000}},
5069 {SetVector, 0, 0, 0, 8,
5070 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000}},
5072 {SetVectorArray, 0, 1, 1, 8,
5073 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000}},
5074 {SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 8,
5075 {0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x41000000, 0x41100000, 0x00000000}},
5076 {SetMatrix, 0, 0, 0, 8,
5077 {0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x41000000, 0x41100000, 0x00000000}},
5079 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
5080 {0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x41000000, 0x41100000, 0x00000000}},
5081 {SetMatrixTranspose, 0, 0, 0, 8,
5082 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
5085 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
5090};
5091
5093{
5094 {"sabf", {"sabf", D3DXRS_FLOAT4, 8, 4, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 2, 2, 32, NULL}, 70},
5095 {"sabf[0]", {"sabf", D3DXRS_FLOAT4, 8, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 70},
5096 {"sabf[0].bf", {"bf", D3DXRS_FLOAT4, 8, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 70},
5097 {"sabf[0].vbf", {"vbf", D3DXRS_FLOAT4, 9, 1, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 1, 0, 12, NULL}, 74},
5098 {"sabf[1]", {"sabf", D3DXRS_FLOAT4, 10, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 78},
5099 {"sabf[1].bf", {"bf", D3DXRS_FLOAT4, 10, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 78},
5100 {"sabf[1].vbf", {"vbf", D3DXRS_FLOAT4, 11, 1, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 1, 0, 12, NULL}, 82},
5101};
5102
5104{
5105 {SetInt},
5106 {SetBool},
5107 {SetFloat},
5108 {SetIntArray, 1, 0, 3},
5109 {SetIntArray, 1, 4, 7, 8,
5110 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
5112 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
5113 {SetBoolArray, 1, 0, 3},
5114 {SetBoolArray, 1, 4, 7, 8,
5115 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
5117 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
5118 {SetFloatArray, 0, 0, 3},
5119 {SetFloatArray, 0, 4, 7, 8,
5120 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000}},
5122 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
5123 {SetValue, 1, 0, 15},
5124 {SetValue, 1, 16, 31, 8,
5125 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
5126 {SetValue, 1, 32, REGISTER_OUTPUT_SIZE * 4, 8,
5127 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
5128 {SetVector, 0, 0, 0, 8,
5129 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000}},
5131 {SetVectorArray, 0, 1, 1, 8,
5132 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000}},
5133 {SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 8,
5134 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
5135 {SetMatrix, 0, 0, 0, 8,
5136 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
5138 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
5139 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
5140 {SetMatrixTranspose, 0, 0, 0, 8,
5141 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
5144 {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
5149};
5150
5151/*
5152 * fxc.exe /Tvs_3_0
5153 */
5154#if 0
5155struct {bool b; struct {bool b; bool3 vb;} s; bool b1;} ssb = {1, 1, 0, 1, 1, 0};
5156struct {int n; struct {int n; int3 vn;} s; int n1;} ssn = {71, 72, 73, 74, 75, 76};
5157struct {float f; struct {float f; float3 vf;} s; float f1;} ssf = {1.1f, 2.1f, 3.1f, 4.1f, 5.1f, 6.1f};
5158struct {int nf; struct {int nf; int3 vnf;} s; int nf1;} ssnf = {41, 0, 43, 44, 41, 42};
5159struct {bool bf; struct {bool bf; bool3 vbf;} s; bool bf1;} ssbf = {1, 0, 0, 1, 1, 0};
5160float4 main(float4 pos : POSITION) : POSITION
5161{
5162 float4 tmp = 0;
5163 int i;
5164 if (ssb.b1) for (i = 0; i < ssn.n1; i++) tmp.x += pos.z * ssf.f1 * ssnf.nf1;
5165 else for (i = 0; i < ssn.s.vn.z; i++) tmp.y += pos.y * ssf.s.vf.z * ssbf.bf1;
5166 return tmp;
5167}
5168#endif
5170{
51710xfffe0300, 0x00fcfffe, 0x42415443, 0x0000001c, 0x000003bb, 0xfffe0300, 0x00000005, 0x0000001c,
51720x00000100, 0x000003b4, 0x00000080, 0x00000000, 0x00000006, 0x000000ec, 0x000000fc, 0x00000114,
51730x00080002, 0x00000004, 0x0000015c, 0x0000016c, 0x000001ac, 0x00000002, 0x00000004, 0x00000214,
51740x00000224, 0x00000264, 0x00000001, 0x00000006, 0x000002cc, 0x000002dc, 0x0000031c, 0x00040002,
51750x00000004, 0x00000364, 0x00000374, 0x00627373, 0xabab0062, 0x00010000, 0x00010001, 0x00000001,
51760x00000000, 0x62760073, 0xababab00, 0x00010001, 0x00030001, 0x00000001, 0x00000000, 0x00000084,
51770x00000088, 0x0000009a, 0x000000a0, 0x00000005, 0x00040001, 0x00020001, 0x000000b0, 0xab003162,
51780x00000084, 0x00000088, 0x00000098, 0x000000c0, 0x000000d0, 0x00000088, 0x00000005, 0x00060001,
51790x00030001, 0x000000d4, 0xffffffff, 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, 0x00000000,
51800x66627373, 0x00666200, 0x00666276, 0x00000119, 0x00000088, 0x0000011c, 0x000000a0, 0x00000005,
51810x00040001, 0x00020001, 0x00000120, 0x00316662, 0x00000119, 0x00000088, 0x00000098, 0x00000130,
51820x00000140, 0x00000088, 0x00000005, 0x00060001, 0x00030001, 0x00000144, 0x3f800000, 0x00000000,
51830x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000,
51840x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00667373, 0xabab0066,
51850x00030000, 0x00010001, 0x00000001, 0x00000000, 0xab006676, 0x00030001, 0x00030001, 0x00000001,
51860x00000000, 0x000001b0, 0x000001b4, 0x000001c4, 0x000001c8, 0x00000005, 0x00040001, 0x00020001,
51870x000001d8, 0xab003166, 0x000001b0, 0x000001b4, 0x00000098, 0x000001e8, 0x000001f8, 0x000001b4,
51880x00000005, 0x00060001, 0x00030001, 0x000001fc, 0x3f8ccccd, 0x00000000, 0x00000000, 0x00000000,
51890x40066666, 0x00000000, 0x00000000, 0x00000000, 0x40466666, 0x40833333, 0x40a33333, 0x00000000,
51900x40c33333, 0x00000000, 0x00000000, 0x00000000, 0x006e7373, 0xabab006e, 0x00020000, 0x00010001,
51910x00000001, 0x00000000, 0xab006e76, 0x00020001, 0x00030001, 0x00000001, 0x00000000, 0x00000268,
51920x0000026c, 0x0000027c, 0x00000280, 0x00000005, 0x00040001, 0x00020001, 0x00000290, 0xab00316e,
51930x00000268, 0x0000026c, 0x00000098, 0x000002a0, 0x000002b0, 0x0000026c, 0x00000005, 0x00060001,
51940x00030001, 0x000002b4, 0x00000047, 0x00000000, 0x00000001, 0x00000000, 0x00000048, 0x00000000,
51950x00000001, 0x00000000, 0x00000049, 0x0000004a, 0x0000004b, 0x00000000, 0x0000004c, 0x00000000,
51960x00000001, 0x00000000, 0x666e7373, 0x00666e00, 0x00666e76, 0x00000321, 0x0000026c, 0x00000324,
51970x00000280, 0x00000005, 0x00040001, 0x00020001, 0x00000328, 0x0031666e, 0x00000321, 0x0000026c,
51980x00000098, 0x00000338, 0x00000348, 0x0000026c, 0x00000005, 0x00060001, 0x00030001, 0x0000034c,
51990x42240000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
52000x422c0000, 0x42300000, 0x42240000, 0x00000000, 0x42280000, 0x00000000, 0x00000000, 0x00000000,
52010x335f7376, 0x4d00305f, 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820, 0x6853204c, 0x72656461,
52020x6d6f4320, 0x656c6970, 0x2e392072, 0x392e3932, 0x332e3235, 0x00313131, 0x05000051, 0xa00f000c,
52030x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0200001f, 0x80000000, 0x900f0000, 0x0200001f,
52040x80000000, 0xe00f0000, 0x01000028, 0xe0e40805, 0x03000005, 0x80010000, 0xa0000003, 0x90aa0000,
52050x02000001, 0x80010001, 0xa000000c, 0x01000026, 0xf0e40005, 0x04000004, 0x80010001, 0x80000000,
52060xa0000007, 0x80000001, 0x00000027, 0x02000001, 0x80020001, 0xa000000c, 0x0000002a, 0x03000005,
52070x80010000, 0xa0aa0002, 0x90550000, 0x02000001, 0x80020001, 0xa000000c, 0x01000026, 0xf0e40004,
52080x04000004, 0x80020001, 0x80000000, 0xa000000b, 0x80550001, 0x00000027, 0x02000001, 0x80010001,
52090xa000000c, 0x0000002b, 0x02000001, 0xe0030000, 0x80e40001, 0x02000001, 0xe00c0000, 0xa000000c,
52100x0000ffff,
5211};
5212
5214{
5215 {"ssf", {"ssf", D3DXRS_FLOAT4, 0, 4, D3DXPC_STRUCT, D3DXPT_VOID, 1, 6, 1, 3, 24, NULL}, 137},
5216 {"ssf.f", {"f", D3DXRS_FLOAT4, 0, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL}, 137},
5217 {"ssf.s", {"s", D3DXRS_FLOAT4, 1, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 141},
5218 {"ssf.s.f", {"f", D3DXRS_FLOAT4, 1, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL}, 141},
5219 {"ssf.s.vf", {"vf", D3DXRS_FLOAT4, 2, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 145},
5220 {"ssf.f1", {"f1", D3DXRS_FLOAT4, 3, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL}, 149},
5221};
5222
5224{
5225 {SetInt},
5226 {SetBool},
5227 {SetFloat},
5228 {SetIntArray, 1, 0, 5},
5230 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40400000, 0x00000000, 0x00000000, 0x00000000,
5231 0x40800000, 0x40a00000, 0x00000000, 0x00000000, 0x40e00000}},
5232 {SetBoolArray, 1, 0, 5},
5234 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000,
5235 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000}},
5236 {SetFloatArray, 0, 0, 5},
5238 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
5239 0x40800123, 0x40a00123, 0x40c00123, 0x00000000, 0x40e00123}},
5240 {SetValue, 0, 0, 23},
5241 {SetValue, 0, 24, REGISTER_OUTPUT_SIZE * 4, 16,
5242 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
5243 0x40800123, 0x40a00123, 0x40c00123, 0x00000000, 0x40e00123}},
5244 {SetVector},
5245 {SetVectorArray, 0, 0, 1},
5246 {SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 16,
5247 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
5248 0x40800123, 0x40a00123, 0x40c00123, 0x00000000, 0x40e00123}},
5249 {SetMatrix, 0, 0, 0, 16,
5250 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
5251 0x40800123, 0x40a00123, 0x40c00123, 0x00000000, 0x40e00123}},
5253 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 16,
5254 {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
5255 0x40800123, 0x40a00123, 0x40c00123, 0x00000000, 0x40e00123}},
5256 {SetMatrixTranspose, 0, 0, 0, 16, {0x40000123}},
5258 {SetMatrixTransposeArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 16, {0x40000123}},
5260 {SetMatrixPointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 16, {0x40000123}},
5262 {SetMatrixTransposePointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 16, {0x40000123}},
5263};
5264
5266{
5267 {"ssn", {"ssn", D3DXRS_INT4, 0, 6, D3DXPC_STRUCT, D3DXPT_VOID, 1, 6, 1, 3, 24, NULL}, 183},
5268 {"ssn.n", {"n", D3DXRS_INT4, 0, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 183},
5269 {"ssn.s", {"s", D3DXRS_INT4, 1, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 187},
5270 {"ssn.s.n", {"n", D3DXRS_INT4, 1, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 187},
5271 {"ssn.s.vn", {"vn", D3DXRS_INT4, 2, 1, D3DXPC_VECTOR, D3DXPT_INT, 1, 3, 1, 0, 12, NULL}, 191},
5272 {"ssn.n1", {"n1", D3DXRS_INT4, 3, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 195},
5273};
5274
5276{
5277 {SetInt},
5278 {SetBool},
5279 {SetFloat},
5280 {SetIntArray, 1, 0, 5},
5282 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000003, 0x00000000, 0x00000001, 0x00000000,
5283 0x00000004, 0x00000005, 0x00000000, 0x00000000, 0x00000007, 0x00000000, 0x00000001}},
5284 {SetBoolArray, 1, 0, 5},
5286 {0x00000001, 0x00000000, 0x00000001, 0x00000000, 0x00000001, 0x00000000, 0x00000001, 0x00000000,
5287 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000001}},
5288 {SetFloatArray, 0, 0, 5},
5290 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000,
5291 0x00000004, 0x00000005, 0x00000006, 0x00000000, 0x00000007, 0x00000000, 0x00000001}},
5292 {SetValue, 1, 0, 23},
5293 {SetValue, 1, 24, REGISTER_OUTPUT_SIZE * 4, 16,
5294 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000003, 0x00000000, 0x00000001, 0x00000000,
5295 0x00000004, 0x00000005, 0x00000000, 0x00000000, 0x00000007, 0x00000000, 0x00000001}},
5296 {SetVector},
5297 {SetVectorArray, 0, 0, 1},
5298 {SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 16,
5299 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000,
5300 0x00000004, 0x00000005, 0x00000006, 0x00000000, 0x00000007, 0x00000000, 0x00000001}},
5301 {SetMatrix, 0, 0, 0, 16,
5302 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000,
5303 0x00000004, 0x00000005, 0x00000006, 0x00000000, 0x00000007, 0x00000000, 0x00000001}},
5305 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 16,
5306 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000,
5307 0x00000004, 0x00000005, 0x00000006, 0x00000000, 0x00000007, 0x00000000, 0x00000001}},
5308 {SetMatrixTranspose, 0, 0, 0, 16,
5309 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000,
5310 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001}},
5313 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000,
5314 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001}},
5317 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000,
5318 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001}},
5321 {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000,
5322 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001}},
5323};
5324
5326{
5327 {"ssb", {"ssb", D3DXRS_BOOL, 0, 6, D3DXPC_STRUCT, D3DXPT_VOID, 1, 6, 1, 3, 24, NULL}, 63},
5328 {"ssb.b", {"b", D3DXRS_BOOL, 0, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 63},
5329 {"ssb.s", {"s", D3DXRS_BOOL, 1, 4, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 64},
5330 {"ssb.s.b", {"b", D3DXRS_BOOL, 1, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 64},
5331 {"ssb.s.vb", {"vb", D3DXRS_BOOL, 2, 3, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 1, 0, 12, NULL}, 65},
5332 {"ssb.b1", {"b1", D3DXRS_BOOL, 5, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 68},
5333};
5334
5336{
5337 {SetInt},
5338 {SetBool},
5339 {SetFloat},
5340 {SetIntArray, 1, 0, 5},
5342 {0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001}},
5343 {SetBoolArray, 1, 0, 5},
5345 {0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000000, 0x00000007}},
5346 {SetFloatArray, 0, 0, 5},
5348 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
5349 {SetValue, 1, 0, 23},
5350 {SetValue, 1, 24, REGISTER_OUTPUT_SIZE * 4, 6,
5351 {0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000000, 0x00000007}},
5352 {SetVector},
5353 {SetVectorArray, 0, 0, 1},
5354 {SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 6,
5355 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
5356 {SetMatrix, 0, 0, 0, 6,
5357 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
5359 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 6,
5360 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
5361 {SetMatrixTranspose, 0, 0, 0, 6,
5362 {0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001}},
5365 {0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001}},
5368 {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
5371 {0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001}},
5372};
5373
5375{
5376 {"ssnf", {"ssnf", D3DXRS_FLOAT4, 4, 4, D3DXPC_STRUCT, D3DXPT_VOID, 1, 6, 1, 3, 24, NULL}, 221},
5377 {"ssnf.nf", {"nf", D3DXRS_FLOAT4, 4, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 221},
5378 {"ssnf.s", {"s", D3DXRS_FLOAT4, 5, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 225},
5379 {"ssnf.s.nf", {"nf", D3DXRS_FLOAT4, 5, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 225},
5380 {"ssnf.s.vnf", {"vnf", D3DXRS_FLOAT4, 6, 1, D3DXPC_VECTOR, D3DXPT_INT, 1, 3, 1, 0, 12, NULL}, 229},
5381 {"ssnf.nf1", {"nf1", D3DXRS_FLOAT4, 7, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 233},
5382};
5383
5385{
5386 {SetInt},
5387 {SetBool},
5388 {SetFloat},
5389 {SetIntArray, 1, 0, 5},
5391 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40400000, 0x00000000, 0x00000000, 0x00000000,
5392 0x40800000, 0x40a00000, 0x00000000, 0x00000000, 0x40e00000}},
5393 {SetBoolArray, 1, 0, 5},
5395 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000,
5396 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000}},
5397 {SetFloatArray, 0, 0, 5},
5399 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
5400 0x40800000, 0x40a00000, 0x40c00000, 0x00000000, 0x40e00000}},
5401 {SetValue, 1, 0, 23},
5402 {SetValue, 1, 24, REGISTER_OUTPUT_SIZE * 4, 16,
5403 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40400000, 0x00000000, 0x00000000, 0x00000000,
5404 0x40800000, 0x40a00000, 0x00000000, 0x00000000, 0x40e00000}},
5405 {SetVector},
5406 {SetVectorArray, 0, 0, 1},
5407 {SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 16,
5408 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
5409 0x40800000, 0x40a00000, 0x40c00000, 0x00000000, 0x40e00000}},
5410 {SetMatrix, 0, 0, 0, 16,
5411 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
5412 0x40800000, 0x40a00000, 0x40c00000, 0x00000000, 0x40e00000}},
5414 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 16,
5415 {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
5416 0x40800000, 0x40a00000, 0x40c00000, 0x00000000, 0x40e00000}},
5417 {SetMatrixTranspose, 0, 0, 0, 16, {0x40000000}},
5419 {SetMatrixTransposeArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 16, {0x40000000}},
5421 {SetMatrixPointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 16, {0x40000000}},
5423 {SetMatrixTransposePointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 16, {0x40000000}},
5424};
5425
5427{
5428 {"ssbf", {"ssbf", D3DXRS_FLOAT4, 8, 4, D3DXPC_STRUCT, D3DXPT_VOID, 1, 6, 1, 3, 24, NULL}, 91},
5429 {"ssbf.bf", {"bf", D3DXRS_FLOAT4, 8, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 91},
5430 {"ssbf.s", {"s", D3DXRS_FLOAT4, 9, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 95},
5431 {"ssbf.s.bf", {"bf", D3DXRS_FLOAT4, 9, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 95},
5432 {"ssbf.s.vbf", {"vbf", D3DXRS_FLOAT4, 10, 1, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 1, 0, 12, NULL}, 99},
5433 {"ssbf.bf1", {"bf1", D3DXRS_FLOAT4, 11, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 103},
5434};
5435
5437{
5438 {SetInt},
5439 {SetBool},
5440 {SetFloat},
5441 {SetIntArray, 1, 0, 5},
5443 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000,
5444 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000}},
5445 {SetBoolArray, 1, 0, 5},
5447 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000,
5448 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000}},
5449 {SetFloatArray, 0, 0, 5},
5451 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
5452 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000}},
5453 {SetValue, 1, 0, 23},
5454 {SetValue, 1, 24, REGISTER_OUTPUT_SIZE * 4, 16,
5455 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000,
5456 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000}},
5457 {SetVector},
5458 {SetVectorArray, 0, 0, 1},
5459 {SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 16,
5460 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
5461 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000}},
5462 {SetMatrix, 0, 0, 0, 16,
5463 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
5464 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000}},
5466 {SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 16,
5467 {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
5468 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000}},
5469 {SetMatrixTranspose, 0, 0, 0, 16, {0x3f800000}},
5471 {SetMatrixTransposeArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 16, {0x3f800000}},
5473 {SetMatrixPointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 16, {0x3f800000}},
5475 {SetMatrixTransposePointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 16, {0x3f800000}},
5476};
5477
5478/*
5479 * fxc.exe /Tvs_3_0
5480 */
5481#if 0
5482row_major int3x2 ran[2] = {4, 5, 6, 1, 8, 1, 2, 3, 4, 7, 9, 1};
5483float4 main(float4 pos : POSITION) : POSITION
5484{
5485 float4 tmp = 0;
5486 int k;
5487 for (k = 0; k < ran[1]._21; k++)
5488 tmp.y += pos.y + tmp.x;
5489 return tmp;
5490}
5491#endif
5493{
54940xfffe0300, 0x0038fffe, 0x42415443, 0x0000001c, 0x000000ab, 0xfffe0300, 0x00000001, 0x0000001c,
54950x00000100, 0x000000a4, 0x00000030, 0x00000001, 0x00000009, 0x00000034, 0x00000044, 0x006e6172,
54960x00020002, 0x00020003, 0x00000002, 0x00000000, 0x00000004, 0x00000005, 0x00000001, 0x00000000,
54970x00000006, 0x00000001, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000000,
54980x00000002, 0x00000003, 0x00000001, 0x00000000, 0x00000004, 0x00000007, 0x00000001, 0x00000000,
54990x00000009, 0x00000001, 0x00000001, 0x00000000, 0x335f7376, 0x4d00305f, 0x6f726369, 0x74666f73,
55000x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970, 0x2e392072, 0x392e3932,
55010x332e3235, 0x00313131, 0x05000051, 0xa00f0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
55020x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x80000000, 0xe00f0000, 0x02000001, 0x80010000,
55030xa0000000, 0x01000026, 0xf0e40008, 0x03000002, 0x80010000, 0x80000000, 0x90550000, 0x00000027,
55040x02000001, 0xe0020000, 0x80000000, 0x02000001, 0xe00d0000, 0xa0000000, 0x0000ffff,
5505};
5506
5508{
5509 {"ran", {"ran", D3DXRS_INT4, 0, 9, D3DXPC_MATRIX_ROWS, D3DXPT_INT, 3, 2, 2, 0, 48, NULL}, 17},
5510 {"ran[0]", {"ran", D3DXRS_INT4, 0, 3, D3DXPC_MATRIX_ROWS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 17},
5511 {"ran[1]", {"ran", D3DXRS_INT4, 3, 3, D3DXPC_MATRIX_ROWS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 29},
5512};
5513
5514/*
5515 * fxc.exe /Tvs_3_0
5516 */
5517#if 0
5518float3 vaf[10];
5519float4 main(float4 pos : POSITION) : POSITION
5520{
5521 float4 tmp = 0;
5522 tmp.y += pos.y + vaf[8].x;
5523 return tmp;
5524}
5525#endif
5527{
55280xfffe0300, 0x0020fffe, 0x42415443, 0x0000001c, 0x0000004b, 0xfffe0300, 0x00000001, 0x0000001c,
55290x00000100, 0x00000044, 0x00000030, 0x00000002, 0x00000009, 0x00000034, 0x00000000, 0x00666176,
55300x00030001, 0x00030001, 0x0000000a, 0x00000000, 0x335f7376, 0x4d00305f, 0x6f726369, 0x74666f73,
55310x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970, 0x2e392072, 0x392e3932,
55320x332e3235, 0x00313131, 0x05000051, 0xa00f0009, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
55330x0200001f, 0x80000000, 0x900f0000, 0x0200001f, 0x80000000, 0xe00f0000, 0x03000002, 0xe0020000,
55340xa0000008, 0x90550000, 0x02000001, 0xe00d0000, 0xa0000009, 0x0000ffff,
5535};
5536
5538{
5539 {"vaf", {"vaf", D3DXRS_FLOAT4, 0, 9, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 10, 0, 120, NULL}, 0},
5540 {"vaf[0]", {"vaf", D3DXRS_FLOAT4, 0, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 0},
5541 {"vaf[1]", {"vaf", D3DXRS_FLOAT4, 1, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 0},
5542 {"vaf[2]", {"vaf", D3DXRS_FLOAT4, 2, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 0},
5543 {"vaf[3]", {"vaf", D3DXRS_FLOAT4, 3, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 0},
5544 {"vaf[4]", {"vaf", D3DXRS_FLOAT4, 4, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 0},
5545 {"vaf[5]", {"vaf", D3DXRS_FLOAT4, 5, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 0},
5546 {"vaf[6]", {"vaf", D3DXRS_FLOAT4, 6, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 0},
5547 {"vaf[7]", {"vaf", D3DXRS_FLOAT4, 7, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 0},
5548 {"vaf[8]", {"vaf", D3DXRS_FLOAT4, 8, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 0},
5549 {"vaf[9]", {"vaf", D3DXRS_FLOAT4, 9, 0, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 0},
5550};
5551
5553{
5554 {SetMatrix, 0, 0, 0, 16,
5555 {0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123, 0x00000000,
5556 0x41200123, 0x41300123, 0x41400123, 0x00000000, 0x41600123, 0x41700123, 0x41800123}},
5558 {SetMatrixArray, 0, 1, 1, 16,
5559 {0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123, 0x00000000,
5560 0x41200123, 0x41300123, 0x41400123, 0x00000000, 0x41600123, 0x41700123, 0x41800123}},
5561 {SetMatrixArray, 0, 2, 2, 32,
5562 {0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123, 0x00000000,
5563 0x41200123, 0x41300123, 0x41400123, 0x00000000, 0x41600123, 0x41700123, 0x41800123, 0x00000000,
5564 0x41a00123, 0x41b00123, 0x41c00123, 0x00000000, 0x00000000, 0x41f00123, 0x42000123, 0x00000000,
5565 0x00000000, 0x42300123, 0x42400123, 0x00000000, 0x42600123, 0x42700123, 0x42800123}},
5566 {SetMatrixArray, 0, 3, REGISTER_OUTPUT_SIZE / 16, 36,
5567 {0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123, 0x00000000,
5568 0x41200123, 0x41300123, 0x41400123, 0x00000000, 0x41600123, 0x41700123, 0x41800123, 0x00000000,
5569 0x41a00123, 0x41b00123, 0x41c00123, 0x00000000, 0x00000000, 0x41f00123, 0x42000123, 0x00000000,
5570 0x00000000, 0x42300123, 0x42400123, 0x00000000, 0x42600123, 0x42700123, 0x42800123, 0x00000000,
5571 0x43000123, 0x43100123, 0x43200123}},
5572 {SetMatrixTranspose, 0, 0, 0, 16,
5573 {0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123, 0x00000000,
5574 0x40800123, 0x41000123, 0x41400123, 0x00000000, 0x40a00123, 0x41100123, 0x41500123}},
5576 {SetMatrixTransposeArray, 0, 1, 1, 16,
5577 {0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123, 0x00000000,
5578 0x40800123, 0x41000123, 0x41400123, 0x00000000, 0x40a00123, 0x41100123, 0x41500123}},
5579 {SetMatrixTransposeArray, 0, 2, 2, 32,
5580 {0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123, 0x00000000,
5581 0x40800123, 0x41000123, 0x41400123, 0x00000000, 0x40a00123, 0x41100123, 0x41500123, 0x00000000,
5582 0x41a00123, 0x00000000, 0x00000000, 0x00000000, 0x41b00123, 0x41f00123, 0x42300123, 0x00000000,
5583 0x41c00123, 0x42000123, 0x42400123, 0x00000000, 0x41d00123, 0x42100123, 0x42500123}},
5585 {0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123, 0x00000000,
5586 0x40800123, 0x41000123, 0x41400123, 0x00000000, 0x40a00123, 0x41100123, 0x41500123, 0x00000000,
5587 0x41a00123, 0x00000000, 0x00000000, 0x00000000, 0x41b00123, 0x41f00123, 0x42300123, 0x00000000,
5588 0x41c00123, 0x42000123, 0x42400123, 0x00000000, 0x41d00123, 0x42100123, 0x42500123, 0x00000000,
5589 0x43000123, 0x43400123, 0x43800123}},
5591 {SetMatrixPointerArray, 0, 1, 1, 16,
5592 {0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123, 0x00000000,
5593 0x41200123, 0x41300123, 0x41400123, 0x00000000, 0x41600123, 0x41700123, 0x41800123}},
5594 {SetMatrixPointerArray, 0, 2, 2, 32,
5595 {0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123, 0x00000000,
5596 0x41200123, 0x41300123, 0x41400123, 0x00000000, 0x41600123, 0x41700123, 0x41800123, 0x00000000,
5597 0x41900123, 0x41a00123, 0x41b00123, 0x00000000, 0x41d00123, 0x00000000, 0x41f00123, 0x00000000,
5598 0x42100123, 0x00000000, 0x42300123, 0x00000000, 0x42500123, 0x42600123, 0x42700123}},
5600 {0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123, 0x00000000,
5601 0x41200123, 0x41300123, 0x41400123, 0x00000000, 0x41600123, 0x41700123, 0x41800123, 0x00000000,
5602 0x41900123, 0x41a00123, 0x41b00123, 0x00000000, 0x41d00123, 0x00000000, 0x41f00123, 0x00000000,
5603 0x42100123, 0x00000000, 0x42300123, 0x00000000, 0x42500123, 0x42600123, 0x42700123, 0x00000000,
5604 0x42800123, 0x42900123, 0x43000123}},
5606 {SetMatrixTransposePointerArray, 0, 1, 1, 16,
5607 {0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123, 0x00000000,
5608 0x40800123, 0x41000123, 0x41400123, 0x00000000, 0x40a00123, 0x41100123, 0x41500123}},
5609 {SetMatrixTransposePointerArray, 0, 2, 2, 32,
5610 {0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123, 0x00000000,
5611 0x40800123, 0x41000123, 0x41400123, 0x00000000, 0x40a00123, 0x41100123, 0x41500123, 0x00000000,
5612 0x41900123, 0x41d00123, 0x42100123, 0x00000000, 0x41a00123, 0x00000000, 0x00000000, 0x00000000,
5613 0x41b00123, 0x41f00123, 0x42300123, 0x00000000, 0x41c00123, 0x42000123, 0x42400123}},
5615 {0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123, 0x00000000,
5616 0x40800123, 0x41000123, 0x41400123, 0x00000000, 0x40a00123, 0x41100123, 0x41500123, 0x00000000,
5617 0x41900123, 0x41d00123, 0x42100123, 0x00000000, 0x41a00123, 0x00000000, 0x00000000, 0x00000000,
5618 0x41b00123, 0x41f00123, 0x42300123, 0x00000000, 0x41c00123, 0x42000123, 0x42400123, 0x00000000,
5619 0x42800123, 0x43200123, 0x43600123}},
5620};
5621
5622/*
5623 * fxc.exe /Tvs_3_0
5624 */
5625#if 0
5626float4x4 cf = {1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8};
5627float f = 33.33;
5628float4 main(float4 pos : POSITION) : POSITION
5629{
5630 float4 tmp = 0;
5631 tmp.y += cf._22;
5632 tmp.z = f;
5633 return tmp;
5634}
5635#endif
5637{
56380xfffe0300, 0x003efffe, 0x42415443, 0x0000001c, 0x000000c3, 0xfffe0300, 0x00000002, 0x0000001c,
56390x00000100, 0x000000bc, 0x00000044, 0x00000002, 0x00000002, 0x00000048, 0x00000058, 0x00000098,
56400x00020002, 0x00000001, 0x0000009c, 0x000000ac, 0xab006663, 0x00030003, 0x00040004, 0x00000001,
56410x00000000, 0x3f8ccccd, 0x40b00000, 0x411e6666, 0x3fc00000, 0x400ccccd, 0x40d33333, 0x3f99999a,
56420x3fcccccd, 0x40533333, 0x40f66666, 0x3fa66666, 0x3fd9999a, 0x408ccccd, 0x410ccccd, 0x3fb33333,
56430x3fe66666, 0xabab0066, 0x00030000, 0x00010001, 0x00000001, 0x00000000, 0x420551ec, 0x00000000,
56440x00000000, 0x00000000, 0x335f7376, 0x4d00305f, 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820,
56450x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970, 0x2e392072, 0x392e3932, 0x332e3235, 0x00313131,
56460x05000051, 0xa00f0003, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
56470xe00f0000, 0x02000001, 0x80020000, 0xa0550001, 0x03000005, 0xe00b0000, 0x80550000, 0xa0240003,
56480x02000001, 0xe0040000, 0xa0000002, 0x0000ffff,
5649};
5650
5652{
5653 {"cf", {"cf", D3DXRS_FLOAT4, 0, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 4, 4, 1, 0, 64, NULL}, 0},
5654 {"f", {"f", D3DXRS_FLOAT4, 2, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL}, 0},
5655};
5656
5658{
5659 {SetMatrix, 0, 0, 0, 8,
5660 {0x40000123, 0x40c00123, 0x41200123, 0x41600123, 0x00000000, 0x40e00123, 0x41300123, 0x41700123}},
5661};
5662
5663static const struct
5664{
5665 const char *name;
5666 const char *var;
5669 const DWORD *blob;
5674}
5676{
5677 /* scalar */
5678 {"float", "f", 0, D3DXRS_FLOAT4, registerset_blob_scalar,
5681 {"int", "n", 0, D3DXRS_INT4, registerset_blob_scalar,
5684 {"int float", "nf", 4, D3DXRS_FLOAT4, registerset_blob_scalar,
5687 {"bool float", "bf", 8, D3DXRS_FLOAT4, registerset_blob_scalar,
5690 {"bool", "b", 0, D3DXRS_BOOL, registerset_blob_scalar,
5693 /* scalar array */
5694 {"float [2]", "af", 0, D3DXRS_FLOAT4, registerset_blob_scalar_array,
5697 {"int [2]", "an", 0, D3DXRS_INT4, registerset_blob_scalar_array,
5700 {"bool [2]", "ab", 0, D3DXRS_BOOL, registerset_blob_scalar_array,
5703 {"int float [2]", "anf", 8, D3DXRS_FLOAT4, registerset_blob_scalar_array,
5706 {"bool float [2]", "abf", 16, D3DXRS_FLOAT4, registerset_blob_scalar_array,
5709 /* vector */
5710 {"float 3", "vf", 0, D3DXRS_FLOAT4, registerset_blob_vector,
5713 {"int 3", "vn", 0, D3DXRS_INT4, registerset_blob_vector,
5716 {"bool 3", "vb", 0, D3DXRS_BOOL, registerset_blob_vector,
5719 {"bool float 3", "vbf", 8, D3DXRS_FLOAT4, registerset_blob_vector,
5722 {"int float 3", "vnf", 4, D3DXRS_FLOAT4, registerset_blob_vector,
5725 /* vector array */
5726 {"float 3 [2]", "vaf", 0, D3DXRS_FLOAT4, registerset_blob_vector_array,
5729 {"int 3 [2]", "van", 0, D3DXRS_INT4, registerset_blob_vector_array,
5732 {"bool 3 [2]", "vab", 0, D3DXRS_BOOL, registerset_blob_vector_array,
5735 {"bool float 3 [2]", "vabf", 16, D3DXRS_FLOAT4, registerset_blob_vector_array,
5738 {"int float 3 [2]", "vanf", 8, D3DXRS_FLOAT4, registerset_blob_vector_array,
5741 /* matrix column */
5742 {"float c3x2", "cf", 0, D3DXRS_FLOAT4, registerset_blob_column,
5745 {"int c3x2", "cn", 0, D3DXRS_INT4, registerset_blob_column,
5748 {"bool c3x2", "cb", 0, D3DXRS_BOOL, registerset_blob_column,
5751 {"bool float c3x2", "cbf", 8, D3DXRS_FLOAT4, registerset_blob_column,
5754 {"int float c3x2", "cnf", 16, D3DXRS_FLOAT4, registerset_blob_column,
5757 /* matrix column array */
5758 {"float c3x2 [2]", "caf", 0, D3DXRS_FLOAT4, registerset_blob_column_array,
5761 {"int c3x2 [2]", "can", 0, D3DXRS_INT4, registerset_blob_column_array,
5764 {"bool c3x2 [2]", "cab", 0, D3DXRS_BOOL, registerset_blob_column_array,
5767 {"bool float c3x2 [2]", "cabf", 16, D3DXRS_FLOAT4, registerset_blob_column_array,
5770 {"int float c3x2 [2]", "canf", 32, D3DXRS_FLOAT4, registerset_blob_column_array,
5773 /* matrix row */
5774 {"float r3x2", "rf", 0, D3DXRS_FLOAT4, registerset_blob_row,
5777 {"int r3x2", "rn", 0, D3DXRS_INT4, registerset_blob_row,
5780 {"bool r3x2", "rb", 0, D3DXRS_BOOL, registerset_blob_row,
5783 {"bool float r3x2", "rbf", 12, D3DXRS_FLOAT4, registerset_blob_row,
5786 {"int float r3x2", "rnf", 24, D3DXRS_FLOAT4, registerset_blob_row,
5789 /* matrix row array */
5790 {"float 3x2 [2]", "raf", 0, D3DXRS_FLOAT4, registerset_blob_row_array,
5793 {"int 3x2 [2]", "ran", 0, D3DXRS_INT4, registerset_blob_row_array,
5796 {"bool 3x2 [2]", "rab", 0, D3DXRS_BOOL, registerset_blob_row_array,
5799 {"bool float 3x2 [2]", "rabf", 24, D3DXRS_FLOAT4, registerset_blob_row_array,
5802 {"int float 3x2 [2]", "ranf", 48, D3DXRS_FLOAT4, registerset_blob_row_array,
5805 /* struct */
5806 {"struct float", "sf", 0, D3DXRS_FLOAT4, registerset_blob_struct,
5809 {"struct int", "sn", 0, D3DXRS_INT4, registerset_blob_struct,
5812 {"struct bool", "sb", 0, D3DXRS_BOOL, registerset_blob_struct,
5815 {"struct bool float", "sbf", 16, D3DXRS_FLOAT4, registerset_blob_struct,
5818 {"struct int float", "snf", 8, D3DXRS_FLOAT4, registerset_blob_struct,
5821 /* struct array */
5822 {"struct float [2]", "saf", 0, D3DXRS_FLOAT4, registerset_blob_struct_array,
5825 {"struct int [2]", "san", 0, D3DXRS_INT4, registerset_blob_struct_array,
5828 {"struct bool [2]", "sab", 0, D3DXRS_BOOL, registerset_blob_struct_array,
5831 {"struct bool float [2]", "sabf", 32, D3DXRS_FLOAT4, registerset_blob_struct_array,
5834 {"struct int float [2]", "sanf", 16, D3DXRS_FLOAT4, registerset_blob_struct_array,
5837 /* struct struct */
5838 {"struct struct float", "ssf", 0, D3DXRS_FLOAT4, registerset_blob_struct_struct,
5841 {"struct struct int", "ssn", 0, D3DXRS_INT4, registerset_blob_struct_struct,
5844 {"struct struct bool", "ssb", 0, D3DXRS_BOOL, registerset_blob_struct_struct,
5847 {"struct struct bool float", "ssbf", 32, D3DXRS_FLOAT4, registerset_blob_struct_struct,
5850 {"struct struct int float", "ssnf", 16, D3DXRS_FLOAT4, registerset_blob_struct_struct,
5853 /* special */
5854 {"int ran", "ran", 0, D3DXRS_INT4, registerset_blob_special_int, NULL, 0,
5856 {"bigvec", "vaf", 0, D3DXRS_FLOAT4, registerset_blob_bigvec,
5863
5864static void registerset_clear(IDirect3DDevice9 *device)
5865{
5866 DWORD zero[1024];
5867 HRESULT hr;
5868
5869 memset(zero, 0xde, 4096);
5870
5872 ok(hr == D3D_OK, "Clear failed, got %08x, expected %08x\n", hr, D3D_OK);
5873
5875 ok(hr == D3D_OK, "Clear failed, got %08x, expected %08x\n", hr, D3D_OK);
5876
5878 ok(hr == D3D_OK, "Clear failed, got %08x, expected %08x\n", hr, D3D_OK);
5879
5881 ok(hr == D3D_OK, "Clear failed, got %08x, expected %08x\n", hr, D3D_OK);
5882
5884 ok(hr == D3D_OK, "Clear failed, got %08x, expected %08x\n", hr, D3D_OK);
5885
5887 ok(hr == D3D_OK, "Clear failed, got %08x, expected %08x\n", hr, D3D_OK);
5888}
5889
5891 UINT start, UINT in_count, const DWORD *expected)
5892{
5893 DWORD ret[1024] = {0};
5894 HRESULT hr;
5895 UINT count = 1024, i, err = 0;
5896
5897 memset(ret, 0xde, 4096);
5898
5899 /* get shader constants */
5900 switch (regset)
5901 {
5902 case D3DXRS_BOOL:
5903 count = 16;
5906 ok(hr == D3D_OK, "Get*ShaderConstantB failed, got %08x\n", hr);
5907 break;
5908
5909 case D3DXRS_INT4:
5910 count = 256;
5913 ok(hr == D3D_OK, "Get*ShaderConstantI failed, got %08x\n", hr);
5914 break;
5915
5916 case D3DXRS_FLOAT4:
5918 else
5919 {
5920 count = 896;
5922 }
5923 ok(hr == D3D_OK, "Get*ShaderConstantF failed, got %08x\n", hr);
5924 break;
5925
5926 default:
5927 ok(0, "This should not happen!\n");
5928 break;
5929 }
5930
5931 /* compare shader constants */
5932 for (i = 0; i < count; ++i)
5933 {
5934 DWORD value = 0xdededede;
5935 if (i >= start && i < start + in_count) value = expected[i - start];
5936
5937 ok(ret[i] == value, "Get*ShaderConstant failed, %u got 0x%x(%f) expected 0x%x(%f)\n", i,
5938 ret[i], ((FLOAT *)ret)[i], value, *((FLOAT *)&value));
5939 if (ret[i] != value) err++;
5940 }
5941
5942 return err;
5943}
5944
5946 UINT start, UINT in_count, const DWORD *expected)
5947{
5949 UINT err = 0, i;
5950
5951 for (i = 0; i < ARRAY_SIZE(regsets); i++)
5952 {
5953 if (regset == regsets[i])
5954 err += registerset_compare(device, is_vs, regset, start, in_count, expected);
5955 else
5956 err += registerset_compare(device, is_vs, regsets[i], 0, 0, NULL);
5957
5958 err += registerset_compare(device, !is_vs, regsets[i], 0, 0, NULL);
5959 }
5960
5961 return err;
5962}
5963
5964static HRESULT registerset_apply(ID3DXConstantTable *ctable, IDirect3DDevice9 *device, D3DXHANDLE constant,
5965 UINT index, DWORD count, enum Type type)
5966{
5968 const D3DXMATRIX *inp[REGISTER_OUTPUT_SIZE / 16];
5969 unsigned int i;
5970
5971 /* overlap, to see the difference between Array and PointerArray */
5972 for (i = 0; i < REGISTER_OUTPUT_SIZE / 16; i++)
5973 {
5974 inp[i] = (D3DXMATRIX *)&in[i * 15];
5975 }
5976
5977 switch (type)
5978 {
5979 case SetInt:
5981 case SetFloat:
5983 case SetBool:
5985 case SetIntArray:
5987 case SetBoolArray:
5989 case SetFloatArray:
5991 case SetMatrix:
5993 case SetMatrixTranspose:
5995 case SetMatrixArray:
5999 case SetVector:
6001 case SetVectorArray:
6003 case SetValue:
6009 }
6010
6011 ok(0, "This should not happen!\n");
6012 return D3D_OK;
6013}
6014
6015static void test_registerset(void)
6016{
6017 UINT k;
6018 HWND wnd;
6019 IDirect3D9 *d3d;
6020 IDirect3DDevice9 *device;
6022 HRESULT hr;
6023 ULONG count;
6024 D3DCAPS9 caps;
6025
6026 if (!(wnd = CreateWindowA("static", "d3dx9_test", WS_OVERLAPPEDWINDOW, 0, 0,
6027 640, 480, NULL, NULL, NULL, NULL)))
6028 {
6029 skip("Couldn't create application window\n");
6030 return;
6031 }
6032 if (!(d3d = Direct3DCreate9(D3D_SDK_VERSION)))
6033 {
6034 skip("Couldn't create IDirect3D9 object\n");
6035 DestroyWindow(wnd);
6036 return;
6037 }
6038
6039 ZeroMemory(&d3dpp, sizeof(d3dpp));
6040 d3dpp.Windowed = TRUE;
6043 if (FAILED(hr))
6044 {
6045 skip("Failed to create IDirect3DDevice9 object %#x\n", hr);
6046 IDirect3D9_Release(d3d);
6047 DestroyWindow(wnd);
6048 return;
6049 }
6050
6052 ok(SUCCEEDED(hr), "Failed to get device caps, hr %#x.\n", hr);
6053 if (caps.VertexShaderVersion < D3DVS_VERSION(3, 0)
6054 || caps.PixelShaderVersion < D3DPS_VERSION(3, 0))
6055 {
6056 skip("Skipping: Test requires VS >= 3 and PS >= 3.\n");
6058 IDirect3D9_Release(d3d);
6059 DestroyWindow(wnd);
6060 return;
6061 }
6062
6063 for (k = 0; k < ARRAY_SIZE(registerset_data); ++k)
6064 {
6065 const char *tablename = registerset_data[k].name;
6066 const char *name = registerset_data[k].var;
6067 ID3DXConstantTable *ctable;
6070 UINT i;
6071 BOOL is_vs;
6072 DWORD *ctab;
6073
6075 ok(hr == D3D_OK, "D3DXGetShaderConstantTable \"%s\" failed, got %08x, expected %08x\n", tablename, hr, D3D_OK);
6076
6078 ok(hr == D3D_OK, "GetDesc \"%s\" failed, got %08x, expected %08x\n", tablename, hr, D3D_OK);
6079
6081 ok(ctab[0] == registerset_data[k].blob[3], "ID3DXConstantTable_GetBufferPointer failed\n");
6082
6083 is_vs = (tdesc.Version & 0xFFFF0000) == 0xFFFE0000;
6084
6085 for (i = 0; i < registerset_data[k].constant_count; ++i)
6086 {
6087 const char *fullname = registerset_data[k].constants[i].fullname;
6088 const D3DXCONSTANT_DESC *expected_desc = &registerset_data[k].constants[i].desc;
6090 UINT nr = 0;
6091 UINT ctaboffset = registerset_data[k].constants[i].ctaboffset;
6092
6094 ok(constant != NULL, "GetConstantByName \"%s\" failed\n", fullname);
6095
6097 ok(hr == D3D_OK, "GetConstantDesc \"%s\" failed, got %08x, expected %08x\n", fullname, hr, D3D_OK);
6098
6099 ok(!strcmp(expected_desc->Name, desc.Name), "GetConstantDesc \"%s\" failed, got \"%s\", expected \"%s\"\n",
6100 fullname, desc.Name, expected_desc->Name);
6101 ok(expected_desc->RegisterSet == desc.RegisterSet, "GetConstantDesc \"%s\" failed, got %#x, expected %#x\n",
6102 fullname, desc.RegisterSet, expected_desc->RegisterSet);
6103 ok(expected_desc->RegisterIndex == desc.RegisterIndex,
6104 "GetConstantDesc \"%s\" failed, got %u, expected %u\n",
6105 fullname, desc.RegisterIndex, expected_desc->RegisterIndex);
6106 ok(expected_desc->RegisterCount == desc.RegisterCount,
6107 "GetConstantDesc \"%s\" failed, got %u, expected %u\n",
6108 fullname, desc.RegisterCount, expected_desc->RegisterCount);
6109 ok(expected_desc->Class == desc.Class, "GetConstantDesc \"%s\" failed, got %u, expected %u\n",
6110 fullname, desc.Class, expected_desc->Class);
6111 ok(expected_desc->Type == desc.Type, "GetConstantDesc \"%s\" failed, got %#x, expected %#x\n",
6112 fullname, desc.Type, expected_desc->Type);
6113 ok(expected_desc->Rows == desc.Rows, "GetConstantDesc \"%s\" failed, got %#x, expected %#x\n",
6114 fullname, desc.Rows, expected_desc->Rows);
6115 ok(expected_desc->Columns == desc.Columns, "GetConstantDesc \"%s\" failed, got %u, expected %u\n",
6116 fullname, desc.Columns, expected_desc->Columns);
6117 ok(expected_desc->Elements == desc.Elements, "GetConstantDesc \"%s\" failed, got %u, expected %u\n",
6118 fullname, desc.Elements, expected_desc->Elements);
6119 ok(expected_desc->StructMembers == desc.StructMembers,
6120 "GetConstantDesc \"%s\" failed, got %u, expected %u\n",
6121 fullname, desc.StructMembers, expected_desc->StructMembers);
6122 ok(expected_desc->Bytes == desc.Bytes, "GetConstantDesc \"%s\" failed, got %u, expected %u\n",
6123 fullname, desc.Bytes, expected_desc->Bytes);
6124 if (ctaboffset)
6125 {
6126 ok(ctaboffset == (DWORD *)desc.DefaultValue - ctab,
6127 "GetConstantDesc \"%s\" failed, got %u, expected %u\n",
6128 fullname, (UINT)((DWORD *)desc.DefaultValue - ctab), ctaboffset);
6129 }
6130 }
6131
6133 ok(constant != NULL, "GetConstantByName \"%s\" \"%s\" failed\n", tablename, name);
6134
6135 for (i = 0; i < registerset_data[k].test_count; ++i)
6136 {
6137 const struct registerset_test *test = &registerset_data[k].tests[i];
6138 UINT ret;
6139
6141
6142 hr = registerset_apply(ctable, device, constant, test->in_index, test->in_count_min, test->type);
6143 ok(hr == D3D_OK, "Set* \"%s\" index %u, count %u failed, got %x, expected %x\n", tablename, i,
6144 test->in_count_min, hr, D3D_OK);
6145
6147 registerset_data[k].start, test->out_count, test->out);
6148 ok(ret == 0, "Get*ShaderConstant \"%s\" index %u, count %u failed\n", tablename, i, test->in_count_min);
6149
6150 if (test->in_count_max > test->in_count_min)
6151 {
6153
6154 hr = registerset_apply(ctable, device, constant, test->in_index, test->in_count_max, test->type);
6155 ok(hr == D3D_OK, "Set* \"%s\" index %u, count %u failed, got %x, expected %x\n", tablename, i,
6156 test->in_count_max, hr, D3D_OK);
6157
6159 registerset_data[k].start, test->out_count, test->out);
6160 ok(ret == 0, "Get*ShaderConstant \"%s\" index %u, count %u failed\n", tablename, i, test->in_count_max);
6161 }
6162 }
6163
6165 ok(count == 0, "Release \"%s\" failed, got %u, expected %u\n", tablename, count, 0);
6166 }
6167
6168 /* Release resources */
6170 ok(count == 0, "The Direct3D device reference count was %u, should be 0\n", count);
6171
6173 ok(count == 0, "The Direct3D object reference count was %u, should be 0\n", count);
6174
6175 if (wnd) DestroyWindow(wnd);
6176}
6177
6178/*
6179 * For D3DXRS_INT4 (int_count, ints[]):
6180 * Native seems to just set the following shader blob up to the register count, which in bad cases is up
6181 * to 4 times larger than the actual correct value. This explanes where the "bogus" values for these cases
6182 * come from. Somehow they forgot that the registers are INT4 and not INT.
6183 */
6184static const struct
6185{
6186 const char *name;
6187 const DWORD *blob;
6188 unsigned int float_count;
6189 unsigned int int_count;
6190 unsigned int bool_count;
6191 const DWORD floats[1024];
6192 const DWORD ints[256];
6193 const DWORD bools[16];
6194}
6196{
6197 {"scalar", registerset_blob_scalar, 12, 4, 1,
6198 {0x40a33333, 0x00000000, 0x00000000, 0x00000000, 0x41300000, 0x00000000, 0x00000000, 0x00000000,
6199 0x3f800000, 0x00000000, 0x00000000, 0x00000000},
6200 {0x00000008, 0x00000000, 0x00000001},
6201 {0xffffffff}},
6202 {"scalar array", registerset_blob_scalar_array, 24, 8, 2,
6203 {0x40466666, 0x00000000, 0x00000000, 0x00000000, 0x404ccccd, 0x00000000, 0x00000000, 0x00000000,
6204 0x41600000, 0x00000000, 0x00000000, 0x00000000, 0x41700000, 0x00000000, 0x00000000, 0x00000000,
6205 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000},
6206 {0x00000020, 0x00000000, 0x00000001, 0x00000000, 0x00000021, 0x00000000, 0x00000001, 0x00000000},
6207 {0xffffffff, 0x00000000}},
6208 {"vector", registerset_blob_vector, 12, 12, 3,
6209 {0x40a33333, 0x40a66666, 0x40a9999a, 0x00000000, 0x41300000, 0x42aa0000, 0x42780000, 0x00000000,
6210 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000},
6211 {0x00000007, 0x00000008, 0x00000009, 0x00000000, 0x00666e76, 0x41300000, 0x42aa0000, 0x42780000,
6212 0x00000000, 0x335f7376, 0x4d00305f, 0x6f726369},
6213 {0xffffffff, 0x00000000, 0xffffffff}},
6214 {"vector array", registerset_blob_vector_array, 24, 24, 6,
6215 {0x425c6666, 0x425ccccd, 0x425d3333, 0x00000000, 0x425d999a, 0x425e0000, 0x425e6666, 0x00000000,
6216 0x43020000, 0x430c0000, 0x43160000, 0x00000000, 0x43200000, 0x432a0000, 0x43340000, 0x00000000,
6217 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000},
6218 {0x00000046, 0x00000050, 0x0000005a, 0x00000000, 0x00000064, 0x0000006e, 0x00000078, 0x00000000,
6219 0x666e6176, 0xababab00, 0x00020001, 0x00030001, 0x00000002, 0x00000000, 0x43020000, 0x430c0000,
6220 0x43160000, 0x00000000, 0x43200000, 0x432a0000, 0x43340000, 0x00000000, 0x335f7376, 0x4d00305f},
6221 {0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, 0x00000000, 0xffffffff}},
6222 {"column", registerset_blob_column, 24, 24, 6,
6223 {0x4171999a, 0x4174cccd, 0x41780000, 0x00000000, 0x41733333, 0x41766666, 0x4179999a, 0x00000000,
6224 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000,
6225 0x41f00000, 0x42040000, 0x42080000, 0x00000000, 0x41f80000, 0x42000000, 0x42100000, 0x00000000},
6226 {0x00000004, 0x00000006, 0x00000008, 0x00000000, 0x00000005, 0x00000007, 0x00000009, 0x00000000,
6227 0x00666e63, 0x41f00000, 0x42040000, 0x42080000, 0x00000000, 0x41f80000, 0x42000000, 0x42100000,
6228 0x00000000, 0x335f7376, 0x4d00305f, 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820, 0x6853204c},
6229 {0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, 0x00000000, 0xffffffff}},
6230 {"column array", registerset_blob_column_array, 48, 48, 12,
6231 {0x3f8ccccd, 0x40533333, 0x40b00000, 0x00000000, 0x400ccccd, 0x408ccccd, 0x40d33333, 0x00000000,
6232 0x40f66666, 0x411e6666, 0x3fa66666, 0x00000000, 0x410ccccd, 0x3f99999a, 0x3fb33333, 0x00000000,
6233 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000,
6234 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000,
6235 0x43960000, 0x43978000, 0x43980000, 0x00000000, 0x43968000, 0x43970000, 0x43990000, 0x00000000,
6236 0x43af0000, 0x44238000, 0x43a30000, 0x00000000, 0x43b68000, 0x44190000, 0x4479c000, 0x00000000},
6237 {0x0000000e, 0x00000010, 0x00000012, 0x00000000, 0x0000000f, 0x00000047, 0x00000013, 0x00000000,
6238 0x00000037, 0x00000060, 0x00000061, 0x00000000, 0x0000003f, 0x00000060, 0x0000000d, 0x00000000,
6239 0x666e6163, 0xababab00, 0x00020003, 0x00020003, 0x00000002, 0x00000000, 0x43960000, 0x43978000,
6240 0x43980000, 0x00000000, 0x43968000, 0x43970000, 0x43990000, 0x00000000, 0x43af0000, 0x44238000,
6241 0x43a30000, 0x00000000, 0x43b68000, 0x44190000, 0x4479c000, 0x00000000, 0x335f7376, 0x4d00305f,
6242 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970},
6243 {0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, 0x00000000,
6244 0xffffffff, 0xffffffff, 0x00000000, 0xffffffff}},
6245 {"row", registerset_blob_row, 36, 24, 6,
6246 {0x42be3333, 0x42be6666, 0x00000000, 0x00000000, 0x42be999a, 0x42becccd, 0x00000000, 0x00000000,
6247 0x42bf0000, 0x42bf3333, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
6248 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000,
6249 0x42140000, 0x41500000, 0x00000000, 0x00000000, 0x42c40000, 0x42580000, 0x00000000, 0x00000000,
6250 0x429a0000, 0x42100000, 0x00000000, 0x00000000},
6251 {0x00000050, 0x00000051, 0x00000001, 0x00000000, 0x00000052, 0x00000053, 0x00000001, 0x00000000,
6252 0x00000054, 0x00000055, 0x00000001, 0x00000000, 0x00666e72, 0x42140000, 0x41500000, 0x00000000,
6253 0x00000000, 0x42c40000, 0x42580000, 0x00000000, 0x00000000, 0x429a0000, 0x42100000, 0x00000000},
6254 {0xffffffff, 0xffffffff, 0x00000000, 0x00000000, 0xffffffff, 0xffffffff}},
6255 {"row array", registerset_blob_row_array, 72, 48, 12,
6256 {0x3fc00000, 0x40333333, 0x00000000, 0x00000000, 0x40533333, 0x409ccccd, 0x00000000, 0x00000000,
6257 0x40bccccd, 0x40d9999a, 0x00000000, 0x00000000, 0x40fccccd, 0x41080000, 0x00000000, 0x00000000,
6258 0x41166666, 0x3fa66666, 0x00000000, 0x00000000, 0x3f99999a, 0x3f8ccccd, 0x00000000, 0x00000000,
6259 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
6260 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000,
6261 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000,
6262 0x420c0000, 0x42200000, 0x00000000, 0x00000000, 0x42700000, 0x42a00000, 0x00000000, 0x00000000,
6263 0x428c0000, 0x42600000, 0x00000000, 0x00000000, 0x42140000, 0x41500000, 0x00000000, 0x00000000,
6264 0x42c40000, 0x42580000, 0x00000000, 0x00000000, 0x429a0000, 0x42100000, 0x00000000, 0x00000000},
6265 {0x00000004, 0x00000005, 0x00000001, 0x00000000, 0x00000006, 0x00000001, 0x00000001, 0x00000000,
6266 0x00000008, 0x00000001, 0x00000001, 0x00000000, 0x00000005, 0x00000003, 0x00000001, 0x00000000,
6267 0x00000009, 0x00000006, 0x00000001, 0x00000000, 0x00000007, 0x00000003, 0x00000001, 0x00000000,
6268 0x666e6172, 0xababab00, 0x00020002, 0x00020003, 0x00000002, 0x00000000, 0x420c0000, 0x42200000,
6269 0x00000000, 0x00000000, 0x42700000, 0x42a00000, 0x00000000, 0x00000000, 0x428c0000, 0x42600000,
6270 0x00000000, 0x00000000, 0x42140000, 0x41500000, 0x00000000, 0x00000000, 0x42c40000, 0x42580000},
6271 {0xffffffff, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0xffffffff, 0x00000000, 0x00000000,
6272 0xffffffff, 0xffffffff, 0x00000000, 0xffffffff}},
6273 {"struct", registerset_blob_struct, 24, 16, 4,
6274 {0x3f8ccccd, 0x00000000, 0x00000000, 0x00000000, 0x400ccccd, 0x40533333, 0x408ccccd, 0x00000000,
6275 0x41f80000, 0x00000000, 0x00000000, 0x00000000, 0x42000000, 0x42040000, 0x42080000, 0x00000000,
6276 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000},
6277 {0x0000000b, 0x00000000, 0x00000001, 0x00000000, 0x0000000c, 0x0000000d, 0x0000000e, 0x00000000,
6278 0x00666e73, 0x7600666e, 0xab00666e, 0x00000204, 0x0000019c, 0x00000207, 0x000001b0, 0x00000005},
6279 {0xffffffff, 0xffffffff, 0x00000000, 0xffffffff}},
6280 {"struct array", registerset_blob_struct_array, 48, 32, 8,
6281 {0x3f8ccccd, 0x00000000, 0x00000000, 0x00000000, 0x40066666, 0x40466666, 0x40833333, 0x00000000,
6282 0x40a33333, 0x00000000, 0x00000000, 0x00000000, 0x40c33333, 0x40e33333, 0x4101999a, 0x00000000,
6283 0x42240000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x422c0000, 0x42300000, 0x00000000,
6284 0x42240000, 0x00000000, 0x00000000, 0x00000000, 0x42280000, 0x422c0000, 0x42300000, 0x00000000,
6285 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000,
6286 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000, 0x00000000},
6287 {0x00000015, 0x00000000, 0x00000001, 0x00000000, 0x00000016, 0x00000017, 0x00000018, 0x00000000,
6288 0x00000019, 0x00000000, 0x00000001, 0x00000000, 0x0000001a, 0x0000001b, 0x0000001c, 0x00000000,
6289 0x666e6173, 0x00666e00, 0x00666e76, 0x00000275, 0x000001ec, 0x00000278, 0x00000200, 0x00000005,
6290 0x00040001, 0x00020002, 0x0000027c, 0x42240000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
6291 {0xffffffff, 0xffffffff, 0x00000000, 0xffffffff, 0x00000000, 0xffffffff, 0x00000000, 0xffffffff}},
6292 {"struct struct", registerset_blob_struct_struct, 48, 24, 6,
6293 {0x3f8ccccd, 0x00000000, 0x00000000, 0x00000000, 0x40066666, 0x00000000, 0x00000000, 0x00000000,
6294 0x40466666, 0x40833333, 0x40a33333, 0x00000000, 0x40c33333, 0x00000000, 0x00000000, 0x00000000,
6295 0x42240000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
6296 0x422c0000, 0x42300000, 0x42240000, 0x00000000, 0x42280000, 0x00000000, 0x00000000, 0x00000000,
6297 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
6298 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
6299 {0x00000047, 0x00000000, 0x00000001, 0x00000000, 0x00000048, 0x00000000, 0x00000001, 0x00000000,
6300 0x00000049, 0x0000004a, 0x0000004b, 0x00000000, 0x0000004c, 0x00000000, 0x00000001, 0x00000000,
6301 0x666e7373, 0x00666e00, 0x00666e76, 0x00000321, 0x0000026c, 0x00000324, 0x00000280, 0x00000005},
6302 {0xffffffff, 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, 0x00000000}},
6303 {"int ran", registerset_blob_special_int, 0, 36, 0,
6304 {0x00000000},
6305 {0x00000004, 0x00000005, 0x00000001, 0x00000000, 0x00000006, 0x00000001, 0x00000001, 0x00000000,
6306 0x00000008, 0x00000001, 0x00000001, 0x00000000, 0x00000002, 0x00000003, 0x00000001, 0x00000000,
6307 0x00000004, 0x00000007, 0x00000001, 0x00000000, 0x00000009, 0x00000001, 0x00000001, 0x00000000,
6308 0x335f7376, 0x4d00305f, 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820, 0x6853204c, 0x72656461,
6309 0x6d6f4320, 0x656c6970, 0x2e392072, 0x392e3932},
6310 {0x00000000}},
6311 /* DefaultValue = NULL */
6312 {"big vector", registerset_blob_bigvec},
6313 {"matrix column clamp", registerset_blob_matrix_column_clamp, 12, 0, 0,
6314 {0x3f8ccccd, 0x40b00000, 0x411e6666, 0x3fc00000, 0x400ccccd, 0x40d33333, 0x3f99999a, 0x3fcccccd,
6315 0x420551ec, 0x00000000, 0x00000000, 0x00000000},
6316 {0x00000000},
6317 {0x00000000}},
6319
6321{
6322 UINT k;
6323 HWND wnd;
6324 IDirect3D9 *d3d;
6325 IDirect3DDevice9 *device;
6327 HRESULT hr;
6328 ULONG count;
6329 D3DCAPS9 caps;
6330
6331 if (!(wnd = CreateWindowA("static", "d3dx9_test", WS_OVERLAPPEDWINDOW, 0, 0,
6332 640, 480, NULL, NULL, NULL, NULL)))
6333 {
6334 skip("Couldn't create application window\n");
6335 return;
6336 }
6337 if (!(d3d = Direct3DCreate9(D3D_SDK_VERSION)))
6338 {
6339 skip("Couldn't create IDirect3D9 object\n");
6340 DestroyWindow(wnd);
6341 return;
6342 }
6343
6344 ZeroMemory(&d3dpp, sizeof(d3dpp));
6345 d3dpp.Windowed = TRUE;
6348 if (FAILED(hr))
6349 {
6350 skip("Failed to create IDirect3DDevice9 object %#x\n", hr);
6351 IDirect3D9_Release(d3d);
6352 DestroyWindow(wnd);
6353 return;
6354 }
6355
6357 ok(SUCCEEDED(hr), "Failed to get device caps, hr %#x.\n", hr);
6358 if (caps.VertexShaderVersion < D3DVS_VERSION(3, 0)
6359 || caps.PixelShaderVersion < D3DPS_VERSION(3, 0))
6360 {
6361 skip("Skipping: Test requires VS >= 3 and PS >= 3.\n");
6363 IDirect3D9_Release(d3d);
6364 DestroyWindow(wnd);
6365 return;
6366 }
6367
6368 for (k = 0; k < ARRAY_SIZE(registerset_defaults_data); ++k)
6369 {
6370 const char *tablename = registerset_defaults_data[k].name;
6371 ID3DXConstantTable *ctable;
6373 BOOL is_vs;
6374 UINT ret;
6375
6377 ok(hr == D3D_OK, "D3DXGetShaderConstantTable \"%s\" failed, got %08x, expected %08x\n", tablename, hr, D3D_OK);
6378
6380 ok(hr == D3D_OK, "GetDesc \"%s\" failed, got %08x, expected %08x\n", tablename, hr, D3D_OK);
6381
6382 is_vs = (tdesc.Version & 0xFFFF0000) == 0xFFFE0000;
6383
6385
6387 ok(hr == D3D_OK, "SetDefaults \"%s\" failed, got %08x, expected %08x\n", tablename, hr, D3D_OK);
6388
6391 ok(ret == 0, "Get*ShaderConstantF \"%s\" failed\n", tablename);
6392
6395 ok(ret == 0, "Get*ShaderConstantI \"%s\" failed\n", tablename);
6396
6399 ok(ret == 0, "Get*ShaderConstantB \"%s\" failed\n", tablename);
6400
6402 ok(count == 0, "Release \"%s\" failed, got %u, expected %u\n", tablename, count, 0);
6403 }
6404
6405 /* Release resources */
6407 ok(count == 0, "The Direct3D device reference count was %u, should be 0\n", count);
6408
6410 ok(count == 0, "The Direct3D object reference count was %u, should be 0\n", count);
6411
6412 if (wnd) DestroyWindow(wnd);
6413}
6414
6415static void test_shader_semantics(void)
6416{
6417 static const DWORD invalid_1[] =
6418 {
6419 0x00000200
6420 },
6421 invalid_2[] =
6422 {
6423 0xfffe0400
6424 },
6425 invalid_3[] =
6426 {
6427 0xfffe0000
6428 },
6429 vs_1_1[] =
6430 {
6431 0xfffe0101, /* vs_1_1 */
6432 0x0000001f, 0x80000000, 0x900f0000, /* dcl_position v0 */
6433 0x0000001f, 0x80000003, 0x900f0001, /* dcl_normal v1 */
6434 0x0000001f, 0x8001000a, 0x900f0002, /* dcl_color1 v2 */
6435 0x0000001f, 0x80000005, 0x900f0003, /* dcl_texcoord0 v3 */
6436 0x00000001, 0xc00f0000, 0x90e40000, /* mov oPos, v0 */
6437 0x00000001, 0xd00f0001, 0x90e40002, /* mov oD1, v2 */
6438 0x00000001, 0xe0070000, 0x90e40001, /* mov oT0.xyz, v1 */
6439 0x00000001, 0xc00f0001, 0x90ff0002, /* mov oFog, v2.w */
6440 0x00000001, 0xc00f0002, 0x90ff0001, /* mov oPts, v1.w */
6441 0x0000ffff
6442 },
6443 vs_2_0[] =
6444 {
6445 0xfffe0200, /* vs_2_0 */
6446 0x0200001f, 0x80000000, 0x900f0000, /* dcl_position v0 */
6447 0x0200001f, 0x80000003, 0x900f0001, /* dcl_normal v1 */
6448 0x0200001f, 0x8001000a, 0x900f0002, /* dcl_color1 v2 */
6449 0x0200001f, 0x80000005, 0x900f0003, /* dcl_texcoord0 v3 */
6450 0x02000001, 0xc00f0000, 0x90e40000, /* mov oPos, v0 */
6451 0x02000001, 0xd00f0001, 0x90e40002, /* mov oD1, v2 */
6452 0x02000001, 0xe0070000, 0x90e40003, /* mov oT0.xyz, v3 */
6453 0x02000001, 0xc00f0001, 0x90ff0002, /* mov oFog, v2.w */
6454 0x02000001, 0xc00f0002, 0x90ff0001, /* mov oPts, v1.w */
6455 0x0000ffff
6456 },
6457 vs_3_0[] =
6458 {
6459 0xfffe0300, /* vs_3_0 */
6460 0x0002fffe, 0x0200000f, 0x00000000, /* comment */
6461 0x0200001f, 0x80000000, 0x900f0000, /* dcl_position v0 */
6462 0x0200001f, 0x80000003, 0x900f0001, /* dcl_normal v1 */
6463 0x0200001f, 0x8001000a, 0x900f0002, /* dcl_color1 v2 */
6464 0x0200001f, 0x80000005, 0x900f0003, /* dcl_texcoord0 v3 */
6465 0x0200001f, 0x80000000, 0xe00f0000, /* dcl_position o0 */
6466 0x0200001f, 0x8001000a, 0xe00f0001, /* dcl_color1 o1 */
6467 0x0200001f, 0x80000005, 0xe00f0002, /* dcl_texcoord0 o2 */
6468 0x0200001f, 0x8000000b, 0xe00f0003, /* dcl_fog o3 */
6469 0x0200001f, 0x80000004, 0xe00f0004, /* dcl_psize o4 */
6470 0x02000001, 0xe00f0000, 0x90e40000, /* mov o0, v0 */
6471 0x02000001, 0xe00f0001, 0x90e40002, /* mov o1, v2 */
6472 0x02000001, 0xe0070002, 0x90e40003, /* mov o2.xyz, v3 */
6473 0x02000001, 0xe00f0003, 0x90ff0002, /* mov o3, v2.w */
6474 0x02000001, 0xe00f0004, 0x90ff0001, /* mov o4, v1.w */
6475 0x0000ffff
6476 },
6477 ps_1_1[] =
6478 {
6479 0xffff0101, /* ps_1_1 */
6480 0x00000042, 0xb00f0000, /* tex t0 */
6481 0x00000002, 0x800f0000, 0x90e40000, 0xb0e40000, /* add r0, v0, t0 */
6482 0x0000ffff
6483 },
6484 ps_2_0[] =
6485 {
6486 0xffff0200, /* ps_2_0 */
6487 0x0200001f, 0x80000000, 0x900f0000, /* dcl v0 */
6488 0x0200001f, 0x80000000, 0xb00f0000, /* dcl t0 */
6489 0x02000001, 0x800f0800, 0x90e40000, /* mov oC0, v0 */
6490 0x0000ffff
6491 },
6492 ps_3_0[] =
6493 {
6494 0xffff0300, /* ps_3_0 */
6495 0x0200001f, 0x8001000a, 0x900f0000, /* dcl_color1 v0 */
6496 0x0200001f, 0x80000003, 0x900f0001, /* dcl_normal v1 */
6497 0x0200001f, 0x80000005, 0x900f0002, /* dcl_texcoord0 v2 */
6498 0x0200001f, 0x8000000b, 0x900f0003, /* dcl_fog v3 */
6499 0x0200001f, 0x80000000, 0x90031000, /* dcl vPos.xy */
6500 0x0200001f, 0x80000000, 0x900f1001, /* dcl vFace */
6501 0x05000051, 0xa00f0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, /* def c0, 0.0, 0.0, 0.0, 0.0 */
6502 0x02000001, 0x800f0000, 0x90e40000, /* mov r0, v0 */
6503 0x03000002, 0x800f0800, 0x80e40000, 0x90e40003, /* add oC0, r0, v3 */
6504 0x02000001, 0x800f0001, 0x90e40001, /* mov r1, v1 */
6505 0x03000005, 0x800f0801, 0x80e40001, 0x90e40002, /* mul oC1, r1, v2 */
6506 0x02000001, 0x800f0802, 0x90441000, /* mov oC2, vPos.xyxy */
6507 0x04000058, 0x800f0803, 0x90e41001, 0x90e40000, 0xa0e40000, /* cmp oC3, vFace, v0, c0 */
6508 0x02000001, 0x900f0800, 0x90ff0001, /* mov oDepth, v1.w */
6509 0x0000ffff
6510 };
6511 static const struct
6512 {
6513 const DWORD *shader;
6514 D3DXSEMANTIC expected_input[MAXD3DDECLLENGTH];
6516 }
6517 tests[] =
6518 {
6519 {vs_1_1, {{0, 0}, {3, 0}, {10, 1}, {5, 0}, {~0, ~0}}, {{5, 0}, {10, 1}, {0, 0}, {11, 0}, {4, 0}, {~0, ~0}}},
6520 {vs_2_0, {{0, 0}, {3, 0}, {10, 1}, {5, 0}, {~0, ~0}}, {{5, 0}, {10, 1}, {0, 0}, {11, 0}, {4, 0}, {~0, ~0}}},
6521 {vs_3_0, {{0, 0}, {3, 0}, {10, 1}, {5, 0}, {~0, ~0}}, {{0, 0}, {10, 1}, {5, 0}, {11, 0}, {4, 0}, {~0, ~0}}},
6522 {ps_1_1, {{5, 0}, {10, 0}, {~0, ~0}}, {{10, 0}, {~0, ~0}}},
6523 {ps_2_0, {{10, 0}, {5, 0}, {~0, ~0}}, {{10, 0}, {~0, ~0}}},
6524 {ps_3_0, {{10, 1}, {3,0}, {5, 0}, {11, 0}, {~0, ~0}}, {{10, 0}, {10, 1}, {10, 2}, {10, 3}, {12, 0}, {~0, ~0}}},
6525 };
6526 D3DXSEMANTIC semantics[MAXD3DDECLLENGTH];
6527 unsigned int count, count2;
6528 unsigned int i, j;
6529 HRESULT hr;
6530
6531 hr = D3DXGetShaderInputSemantics(invalid_1, NULL, NULL);
6532 ok(hr == D3DXERR_INVALIDDATA, "Unexpected hr %#x.\n", hr);
6533 hr = D3DXGetShaderInputSemantics(invalid_2, NULL, NULL);
6534 ok(hr == D3D_OK, "Unexpected hr %#x.\n", hr);
6535 hr = D3DXGetShaderInputSemantics(invalid_3, NULL, NULL);
6536 ok(hr == D3D_OK, "Unexpected hr %#x.\n", hr);
6537
6539 ok(hr == D3D_OK, "Unexpected hr %#x.\n", hr);
6540 hr = D3DXGetShaderInputSemantics(vs_1_1, semantics, NULL);
6541 ok(hr == D3D_OK, "Unexpected hr %#x.\n", hr);
6542
6543 for (i = 0; i < ARRAY_SIZE(tests); ++i)
6544 {
6545 const DWORD *shader = tests[i].shader;
6546
6548 ok(hr == D3D_OK, "Unexpected hr %#x.\n", hr);
6549 hr = D3DXGetShaderInputSemantics(shader, semantics, &count2);
6550 ok(hr == D3D_OK, "Unexpected hr %#x.\n", hr);
6551 ok(count == count2, "Semantics count %u differs from previous count %u.\n", count2, count);
6552 for (j = 0; j < count; ++j)
6553 {
6554 ok(semantics[j].Usage == tests[i].expected_input[j].Usage
6555 && semantics[j].UsageIndex == tests[i].expected_input[j].UsageIndex,
6556 "Unexpected semantic %u, %u, test %u, idx %u.\n",
6557 semantics[j].Usage, semantics[j].UsageIndex, i, j);
6558 }
6559 ok(tests[i].expected_input[j].Usage == ~0 && tests[i].expected_input[j].UsageIndex == ~0,
6560 "Unexpected semantics count %u.\n", count);
6562 ok(hr == D3D_OK, "Unexpected hr %#x.\n", hr);
6563 hr = D3DXGetShaderOutputSemantics(shader, semantics, &count2);
6564 ok(hr == D3D_OK, "Unexpected hr %#x.\n", hr);
6565 ok(count == count2, "Semantics count %u differs from previous count %u.\n", count2, count);
6566 for (j = 0; j < count; ++j)
6567 {
6568 ok(semantics[j].Usage == tests[i].expected_output[j].Usage
6569 && semantics[j].UsageIndex == tests[i].expected_output[j].UsageIndex,
6570 "Unexpected semantic %u, %u, test %u, idx %u.\n",
6571 semantics[j].Usage, semantics[j].UsageIndex, i, j);
6572 }
6573 ok(tests[i].expected_output[j].Usage == ~0 && tests[i].expected_output[j].UsageIndex == ~0,
6574 "Unexpected semantics count %u.\n", count);
6575 }
6576}
6577
6578static void test_fragment_linker(void)
6579{
6580 ID3DXFragmentLinker *linker;
6582 IDirect3DDevice9 *device;
6583 IDirect3D9 *d3d;
6584 ULONG refcount;
6585 HWND window;
6586 HRESULT hr;
6587
6588 window = CreateWindowA("static", "d3dx9_test", WS_OVERLAPPEDWINDOW, 0, 0, 640, 480, NULL, NULL, NULL, NULL);
6589 if (!(d3d = Direct3DCreate9(D3D_SDK_VERSION)))
6590 {
6591 skip("Failed to create a D3D object.\n");
6593 return;
6594 }
6595
6596 ZeroMemory(&d3dpp, sizeof(d3dpp));
6597 d3dpp.Windowed = TRUE;
6601 if (FAILED(hr))
6602 {
6603 skip("Failed to create a D3D device, hr %#x.\n", hr);
6604 IDirect3D9_Release(d3d);
6606 return;
6607 }
6608
6609 hr = D3DXCreateFragmentLinker(device, 1024, &linker);
6610 ok(hr == D3D_OK, "Unexpected hr %#x.\n", hr);
6611 ok(!!linker, "Unexpected linker %p.\n", linker);
6612 linker->lpVtbl->Release(linker);
6613
6614 hr = D3DXCreateFragmentLinkerEx(device, 1024, 0, &linker);
6615 ok(hr == D3D_OK, "Unexpected hr %#x.\n", hr);
6616 ok(!!linker, "Unexpected linker %p.\n", linker);
6617 linker->lpVtbl->Release(linker);
6618
6619 refcount = IDirect3DDevice9_Release(device);
6620 ok(!refcount, "Device has %u references left.\n", refcount);
6621 refcount = IDirect3D9_Release(d3d);
6622 ok(!refcount, "The D3D object has %u references left.\n", refcount);
6624}
6625
6626static const DWORD ps_tex[] = {
6627 0xffff0103, /* ps_1_3 */
6628 0x00000042, 0xb00f0000, /* tex t0 */
6629 0x00000000, /* nop */
6630 0x0000ffff};
6631
6632static const DWORD ps_texld_1_4[] = {
6633 0xffff0104, /* ps_1_4 */
6634 0x00000042, 0xb00f0000, 0xa0e40000, /* texld t0, c0 */
6635 0x00000000, /* nop */
6636 0x0000ffff};
6637
6638static const DWORD ps_texld_2_0[] = {
6639 0xffff0200, /* ps_2_0 */
6640 0x00000042, 0xb00f0000, 0xa0e40000, 0xa0e40001, /* texld t0, c0, c1 */
6641 0x00000000, /* nop */
6642 0x0000ffff};
6643
6644static const DWORD ps_texcoord[] = {
6645 0xffff0103, /* ps_1_4 */
6646 0x00000040, 0xb00f0000, /* texcoord t0 */
6647 0x00000000, /* nop */
6648 0x0000ffff};
6649
6650static const DWORD ps_texcrd[] = {
6651 0xffff0104, /* ps_2_0 */
6652 0x00000040, 0xb00f0000, 0xa0e40000, /* texcrd t0, c0 */
6653 0x00000000, /* nop */
6654 0x0000ffff};
6655
6656static const DWORD ps_sincos_2_0[] = {
6657 0xffff0200, /* ps_2_0 */
6658 0x00000025, 0xb00f0000, 0xa0e40000, 0xa0e40001, 0xa0e40002, /* sincos t0, c0, c1, c2 */
6659 0x00000000, /* nop */
6660 0x0000ffff};
6661
6662static const DWORD ps_sincos_3_0[] = {
6663 0xffff0300, /* ps_3_0 */
6664 0x00000025, 0xb00f0000, 0xa0e40000, /* sincos t0, c0 */
6665 0x00000000, /* nop */
6666 0x0000ffff};
6667
6668static const DWORD vs_sincos_2_0[] = {
6669 0xfffe0200, /* vs_2_0 */
6670 0x00000025, 0xb00f0000, 0xa0e40000, 0xa0e40001, 0xa0e40002, /* sincos a0, c0, c1, c2 */
6671 0x00000000, /* nop */
6672 0x0000ffff};
6673
6674static const DWORD vs_sincos_3_0[] = {
6675 0xfffe0300, /* vs_3_0 */
6676 0x00000025, 0xb00f0000, 0xa0e40000, /* sincos a0, c0 */
6677 0x00000000, /* nop */
6678 0x0000ffff};
6679
6681{
6682 static const char disasm_vs[] = " vs_1_1\n"
6683 " dcl_position v0\n"
6684 " dp4 oPos.x, v0, c0\n"
6685 " dp4 oPos.y, v0, c1\n"
6686 " dp4 oPos.z, v0, c2\n"
6687 " dp4 oPos.w, v0, c3\n";
6688 static const char disasm_ps[] = " ps_1_1\n"
6689 " def c1, 1, 0, 0, 0\n"
6690 " tex t0\n"
6691 " dp3 r0, c1, c0\n"
6692 " mul r0, v0, r0\n"
6693 " mul r0, t0, r0\n";
6694 static const char disasm_ps_tex[] = " ps_1_3\n"
6695 " tex t0\n"
6696 " nop\n";
6697 static const char disasm_ps_texld_1_4[] = " ps_1_4\n"
6698 " texld t0, c0\n"
6699 " nop\n";
6700 static const char disasm_ps_texld_2_0[] = " ps_2_0\n"
6701 " texld t0, c0, c1\n"
6702 " nop\n";
6703 static const char disasm_ps_texcoord[] = " ps_1_3\n"
6704 " texcoord t0\n"
6705 " nop\n";
6706 static const char disasm_ps_texcrd[] = " ps_1_4\n"
6707 " texcrd t0, c0\n"
6708 " nop\n";
6709 static const char disasm_ps_sincos_2_0[] = " ps_2_0\n"
6710 " sincos t0, c0, c1, c2\n"
6711 " nop\n";
6712 static const char disasm_ps_sincos_3_0[] = " ps_3_0\n"
6713 " sincos t0, c0\n"
6714 " nop\n";
6715 static const char disasm_vs_sincos_2_0[] = " vs_2_0\n"
6716 " sincos a0, c0, c1, c2\n"
6717 " nop\n";
6718 static const char disasm_vs_sincos_3_0[] = " vs_3_0\n"
6719 " sincos a0, c0\n"
6720 " nop\n";
6721 ID3DXBuffer *disassembly;
6722 HRESULT ret;
6723 char *ptr;
6724
6725 /* Check wrong parameters */
6727 ok(ret == D3DERR_INVALIDCALL, "Returned %#x, expected %#x\n", ret, D3DERR_INVALIDCALL);
6728 ret = D3DXDisassembleShader(NULL, FALSE, NULL, &disassembly);
6729 ok(ret == D3DERR_INVALIDCALL, "Returned %#x, expected %#x\n", ret, D3DERR_INVALIDCALL);
6731 ok(ret == D3DERR_INVALIDCALL, "Returned %#x, expected %#x\n", ret, D3DERR_INVALIDCALL);
6732
6733 /* Test with vertex shader */
6734 disassembly = (void *)0xdeadbeef;
6735 ret = D3DXDisassembleShader(simple_vs, FALSE, NULL, &disassembly);
6736 ok(ret == D3D_OK, "Failed with %#x\n", ret);
6737 ptr = ID3DXBuffer_GetBufferPointer(disassembly);
6738 ok(!memcmp(ptr, disasm_vs, sizeof(disasm_vs) - 1), /* compare beginning */
6739 "Returned '%s', expected '%s'\n", ptr, disasm_vs);
6740 ID3DXBuffer_Release(disassembly);
6741
6742 /* Test with pixel shader */
6743 disassembly = (void *)0xdeadbeef;
6744 ret = D3DXDisassembleShader(simple_ps, FALSE, NULL, &disassembly);
6745 ok(ret == D3D_OK, "Failed with %#x\n", ret);
6746 ptr = ID3DXBuffer_GetBufferPointer(disassembly);
6747 ok(!memcmp(ptr, disasm_ps, sizeof(disasm_ps) - 1), /* compare beginning */
6748 "Returned '%s', expected '%s'\n", ptr, disasm_ps);
6749 ID3DXBuffer_Release(disassembly);
6750
6751 /* Test tex instruction with pixel shader 1.3 */
6752 disassembly = (void *)0xdeadbeef;
6753 ret = D3DXDisassembleShader(ps_tex, FALSE, NULL, &disassembly);
6754 ok(ret == D3D_OK, "Failed with %#x\n", ret);
6755 ptr = ID3DXBuffer_GetBufferPointer(disassembly);
6756 ok(!memcmp(ptr, disasm_ps_tex, sizeof(disasm_ps_tex) - 1), /* compare beginning */
6757 "Returned '%s', expected '%s'\n", ptr, disasm_ps_tex);
6758 ID3DXBuffer_Release(disassembly);
6759
6760 /* Test texld instruction with pixel shader 1.4 */
6761 disassembly = (void *)0xdeadbeef;
6762 ret = D3DXDisassembleShader(ps_texld_1_4, FALSE, NULL, &disassembly);
6763 ok(ret == D3D_OK, "Failed with %#x\n", ret);
6764 ptr = ID3DXBuffer_GetBufferPointer(disassembly);
6765 ok(!memcmp(ptr, disasm_ps_texld_1_4, sizeof(disasm_ps_texld_1_4) - 1), /* compare beginning */
6766 "Returned '%s', expected '%s'\n", ptr, disasm_ps_texld_1_4);
6767 ID3DXBuffer_Release(disassembly);
6768
6769 /* Test texld instruction with pixel shader 2.0 */
6770 disassembly = (void *)0xdeadbeef;
6771 ret = D3DXDisassembleShader(ps_texld_2_0, FALSE, NULL, &disassembly);
6772 ok(ret == D3D_OK, "Failed with %#x\n", ret);
6773 ptr = ID3DXBuffer_GetBufferPointer(disassembly);
6774 ok(!memcmp(ptr, disasm_ps_texld_2_0, sizeof(disasm_ps_texld_2_0) - 1), /* compare beginning */
6775 "Returned '%s', expected '%s'\n", ptr, disasm_ps_texld_2_0);
6776 ID3DXBuffer_Release(disassembly);
6777
6778 /* Test texcoord instruction with pixel shader 1.3 */
6779 disassembly = (void *)0xdeadbeef;
6780 ret = D3DXDisassembleShader(ps_texcoord, FALSE, NULL, &disassembly);
6781 ok(ret == D3D_OK, "Failed with %#x\n", ret);
6782 ptr = ID3DXBuffer_GetBufferPointer(disassembly);
6783 ok(!memcmp(ptr, disasm_ps_texcoord, sizeof(disasm_ps_texcoord) - 1), /* compare beginning */
6784 "Returned '%s', expected '%s'\n", ptr, disasm_ps_texcoord);
6785 ID3DXBuffer_Release(disassembly);
6786
6787 /* Test texcrd instruction with pixel shader 1.4 */
6788 disassembly = (void *)0xdeadbeef;
6789 ret = D3DXDisassembleShader(ps_texcrd, FALSE, NULL, &disassembly);
6790 ok(ret == D3D_OK, "Failed with %#x\n", ret);
6791 ptr = ID3DXBuffer_GetBufferPointer(disassembly);
6792 ok(!memcmp(ptr, disasm_ps_texcrd, sizeof(disasm_ps_texcrd) - 1), /* compare beginning */
6793 "Returned '%s', expected '%s'\n", ptr, disasm_ps_texcrd);
6794 ID3DXBuffer_Release(disassembly);
6795
6796 /* Test sincos instruction pixel shader 2.0 */
6797 disassembly = (void *)0xdeadbeef;
6799 ok(ret == D3D_OK, "Failed with %#x\n", ret);
6800 ptr = ID3DXBuffer_GetBufferPointer(disassembly);
6801 ok(!memcmp(ptr, disasm_ps_sincos_2_0, sizeof(disasm_ps_sincos_2_0) - 1), /* compare beginning */
6802 "Returned '%s', expected '%s'\n", ptr, disasm_ps_sincos_2_0);
6803 ID3DXBuffer_Release(disassembly);
6804
6805 /* Test sincos instruction with pixel shader 3.0 */
6806 disassembly = (void *)0xdeadbeef;
6808 ok(ret == D3D_OK, "Failed with %#x\n", ret);
6809 ptr = ID3DXBuffer_GetBufferPointer(disassembly);
6810 ok(!memcmp(ptr, disasm_ps_sincos_3_0, sizeof(disasm_ps_sincos_3_0) - 1), /* compare beginning */
6811 "Returned '%s', expected '%s'\n", ptr, disasm_ps_sincos_3_0);
6812 ID3DXBuffer_Release(disassembly);
6813
6814 /* Test sincos instruction with pixel shader 2.0 */
6815 disassembly = (void *)0xdeadbeef;
6817 ok(ret == D3D_OK, "Failed with %#x\n", ret);
6818 ptr = ID3DXBuffer_GetBufferPointer(disassembly);
6819 ok(!memcmp(ptr, disasm_vs_sincos_2_0, sizeof(disasm_vs_sincos_2_0) - 1), /* compare beginning */
6820 "Returned '%s', expected '%s'\n", ptr, disasm_vs_sincos_2_0);
6821 ID3DXBuffer_Release(disassembly);
6822
6823 /* Test sincos instruction with pixel shader 3.0 */
6824 disassembly = (void *)0xdeadbeef;
6826 ok(ret == D3D_OK, "Failed with %#x\n", ret);
6827 ptr = ID3DXBuffer_GetBufferPointer(disassembly);
6828 ok(!memcmp(ptr, disasm_vs_sincos_3_0, sizeof(disasm_vs_sincos_3_0) - 1), /* compare beginning */
6829 "Returned '%s', expected '%s'\n", ptr, disasm_vs_sincos_3_0);
6830 ID3DXBuffer_Release(disassembly);
6831
6832}
6833
6835{
6850}
Type
Definition: Type.h:7
#define broken(x)
Definition: _sntprintf.h:21
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
#define ok(value,...)
Definition: atltest.h:57
#define skip(...)
Definition: atltest.h:64
#define START_TEST(x)
Definition: atltest.h:75
#define index(s, c)
Definition: various.h:29
#define ARRAY_SIZE(A)
Definition: main.h:33
#define U(x)
Definition: wordpad.c:45
#define int3
Definition: btrfs_drv.h:1745
static _Locale_mask_t ctable[256]
#define D3DXERR_INVALIDDATA
Definition: compiler.c:30
#define D3DPS_VERSION(major, minor)
Definition: d3d8types.h:474
@ D3DSWAPEFFECT_DISCARD
Definition: d3d8types.h:851
#define D3DVS_VERSION(major, minor)
Definition: d3d8types.h:475
@ D3DDEVTYPE_HAL
Definition: d3d8types.h:576
IDirect3D9 *WINAPI Direct3DCreate9(UINT SDKVersion)
Definition: d3d9.c:57
#define IDirect3DDevice9_GetPixelShaderConstantB(p, a, b, c)
Definition: d3d9.h:1621
#define IDirect3DDevice9_GetPixelShaderConstantI(p, a, b, c)
Definition: d3d9.h:1619
#define IDirect3DDevice9_GetVertexShaderConstantI(p, a, b, c)
Definition: d3d9.h:1604
#define IDirect3D9_CreateDevice(p, a, b, c, d, e, f)
Definition: d3d9.h:235
#define IDirect3DDevice9_GetPixelShaderConstantF(p, a, b, c)
Definition: d3d9.h:1617
#define IDirect3DDevice9_GetDeviceCaps(p, a)
Definition: d3d9.h:1514
#define IDirect3DDevice9_SetPixelShaderConstantI(p, a, b, c)
Definition: d3d9.h:1618
#define IDirect3DDevice9_SetVertexShaderConstantF(p, a, b, c)
Definition: d3d9.h:1601
#define IDirect3D9_Release(p)
Definition: d3d9.h:220
#define IDirect3DDevice9_SetPixelShaderConstantF(p, a, b, c)
Definition: d3d9.h:1616
#define IDirect3DDevice9_GetVertexShaderConstantB(p, a, b, c)
Definition: d3d9.h:1606
#define IDirect3DDevice9_Release(p)
Definition: d3d9.h:1508
#define IDirect3DDevice9_SetVertexShaderConstantI(p, a, b, c)
Definition: d3d9.h:1603
#define IDirect3DDevice9_SetPixelShaderConstantB(p, a, b, c)
Definition: d3d9.h:1620
#define IDirect3DDevice9_GetVertexShaderConstantF(p, a, b, c)
Definition: d3d9.h:1602
#define IDirect3DDevice9_SetVertexShaderConstantB(p, a, b, c)
Definition: d3d9.h:1605
#define MAXD3DDECLLENGTH
Definition: d3d9types.h:186
#define D3D_OK
Definition: d3d.h:106
#define D3DERR_INVALIDCALL
struct ID3DXBuffer ID3DXBuffer
Definition: d3dx8core.h:51
#define ID3DXBuffer_GetBufferPointer(p)
Definition: d3dx9core.h:85
#define ID3DXBuffer_Release(p)
Definition: d3dx9core.h:83
@ D3DXPC_SCALAR
Definition: d3dx9shader.h:62
@ D3DXPC_MATRIX_COLUMNS
Definition: d3dx9shader.h:65
@ D3DXPC_STRUCT
Definition: d3dx9shader.h:67
@ D3DXPC_MATRIX_ROWS
Definition: d3dx9shader.h:64
@ D3DXPC_VECTOR
Definition: d3dx9shader.h:63
@ D3DXPC_OBJECT
Definition: d3dx9shader.h:66
#define ID3DXConstantTable_GetBufferPointer(p)
Definition: d3dx9shader.h:179
#define ID3DXConstantTable_SetMatrixTransposeArray(p, a, b, c, d)
Definition: d3dx9shader.h:202
#define ID3DXConstantTable_SetBool(p, a, b, c)
Definition: d3dx9shader.h:190
#define ID3DXConstantTable_SetIntArray(p, a, b, c, d)
Definition: d3dx9shader.h:193
#define ID3DXConstantTable_GetBufferSize(p)
Definition: d3dx9shader.h:180
#define ID3DXConstantTable_GetDesc(p, a)
Definition: d3dx9shader.h:182
#define ID3DXConstantTable_GetSamplerIndex(p, a)
Definition: d3dx9shader.h:184
@ D3DXRS_FLOAT4
Definition: d3dx9shader.h:55
@ D3DXRS_BOOL
Definition: d3dx9shader.h:53
@ D3DXRS_INT4
Definition: d3dx9shader.h:54
@ D3DXRS_SAMPLER
Definition: d3dx9shader.h:56
#define ID3DXConstantTable_GetConstantElement(p, a, b)
Definition: d3dx9shader.h:187
#define ID3DXConstantTable_SetVectorArray(p, a, b, c, d)
Definition: d3dx9shader.h:197
#define ID3DXConstantTable_Release(p)
Definition: d3dx9shader.h:177
const char * D3DXHANDLE
Definition: d3dx9shader.h:48
#define ID3DXConstantTable_SetMatrixPointerArray(p, a, b, c, d)
Definition: d3dx9shader.h:200
#define ID3DXConstantTable_SetMatrixArray(p, a, b, c, d)
Definition: d3dx9shader.h:199
#define ID3DXConstantTable_GetConstantDesc(p, a, b, c)
Definition: d3dx9shader.h:183
#define ID3DXConstantTable_SetValue(p, a, b, c, d)
Definition: d3dx9shader.h:189
#define ID3DXConstantTable_SetMatrixTranspose(p, a, b, c)
Definition: d3dx9shader.h:201
#define ID3DXConstantTable_SetBoolArray(p, a, b, c, d)
Definition: d3dx9shader.h:191
enum _D3DXREGISTER_SET D3DXREGISTER_SET
#define ID3DXConstantTable_SetDefaults(p, a)
Definition: d3dx9shader.h:188
#define ID3DXConstantTable_SetMatrixTransposePointerArray(p, a, b, c, d)
Definition: d3dx9shader.h:203
#define ID3DXConstantTable_SetVector(p, a, b, c)
Definition: d3dx9shader.h:196
#define ID3DXConstantTable_SetFloat(p, a, b, c)
Definition: d3dx9shader.h:194
#define ID3DXConstantTable_SetFloatArray(p, a, b, c, d)
Definition: d3dx9shader.h:195
#define ID3DXConstantTable_SetMatrix(p, a, b, c)
Definition: d3dx9shader.h:198
@ D3DXPT_SAMPLER3D
Definition: d3dx9shader.h:86
@ D3DXPT_FLOAT
Definition: d3dx9shader.h:76
@ D3DXPT_BOOL
Definition: d3dx9shader.h:74
@ D3DXPT_INT
Definition: d3dx9shader.h:75
@ D3DXPT_VOID
Definition: d3dx9shader.h:73
@ D3DXPT_SAMPLER2D
Definition: d3dx9shader.h:85
#define ID3DXConstantTable_GetConstant(p, a, b)
Definition: d3dx9shader.h:185
#define ID3DXConstantTable_SetInt(p, a, b, c)
Definition: d3dx9shader.h:192
#define ID3DXConstantTable_GetConstantByName(p, a, b)
Definition: d3dx9shader.h:186
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
HRESULT WINAPI D3DXGetShaderConstantTableEx(const DWORD *byte_code, DWORD flags, ID3DXConstantTable **constant_table)
Definition: shader.c:1993
HRESULT WINAPI D3DXCreateFragmentLinkerEx(IDirect3DDevice9 *device, UINT size, DWORD flags, ID3DXFragmentLinker **linker)
Definition: shader.c:2302
UINT WINAPI D3DXGetShaderSize(const DWORD *byte_code)
Definition: shader.c:91
HRESULT WINAPI D3DXGetShaderOutputSemantics(const DWORD *byte_code, D3DXSEMANTIC *semantics, UINT *count)
Definition: shader.c:3218
HRESULT WINAPI D3DXFindShaderComment(const DWORD *byte_code, DWORD fourcc, const void **data, UINT *size)
Definition: shader.c:150
DWORD WINAPI D3DXGetShaderVersion(const DWORD *byte_code)
Definition: shader.c:114
HRESULT WINAPI D3DXGetShaderSamplers(const DWORD *byte_code, const char **samplers, UINT *count)
Definition: shader.c:2332
HRESULT WINAPI D3DXDisassembleShader(const DWORD *shader, BOOL colorcode, const char *comments, ID3DXBuffer **disassembly)
Definition: shader.c:2645
HRESULT WINAPI D3DXGetShaderInputSemantics(const DWORD *byte_code, D3DXSEMANTIC *semantics, UINT *count)
Definition: shader.c:3211
HRESULT WINAPI D3DXGetShaderConstantTable(const DWORD *byte_code, ID3DXConstantTable **constant_table)
Definition: shader.c:2111
HRESULT WINAPI D3DXCreateFragmentLinker(IDirect3DDevice9 *device, UINT size, ID3DXFragmentLinker **linker)
Definition: shader.c:2325
#define MAKEFOURCC(ch0, ch1, ch2, ch3)
Definition: dmdls.h:24
superblock * sb
Definition: btrfs.c:4261
int main()
Definition: test.c:6
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint start
Definition: gl.h:1545
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
const GLdouble * v
Definition: gl.h:2040
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLdouble s
Definition: gl.h:2039
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
GLsizeiptr size
Definition: glext.h:5919
GLdouble n
Definition: glext.h:7729
GLuint res
Definition: glext.h:9613
GLuint * samplers
Definition: glext.h:7280
GLuint sampler
Definition: glext.h:7283
GLuint shader
Definition: glext.h:6030
GLuint index
Definition: glext.h:6031
GLfloat f
Definition: glext.h:7540
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLuint in
Definition: glext.h:9616
GLfloat GLfloat p
Definition: glext.h:8902
GLubyte GLubyte GLubyte GLubyte w
Definition: glext.h:6102
GLdouble GLdouble z
Definition: glext.h:5874
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
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 vn
Definition: glfuncs.h:238
_Must_inspect_result_ _In_ USAGE _In_ USHORT _In_ USAGE Usage
Definition: hidpi.h:384
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
#define f
Definition: ke_i.h:83
#define _11
Definition: ke_i.h:85
#define b
Definition: ke_i.h:79
#define for
Definition: utility.h:88
static PVOID ptr
Definition: dispmode.c:27
ULONG nr
Definition: thread.c:7
UCHAR ab[sizeof("Hello World!") -1]
Definition: fdi.c:106
static BYTE cn[]
Definition: cert.c:2938
static CRYPT_DATA_BLOB b1[]
Definition: msg.c:573
static const WCHAR desc[]
Definition: protectdata.c:36
BOOL expected
Definition: store.c:2063
static const struct registerset_test registerset_test_vector_float[]
Definition: shader.c:2568
static const struct registerset_constants registerset_constants_matrix_column_clamp[]
Definition: shader.c:5651
static const DWORD registerset_blob_vector_array[]
Definition: shader.c:2746
static const struct registerset_constants registerset_constants_scalar_bool_float[]
Definition: shader.c:2171
static const DWORD ps_texcoord[]
Definition: shader.c:6644
static const struct registerset_test registerset_test_vector_array_float[]
Definition: shader.c:2779
static const DWORD registerset_blob_scalar_array[]
Definition: shader.c:2255
static const DWORD ps_texcrd[]
Definition: shader.c:6650
static const DWORD shader_with_ctab_constants[]
Definition: shader.c:73
static const struct registerset_test registerset_test_row_array_bool[]
Definition: shader.c:4260
const struct @1649 test_get_shader_constant_variables_data[]
static const struct registerset_constants registerset_constants_special_int[]
Definition: shader.c:5507
static const float mat3_default_value[]
Definition: shader.c:248
static const struct registerset_constants registerset_constants_struct_bool[]
Definition: shader.c:4656
static const struct registerset_test registerset_test_row_array_bool_float[]
Definition: shader.c:4426
const DWORD floats[1024]
Definition: shader.c:6191
static const struct registerset_constants registerset_constants_scalar_array_bool_float[]
Definition: shader.c:2421
static const struct registerset_constants registerset_constants_row_int_float[]
Definition: shader.c:3904
static const DWORD shader_invalid[]
Definition: shader.c:28
unsigned int float_count
Definition: shader.c:6188
static const struct registerset_constants registerset_constants_struct_struct_bool_float[]
Definition: shader.c:5426
static const struct registerset_constants registerset_constants_column_array_int[]
Definition: shader.c:3413
static void test_shader_semantics(void)
Definition: shader.c:6415
static const struct registerset_test registerset_test_struct_int_float[]
Definition: shader.c:4710
static UINT registerset_compare(IDirect3DDevice9 *device, BOOL is_vs, D3DXREGISTER_SET regset, UINT start, UINT in_count, const DWORD *expected)
Definition: shader.c:5890
static const struct registerset_test registerset_test_scalar_int[]
Definition: shader.c:2095
static const struct registerset_test registerset_test_matrix_column_clamp[]
Definition: shader.c:5657
static const struct registerset_test registerset_test_row_float[]
Definition: shader.c:3755
static void test_get_shader_size(void)
Definition: shader.c:302
const char * var
Definition: shader.c:5666
static const DWORD registerset_blob_special_int[]
Definition: shader.c:5492
static const struct registerset_constants registerset_constants_scalar_float[]
Definition: shader.c:2057
static const struct registerset_test registerset_test_vector_int_float[]
Definition: shader.c:2700
static const DWORD registerset_blob_row[]
Definition: shader.c:3723
Type
Definition: shader.c:1966
@ SetMatrixTransposePointerArray
Definition: shader.c:1968
@ SetMatrixArray
Definition: shader.c:1967
@ SetIntArray
Definition: shader.c:1966
@ SetVectorArray
Definition: shader.c:1967
@ SetMatrixPointerArray
Definition: shader.c:1968
@ SetBoolArray
Definition: shader.c:1966
@ SetBool
Definition: shader.c:1966
@ SetVector
Definition: shader.c:1967
@ SetMatrixTransposeArray
Definition: shader.c:1967
@ SetMatrix
Definition: shader.c:1966
@ SetValue
Definition: shader.c:1968
@ SetFloat
Definition: shader.c:1966
@ SetFloatArray
Definition: shader.c:1966
@ SetInt
Definition: shader.c:1966
@ SetMatrixTranspose
Definition: shader.c:1967
static const DWORD simple_7ffe[]
Definition: shader.c:36
static void test_constant_table(const char *test_name, const DWORD *ctable_fn, const D3DXCONSTANT_DESC *expecteds, UINT count)
Definition: shader.c:571
static const struct registerset_constants registerset_constants_vector_array_bool_float[]
Definition: shader.c:2925
static const struct registerset_test registerset_test_struct_array_int_float[]
Definition: shader.c:5044
static void test_SetValue(IDirect3DDevice9 *device)
Definition: shader.c:1275
static const DWORD registerset_blob_column[]
Definition: shader.c:3045
static const DWORD registerset_blob_struct[]
Definition: shader.c:4530
static const struct registerset_test registerset_test_scalar_bool[]
Definition: shader.c:2209
static const struct registerset_test registerset_test_vector_array_bool[]
Definition: shader.c:2881
const struct registerset_constants * constants
Definition: shader.c:5672
static const DWORD test_get_shader_constant_variables_blob[]
Definition: shader.c:1700
static const struct registerset_constants registerset_constants_row_array_int_float[]
Definition: shader.c:4326
static const struct @1650 registerset_data[]
#define FCC_TEXT
Definition: shader.c:23
static const struct registerset_constants registerset_constants_column_array_bool_float[]
Definition: shader.c:3632
static const struct registerset_constants registerset_constants_vector_array_bool[]
Definition: shader.c:2874
static const struct registerset_constants registerset_constants_struct_struct_int_float[]
Definition: shader.c:5374
static const DWORD simple_vs[]
Definition: shader.c:40
static void test_get_sampler_index(void)
Definition: shader.c:1499
static void test_find_shader_comment(void)
Definition: shader.c:334
static const struct registerset_test registerset_test_struct_struct_bool[]
Definition: shader.c:5335
static const DWORD registerset_blob_vector[]
Definition: shader.c:2541
static const struct registerset_constants registerset_constants_row_float[]
Definition: shader.c:3750
static const struct registerset_constants registerset_constants_row_array_bool_float[]
Definition: shader.c:4419
UINT constant_count
Definition: shader.c:5673
static const struct registerset_test registerset_test_struct_int[]
Definition: shader.c:4616
static const DWORD fx_shader_with_ctab[]
Definition: shader.c:283
static const DWORD shader_empty[]
Definition: shader.c:30
static const DWORD ctab_samplers[]
Definition: shader.c:260
static const struct registerset_constants registerset_constants_struct_int[]
Definition: shader.c:4609
static void test_get_shader_samplers(void)
Definition: shader.c:1592
static const struct registerset_test registerset_test_struct_array_int[]
Definition: shader.c:4922
static const D3DXCONSTANT_DESC ctab_samplers_expected[]
Definition: shader.c:278
static const DWORD registerset_blob_row_array[]
Definition: shader.c:4032
static const struct registerset_constants registerset_constants_vector_array_int_float[]
Definition: shader.c:2976
static const struct registerset_test registerset_test_scalar_bool_float[]
Definition: shader.c:2176
static void test_registerset_defaults(void)
Definition: shader.c:6320
static const struct registerset_test registerset_test_vector_array_int_float[]
Definition: shader.c:2983
static const struct registerset_test registerset_test_column_array_bool[]
Definition: shader.c:3493
static const float flt_default_value[]
Definition: shader.c:251
static const DWORD ps_sincos_3_0[]
Definition: shader.c:6662
static const DWORD shader_with_ctab[]
Definition: shader.c:58
static const struct registerset_constants registerset_constants_column_int_float[]
Definition: shader.c:3202
static const DWORD simple_ps[]
Definition: shader.c:49
static const float vec4_default_value[]
Definition: shader.c:250
static const struct registerset_constants registerset_constants_row_bool[]
Definition: shader.c:3860
static const struct registerset_test registerset_test_column_int[]
Definition: shader.c:3119
static const DWORD simple_7fff[]
Definition: shader.c:38
static const struct registerset_test registerset_test_struct_struct_float[]
Definition: shader.c:5223
static void registerset_clear(IDirect3DDevice9 *device)
Definition: shader.c:5864
static void test_registerset(void)
Definition: shader.c:6015
static const struct registerset_test registerset_test_struct_bool[]
Definition: shader.c:4663
static const struct registerset_constants registerset_constants_struct_struct_int[]
Definition: shader.c:5265
static const struct registerset_constants registerset_constants_column_array_int_float[]
Definition: shader.c:3559
static void test_setting_matrices_table(IDirect3DDevice9 *device)
Definition: shader.c:865
static const struct registerset_constants registerset_constants_struct_bool_float[]
Definition: shader.c:4750
static const float arr_default_value[]
Definition: shader.c:249
static const struct registerset_test registerset_test_scalar_array_bool_float[]
Definition: shader.c:2428
static void test_get_shader_constant_variables(void)
Definition: shader.c:1830
static const struct registerset_constants registerset_constants_row_int[]
Definition: shader.c:3805
static const struct registerset_test registerset_test_struct_struct_bool_float[]
Definition: shader.c:5436
static UINT registerset_compare_all(IDirect3DDevice9 *device, BOOL is_vs, D3DXREGISTER_SET regset, UINT start, UINT in_count, const DWORD *expected)
Definition: shader.c:5945
static const struct registerset_constants registerset_constants_struct_array_bool_float[]
Definition: shader.c:5092
static const struct registerset_test registerset_test_struct_array_bool[]
Definition: shader.c:4983
static const DWORD get_shader_samplers_blob[]
Definition: shader.c:1551
static const DWORD registerset_blob_column_array[]
Definition: shader.c:3309
UINT test_count
Definition: shader.c:5671
static const DWORD registerset_blob_matrix_column_clamp[]
Definition: shader.c:5636
static const struct registerset_test registerset_test_column_bool_float[]
Definition: shader.c:3252
static const DWORD ps_sincos_2_0[]
Definition: shader.c:6656
static const DWORD registerset_blob_scalar[]
Definition: shader.c:2035
static const struct registerset_test registerset_test_vector_bool[]
Definition: shader.c:2634
static const struct registerset_constants registerset_constants_column_array_bool[]
Definition: shader.c:3486
static const DWORD ctab_matrices[]
Definition: shader.c:116
static const DWORD registerset_blob_struct_struct[]
Definition: shader.c:5169
static const DWORD vs_sincos_3_0[]
Definition: shader.c:6674
static const struct registerset_constants registerset_constants_row_array_float[]
Definition: shader.c:4067
static const struct registerset_constants registerset_constants_column_int[]
Definition: shader.c:3114
static const struct registerset_constants registerset_constants_scalar_array_int_float[]
Definition: shader.c:2472
static const struct registerset_test registerset_test_vector_bool_float[]
Definition: shader.c:2667
static const struct registerset_test registerset_test_row_array_int_float[]
Definition: shader.c:4333
static const struct registerset_test registerset_test_vector_int[]
Definition: shader.c:2601
static const struct @1651 registerset_defaults_data[]
static void test_constant_tables(void)
Definition: shader.c:649
static const DWORD ctab_matrices2[]
Definition: shader.c:140
unsigned int bool_count
Definition: shader.c:6190
static const struct registerset_test registerset_test_row_array_float[]
Definition: shader.c:4074
static const struct registerset_test registerset_test_struct_float[]
Definition: shader.c:4569
static const struct registerset_test registerset_test_scalar_array_float[]
Definition: shader.c:2287
static const struct registerset_constants registerset_constants_bigvec_float[]
Definition: shader.c:5537
static const struct registerset_test registerset_test_scalar_array_int_float[]
Definition: shader.c:2479
static const struct registerset_test registerset_test_row_int[]
Definition: shader.c:3810
const char * name
Definition: shader.c:5665
static const struct registerset_test registerset_test_column_array_bool_float[]
Definition: shader.c:3639
static const struct registerset_constants registerset_constants_struct_struct_bool[]
Definition: shader.c:5325
static const DWORD ctab_basic[]
Definition: shader.c:90
static const DWORD ps_texld_1_4[]
Definition: shader.c:6632
static const struct registerset_constants registerset_constants_scalar_int[]
Definition: shader.c:2090
static const struct registerset_constants registerset_constants_column_bool_float[]
Definition: shader.c:3247
static const struct registerset_constants registerset_constants_vector_bool[]
Definition: shader.c:2629
static const struct registerset_constants registerset_constants_scalar_int_float[]
Definition: shader.c:2138
static const struct registerset_constants registerset_constants_vector_bool_float[]
Definition: shader.c:2662
static const struct registerset_test registerset_test_vector_array_int[]
Definition: shader.c:2830
static const struct registerset_test registerset_test_column_array_int_float[]
Definition: shader.c:3566
static const struct registerset_test registerset_test_struct_array_float[]
Definition: shader.c:4863
static const DWORD vs_sincos_2_0[]
Definition: shader.c:6668
static const D3DXCONSTANT_DESC ctab_matrices_expected[]
Definition: shader.c:134
static const DWORD ps_texld_2_0[]
Definition: shader.c:6638
UINT ctaboffset
Definition: shader.c:1768
static const struct registerset_test registerset_test_struct_struct_int[]
Definition: shader.c:5275
static const struct registerset_constants registerset_constants_scalar_bool[]
Definition: shader.c:2204
static const DWORD simple_tx[]
Definition: shader.c:34
static const struct registerset_test registerset_test_vector_array_bool_float[]
Definition: shader.c:2932
static const D3DXCONSTANT_DESC ctab_basic_expected[]
Definition: shader.c:109
static void test_setting_basic_table(IDirect3DDevice9 *device)
Definition: shader.c:665
static const struct registerset_constants registerset_constants_vector_array_float[]
Definition: shader.c:2772
static const struct registerset_test registerset_test_scalar_array_int[]
Definition: shader.c:2338
static const struct registerset_constants registerset_constants_vector_int_float[]
Definition: shader.c:2695
const DWORD * blob
Definition: shader.c:5669
static const struct registerset_test registerset_test_scalar_float[]
Definition: shader.c:2062
D3DXREGISTER_SET regset
Definition: shader.c:5668
static const struct registerset_test registerset_test_column_float[]
Definition: shader.c:3075
const DWORD bools[16]
Definition: shader.c:6193
static const struct registerset_test registerset_test_scalar_int_float[]
Definition: shader.c:2143
static const struct registerset_test registerset_test_struct_bool_float[]
Definition: shader.c:4757
static const D3DXCONSTANT_DESC ctab_with_default_values_expected[]
Definition: shader.c:253
unsigned int int_count
Definition: shader.c:6189
static const struct registerset_test registerset_test_row_bool_float[]
Definition: shader.c:3964
static const struct registerset_constants registerset_constants_row_bool_float[]
Definition: shader.c:3959
static const struct registerset_constants registerset_constants_struct_struct_float[]
Definition: shader.c:5213
static void test_get_shader_version(void)
Definition: shader.c:318
static const struct registerset_test registerset_test_column_array_float[]
Definition: shader.c:3347
static const DWORD ctab_arrays[]
Definition: shader.c:174
static const DWORD registerset_blob_bigvec[]
Definition: shader.c:5526
static const struct registerset_constants registerset_constants_column_array_float[]
Definition: shader.c:3340
static void test_setting_constants(void)
Definition: shader.c:1449
static const struct registerset_test registerset_test_column_int_float[]
Definition: shader.c:3207
static const struct registerset_test registerset_test_bigvec_float[]
Definition: shader.c:5552
static const struct registerset_test registerset_test_struct_array_bool_float[]
Definition: shader.c:5103
static const struct registerset_constants registerset_constants_row_array_int[]
Definition: shader.c:4160
static const struct registerset_constants registerset_constants_struct_array_int_float[]
Definition: shader.c:5033
static const struct registerset_constants registerset_constants_vector_int[]
Definition: shader.c:2596
static void test_setting_arrays_table(IDirect3DDevice9 *device)
Definition: shader.c:1086
static void test_get_shader_constant_table_ex(void)
Definition: shader.c:404
static const struct registerset_constants registerset_constants_scalar_array_bool[]
Definition: shader.c:2382
static HRESULT registerset_apply(ID3DXConstantTable *ctable, IDirect3DDevice9 *device, D3DXHANDLE constant, UINT index, DWORD count, enum Type type)
Definition: shader.c:5964
static const struct registerset_constants registerset_constants_column_bool[]
Definition: shader.c:3158
static const DWORD shader_zero[]
Definition: shader.c:26
static const struct registerset_test registerset_test_scalar_array_bool[]
Definition: shader.c:2389
static void test_disassemble_shader(void)
Definition: shader.c:6680
static const struct registerset_constants registerset_constants_vector_array_int[]
Definition: shader.c:2823
static const DWORD registerset_blob_struct_array[]
Definition: shader.c:4815
#define FCC_CTAB
Definition: shader.c:24
static const DWORD simple_fx[]
Definition: shader.c:32
static const struct registerset_constants registerset_constants_struct_array_float[]
Definition: shader.c:4852
static const struct registerset_constants registerset_constants_column_float[]
Definition: shader.c:3070
static const struct registerset_constants registerset_constants_struct_array_int[]
Definition: shader.c:4911
static const DWORD ps_tex[]
Definition: shader.c:6626
static const struct registerset_constants registerset_constants_struct_array_bool[]
Definition: shader.c:4972
const DWORD ints[256]
Definition: shader.c:6192
const char * fullname
Definition: shader.c:1766
static const D3DXCONSTANT_DESC ctab_matrices2_expected[]
Definition: shader.c:166
static const D3DXCONSTANT_DESC ctab_arrays_expected[]
Definition: shader.c:201
static const struct registerset_test registerset_test_row_array_int[]
Definition: shader.c:4167
static const struct registerset_constants registerset_constants_struct_float[]
Definition: shader.c:4562
static const DWORD registerset_test_input[][REGISTER_OUTPUT_SIZE]
Definition: shader.c:1987
static const struct registerset_test registerset_test_row_int_float[]
Definition: shader.c:3909
static void test_fragment_linker(void)
Definition: shader.c:6578
const struct registerset_test * tests
Definition: shader.c:5670
static const struct registerset_test registerset_test_column_array_int[]
Definition: shader.c:3420
static const struct registerset_constants registerset_constants_scalar_array_int[]
Definition: shader.c:2331
#define REGISTER_OUTPUT_SIZE
Definition: shader.c:1964
static const struct registerset_constants registerset_constants_struct_int_float[]
Definition: shader.c:4703
static const DWORD ctab_with_default_values[]
Definition: shader.c:209
static const DWORD shader_with_invalid_ctab[]
Definition: shader.c:66
static const struct registerset_constants registerset_constants_vector_float[]
Definition: shader.c:2563
static const struct registerset_constants registerset_constants_row_array_bool[]
Definition: shader.c:4253
static const struct registerset_test registerset_test_column_bool[]
Definition: shader.c:3163
static const struct registerset_test registerset_test_struct_struct_int_float[]
Definition: shader.c:5384
static const float mat4_default_value[]
Definition: shader.c:247
static const struct registerset_test registerset_test_row_bool[]
Definition: shader.c:3865
static void test_SetDefaults(IDirect3DDevice9 *device)
Definition: shader.c:1198
static const struct registerset_constants registerset_constants_scalar_array_float[]
Definition: shader.c:2280
static const char * test_name
Definition: run.c:177
static HMODULE MODULEINFO DWORD cb
Definition: module.c:33
static IHTMLWindow2 * window
Definition: events.c:77
int k
Definition: mpi.c:3369
static const struct stream_output expected_output[]
Definition: msacm.c:1056
unsigned int UINT
Definition: ndis.h:50
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
#define err(...)
static FILE * out
Definition: regtests2xml.c:44
#define test
Definition: rosglue.h:37
int n1
Definition: dwarfget.c:147
#define D3DADAPTER_DEFAULT
Definition: d3d8.h:57
#define D3D_SDK_VERSION
Definition: d3d8.h:56
#define D3DCREATE_SOFTWARE_VERTEXPROCESSING
Definition: d3d8.h:44
#define D3DCREATE_MIXED_VERTEXPROCESSING
Definition: d3d8.h:46
#define S(x)
Definition: test.h:217
#define f1(x, y, z)
Definition: sha1.c:30
#define f4(x, y, z)
Definition: sha1.c:33
#define memset(x, y, z)
Definition: compat.h:39
int zero
Definition: sehframes.cpp:29
HRESULT hr
Definition: shlfolder.c:183
DWORD PixelShaderVersion
Definition: d3d9caps.h:315
DWORD VertexShaderVersion
Definition: d3d9caps.h:313
D3DSWAPEFFECT SwapEffect
Definition: d3d8types.h:1128
const void * DefaultValue
Definition: d3dx9shader.h:116
D3DXPARAMETER_CLASS Class
Definition: d3dx9shader.h:109
D3DXREGISTER_SET RegisterSet
Definition: d3dx9shader.h:106
D3DXPARAMETER_TYPE Type
Definition: d3dx9shader.h:110
const char * Name
Definition: d3dx9shader.h:105
Definition: image.c:134
Definition: devices.h:37
Definition: name.c:39
D3DXCONSTANT_DESC desc
Definition: shader.c:1983
const char * fullname
Definition: shader.c:1982
UINT in_count_min
Definition: shader.c:1974
UINT in_count_max
Definition: shader.c:1975
enum Type type
Definition: shader.c:1972
DWORD out[REGISTER_OUTPUT_SIZE]
Definition: shader.c:1977
float FLOAT
Definition: typedefs.h:69
int32_t INT
Definition: typedefs.h:58
uint32_t ULONG
Definition: typedefs.h:59
Definition: icm.h:105
Definition: pdh_main.c:94
int ret
#define ZeroMemory
Definition: winbase.h:1712
#define S_FALSE
Definition: winerror.h:2357
static int init
Definition: wintirpc.c:33
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
Definition: winuser.h:4315
BOOL WINAPI DestroyWindow(_In_ HWND)