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
22 #include "wine/test.h"
24 static ID3D10Device *create_device(void)
28 if (SUCCEEDED(D3D10CreateDevice(NULL, D3D10_DRIVER_TYPE_HARDWARE, NULL, 0, D3D10_SDK_VERSION, &device)))
30 trace("Created a HW device\n");
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");
41 trace("Failed to create a device, returning NULL\n");
46 * test_effect_constant_buffer_type
51 float f1 : SV_POSITION;
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)
78 ID3D10EffectConstantBuffer *constantbuffer;
79 ID3D10EffectType *type, *type2, *null_type;
80 D3D10_EFFECT_TYPE_DESC type_desc;
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
202 float f3 : SV_POSITION;
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;
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",
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",
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
425 float f3 : SV_POSITION;
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;
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
608 float f3 : SV_POSITION;
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,
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;
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);
1118 ID3D10Device *device;
1121 device = create_device();
1124 skip("Failed to create device, skipping tests\n");
1128 test_effect_constant_buffer_type(device);
1129 test_effect_variable_type(device);
1130 test_effect_variable_member(device);
1131 test_effect_variable_element(device);
1133 refcount = ID3D10Device_Release(device);
1134 ok(!refcount, "Device has %u references left\n", refcount);