d3d10/tests: Add IsValid() checks to effect variable type and class test.
[wine/hacks.git] / dlls / d3d10 / tests / effect.c
blob680aa6d0a202677ac2cb1cb9952686e1ccf16e87
1 /*
2 * Copyright 2008 Henri Verbeet for CodeWeavers
3 * Copyright 2009 Rico Schüller
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.
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.
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
20 #define COBJMACROS
21 #include "d3d10.h"
22 #include "wine/test.h"
24 static ID3D10Device *create_device(void)
26 ID3D10Device *device;
28 if (SUCCEEDED(D3D10CreateDevice(NULL, D3D10_DRIVER_TYPE_HARDWARE, NULL, 0, D3D10_SDK_VERSION, &device)))
30 trace("Created a HW device\n");
31 return device;
34 trace("Failed to create a HW device, trying REF\n");
35 if (SUCCEEDED(D3D10CreateDevice(NULL, D3D10_DRIVER_TYPE_REFERENCE, NULL, 0, D3D10_SDK_VERSION, &device)))
37 trace("Created a REF device\n");
38 return device;
41 trace("Failed to create a device, returning NULL\n");
42 return NULL;
46 * test_effect_constant_buffer_type
48 #if 0
49 cbuffer cb
51 float f1 : SV_POSITION;
52 float f2 : COLOR0;
54 #endif
55 static DWORD fx_test_ecbt[] = {
56 0x43425844, 0xc92a4732, 0xbd0d68c0, 0x877f71ee,
57 0x871fc277, 0x00000001, 0x0000010a, 0x00000001,
58 0x00000024, 0x30315846, 0x000000de, 0xfeff1001,
59 0x00000001, 0x00000002, 0x00000000, 0x00000000,
60 0x00000000, 0x00000000, 0x00000000, 0x00000042,
61 0x00000000, 0x00000000, 0x00000000, 0x00000000,
62 0x00000000, 0x00000000, 0x00000000, 0x00000000,
63 0x00000000, 0x00000000, 0x00000000, 0x66006263,
64 0x74616f6c, 0x00000700, 0x00000100, 0x00000000,
65 0x00000400, 0x00001000, 0x00000400, 0x00090900,
66 0x00316600, 0x505f5653, 0x5449534f, 0x004e4f49,
67 0x43003266, 0x524f4c4f, 0x00040030, 0x00100000,
68 0x00000000, 0x00020000, 0xffff0000, 0x0000ffff,
69 0x00290000, 0x000d0000, 0x002c0000, 0x00000000,
70 0x00000000, 0x00000000, 0x00000000, 0x00380000,
71 0x000d0000, 0x003b0000, 0x00040000, 0x00000000,
72 0x00000000, 0x00000000, 0x52590000,
75 static void test_effect_constant_buffer_type(ID3D10Device *device)
77 ID3D10Effect *effect;
78 ID3D10EffectConstantBuffer *constantbuffer;
79 ID3D10EffectType *type, *type2, *null_type;
80 D3D10_EFFECT_TYPE_DESC type_desc;
81 HRESULT hr;
82 LPCSTR string;
83 unsigned int i;
86 * Don't use sizeof(fx_test_ecbt), use fx_test_ecbt[6] as size,
87 * because the DWORD fx_test_ecbt[] has only complete DWORDs and
88 * so it could happen that there are padded bytes at the end.
90 * The fx size (fx_test_ecbt[6]) could be up to 3 BYTEs smaller
91 * than the sizeof(fx_test_ecbt).
93 hr = D3D10CreateEffectFromMemory(fx_test_ecbt, fx_test_ecbt[6], 0, device, NULL, &effect);
94 ok(SUCCEEDED(hr), "D3D10CreateEffectFromMemory failed (%x)\n", hr);
96 constantbuffer = effect->lpVtbl->GetConstantBufferByIndex(effect, 0);
97 type = constantbuffer->lpVtbl->GetType(constantbuffer);
99 hr = type->lpVtbl->GetDesc(type, &type_desc);
100 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
102 ok(strcmp(type_desc.TypeName, "cbuffer") == 0, "TypeName is \"%s\", expected \"cbuffer\"\n", type_desc.TypeName);
103 ok(type_desc.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_OBJECT);
104 ok(type_desc.Type == D3D10_SVT_CBUFFER, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_CBUFFER);
105 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
106 ok(type_desc.Members == 2, "Members is %u, expected 2\n", type_desc.Members);
107 ok(type_desc.Rows == 0, "Rows is %u, expected 0\n", type_desc.Rows);
108 ok(type_desc.Columns == 0, "Columns is %u, expected 0\n", type_desc.Columns);
109 ok(type_desc.PackedSize == 0x8, "PackedSize is %#x, expected 0x8\n", type_desc.PackedSize);
110 ok(type_desc.UnpackedSize == 0x10, "UnpackedSize is %#x, expected 0x10\n", type_desc.UnpackedSize);
111 ok(type_desc.Stride == 0x10, "Stride is %#x, expected 0x10\n", type_desc.Stride);
113 string = type->lpVtbl->GetMemberName(type, 0);
114 ok(strcmp(string, "f1") == 0, "GetMemberName is \"%s\", expected \"f1\"\n", string);
116 string = type->lpVtbl->GetMemberSemantic(type, 0);
117 ok(strcmp(string, "SV_POSITION") == 0, "GetMemberSemantic is \"%s\", expected \"SV_POSITION\"\n", string);
119 string = type->lpVtbl->GetMemberName(type, 1);
120 ok(strcmp(string, "f2") == 0, "GetMemberName is \"%s\", expected \"f2\"\n", string);
122 string = type->lpVtbl->GetMemberSemantic(type, 1);
123 ok(strcmp(string, "COLOR0") == 0, "GetMemberSemantic is \"%s\", expected \"COLOR0\"\n", string);
125 for (i = 0; i < 3; ++i)
127 if (i == 0) type2 = type->lpVtbl->GetMemberTypeByIndex(type, 0);
128 else if (i == 1) type2 = type->lpVtbl->GetMemberTypeByName(type, "f1");
129 else type2 = type->lpVtbl->GetMemberTypeBySemantic(type, "SV_POSITION");
131 hr = type2->lpVtbl->GetDesc(type2, &type_desc);
132 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
134 ok(strcmp(type_desc.TypeName, "float") == 0, "TypeName is \"%s\", expected \"float\"\n", type_desc.TypeName);
135 ok(type_desc.Class == D3D10_SVC_SCALAR, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_SCALAR);
136 ok(type_desc.Type == D3D10_SVT_FLOAT, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_FLOAT);
137 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
138 ok(type_desc.Members == 0, "Members is %u, expected 0\n", type_desc.Members);
139 ok(type_desc.Rows == 1, "Rows is %u, expected 1\n", type_desc.Rows);
140 ok(type_desc.Columns == 1, "Columns is %u, expected 1\n", type_desc.Columns);
141 ok(type_desc.PackedSize == 0x4, "PackedSize is %#x, expected 0x4\n", type_desc.PackedSize);
142 ok(type_desc.UnpackedSize == 0x4, "UnpackedSize is %#x, expected 0x4\n", type_desc.UnpackedSize);
143 ok(type_desc.Stride == 0x10, "Stride is %#x, expected 0x10\n", type_desc.Stride);
145 if (i == 0) type2 = type->lpVtbl->GetMemberTypeByIndex(type, 1);
146 else if (i == 1) type2 = type->lpVtbl->GetMemberTypeByName(type, "f2");
147 else type2 = type->lpVtbl->GetMemberTypeBySemantic(type, "COLOR0");
149 hr = type2->lpVtbl->GetDesc(type2, &type_desc);
150 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
152 ok(strcmp(type_desc.TypeName, "float") == 0, "TypeName is \"%s\", expected \"float\"\n", type_desc.TypeName);
153 ok(type_desc.Class == D3D10_SVC_SCALAR, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_SCALAR);
154 ok(type_desc.Type == D3D10_SVT_FLOAT, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_FLOAT);
155 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
156 ok(type_desc.Members == 0, "Members is %u, expected 0\n", type_desc.Members);
157 ok(type_desc.Rows == 1, "Rows is %u, expected 1\n", type_desc.Rows);
158 ok(type_desc.Columns == 1, "Columns is %u, expected 1\n", type_desc.Columns);
159 ok(type_desc.PackedSize == 0x4, "PackedSize is %#x, expected 0x4\n", type_desc.PackedSize);
160 ok(type_desc.UnpackedSize == 0x4, "UnpackedSize is %#x, expected 0x4\n", type_desc.UnpackedSize);
161 ok(type_desc.Stride == 0x10, "Stride is %#x, expected 0x10\n", type_desc.Stride);
164 type2 = type->lpVtbl->GetMemberTypeByIndex(type, 0);
165 hr = type2->lpVtbl->GetDesc(type2, NULL);
166 ok(hr == E_INVALIDARG, "GetDesc got %x, expected %x\n", hr, E_INVALIDARG);
168 null_type = type->lpVtbl->GetMemberTypeByIndex(type, 3);
169 hr = null_type->lpVtbl->GetDesc(null_type, &type_desc);
170 ok(hr == E_FAIL, "GetDesc got %x, expected %x\n", hr, E_FAIL);
172 hr = null_type->lpVtbl->GetDesc(null_type, NULL);
173 ok(hr == E_FAIL, "GetDesc got %x, expected %x\n", hr, E_FAIL);
175 type2 = type->lpVtbl->GetMemberTypeByName(type, "invalid");
176 ok(type2 == null_type, "GetMemberTypeByName got wrong type %p, expected %p\n", type2, null_type);
178 type2 = type->lpVtbl->GetMemberTypeByName(type, NULL);
179 ok(type2 == null_type, "GetMemberTypeByName got wrong type %p, expected %p\n", type2, null_type);
181 type2 = type->lpVtbl->GetMemberTypeBySemantic(type, "invalid");
182 ok(type2 == null_type, "GetMemberTypeBySemantic got wrong type %p, expected %p\n", type2, null_type);
184 type2 = type->lpVtbl->GetMemberTypeBySemantic(type, NULL);
185 ok(type2 == null_type, "GetMemberTypeBySemantic got wrong type %p, expected %p\n", type2, null_type);
187 string = type->lpVtbl->GetMemberName(type, 3);
188 ok(string == NULL, "GetMemberName is \"%s\", expected \"NULL\"\n", string);
190 string = type->lpVtbl->GetMemberSemantic(type, 3);
191 ok(string == NULL, "GetMemberSemantic is \"%s\", expected \"NULL\"\n", string);
193 effect->lpVtbl->Release(effect);
197 * test_effect_variable_type
199 #if 0
200 struct test
202 float f3 : SV_POSITION;
203 float f4 : COLOR0;
205 struct test1
207 float f1;
208 float f2;
209 test t;
211 cbuffer cb
213 test1 t1;
215 #endif
216 static DWORD fx_test_evt[] = {
217 0x43425844, 0xe079efed, 0x90bda0f2, 0xa6e2d0b4,
218 0xd2d6c200, 0x00000001, 0x0000018c, 0x00000001,
219 0x00000024, 0x30315846, 0x00000160, 0xfeff1001,
220 0x00000001, 0x00000001, 0x00000000, 0x00000000,
221 0x00000000, 0x00000000, 0x00000000, 0x000000e0,
222 0x00000000, 0x00000000, 0x00000000, 0x00000000,
223 0x00000000, 0x00000000, 0x00000000, 0x00000000,
224 0x00000000, 0x00000000, 0x00000000, 0x74006263,
225 0x31747365, 0x00316600, 0x616f6c66, 0x00100074,
226 0x00010000, 0x00000000, 0x00040000, 0x00100000,
227 0x00040000, 0x09090000, 0x32660000, 0x74007400,
228 0x00747365, 0x53003366, 0x4f505f56, 0x49544953,
229 0x66004e4f, 0x4f430034, 0x30524f4c, 0x00003700,
230 0x00000300, 0x00000000, 0x00000800, 0x00001000,
231 0x00000800, 0x00000200, 0x00003c00, 0x00003f00,
232 0x00000000, 0x00001600, 0x00004b00, 0x00004e00,
233 0x00000400, 0x00001600, 0x00000700, 0x00000300,
234 0x00000000, 0x00001800, 0x00002000, 0x00001000,
235 0x00000300, 0x00000d00, 0x00000000, 0x00000000,
236 0x00001600, 0x00003200, 0x00000000, 0x00000400,
237 0x00001600, 0x00003500, 0x00000000, 0x00001000,
238 0x00005500, 0x00317400, 0x00000004, 0x00000020,
239 0x00000000, 0x00000001, 0xffffffff, 0x00000000,
240 0x000000dd, 0x00000091, 0x00000000, 0x00000000,
241 0x00000000, 0x00000000, 0x00000000,
244 static void test_effect_variable_type(ID3D10Device *device)
246 ID3D10Effect *effect;
247 ID3D10EffectConstantBuffer *constantbuffer;
248 ID3D10EffectVariable *variable;
249 ID3D10EffectType *type, *type2, *type3;
250 D3D10_EFFECT_TYPE_DESC type_desc;
251 HRESULT hr;
252 LPCSTR string;
253 unsigned int i;
255 hr = D3D10CreateEffectFromMemory(fx_test_evt, fx_test_evt[6], 0, device, NULL, &effect);
256 ok(SUCCEEDED(hr), "D3D10CreateEffectFromMemory failed (%x)\n", hr);
258 constantbuffer = effect->lpVtbl->GetConstantBufferByIndex(effect, 0);
259 type = constantbuffer->lpVtbl->GetType(constantbuffer);
260 hr = type->lpVtbl->GetDesc(type, &type_desc);
261 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
263 ok(strcmp(type_desc.TypeName, "cbuffer") == 0, "TypeName is \"%s\", expected \"cbuffer\"\n", type_desc.TypeName);
264 ok(type_desc.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_OBJECT);
265 ok(type_desc.Type == D3D10_SVT_CBUFFER, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_CBUFFER);
266 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
267 ok(type_desc.Members == 1, "Members is %u, expected 1\n", type_desc.Members);
268 ok(type_desc.Rows == 0, "Rows is %u, expected 0\n", type_desc.Rows);
269 ok(type_desc.Columns == 0, "Columns is %u, expected 0\n", type_desc.Columns);
270 ok(type_desc.PackedSize == 0x10, "PackedSize is %#x, expected 0x10\n", type_desc.PackedSize);
271 ok(type_desc.UnpackedSize == 0x20, "UnpackedSize is %#x, expected 0x20\n", type_desc.UnpackedSize);
272 ok(type_desc.Stride == 0x20, "Stride is %#x, expected 0x20\n", type_desc.Stride);
274 constantbuffer = effect->lpVtbl->GetConstantBufferByIndex(effect, 0);
275 variable = constantbuffer->lpVtbl->GetMemberByIndex(constantbuffer, 0);
276 type = variable->lpVtbl->GetType(variable);
277 hr = type->lpVtbl->GetDesc(type, &type_desc);
278 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
280 ok(strcmp(type_desc.TypeName, "test1") == 0, "TypeName is \"%s\", expected \"test1\"\n", type_desc.TypeName);
281 ok(type_desc.Class == D3D10_SVC_STRUCT, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_STRUCT);
282 ok(type_desc.Type == D3D10_SVT_VOID, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_VOID);
283 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
284 ok(type_desc.Members == 3, "Members is %u, expected 3\n", type_desc.Members);
285 ok(type_desc.Rows == 0, "Rows is %u, expected 0\n", type_desc.Rows);
286 ok(type_desc.Columns == 0, "Columns is %u, expected 0\n", type_desc.Columns);
287 ok(type_desc.PackedSize == 0x10, "PackedSize is %#x, expected 0x10\n", type_desc.PackedSize);
288 ok(type_desc.UnpackedSize == 0x18, "UnpackedSize is %#x, expected 0x18\n", type_desc.UnpackedSize);
289 ok(type_desc.Stride == 0x20, "Stride is %#x, expected 0x20\n", type_desc.Stride);
291 string = type->lpVtbl->GetMemberName(type, 0);
292 ok(strcmp(string, "f1") == 0, "GetMemberName is \"%s\", expected \"f1\"\n", string);
294 string = type->lpVtbl->GetMemberName(type, 1);
295 ok(strcmp(string, "f2") == 0, "GetMemberName is \"%s\", expected \"f2\"\n", string);
297 string = type->lpVtbl->GetMemberName(type, 2);
298 ok(strcmp(string, "t") == 0, "GetMemberName is \"%s\", expected \"t\"\n", string);
300 type2 = type->lpVtbl->GetMemberTypeByIndex(type, 0);
301 hr = type2->lpVtbl->GetDesc(type2, &type_desc);
302 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
304 ok(strcmp(type_desc.TypeName, "float") == 0, "TypeName is \"%s\", expected \"float\"\n", type_desc.TypeName);
305 ok(type_desc.Class == D3D10_SVC_SCALAR, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_SCALAR);
306 ok(type_desc.Type == D3D10_SVT_FLOAT, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_FLOAT);
307 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
308 ok(type_desc.Members == 0, "Members is %u, expected 0\n", type_desc.Members);
309 ok(type_desc.Rows == 1, "Rows is %u, expected 1\n", type_desc.Rows);
310 ok(type_desc.Columns == 1, "Columns is %u, expected 1\n", type_desc.Columns);
311 ok(type_desc.PackedSize == 0x4, "PackedSize is %#x, expected 0x4\n", type_desc.PackedSize);
312 ok(type_desc.UnpackedSize == 0x4, "UnpackedSize is %#x, expected 0x4\n", type_desc.UnpackedSize);
313 ok(type_desc.Stride == 0x10, "Stride is %#x, expected 0x10\n", type_desc.Stride);
315 type2 = type->lpVtbl->GetMemberTypeByIndex(type, 1);
316 hr = type2->lpVtbl->GetDesc(type2, &type_desc);
317 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
319 ok(strcmp(type_desc.TypeName, "float") == 0, "TypeName is \"%s\", expected \"float\"\n", type_desc.TypeName);
320 ok(type_desc.Class == D3D10_SVC_SCALAR, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_SCALAR);
321 ok(type_desc.Type == D3D10_SVT_FLOAT, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_FLOAT);
322 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
323 ok(type_desc.Members == 0, "Members is %u, expected 0\n", type_desc.Members);
324 ok(type_desc.Rows == 1, "Rows is %u, expected 1\n", type_desc.Rows);
325 ok(type_desc.Columns == 1, "Columns is %u, expected 1\n", type_desc.Columns);
326 ok(type_desc.PackedSize == 0x4, "PackedSize is %#x, expected 0x4\n", type_desc.PackedSize);
327 ok(type_desc.UnpackedSize == 0x4, "UnpackedSize is %#x, expected 0x4\n", type_desc.UnpackedSize);
328 ok(type_desc.Stride == 0x10, "Stride is %#x, expected 0x10\n", type_desc.Stride);
330 type2 = type->lpVtbl->GetMemberTypeByIndex(type, 2);
331 hr = type2->lpVtbl->GetDesc(type2, &type_desc);
332 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
334 ok(strcmp(type_desc.TypeName, "test") == 0, "TypeName is \"%s\", expected \"test\"\n", type_desc.TypeName);
335 ok(type_desc.Class == D3D10_SVC_STRUCT, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_STRUCT);
336 ok(type_desc.Type == D3D10_SVT_VOID, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_VOID);
337 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
338 ok(type_desc.Members == 2, "Members is %u, expected 2\n", type_desc.Members);
339 ok(type_desc.Rows == 0, "Rows is %u, expected 0\n", type_desc.Rows);
340 ok(type_desc.Columns == 0, "Columns is %u, expected 0\n", type_desc.Columns);
341 ok(type_desc.PackedSize == 0x8, "PackedSize is %#x, expected 0x8\n", type_desc.PackedSize);
342 ok(type_desc.UnpackedSize == 0x8, "UnpackedSize is %#x, expected 0x8\n", type_desc.UnpackedSize);
343 ok(type_desc.Stride == 0x10, "Stride is %x, expected 0x10\n", type_desc.Stride);
345 for (i = 0; i < 3; ++i)
347 if (i == 0) type3 = type2->lpVtbl->GetMemberTypeByIndex(type2, 0);
348 else if (i == 1) type3 = type2->lpVtbl->GetMemberTypeByName(type2, "f3");
349 else type3 = type2->lpVtbl->GetMemberTypeBySemantic(type2, "SV_POSITION");
351 hr = type3->lpVtbl->GetDesc(type3, &type_desc);
352 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
354 ok(strcmp(type_desc.TypeName, "float") == 0, "TypeName is \"%s\", expected \"float\"\n",
355 type_desc.TypeName);
356 ok(type_desc.Class == D3D10_SVC_SCALAR, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_SCALAR);
357 ok(type_desc.Type == D3D10_SVT_FLOAT, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_FLOAT);
358 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
359 ok(type_desc.Members == 0, "Members is %u, expected 0\n", type_desc.Members);
360 ok(type_desc.Rows == 1, "Rows is %u, expected 1\n", type_desc.Rows);
361 ok(type_desc.Columns == 1, "Columns is %u, expected 1\n", type_desc.Columns);
362 ok(type_desc.PackedSize == 0x4, "PackedSize is %#x, expected 0x4\n", type_desc.PackedSize);
363 ok(type_desc.UnpackedSize == 0x4, "UnpackedSize is %#x, expected 0x4\n", type_desc.UnpackedSize);
364 ok(type_desc.Stride == 0x10, "Stride is %#x, expected 0x10\n", type_desc.Stride);
366 if (i == 0) type3 = type2->lpVtbl->GetMemberTypeByIndex(type2, 1);
367 else if (i == 1) type3 = type2->lpVtbl->GetMemberTypeByName(type2, "f4");
368 else type3 = type2->lpVtbl->GetMemberTypeBySemantic(type2, "COLOR0");
370 hr = type3->lpVtbl->GetDesc(type3, &type_desc);
371 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
373 ok(strcmp(type_desc.TypeName, "float") == 0, "TypeName is \"%s\", expected \"float\"\n",
374 type_desc.TypeName);
375 ok(type_desc.Class == D3D10_SVC_SCALAR, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_SCALAR);
376 ok(type_desc.Type == D3D10_SVT_FLOAT, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_FLOAT);
377 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
378 ok(type_desc.Members == 0, "Members is %u, expected 0\n", type_desc.Members);
379 ok(type_desc.Rows == 1, "Rows is %u, expected 1\n", type_desc.Rows);
380 ok(type_desc.Columns == 1, "Columns is %u, expected 1\n", type_desc.Columns);
381 ok(type_desc.PackedSize == 0x4, "PackedSize is %#x, expected 0x4\n", type_desc.PackedSize);
382 ok(type_desc.UnpackedSize == 0x4, "UnpackedSize is %#x, expected 0x4\n", type_desc.UnpackedSize);
383 ok(type_desc.Stride == 0x10, "Stride is %#x, expected 0x10\n", type_desc.Stride);
386 type2 = type->lpVtbl->GetMemberTypeByIndex(type, 0);
387 hr = type2->lpVtbl->GetDesc(type2, NULL);
388 ok(hr == E_INVALIDARG, "GetDesc got %x, expected %x\n", hr, E_INVALIDARG);
390 type2 = type->lpVtbl->GetMemberTypeByIndex(type, 4);
391 hr = type2->lpVtbl->GetDesc(type2, &type_desc);
392 ok(hr == E_FAIL, "GetDesc got %x, expected %x\n", hr, E_FAIL);
394 type2 = type->lpVtbl->GetMemberTypeByName(type, "invalid");
395 hr = type2->lpVtbl->GetDesc(type2, &type_desc);
396 ok(hr == E_FAIL, "GetDesc got %x, expected %x\n", hr, E_FAIL);
398 type2 = type->lpVtbl->GetMemberTypeByName(type, NULL);
399 hr = type2->lpVtbl->GetDesc(type2, &type_desc);
400 ok(hr == E_FAIL, "GetDesc got %x, expected %x\n", hr, E_FAIL);
402 type2 = type->lpVtbl->GetMemberTypeBySemantic(type, "invalid");
403 hr = type2->lpVtbl->GetDesc(type2, &type_desc);
404 ok(hr == E_FAIL, "GetDesc got %x, expected %x\n", hr, E_FAIL);
406 type2 = type->lpVtbl->GetMemberTypeBySemantic(type, NULL);
407 hr = type2->lpVtbl->GetDesc(type2, &type_desc);
408 ok(hr == E_FAIL, "GetDesc got %x, expected %x\n", hr, E_FAIL);
410 string = type->lpVtbl->GetMemberName(type, 4);
411 ok(string == NULL, "GetMemberName is \"%s\", expected NULL\n", string);
413 string = type->lpVtbl->GetMemberSemantic(type, 4);
414 ok(string == NULL, "GetMemberSemantic is \"%s\", expected NULL\n", string);
416 effect->lpVtbl->Release(effect);
420 * test_effect_variable_member
422 #if 0
423 struct test
425 float f3 : SV_POSITION;
426 float f4 : COLOR0;
428 struct test1
430 float f1;
431 float f2;
432 test t;
434 cbuffer cb
436 test1 t1;
438 #endif
439 static DWORD fx_test_evm[] = {
440 0x43425844, 0xe079efed, 0x90bda0f2, 0xa6e2d0b4,
441 0xd2d6c200, 0x00000001, 0x0000018c, 0x00000001,
442 0x00000024, 0x30315846, 0x00000160, 0xfeff1001,
443 0x00000001, 0x00000001, 0x00000000, 0x00000000,
444 0x00000000, 0x00000000, 0x00000000, 0x000000e0,
445 0x00000000, 0x00000000, 0x00000000, 0x00000000,
446 0x00000000, 0x00000000, 0x00000000, 0x00000000,
447 0x00000000, 0x00000000, 0x00000000, 0x74006263,
448 0x31747365, 0x00316600, 0x616f6c66, 0x00100074,
449 0x00010000, 0x00000000, 0x00040000, 0x00100000,
450 0x00040000, 0x09090000, 0x32660000, 0x74007400,
451 0x00747365, 0x53003366, 0x4f505f56, 0x49544953,
452 0x66004e4f, 0x4f430034, 0x30524f4c, 0x00003700,
453 0x00000300, 0x00000000, 0x00000800, 0x00001000,
454 0x00000800, 0x00000200, 0x00003c00, 0x00003f00,
455 0x00000000, 0x00001600, 0x00004b00, 0x00004e00,
456 0x00000400, 0x00001600, 0x00000700, 0x00000300,
457 0x00000000, 0x00001800, 0x00002000, 0x00001000,
458 0x00000300, 0x00000d00, 0x00000000, 0x00000000,
459 0x00001600, 0x00003200, 0x00000000, 0x00000400,
460 0x00001600, 0x00003500, 0x00000000, 0x00001000,
461 0x00005500, 0x00317400, 0x00000004, 0x00000020,
462 0x00000000, 0x00000001, 0xffffffff, 0x00000000,
463 0x000000dd, 0x00000091, 0x00000000, 0x00000000,
464 0x00000000, 0x00000000, 0x00000000,
467 static void test_effect_variable_member(ID3D10Device *device)
469 ID3D10Effect *effect;
470 ID3D10EffectConstantBuffer *constantbuffer;
471 ID3D10EffectVariable *variable, *variable2, *variable3, *null_variable;
472 D3D10_EFFECT_VARIABLE_DESC desc;
473 HRESULT hr;
475 hr = D3D10CreateEffectFromMemory(fx_test_evm, fx_test_evm[6], 0, device, NULL, &effect);
476 ok(SUCCEEDED(hr), "D3D10CreateEffectFromMemory failed (%x)\n", hr);
478 constantbuffer = effect->lpVtbl->GetConstantBufferByIndex(effect, 0);
479 hr = constantbuffer->lpVtbl->GetDesc(constantbuffer, &desc);
480 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
482 ok(strcmp(desc.Name, "cb") == 0, "Name is \"%s\", expected \"cb\"\n", desc.Name);
483 ok(desc.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", desc.Semantic);
484 ok(desc.Flags == 0, "Type is %u, expected 0\n", desc.Flags);
485 ok(desc.Annotations == 0, "Elements is %u, expected 0\n", desc.Annotations);
486 ok(desc.BufferOffset == 0, "Members is %u, expected 0\n", desc.BufferOffset);
487 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
489 null_variable = constantbuffer->lpVtbl->GetMemberByIndex(constantbuffer, 1);
490 hr = null_variable->lpVtbl->GetDesc(null_variable, &desc);
491 ok(hr == E_FAIL, "GetDesc got %x, expected %x\n", hr, E_FAIL);
493 variable = constantbuffer->lpVtbl->GetMemberByIndex(constantbuffer, 0);
494 hr = variable->lpVtbl->GetDesc(variable, &desc);
495 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
497 variable2 = constantbuffer->lpVtbl->GetMemberByName(constantbuffer, "t1");
498 ok(variable == variable2, "GetMemberByName got %p, expected %p\n", variable2, variable);
499 hr = variable2->lpVtbl->GetDesc(variable2, &desc);
500 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
502 ok(strcmp(desc.Name, "t1") == 0, "Name is \"%s\", expected \"t1\"\n", desc.Name);
503 ok(desc.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", desc.Semantic);
504 ok(desc.Flags == 0, "Flags is %u, expected 0\n", desc.Flags);
505 ok(desc.Annotations == 0, "Annotations is %u, expected 0\n", desc.Annotations);
506 ok(desc.BufferOffset == 0, "BufferOffset is %u, expected 0\n", desc.BufferOffset);
507 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
509 variable2 = constantbuffer->lpVtbl->GetMemberByName(constantbuffer, "invalid");
510 ok(null_variable == variable2, "GetMemberByName got %p, expected %p\n", variable2, null_variable);
512 variable2 = constantbuffer->lpVtbl->GetMemberByName(constantbuffer, NULL);
513 ok(null_variable == variable2, "GetMemberByName got %p, expected %p\n", variable2, null_variable);
515 variable2 = constantbuffer->lpVtbl->GetMemberBySemantic(constantbuffer, "invalid");
516 ok(null_variable == variable2, "GetMemberBySemantic got %p, expected %p\n", variable2, null_variable);
518 variable2 = constantbuffer->lpVtbl->GetMemberBySemantic(constantbuffer, NULL);
519 ok(null_variable == variable2, "GetMemberBySemantic got %p, expected %p\n", variable2, null_variable);
521 /* check members of "t1" */
522 variable2 = variable->lpVtbl->GetMemberByName(variable, "f1");
523 hr = variable2->lpVtbl->GetDesc(variable2, &desc);
524 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
526 ok(strcmp(desc.Name, "f1") == 0, "Name is \"%s\", expected \"f1\"\n", desc.Name);
527 ok(desc.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", desc.Semantic);
528 ok(desc.Flags == 0, "Flags is %u, expected 0\n", desc.Flags);
529 ok(desc.Annotations == 0, "Annotations is %u, expected 0\n", desc.Annotations);
530 ok(desc.BufferOffset == 0, "BufferOffset is %u, expected 0\n", desc.BufferOffset);
531 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
533 variable3 = variable->lpVtbl->GetMemberByIndex(variable, 0);
534 ok(variable2 == variable3, "GetMemberByIndex got %p, expected %p\n", variable3, variable2);
536 variable2 = variable->lpVtbl->GetMemberByName(variable, "f2");
537 hr = variable2->lpVtbl->GetDesc(variable2, &desc);
538 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
540 ok(strcmp(desc.Name, "f2") == 0, "Name is \"%s\", expected \"f2\"\n", desc.Name);
541 ok(desc.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", desc.Semantic);
542 ok(desc.Flags == 0, "Flags is %u, expected 0\n", desc.Flags);
543 ok(desc.Annotations == 0, "Annotations is %u, expected 0\n", desc.Annotations);
544 ok(desc.BufferOffset == 4, "BufferOffset is %u, expected 4\n", desc.BufferOffset);
545 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
547 variable3 = variable->lpVtbl->GetMemberByIndex(variable, 1);
548 ok(variable2 == variable3, "GetMemberByIndex got %p, expected %p\n", variable3, variable2);
550 variable2 = variable->lpVtbl->GetMemberByName(variable, "t");
551 hr = variable2->lpVtbl->GetDesc(variable2, &desc);
552 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
554 ok(strcmp(desc.Name, "t") == 0, "Name is \"%s\", expected \"t\"\n", desc.Name);
555 ok(desc.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", desc.Semantic);
556 ok(desc.Flags == 0, "Flags is %u, expected 0\n", desc.Flags);
557 ok(desc.Annotations == 0, "Annotations is %u, expected 0\n", desc.Annotations);
558 ok(desc.BufferOffset == 16, "BufferOffset is %u, expected 16\n", desc.BufferOffset);
559 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
561 variable3 = variable->lpVtbl->GetMemberByIndex(variable, 2);
562 ok(variable2 == variable3, "GetMemberByIndex got %p, expected %p\n", variable3, variable2);
564 /* check members of "t" */
565 variable3 = variable2->lpVtbl->GetMemberByName(variable2, "f3");
566 hr = variable3->lpVtbl->GetDesc(variable3, &desc);
567 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
569 ok(strcmp(desc.Name, "f3") == 0, "Name is \"%s\", expected \"f3\"\n", desc.Name);
570 ok(strcmp(desc.Semantic, "SV_POSITION") == 0, "Semantic is \"%s\", expected \"SV_POSITION\"\n", desc.Semantic);
571 ok(desc.Flags == 0, "Flags is %u, expected 0\n", desc.Flags);
572 ok(desc.Annotations == 0, "Annotations is %u, expected 0\n", desc.Annotations);
573 ok(desc.BufferOffset == 16, "BufferOffset is %u, expected 16\n", desc.BufferOffset);
574 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
576 variable = variable2->lpVtbl->GetMemberBySemantic(variable2, "SV_POSITION");
577 ok(variable == variable3, "GetMemberBySemantic got %p, expected %p\n", variable, variable3);
579 variable = variable2->lpVtbl->GetMemberByIndex(variable2, 0);
580 ok(variable == variable3, "GetMemberByIndex got %p, expected %p\n", variable, variable3);
582 variable3 = variable2->lpVtbl->GetMemberByName(variable2, "f4");
583 hr = variable3->lpVtbl->GetDesc(variable3, &desc);
584 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
586 ok(strcmp(desc.Name, "f4") == 0, "Name is \"%s\", expected \"f4\"\n", desc.Name);
587 ok(strcmp(desc.Semantic, "COLOR0") == 0, "Semantic is \"%s\", expected \"COLOR0\"\n", desc.Semantic);
588 ok(desc.Flags == 0, "Flags is %u, expected 0\n", desc.Flags);
589 ok(desc.Annotations == 0, "Annotations is %u, expected 0\n", desc.Annotations);
590 ok(desc.BufferOffset == 20, "BufferOffset is %u, expected 20\n", desc.BufferOffset);
591 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
593 variable = variable2->lpVtbl->GetMemberBySemantic(variable2, "COLOR0");
594 ok(variable == variable3, "GetMemberBySemantic got %p, expected %p\n", variable, variable3);
596 variable = variable2->lpVtbl->GetMemberByIndex(variable2, 1);
597 ok(variable == variable3, "GetMemberByIndex got %p, expected %p\n", variable, variable3);
599 effect->lpVtbl->Release(effect);
603 * test_effect_variable_element
605 #if 0
606 struct test
608 float f3 : SV_POSITION;
609 float f4 : COLOR0;
610 float f5 : COLOR1;
612 struct test1
614 float f1;
615 float f2[3];
616 test t[2];
618 cbuffer cb
620 test1 t1;
622 #endif
623 static DWORD fx_test_eve[] = {
624 0x43425844, 0x6ea69fd9, 0x9b4e6390, 0x006f9f71,
625 0x57ad58f4, 0x00000001, 0x000001c2, 0x00000001,
626 0x00000024, 0x30315846, 0x00000196, 0xfeff1001,
627 0x00000001, 0x00000001, 0x00000000, 0x00000000,
628 0x00000000, 0x00000000, 0x00000000, 0x00000116,
629 0x00000000, 0x00000000, 0x00000000, 0x00000000,
630 0x00000000, 0x00000000, 0x00000000, 0x00000000,
631 0x00000000, 0x00000000, 0x00000000, 0x74006263,
632 0x31747365, 0x00316600, 0x616f6c66, 0x00100074,
633 0x00010000, 0x00000000, 0x00040000, 0x00100000,
634 0x00040000, 0x09090000, 0x32660000, 0x00001000,
635 0x00000100, 0x00000300, 0x00002400, 0x00001000,
636 0x00000c00, 0x00090900, 0x74007400, 0x00747365,
637 0x53003366, 0x4f505f56, 0x49544953, 0x66004e4f,
638 0x4f430034, 0x30524f4c, 0x00356600, 0x4f4c4f43,
639 0x53003152, 0x03000000, 0x02000000, 0x1c000000,
640 0x10000000, 0x18000000, 0x03000000, 0x58000000,
641 0x5b000000, 0x00000000, 0x16000000, 0x67000000,
642 0x6a000000, 0x04000000, 0x16000000, 0x71000000,
643 0x74000000, 0x08000000, 0x16000000, 0x07000000,
644 0x03000000, 0x00000000, 0x5c000000, 0x60000000,
645 0x28000000, 0x03000000, 0x0d000000, 0x00000000,
646 0x00000000, 0x16000000, 0x32000000, 0x00000000,
647 0x10000000, 0x35000000, 0x51000000, 0x00000000,
648 0x40000000, 0x7b000000, 0x74000000, 0x00040031,
649 0x00600000, 0x00000000, 0x00010000, 0xffff0000,
650 0x0000ffff, 0x01130000, 0x00c70000, 0x00000000,
651 0x00000000, 0x00000000, 0x00000000, 0x00000000,
652 0x00000000,
655 static void test_effect_variable_element(ID3D10Device *device)
657 ID3D10Effect *effect;
658 ID3D10EffectConstantBuffer *constantbuffer, *parent;
659 ID3D10EffectVariable *variable, *variable2, *variable3, *variable4, *variable5;
660 ID3D10EffectType *type, *type2;
661 D3D10_EFFECT_VARIABLE_DESC desc;
662 D3D10_EFFECT_TYPE_DESC type_desc;
663 HRESULT hr;
665 hr = D3D10CreateEffectFromMemory(fx_test_eve, fx_test_eve[6], 0, device, NULL, &effect);
666 ok(SUCCEEDED(hr), "D3D10CreateEffectFromMemory failed (%x)\n", hr);
668 constantbuffer = effect->lpVtbl->GetConstantBufferByIndex(effect, 0);
669 hr = constantbuffer->lpVtbl->GetDesc(constantbuffer, &desc);
670 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
672 ok(strcmp(desc.Name, "cb") == 0, "Name is \"%s\", expected \"cb\"\n", desc.Name);
673 ok(desc.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", desc.Semantic);
674 ok(desc.Flags == 0, "Type is %u, expected 0\n", desc.Flags);
675 ok(desc.Annotations == 0, "Elements is %u, expected 0\n", desc.Annotations);
676 ok(desc.BufferOffset == 0, "Members is %u, expected 0\n", desc.BufferOffset);
677 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
679 variable = constantbuffer->lpVtbl->GetMemberByIndex(constantbuffer, 0);
680 hr = variable->lpVtbl->GetDesc(variable, &desc);
681 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
683 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
684 ok(parent == constantbuffer, "GetParentConstantBuffer got %p, expected %p\n",
685 parent, constantbuffer);
687 variable2 = constantbuffer->lpVtbl->GetMemberByName(constantbuffer, "t1");
688 hr = variable2->lpVtbl->GetDesc(variable2, &desc);
689 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
691 parent = variable2->lpVtbl->GetParentConstantBuffer(variable2);
692 ok(parent == constantbuffer, "GetParentConstantBuffer got %p, expected %p\n", parent, constantbuffer);
694 /* check variable f1 */
695 variable3 = variable2->lpVtbl->GetMemberByName(variable2, "f1");
696 hr = variable3->lpVtbl->GetDesc(variable3, &desc);
697 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
699 ok(strcmp(desc.Name, "f1") == 0, "Name is \"%s\", expected \"f1\"\n", desc.Name);
700 ok(desc.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", desc.Semantic);
701 ok(desc.Flags == 0, "Flags is %u, expected 0\n", desc.Flags);
702 ok(desc.Annotations == 0, "Annotations is %u, expected 0\n", desc.Annotations);
703 ok(desc.BufferOffset == 0, "BufferOffset is %u, expected 0\n", desc.BufferOffset);
704 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
706 parent = variable3->lpVtbl->GetParentConstantBuffer(variable3);
707 ok(parent == constantbuffer, "GetParentConstantBuffer got %p, expected %p\n",
708 parent, constantbuffer);
710 type = variable3->lpVtbl->GetType(variable3);
711 hr = type->lpVtbl->GetDesc(type, &type_desc);
712 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
714 ok(strcmp(type_desc.TypeName, "float") == 0, "TypeName is \"%s\", expected \"float\"\n", type_desc.TypeName);
715 ok(type_desc.Class == D3D10_SVC_SCALAR, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_SCALAR);
716 ok(type_desc.Type == D3D10_SVT_FLOAT, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_FLOAT);
717 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
718 ok(type_desc.Members == 0, "Members is %u, expected 0\n", type_desc.Members);
719 ok(type_desc.Rows == 1, "Rows is %u, expected 1\n", type_desc.Rows);
720 ok(type_desc.Columns == 1, "Columns is %u, expected 1\n", type_desc.Columns);
721 ok(type_desc.PackedSize == 0x4, "PackedSize is %#x, expected 0x4\n", type_desc.PackedSize);
722 ok(type_desc.UnpackedSize == 0x4, "UnpackedSize is %#x, expected 0x4\n", type_desc.UnpackedSize);
723 ok(type_desc.Stride == 0x10, "Stride is %#x, expected 0x10\n", type_desc.Stride);
725 /* check variable f2 */
726 variable3 = variable2->lpVtbl->GetMemberByName(variable2, "f2");
727 hr = variable3->lpVtbl->GetDesc(variable3, &desc);
728 ok(SUCCEEDED(hr), "GetDesc failed (%x)!\n", hr);
730 ok(strcmp(desc.Name, "f2") == 0, "Name is \"%s\", expected \"f2\"\n", desc.Name);
731 ok(desc.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", desc.Semantic);
732 ok(desc.Flags == 0, "Flags is %u, expected 0\n", desc.Flags);
733 ok(desc.Annotations == 0, "Annotations is %u, expected 0\n", desc.Annotations);
734 ok(desc.BufferOffset == 16, "BufferOffset is %u, expected 16\n", desc.BufferOffset);
735 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
737 parent = variable3->lpVtbl->GetParentConstantBuffer(variable3);
738 ok(parent == constantbuffer, "GetParentConstantBuffer got %p, expected %p\n",
739 parent, constantbuffer);
741 type = variable3->lpVtbl->GetType(variable3);
742 hr = type->lpVtbl->GetDesc(type, &type_desc);
743 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
745 ok(strcmp(type_desc.TypeName, "float") == 0, "TypeName is \"%s\", expected \"float\"\n", type_desc.TypeName);
746 ok(type_desc.Class == D3D10_SVC_SCALAR, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_SCALAR);
747 ok(type_desc.Type == D3D10_SVT_FLOAT, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_FLOAT);
748 ok(type_desc.Elements == 3, "Elements is %u, expected 3\n", type_desc.Elements);
749 ok(type_desc.Members == 0, "Members is %u, expected 0\n", type_desc.Members);
750 ok(type_desc.Rows == 1, "Rows is %u, expected 1\n", type_desc.Rows);
751 ok(type_desc.Columns == 1, "Columns is %u, expected 1\n", type_desc.Columns);
752 ok(type_desc.PackedSize == 0xc, "PackedSize is %#x, expected 0xc\n", type_desc.PackedSize);
753 ok(type_desc.UnpackedSize == 0x24, "UnpackedSize is %#x, expected 0x24\n", type_desc.UnpackedSize);
754 ok(type_desc.Stride == 0x10, "Stride is %#x, expected 0x10\n", type_desc.Stride);
756 variable4 = variable3->lpVtbl->GetElement(variable3, 0);
757 hr = variable4->lpVtbl->GetDesc(variable4, &desc);
758 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
760 ok(strcmp(desc.Name, "f2") == 0, "Name is \"%s\", expected \"f2\"\n", desc.Name);
761 ok(desc.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", desc.Semantic);
762 ok(desc.Flags == 0, "Flags is %u, expected 0\n", desc.Flags);
763 ok(desc.Annotations == 0, "Annotations is %u, expected 0\n", desc.Annotations);
764 ok(desc.BufferOffset == 16, "BufferOffset is %u, expected 16\n", desc.BufferOffset);
765 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
767 parent = variable4->lpVtbl->GetParentConstantBuffer(variable4);
768 ok(parent == constantbuffer, "GetParentConstantBuffer got %p, expected %p\n",
769 parent, constantbuffer);
771 type = variable4->lpVtbl->GetType(variable4);
772 hr = type->lpVtbl->GetDesc(type, &type_desc);
773 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
775 ok(strcmp(type_desc.TypeName, "float") == 0, "TypeName is \"%s\", expected \"float\"\n", type_desc.TypeName);
776 ok(type_desc.Class == D3D10_SVC_SCALAR, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_SCALAR);
777 ok(type_desc.Type == D3D10_SVT_FLOAT, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_FLOAT);
778 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
779 ok(type_desc.Members == 0, "Members is %u, expected 0\n", type_desc.Members);
780 ok(type_desc.Rows == 1, "Rows is %u, expected 1\n", type_desc.Rows);
781 ok(type_desc.Columns == 1, "Columns is %u, expected 1\n", type_desc.Columns);
782 ok(type_desc.PackedSize == 0x4, "PackedSize is %#x, expected 0x4\n", type_desc.PackedSize);
783 ok(type_desc.UnpackedSize == 0x4, "UnpackedSize is %#x, expected 0x4\n", type_desc.UnpackedSize);
784 ok(type_desc.Stride == 0x10, "Stride is %#x, expected 0x10\n", type_desc.Stride);
786 variable4 = variable3->lpVtbl->GetElement(variable3, 1);
787 hr = variable4->lpVtbl->GetDesc(variable4, &desc);
788 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
790 ok(strcmp(desc.Name, "f2") == 0, "Name is \"%s\", expected \"f2\"\n", desc.Name);
791 ok(desc.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", desc.Semantic);
792 ok(desc.Flags == 0, "Flags is %u, expected 0\n", desc.Flags);
793 ok(desc.Annotations == 0, "Annotations is %u, expected 0\n", desc.Annotations);
794 ok(desc.BufferOffset == 32, "BufferOffset is %u, expected 32\n", desc.BufferOffset);
795 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
797 parent = variable4->lpVtbl->GetParentConstantBuffer(variable4);
798 ok(parent == constantbuffer, "GetParentConstantBuffer got %p, expected %p\n",
799 parent, constantbuffer);
801 type2 = variable4->lpVtbl->GetType(variable4);
802 hr = type2->lpVtbl->GetDesc(type2, &type_desc);
803 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
804 ok(type == type2, "type(%p) != type2(%p)\n", type, type2);
806 ok(strcmp(type_desc.TypeName, "float") == 0, "TypeName is \"%s\", expected \"float\"\n", type_desc.TypeName);
807 ok(type_desc.Class == D3D10_SVC_SCALAR, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_SCALAR);
808 ok(type_desc.Type == D3D10_SVT_FLOAT, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_FLOAT);
809 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
810 ok(type_desc.Members == 0, "Members is %u, expected 0\n", type_desc.Members);
811 ok(type_desc.Rows == 1, "Rows is %u, expected 1\n", type_desc.Rows);
812 ok(type_desc.Columns == 1, "Columns is %u, expected 1\n", type_desc.Columns);
813 ok(type_desc.PackedSize == 0x4, "PackedSize is %#x, expected 0x4\n", type_desc.PackedSize);
814 ok(type_desc.UnpackedSize == 0x4, "UnpackedSize is %#x, expected 0x4\n", type_desc.UnpackedSize);
815 ok(type_desc.Stride == 0x10, "Stride is %#x, expected 0x10\n", type_desc.Stride);
817 variable4 = variable3->lpVtbl->GetElement(variable3, 2);
818 hr = variable4->lpVtbl->GetDesc(variable4, &desc);
819 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
821 ok(strcmp(desc.Name, "f2") == 0, "Name is \"%s\", expected \"f2\"\n", desc.Name);
822 ok(desc.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", desc.Semantic);
823 ok(desc.Flags == 0, "Flags is %u, expected 0\n", desc.Flags);
824 ok(desc.Annotations == 0, "Annotations is %u, expected 0\n", desc.Annotations);
825 ok(desc.BufferOffset == 48, "BufferOffset is %u, expected 48\n", desc.BufferOffset);
826 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
828 parent = variable4->lpVtbl->GetParentConstantBuffer(variable4);
829 ok(parent == constantbuffer, "GetParentConstantBuffer got %p, expected %p\n",
830 parent, constantbuffer);
832 type2 = variable4->lpVtbl->GetType(variable4);
833 hr = type2->lpVtbl->GetDesc(type2, &type_desc);
834 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
835 ok(type == type2, "type(%p) != type2(%p)\n", type, type2);
837 ok(strcmp(type_desc.TypeName, "float") == 0, "TypeName is \"%s\", expected \"float\"\n", type_desc.TypeName);
838 ok(type_desc.Class == D3D10_SVC_SCALAR, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_SCALAR);
839 ok(type_desc.Type == D3D10_SVT_FLOAT, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_FLOAT);
840 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
841 ok(type_desc.Members == 0, "Members is %u, expected 0\n", type_desc.Members);
842 ok(type_desc.Rows == 1, "Rows is %u, expected 1\n", type_desc.Rows);
843 ok(type_desc.Columns == 1, "Columns is %u, expected 1\n", type_desc.Columns);
844 ok(type_desc.PackedSize == 0x4, "PackedSize is %#x, expected 0x4\n", type_desc.PackedSize);
845 ok(type_desc.UnpackedSize == 0x4, "UnpackedSize is %#x, expected 0x4\n", type_desc.UnpackedSize);
846 ok(type_desc.Stride == 0x10, "Stride is %#x, expected 0x10\n", type_desc.Stride);
848 /* check variable t */
849 variable3 = variable2->lpVtbl->GetMemberByName(variable2, "t");
850 hr = variable3->lpVtbl->GetDesc(variable3, &desc);
851 ok(SUCCEEDED(hr), "GetDesc failed (%x)!\n", hr);
853 ok(strcmp(desc.Name, "t") == 0, "Name is \"%s\", expected \"t\"\n", desc.Name);
854 ok(desc.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", desc.Semantic);
855 ok(desc.Flags == 0, "Flags is %u, expected 0\n", desc.Flags);
856 ok(desc.Annotations == 0, "Annotations is %u, expected 0\n", desc.Annotations);
857 ok(desc.BufferOffset == 64, "BufferOffset is %u, expected 64\n", desc.BufferOffset);
858 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
860 parent = variable3->lpVtbl->GetParentConstantBuffer(variable3);
861 ok(parent == constantbuffer, "GetParentConstantBuffer got %p, expected %p\n",
862 parent, constantbuffer);
864 type = variable3->lpVtbl->GetType(variable3);
865 hr = type->lpVtbl->GetDesc(type, &type_desc);
866 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
868 ok(strcmp(type_desc.TypeName, "test") == 0, "TypeName is \"%s\", expected \"test\"\n", type_desc.TypeName);
869 ok(type_desc.Class == D3D10_SVC_STRUCT, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_STRUCT);
870 ok(type_desc.Type == D3D10_SVT_VOID, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_VOID);
871 ok(type_desc.Elements == 2, "Elements is %u, expected 2\n", type_desc.Elements);
872 ok(type_desc.Members == 3, "Members is %u, expected 3\n", type_desc.Members);
873 ok(type_desc.Rows == 0, "Rows is %u, expected 0\n", type_desc.Rows);
874 ok(type_desc.Columns == 0, "Columns is %u, expected 0\n", type_desc.Columns);
875 ok(type_desc.PackedSize == 0x18, "PackedSize is %#x, expected 0x18\n", type_desc.PackedSize);
876 ok(type_desc.UnpackedSize == 0x1c, "UnpackedSize is %#x, expected 0x1c\n", type_desc.UnpackedSize);
877 ok(type_desc.Stride == 0x10, "Stride is %#x, expected 0x10\n", type_desc.Stride);
879 variable4 = variable3->lpVtbl->GetElement(variable3, 0);
880 hr = variable4->lpVtbl->GetDesc(variable4, &desc);
881 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
883 ok(strcmp(desc.Name, "t") == 0, "Name is \"%s\", expected \"t\"\n", desc.Name);
884 ok(desc.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", desc.Semantic);
885 ok(desc.Flags == 0, "Flags is %u, expected 0\n", desc.Flags);
886 ok(desc.Annotations == 0, "Annotations is %u, expected 0\n", desc.Annotations);
887 ok(desc.BufferOffset == 64, "BufferOffset is %u, expected 64\n", desc.BufferOffset);
888 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
890 parent = variable4->lpVtbl->GetParentConstantBuffer(variable4);
891 ok(parent == constantbuffer, "GetParentConstantBuffer got %p, expected %p\n",
892 parent, constantbuffer);
894 type = variable4->lpVtbl->GetType(variable4);
895 hr = type->lpVtbl->GetDesc(type, &type_desc);
896 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
898 ok(strcmp(type_desc.TypeName, "test") == 0, "TypeName is \"%s\", expected \"test\"\n", type_desc.TypeName);
899 ok(type_desc.Class == D3D10_SVC_STRUCT, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_STRUCT);
900 ok(type_desc.Type == D3D10_SVT_VOID, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_VOID);
901 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
902 ok(type_desc.Members == 3, "Members is %u, expected 3\n", type_desc.Members);
903 ok(type_desc.Rows == 0, "Rows is %u, expected 0\n", type_desc.Rows);
904 ok(type_desc.Columns == 0, "Columns is %u, expected 0\n", type_desc.Columns);
905 ok(type_desc.PackedSize == 0xc, "PackedSize is %#x, expected 0xc\n", type_desc.PackedSize);
906 ok(type_desc.UnpackedSize == 0xc, "UnpackedSize is %#x, expected 0xc\n", type_desc.UnpackedSize);
907 ok(type_desc.Stride == 0x10, "Stride is %#x, expected 0x10\n", type_desc.Stride);
909 variable5 = variable4->lpVtbl->GetMemberByIndex(variable4, 0);
910 hr = variable5->lpVtbl->GetDesc(variable5, &desc);
911 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
913 ok(strcmp(desc.Name, "f3") == 0, "Name is \"%s\", expected \"f3\"\n", desc.Name);
914 ok(strcmp(desc.Semantic, "SV_POSITION") == 0, "Semantic is \"%s\", expected \"SV_POSITION\"\n", desc.Semantic);
915 ok(desc.Flags == 0, "Flags is %u, expected 0\n", desc.Flags);
916 ok(desc.Annotations == 0, "Annotations is %u, expected 0\n", desc.Annotations);
917 ok(desc.BufferOffset == 64, "BufferOffset is %u, expected 64\n", desc.BufferOffset);
918 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
920 parent = variable5->lpVtbl->GetParentConstantBuffer(variable5);
921 ok(parent == constantbuffer, "GetParentConstantBuffer got %p, expected %p\n", parent, constantbuffer);
923 type = variable5->lpVtbl->GetType(variable5);
924 hr = type->lpVtbl->GetDesc(type, &type_desc);
925 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
927 ok(strcmp(type_desc.TypeName, "float") == 0, "TypeName is \"%s\", expected \"float\"\n", type_desc.TypeName);
928 ok(type_desc.Class == D3D10_SVC_SCALAR, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_SCALAR);
929 ok(type_desc.Type == D3D10_SVT_FLOAT, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_FLOAT);
930 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
931 ok(type_desc.Members == 0, "Members is %u, expected 0\n", type_desc.Members);
932 ok(type_desc.Rows == 1, "Rows is %u, expected 1\n", type_desc.Rows);
933 ok(type_desc.Columns == 1, "Columns is %u, expected 1\n", type_desc.Columns);
934 ok(type_desc.PackedSize == 0x4, "PackedSize is %#x, expected 0x4\n", type_desc.PackedSize);
935 ok(type_desc.UnpackedSize == 0x4, "UnpackedSize is %#x, expected 0x4\n", type_desc.UnpackedSize);
936 ok(type_desc.Stride == 0x10, "Stride is %#x, expected 0x10\n", type_desc.Stride);
938 variable5 = variable4->lpVtbl->GetMemberByIndex(variable4, 1);
939 hr = variable5->lpVtbl->GetDesc(variable5, &desc);
940 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
942 ok(strcmp(desc.Name, "f4") == 0, "Name is \"%s\", expected \"f4\"\n", desc.Name);
943 ok(strcmp(desc.Semantic, "COLOR0") == 0, "Semantic is \"%s\", expected \"COLOR0\"\n", desc.Semantic);
944 ok(desc.Flags == 0, "Flags is %u, expected 0\n", desc.Flags);
945 ok(desc.Annotations == 0, "Annotations is %u, expected 0\n", desc.Annotations);
946 ok(desc.BufferOffset == 68, "BufferOffset is %u, expected 68\n", desc.BufferOffset);
947 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
949 parent = variable5->lpVtbl->GetParentConstantBuffer(variable5);
950 ok(parent == constantbuffer, "GetParentConstantBuffer got %p, expected %p\n", parent, constantbuffer);
952 type = variable5->lpVtbl->GetType(variable5);
953 hr = type->lpVtbl->GetDesc(type, &type_desc);
954 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
956 ok(strcmp(type_desc.TypeName, "float") == 0, "TypeName is \"%s\", expected \"float\"\n", type_desc.TypeName);
957 ok(type_desc.Class == D3D10_SVC_SCALAR, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_SCALAR);
958 ok(type_desc.Type == D3D10_SVT_FLOAT, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_FLOAT);
959 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
960 ok(type_desc.Members == 0, "Members is %u, expected 0\n", type_desc.Members);
961 ok(type_desc.Rows == 1, "Rows is %u, expected 1\n", type_desc.Rows);
962 ok(type_desc.Columns == 1, "Columns is %u, expected 1\n", type_desc.Columns);
963 ok(type_desc.PackedSize == 0x4, "PackedSize is %#x, expected 0x4\n", type_desc.PackedSize);
964 ok(type_desc.UnpackedSize == 0x4, "UnpackedSize is %#x, expected 0x4\n", type_desc.UnpackedSize);
965 ok(type_desc.Stride == 0x10, "Stride is %#x, expected 0x10\n", type_desc.Stride);
967 variable5 = variable4->lpVtbl->GetMemberByIndex(variable4, 2);
968 hr = variable5->lpVtbl->GetDesc(variable5, &desc);
969 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
971 ok(strcmp(desc.Name, "f5") == 0, "Name is \"%s\", expected \"f5\"\n", desc.Name);
972 ok(strcmp(desc.Semantic, "COLOR1") == 0, "Semantic is \"%s\", expected \"COLOR1\"\n", desc.Semantic);
973 ok(desc.Flags == 0, "Flags is %u, expected 0\n", desc.Flags);
974 ok(desc.Annotations == 0, "Annotations is %u, expected 0\n", desc.Annotations);
975 ok(desc.BufferOffset == 72, "BufferOffset is %u, expected 72\n", desc.BufferOffset);
976 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
978 parent = variable5->lpVtbl->GetParentConstantBuffer(variable5);
979 ok(parent == constantbuffer, "GetParentConstantBuffer got %p, expected %p\n", parent, constantbuffer);
981 type = variable5->lpVtbl->GetType(variable5);
982 hr = type->lpVtbl->GetDesc(type, &type_desc);
983 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
985 ok(strcmp(type_desc.TypeName, "float") == 0, "TypeName is \"%s\", expected \"float\"\n", type_desc.TypeName);
986 ok(type_desc.Class == D3D10_SVC_SCALAR, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_SCALAR);
987 ok(type_desc.Type == D3D10_SVT_FLOAT, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_FLOAT);
988 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
989 ok(type_desc.Members == 0, "Members is %u, expected 0\n", type_desc.Members);
990 ok(type_desc.Rows == 1, "Rows is %u, expected 1\n", type_desc.Rows);
991 ok(type_desc.Columns == 1, "Columns is %u, expected 1\n", type_desc.Columns);
992 ok(type_desc.PackedSize == 0x4, "PackedSize is %#x, expected 0x4\n", type_desc.PackedSize);
993 ok(type_desc.UnpackedSize == 0x4, "UnpackedSize is %#x, expected 0x4\n", type_desc.UnpackedSize);
994 ok(type_desc.Stride == 0x10, "Stride is %#x, expected 0x10\n", type_desc.Stride);
996 variable4 = variable3->lpVtbl->GetElement(variable3, 1);
997 hr = variable4->lpVtbl->GetDesc(variable4, &desc);
998 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1000 ok(strcmp(desc.Name, "t") == 0, "Name is \"%s\", expected \"t\"\n", desc.Name);
1001 ok(desc.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", desc.Semantic);
1002 ok(desc.Flags == 0, "Flags is %u, expected 0\n", desc.Flags);
1003 ok(desc.Annotations == 0, "Annotations is %u, expected 0\n", desc.Annotations);
1004 ok(desc.BufferOffset == 80, "BufferOffset is %u, expected 80\n", desc.BufferOffset);
1005 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
1007 parent = variable4->lpVtbl->GetParentConstantBuffer(variable4);
1008 ok(parent == constantbuffer, "GetParentConstantBuffer got %p, expected %p\n",
1009 parent, constantbuffer);
1011 type = variable4->lpVtbl->GetType(variable4);
1012 hr = type->lpVtbl->GetDesc(type, &type_desc);
1013 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1015 ok(strcmp(type_desc.TypeName, "test") == 0, "TypeName is \"%s\", expected \"test\"\n", type_desc.TypeName);
1016 ok(type_desc.Class == D3D10_SVC_STRUCT, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_STRUCT);
1017 ok(type_desc.Type == D3D10_SVT_VOID, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_VOID);
1018 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
1019 ok(type_desc.Members == 3, "Members is %u, expected 3\n", type_desc.Members);
1020 ok(type_desc.Rows == 0, "Rows is %u, expected 0\n", type_desc.Rows);
1021 ok(type_desc.Columns == 0, "Columns is %u, expected 0\n", type_desc.Columns);
1022 ok(type_desc.PackedSize == 0xc, "PackedSize is %#x, expected 0xc\n", type_desc.PackedSize);
1023 ok(type_desc.UnpackedSize == 0xc, "UnpackedSize is %#x, expected 0xc\n", type_desc.UnpackedSize);
1024 ok(type_desc.Stride == 0x10, "Stride is %#x, expected 0x10\n", type_desc.Stride);
1026 variable5 = variable4->lpVtbl->GetMemberByIndex(variable4, 0);
1027 hr = variable5->lpVtbl->GetDesc(variable5, &desc);
1028 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1030 ok(strcmp(desc.Name, "f3") == 0, "Name is \"%s\", expected \"f3\"\n", desc.Name);
1031 ok(strcmp(desc.Semantic, "SV_POSITION") == 0, "Semantic is \"%s\", expected \"SV_POSITION\"\n", desc.Semantic);
1032 ok(desc.Flags == 0, "Flags is %u, expected 0\n", desc.Flags);
1033 ok(desc.Annotations == 0, "Annotations is %u, expected 0\n", desc.Annotations);
1034 ok(desc.BufferOffset == 80, "BufferOffset is %u, expected 80\n", desc.BufferOffset);
1035 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
1037 parent = variable5->lpVtbl->GetParentConstantBuffer(variable5);
1038 ok(parent == constantbuffer, "GetParentConstantBuffer got %p, expected %p\n", parent, constantbuffer);
1040 type = variable5->lpVtbl->GetType(variable5);
1041 hr = type->lpVtbl->GetDesc(type, &type_desc);
1042 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1044 ok(strcmp(type_desc.TypeName, "float") == 0, "TypeName is \"%s\", expected \"float\"\n", type_desc.TypeName);
1045 ok(type_desc.Class == D3D10_SVC_SCALAR, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_SCALAR);
1046 ok(type_desc.Type == D3D10_SVT_FLOAT, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_FLOAT);
1047 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
1048 ok(type_desc.Members == 0, "Members is %u, expected 0\n", type_desc.Members);
1049 ok(type_desc.Rows == 1, "Rows is %u, expected 1\n", type_desc.Rows);
1050 ok(type_desc.Columns == 1, "Columns is %u, expected 1\n", type_desc.Columns);
1051 ok(type_desc.PackedSize == 0x4, "PackedSize is %#x, expected 0x4\n", type_desc.PackedSize);
1052 ok(type_desc.UnpackedSize == 0x4, "UnpackedSize is %#x, expected 0x4\n", type_desc.UnpackedSize);
1053 ok(type_desc.Stride == 0x10, "Stride is %#x, expected 0x10\n", type_desc.Stride);
1055 variable5 = variable4->lpVtbl->GetMemberByIndex(variable4, 1);
1056 hr = variable5->lpVtbl->GetDesc(variable5, &desc);
1057 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1059 ok(strcmp(desc.Name, "f4") == 0, "Name is \"%s\", expected \"f4\"\n", desc.Name);
1060 ok(strcmp(desc.Semantic, "COLOR0") == 0, "Semantic is \"%s\", expected \"COLOR0\"\n", desc.Semantic);
1061 ok(desc.Flags == 0, "Flags is %u, expected 0\n", desc.Flags);
1062 ok(desc.Annotations == 0, "Annotations is %u, expected 0\n", desc.Annotations);
1063 ok(desc.BufferOffset == 84, "BufferOffset is %u, expected 84\n", desc.BufferOffset);
1064 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
1066 parent = variable5->lpVtbl->GetParentConstantBuffer(variable5);
1067 ok(parent == constantbuffer, "GetParentConstantBuffer got %p, expected %p\n", parent, constantbuffer);
1069 type = variable5->lpVtbl->GetType(variable5);
1070 hr = type->lpVtbl->GetDesc(type, &type_desc);
1071 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1073 ok(strcmp(type_desc.TypeName, "float") == 0, "TypeName is \"%s\", expected \"float\"\n", type_desc.TypeName);
1074 ok(type_desc.Class == D3D10_SVC_SCALAR, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_SCALAR);
1075 ok(type_desc.Type == D3D10_SVT_FLOAT, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_FLOAT);
1076 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
1077 ok(type_desc.Members == 0, "Members is %u, expected 0\n", type_desc.Members);
1078 ok(type_desc.Rows == 1, "Rows is %u, expected 1\n", type_desc.Rows);
1079 ok(type_desc.Columns == 1, "Columns is %u, expected 1\n", type_desc.Columns);
1080 ok(type_desc.PackedSize == 0x4, "PackedSize is %#x, expected 0x4\n", type_desc.PackedSize);
1081 ok(type_desc.UnpackedSize == 0x4, "UnpackedSize is %#x, expected 0x4\n", type_desc.UnpackedSize);
1082 ok(type_desc.Stride == 0x10, "Stride is %#x, expected 0x10\n", type_desc.Stride);
1084 variable5 = variable4->lpVtbl->GetMemberByIndex(variable4, 2);
1085 hr = variable5->lpVtbl->GetDesc(variable5, &desc);
1086 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1088 ok(strcmp(desc.Name, "f5") == 0, "Name is \"%s\", expected \"f5\"\n", desc.Name);
1089 ok(strcmp(desc.Semantic, "COLOR1") == 0, "Semantic is \"%s\", expected \"COLOR1\"\n", desc.Semantic);
1090 ok(desc.Flags == 0, "Flags is %u, expected 0\n", desc.Flags);
1091 ok(desc.Annotations == 0, "Annotations is %u, expected 0\n", desc.Annotations);
1092 ok(desc.BufferOffset == 88, "BufferOffset is %u, expected 88\n", desc.BufferOffset);
1093 ok(desc.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", desc.ExplicitBindPoint);
1095 parent = variable5->lpVtbl->GetParentConstantBuffer(variable5);
1096 ok(parent == constantbuffer, "GetParentConstantBuffer got %p, expected %p\n", parent, constantbuffer);
1098 type = variable5->lpVtbl->GetType(variable5);
1099 hr = type->lpVtbl->GetDesc(type, &type_desc);
1100 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1102 ok(strcmp(type_desc.TypeName, "float") == 0, "TypeName is \"%s\", expected \"float\"\n", type_desc.TypeName);
1103 ok(type_desc.Class == D3D10_SVC_SCALAR, "Class is %x, expected %x\n", type_desc.Class, D3D10_SVC_SCALAR);
1104 ok(type_desc.Type == D3D10_SVT_FLOAT, "Type is %x, expected %x\n", type_desc.Type, D3D10_SVT_FLOAT);
1105 ok(type_desc.Elements == 0, "Elements is %u, expected 0\n", type_desc.Elements);
1106 ok(type_desc.Members == 0, "Members is %u, expected 0\n", type_desc.Members);
1107 ok(type_desc.Rows == 1, "Rows is %u, expected 1\n", type_desc.Rows);
1108 ok(type_desc.Columns == 1, "Columns is %u, expected 1\n", type_desc.Columns);
1109 ok(type_desc.PackedSize == 0x4, "PackedSize is %#x, expected 0x4\n", type_desc.PackedSize);
1110 ok(type_desc.UnpackedSize == 0x4, "UnpackedSize is %#x, expected 0x4\n", type_desc.UnpackedSize);
1111 ok(type_desc.Stride == 0x10, "Stride is %#x, expected 0x10\n", type_desc.Stride);
1113 effect->lpVtbl->Release(effect);
1117 * test_effect_variable_type_class
1119 #if 0
1120 cbuffer cb <String s = "STRING";>
1122 float f;
1123 vector <int, 2> i;
1124 matrix <uint, 2, 3> u;
1125 row_major matrix <bool, 2, 3> b;
1127 BlendState blend;
1128 DepthStencilState depthstencil;
1129 RasterizerState rast;
1130 SamplerState sam;
1131 RenderTargetView rtv;
1132 DepthStencilView dsv;
1133 Texture1D t1;
1134 Texture1DArray t1a;
1135 Texture2D t2;
1136 Texture2DMS <float4, 4> t2dms;
1137 Texture2DArray t2a;
1138 Texture2DMSArray <float4, 4> t2dmsa;
1139 Texture3D t3;
1140 TextureCube tq;
1141 GeometryShader gs[2];
1142 PixelShader ps;
1143 VertexShader vs[1];
1144 #endif
1145 static DWORD fx_test_evtc[] = {
1146 0x43425844, 0xc04c50cb, 0x0afeb4ef, 0xbb93f346,
1147 0x97a29499, 0x00000001, 0x00000659, 0x00000001,
1148 0x00000024, 0x30315846, 0x0000062d, 0xfeff1001,
1149 0x00000001, 0x00000004, 0x00000011, 0x00000000,
1150 0x00000000, 0x00000000, 0x00000000, 0x000003d9,
1151 0x00000000, 0x00000008, 0x00000001, 0x00000001,
1152 0x00000001, 0x00000001, 0x00000001, 0x00000001,
1153 0x00000004, 0x00000000, 0x00000000, 0x53006263,
1154 0x6e697274, 0x00070067, 0x00020000, 0x00000000,
1155 0x00000000, 0x00000000, 0x00000000, 0x00010000,
1156 0x00730000, 0x49525453, 0x6600474e, 0x74616f6c,
1157 0x00003300, 0x00000100, 0x00000000, 0x00000400,
1158 0x00001000, 0x00000400, 0x00090900, 0x69006600,
1159 0x0032746e, 0x00000057, 0x00000001, 0x00000000,
1160 0x00000008, 0x00000010, 0x00000008, 0x00001112,
1161 0x69750069, 0x7832746e, 0x007a0033, 0x00010000,
1162 0x00000000, 0x00280000, 0x00300000, 0x00180000,
1163 0x5a1b0000, 0x00750000, 0x6c6f6f62, 0x00337832,
1164 0x000000a0, 0x00000001, 0x00000000, 0x0000001c,
1165 0x00000020, 0x00000018, 0x00001a23, 0x6c420062,
1166 0x53646e65, 0x65746174, 0x0000c600, 0x00000200,
1167 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1168 0x00000200, 0x656c6200, 0x4400646e, 0x68747065,
1169 0x6e657453, 0x536c6963, 0x65746174, 0x0000f300,
1170 0x00000200, 0x00000000, 0x00000000, 0x00000000,
1171 0x00000000, 0x00000300, 0x70656400, 0x74736874,
1172 0x69636e65, 0x6152006c, 0x72657473, 0x72657a69,
1173 0x74617453, 0x012e0065, 0x00020000, 0x00000000,
1174 0x00000000, 0x00000000, 0x00000000, 0x00040000,
1175 0x61720000, 0x53007473, 0x6c706d61, 0x74537265,
1176 0x00657461, 0x0000015f, 0x00000002, 0x00000000,
1177 0x00000000, 0x00000000, 0x00000000, 0x00000015,
1178 0x006d6173, 0x646e6552, 0x61547265, 0x74656772,
1179 0x77656956, 0x00018c00, 0x00000200, 0x00000000,
1180 0x00000000, 0x00000000, 0x00000000, 0x00001300,
1181 0x76747200, 0x70654400, 0x74536874, 0x69636e65,
1182 0x6569566c, 0x01bd0077, 0x00020000, 0x00000000,
1183 0x00000000, 0x00000000, 0x00000000, 0x00140000,
1184 0x73640000, 0x65540076, 0x72757478, 0x00443165,
1185 0x000001ee, 0x00000002, 0x00000000, 0x00000000,
1186 0x00000000, 0x00000000, 0x0000000a, 0x54003174,
1187 0x75747865, 0x44316572, 0x61727241, 0x02170079,
1188 0x00020000, 0x00000000, 0x00000000, 0x00000000,
1189 0x00000000, 0x000b0000, 0x31740000, 0x65540061,
1190 0x72757478, 0x00443265, 0x00000246, 0x00000002,
1191 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1192 0x0000000c, 0x54003274, 0x75747865, 0x44326572,
1193 0x6f00534d, 0x02000002, 0x00000000, 0x00000000,
1194 0x00000000, 0x00000000, 0x0e000000, 0x74000000,
1195 0x736d6432, 0x78655400, 0x65727574, 0x72414432,
1196 0x00796172, 0x0000029d, 0x00000002, 0x00000000,
1197 0x00000000, 0x00000000, 0x00000000, 0x0000000d,
1198 0x00613274, 0x74786554, 0x32657275, 0x41534d44,
1199 0x79617272, 0x0002cc00, 0x00000200, 0x00000000,
1200 0x00000000, 0x00000000, 0x00000000, 0x00000f00,
1201 0x64327400, 0x0061736d, 0x74786554, 0x33657275,
1202 0x03000044, 0x00020000, 0x00000000, 0x00000000,
1203 0x00000000, 0x00000000, 0x00100000, 0x33740000,
1204 0x78655400, 0x65727574, 0x65627543, 0x00032900,
1205 0x00000200, 0x00000000, 0x00000000, 0x00000000,
1206 0x00000000, 0x00001100, 0x00717400, 0x6d6f6547,
1207 0x79727465, 0x64616853, 0x54007265, 0x02000003,
1208 0x02000000, 0x00000000, 0x00000000, 0x00000000,
1209 0x07000000, 0x67000000, 0x69500073, 0x536c6578,
1210 0x65646168, 0x03820072, 0x00020000, 0x00000000,
1211 0x00000000, 0x00000000, 0x00000000, 0x00050000,
1212 0x73700000, 0x72655600, 0x53786574, 0x65646168,
1213 0x03ad0072, 0x00020000, 0x00010000, 0x00000000,
1214 0x00000000, 0x00000000, 0x00060000, 0x73760000,
1215 0x00000400, 0x00006000, 0x00000000, 0x00000400,
1216 0xffffff00, 0x000001ff, 0x00002a00, 0x00000e00,
1217 0x00002c00, 0x00005500, 0x00003900, 0x00000000,
1218 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1219 0x00007800, 0x00005c00, 0x00000000, 0x00000400,
1220 0x00000000, 0x00000000, 0x00000000, 0x00009e00,
1221 0x00008200, 0x00000000, 0x00001000, 0x00000000,
1222 0x00000000, 0x00000000, 0x0000c400, 0x0000a800,
1223 0x00000000, 0x00004000, 0x00000000, 0x00000000,
1224 0x00000000, 0x0000ed00, 0x0000d100, 0x00000000,
1225 0xffffff00, 0x000000ff, 0x00000000, 0x00012100,
1226 0x00010500, 0x00000000, 0xffffff00, 0x000000ff,
1227 0x00000000, 0x00015a00, 0x00013e00, 0x00000000,
1228 0xffffff00, 0x000000ff, 0x00000000, 0x00018800,
1229 0x00016c00, 0x00000000, 0xffffff00, 0x000000ff,
1230 0x00000000, 0x0001b900, 0x00019d00, 0x00000000,
1231 0xffffff00, 0x000000ff, 0x0001ea00, 0x0001ce00,
1232 0x00000000, 0xffffff00, 0x000000ff, 0x00021400,
1233 0x0001f800, 0x00000000, 0xffffff00, 0x000000ff,
1234 0x00024200, 0x00022600, 0x00000000, 0xffffff00,
1235 0x000000ff, 0x00026c00, 0x00025000, 0x00000000,
1236 0xffffff00, 0x000000ff, 0x00029700, 0x00027b00,
1237 0x00000000, 0xffffff00, 0x000000ff, 0x0002c800,
1238 0x0002ac00, 0x00000000, 0xffffff00, 0x000000ff,
1239 0x0002f900, 0x0002dd00, 0x00000000, 0xffffff00,
1240 0x000000ff, 0x00032600, 0x00030a00, 0x00000000,
1241 0xffffff00, 0x000000ff, 0x00035100, 0x00033500,
1242 0x00000000, 0xffffff00, 0x000000ff, 0x00037f00,
1243 0x00036300, 0x00000000, 0xffffff00, 0x000000ff,
1244 0x00000000, 0x00000000, 0x0003aa00, 0x00038e00,
1245 0x00000000, 0xffffff00, 0x000000ff, 0x00000000,
1246 0x0003d600, 0x0003ba00, 0x00000000, 0xffffff00,
1247 0x000000ff, 0x00000000, 0x00000000,
1250 static BOOL is_valid_check(BOOL a, BOOL b)
1252 return (a && b) || (!a && !b);
1255 static void check_as(ID3D10EffectVariable *variable)
1257 ID3D10EffectVariable *variable2;
1258 ID3D10EffectType *type;
1259 D3D10_EFFECT_TYPE_DESC td;
1260 BOOL ret, is_valid;
1261 HRESULT hr;
1263 type = variable->lpVtbl->GetType(variable);
1264 hr = type->lpVtbl->GetDesc(type, &td);
1265 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1267 variable2 = (ID3D10EffectVariable *)variable->lpVtbl->AsConstantBuffer(variable);
1268 is_valid = variable2->lpVtbl->IsValid(variable2);
1269 ret = is_valid_check(is_valid, td.Type == D3D10_SVT_CBUFFER);
1270 ok(ret, "AsConstantBuffer valid check failed (Type is %x)\n", td.Type);
1272 variable2 = (ID3D10EffectVariable *)variable->lpVtbl->AsString(variable);
1273 is_valid = variable2->lpVtbl->IsValid(variable2);
1274 ret = is_valid_check(is_valid, td.Type == D3D10_SVT_STRING);
1275 ok(ret, "AsString valid check failed (Type is %x)\n", td.Type);
1277 variable2 = (ID3D10EffectVariable *)variable->lpVtbl->AsScalar(variable);
1278 is_valid = variable2->lpVtbl->IsValid(variable2);
1279 ret = is_valid_check(is_valid, td.Class == D3D10_SVC_SCALAR);
1280 ok(ret, "AsScalar valid check failed (Class is %x)\n", td.Class);
1282 variable2 = (ID3D10EffectVariable *)variable->lpVtbl->AsVector(variable);
1283 is_valid = variable2->lpVtbl->IsValid(variable2);
1284 ret = is_valid_check(is_valid, td.Class == D3D10_SVC_VECTOR);
1285 ok(ret, "AsVector valid check failed (Class is %x)\n", td.Class);
1287 variable2 = (ID3D10EffectVariable *)variable->lpVtbl->AsMatrix(variable);
1288 is_valid = variable2->lpVtbl->IsValid(variable2);
1289 ret = is_valid_check(is_valid, td.Class == D3D10_SVC_MATRIX_ROWS
1290 || td.Class == D3D10_SVC_MATRIX_COLUMNS);
1291 ok(ret, "AsMatrix valid check failed (Class is %x)\n", td.Class);
1293 variable2 = (ID3D10EffectVariable *)variable->lpVtbl->AsBlend(variable);
1294 is_valid = variable2->lpVtbl->IsValid(variable2);
1295 ret = is_valid_check(is_valid, td.Type == D3D10_SVT_BLEND);
1296 ok(ret, "AsBlend valid check failed (Type is %x)\n", td.Type);
1298 variable2 = (ID3D10EffectVariable *)variable->lpVtbl->AsDepthStencil(variable);
1299 is_valid = variable2->lpVtbl->IsValid(variable2);
1300 ret = is_valid_check(is_valid, td.Type == D3D10_SVT_DEPTHSTENCIL);
1301 ok(ret, "AsDepthStencil valid check failed (Type is %x)\n", td.Type);
1303 variable2 = (ID3D10EffectVariable *)variable->lpVtbl->AsRasterizer(variable);
1304 is_valid = variable2->lpVtbl->IsValid(variable2);
1305 ret = is_valid_check(is_valid, td.Type == D3D10_SVT_RASTERIZER);
1306 ok(ret, "AsRasterizer valid check failed (Type is %x)\n", td.Type);
1308 variable2 = (ID3D10EffectVariable *)variable->lpVtbl->AsSampler(variable);
1309 is_valid = variable2->lpVtbl->IsValid(variable2);
1310 ret = is_valid_check(is_valid, td.Type == D3D10_SVT_SAMPLER);
1311 ok(ret, "AsSampler valid check failed (Type is %x)\n", td.Type);
1313 variable2 = (ID3D10EffectVariable *)variable->lpVtbl->AsDepthStencilView(variable);
1314 is_valid = variable2->lpVtbl->IsValid(variable2);
1315 ret = is_valid_check(is_valid, td.Type == D3D10_SVT_DEPTHSTENCILVIEW);
1316 ok(ret, "AsDepthStencilView valid check failed (Type is %x)\n", td.Type);
1318 variable2 = (ID3D10EffectVariable *)variable->lpVtbl->AsRenderTargetView(variable);
1319 is_valid = variable2->lpVtbl->IsValid(variable2);
1320 ret = is_valid_check(is_valid, td.Type == D3D10_SVT_RENDERTARGETVIEW);
1321 ok(ret, "AsRenderTargetView valid check failed (Type is %x)\n", td.Type);
1323 variable2 = (ID3D10EffectVariable *)variable->lpVtbl->AsShaderResource(variable);
1324 is_valid = variable2->lpVtbl->IsValid(variable2);
1325 ret = is_valid_check(is_valid, td.Type == D3D10_SVT_TEXTURE1D
1326 || td.Type == D3D10_SVT_TEXTURE1DARRAY || td.Type == D3D10_SVT_TEXTURE2D
1327 || td.Type == D3D10_SVT_TEXTURE2DMS || td.Type == D3D10_SVT_TEXTURE2DARRAY
1328 || td.Type == D3D10_SVT_TEXTURE2DMSARRAY || td.Type == D3D10_SVT_TEXTURE3D
1329 || td.Type == D3D10_SVT_TEXTURECUBE);
1330 ok(ret, "AsShaderResource valid check failed (Type is %x)\n", td.Type);
1332 variable2 = (ID3D10EffectVariable *)variable->lpVtbl->AsShader(variable);
1333 is_valid = variable2->lpVtbl->IsValid(variable2);
1334 ret = is_valid_check(is_valid, td.Type == D3D10_SVT_GEOMETRYSHADER
1335 || td.Type == D3D10_SVT_PIXELSHADER || td.Type == D3D10_SVT_VERTEXSHADER);
1336 ok(ret, "AsShader valid check failed (Type is %x)\n", td.Type);
1339 static void test_effect_variable_type_class(ID3D10Device *device)
1341 ID3D10Effect *effect;
1342 ID3D10EffectConstantBuffer *constantbuffer;
1343 ID3D10EffectVariable *variable;
1344 ID3D10EffectType *type;
1345 D3D10_EFFECT_VARIABLE_DESC vd;
1346 D3D10_EFFECT_TYPE_DESC td;
1347 HRESULT hr;
1348 unsigned int variable_nr = 0;
1350 hr = D3D10CreateEffectFromMemory(fx_test_evtc, fx_test_evtc[6], 0, device, NULL, &effect);
1351 ok(SUCCEEDED(hr), "D3D10CreateEffectFromMemory failed (%x)\n", hr);
1353 /* check constantbuffer cb */
1354 constantbuffer = effect->lpVtbl->GetConstantBufferByIndex(effect, 0);
1355 hr = constantbuffer->lpVtbl->GetDesc(constantbuffer, &vd);
1356 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1358 ok(strcmp(vd.Name, "cb") == 0, "Name is \"%s\", expected \"cb\"\n", vd.Name);
1359 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1360 ok(vd.Flags == 0, "Type is %u, expected 0\n", vd.Flags);
1361 ok(vd.Annotations == 1, "Elements is %u, expected 1\n", vd.Annotations);
1362 ok(vd.BufferOffset == 0, "Members is %u, expected 0\n", vd.BufferOffset);
1363 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1365 check_as((ID3D10EffectVariable *)constantbuffer);
1367 type = constantbuffer->lpVtbl->GetType(constantbuffer);
1368 hr = type->lpVtbl->GetDesc(type, &td);
1369 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1371 ok(strcmp(td.TypeName, "cbuffer") == 0, "TypeName is \"%s\", expected \"cbuffer\"\n", td.TypeName);
1372 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1373 ok(td.Type == D3D10_SVT_CBUFFER, "Type is %x, expected %x\n", td.Type, D3D10_SVT_CBUFFER);
1374 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1375 ok(td.Members == 4, "Members is %u, expected 4\n", td.Members);
1376 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1377 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1378 ok(td.PackedSize == 0x3c, "PackedSize is %#x, expected 0x3c\n", td.PackedSize);
1379 ok(td.UnpackedSize == 0x60, "UnpackedSize is %#x, expected 0x60\n", td.UnpackedSize);
1380 ok(td.Stride == 0x60, "Stride is %#x, expected 0x60\n", td.Stride);
1382 /* check annotation a */
1383 variable = constantbuffer->lpVtbl->GetAnnotationByIndex(constantbuffer, 0);
1384 hr = variable->lpVtbl->GetDesc(variable, &vd);
1385 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1387 ok(strcmp(vd.Name, "s") == 0, "Name is \"%s\", expected \"s\"\n", vd.Name);
1388 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1389 ok(vd.Flags == 2, "Flags is %u, expected 2\n", vd.Flags);
1390 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1391 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1392 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1394 check_as((ID3D10EffectVariable *)variable);
1396 type = variable->lpVtbl->GetType(variable);
1397 hr = type->lpVtbl->GetDesc(type, &td);
1398 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1400 ok(strcmp(td.TypeName, "String") == 0, "TypeName is \"%s\", expected \"String\"\n", td.TypeName);
1401 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1402 ok(td.Type == D3D10_SVT_STRING, "Type is %x, expected %x\n", td.Type, D3D10_SVT_STRING);
1403 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1404 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1405 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1406 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1407 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1408 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1409 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1411 /* check float f */
1412 variable = constantbuffer->lpVtbl->GetMemberByIndex(constantbuffer, variable_nr++);
1413 hr = variable->lpVtbl->GetDesc(variable, &vd);
1414 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1416 ok(strcmp(vd.Name, "f") == 0, "Name is \"%s\", expected \"f\"\n", vd.Name);
1417 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1418 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1419 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1420 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1421 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1423 check_as((ID3D10EffectVariable *)variable);
1425 type = variable->lpVtbl->GetType(variable);
1426 hr = type->lpVtbl->GetDesc(type, &td);
1427 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1429 ok(strcmp(td.TypeName, "float") == 0, "TypeName is \"%s\", expected \"float\"\n", td.TypeName);
1430 ok(td.Class == D3D10_SVC_SCALAR, "Class is %x, expected %x\n", td.Class, D3D10_SVC_SCALAR);
1431 ok(td.Type == D3D10_SVT_FLOAT, "Type is %x, expected %x\n", td.Type, D3D10_SVT_FLOAT);
1432 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1433 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1434 ok(td.Rows == 1, "Rows is %u, expected 1\n", td.Rows);
1435 ok(td.Columns == 1, "Columns is %u, expected 1\n", td.Columns);
1436 ok(td.PackedSize == 0x4, "PackedSize is %#x, expected 0x4\n", td.PackedSize);
1437 ok(td.UnpackedSize == 0x4, "UnpackedSize is %#x, expected 0x4\n", td.UnpackedSize);
1438 ok(td.Stride == 0x10, "Stride is %#x, expected 0x10\n", td.Stride);
1440 /* check int2 i */
1441 variable = constantbuffer->lpVtbl->GetMemberByIndex(constantbuffer, variable_nr++);
1442 hr = variable->lpVtbl->GetDesc(variable, &vd);
1443 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1445 ok(strcmp(vd.Name, "i") == 0, "Name is \"%s\", expected \"i\"\n", vd.Name);
1446 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1447 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1448 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1449 ok(vd.BufferOffset == 4, "BufferOffset is %u, expected 4\n", vd.BufferOffset);
1450 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1452 check_as((ID3D10EffectVariable *)variable);
1454 type = variable->lpVtbl->GetType(variable);
1455 hr = type->lpVtbl->GetDesc(type, &td);
1456 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1458 ok(strcmp(td.TypeName, "int2") == 0, "TypeName is \"%s\", expected \"int2\"\n", td.TypeName);
1459 ok(td.Class == D3D10_SVC_VECTOR, "Class is %x, expected %x\n", td.Class, D3D10_SVC_VECTOR);
1460 ok(td.Type == D3D10_SVT_INT, "Type is %x, expected %x\n", td.Type, D3D10_SVT_INT);
1461 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1462 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1463 ok(td.Rows == 1, "Rows is %u, expected 1\n", td.Rows);
1464 ok(td.Columns == 2, "Columns is %u, expected 2\n", td.Columns);
1465 ok(td.PackedSize == 0x8, "PackedSize is %#x, expected 0x8\n", td.PackedSize);
1466 ok(td.UnpackedSize == 0x8, "UnpackedSize is %#x, expected 0x8\n", td.UnpackedSize);
1467 ok(td.Stride == 0x10, "Stride is %#x, expected 0x10\n", td.Stride);
1469 /* check uint2x3 u */
1470 variable = constantbuffer->lpVtbl->GetMemberByIndex(constantbuffer, variable_nr++);
1471 hr = variable->lpVtbl->GetDesc(variable, &vd);
1472 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1474 ok(strcmp(vd.Name, "u") == 0, "Name is \"%s\", expected \"u\"\n", vd.Name);
1475 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1476 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1477 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1478 ok(vd.BufferOffset == 16, "BufferOffset is %u, expected 16\n", vd.BufferOffset);
1479 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1481 check_as((ID3D10EffectVariable *)variable);
1483 type = variable->lpVtbl->GetType(variable);
1484 hr = type->lpVtbl->GetDesc(type, &td);
1485 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1487 ok(strcmp(td.TypeName, "uint2x3") == 0, "TypeName is \"%s\", expected \"uint2x3\"\n", td.TypeName);
1488 ok(td.Class == D3D10_SVC_MATRIX_COLUMNS, "Class is %x, expected %x\n", td.Class, D3D10_SVC_MATRIX_COLUMNS);
1489 ok(td.Type == D3D10_SVT_UINT, "Type is %x, expected %x\n", td.Type, D3D10_SVT_UINT);
1490 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1491 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1492 ok(td.Rows == 2, "Rows is %u, expected 2\n", td.Rows);
1493 ok(td.Columns == 3, "Columns is %u, expected 3\n", td.Columns);
1494 ok(td.PackedSize == 0x18, "PackedSize is %#x, expected 0x18\n", td.PackedSize);
1495 ok(td.UnpackedSize == 0x28, "UnpackedSize is %#x, expected 0x28\n", td.UnpackedSize);
1496 ok(td.Stride == 0x30, "Stride is %#x, expected 0x30\n", td.Stride);
1498 /* check bool2x3 b */
1499 variable = constantbuffer->lpVtbl->GetMemberByIndex(constantbuffer, variable_nr++);
1500 hr = variable->lpVtbl->GetDesc(variable, &vd);
1501 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1503 ok(strcmp(vd.Name, "b") == 0, "Name is \"%s\", expected \"b\"\n", vd.Name);
1504 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1505 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1506 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1507 ok(vd.BufferOffset == 64, "BufferOffset is %u, expected 64\n", vd.BufferOffset);
1508 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1510 check_as((ID3D10EffectVariable *)variable);
1512 type = variable->lpVtbl->GetType(variable);
1513 hr = type->lpVtbl->GetDesc(type, &td);
1514 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1516 ok(strcmp(td.TypeName, "bool2x3") == 0, "TypeName is \"%s\", expected \"bool2x3\"\n", td.TypeName);
1517 ok(td.Class == D3D10_SVC_MATRIX_ROWS, "Class is %x, expected %x\n", td.Class, D3D10_SVC_MATRIX_ROWS);
1518 ok(td.Type == D3D10_SVT_BOOL, "Type is %x, expected %x\n", td.Type, D3D10_SVT_BOOL);
1519 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1520 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1521 ok(td.Rows == 2, "Rows is %u, expected 2\n", td.Rows);
1522 ok(td.Columns == 3, "Columns is %u, expected 3\n", td.Columns);
1523 ok(td.PackedSize == 0x18, "PackedSize is %#x, expected 0x18\n", td.PackedSize);
1524 ok(td.UnpackedSize == 0x1c, "UnpackedSize is %#x, expected 0x1c\n", td.UnpackedSize);
1525 ok(td.Stride == 0x20, "Stride is %#x, expected 0x20\n", td.Stride);
1527 /* check BlendState blend */
1528 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1529 hr = variable->lpVtbl->GetDesc(variable, &vd);
1530 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1532 ok(strcmp(vd.Name, "blend") == 0, "Name is \"%s\", expected \"blend\"\n", vd.Name);
1533 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1534 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1535 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1536 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1537 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1539 check_as((ID3D10EffectVariable *)variable);
1541 type = variable->lpVtbl->GetType(variable);
1542 hr = type->lpVtbl->GetDesc(type, &td);
1543 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1545 ok(strcmp(td.TypeName, "BlendState") == 0, "TypeName is \"%s\", expected \"BlendState\"\n", td.TypeName);
1546 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1547 ok(td.Type == D3D10_SVT_BLEND, "Type is %x, expected %x\n", td.Type, D3D10_SVT_BLEND);
1548 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1549 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1550 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1551 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1552 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1553 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1554 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1556 /* check DepthStencilState depthstencil */
1557 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1558 hr = variable->lpVtbl->GetDesc(variable, &vd);
1559 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1561 ok(strcmp(vd.Name, "depthstencil") == 0, "Name is \"%s\", expected \"depthstencil\"\n", vd.Name);
1562 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1563 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1564 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1565 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1566 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1568 check_as((ID3D10EffectVariable *)variable);
1570 type = variable->lpVtbl->GetType(variable);
1571 hr = type->lpVtbl->GetDesc(type, &td);
1572 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1574 ok(strcmp(td.TypeName, "DepthStencilState") == 0, "TypeName is \"%s\", expected \"DepthStencilState\"\n", td.TypeName);
1575 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1576 ok(td.Type == D3D10_SVT_DEPTHSTENCIL, "Type is %x, expected %x\n", td.Type, D3D10_SVT_DEPTHSTENCIL);
1577 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1578 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1579 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1580 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1581 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1582 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1583 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1585 /* check RasterizerState rast */
1586 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1587 hr = variable->lpVtbl->GetDesc(variable, &vd);
1588 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1590 ok(strcmp(vd.Name, "rast") == 0, "Name is \"%s\", expected \"rast\"\n", vd.Name);
1591 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1592 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1593 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1594 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1595 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1597 check_as((ID3D10EffectVariable *)variable);
1599 type = variable->lpVtbl->GetType(variable);
1600 hr = type->lpVtbl->GetDesc(type, &td);
1601 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1603 ok(strcmp(td.TypeName, "RasterizerState") == 0, "TypeName is \"%s\", expected \"RasterizerState\"\n", td.TypeName);
1604 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1605 ok(td.Type == D3D10_SVT_RASTERIZER, "Type is %x, expected %x\n", td.Type, D3D10_SVT_RASTERIZER);
1606 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1607 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1608 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1609 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1610 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1611 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1612 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1614 /* check SamplerState sam */
1615 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1616 hr = variable->lpVtbl->GetDesc(variable, &vd);
1617 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1619 ok(strcmp(vd.Name, "sam") == 0, "Name is \"%s\", expected \"sam\"\n", vd.Name);
1620 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1621 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1622 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1623 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1624 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1626 check_as((ID3D10EffectVariable *)variable);
1628 type = variable->lpVtbl->GetType(variable);
1629 hr = type->lpVtbl->GetDesc(type, &td);
1630 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1632 ok(strcmp(td.TypeName, "SamplerState") == 0, "TypeName is \"%s\", expected \"SamplerState\"\n", td.TypeName);
1633 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1634 ok(td.Type == D3D10_SVT_SAMPLER, "Type is %x, expected %x\n", td.Type, D3D10_SVT_SAMPLER);
1635 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1636 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1637 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1638 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1639 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1640 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1641 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1643 /* check RenderTargetView rtv */
1644 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1645 hr = variable->lpVtbl->GetDesc(variable, &vd);
1646 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1648 ok(strcmp(vd.Name, "rtv") == 0, "Name is \"%s\", expected \"rtv\"\n", vd.Name);
1649 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1650 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1651 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1652 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1653 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1655 check_as((ID3D10EffectVariable *)variable);
1657 type = variable->lpVtbl->GetType(variable);
1658 hr = type->lpVtbl->GetDesc(type, &td);
1659 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1661 ok(strcmp(td.TypeName, "RenderTargetView") == 0, "TypeName is \"%s\", expected \"RenderTargetView\"\n", td.TypeName);
1662 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1663 ok(td.Type == D3D10_SVT_RENDERTARGETVIEW, "Type is %x, expected %x\n", td.Type, D3D10_SVT_RENDERTARGETVIEW);
1664 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1665 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1666 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1667 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1668 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1669 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1670 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1672 /* check DepthStencilView dsv */
1673 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1674 hr = variable->lpVtbl->GetDesc(variable, &vd);
1675 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1677 ok(strcmp(vd.Name, "dsv") == 0, "Name is \"%s\", expected \"dsv\"\n", vd.Name);
1678 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1679 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1680 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1681 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1682 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1684 check_as((ID3D10EffectVariable *)variable);
1686 type = variable->lpVtbl->GetType(variable);
1687 hr = type->lpVtbl->GetDesc(type, &td);
1688 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1690 ok(strcmp(td.TypeName, "DepthStencilView") == 0, "TypeName is \"%s\", expected \"DepthStencilView\"\n", td.TypeName);
1691 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1692 ok(td.Type == D3D10_SVT_DEPTHSTENCILVIEW, "Type is %x, expected %x\n", td.Type, D3D10_SVT_DEPTHSTENCILVIEW);
1693 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1694 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1695 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1696 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1697 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1698 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1699 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1701 /* check Texture1D t1 */
1702 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1703 hr = variable->lpVtbl->GetDesc(variable, &vd);
1704 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1706 ok(strcmp(vd.Name, "t1") == 0, "Name is \"%s\", expected \"t1\"\n", vd.Name);
1707 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1708 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1709 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1710 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1711 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1713 check_as((ID3D10EffectVariable *)variable);
1715 type = variable->lpVtbl->GetType(variable);
1716 hr = type->lpVtbl->GetDesc(type, &td);
1717 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1719 ok(strcmp(td.TypeName, "Texture1D") == 0, "TypeName is \"%s\", expected \"Texture1D\"\n", td.TypeName);
1720 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1721 ok(td.Type == D3D10_SVT_TEXTURE1D, "Type is %x, expected %x\n", td.Type, D3D10_SVT_TEXTURE1D);
1722 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1723 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1724 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1725 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1726 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1727 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1728 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1730 /* check Texture1DArray t1a */
1731 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1732 hr = variable->lpVtbl->GetDesc(variable, &vd);
1733 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1735 ok(strcmp(vd.Name, "t1a") == 0, "Name is \"%s\", expected \"t1a\"\n", vd.Name);
1736 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1737 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1738 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1739 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1740 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1742 check_as((ID3D10EffectVariable *)variable);
1744 type = variable->lpVtbl->GetType(variable);
1745 hr = type->lpVtbl->GetDesc(type, &td);
1746 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1748 ok(strcmp(td.TypeName, "Texture1DArray") == 0, "TypeName is \"%s\", expected \"Texture1DArray\"\n", td.TypeName);
1749 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1750 ok(td.Type == D3D10_SVT_TEXTURE1DARRAY, "Type is %x, expected %x\n", td.Type, D3D10_SVT_TEXTURE1DARRAY);
1751 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1752 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1753 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1754 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1755 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1756 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1757 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1759 /* check Texture2D t2 */
1760 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1761 hr = variable->lpVtbl->GetDesc(variable, &vd);
1762 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1764 ok(strcmp(vd.Name, "t2") == 0, "Name is \"%s\", expected \"t2\"\n", vd.Name);
1765 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1766 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1767 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1768 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1769 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1771 check_as((ID3D10EffectVariable *)variable);
1773 type = variable->lpVtbl->GetType(variable);
1774 hr = type->lpVtbl->GetDesc(type, &td);
1775 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1777 ok(strcmp(td.TypeName, "Texture2D") == 0, "TypeName is \"%s\", expected \"Texture2D\"\n", td.TypeName);
1778 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1779 ok(td.Type == D3D10_SVT_TEXTURE2D, "Type is %x, expected %x\n", td.Type, D3D10_SVT_TEXTURE2D);
1780 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1781 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1782 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1783 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1784 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1785 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1786 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1788 /* check Texture2DMS t2dms */
1789 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1790 hr = variable->lpVtbl->GetDesc(variable, &vd);
1791 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1793 ok(strcmp(vd.Name, "t2dms") == 0, "Name is \"%s\", expected \"t2dms\"\n", vd.Name);
1794 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1795 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1796 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1797 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1798 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1800 check_as((ID3D10EffectVariable *)variable);
1802 type = variable->lpVtbl->GetType(variable);
1803 hr = type->lpVtbl->GetDesc(type, &td);
1804 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1806 ok(strcmp(td.TypeName, "Texture2DMS") == 0, "TypeName is \"%s\", expected \"Texture2DMS\"\n", td.TypeName);
1807 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1808 ok(td.Type == D3D10_SVT_TEXTURE2DMS, "Type is %x, expected %x\n", td.Type, D3D10_SVT_TEXTURE2DMS);
1809 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1810 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1811 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1812 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1813 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1814 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1815 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1817 /* check Texture2DArray t2a */
1818 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1819 hr = variable->lpVtbl->GetDesc(variable, &vd);
1820 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1822 ok(strcmp(vd.Name, "t2a") == 0, "Name is \"%s\", expected \"t2a\"\n", vd.Name);
1823 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1824 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1825 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1826 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1827 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1829 check_as((ID3D10EffectVariable *)variable);
1831 type = variable->lpVtbl->GetType(variable);
1832 hr = type->lpVtbl->GetDesc(type, &td);
1833 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1835 ok(strcmp(td.TypeName, "Texture2DArray") == 0, "TypeName is \"%s\", expected \"Texture2DArray\"\n", td.TypeName);
1836 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1837 ok(td.Type == D3D10_SVT_TEXTURE2DARRAY, "Type is %x, expected %x\n", td.Type, D3D10_SVT_TEXTURE2DARRAY);
1838 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1839 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1840 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1841 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1842 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1843 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1844 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1846 /* check Texture2DMSArray t2dmsa */
1847 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1848 hr = variable->lpVtbl->GetDesc(variable, &vd);
1849 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1851 ok(strcmp(vd.Name, "t2dmsa") == 0, "Name is \"%s\", expected \"t2dmsa\"\n", vd.Name);
1852 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1853 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1854 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1855 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1856 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1858 check_as((ID3D10EffectVariable *)variable);
1860 type = variable->lpVtbl->GetType(variable);
1861 hr = type->lpVtbl->GetDesc(type, &td);
1862 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1864 ok(strcmp(td.TypeName, "Texture2DMSArray") == 0, "TypeName is \"%s\", expected \"TTexture2DMSArray\"\n", td.TypeName);
1865 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1866 ok(td.Type == D3D10_SVT_TEXTURE2DMSARRAY, "Type is %x, expected %x\n", td.Type, D3D10_SVT_TEXTURE2DMSARRAY);
1867 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1868 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1869 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1870 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1871 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1872 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1873 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1875 /* check Texture3D t3 */
1876 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1877 hr = variable->lpVtbl->GetDesc(variable, &vd);
1878 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1880 ok(strcmp(vd.Name, "t3") == 0, "Name is \"%s\", expected \"t3\"\n", vd.Name);
1881 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1882 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1883 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1884 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1885 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1887 check_as((ID3D10EffectVariable *)variable);
1889 type = variable->lpVtbl->GetType(variable);
1890 hr = type->lpVtbl->GetDesc(type, &td);
1891 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1893 ok(strcmp(td.TypeName, "Texture3D") == 0, "TypeName is \"%s\", expected \"Texture3D\"\n", td.TypeName);
1894 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1895 ok(td.Type == D3D10_SVT_TEXTURE3D, "Type is %x, expected %x\n", td.Type, D3D10_SVT_TEXTURE3D);
1896 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1897 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1898 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1899 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1900 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1901 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1902 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1904 /* check TextureCube tq */
1905 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1906 hr = variable->lpVtbl->GetDesc(variable, &vd);
1907 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1909 ok(strcmp(vd.Name, "tq") == 0, "Name is \"%s\", expected \"tq\"\n", vd.Name);
1910 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1911 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1912 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1913 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1914 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1916 check_as((ID3D10EffectVariable *)variable);
1918 type = variable->lpVtbl->GetType(variable);
1919 hr = type->lpVtbl->GetDesc(type, &td);
1920 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1922 ok(strcmp(td.TypeName, "TextureCube") == 0, "TypeName is \"%s\", expected \"TextureCube\"\n", td.TypeName);
1923 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1924 ok(td.Type == D3D10_SVT_TEXTURECUBE, "Type is %x, expected %x\n", td.Type, D3D10_SVT_TEXTURECUBE);
1925 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1926 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1927 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1928 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1929 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1930 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1931 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1933 /* check GeometryShader gs[2] */
1934 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1935 hr = variable->lpVtbl->GetDesc(variable, &vd);
1936 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1938 ok(strcmp(vd.Name, "gs") == 0, "Name is \"%s\", expected \"gs\"\n", vd.Name);
1939 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1940 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1941 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1942 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1943 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1945 check_as((ID3D10EffectVariable *)variable);
1947 type = variable->lpVtbl->GetType(variable);
1948 hr = type->lpVtbl->GetDesc(type, &td);
1949 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1951 ok(strcmp(td.TypeName, "GeometryShader") == 0, "TypeName is \"%s\", expected \"GeometryShader\"\n", td.TypeName);
1952 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1953 ok(td.Type == D3D10_SVT_GEOMETRYSHADER, "Type is %x, expected %x\n", td.Type, D3D10_SVT_GEOMETRYSHADER);
1954 ok(td.Elements == 2, "Elements is %u, expected 2\n", td.Elements);
1955 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1956 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1957 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1958 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1959 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1960 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1962 /* check PixelShader ps */
1963 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1964 hr = variable->lpVtbl->GetDesc(variable, &vd);
1965 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1967 ok(strcmp(vd.Name, "ps") == 0, "Name is \"%s\", expected \"ps\"\n", vd.Name);
1968 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1969 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1970 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1971 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1972 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1974 check_as((ID3D10EffectVariable *)variable);
1976 type = variable->lpVtbl->GetType(variable);
1977 hr = type->lpVtbl->GetDesc(type, &td);
1978 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1980 ok(strcmp(td.TypeName, "PixelShader") == 0, "TypeName is \"%s\", expected \"PixelShader\"\n", td.TypeName);
1981 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1982 ok(td.Type == D3D10_SVT_PIXELSHADER, "Type is %x, expected %x\n", td.Type, D3D10_SVT_PIXELSHADER);
1983 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1984 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1985 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1986 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1987 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1988 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1989 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1991 /* check VertexShader vs[1] */
1992 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1993 hr = variable->lpVtbl->GetDesc(variable, &vd);
1994 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1996 ok(strcmp(vd.Name, "vs") == 0, "Name is \"%s\", expected \"vs\"\n", vd.Name);
1997 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1998 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1999 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
2000 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
2001 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
2003 check_as((ID3D10EffectVariable *)variable);
2005 type = variable->lpVtbl->GetType(variable);
2006 hr = type->lpVtbl->GetDesc(type, &td);
2007 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
2009 ok(strcmp(td.TypeName, "VertexShader") == 0, "TypeName is \"%s\", expected \"VertexShader\"\n", td.TypeName);
2010 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
2011 ok(td.Type == D3D10_SVT_VERTEXSHADER, "Type is %x, expected %x\n", td.Type, D3D10_SVT_VERTEXSHADER);
2012 ok(td.Elements == 1, "Elements is %u, expected 1\n", td.Elements);
2013 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
2014 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
2015 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
2016 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
2017 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
2018 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
2020 effect->lpVtbl->Release(effect);
2023 START_TEST(effect)
2025 ID3D10Device *device;
2026 ULONG refcount;
2028 device = create_device();
2029 if (!device)
2031 skip("Failed to create device, skipping tests\n");
2032 return;
2035 test_effect_constant_buffer_type(device);
2036 test_effect_variable_type(device);
2037 test_effect_variable_member(device);
2038 test_effect_variable_element(device);
2039 test_effect_variable_type_class(device);
2041 refcount = ID3D10Device_Release(device);
2042 ok(!refcount, "Device has %u references left\n", refcount);