push 5bc4839baba05cc4333240c25295b8dd6e351557
[wine/hacks.git] / dlls / d3d10 / tests / effect.c
blob5bbde06c6b4881357a5f74f29c9cb9a169a5f7e3
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, *null_buffer, *parent;
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 /* get the null_constantbuffer, so that we can compare it to variables->GetParentConstantBuffer */
1354 null_buffer = effect->lpVtbl->GetConstantBufferByIndex(effect, 1);
1356 /* check constantbuffer cb */
1357 constantbuffer = effect->lpVtbl->GetConstantBufferByIndex(effect, 0);
1358 hr = constantbuffer->lpVtbl->GetDesc(constantbuffer, &vd);
1359 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1361 ok(strcmp(vd.Name, "cb") == 0, "Name is \"%s\", expected \"cb\"\n", vd.Name);
1362 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1363 ok(vd.Flags == 0, "Type is %u, expected 0\n", vd.Flags);
1364 ok(vd.Annotations == 1, "Elements is %u, expected 1\n", vd.Annotations);
1365 ok(vd.BufferOffset == 0, "Members is %u, expected 0\n", vd.BufferOffset);
1366 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1368 check_as((ID3D10EffectVariable *)constantbuffer);
1370 parent = constantbuffer->lpVtbl->GetParentConstantBuffer(constantbuffer);
1371 ok(null_buffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, null_buffer);
1373 type = constantbuffer->lpVtbl->GetType(constantbuffer);
1374 hr = type->lpVtbl->GetDesc(type, &td);
1375 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1377 ok(strcmp(td.TypeName, "cbuffer") == 0, "TypeName is \"%s\", expected \"cbuffer\"\n", td.TypeName);
1378 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1379 ok(td.Type == D3D10_SVT_CBUFFER, "Type is %x, expected %x\n", td.Type, D3D10_SVT_CBUFFER);
1380 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1381 ok(td.Members == 4, "Members is %u, expected 4\n", td.Members);
1382 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1383 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1384 ok(td.PackedSize == 0x3c, "PackedSize is %#x, expected 0x3c\n", td.PackedSize);
1385 ok(td.UnpackedSize == 0x60, "UnpackedSize is %#x, expected 0x60\n", td.UnpackedSize);
1386 ok(td.Stride == 0x60, "Stride is %#x, expected 0x60\n", td.Stride);
1388 /* check annotation a */
1389 variable = constantbuffer->lpVtbl->GetAnnotationByIndex(constantbuffer, 0);
1390 hr = variable->lpVtbl->GetDesc(variable, &vd);
1391 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1393 ok(strcmp(vd.Name, "s") == 0, "Name is \"%s\", expected \"s\"\n", vd.Name);
1394 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1395 ok(vd.Flags == 2, "Flags is %u, expected 2\n", vd.Flags);
1396 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1397 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1398 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1400 check_as((ID3D10EffectVariable *)variable);
1402 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
1403 ok(null_buffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, null_buffer);
1405 type = variable->lpVtbl->GetType(variable);
1406 hr = type->lpVtbl->GetDesc(type, &td);
1407 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1409 ok(strcmp(td.TypeName, "String") == 0, "TypeName is \"%s\", expected \"String\"\n", td.TypeName);
1410 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1411 ok(td.Type == D3D10_SVT_STRING, "Type is %x, expected %x\n", td.Type, D3D10_SVT_STRING);
1412 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1413 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1414 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1415 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1416 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1417 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1418 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1420 /* check float f */
1421 variable = constantbuffer->lpVtbl->GetMemberByIndex(constantbuffer, variable_nr++);
1422 hr = variable->lpVtbl->GetDesc(variable, &vd);
1423 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1425 ok(strcmp(vd.Name, "f") == 0, "Name is \"%s\", expected \"f\"\n", vd.Name);
1426 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1427 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1428 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1429 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1430 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1432 check_as((ID3D10EffectVariable *)variable);
1434 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
1435 ok(constantbuffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, constantbuffer);
1437 type = variable->lpVtbl->GetType(variable);
1438 hr = type->lpVtbl->GetDesc(type, &td);
1439 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1441 ok(strcmp(td.TypeName, "float") == 0, "TypeName is \"%s\", expected \"float\"\n", td.TypeName);
1442 ok(td.Class == D3D10_SVC_SCALAR, "Class is %x, expected %x\n", td.Class, D3D10_SVC_SCALAR);
1443 ok(td.Type == D3D10_SVT_FLOAT, "Type is %x, expected %x\n", td.Type, D3D10_SVT_FLOAT);
1444 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1445 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1446 ok(td.Rows == 1, "Rows is %u, expected 1\n", td.Rows);
1447 ok(td.Columns == 1, "Columns is %u, expected 1\n", td.Columns);
1448 ok(td.PackedSize == 0x4, "PackedSize is %#x, expected 0x4\n", td.PackedSize);
1449 ok(td.UnpackedSize == 0x4, "UnpackedSize is %#x, expected 0x4\n", td.UnpackedSize);
1450 ok(td.Stride == 0x10, "Stride is %#x, expected 0x10\n", td.Stride);
1452 /* check int2 i */
1453 variable = constantbuffer->lpVtbl->GetMemberByIndex(constantbuffer, variable_nr++);
1454 hr = variable->lpVtbl->GetDesc(variable, &vd);
1455 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1457 ok(strcmp(vd.Name, "i") == 0, "Name is \"%s\", expected \"i\"\n", vd.Name);
1458 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1459 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1460 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1461 ok(vd.BufferOffset == 4, "BufferOffset is %u, expected 4\n", vd.BufferOffset);
1462 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1464 check_as((ID3D10EffectVariable *)variable);
1466 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
1467 ok(constantbuffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, constantbuffer);
1469 type = variable->lpVtbl->GetType(variable);
1470 hr = type->lpVtbl->GetDesc(type, &td);
1471 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1473 ok(strcmp(td.TypeName, "int2") == 0, "TypeName is \"%s\", expected \"int2\"\n", td.TypeName);
1474 ok(td.Class == D3D10_SVC_VECTOR, "Class is %x, expected %x\n", td.Class, D3D10_SVC_VECTOR);
1475 ok(td.Type == D3D10_SVT_INT, "Type is %x, expected %x\n", td.Type, D3D10_SVT_INT);
1476 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1477 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1478 ok(td.Rows == 1, "Rows is %u, expected 1\n", td.Rows);
1479 ok(td.Columns == 2, "Columns is %u, expected 2\n", td.Columns);
1480 ok(td.PackedSize == 0x8, "PackedSize is %#x, expected 0x8\n", td.PackedSize);
1481 ok(td.UnpackedSize == 0x8, "UnpackedSize is %#x, expected 0x8\n", td.UnpackedSize);
1482 ok(td.Stride == 0x10, "Stride is %#x, expected 0x10\n", td.Stride);
1484 /* check uint2x3 u */
1485 variable = constantbuffer->lpVtbl->GetMemberByIndex(constantbuffer, variable_nr++);
1486 hr = variable->lpVtbl->GetDesc(variable, &vd);
1487 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1489 ok(strcmp(vd.Name, "u") == 0, "Name is \"%s\", expected \"u\"\n", vd.Name);
1490 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1491 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1492 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1493 ok(vd.BufferOffset == 16, "BufferOffset is %u, expected 16\n", vd.BufferOffset);
1494 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1496 check_as((ID3D10EffectVariable *)variable);
1498 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
1499 ok(constantbuffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, constantbuffer);
1501 type = variable->lpVtbl->GetType(variable);
1502 hr = type->lpVtbl->GetDesc(type, &td);
1503 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1505 ok(strcmp(td.TypeName, "uint2x3") == 0, "TypeName is \"%s\", expected \"uint2x3\"\n", td.TypeName);
1506 ok(td.Class == D3D10_SVC_MATRIX_COLUMNS, "Class is %x, expected %x\n", td.Class, D3D10_SVC_MATRIX_COLUMNS);
1507 ok(td.Type == D3D10_SVT_UINT, "Type is %x, expected %x\n", td.Type, D3D10_SVT_UINT);
1508 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1509 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1510 ok(td.Rows == 2, "Rows is %u, expected 2\n", td.Rows);
1511 ok(td.Columns == 3, "Columns is %u, expected 3\n", td.Columns);
1512 ok(td.PackedSize == 0x18, "PackedSize is %#x, expected 0x18\n", td.PackedSize);
1513 ok(td.UnpackedSize == 0x28, "UnpackedSize is %#x, expected 0x28\n", td.UnpackedSize);
1514 ok(td.Stride == 0x30, "Stride is %#x, expected 0x30\n", td.Stride);
1516 /* check bool2x3 b */
1517 variable = constantbuffer->lpVtbl->GetMemberByIndex(constantbuffer, variable_nr++);
1518 hr = variable->lpVtbl->GetDesc(variable, &vd);
1519 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1521 ok(strcmp(vd.Name, "b") == 0, "Name is \"%s\", expected \"b\"\n", vd.Name);
1522 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1523 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1524 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1525 ok(vd.BufferOffset == 64, "BufferOffset is %u, expected 64\n", vd.BufferOffset);
1526 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1528 check_as((ID3D10EffectVariable *)variable);
1530 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
1531 ok(constantbuffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, constantbuffer);
1533 type = variable->lpVtbl->GetType(variable);
1534 hr = type->lpVtbl->GetDesc(type, &td);
1535 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1537 ok(strcmp(td.TypeName, "bool2x3") == 0, "TypeName is \"%s\", expected \"bool2x3\"\n", td.TypeName);
1538 ok(td.Class == D3D10_SVC_MATRIX_ROWS, "Class is %x, expected %x\n", td.Class, D3D10_SVC_MATRIX_ROWS);
1539 ok(td.Type == D3D10_SVT_BOOL, "Type is %x, expected %x\n", td.Type, D3D10_SVT_BOOL);
1540 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1541 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1542 ok(td.Rows == 2, "Rows is %u, expected 2\n", td.Rows);
1543 ok(td.Columns == 3, "Columns is %u, expected 3\n", td.Columns);
1544 ok(td.PackedSize == 0x18, "PackedSize is %#x, expected 0x18\n", td.PackedSize);
1545 ok(td.UnpackedSize == 0x1c, "UnpackedSize is %#x, expected 0x1c\n", td.UnpackedSize);
1546 ok(td.Stride == 0x20, "Stride is %#x, expected 0x20\n", td.Stride);
1548 /* check BlendState blend */
1549 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1550 hr = variable->lpVtbl->GetDesc(variable, &vd);
1551 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1553 ok(strcmp(vd.Name, "blend") == 0, "Name is \"%s\", expected \"blend\"\n", vd.Name);
1554 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1555 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1556 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1557 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1558 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1560 check_as((ID3D10EffectVariable *)variable);
1562 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
1563 ok(null_buffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, null_buffer);
1565 type = variable->lpVtbl->GetType(variable);
1566 hr = type->lpVtbl->GetDesc(type, &td);
1567 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1569 ok(strcmp(td.TypeName, "BlendState") == 0, "TypeName is \"%s\", expected \"BlendState\"\n", td.TypeName);
1570 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1571 ok(td.Type == D3D10_SVT_BLEND, "Type is %x, expected %x\n", td.Type, D3D10_SVT_BLEND);
1572 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1573 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1574 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1575 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1576 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1577 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1578 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1580 /* check DepthStencilState depthstencil */
1581 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1582 hr = variable->lpVtbl->GetDesc(variable, &vd);
1583 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1585 ok(strcmp(vd.Name, "depthstencil") == 0, "Name is \"%s\", expected \"depthstencil\"\n", vd.Name);
1586 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1587 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1588 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1589 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1590 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1592 check_as((ID3D10EffectVariable *)variable);
1594 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
1595 ok(null_buffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, null_buffer);
1597 type = variable->lpVtbl->GetType(variable);
1598 hr = type->lpVtbl->GetDesc(type, &td);
1599 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1601 ok(strcmp(td.TypeName, "DepthStencilState") == 0, "TypeName is \"%s\", expected \"DepthStencilState\"\n", td.TypeName);
1602 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1603 ok(td.Type == D3D10_SVT_DEPTHSTENCIL, "Type is %x, expected %x\n", td.Type, D3D10_SVT_DEPTHSTENCIL);
1604 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1605 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1606 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1607 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1608 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1609 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1610 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1612 /* check RasterizerState rast */
1613 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1614 hr = variable->lpVtbl->GetDesc(variable, &vd);
1615 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1617 ok(strcmp(vd.Name, "rast") == 0, "Name is \"%s\", expected \"rast\"\n", vd.Name);
1618 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1619 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1620 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1621 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1622 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1624 check_as((ID3D10EffectVariable *)variable);
1626 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
1627 ok(null_buffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, null_buffer);
1629 type = variable->lpVtbl->GetType(variable);
1630 hr = type->lpVtbl->GetDesc(type, &td);
1631 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1633 ok(strcmp(td.TypeName, "RasterizerState") == 0, "TypeName is \"%s\", expected \"RasterizerState\"\n", td.TypeName);
1634 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1635 ok(td.Type == D3D10_SVT_RASTERIZER, "Type is %x, expected %x\n", td.Type, D3D10_SVT_RASTERIZER);
1636 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1637 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1638 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1639 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1640 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1641 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1642 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1644 /* check SamplerState sam */
1645 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1646 hr = variable->lpVtbl->GetDesc(variable, &vd);
1647 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1649 ok(strcmp(vd.Name, "sam") == 0, "Name is \"%s\", expected \"sam\"\n", vd.Name);
1650 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1651 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1652 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1653 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1654 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1656 check_as((ID3D10EffectVariable *)variable);
1658 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
1659 ok(null_buffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, null_buffer);
1661 type = variable->lpVtbl->GetType(variable);
1662 hr = type->lpVtbl->GetDesc(type, &td);
1663 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1665 ok(strcmp(td.TypeName, "SamplerState") == 0, "TypeName is \"%s\", expected \"SamplerState\"\n", td.TypeName);
1666 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1667 ok(td.Type == D3D10_SVT_SAMPLER, "Type is %x, expected %x\n", td.Type, D3D10_SVT_SAMPLER);
1668 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1669 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1670 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1671 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1672 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1673 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1674 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1676 /* check RenderTargetView rtv */
1677 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1678 hr = variable->lpVtbl->GetDesc(variable, &vd);
1679 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1681 ok(strcmp(vd.Name, "rtv") == 0, "Name is \"%s\", expected \"rtv\"\n", vd.Name);
1682 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1683 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1684 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1685 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1686 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1688 check_as((ID3D10EffectVariable *)variable);
1690 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
1691 ok(null_buffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, null_buffer);
1693 type = variable->lpVtbl->GetType(variable);
1694 hr = type->lpVtbl->GetDesc(type, &td);
1695 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1697 ok(strcmp(td.TypeName, "RenderTargetView") == 0, "TypeName is \"%s\", expected \"RenderTargetView\"\n", td.TypeName);
1698 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1699 ok(td.Type == D3D10_SVT_RENDERTARGETVIEW, "Type is %x, expected %x\n", td.Type, D3D10_SVT_RENDERTARGETVIEW);
1700 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1701 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1702 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1703 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1704 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1705 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1706 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1708 /* check DepthStencilView dsv */
1709 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1710 hr = variable->lpVtbl->GetDesc(variable, &vd);
1711 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1713 ok(strcmp(vd.Name, "dsv") == 0, "Name is \"%s\", expected \"dsv\"\n", vd.Name);
1714 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1715 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1716 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1717 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1718 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1720 check_as((ID3D10EffectVariable *)variable);
1722 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
1723 ok(null_buffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, null_buffer);
1725 type = variable->lpVtbl->GetType(variable);
1726 hr = type->lpVtbl->GetDesc(type, &td);
1727 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1729 ok(strcmp(td.TypeName, "DepthStencilView") == 0, "TypeName is \"%s\", expected \"DepthStencilView\"\n", td.TypeName);
1730 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1731 ok(td.Type == D3D10_SVT_DEPTHSTENCILVIEW, "Type is %x, expected %x\n", td.Type, D3D10_SVT_DEPTHSTENCILVIEW);
1732 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1733 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1734 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1735 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1736 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1737 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1738 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1740 /* check Texture1D t1 */
1741 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1742 hr = variable->lpVtbl->GetDesc(variable, &vd);
1743 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1745 ok(strcmp(vd.Name, "t1") == 0, "Name is \"%s\", expected \"t1\"\n", vd.Name);
1746 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1747 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1748 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1749 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1750 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1752 check_as((ID3D10EffectVariable *)variable);
1754 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
1755 ok(null_buffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, null_buffer);
1757 type = variable->lpVtbl->GetType(variable);
1758 hr = type->lpVtbl->GetDesc(type, &td);
1759 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1761 ok(strcmp(td.TypeName, "Texture1D") == 0, "TypeName is \"%s\", expected \"Texture1D\"\n", td.TypeName);
1762 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1763 ok(td.Type == D3D10_SVT_TEXTURE1D, "Type is %x, expected %x\n", td.Type, D3D10_SVT_TEXTURE1D);
1764 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1765 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1766 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1767 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1768 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1769 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1770 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1772 /* check Texture1DArray t1a */
1773 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1774 hr = variable->lpVtbl->GetDesc(variable, &vd);
1775 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1777 ok(strcmp(vd.Name, "t1a") == 0, "Name is \"%s\", expected \"t1a\"\n", vd.Name);
1778 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1779 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1780 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1781 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1782 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1784 check_as((ID3D10EffectVariable *)variable);
1786 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
1787 ok(null_buffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, null_buffer);
1789 type = variable->lpVtbl->GetType(variable);
1790 hr = type->lpVtbl->GetDesc(type, &td);
1791 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1793 ok(strcmp(td.TypeName, "Texture1DArray") == 0, "TypeName is \"%s\", expected \"Texture1DArray\"\n", td.TypeName);
1794 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1795 ok(td.Type == D3D10_SVT_TEXTURE1DARRAY, "Type is %x, expected %x\n", td.Type, D3D10_SVT_TEXTURE1DARRAY);
1796 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1797 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1798 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1799 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1800 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1801 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1802 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1804 /* check Texture2D t2 */
1805 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1806 hr = variable->lpVtbl->GetDesc(variable, &vd);
1807 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1809 ok(strcmp(vd.Name, "t2") == 0, "Name is \"%s\", expected \"t2\"\n", vd.Name);
1810 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1811 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1812 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1813 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1814 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1816 check_as((ID3D10EffectVariable *)variable);
1818 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
1819 ok(null_buffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, null_buffer);
1821 type = variable->lpVtbl->GetType(variable);
1822 hr = type->lpVtbl->GetDesc(type, &td);
1823 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1825 ok(strcmp(td.TypeName, "Texture2D") == 0, "TypeName is \"%s\", expected \"Texture2D\"\n", td.TypeName);
1826 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1827 ok(td.Type == D3D10_SVT_TEXTURE2D, "Type is %x, expected %x\n", td.Type, D3D10_SVT_TEXTURE2D);
1828 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1829 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1830 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1831 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1832 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1833 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1834 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1836 /* check Texture2DMS t2dms */
1837 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1838 hr = variable->lpVtbl->GetDesc(variable, &vd);
1839 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1841 ok(strcmp(vd.Name, "t2dms") == 0, "Name is \"%s\", expected \"t2dms\"\n", vd.Name);
1842 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1843 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1844 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1845 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1846 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1848 check_as((ID3D10EffectVariable *)variable);
1850 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
1851 ok(null_buffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, null_buffer);
1853 type = variable->lpVtbl->GetType(variable);
1854 hr = type->lpVtbl->GetDesc(type, &td);
1855 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1857 ok(strcmp(td.TypeName, "Texture2DMS") == 0, "TypeName is \"%s\", expected \"Texture2DMS\"\n", td.TypeName);
1858 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1859 ok(td.Type == D3D10_SVT_TEXTURE2DMS, "Type is %x, expected %x\n", td.Type, D3D10_SVT_TEXTURE2DMS);
1860 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1861 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1862 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1863 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1864 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1865 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1866 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1868 /* check Texture2DArray t2a */
1869 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1870 hr = variable->lpVtbl->GetDesc(variable, &vd);
1871 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1873 ok(strcmp(vd.Name, "t2a") == 0, "Name is \"%s\", expected \"t2a\"\n", vd.Name);
1874 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1875 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1876 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1877 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1878 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1880 check_as((ID3D10EffectVariable *)variable);
1882 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
1883 ok(null_buffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, null_buffer);
1885 type = variable->lpVtbl->GetType(variable);
1886 hr = type->lpVtbl->GetDesc(type, &td);
1887 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1889 ok(strcmp(td.TypeName, "Texture2DArray") == 0, "TypeName is \"%s\", expected \"Texture2DArray\"\n", td.TypeName);
1890 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1891 ok(td.Type == D3D10_SVT_TEXTURE2DARRAY, "Type is %x, expected %x\n", td.Type, D3D10_SVT_TEXTURE2DARRAY);
1892 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1893 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1894 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1895 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1896 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1897 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1898 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1900 /* check Texture2DMSArray t2dmsa */
1901 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1902 hr = variable->lpVtbl->GetDesc(variable, &vd);
1903 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1905 ok(strcmp(vd.Name, "t2dmsa") == 0, "Name is \"%s\", expected \"t2dmsa\"\n", vd.Name);
1906 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1907 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1908 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1909 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1910 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1912 check_as((ID3D10EffectVariable *)variable);
1914 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
1915 ok(null_buffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, null_buffer);
1917 type = variable->lpVtbl->GetType(variable);
1918 hr = type->lpVtbl->GetDesc(type, &td);
1919 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1921 ok(strcmp(td.TypeName, "Texture2DMSArray") == 0, "TypeName is \"%s\", expected \"TTexture2DMSArray\"\n", td.TypeName);
1922 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1923 ok(td.Type == D3D10_SVT_TEXTURE2DMSARRAY, "Type is %x, expected %x\n", td.Type, D3D10_SVT_TEXTURE2DMSARRAY);
1924 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1925 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1926 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1927 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1928 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1929 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1930 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1932 /* check Texture3D t3 */
1933 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1934 hr = variable->lpVtbl->GetDesc(variable, &vd);
1935 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1937 ok(strcmp(vd.Name, "t3") == 0, "Name is \"%s\", expected \"t3\"\n", vd.Name);
1938 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1939 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1940 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1941 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1942 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1944 check_as((ID3D10EffectVariable *)variable);
1946 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
1947 ok(null_buffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, null_buffer);
1949 type = variable->lpVtbl->GetType(variable);
1950 hr = type->lpVtbl->GetDesc(type, &td);
1951 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1953 ok(strcmp(td.TypeName, "Texture3D") == 0, "TypeName is \"%s\", expected \"Texture3D\"\n", td.TypeName);
1954 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1955 ok(td.Type == D3D10_SVT_TEXTURE3D, "Type is %x, expected %x\n", td.Type, D3D10_SVT_TEXTURE3D);
1956 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1957 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1958 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1959 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1960 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1961 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1962 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1964 /* check TextureCube tq */
1965 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1966 hr = variable->lpVtbl->GetDesc(variable, &vd);
1967 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1969 ok(strcmp(vd.Name, "tq") == 0, "Name is \"%s\", expected \"tq\"\n", vd.Name);
1970 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
1971 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
1972 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
1973 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
1974 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
1976 check_as((ID3D10EffectVariable *)variable);
1978 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
1979 ok(null_buffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, null_buffer);
1981 type = variable->lpVtbl->GetType(variable);
1982 hr = type->lpVtbl->GetDesc(type, &td);
1983 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
1985 ok(strcmp(td.TypeName, "TextureCube") == 0, "TypeName is \"%s\", expected \"TextureCube\"\n", td.TypeName);
1986 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
1987 ok(td.Type == D3D10_SVT_TEXTURECUBE, "Type is %x, expected %x\n", td.Type, D3D10_SVT_TEXTURECUBE);
1988 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
1989 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
1990 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
1991 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
1992 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
1993 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
1994 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
1996 /* check GeometryShader gs[2] */
1997 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
1998 hr = variable->lpVtbl->GetDesc(variable, &vd);
1999 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
2001 ok(strcmp(vd.Name, "gs") == 0, "Name is \"%s\", expected \"gs\"\n", vd.Name);
2002 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
2003 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
2004 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
2005 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
2006 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
2008 check_as((ID3D10EffectVariable *)variable);
2010 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
2011 ok(null_buffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, null_buffer);
2013 type = variable->lpVtbl->GetType(variable);
2014 hr = type->lpVtbl->GetDesc(type, &td);
2015 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
2017 ok(strcmp(td.TypeName, "GeometryShader") == 0, "TypeName is \"%s\", expected \"GeometryShader\"\n", td.TypeName);
2018 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
2019 ok(td.Type == D3D10_SVT_GEOMETRYSHADER, "Type is %x, expected %x\n", td.Type, D3D10_SVT_GEOMETRYSHADER);
2020 ok(td.Elements == 2, "Elements is %u, expected 2\n", td.Elements);
2021 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
2022 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
2023 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
2024 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
2025 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
2026 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
2028 /* check PixelShader ps */
2029 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
2030 hr = variable->lpVtbl->GetDesc(variable, &vd);
2031 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
2033 ok(strcmp(vd.Name, "ps") == 0, "Name is \"%s\", expected \"ps\"\n", vd.Name);
2034 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
2035 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
2036 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
2037 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
2038 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
2040 check_as((ID3D10EffectVariable *)variable);
2042 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
2043 ok(null_buffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, null_buffer);
2045 type = variable->lpVtbl->GetType(variable);
2046 hr = type->lpVtbl->GetDesc(type, &td);
2047 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
2049 ok(strcmp(td.TypeName, "PixelShader") == 0, "TypeName is \"%s\", expected \"PixelShader\"\n", td.TypeName);
2050 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
2051 ok(td.Type == D3D10_SVT_PIXELSHADER, "Type is %x, expected %x\n", td.Type, D3D10_SVT_PIXELSHADER);
2052 ok(td.Elements == 0, "Elements is %u, expected 0\n", td.Elements);
2053 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
2054 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
2055 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
2056 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
2057 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
2058 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
2060 /* check VertexShader vs[1] */
2061 variable = effect->lpVtbl->GetVariableByIndex(effect, variable_nr++);
2062 hr = variable->lpVtbl->GetDesc(variable, &vd);
2063 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
2065 ok(strcmp(vd.Name, "vs") == 0, "Name is \"%s\", expected \"vs\"\n", vd.Name);
2066 ok(vd.Semantic == NULL, "Semantic is \"%s\", expected NULL\n", vd.Semantic);
2067 ok(vd.Flags == 0, "Flags is %u, expected 0\n", vd.Flags);
2068 ok(vd.Annotations == 0, "Annotations is %u, expected 0\n", vd.Annotations);
2069 ok(vd.BufferOffset == 0, "BufferOffset is %u, expected 0\n", vd.BufferOffset);
2070 ok(vd.ExplicitBindPoint == 0, "ExplicitBindPoint is %u, expected 0\n", vd.ExplicitBindPoint);
2072 check_as((ID3D10EffectVariable *)variable);
2074 parent = variable->lpVtbl->GetParentConstantBuffer(variable);
2075 ok(null_buffer == parent, "GetParentConstantBuffer got %p, expected %p\n", parent, null_buffer);
2077 type = variable->lpVtbl->GetType(variable);
2078 hr = type->lpVtbl->GetDesc(type, &td);
2079 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
2081 ok(strcmp(td.TypeName, "VertexShader") == 0, "TypeName is \"%s\", expected \"VertexShader\"\n", td.TypeName);
2082 ok(td.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", td.Class, D3D10_SVC_OBJECT);
2083 ok(td.Type == D3D10_SVT_VERTEXSHADER, "Type is %x, expected %x\n", td.Type, D3D10_SVT_VERTEXSHADER);
2084 ok(td.Elements == 1, "Elements is %u, expected 1\n", td.Elements);
2085 ok(td.Members == 0, "Members is %u, expected 0\n", td.Members);
2086 ok(td.Rows == 0, "Rows is %u, expected 0\n", td.Rows);
2087 ok(td.Columns == 0, "Columns is %u, expected 0\n", td.Columns);
2088 ok(td.PackedSize == 0x0, "PackedSize is %#x, expected 0x0\n", td.PackedSize);
2089 ok(td.UnpackedSize == 0x0, "UnpackedSize is %#x, expected 0x0\n", td.UnpackedSize);
2090 ok(td.Stride == 0x0, "Stride is %#x, expected 0x0\n", td.Stride);
2092 effect->lpVtbl->Release(effect);
2096 * test_effect_constant_buffer_stride
2098 #if 0
2099 cbuffer cb1
2101 float a1;
2102 float b1;
2103 float c1;
2104 float d1;
2106 cbuffer cb2
2108 float a2;
2109 float2 b2;
2111 cbuffer cb3
2113 float2 a3;
2114 float3 b3;
2116 cbuffer cb4
2118 float2 a4;
2119 float3 b4;
2120 float2 c4;
2122 cbuffer cb5
2124 float2 a5;
2125 float2 b5;
2126 float3 c5;
2128 cbuffer cb6
2130 float2 a6 : packoffset(c0);
2131 float3 b6 : packoffset(c1);
2132 float2 c6 : packoffset(c0.z);
2134 cbuffer cb7
2136 float2 a7 : packoffset(c0);
2137 float3 b7 : packoffset(c1);
2138 float2 c7 : packoffset(c2);
2140 cbuffer cb8
2142 float2 a8 : packoffset(c0);
2143 float3 b8 : packoffset(c0.y);
2144 float4 c8 : packoffset(c2);
2146 cbuffer cb9
2148 float2 a9 : packoffset(c0);
2149 float2 b9 : packoffset(c0.y);
2150 float2 c9 : packoffset(c0.z);
2152 cbuffer cb10
2154 float4 a10 : packoffset(c2);
2156 cbuffer cb11
2158 struct {
2159 float4 a11;
2160 float b11;
2161 } s11;
2162 float c11;
2164 cbuffer cb12
2166 float c12;
2167 struct {
2168 float b12;
2169 float4 a12;
2170 } s12;
2172 cbuffer cb13
2174 float a13;
2175 struct {
2176 float b13;
2177 } s13;
2179 cbuffer cb14
2181 struct {
2182 float a14;
2183 } s14;
2184 struct {
2185 float b14;
2186 } t14;
2188 cbuffer cb15
2190 float2 a15[2] : packoffset(c0);
2192 #endif
2193 static DWORD fx_test_ecbs[] = {
2194 0x43425844, 0x615d7d77, 0x21289d92, 0xe9e8d98e,
2195 0xcae7b74e, 0x00000001, 0x00000855, 0x00000001,
2196 0x00000024, 0x30315846, 0x00000829, 0xfeff1001,
2197 0x0000000f, 0x00000024, 0x00000000, 0x00000000,
2198 0x00000000, 0x00000000, 0x00000000, 0x00000285,
2199 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2200 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2201 0x00000000, 0x00000000, 0x00000000, 0x00316263,
2202 0x616f6c66, 0x00080074, 0x00010000, 0x00000000,
2203 0x00040000, 0x00100000, 0x00040000, 0x09090000,
2204 0x31610000, 0x00316200, 0x64003163, 0x62630031,
2205 0x32610032, 0x6f6c6600, 0x00327461, 0x0000003d,
2206 0x00000001, 0x00000000, 0x00000008, 0x00000010,
2207 0x00000008, 0x0000110a, 0x63003262, 0x61003362,
2208 0x6c660033, 0x3374616f, 0x00006a00, 0x00000100,
2209 0x00000000, 0x00000c00, 0x00001000, 0x00000c00,
2210 0x00190a00, 0x00336200, 0x00346263, 0x62003461,
2211 0x34630034, 0x35626300, 0x00356100, 0x63003562,
2212 0x62630035, 0x36610036, 0x00366200, 0x63003663,
2213 0x61003762, 0x37620037, 0x00376300, 0x00386263,
2214 0x62003861, 0x6c660038, 0x3474616f, 0x0000ce00,
2215 0x00000100, 0x00000000, 0x00001000, 0x00001000,
2216 0x00001000, 0x00210a00, 0x00386300, 0x00396263,
2217 0x62003961, 0x39630039, 0x31626300, 0x31610030,
2218 0x62630030, 0x3c003131, 0x616e6e75, 0x3e64656d,
2219 0x31316100, 0x31316200, 0x00010f00, 0x00000300,
2220 0x00000000, 0x00001400, 0x00002000, 0x00001400,
2221 0x00000200, 0x00011900, 0x00000000, 0x00000000,
2222 0x0000d500, 0x00011d00, 0x00000000, 0x00001000,
2223 0x00000e00, 0x31317300, 0x31316300, 0x31626300,
2224 0x31630032, 0x31620032, 0x31610032, 0x010f0032,
2225 0x00030000, 0x00000000, 0x00200000, 0x00200000,
2226 0x00140000, 0x00020000, 0x016e0000, 0x00000000,
2227 0x00000000, 0x000e0000, 0x01720000, 0x00000000,
2228 0x00100000, 0x00d50000, 0x31730000, 0x62630032,
2229 0x61003331, 0x62003331, 0x0f003331, 0x03000001,
2230 0x00000000, 0x04000000, 0x10000000, 0x04000000,
2231 0x01000000, 0xbf000000, 0x00000001, 0x00000000,
2232 0x0e000000, 0x73000000, 0x63003331, 0x00343162,
2233 0x00343161, 0x0000010f, 0x00000003, 0x00000000,
2234 0x00000004, 0x00000010, 0x00000004, 0x00000001,
2235 0x000001f8, 0x00000000, 0x00000000, 0x0000000e,
2236 0x00343173, 0x00343162, 0x0000010f, 0x00000003,
2237 0x00000000, 0x00000004, 0x00000010, 0x00000004,
2238 0x00000001, 0x0000022c, 0x00000000, 0x00000000,
2239 0x0000000e, 0x00343174, 0x35316263, 0x00003d00,
2240 0x00000100, 0x00000200, 0x00001800, 0x00001000,
2241 0x00001000, 0x00110a00, 0x35316100, 0x00000400,
2242 0x00001000, 0x00000000, 0x00000400, 0xffffff00,
2243 0x000000ff, 0x00002a00, 0x00000e00, 0x00000000,
2244 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2245 0x00002d00, 0x00000e00, 0x00000000, 0x00000400,
2246 0x00000000, 0x00000000, 0x00000000, 0x00003000,
2247 0x00000e00, 0x00000000, 0x00000800, 0x00000000,
2248 0x00000000, 0x00000000, 0x00003300, 0x00000e00,
2249 0x00000000, 0x00000c00, 0x00000000, 0x00000000,
2250 0x00000000, 0x00003600, 0x00001000, 0x00000000,
2251 0x00000200, 0xffffff00, 0x000000ff, 0x00003a00,
2252 0x00000e00, 0x00000000, 0x00000000, 0x00000000,
2253 0x00000000, 0x00000000, 0x00006000, 0x00004400,
2254 0x00000000, 0x00000400, 0x00000000, 0x00000000,
2255 0x00000000, 0x00006300, 0x00002000, 0x00000000,
2256 0x00000200, 0xffffff00, 0x000000ff, 0x00006700,
2257 0x00004400, 0x00000000, 0x00000000, 0x00000000,
2258 0x00000000, 0x00000000, 0x00008d00, 0x00007100,
2259 0x00000000, 0x00001000, 0x00000000, 0x00000000,
2260 0x00000000, 0x00009000, 0x00003000, 0x00000000,
2261 0x00000300, 0xffffff00, 0x000000ff, 0x00009400,
2262 0x00004400, 0x00000000, 0x00000000, 0x00000000,
2263 0x00000000, 0x00000000, 0x00009700, 0x00007100,
2264 0x00000000, 0x00001000, 0x00000000, 0x00000000,
2265 0x00000000, 0x00009a00, 0x00004400, 0x00000000,
2266 0x00002000, 0x00000000, 0x00000000, 0x00000000,
2267 0x00009d00, 0x00002000, 0x00000000, 0x00000300,
2268 0xffffff00, 0x000000ff, 0x0000a100, 0x00004400,
2269 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2270 0x00000000, 0x0000a400, 0x00004400, 0x00000000,
2271 0x00000800, 0x00000000, 0x00000000, 0x00000000,
2272 0x0000a700, 0x00007100, 0x00000000, 0x00001000,
2273 0x00000000, 0x00000000, 0x00000000, 0x0000aa00,
2274 0x00002000, 0x00000000, 0x00000300, 0xffffff00,
2275 0x000000ff, 0x0000ae00, 0x00004400, 0x00000000,
2276 0x00000000, 0x00000000, 0x00000400, 0x00000000,
2277 0x0000b100, 0x00007100, 0x00000000, 0x00001000,
2278 0x00000000, 0x00000400, 0x00000000, 0x0000b400,
2279 0x00004400, 0x00000000, 0x00000800, 0x00000000,
2280 0x00000400, 0x00000000, 0x0000b700, 0x00003000,
2281 0x00000000, 0x00000300, 0xffffff00, 0x000000ff,
2282 0x0000bb00, 0x00004400, 0x00000000, 0x00000000,
2283 0x00000000, 0x00000400, 0x00000000, 0x0000be00,
2284 0x00007100, 0x00000000, 0x00001000, 0x00000000,
2285 0x00000400, 0x00000000, 0x0000c100, 0x00004400,
2286 0x00000000, 0x00002000, 0x00000000, 0x00000400,
2287 0x00000000, 0x0000c400, 0x00003000, 0x00000000,
2288 0x00000300, 0xffffff00, 0x000000ff, 0x0000c800,
2289 0x00004400, 0x00000000, 0x00000000, 0x00000000,
2290 0x00000400, 0x00000000, 0x0000cb00, 0x00007100,
2291 0x00000000, 0x00000400, 0x00000000, 0x00000400,
2292 0x00000000, 0x0000f100, 0x0000d500, 0x00000000,
2293 0x00002000, 0x00000000, 0x00000400, 0x00000000,
2294 0x0000f400, 0x00001000, 0x00000000, 0x00000300,
2295 0xffffff00, 0x000000ff, 0x0000f800, 0x00004400,
2296 0x00000000, 0x00000000, 0x00000000, 0x00000400,
2297 0x00000000, 0x0000fb00, 0x00004400, 0x00000000,
2298 0x00000400, 0x00000000, 0x00000400, 0x00000000,
2299 0x0000fe00, 0x00004400, 0x00000000, 0x00000800,
2300 0x00000000, 0x00000400, 0x00000000, 0x00010100,
2301 0x00003000, 0x00000000, 0x00000100, 0xffffff00,
2302 0x000000ff, 0x00010600, 0x0000d500, 0x00000000,
2303 0x00002000, 0x00000000, 0x00000400, 0x00000000,
2304 0x00010a00, 0x00002000, 0x00000000, 0x00000200,
2305 0xffffff00, 0x000000ff, 0x00015d00, 0x00012100,
2306 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2307 0x00000000, 0x00016100, 0x00000e00, 0x00000000,
2308 0x00001400, 0x00000000, 0x00000000, 0x00000000,
2309 0x00016500, 0x00003000, 0x00000000, 0x00000200,
2310 0xffffff00, 0x000000ff, 0x00016a00, 0x00000e00,
2311 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2312 0x00000000, 0x0001b200, 0x00017600, 0x00000000,
2313 0x00001000, 0x00000000, 0x00000000, 0x00000000,
2314 0x0001b600, 0x00002000, 0x00000000, 0x00000200,
2315 0xffffff00, 0x000000ff, 0x0001bb00, 0x00000e00,
2316 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2317 0x00000000, 0x0001ef00, 0x0001c300, 0x00000000,
2318 0x00001000, 0x00000000, 0x00000000, 0x00000000,
2319 0x0001f300, 0x00002000, 0x00000000, 0x00000200,
2320 0xffffff00, 0x000000ff, 0x00022800, 0x0001fc00,
2321 0x00000000, 0x00000000, 0x00000000, 0x00000000,
2322 0x00000000, 0x00025c00, 0x00023000, 0x00000000,
2323 0x00001000, 0x00000000, 0x00000000, 0x00000000,
2324 0x00026000, 0x00002000, 0x00000000, 0x00000100,
2325 0xffffff00, 0x000000ff, 0x00028100, 0x00026500,
2326 0x00000000, 0x00000000, 0x00000000, 0x00000400,
2327 0x00000000, 0x00000000,
2330 static void test_effect_constant_buffer_stride(ID3D10Device *device)
2332 ID3D10Effect *effect;
2333 ID3D10EffectConstantBuffer *constantbuffer;
2334 ID3D10EffectType *type;
2335 D3D10_EFFECT_TYPE_DESC tdesc;
2336 HRESULT hr;
2337 unsigned int i;
2339 static const struct {
2340 unsigned int m; /* members */
2341 unsigned int p; /* packed size */
2342 unsigned int u; /* unpacked size */
2343 unsigned int s; /* stride */
2344 } tv_ecbs[] = {
2345 {4, 0x10, 0x10, 0x10},
2346 {2, 0xc, 0x10, 0x10},
2347 {2, 0x14, 0x20, 0x20},
2348 {3, 0x1c, 0x30, 0x30},
2349 {3, 0x1c, 0x20, 0x20},
2350 {3, 0x1c, 0x20, 0x20},
2351 {3, 0x1c, 0x30, 0x30},
2352 {3, 0x24, 0x30, 0x30},
2353 {3, 0x18, 0x10, 0x10},
2354 {1, 0x10, 0x30, 0x30},
2355 {2, 0x18, 0x20, 0x20},
2356 {2, 0x18, 0x30, 0x30},
2357 {2, 0x8, 0x20, 0x20},
2358 {2, 0x8, 0x20, 0x20},
2359 {1, 0x10, 0x20, 0x20},
2362 hr = D3D10CreateEffectFromMemory(fx_test_ecbs, fx_test_ecbs[6], 0, device, NULL, &effect);
2363 ok(SUCCEEDED(hr), "D3D10CreateEffectFromMemory failed (%x)\n", hr);
2365 for (i=0; i<sizeof(tv_ecbs)/sizeof(tv_ecbs[0]); i++)
2367 constantbuffer = effect->lpVtbl->GetConstantBufferByIndex(effect, i);
2368 type = constantbuffer->lpVtbl->GetType(constantbuffer);
2370 hr = type->lpVtbl->GetDesc(type, &tdesc);
2371 ok(SUCCEEDED(hr), "GetDesc failed (%x)\n", hr);
2373 ok(strcmp(tdesc.TypeName, "cbuffer") == 0, "TypeName is \"%s\", expected \"cbuffer\"\n", tdesc.TypeName);
2374 ok(tdesc.Class == D3D10_SVC_OBJECT, "Class is %x, expected %x\n", tdesc.Class, D3D10_SVC_OBJECT);
2375 ok(tdesc.Type == D3D10_SVT_CBUFFER, "Type is %x, expected %x\n", tdesc.Type, D3D10_SVT_CBUFFER);
2376 ok(tdesc.Elements == 0, "Elements is %u, expected 0\n", tdesc.Elements);
2377 ok(tdesc.Members == tv_ecbs[i].m, "Members is %u, expected %u\n", tdesc.Members, tv_ecbs[i].m);
2378 ok(tdesc.Rows == 0, "Rows is %u, expected 0\n", tdesc.Rows);
2379 ok(tdesc.Columns == 0, "Columns is %u, expected 0\n", tdesc.Columns);
2380 ok(tdesc.PackedSize == tv_ecbs[i].p, "PackedSize is %#x, expected %#x\n", tdesc.PackedSize, tv_ecbs[i].p);
2381 ok(tdesc.UnpackedSize == tv_ecbs[i].u, "UnpackedSize is %#x, expected %#x\n", tdesc.UnpackedSize, tv_ecbs[i].u);
2382 ok(tdesc.Stride == tv_ecbs[i].s, "Stride is %#x, expected %#x\n", tdesc.Stride, tv_ecbs[i].s);
2385 effect->lpVtbl->Release(effect);
2388 START_TEST(effect)
2390 ID3D10Device *device;
2391 ULONG refcount;
2393 device = create_device();
2394 if (!device)
2396 skip("Failed to create device, skipping tests\n");
2397 return;
2400 test_effect_constant_buffer_type(device);
2401 test_effect_variable_type(device);
2402 test_effect_variable_member(device);
2403 test_effect_variable_element(device);
2404 test_effect_variable_type_class(device);
2405 test_effect_constant_buffer_stride(device);
2407 refcount = ID3D10Device_Release(device);
2408 ok(!refcount, "Device has %u references left\n", refcount);