advapi32: Make rpcrt4 a delayed import to work around circular dependencies with...
[wine/testsucceed.git] / dlls / d3d10 / effect.c
blob43b94f32d1e96d2779ebc8c87b36b759fcbebcd8
1 /*
2 * Copyright 2009 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
21 #include "config.h"
22 #include "wine/port.h"
24 #include "d3d10_private.h"
26 WINE_DEFAULT_DEBUG_CHANNEL(d3d10);
28 #define MAKE_TAG(ch0, ch1, ch2, ch3) \
29 ((DWORD)(ch0) | ((DWORD)(ch1) << 8) | \
30 ((DWORD)(ch2) << 16) | ((DWORD)(ch3) << 24 ))
31 #define TAG_DXBC MAKE_TAG('D', 'X', 'B', 'C')
32 #define TAG_FX10 MAKE_TAG('F', 'X', '1', '0')
33 #define TAG_ISGN MAKE_TAG('I', 'S', 'G', 'N')
34 #define TAG_OSGN MAKE_TAG('O', 'S', 'G', 'N')
36 #define D3D10_FX10_TYPE_COLUMN_SHIFT 11
37 #define D3D10_FX10_TYPE_COLUMN_MASK (0x7 << D3D10_FX10_TYPE_COLUMN_SHIFT)
39 #define D3D10_FX10_TYPE_ROW_SHIFT 8
40 #define D3D10_FX10_TYPE_ROW_MASK (0x7 << D3D10_FX10_TYPE_ROW_SHIFT)
42 #define D3D10_FX10_TYPE_BASETYPE_SHIFT 3
43 #define D3D10_FX10_TYPE_BASETYPE_MASK (0x1f << D3D10_FX10_TYPE_BASETYPE_SHIFT)
45 #define D3D10_FX10_TYPE_CLASS_SHIFT 0
46 #define D3D10_FX10_TYPE_CLASS_MASK (0x7 << D3D10_FX10_TYPE_CLASS_SHIFT)
48 #define D3D10_FX10_TYPE_MATRIX_COLUMN_MAJOR_MASK 0x4000
50 static const struct ID3D10EffectTechniqueVtbl d3d10_effect_technique_vtbl;
51 static const struct ID3D10EffectPassVtbl d3d10_effect_pass_vtbl;
52 static const struct ID3D10EffectVariableVtbl d3d10_effect_variable_vtbl;
53 static const struct ID3D10EffectConstantBufferVtbl d3d10_effect_constant_buffer_vtbl;
54 static const struct ID3D10EffectScalarVariableVtbl d3d10_effect_scalar_variable_vtbl;
55 static const struct ID3D10EffectVectorVariableVtbl d3d10_effect_vector_variable_vtbl;
56 static const struct ID3D10EffectMatrixVariableVtbl d3d10_effect_matrix_variable_vtbl;
57 static const struct ID3D10EffectStringVariableVtbl d3d10_effect_string_variable_vtbl;
58 static const struct ID3D10EffectShaderResourceVariableVtbl d3d10_effect_shader_resource_variable_vtbl;
59 static const struct ID3D10EffectRenderTargetViewVariableVtbl d3d10_effect_render_target_view_variable_vtbl;
60 static const struct ID3D10EffectDepthStencilViewVariableVtbl d3d10_effect_depth_stencil_view_variable_vtbl;
61 static const struct ID3D10EffectShaderVariableVtbl d3d10_effect_shader_variable_vtbl;
62 static const struct ID3D10EffectBlendVariableVtbl d3d10_effect_blend_variable_vtbl;
63 static const struct ID3D10EffectDepthStencilVariableVtbl d3d10_effect_depth_stencil_variable_vtbl;
64 static const struct ID3D10EffectRasterizerVariableVtbl d3d10_effect_rasterizer_variable_vtbl;
65 static const struct ID3D10EffectSamplerVariableVtbl d3d10_effect_sampler_variable_vtbl;
66 static const struct ID3D10EffectTypeVtbl d3d10_effect_type_vtbl;
68 /* null objects - needed for invalid calls */
69 static struct d3d10_effect_technique null_technique = {&d3d10_effect_technique_vtbl};
70 static struct d3d10_effect_pass null_pass = {&d3d10_effect_pass_vtbl};
71 static struct d3d10_effect_type null_type = {&d3d10_effect_type_vtbl};
72 static struct d3d10_effect_variable null_local_buffer = {(const ID3D10EffectVariableVtbl *)&d3d10_effect_constant_buffer_vtbl,
73 &null_local_buffer, &null_type};
74 static struct d3d10_effect_variable null_variable = {&d3d10_effect_variable_vtbl,
75 &null_local_buffer, &null_type};
76 static struct d3d10_effect_variable null_scalar_variable = {(const ID3D10EffectVariableVtbl *)&d3d10_effect_scalar_variable_vtbl,
77 &null_local_buffer, &null_type};
78 static struct d3d10_effect_variable null_vector_variable = {(const ID3D10EffectVariableVtbl *)&d3d10_effect_vector_variable_vtbl,
79 &null_local_buffer, &null_type};
80 static struct d3d10_effect_variable null_matrix_variable = {(const ID3D10EffectVariableVtbl *)&d3d10_effect_matrix_variable_vtbl,
81 &null_local_buffer, &null_type};
82 static struct d3d10_effect_variable null_string_variable = {(const ID3D10EffectVariableVtbl *)&d3d10_effect_string_variable_vtbl,
83 &null_local_buffer, &null_type};
84 static struct d3d10_effect_variable null_shader_resource_variable = {(const ID3D10EffectVariableVtbl *)&d3d10_effect_shader_resource_variable_vtbl,
85 &null_local_buffer, &null_type};
86 static struct d3d10_effect_variable null_render_target_view_variable = {(const ID3D10EffectVariableVtbl *)&d3d10_effect_render_target_view_variable_vtbl,
87 &null_local_buffer, &null_type};
88 static struct d3d10_effect_variable null_depth_stencil_view_variable = {(const ID3D10EffectVariableVtbl *)&d3d10_effect_depth_stencil_view_variable_vtbl,
89 &null_local_buffer, &null_type};
90 static struct d3d10_effect_variable null_shader_variable = {(const ID3D10EffectVariableVtbl *)&d3d10_effect_shader_variable_vtbl,
91 &null_local_buffer, &null_type};
92 static struct d3d10_effect_variable null_blend_variable = {(const ID3D10EffectVariableVtbl *)&d3d10_effect_blend_variable_vtbl,
93 &null_local_buffer, &null_type};
94 static struct d3d10_effect_variable null_depth_stencil_variable = {(const ID3D10EffectVariableVtbl *)&d3d10_effect_depth_stencil_variable_vtbl,
95 &null_local_buffer, &null_type};
96 static struct d3d10_effect_variable null_rasterizer_variable = {(const ID3D10EffectVariableVtbl *)&d3d10_effect_rasterizer_variable_vtbl,
97 &null_local_buffer, &null_type};
98 static struct d3d10_effect_variable null_sampler_variable = {(const ID3D10EffectVariableVtbl *)&d3d10_effect_sampler_variable_vtbl,
99 &null_local_buffer, &null_type};
101 /* anonymous_shader_type and anonymous_shader */
102 static char anonymous_name[] = "$Anonymous";
103 static char anonymous_vertexshader_name[] = "vertexshader";
104 static char anonymous_pixelshader_name[] = "pixelshader";
105 static char anonymous_geometryshader_name[] = "geometryshader";
106 static struct d3d10_effect_type anonymous_vs_type = {&d3d10_effect_type_vtbl, anonymous_vertexshader_name,
107 D3D10_SVT_VERTEXSHADER, D3D10_SVC_OBJECT};
108 static struct d3d10_effect_type anonymous_ps_type = {&d3d10_effect_type_vtbl, anonymous_pixelshader_name,
109 D3D10_SVT_PIXELSHADER, D3D10_SVC_OBJECT};
110 static struct d3d10_effect_type anonymous_gs_type = {&d3d10_effect_type_vtbl, anonymous_geometryshader_name,
111 D3D10_SVT_GEOMETRYSHADER, D3D10_SVC_OBJECT};
112 static struct d3d10_effect_variable anonymous_vs = {(const ID3D10EffectVariableVtbl *)&d3d10_effect_shader_variable_vtbl,
113 &null_local_buffer, &anonymous_vs_type, &null_shader_variable, anonymous_name};
114 static struct d3d10_effect_variable anonymous_ps = {(const ID3D10EffectVariableVtbl *)&d3d10_effect_shader_variable_vtbl,
115 &null_local_buffer, &anonymous_ps_type, &null_shader_variable, anonymous_name};
116 static struct d3d10_effect_variable anonymous_gs = {(const ID3D10EffectVariableVtbl *)&d3d10_effect_shader_variable_vtbl,
117 &null_local_buffer, &anonymous_gs_type, &null_shader_variable, anonymous_name};
119 static struct d3d10_effect_type *get_fx10_type(struct d3d10_effect *effect, const char *data, DWORD offset);
121 static inline void read_dword(const char **ptr, DWORD *d)
123 memcpy(d, *ptr, sizeof(*d));
124 *ptr += sizeof(*d);
127 static inline void skip_dword_unknown(const char **ptr, unsigned int count)
129 unsigned int i;
130 DWORD d;
132 FIXME("Skipping %u unknown DWORDs:\n", count);
133 for (i = 0; i < count; ++i)
135 read_dword(ptr, &d);
136 FIXME("\t0x%08x\n", d);
140 static inline void write_dword(char **ptr, DWORD d)
142 memcpy(*ptr, &d, sizeof(d));
143 *ptr += sizeof(d);
146 static inline void write_dword_unknown(char **ptr, DWORD d)
148 FIXME("Writing unknown DWORD 0x%08x\n", d);
149 write_dword(ptr, d);
152 static HRESULT parse_dxbc(const char *data, SIZE_T data_size,
153 HRESULT (*chunk_handler)(const char *data, DWORD data_size, DWORD tag, void *ctx), void *ctx)
155 const char *ptr = data;
156 HRESULT hr = S_OK;
157 DWORD chunk_count;
158 DWORD total_size;
159 unsigned int i;
160 DWORD tag;
162 read_dword(&ptr, &tag);
163 TRACE("tag: %s.\n", debugstr_an((const char *)&tag, 4));
165 if (tag != TAG_DXBC)
167 WARN("Wrong tag.\n");
168 return E_FAIL;
171 /* checksum? */
172 skip_dword_unknown(&ptr, 4);
174 skip_dword_unknown(&ptr, 1);
176 read_dword(&ptr, &total_size);
177 TRACE("total size: %#x\n", total_size);
179 read_dword(&ptr, &chunk_count);
180 TRACE("chunk count: %#x\n", chunk_count);
182 for (i = 0; i < chunk_count; ++i)
184 DWORD chunk_tag, chunk_size;
185 const char *chunk_ptr;
186 DWORD chunk_offset;
188 read_dword(&ptr, &chunk_offset);
189 TRACE("chunk %u at offset %#x\n", i, chunk_offset);
191 chunk_ptr = data + chunk_offset;
193 read_dword(&chunk_ptr, &chunk_tag);
194 read_dword(&chunk_ptr, &chunk_size);
196 hr = chunk_handler(chunk_ptr, chunk_size, chunk_tag, ctx);
197 if (FAILED(hr)) break;
200 return hr;
203 static BOOL copy_name(const char *ptr, char **name)
205 size_t name_len;
207 if (!ptr) return TRUE;
209 name_len = strlen(ptr) + 1;
210 if (name_len == 1)
212 return TRUE;
215 *name = HeapAlloc(GetProcessHeap(), 0, name_len);
216 if (!*name)
218 ERR("Failed to allocate name memory.\n");
219 return FALSE;
222 memcpy(*name, ptr, name_len);
224 return TRUE;
227 static HRESULT shader_parse_signature(const char *data, DWORD data_size, struct d3d10_effect_shader_signature *s)
229 D3D10_SIGNATURE_PARAMETER_DESC *e;
230 const char *ptr = data;
231 unsigned int i;
232 DWORD count;
234 read_dword(&ptr, &count);
235 TRACE("%u elements\n", count);
237 skip_dword_unknown(&ptr, 1);
239 e = HeapAlloc(GetProcessHeap(), 0, count * sizeof(*e));
240 if (!e)
242 ERR("Failed to allocate signature memory.\n");
243 return E_OUTOFMEMORY;
246 for (i = 0; i < count; ++i)
248 UINT name_offset;
249 UINT mask;
251 read_dword(&ptr, &name_offset);
252 e[i].SemanticName = data + name_offset;
253 read_dword(&ptr, &e[i].SemanticIndex);
254 read_dword(&ptr, &e[i].SystemValueType);
255 read_dword(&ptr, &e[i].ComponentType);
256 read_dword(&ptr, &e[i].Register);
257 read_dword(&ptr, &mask);
259 e[i].ReadWriteMask = mask >> 8;
260 e[i].Mask = mask & 0xff;
262 TRACE("semantic: %s, semantic idx: %u, sysval_semantic %#x, "
263 "type %u, register idx: %u, use_mask %#x, input_mask %#x\n",
264 debugstr_a(e[i].SemanticName), e[i].SemanticIndex, e[i].SystemValueType,
265 e[i].ComponentType, e[i].Register, e[i].Mask, e[i].ReadWriteMask);
268 s->elements = e;
269 s->element_count = count;
271 return S_OK;
274 static void shader_free_signature(struct d3d10_effect_shader_signature *s)
276 HeapFree(GetProcessHeap(), 0, s->signature);
277 HeapFree(GetProcessHeap(), 0, s->elements);
280 static HRESULT shader_chunk_handler(const char *data, DWORD data_size, DWORD tag, void *ctx)
282 struct d3d10_effect_shader_variable *s = ctx;
283 HRESULT hr;
285 TRACE("tag: %s.\n", debugstr_an((const char *)&tag, 4));
287 TRACE("chunk size: %#x\n", data_size);
289 switch(tag)
291 case TAG_ISGN:
292 case TAG_OSGN:
294 /* 32 (DXBC header) + 1 * 4 (chunk index) + 2 * 4 (chunk header) + data_size (chunk data) */
295 UINT size = 44 + data_size;
296 struct d3d10_effect_shader_signature *sig;
297 char *ptr;
299 if (tag == TAG_ISGN) sig = &s->input_signature;
300 else sig = &s->output_signature;
302 sig->signature = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size);
303 if (!sig->signature)
305 ERR("Failed to allocate input signature data\n");
306 return E_OUTOFMEMORY;
308 sig->signature_size = size;
310 ptr = sig->signature;
312 write_dword(&ptr, TAG_DXBC);
314 /* signature(?) */
315 write_dword_unknown(&ptr, 0);
316 write_dword_unknown(&ptr, 0);
317 write_dword_unknown(&ptr, 0);
318 write_dword_unknown(&ptr, 0);
320 /* seems to be always 1 */
321 write_dword_unknown(&ptr, 1);
323 /* DXBC size */
324 write_dword(&ptr, size);
326 /* chunk count */
327 write_dword(&ptr, 1);
329 /* chunk index */
330 write_dword(&ptr, (ptr - sig->signature) + 4);
332 /* chunk */
333 write_dword(&ptr, tag);
334 write_dword(&ptr, data_size);
335 memcpy(ptr, data, data_size);
337 hr = shader_parse_signature(ptr, data_size, sig);
338 if (FAILED(hr))
340 ERR("Failed to parse shader, hr %#x\n", hr);
341 shader_free_signature(sig);
344 break;
347 default:
348 FIXME("Unhandled chunk %s.\n", debugstr_an((const char *)&tag, 4));
349 break;
352 return S_OK;
355 static HRESULT parse_shader(struct d3d10_effect_variable *v, const char *data)
357 ID3D10Device *device = v->effect->device;
358 struct d3d10_effect_shader_variable *s;
359 const char *ptr = data;
360 DWORD dxbc_size;
361 HRESULT hr;
363 s = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*s));
364 if (!s)
366 ERR("Failed to allocate shader variable memory\n");
367 return E_OUTOFMEMORY;
370 v->data = s;
372 if (v->effect->used_shader_current >= v->effect->used_shader_count)
374 WARN("Invalid shader? Used shader current(%u) >= used shader count(%u)\n", v->effect->used_shader_current, v->effect->used_shader_count);
375 return E_FAIL;
378 v->effect->used_shaders[v->effect->used_shader_current] = v;
379 ++v->effect->used_shader_current;
381 if (!ptr) return S_OK;
383 read_dword(&ptr, &dxbc_size);
384 TRACE("dxbc size: %#x\n", dxbc_size);
386 /* We got a shader VertexShader vs = NULL, so it is fine to skip this. */
387 if (!dxbc_size) return S_OK;
389 switch (v->type->basetype)
391 case D3D10_SVT_VERTEXSHADER:
392 hr = ID3D10Device_CreateVertexShader(device, ptr, dxbc_size, &s->shader.vs);
393 if (FAILED(hr)) return hr;
394 break;
396 case D3D10_SVT_PIXELSHADER:
397 hr = ID3D10Device_CreatePixelShader(device, ptr, dxbc_size, &s->shader.ps);
398 if (FAILED(hr)) return hr;
399 break;
401 case D3D10_SVT_GEOMETRYSHADER:
402 hr = ID3D10Device_CreateGeometryShader(device, ptr, dxbc_size, &s->shader.gs);
403 if (FAILED(hr)) return hr;
404 break;
406 default:
407 ERR("This should not happen!\n");
408 return E_FAIL;
411 return parse_dxbc(ptr, dxbc_size, shader_chunk_handler, s);
414 static D3D10_SHADER_VARIABLE_CLASS d3d10_variable_class(DWORD c, BOOL is_column_major)
416 switch (c)
418 case 1: return D3D10_SVC_SCALAR;
419 case 2: return D3D10_SVC_VECTOR;
420 case 3: if (is_column_major) return D3D10_SVC_MATRIX_COLUMNS;
421 else return D3D10_SVC_MATRIX_ROWS;
422 default:
423 FIXME("Unknown variable class %#x.\n", c);
424 return 0;
428 static D3D10_SHADER_VARIABLE_TYPE d3d10_variable_type(DWORD t, BOOL is_object)
430 if(is_object)
432 switch (t)
434 case 1: return D3D10_SVT_STRING;
435 case 2: return D3D10_SVT_BLEND;
436 case 3: return D3D10_SVT_DEPTHSTENCIL;
437 case 4: return D3D10_SVT_RASTERIZER;
438 case 5: return D3D10_SVT_PIXELSHADER;
439 case 6: return D3D10_SVT_VERTEXSHADER;
440 case 7: return D3D10_SVT_GEOMETRYSHADER;
442 case 10: return D3D10_SVT_TEXTURE1D;
443 case 11: return D3D10_SVT_TEXTURE1DARRAY;
444 case 12: return D3D10_SVT_TEXTURE2D;
445 case 13: return D3D10_SVT_TEXTURE2DARRAY;
446 case 14: return D3D10_SVT_TEXTURE2DMS;
447 case 15: return D3D10_SVT_TEXTURE2DMSARRAY;
448 case 16: return D3D10_SVT_TEXTURE3D;
449 case 17: return D3D10_SVT_TEXTURECUBE;
451 case 19: return D3D10_SVT_RENDERTARGETVIEW;
452 case 20: return D3D10_SVT_DEPTHSTENCILVIEW;
453 case 21: return D3D10_SVT_SAMPLER;
454 default:
455 FIXME("Unknown variable type %#x.\n", t);
456 return 0;
459 else
461 switch (t)
463 case 1: return D3D10_SVT_FLOAT;
464 case 2: return D3D10_SVT_INT;
465 case 3: return D3D10_SVT_UINT;
466 case 4: return D3D10_SVT_BOOL;
467 default:
468 FIXME("Unknown variable type %#x.\n", t);
469 return 0;
474 static HRESULT parse_fx10_type(struct d3d10_effect_type *t, const char *ptr, const char *data)
476 DWORD unknown0;
477 DWORD offset;
478 DWORD typeinfo;
479 unsigned int i;
481 read_dword(&ptr, &offset);
482 TRACE("Type name at offset %#x.\n", offset);
484 if (!copy_name(data + offset, &t->name))
486 ERR("Failed to copy name.\n");
487 return E_OUTOFMEMORY;
489 TRACE("Type name: %s.\n", debugstr_a(t->name));
491 read_dword(&ptr, &unknown0);
492 TRACE("Unknown 0: %u.\n", unknown0);
494 read_dword(&ptr, &t->element_count);
495 TRACE("Element count: %u.\n", t->element_count);
497 read_dword(&ptr, &t->size_unpacked);
498 TRACE("Unpacked size: %#x.\n", t->size_unpacked);
500 read_dword(&ptr, &t->stride);
501 TRACE("Stride: %#x.\n", t->stride);
503 read_dword(&ptr, &t->size_packed);
504 TRACE("Packed size %#x.\n", t->size_packed);
506 switch (unknown0)
508 case 1:
509 t->member_count = 0;
511 read_dword(&ptr, &typeinfo);
512 t->column_count = (typeinfo & D3D10_FX10_TYPE_COLUMN_MASK) >> D3D10_FX10_TYPE_COLUMN_SHIFT;
513 t->row_count = (typeinfo & D3D10_FX10_TYPE_ROW_MASK) >> D3D10_FX10_TYPE_ROW_SHIFT;
514 t->basetype = d3d10_variable_type((typeinfo & D3D10_FX10_TYPE_BASETYPE_MASK) >> D3D10_FX10_TYPE_BASETYPE_SHIFT, FALSE);
515 t->type_class = d3d10_variable_class((typeinfo & D3D10_FX10_TYPE_CLASS_MASK) >> D3D10_FX10_TYPE_CLASS_SHIFT, typeinfo & D3D10_FX10_TYPE_MATRIX_COLUMN_MAJOR_MASK);
517 TRACE("Type description: %#x.\n", typeinfo);
518 TRACE("\tcolumns: %u.\n", t->column_count);
519 TRACE("\trows: %u.\n", t->row_count);
520 TRACE("\tbasetype: %s.\n", debug_d3d10_shader_variable_type(t->basetype));
521 TRACE("\tclass: %s.\n", debug_d3d10_shader_variable_class(t->type_class));
522 TRACE("\tunknown bits: %#x.\n", typeinfo & ~(D3D10_FX10_TYPE_COLUMN_MASK | D3D10_FX10_TYPE_ROW_MASK
523 | D3D10_FX10_TYPE_BASETYPE_MASK | D3D10_FX10_TYPE_CLASS_MASK | D3D10_FX10_TYPE_MATRIX_COLUMN_MAJOR_MASK));
524 break;
526 case 2:
527 TRACE("Type is an object.\n");
529 t->member_count = 0;
530 t->column_count = 0;
531 t->row_count = 0;
532 t->type_class = D3D10_SVC_OBJECT;
534 read_dword(&ptr, &typeinfo);
535 t->basetype = d3d10_variable_type(typeinfo, TRUE);
537 TRACE("Type description: %#x.\n", typeinfo);
538 TRACE("\tbasetype: %s.\n", debug_d3d10_shader_variable_type(t->basetype));
539 TRACE("\tclass: %s.\n", debug_d3d10_shader_variable_class(t->type_class));
540 break;
542 case 3:
543 TRACE("Type is a structure.\n");
545 read_dword(&ptr, &t->member_count);
546 TRACE("Member count: %u.\n", t->member_count);
548 t->column_count = 0;
549 t->row_count = 0;
550 t->basetype = 0;
551 t->type_class = D3D10_SVC_STRUCT;
553 t->members = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, t->member_count * sizeof(*t->members));
554 if (!t->members)
556 ERR("Failed to allocate members memory.\n");
557 return E_OUTOFMEMORY;
560 for (i = 0; i < t->member_count; ++i)
562 struct d3d10_effect_type_member *typem = &t->members[i];
564 read_dword(&ptr, &offset);
565 TRACE("Member name at offset %#x.\n", offset);
567 if (!copy_name(data + offset, &typem->name))
569 ERR("Failed to copy name.\n");
570 return E_OUTOFMEMORY;
572 TRACE("Member name: %s.\n", debugstr_a(typem->name));
574 read_dword(&ptr, &offset);
575 TRACE("Member semantic at offset %#x.\n", offset);
577 if (!copy_name(data + offset, &typem->semantic))
579 ERR("Failed to copy semantic.\n");
580 return E_OUTOFMEMORY;
582 TRACE("Member semantic: %s.\n", debugstr_a(typem->semantic));
584 read_dword(&ptr, &typem->buffer_offset);
585 TRACE("Member offset in struct: %#x.\n", typem->buffer_offset);
587 read_dword(&ptr, &offset);
588 TRACE("Member type info at offset %#x.\n", offset);
590 typem->type = get_fx10_type(t->effect, data, offset);
591 if (!typem->type)
593 ERR("Failed to get variable type.\n");
594 return E_FAIL;
597 break;
599 default:
600 FIXME("Unhandled case %#x.\n", unknown0);
601 return E_FAIL;
604 if (t->element_count)
606 TRACE("Elementtype for type at offset: %#x\n", t->id);
608 /* allocate elementtype - we need only one, because all elements have the same type */
609 t->elementtype = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*t->elementtype));
610 if (!t->elementtype)
612 ERR("Failed to allocate members memory.\n");
613 return E_OUTOFMEMORY;
616 /* create a copy of the original type with some minor changes */
617 t->elementtype->vtbl = &d3d10_effect_type_vtbl;
618 t->elementtype->effect = t->effect;
620 if (!copy_name(t->name, &t->elementtype->name))
622 ERR("Failed to copy name.\n");
623 return E_OUTOFMEMORY;
625 TRACE("\tType name: %s.\n", debugstr_a(t->elementtype->name));
627 t->elementtype->element_count = 0;
628 TRACE("\tElement count: %u.\n", t->elementtype->element_count);
631 * Not sure if this calculation is 100% correct, but a test
632 * show's that these values work.
634 t->elementtype->size_unpacked = t->size_packed / t->element_count;
635 TRACE("\tUnpacked size: %#x.\n", t->elementtype->size_unpacked);
637 t->elementtype->stride = t->stride;
638 TRACE("\tStride: %#x.\n", t->elementtype->stride);
640 t->elementtype->size_packed = t->size_packed / t->element_count;
641 TRACE("\tPacked size: %#x.\n", t->elementtype->size_packed);
643 t->elementtype->member_count = t->member_count;
644 TRACE("\tMember count: %u.\n", t->elementtype->member_count);
646 t->elementtype->column_count = t->column_count;
647 TRACE("\tColumns: %u.\n", t->elementtype->column_count);
649 t->elementtype->row_count = t->row_count;
650 TRACE("\tRows: %u.\n", t->elementtype->row_count);
652 t->elementtype->basetype = t->basetype;
653 TRACE("\tBasetype: %s.\n", debug_d3d10_shader_variable_type(t->elementtype->basetype));
655 t->elementtype->type_class = t->type_class;
656 TRACE("\tClass: %s.\n", debug_d3d10_shader_variable_class(t->elementtype->type_class));
658 t->elementtype->members = t->members;
661 return S_OK;
664 static struct d3d10_effect_type *get_fx10_type(struct d3d10_effect *effect, const char *data, DWORD offset)
666 struct d3d10_effect_type *type;
667 struct wine_rb_entry *entry;
668 HRESULT hr;
670 entry = wine_rb_get(&effect->types, &offset);
671 if (entry)
673 TRACE("Returning existing type.\n");
674 return WINE_RB_ENTRY_VALUE(entry, struct d3d10_effect_type, entry);
677 type = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*type));
678 if (!type)
680 ERR("Failed to allocate type memory.\n");
681 return NULL;
684 type->vtbl = &d3d10_effect_type_vtbl;
685 type->id = offset;
686 type->effect = effect;
687 hr = parse_fx10_type(type, data + offset, data);
688 if (FAILED(hr))
690 ERR("Failed to parse type info, hr %#x.\n", hr);
691 HeapFree(GetProcessHeap(), 0, type);
692 return NULL;
695 if (wine_rb_put(&effect->types, &offset, &type->entry) == -1)
697 ERR("Failed to insert type entry.\n");
698 HeapFree(GetProcessHeap(), 0, type);
699 return NULL;
702 return type;
705 static void set_variable_vtbl(struct d3d10_effect_variable *v)
707 switch (v->type->type_class)
709 case D3D10_SVC_SCALAR:
710 v->vtbl = (const ID3D10EffectVariableVtbl *)&d3d10_effect_scalar_variable_vtbl;
711 break;
713 case D3D10_SVC_VECTOR:
714 v->vtbl = (const ID3D10EffectVariableVtbl *)&d3d10_effect_vector_variable_vtbl;
715 break;
717 case D3D10_SVC_MATRIX_ROWS:
718 case D3D10_SVC_MATRIX_COLUMNS:
719 v->vtbl = (const ID3D10EffectVariableVtbl *)&d3d10_effect_matrix_variable_vtbl;
720 break;
722 case D3D10_SVC_STRUCT:
723 v->vtbl = &d3d10_effect_variable_vtbl;
724 break;
726 case D3D10_SVC_OBJECT:
727 switch(v->type->basetype)
729 case D3D10_SVT_STRING:
730 v->vtbl = (const ID3D10EffectVariableVtbl *)&d3d10_effect_string_variable_vtbl;
731 break;
733 case D3D10_SVT_TEXTURE1D:
734 case D3D10_SVT_TEXTURE1DARRAY:
735 case D3D10_SVT_TEXTURE2D:
736 case D3D10_SVT_TEXTURE2DARRAY:
737 case D3D10_SVT_TEXTURE2DMS:
738 case D3D10_SVT_TEXTURE2DMSARRAY:
739 case D3D10_SVT_TEXTURE3D:
740 case D3D10_SVT_TEXTURECUBE:
741 v->vtbl = (const ID3D10EffectVariableVtbl *)&d3d10_effect_shader_resource_variable_vtbl;
742 break;
744 case D3D10_SVT_RENDERTARGETVIEW:
745 v->vtbl = (const ID3D10EffectVariableVtbl *)&d3d10_effect_render_target_view_variable_vtbl;
746 break;
748 case D3D10_SVT_DEPTHSTENCILVIEW:
749 v->vtbl = (const ID3D10EffectVariableVtbl *)&d3d10_effect_depth_stencil_view_variable_vtbl;
750 break;
752 case D3D10_SVT_DEPTHSTENCIL:
753 v->vtbl = (const ID3D10EffectVariableVtbl *)&d3d10_effect_depth_stencil_variable_vtbl;
754 break;
756 case D3D10_SVT_VERTEXSHADER:
757 case D3D10_SVT_GEOMETRYSHADER:
758 case D3D10_SVT_PIXELSHADER:
759 v->vtbl = (const ID3D10EffectVariableVtbl *)&d3d10_effect_shader_variable_vtbl;
760 break;
762 case D3D10_SVT_BLEND:
763 v->vtbl = (const ID3D10EffectVariableVtbl *)&d3d10_effect_blend_variable_vtbl;
764 break;
766 case D3D10_SVT_RASTERIZER:
767 v->vtbl = (const ID3D10EffectVariableVtbl *)&d3d10_effect_rasterizer_variable_vtbl;
768 break;
770 case D3D10_SVT_SAMPLER:
771 v->vtbl = (const ID3D10EffectVariableVtbl *)&d3d10_effect_sampler_variable_vtbl;
772 break;
774 default:
775 FIXME("Unhandled basetype %s.\n", debug_d3d10_shader_variable_type(v->type->basetype));
776 v->vtbl = &d3d10_effect_variable_vtbl;
777 break;
779 break;
781 default:
782 FIXME("Unhandled type class %s.\n", debug_d3d10_shader_variable_class(v->type->type_class));
783 v->vtbl = &d3d10_effect_variable_vtbl;
784 break;
788 static HRESULT copy_variableinfo_from_type(struct d3d10_effect_variable *v)
790 unsigned int i;
791 HRESULT hr;
793 if (v->type->member_count)
795 v->members = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, v->type->member_count * sizeof(*v->members));
796 if (!v->members)
798 ERR("Failed to allocate members memory.\n");
799 return E_OUTOFMEMORY;
802 for (i = 0; i < v->type->member_count; ++i)
804 struct d3d10_effect_variable *var = &v->members[i];
805 struct d3d10_effect_type_member *typem = &v->type->members[i];
807 var->buffer = v->buffer;
808 var->effect = v->effect;
809 var->type = typem->type;
810 set_variable_vtbl(var);
812 if (!copy_name(typem->name, &var->name))
814 ERR("Failed to copy name.\n");
815 return E_OUTOFMEMORY;
817 TRACE("Variable name: %s.\n", debugstr_a(var->name));
819 if (!copy_name(typem->semantic, &var->semantic))
821 ERR("Failed to copy name.\n");
822 return E_OUTOFMEMORY;
824 TRACE("Variable semantic: %s.\n", debugstr_a(var->semantic));
826 var->buffer_offset = v->buffer_offset + typem->buffer_offset;
827 TRACE("Variable buffer offset: %u.\n", var->buffer_offset);
829 hr = copy_variableinfo_from_type(var);
830 if (FAILED(hr)) return hr;
834 if (v->type->element_count)
836 unsigned int bufferoffset = v->buffer_offset;
838 v->elements = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, v->type->element_count * sizeof(*v->elements));
839 if (!v->elements)
841 ERR("Failed to allocate elements memory.\n");
842 return E_OUTOFMEMORY;
845 for (i = 0; i < v->type->element_count; ++i)
847 struct d3d10_effect_variable *var = &v->elements[i];
849 var->buffer = v->buffer;
850 var->effect = v->effect;
851 var->type = v->type->elementtype;
852 set_variable_vtbl(var);
854 if (!copy_name(v->name, &var->name))
856 ERR("Failed to copy name.\n");
857 return E_OUTOFMEMORY;
859 TRACE("Variable name: %s.\n", debugstr_a(var->name));
861 if (!copy_name(v->semantic, &var->semantic))
863 ERR("Failed to copy name.\n");
864 return E_OUTOFMEMORY;
866 TRACE("Variable semantic: %s.\n", debugstr_a(var->semantic));
868 if (i != 0)
870 bufferoffset += v->type->stride;
872 var->buffer_offset = bufferoffset;
873 TRACE("Variable buffer offset: %u.\n", var->buffer_offset);
875 hr = copy_variableinfo_from_type(var);
876 if (FAILED(hr)) return hr;
880 return S_OK;
883 static HRESULT parse_fx10_variable_head(struct d3d10_effect_variable *v, const char **ptr, const char *data)
885 DWORD offset;
887 read_dword(ptr, &offset);
888 TRACE("Variable name at offset %#x.\n", offset);
890 if (!copy_name(data + offset, &v->name))
892 ERR("Failed to copy name.\n");
893 return E_OUTOFMEMORY;
895 TRACE("Variable name: %s.\n", debugstr_a(v->name));
897 read_dword(ptr, &offset);
898 TRACE("Variable type info at offset %#x.\n", offset);
900 v->type = get_fx10_type(v->effect, data, offset);
901 if (!v->type)
903 ERR("Failed to get variable type.\n");
904 return E_FAIL;
906 set_variable_vtbl(v);
908 return copy_variableinfo_from_type(v);
911 static HRESULT parse_fx10_annotation(struct d3d10_effect_variable *a, const char **ptr, const char *data)
913 HRESULT hr;
915 hr = parse_fx10_variable_head(a, ptr, data);
916 if (FAILED(hr)) return hr;
918 skip_dword_unknown(ptr, 1);
920 /* mark the variable as annotation */
921 a->flag = D3D10_EFFECT_VARIABLE_ANNOTATION;
923 return S_OK;
926 static HRESULT parse_fx10_anonymous_shader(struct d3d10_effect *e, struct d3d10_effect_anonymous_shader *s,
927 enum d3d10_effect_object_type otype)
929 struct d3d10_effect_variable *v = &s->shader;
930 struct d3d10_effect_type *t = &s->type;
931 const char *shader = NULL;
933 switch (otype)
935 case D3D10_EOT_VERTEXSHADER:
936 shader = "vertexshader";
937 t->basetype = D3D10_SVT_VERTEXSHADER;
938 break;
940 case D3D10_EOT_PIXELSHADER:
941 shader = "pixelshader";
942 t->basetype = D3D10_SVT_PIXELSHADER;
943 break;
945 case D3D10_EOT_GEOMETRYSHADER:
946 shader = "geometryshader";
947 t->basetype = D3D10_SVT_GEOMETRYSHADER;
948 break;
951 if (!copy_name(shader, &t->name))
953 ERR("Failed to copy name.\n");
954 return E_OUTOFMEMORY;
956 TRACE("Type name: %s.\n", debugstr_a(t->name));
958 t->type_class = D3D10_SVC_OBJECT;
960 t->vtbl = &d3d10_effect_type_vtbl;
962 v->type = t;
963 v->effect = e;
964 set_variable_vtbl(v);
966 if (!copy_name("$Anonymous", &v->name))
968 ERR("Failed to copy semantic.\n");
969 return E_OUTOFMEMORY;
971 TRACE("Variable name: %s.\n", debugstr_a(v->name));
973 if (!copy_name(NULL, &v->semantic))
975 ERR("Failed to copy semantic.\n");
976 return E_OUTOFMEMORY;
978 TRACE("Variable semantic: %s.\n", debugstr_a(v->semantic));
980 return S_OK;
983 static HRESULT parse_fx10_object(struct d3d10_effect_object *o, const char **ptr, const char *data)
985 const char *data_ptr = NULL;
986 DWORD offset;
987 enum d3d10_effect_object_operation operation;
988 HRESULT hr;
989 struct d3d10_effect *effect = o->pass->technique->effect;
990 ID3D10Effect *e = (ID3D10Effect *)effect;
992 read_dword(ptr, &o->type);
993 TRACE("Effect object is of type %#x.\n", o->type);
995 read_dword(ptr, &o->index);
996 TRACE("Effect object index %#x.\n", o->index);
998 read_dword(ptr, &operation);
999 TRACE("Effect object operation %#x.\n", operation);
1001 read_dword(ptr, &offset);
1002 TRACE("Effect object idx is at offset %#x.\n", offset);
1004 switch(operation)
1006 case D3D10_EOO_VALUE:
1007 TRACE("Copy variable values\n");
1008 hr = E_FAIL;
1010 switch (o->type)
1012 case D3D10_EOT_VERTEXSHADER:
1013 TRACE("Vertex shader\n");
1014 o->data = &anonymous_vs;
1015 hr = S_OK;
1016 break;
1018 case D3D10_EOT_PIXELSHADER:
1019 TRACE("Pixel shader\n");
1020 o->data = &anonymous_ps;
1021 hr = S_OK;
1022 break;
1024 case D3D10_EOT_GEOMETRYSHADER:
1025 TRACE("Geometry shader\n");
1026 o->data = &anonymous_gs;
1027 hr = S_OK;
1028 break;
1030 default:
1031 FIXME("Unhandled object type %#x\n", o->type);
1032 hr = E_FAIL;
1033 break;
1035 break;
1037 case D3D10_EOO_PARSED_OBJECT:
1038 /* This is a local object, we've parsed in parse_fx10_local_object. */
1039 TRACE("Shader = %s.\n", data + offset);
1041 o->data = e->lpVtbl->GetVariableByName(e, data + offset);
1042 hr = S_OK;
1043 break;
1045 case D3D10_EOO_PARSED_OBJECT_INDEX:
1046 /* This is a local object, we've parsed in parse_fx10_local_object, which has an array index. */
1047 data_ptr = data + offset;
1048 read_dword(&data_ptr, &offset);
1049 read_dword(&data_ptr, &o->index);
1050 TRACE("Shader = %s[%u].\n", data + offset, o->index);
1052 o->data = e->lpVtbl->GetVariableByName(e, data + offset);
1053 hr = S_OK;
1054 break;
1056 case D3D10_EOO_ANONYMOUS_SHADER:
1057 TRACE("Anonymous shader\n");
1059 /* check anonymous_shader_current for validity */
1060 if (effect->anonymous_shader_current >= effect->anonymous_shader_count)
1062 ERR("Anonymous shader count is wrong!\n");
1063 return E_FAIL;
1066 data_ptr = data + offset;
1067 read_dword(&data_ptr, &offset);
1068 TRACE("Effect object starts at offset %#x.\n", offset);
1070 data_ptr = data + offset;
1072 hr = parse_fx10_anonymous_shader(effect, &effect->anonymous_shaders[effect->anonymous_shader_current], o->type);
1073 if (FAILED(hr)) return hr;
1075 o->data = &effect->anonymous_shaders[effect->anonymous_shader_current].shader;
1076 ++effect->anonymous_shader_current;
1078 switch (o->type)
1080 case D3D10_EOT_VERTEXSHADER:
1081 TRACE("Vertex shader\n");
1082 hr = parse_shader(o->data, data_ptr);
1083 break;
1085 case D3D10_EOT_PIXELSHADER:
1086 TRACE("Pixel shader\n");
1087 hr = parse_shader(o->data, data_ptr);
1088 break;
1090 case D3D10_EOT_GEOMETRYSHADER:
1091 TRACE("Geometry shader\n");
1092 hr = parse_shader(o->data, data_ptr);
1093 break;
1095 default:
1096 FIXME("Unhandled object type %#x\n", o->type);
1097 hr = E_FAIL;
1098 break;
1100 break;
1102 default:
1103 hr = E_FAIL;
1104 FIXME("Unhandled operation %#x.\n", operation);
1105 break;
1108 return hr;
1111 static HRESULT parse_fx10_pass(struct d3d10_effect_pass *p, const char **ptr, const char *data)
1113 HRESULT hr = S_OK;
1114 unsigned int i;
1115 DWORD offset;
1117 read_dword(ptr, &offset);
1118 TRACE("Pass name at offset %#x.\n", offset);
1120 if (!copy_name(data + offset, &p->name))
1122 ERR("Failed to copy name.\n");
1123 return E_OUTOFMEMORY;
1125 TRACE("Pass name: %s.\n", debugstr_a(p->name));
1127 read_dword(ptr, &p->object_count);
1128 TRACE("Pass has %u effect objects.\n", p->object_count);
1130 read_dword(ptr, &p->annotation_count);
1131 TRACE("Pass has %u annotations.\n", p->annotation_count);
1133 p->annotations = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, p->annotation_count * sizeof(*p->annotations));
1134 if (!p->annotations)
1136 ERR("Failed to allocate pass annotations memory.\n");
1137 return E_OUTOFMEMORY;
1140 for (i = 0; i < p->annotation_count; ++i)
1142 struct d3d10_effect_variable *a = &p->annotations[i];
1144 a->effect = p->technique->effect;
1145 a->buffer = &null_local_buffer;
1147 hr = parse_fx10_annotation(a, ptr, data);
1148 if (FAILED(hr)) return hr;
1151 p->objects = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, p->object_count * sizeof(*p->objects));
1152 if (!p->objects)
1154 ERR("Failed to allocate effect objects memory.\n");
1155 return E_OUTOFMEMORY;
1158 for (i = 0; i < p->object_count; ++i)
1160 struct d3d10_effect_object *o = &p->objects[i];
1162 o->pass = p;
1164 hr = parse_fx10_object(o, ptr, data);
1165 if (FAILED(hr)) return hr;
1168 return hr;
1171 static HRESULT parse_fx10_technique(struct d3d10_effect_technique *t, const char **ptr, const char *data)
1173 unsigned int i;
1174 DWORD offset;
1175 HRESULT hr;
1177 read_dword(ptr, &offset);
1178 TRACE("Technique name at offset %#x.\n", offset);
1180 if (!copy_name(data + offset, &t->name))
1182 ERR("Failed to copy name.\n");
1183 return E_OUTOFMEMORY;
1185 TRACE("Technique name: %s.\n", debugstr_a(t->name));
1187 read_dword(ptr, &t->pass_count);
1188 TRACE("Technique has %u passes\n", t->pass_count);
1190 read_dword(ptr, &t->annotation_count);
1191 TRACE("Technique has %u annotations.\n", t->annotation_count);
1193 t->annotations = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, t->annotation_count * sizeof(*t->annotations));
1194 if (!t->annotations)
1196 ERR("Failed to allocate technique annotations memory.\n");
1197 return E_OUTOFMEMORY;
1200 for (i = 0; i < t->annotation_count; ++i)
1202 struct d3d10_effect_variable *a = &t->annotations[i];
1204 a->effect = t->effect;
1205 a->buffer = &null_local_buffer;
1207 hr = parse_fx10_annotation(a, ptr, data);
1208 if (FAILED(hr)) return hr;
1211 t->passes = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, t->pass_count * sizeof(*t->passes));
1212 if (!t->passes)
1214 ERR("Failed to allocate passes memory\n");
1215 return E_OUTOFMEMORY;
1218 for (i = 0; i < t->pass_count; ++i)
1220 struct d3d10_effect_pass *p = &t->passes[i];
1222 p->vtbl = &d3d10_effect_pass_vtbl;
1223 p->technique = t;
1225 hr = parse_fx10_pass(p, ptr, data);
1226 if (FAILED(hr)) return hr;
1229 return S_OK;
1232 static HRESULT parse_fx10_variable(struct d3d10_effect_variable *v, const char **ptr, const char *data)
1234 DWORD offset;
1235 unsigned int i;
1236 HRESULT hr;
1238 hr = parse_fx10_variable_head(v, ptr, data);
1239 if (FAILED(hr)) return hr;
1241 read_dword(ptr, &offset);
1242 TRACE("Variable semantic at offset %#x.\n", offset);
1244 if (!copy_name(data + offset, &v->semantic))
1246 ERR("Failed to copy semantic.\n");
1247 return E_OUTOFMEMORY;
1249 TRACE("Variable semantic: %s.\n", debugstr_a(v->semantic));
1251 read_dword(ptr, &v->buffer_offset);
1252 TRACE("Variable offset in buffer: %#x.\n", v->buffer_offset);
1254 skip_dword_unknown(ptr, 1);
1256 read_dword(ptr, &v->flag);
1257 TRACE("Variable flag: %#x.\n", v->flag);
1259 read_dword(ptr, &v->annotation_count);
1260 TRACE("Variable has %u annotations.\n", v->annotation_count);
1262 v->annotations = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, v->annotation_count * sizeof(*v->annotations));
1263 if (!v->annotations)
1265 ERR("Failed to allocate variable annotations memory.\n");
1266 return E_OUTOFMEMORY;
1269 for (i = 0; i < v->annotation_count; ++i)
1271 struct d3d10_effect_variable *a = &v->annotations[i];
1273 a->effect = v->effect;
1274 a->buffer = &null_local_buffer;
1276 hr = parse_fx10_annotation(a, ptr, data);
1277 if (FAILED(hr)) return hr;
1280 return S_OK;
1283 static HRESULT parse_fx10_local_variable(struct d3d10_effect_variable *v, const char **ptr, const char *data)
1285 unsigned int i;
1286 HRESULT hr;
1287 DWORD offset;
1289 hr = parse_fx10_variable_head(v, ptr, data);
1290 if (FAILED(hr)) return hr;
1292 read_dword(ptr, &offset);
1293 TRACE("Variable semantic at offset %#x.\n", offset);
1295 if (!copy_name(data + offset, &v->semantic))
1297 ERR("Failed to copy semantic.\n");
1298 return E_OUTOFMEMORY;
1300 TRACE("Variable semantic: %s.\n", debugstr_a(v->semantic));
1302 skip_dword_unknown(ptr, 1);
1304 switch (v->type->basetype)
1306 case D3D10_SVT_TEXTURE1D:
1307 case D3D10_SVT_TEXTURE1DARRAY:
1308 case D3D10_SVT_TEXTURE2D:
1309 case D3D10_SVT_TEXTURE2DARRAY:
1310 case D3D10_SVT_TEXTURE2DMS:
1311 case D3D10_SVT_TEXTURE2DMSARRAY:
1312 case D3D10_SVT_TEXTURE3D:
1313 case D3D10_SVT_TEXTURECUBE:
1314 case D3D10_SVT_RENDERTARGETVIEW:
1315 case D3D10_SVT_DEPTHSTENCILVIEW:
1316 TRACE("SVT could not have elements.\n");
1317 break;
1319 case D3D10_SVT_VERTEXSHADER:
1320 case D3D10_SVT_PIXELSHADER:
1321 case D3D10_SVT_GEOMETRYSHADER:
1322 TRACE("Shader type is %s\n", debug_d3d10_shader_variable_type(v->type->basetype));
1323 for (i = 0; i < max(v->type->element_count, 1); ++i)
1325 DWORD shader_offset;
1326 struct d3d10_effect_variable *var;
1328 if (!v->type->element_count)
1330 var = v;
1332 else
1334 var = &v->elements[i];
1337 read_dword(ptr, &shader_offset);
1338 TRACE("Shader offset: %#x.\n", shader_offset);
1340 hr = parse_shader(var, data + shader_offset);
1341 if (FAILED(hr)) return hr;
1343 break;
1345 case D3D10_SVT_DEPTHSTENCIL:
1346 case D3D10_SVT_BLEND:
1347 case D3D10_SVT_RASTERIZER:
1348 case D3D10_SVT_SAMPLER:
1349 TRACE("SVT is a state.\n");
1350 for (i = 0; i < max(v->type->element_count, 1); ++i)
1352 unsigned int j;
1353 DWORD object_count;
1355 read_dword(ptr, &object_count);
1356 TRACE("Object count: %#x.\n", object_count);
1358 for (j = 0; j < object_count; ++j)
1360 skip_dword_unknown(ptr, 4);
1363 break;
1365 default:
1366 FIXME("Unhandled case %s.\n", debug_d3d10_shader_variable_type(v->type->basetype));
1367 return E_FAIL;
1370 read_dword(ptr, &v->annotation_count);
1371 TRACE("Variable has %u annotations.\n", v->annotation_count);
1373 v->annotations = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, v->annotation_count * sizeof(*v->annotations));
1374 if (!v->annotations)
1376 ERR("Failed to allocate variable annotations memory.\n");
1377 return E_OUTOFMEMORY;
1380 for (i = 0; i < v->annotation_count; ++i)
1382 struct d3d10_effect_variable *a = &v->annotations[i];
1384 a->effect = v->effect;
1385 a->buffer = &null_local_buffer;
1387 hr = parse_fx10_annotation(a, ptr, data);
1388 if (FAILED(hr)) return hr;
1391 return S_OK;
1394 static HRESULT parse_fx10_local_buffer(struct d3d10_effect_variable *l, const char **ptr, const char *data)
1396 unsigned int i;
1397 DWORD offset;
1398 D3D10_CBUFFER_TYPE d3d10_cbuffer_type;
1399 HRESULT hr;
1400 unsigned int stride = 0;
1402 /* Generate our own type, it isn't in the fx blob. */
1403 l->type = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*l->type));
1404 if (!l->type)
1406 ERR("Failed to allocate local buffer type memory.\n");
1407 return E_OUTOFMEMORY;
1409 l->type->vtbl = &d3d10_effect_type_vtbl;
1410 l->type->type_class = D3D10_SVC_OBJECT;
1411 l->type->effect = l->effect;
1413 read_dword(ptr, &offset);
1414 TRACE("Local buffer name at offset %#x.\n", offset);
1416 if (!copy_name(data + offset, &l->name))
1418 ERR("Failed to copy name.\n");
1419 return E_OUTOFMEMORY;
1421 TRACE("Local buffer name: %s.\n", debugstr_a(l->name));
1423 read_dword(ptr, &l->data_size);
1424 TRACE("Local buffer data size: %#x.\n", l->data_size);
1426 read_dword(ptr, &d3d10_cbuffer_type);
1427 TRACE("Local buffer type: %#x.\n", d3d10_cbuffer_type);
1429 switch(d3d10_cbuffer_type)
1431 case D3D10_CT_CBUFFER:
1432 l->type->basetype = D3D10_SVT_CBUFFER;
1433 if (!copy_name("cbuffer", &l->type->name))
1435 ERR("Failed to copy name.\n");
1436 return E_OUTOFMEMORY;
1438 break;
1440 case D3D10_CT_TBUFFER:
1441 l->type->basetype = D3D10_SVT_TBUFFER;
1442 if (!copy_name("tbuffer", &l->type->name))
1444 ERR("Failed to copy name.\n");
1445 return E_OUTOFMEMORY;
1447 break;
1449 default:
1450 ERR("Unexpected D3D10_CBUFFER_TYPE %#x!\n", d3d10_cbuffer_type);
1451 return E_FAIL;
1454 read_dword(ptr, &l->type->member_count);
1455 TRACE("Local buffer member count: %#x.\n", l->type->member_count);
1457 skip_dword_unknown(ptr, 1);
1459 read_dword(ptr, &l->annotation_count);
1460 TRACE("Local buffer has %u annotations.\n", l->annotation_count);
1462 l->annotations = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, l->annotation_count * sizeof(*l->annotations));
1463 if (!l->annotations)
1465 ERR("Failed to allocate local buffer annotations memory.\n");
1466 return E_OUTOFMEMORY;
1469 for (i = 0; i < l->annotation_count; ++i)
1471 struct d3d10_effect_variable *a = &l->annotations[i];
1473 a->effect = l->effect;
1474 a->buffer = &null_local_buffer;
1476 hr = parse_fx10_annotation(a, ptr, data);
1477 if (FAILED(hr)) return hr;
1480 l->members = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, l->type->member_count * sizeof(*l->members));
1481 if (!l->members)
1483 ERR("Failed to allocate members memory.\n");
1484 return E_OUTOFMEMORY;
1487 l->type->members = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, l->type->member_count * sizeof(*l->type->members));
1488 if (!l->type->members)
1490 ERR("Failed to allocate type members memory.\n");
1491 return E_OUTOFMEMORY;
1494 for (i = 0; i < l->type->member_count; ++i)
1496 struct d3d10_effect_variable *v = &l->members[i];
1497 struct d3d10_effect_type_member *typem = &l->type->members[i];
1499 v->buffer = l;
1500 v->effect = l->effect;
1502 hr = parse_fx10_variable(v, ptr, data);
1503 if (FAILED(hr)) return hr;
1506 * Copy the values from the variable type to the constant buffers type
1507 * members structure, because it is our own generated type.
1509 typem->type = v->type;
1511 if (!copy_name(v->name, &typem->name))
1513 ERR("Failed to copy name.\n");
1514 return E_OUTOFMEMORY;
1516 TRACE("Variable name: %s.\n", debugstr_a(typem->name));
1518 if (!copy_name(v->semantic, &typem->semantic))
1520 ERR("Failed to copy name.\n");
1521 return E_OUTOFMEMORY;
1523 TRACE("Variable semantic: %s.\n", debugstr_a(typem->semantic));
1525 typem->buffer_offset = v->buffer_offset;
1526 TRACE("Variable buffer offset: %u.\n", typem->buffer_offset);
1528 l->type->size_packed += v->type->size_packed;
1531 * For the complete constantbuffer the size_unpacked = stride,
1532 * the stride is calculated like this:
1534 * 1) if the constant buffer variables are packed with packoffset
1535 * - stride = the highest used constant
1536 * - the complete stride has to be a multiple of 0x10
1538 * 2) if the constant buffer variables are NOT packed with packoffset
1539 * - sum of unpacked size for all variables which fit in a 0x10 part
1540 * - if the size exceeds a 0x10 part, the rest of the old part is skipped
1541 * and a new part is started
1542 * - if the variable is a struct it is always used a new part
1543 * - the complete stride has to be a multiple of 0x10
1545 * e.g.:
1546 * 0x4, 0x4, 0x4, 0x8, 0x4, 0x14, 0x4
1547 * part 0x10 0x10 0x20 -> 0x40
1549 if (v->flag & D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT)
1551 if ((v->type->size_unpacked + v->buffer_offset) > stride)
1553 stride = v->type->size_unpacked + v->buffer_offset;
1556 else
1558 if (v->type->type_class == D3D10_SVC_STRUCT)
1560 stride = (stride + 0xf) & ~0xf;
1563 if ( ((stride & 0xf) + v->type->size_unpacked) > 0x10)
1565 stride = (stride + 0xf) & ~0xf;
1568 stride += v->type->size_unpacked;
1571 l->type->stride = l->type->size_unpacked = (stride + 0xf) & ~0xf;
1573 TRACE("Constant buffer:\n");
1574 TRACE("\tType name: %s.\n", debugstr_a(l->type->name));
1575 TRACE("\tElement count: %u.\n", l->type->element_count);
1576 TRACE("\tMember count: %u.\n", l->type->member_count);
1577 TRACE("\tUnpacked size: %#x.\n", l->type->size_unpacked);
1578 TRACE("\tStride: %#x.\n", l->type->stride);
1579 TRACE("\tPacked size %#x.\n", l->type->size_packed);
1580 TRACE("\tBasetype: %s.\n", debug_d3d10_shader_variable_type(l->type->basetype));
1581 TRACE("\tTypeclass: %s.\n", debug_d3d10_shader_variable_class(l->type->type_class));
1583 return S_OK;
1586 static int d3d10_effect_type_compare(const void *key, const struct wine_rb_entry *entry)
1588 const struct d3d10_effect_type *t = WINE_RB_ENTRY_VALUE(entry, const struct d3d10_effect_type, entry);
1589 const DWORD *id = key;
1591 return *id - t->id;
1594 static void d3d10_effect_type_member_destroy(struct d3d10_effect_type_member *typem)
1596 TRACE("effect type member %p.\n", typem);
1598 /* Do not release typem->type, it will be covered by d3d10_effect_type_destroy(). */
1599 HeapFree(GetProcessHeap(), 0, typem->semantic);
1600 HeapFree(GetProcessHeap(), 0, typem->name);
1603 static void d3d10_effect_type_destroy(struct wine_rb_entry *entry, void *context)
1605 struct d3d10_effect_type *t = WINE_RB_ENTRY_VALUE(entry, struct d3d10_effect_type, entry);
1607 TRACE("effect type %p.\n", t);
1609 if (t->elementtype)
1611 HeapFree(GetProcessHeap(), 0, t->elementtype->name);
1612 HeapFree(GetProcessHeap(), 0, t->elementtype);
1615 if (t->members)
1617 unsigned int i;
1619 for (i = 0; i < t->member_count; ++i)
1621 d3d10_effect_type_member_destroy(&t->members[i]);
1623 HeapFree(GetProcessHeap(), 0, t->members);
1626 HeapFree(GetProcessHeap(), 0, t->name);
1627 HeapFree(GetProcessHeap(), 0, t);
1630 static const struct wine_rb_functions d3d10_effect_type_rb_functions =
1632 d3d10_rb_alloc,
1633 d3d10_rb_realloc,
1634 d3d10_rb_free,
1635 d3d10_effect_type_compare,
1638 static HRESULT parse_fx10_body(struct d3d10_effect *e, const char *data, DWORD data_size)
1640 const char *ptr = data + e->index_offset;
1641 unsigned int i;
1642 HRESULT hr;
1644 if (wine_rb_init(&e->types, &d3d10_effect_type_rb_functions) == -1)
1646 ERR("Failed to initialize type rbtree.\n");
1647 return E_FAIL;
1650 e->local_buffers = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, e->local_buffer_count * sizeof(*e->local_buffers));
1651 if (!e->local_buffers)
1653 ERR("Failed to allocate local buffer memory.\n");
1654 return E_OUTOFMEMORY;
1657 e->local_variables = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, e->local_variable_count * sizeof(*e->local_variables));
1658 if (!e->local_variables)
1660 ERR("Failed to allocate local variable memory.\n");
1661 return E_OUTOFMEMORY;
1664 e->anonymous_shaders = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, e->anonymous_shader_count * sizeof(*e->anonymous_shaders));
1665 if (!e->anonymous_shaders)
1667 ERR("Failed to allocate anonymous shaders memory\n");
1668 return E_OUTOFMEMORY;
1671 e->used_shaders = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, e->used_shader_count * sizeof(*e->used_shaders));
1672 if (!e->used_shaders)
1674 ERR("Failed to allocate used shaders memory\n");
1675 return E_OUTOFMEMORY;
1678 e->techniques = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, e->technique_count * sizeof(*e->techniques));
1679 if (!e->techniques)
1681 ERR("Failed to allocate techniques memory\n");
1682 return E_OUTOFMEMORY;
1685 for (i = 0; i < e->local_buffer_count; ++i)
1687 struct d3d10_effect_variable *l = &e->local_buffers[i];
1688 l->vtbl = (const ID3D10EffectVariableVtbl *)&d3d10_effect_constant_buffer_vtbl;
1689 l->effect = e;
1690 l->buffer = &null_local_buffer;
1692 hr = parse_fx10_local_buffer(l, &ptr, data);
1693 if (FAILED(hr)) return hr;
1696 for (i = 0; i < e->local_variable_count; ++i)
1698 struct d3d10_effect_variable *v = &e->local_variables[i];
1700 v->effect = e;
1701 v->vtbl = &d3d10_effect_variable_vtbl;
1702 v->buffer = &null_local_buffer;
1704 hr = parse_fx10_local_variable(v, &ptr, data);
1705 if (FAILED(hr)) return hr;
1708 for (i = 0; i < e->technique_count; ++i)
1710 struct d3d10_effect_technique *t = &e->techniques[i];
1712 t->vtbl = &d3d10_effect_technique_vtbl;
1713 t->effect = e;
1715 hr = parse_fx10_technique(t, &ptr, data);
1716 if (FAILED(hr)) return hr;
1719 return S_OK;
1722 static HRESULT parse_fx10(struct d3d10_effect *e, const char *data, DWORD data_size)
1724 const char *ptr = data;
1725 DWORD unknown;
1727 /* Compiled target version (e.g. fx_4_0=0xfeff1001, fx_4_1=0xfeff1011). */
1728 read_dword(&ptr, &e->version);
1729 TRACE("Target: %#x\n", e->version);
1731 read_dword(&ptr, &e->local_buffer_count);
1732 TRACE("Local buffer count: %u.\n", e->local_buffer_count);
1734 read_dword(&ptr, &e->variable_count);
1735 TRACE("Variable count: %u\n", e->variable_count);
1737 read_dword(&ptr, &e->local_variable_count);
1738 TRACE("Object count: %u\n", e->local_variable_count);
1740 read_dword(&ptr, &e->sharedbuffers_count);
1741 TRACE("Sharedbuffers count: %u\n", e->sharedbuffers_count);
1743 /* Number of variables in shared buffers? */
1744 read_dword(&ptr, &unknown);
1745 FIXME("Unknown 0: %u\n", unknown);
1747 read_dword(&ptr, &e->sharedobjects_count);
1748 TRACE("Sharedobjects count: %u\n", e->sharedobjects_count);
1750 read_dword(&ptr, &e->technique_count);
1751 TRACE("Technique count: %u\n", e->technique_count);
1753 read_dword(&ptr, &e->index_offset);
1754 TRACE("Index offset: %#x\n", e->index_offset);
1756 read_dword(&ptr, &unknown);
1757 FIXME("Unknown 1: %u\n", unknown);
1759 read_dword(&ptr, &e->texture_count);
1760 TRACE("Texture count: %u\n", e->texture_count);
1762 read_dword(&ptr, &e->dephstencilstate_count);
1763 TRACE("Depthstencilstate count: %u\n", e->dephstencilstate_count);
1765 read_dword(&ptr, &e->blendstate_count);
1766 TRACE("Blendstate count: %u\n", e->blendstate_count);
1768 read_dword(&ptr, &e->rasterizerstate_count);
1769 TRACE("Rasterizerstate count: %u\n", e->rasterizerstate_count);
1771 read_dword(&ptr, &e->samplerstate_count);
1772 TRACE("Samplerstate count: %u\n", e->samplerstate_count);
1774 read_dword(&ptr, &e->rendertargetview_count);
1775 TRACE("Rendertargetview count: %u\n", e->rendertargetview_count);
1777 read_dword(&ptr, &e->depthstencilview_count);
1778 TRACE("Depthstencilview count: %u\n", e->depthstencilview_count);
1780 read_dword(&ptr, &e->used_shader_count);
1781 TRACE("Used shader count: %u\n", e->used_shader_count);
1783 read_dword(&ptr, &e->anonymous_shader_count);
1784 TRACE("Anonymous shader count: %u\n", e->anonymous_shader_count);
1786 return parse_fx10_body(e, ptr, data_size - (ptr - data));
1789 static HRESULT fx10_chunk_handler(const char *data, DWORD data_size, DWORD tag, void *ctx)
1791 struct d3d10_effect *e = ctx;
1793 TRACE("tag: %s.\n", debugstr_an((const char *)&tag, 4));
1795 TRACE("chunk size: %#x\n", data_size);
1797 switch(tag)
1799 case TAG_FX10:
1800 return parse_fx10(e, data, data_size);
1802 default:
1803 FIXME("Unhandled chunk %s.\n", debugstr_an((const char *)&tag, 4));
1804 return S_OK;
1808 HRESULT d3d10_effect_parse(struct d3d10_effect *This, const void *data, SIZE_T data_size)
1810 return parse_dxbc(data, data_size, fx10_chunk_handler, This);
1813 static HRESULT d3d10_effect_object_apply(struct d3d10_effect_object *o)
1815 ID3D10Device *device = o->pass->technique->effect->device;
1816 struct d3d10_effect_variable *v = (struct d3d10_effect_variable*) o->data;
1818 TRACE("effect object %p, type %#x.\n", o, o->type);
1820 switch(o->type)
1822 case D3D10_EOT_VERTEXSHADER:
1823 ID3D10Device_VSSetShader(device, ((struct d3d10_effect_shader_variable *)v->data)->shader.vs);
1824 return S_OK;
1826 case D3D10_EOT_PIXELSHADER:
1827 ID3D10Device_PSSetShader(device, ((struct d3d10_effect_shader_variable *)v->data)->shader.ps);
1828 return S_OK;
1830 case D3D10_EOT_GEOMETRYSHADER:
1831 ID3D10Device_GSSetShader(device, ((struct d3d10_effect_shader_variable *)v->data)->shader.gs);
1832 return S_OK;
1834 default:
1835 FIXME("Unhandled effect object type %#x.\n", o->type);
1836 return E_FAIL;
1840 static void d3d10_effect_variable_destroy(struct d3d10_effect_variable *v)
1842 unsigned int i;
1844 TRACE("variable %p.\n", v);
1846 HeapFree(GetProcessHeap(), 0, v->name);
1847 HeapFree(GetProcessHeap(), 0, v->semantic);
1848 if (v->annotations)
1850 for (i = 0; i < v->annotation_count; ++i)
1852 d3d10_effect_variable_destroy(&v->annotations[i]);
1854 HeapFree(GetProcessHeap(), 0, v->annotations);
1857 if (v->members)
1859 for (i = 0; i < v->type->member_count; ++i)
1861 d3d10_effect_variable_destroy(&v->members[i]);
1863 HeapFree(GetProcessHeap(), 0, v->members);
1866 if (v->elements)
1868 for (i = 0; i < v->type->element_count; ++i)
1870 d3d10_effect_variable_destroy(&v->elements[i]);
1872 HeapFree(GetProcessHeap(), 0, v->elements);
1875 if (v->data)
1877 switch(v->type->basetype)
1879 case D3D10_SVT_VERTEXSHADER:
1880 case D3D10_SVT_PIXELSHADER:
1881 case D3D10_SVT_GEOMETRYSHADER:
1882 shader_free_signature(&((struct d3d10_effect_shader_variable *)v->data)->input_signature);
1883 shader_free_signature(&((struct d3d10_effect_shader_variable *)v->data)->output_signature);
1884 break;
1886 default:
1887 break;
1889 HeapFree(GetProcessHeap(), 0, v->data);
1893 static void d3d10_effect_pass_destroy(struct d3d10_effect_pass *p)
1895 unsigned int i;
1897 TRACE("pass %p\n", p);
1899 HeapFree(GetProcessHeap(), 0, p->name);
1900 HeapFree(GetProcessHeap(), 0, p->objects);
1902 if (p->annotations)
1904 for (i = 0; i < p->annotation_count; ++i)
1906 d3d10_effect_variable_destroy(&p->annotations[i]);
1908 HeapFree(GetProcessHeap(), 0, p->annotations);
1912 static void d3d10_effect_technique_destroy(struct d3d10_effect_technique *t)
1914 unsigned int i;
1916 TRACE("technique %p\n", t);
1918 HeapFree(GetProcessHeap(), 0, t->name);
1919 if (t->passes)
1921 for (i = 0; i < t->pass_count; ++i)
1923 d3d10_effect_pass_destroy(&t->passes[i]);
1925 HeapFree(GetProcessHeap(), 0, t->passes);
1928 if (t->annotations)
1930 for (i = 0; i < t->annotation_count; ++i)
1932 d3d10_effect_variable_destroy(&t->annotations[i]);
1934 HeapFree(GetProcessHeap(), 0, t->annotations);
1938 static void d3d10_effect_local_buffer_destroy(struct d3d10_effect_variable *l)
1940 unsigned int i;
1942 TRACE("local buffer %p.\n", l);
1944 HeapFree(GetProcessHeap(), 0, l->name);
1945 if (l->members)
1947 for (i = 0; i < l->type->member_count; ++i)
1949 d3d10_effect_variable_destroy(&l->members[i]);
1951 HeapFree(GetProcessHeap(), 0, l->members);
1954 if (l->type->members)
1956 for (i = 0; i < l->type->member_count; ++i)
1958 /* Do not release l->type->members[i].type, it will be covered by d3d10_effect_type_destroy(). */
1959 HeapFree(GetProcessHeap(), 0, l->type->members[i].semantic);
1960 HeapFree(GetProcessHeap(), 0, l->type->members[i].name);
1962 HeapFree(GetProcessHeap(), 0, l->type->members);
1964 HeapFree(GetProcessHeap(), 0, l->type->name);
1965 HeapFree(GetProcessHeap(), 0, l->type);
1967 if (l->annotations)
1969 for (i = 0; i < l->annotation_count; ++i)
1971 d3d10_effect_variable_destroy(&l->annotations[i]);
1973 HeapFree(GetProcessHeap(), 0, l->annotations);
1977 /* IUnknown methods */
1979 static HRESULT STDMETHODCALLTYPE d3d10_effect_QueryInterface(ID3D10Effect *iface, REFIID riid, void **object)
1981 TRACE("iface %p, riid %s, object %p\n", iface, debugstr_guid(riid), object);
1983 if (IsEqualGUID(riid, &IID_ID3D10Effect)
1984 || IsEqualGUID(riid, &IID_IUnknown))
1986 IUnknown_AddRef(iface);
1987 *object = iface;
1988 return S_OK;
1991 WARN("%s not implemented, returning E_NOINTERFACE\n", debugstr_guid(riid));
1993 *object = NULL;
1994 return E_NOINTERFACE;
1997 static ULONG STDMETHODCALLTYPE d3d10_effect_AddRef(ID3D10Effect *iface)
1999 struct d3d10_effect *This = (struct d3d10_effect *)iface;
2000 ULONG refcount = InterlockedIncrement(&This->refcount);
2002 TRACE("%p increasing refcount to %u\n", This, refcount);
2004 return refcount;
2007 static ULONG STDMETHODCALLTYPE d3d10_effect_Release(ID3D10Effect *iface)
2009 struct d3d10_effect *This = (struct d3d10_effect *)iface;
2010 ULONG refcount = InterlockedDecrement(&This->refcount);
2012 TRACE("%p decreasing refcount to %u\n", This, refcount);
2014 if (!refcount)
2016 unsigned int i;
2018 if (This->techniques)
2020 for (i = 0; i < This->technique_count; ++i)
2022 d3d10_effect_technique_destroy(&This->techniques[i]);
2024 HeapFree(GetProcessHeap(), 0, This->techniques);
2027 if (This->local_variables)
2029 for (i = 0; i < This->local_variable_count; ++i)
2031 d3d10_effect_variable_destroy(&This->local_variables[i]);
2033 HeapFree(GetProcessHeap(), 0, This->local_variables);
2036 if (This->local_buffers)
2038 for (i = 0; i < This->local_buffer_count; ++i)
2040 d3d10_effect_local_buffer_destroy(&This->local_buffers[i]);
2042 HeapFree(GetProcessHeap(), 0, This->local_buffers);
2045 if (This->anonymous_shaders)
2047 for (i = 0; i < This->anonymous_shader_count; ++i)
2049 d3d10_effect_variable_destroy(&This->anonymous_shaders[i].shader);
2050 HeapFree(GetProcessHeap(), 0, This->anonymous_shaders[i].type.name);
2052 HeapFree(GetProcessHeap(), 0, This->anonymous_shaders);
2055 HeapFree(GetProcessHeap(), 0, This->used_shaders);
2057 wine_rb_destroy(&This->types, d3d10_effect_type_destroy, NULL);
2059 ID3D10Device_Release(This->device);
2060 HeapFree(GetProcessHeap(), 0, This);
2063 return refcount;
2066 /* ID3D10Effect methods */
2068 static BOOL STDMETHODCALLTYPE d3d10_effect_IsValid(ID3D10Effect *iface)
2070 FIXME("iface %p stub!\n", iface);
2072 return FALSE;
2075 static BOOL STDMETHODCALLTYPE d3d10_effect_IsPool(ID3D10Effect *iface)
2077 FIXME("iface %p stub!\n", iface);
2079 return FALSE;
2082 static HRESULT STDMETHODCALLTYPE d3d10_effect_GetDevice(ID3D10Effect *iface, ID3D10Device **device)
2084 struct d3d10_effect *This = (struct d3d10_effect *)iface;
2086 TRACE("iface %p, device %p\n", iface, device);
2088 ID3D10Device_AddRef(This->device);
2089 *device = This->device;
2091 return S_OK;
2094 static HRESULT STDMETHODCALLTYPE d3d10_effect_GetDesc(ID3D10Effect *iface, D3D10_EFFECT_DESC *desc)
2096 FIXME("iface %p, desc %p stub!\n", iface, desc);
2098 return E_NOTIMPL;
2101 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_GetConstantBufferByIndex(ID3D10Effect *iface,
2102 UINT index)
2104 struct d3d10_effect *This = (struct d3d10_effect *)iface;
2105 struct d3d10_effect_variable *l;
2107 TRACE("iface %p, index %u\n", iface, index);
2109 if (index >= This->local_buffer_count)
2111 WARN("Invalid index specified\n");
2112 return (ID3D10EffectConstantBuffer *)&null_local_buffer;
2115 l = &This->local_buffers[index];
2117 TRACE("Returning buffer %p, %s.\n", l, debugstr_a(l->name));
2119 return (ID3D10EffectConstantBuffer *)l;
2122 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_GetConstantBufferByName(ID3D10Effect *iface,
2123 LPCSTR name)
2125 struct d3d10_effect *This = (struct d3d10_effect *)iface;
2126 unsigned int i;
2128 TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
2130 for (i = 0; i < This->local_buffer_count; ++i)
2132 struct d3d10_effect_variable *l = &This->local_buffers[i];
2134 if (!strcmp(l->name, name))
2136 TRACE("Returning buffer %p.\n", l);
2137 return (ID3D10EffectConstantBuffer *)l;
2141 WARN("Invalid name specified\n");
2143 return (ID3D10EffectConstantBuffer *)&null_local_buffer;
2146 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_GetVariableByIndex(ID3D10Effect *iface, UINT index)
2148 struct d3d10_effect *This = (struct d3d10_effect *)iface;
2149 unsigned int i;
2151 TRACE("iface %p, index %u\n", iface, index);
2153 for (i = 0; i < This->local_buffer_count; ++i)
2155 struct d3d10_effect_variable *l = &This->local_buffers[i];
2157 if (index < l->type->member_count)
2159 struct d3d10_effect_variable *v = &l->members[index];
2161 TRACE("Returning variable %p.\n", v);
2162 return (ID3D10EffectVariable *)v;
2164 index -= l->type->member_count;
2167 if (index < This->local_variable_count)
2169 struct d3d10_effect_variable *v = &This->local_variables[index];
2171 TRACE("Returning variable %p.\n", v);
2172 return (ID3D10EffectVariable *)v;
2175 WARN("Invalid index specified\n");
2177 return (ID3D10EffectVariable *)&null_variable;
2180 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_GetVariableByName(ID3D10Effect *iface, LPCSTR name)
2182 struct d3d10_effect *This = (struct d3d10_effect *)iface;
2183 unsigned int i;
2185 TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
2187 if (!name)
2189 WARN("Invalid name specified\n");
2190 return (ID3D10EffectVariable *)&null_variable;
2193 for (i = 0; i < This->local_buffer_count; ++i)
2195 struct d3d10_effect_variable *l = &This->local_buffers[i];
2196 unsigned int j;
2198 for (j = 0; j < l->type->member_count; ++j)
2200 struct d3d10_effect_variable *v = &l->members[j];
2202 if (!strcmp(v->name, name))
2204 TRACE("Returning variable %p.\n", v);
2205 return (ID3D10EffectVariable *)v;
2210 for (i = 0; i < This->local_variable_count; ++i)
2212 struct d3d10_effect_variable *v = &This->local_variables[i];
2214 if (!strcmp(v->name, name))
2216 TRACE("Returning variable %p.\n", v);
2217 return (ID3D10EffectVariable *)v;
2221 WARN("Invalid name specified\n");
2223 return (ID3D10EffectVariable *)&null_variable;
2226 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_GetVariableBySemantic(ID3D10Effect *iface,
2227 LPCSTR semantic)
2229 struct d3d10_effect *This = (struct d3d10_effect *)iface;
2230 unsigned int i;
2232 TRACE("iface %p, semantic %s\n", iface, debugstr_a(semantic));
2234 if (!semantic)
2236 WARN("Invalid semantic specified\n");
2237 return (ID3D10EffectVariable *)&null_variable;
2240 for (i = 0; i < This->local_buffer_count; ++i)
2242 struct d3d10_effect_variable *l = &This->local_buffers[i];
2243 unsigned int j;
2245 for (j = 0; j < l->type->member_count; ++j)
2247 struct d3d10_effect_variable *v = &l->members[j];
2249 if (!strcmp(v->semantic, semantic))
2251 TRACE("Returning variable %p.\n", v);
2252 return (ID3D10EffectVariable *)v;
2257 for (i = 0; i < This->local_variable_count; ++i)
2259 struct d3d10_effect_variable *v = &This->local_variables[i];
2261 if (!strcmp(v->semantic, semantic))
2263 TRACE("Returning variable %p.\n", v);
2264 return (ID3D10EffectVariable *)v;
2268 WARN("Invalid semantic specified\n");
2270 return (ID3D10EffectVariable *)&null_variable;
2273 static struct ID3D10EffectTechnique * STDMETHODCALLTYPE d3d10_effect_GetTechniqueByIndex(ID3D10Effect *iface,
2274 UINT index)
2276 struct d3d10_effect *This = (struct d3d10_effect *)iface;
2277 struct d3d10_effect_technique *t;
2279 TRACE("iface %p, index %u\n", iface, index);
2281 if (index >= This->technique_count)
2283 WARN("Invalid index specified\n");
2284 return (ID3D10EffectTechnique *)&null_technique;
2287 t = &This->techniques[index];
2289 TRACE("Returning technique %p, %s.\n", t, debugstr_a(t->name));
2291 return (ID3D10EffectTechnique *)t;
2294 static struct ID3D10EffectTechnique * STDMETHODCALLTYPE d3d10_effect_GetTechniqueByName(ID3D10Effect *iface,
2295 LPCSTR name)
2297 struct d3d10_effect *This = (struct d3d10_effect *)iface;
2298 unsigned int i;
2300 TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
2302 if (!name)
2304 WARN("Invalid name specified\n");
2305 return (ID3D10EffectTechnique *)&null_technique;
2308 for (i = 0; i < This->technique_count; ++i)
2310 struct d3d10_effect_technique *t = &This->techniques[i];
2311 if (!strcmp(t->name, name))
2313 TRACE("Returning technique %p\n", t);
2314 return (ID3D10EffectTechnique *)t;
2318 WARN("Invalid name specified\n");
2320 return (ID3D10EffectTechnique *)&null_technique;
2323 static HRESULT STDMETHODCALLTYPE d3d10_effect_Optimize(ID3D10Effect *iface)
2325 FIXME("iface %p stub!\n", iface);
2327 return E_NOTIMPL;
2330 static BOOL STDMETHODCALLTYPE d3d10_effect_IsOptimized(ID3D10Effect *iface)
2332 FIXME("iface %p stub!\n", iface);
2334 return FALSE;
2337 const struct ID3D10EffectVtbl d3d10_effect_vtbl =
2339 /* IUnknown methods */
2340 d3d10_effect_QueryInterface,
2341 d3d10_effect_AddRef,
2342 d3d10_effect_Release,
2343 /* ID3D10Effect methods */
2344 d3d10_effect_IsValid,
2345 d3d10_effect_IsPool,
2346 d3d10_effect_GetDevice,
2347 d3d10_effect_GetDesc,
2348 d3d10_effect_GetConstantBufferByIndex,
2349 d3d10_effect_GetConstantBufferByName,
2350 d3d10_effect_GetVariableByIndex,
2351 d3d10_effect_GetVariableByName,
2352 d3d10_effect_GetVariableBySemantic,
2353 d3d10_effect_GetTechniqueByIndex,
2354 d3d10_effect_GetTechniqueByName,
2355 d3d10_effect_Optimize,
2356 d3d10_effect_IsOptimized,
2359 /* ID3D10EffectTechnique methods */
2361 static BOOL STDMETHODCALLTYPE d3d10_effect_technique_IsValid(ID3D10EffectTechnique *iface)
2363 TRACE("iface %p\n", iface);
2365 return (struct d3d10_effect_technique *)iface != &null_technique;
2368 static HRESULT STDMETHODCALLTYPE d3d10_effect_technique_GetDesc(ID3D10EffectTechnique *iface,
2369 D3D10_TECHNIQUE_DESC *desc)
2371 struct d3d10_effect_technique *This = (struct d3d10_effect_technique *)iface;
2373 TRACE("iface %p, desc %p\n", iface, desc);
2375 if(This == &null_technique)
2377 WARN("Null technique specified\n");
2378 return E_FAIL;
2381 if(!desc)
2383 WARN("Invalid argument specified\n");
2384 return E_INVALIDARG;
2387 desc->Name = This->name;
2388 desc->Passes = This->pass_count;
2389 desc->Annotations = This->annotation_count;
2391 return S_OK;
2394 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_technique_GetAnnotationByIndex(
2395 ID3D10EffectTechnique *iface, UINT index)
2397 struct d3d10_effect_technique *This = (struct d3d10_effect_technique *)iface;
2398 struct d3d10_effect_variable *a;
2400 TRACE("iface %p, index %u\n", iface, index);
2402 if (index >= This->annotation_count)
2404 WARN("Invalid index specified\n");
2405 return (ID3D10EffectVariable *)&null_variable;
2408 a = &This->annotations[index];
2410 TRACE("Returning annotation %p, %s\n", a, debugstr_a(a->name));
2412 return (ID3D10EffectVariable *)a;
2415 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_technique_GetAnnotationByName(
2416 ID3D10EffectTechnique *iface, LPCSTR name)
2418 struct d3d10_effect_technique *This = (struct d3d10_effect_technique *)iface;
2419 unsigned int i;
2421 TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
2423 for (i = 0; i < This->annotation_count; ++i)
2425 struct d3d10_effect_variable *a = &This->annotations[i];
2426 if (!strcmp(a->name, name))
2428 TRACE("Returning annotation %p\n", a);
2429 return (ID3D10EffectVariable *)a;
2433 WARN("Invalid name specified\n");
2435 return (ID3D10EffectVariable *)&null_variable;
2438 static struct ID3D10EffectPass * STDMETHODCALLTYPE d3d10_effect_technique_GetPassByIndex(ID3D10EffectTechnique *iface,
2439 UINT index)
2441 struct d3d10_effect_technique *This = (struct d3d10_effect_technique *)iface;
2442 struct d3d10_effect_pass *p;
2444 TRACE("iface %p, index %u\n", iface, index);
2446 if (index >= This->pass_count)
2448 WARN("Invalid index specified\n");
2449 return (ID3D10EffectPass *)&null_pass;
2452 p = &This->passes[index];
2454 TRACE("Returning pass %p, %s.\n", p, debugstr_a(p->name));
2456 return (ID3D10EffectPass *)p;
2459 static struct ID3D10EffectPass * STDMETHODCALLTYPE d3d10_effect_technique_GetPassByName(ID3D10EffectTechnique *iface,
2460 LPCSTR name)
2462 struct d3d10_effect_technique *This = (struct d3d10_effect_technique *)iface;
2463 unsigned int i;
2465 TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
2467 /* Do not check for name==NULL, W7/DX10 crashes in that case. */
2469 for (i = 0; i < This->pass_count; ++i)
2471 struct d3d10_effect_pass *p = &This->passes[i];
2472 if (!strcmp(p->name, name))
2474 TRACE("Returning pass %p\n", p);
2475 return (ID3D10EffectPass *)p;
2479 WARN("Invalid name specified\n");
2481 return (ID3D10EffectPass *)&null_pass;
2484 static HRESULT STDMETHODCALLTYPE d3d10_effect_technique_ComputeStateBlockMask(ID3D10EffectTechnique *iface,
2485 D3D10_STATE_BLOCK_MASK *mask)
2487 FIXME("iface %p,mask %p stub!\n", iface, mask);
2489 return E_NOTIMPL;
2492 static const struct ID3D10EffectTechniqueVtbl d3d10_effect_technique_vtbl =
2494 /* ID3D10EffectTechnique methods */
2495 d3d10_effect_technique_IsValid,
2496 d3d10_effect_technique_GetDesc,
2497 d3d10_effect_technique_GetAnnotationByIndex,
2498 d3d10_effect_technique_GetAnnotationByName,
2499 d3d10_effect_technique_GetPassByIndex,
2500 d3d10_effect_technique_GetPassByName,
2501 d3d10_effect_technique_ComputeStateBlockMask,
2504 /* ID3D10EffectPass methods */
2506 static BOOL STDMETHODCALLTYPE d3d10_effect_pass_IsValid(ID3D10EffectPass *iface)
2508 TRACE("iface %p\n", iface);
2510 return (struct d3d10_effect_pass *)iface != &null_pass;
2513 static HRESULT STDMETHODCALLTYPE d3d10_effect_pass_GetDesc(ID3D10EffectPass *iface, D3D10_PASS_DESC *desc)
2515 struct d3d10_effect_pass *This = (struct d3d10_effect_pass *)iface;
2516 unsigned int i;
2518 FIXME("iface %p, desc %p partial stub!\n", iface, desc);
2520 if(This == &null_pass)
2522 WARN("Null pass specified\n");
2523 return E_FAIL;
2526 if(!desc)
2528 WARN("Invalid argument specified\n");
2529 return E_INVALIDARG;
2532 memset(desc, 0, sizeof(*desc));
2533 desc->Name = This->name;
2534 for (i = 0; i < This->object_count; ++i)
2536 struct d3d10_effect_object *o = &This->objects[i];
2537 if (o->type == D3D10_EOT_VERTEXSHADER)
2539 struct d3d10_effect_variable *v = o->data;
2540 struct d3d10_effect_shader_variable *s = v->data;
2541 desc->pIAInputSignature = (BYTE *)s->input_signature.signature;
2542 desc->IAInputSignatureSize = s->input_signature.signature_size;
2543 break;
2547 return S_OK;
2550 static HRESULT STDMETHODCALLTYPE d3d10_effect_pass_GetVertexShaderDesc(ID3D10EffectPass *iface,
2551 D3D10_PASS_SHADER_DESC *desc)
2553 struct d3d10_effect_pass *This = (struct d3d10_effect_pass *)iface;
2554 unsigned int i;
2556 TRACE("iface %p, desc %p\n", iface, desc);
2558 if (This == &null_pass)
2560 WARN("Null pass specified\n");
2561 return E_FAIL;
2564 if (!desc)
2566 WARN("Invalid argument specified\n");
2567 return E_INVALIDARG;
2570 for (i = 0; i < This->object_count; ++i)
2572 struct d3d10_effect_object *o = &This->objects[i];
2574 if (o->type == D3D10_EOT_VERTEXSHADER)
2576 desc->pShaderVariable = o->data;
2577 desc->ShaderIndex = o->index;
2578 return S_OK;
2582 TRACE("Returning null_shader_variable\n");
2583 desc->pShaderVariable = (ID3D10EffectShaderVariable *)&null_shader_variable;
2584 desc->ShaderIndex = 0;
2586 return S_OK;
2589 static HRESULT STDMETHODCALLTYPE d3d10_effect_pass_GetGeometryShaderDesc(ID3D10EffectPass *iface,
2590 D3D10_PASS_SHADER_DESC *desc)
2592 struct d3d10_effect_pass *This = (struct d3d10_effect_pass *)iface;
2593 unsigned int i;
2595 TRACE("iface %p, desc %p\n", iface, desc);
2597 if (This == &null_pass)
2599 WARN("Null pass specified\n");
2600 return E_FAIL;
2603 if (!desc)
2605 WARN("Invalid argument specified\n");
2606 return E_INVALIDARG;
2609 for (i = 0; i < This->object_count; ++i)
2611 struct d3d10_effect_object *o = &This->objects[i];
2613 if (o->type == D3D10_EOT_GEOMETRYSHADER)
2615 desc->pShaderVariable = o->data;
2616 desc->ShaderIndex = o->index;
2617 return S_OK;
2621 TRACE("Returning null_shader_variable\n");
2622 desc->pShaderVariable = (ID3D10EffectShaderVariable *)&null_shader_variable;
2623 desc->ShaderIndex = 0;
2625 return S_OK;
2628 static HRESULT STDMETHODCALLTYPE d3d10_effect_pass_GetPixelShaderDesc(ID3D10EffectPass *iface,
2629 D3D10_PASS_SHADER_DESC *desc)
2631 struct d3d10_effect_pass *This = (struct d3d10_effect_pass *)iface;
2632 unsigned int i;
2634 TRACE("iface %p, desc %p\n", iface, desc);
2636 if (This == &null_pass)
2638 WARN("Null pass specified\n");
2639 return E_FAIL;
2642 if (!desc)
2644 WARN("Invalid argument specified\n");
2645 return E_INVALIDARG;
2648 for (i = 0; i < This->object_count; ++i)
2650 struct d3d10_effect_object *o = &This->objects[i];
2652 if (o->type == D3D10_EOT_PIXELSHADER)
2654 desc->pShaderVariable = o->data;
2655 desc->ShaderIndex = o->index;
2656 return S_OK;
2660 TRACE("Returning null_shader_variable\n");
2661 desc->pShaderVariable = (ID3D10EffectShaderVariable *)&null_shader_variable;
2662 desc->ShaderIndex = 0;
2664 return S_OK;
2667 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_pass_GetAnnotationByIndex(ID3D10EffectPass *iface,
2668 UINT index)
2670 struct d3d10_effect_pass *This = (struct d3d10_effect_pass *)iface;
2671 struct d3d10_effect_variable *a;
2673 TRACE("iface %p, index %u\n", iface, index);
2675 if (index >= This->annotation_count)
2677 WARN("Invalid index specified\n");
2678 return (ID3D10EffectVariable *)&null_variable;
2681 a = &This->annotations[index];
2683 TRACE("Returning annotation %p, %s\n", a, debugstr_a(a->name));
2685 return (ID3D10EffectVariable *)a;
2688 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_pass_GetAnnotationByName(ID3D10EffectPass *iface,
2689 LPCSTR name)
2691 struct d3d10_effect_pass *This = (struct d3d10_effect_pass *)iface;
2692 unsigned int i;
2694 TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
2696 for (i = 0; i < This->annotation_count; ++i)
2698 struct d3d10_effect_variable *a = &This->annotations[i];
2699 if (!strcmp(a->name, name))
2701 TRACE("Returning annotation %p\n", a);
2702 return (ID3D10EffectVariable *)a;
2706 WARN("Invalid name specified\n");
2708 return (ID3D10EffectVariable *)&null_variable;
2711 static HRESULT STDMETHODCALLTYPE d3d10_effect_pass_Apply(ID3D10EffectPass *iface, UINT flags)
2713 struct d3d10_effect_pass *This = (struct d3d10_effect_pass *)iface;
2714 HRESULT hr = S_OK;
2715 unsigned int i;
2717 TRACE("iface %p, flags %#x\n", iface, flags);
2719 if (flags) FIXME("Ignoring flags (%#x)\n", flags);
2721 for (i = 0; i < This->object_count; ++i)
2723 hr = d3d10_effect_object_apply(&This->objects[i]);
2724 if (FAILED(hr)) break;
2727 return hr;
2730 static HRESULT STDMETHODCALLTYPE d3d10_effect_pass_ComputeStateBlockMask(ID3D10EffectPass *iface,
2731 D3D10_STATE_BLOCK_MASK *mask)
2733 FIXME("iface %p, mask %p stub!\n", iface, mask);
2735 return E_NOTIMPL;
2738 static const struct ID3D10EffectPassVtbl d3d10_effect_pass_vtbl =
2740 /* ID3D10EffectPass methods */
2741 d3d10_effect_pass_IsValid,
2742 d3d10_effect_pass_GetDesc,
2743 d3d10_effect_pass_GetVertexShaderDesc,
2744 d3d10_effect_pass_GetGeometryShaderDesc,
2745 d3d10_effect_pass_GetPixelShaderDesc,
2746 d3d10_effect_pass_GetAnnotationByIndex,
2747 d3d10_effect_pass_GetAnnotationByName,
2748 d3d10_effect_pass_Apply,
2749 d3d10_effect_pass_ComputeStateBlockMask,
2752 /* ID3D10EffectVariable methods */
2754 static BOOL STDMETHODCALLTYPE d3d10_effect_variable_IsValid(ID3D10EffectVariable *iface)
2756 TRACE("iface %p\n", iface);
2758 return (struct d3d10_effect_variable *)iface != &null_variable;
2761 static struct ID3D10EffectType * STDMETHODCALLTYPE d3d10_effect_variable_GetType(ID3D10EffectVariable *iface)
2763 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
2765 TRACE("iface %p\n", iface);
2767 return (ID3D10EffectType *)This->type;
2770 static HRESULT STDMETHODCALLTYPE d3d10_effect_variable_GetDesc(ID3D10EffectVariable *iface,
2771 D3D10_EFFECT_VARIABLE_DESC *desc)
2773 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
2775 TRACE("iface %p, desc %p\n", iface, desc);
2777 if (!iface->lpVtbl->IsValid(iface))
2779 WARN("Null variable specified\n");
2780 return E_FAIL;
2783 if (!desc)
2785 WARN("Invalid argument specified\n");
2786 return E_INVALIDARG;
2789 /* FIXME: This isn't correct. Anonymous shaders let desc->ExplicitBindPoint untouched, but normal shaders set it! */
2790 memset(desc, 0, sizeof(*desc));
2791 desc->Name = This->name;
2792 desc->Semantic = This->semantic;
2793 desc->Flags = This->flag;
2794 desc->Annotations = This->annotation_count;
2795 desc->BufferOffset = This->buffer_offset;
2797 if (This->flag & D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT)
2799 desc->ExplicitBindPoint = This->buffer_offset;
2802 return S_OK;
2805 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_variable_GetAnnotationByIndex(
2806 ID3D10EffectVariable *iface, UINT index)
2808 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
2809 struct d3d10_effect_variable *a;
2811 TRACE("iface %p, index %u\n", iface, index);
2813 if (index >= This->annotation_count)
2815 WARN("Invalid index specified\n");
2816 return (ID3D10EffectVariable *)&null_variable;
2819 a = &This->annotations[index];
2821 TRACE("Returning annotation %p, %s\n", a, debugstr_a(a->name));
2823 return (ID3D10EffectVariable *)a;
2826 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_variable_GetAnnotationByName(
2827 ID3D10EffectVariable *iface, LPCSTR name)
2829 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
2830 unsigned int i;
2832 TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
2834 for (i = 0; i < This->annotation_count; ++i)
2836 struct d3d10_effect_variable *a = &This->annotations[i];
2837 if (!strcmp(a->name, name))
2839 TRACE("Returning annotation %p\n", a);
2840 return (ID3D10EffectVariable *)a;
2844 WARN("Invalid name specified\n");
2846 return (ID3D10EffectVariable *)&null_variable;
2849 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_variable_GetMemberByIndex(
2850 ID3D10EffectVariable *iface, UINT index)
2852 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
2853 struct d3d10_effect_variable *m;
2855 TRACE("iface %p, index %u\n", iface, index);
2857 if (index >= This->type->member_count)
2859 WARN("Invalid index specified\n");
2860 return (ID3D10EffectVariable *)&null_variable;
2863 m = &This->members[index];
2865 TRACE("Returning member %p, %s\n", m, debugstr_a(m->name));
2867 return (ID3D10EffectVariable *)m;
2870 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_variable_GetMemberByName(
2871 ID3D10EffectVariable *iface, LPCSTR name)
2873 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
2874 unsigned int i;
2876 TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
2878 if (!name)
2880 WARN("Invalid name specified\n");
2881 return (ID3D10EffectVariable *)&null_variable;
2884 for (i = 0; i < This->type->member_count; ++i)
2886 struct d3d10_effect_variable *m = &This->members[i];
2888 if (m->name)
2890 if (!strcmp(m->name, name))
2892 TRACE("Returning member %p\n", m);
2893 return (ID3D10EffectVariable *)m;
2898 WARN("Invalid name specified\n");
2900 return (ID3D10EffectVariable *)&null_variable;
2903 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_variable_GetMemberBySemantic(
2904 ID3D10EffectVariable *iface, LPCSTR semantic)
2906 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
2907 unsigned int i;
2909 TRACE("iface %p, semantic %s.\n", iface, debugstr_a(semantic));
2911 if (!semantic)
2913 WARN("Invalid semantic specified\n");
2914 return (ID3D10EffectVariable *)&null_variable;
2917 for (i = 0; i < This->type->member_count; ++i)
2919 struct d3d10_effect_variable *m = &This->members[i];
2921 if (m->semantic)
2923 if (!strcmp(m->semantic, semantic))
2925 TRACE("Returning member %p\n", m);
2926 return (ID3D10EffectVariable *)m;
2931 WARN("Invalid semantic specified\n");
2933 return (ID3D10EffectVariable *)&null_variable;
2936 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_variable_GetElement(
2937 ID3D10EffectVariable *iface, UINT index)
2939 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
2940 struct d3d10_effect_variable *v;
2942 TRACE("iface %p, index %u\n", iface, index);
2944 if (index >= This->type->element_count)
2946 WARN("Invalid index specified\n");
2947 return (ID3D10EffectVariable *)&null_variable;
2950 v = &This->elements[index];
2952 TRACE("Returning element %p, %s\n", v, debugstr_a(v->name));
2954 return (ID3D10EffectVariable *)v;
2957 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_variable_GetParentConstantBuffer(
2958 ID3D10EffectVariable *iface)
2960 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
2962 TRACE("iface %p\n", iface);
2964 return (ID3D10EffectConstantBuffer *)This->buffer;
2967 static struct ID3D10EffectScalarVariable * STDMETHODCALLTYPE d3d10_effect_variable_AsScalar(
2968 ID3D10EffectVariable *iface)
2970 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
2972 TRACE("iface %p\n", iface);
2974 if (This->vtbl == (const ID3D10EffectVariableVtbl *)&d3d10_effect_scalar_variable_vtbl)
2975 return (ID3D10EffectScalarVariable *)This;
2977 return (ID3D10EffectScalarVariable *)&null_scalar_variable;
2980 static struct ID3D10EffectVectorVariable * STDMETHODCALLTYPE d3d10_effect_variable_AsVector(
2981 ID3D10EffectVariable *iface)
2983 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
2985 TRACE("iface %p\n", iface);
2987 if (This->vtbl == (const ID3D10EffectVariableVtbl *)&d3d10_effect_vector_variable_vtbl)
2988 return (ID3D10EffectVectorVariable *)This;
2990 return (ID3D10EffectVectorVariable *)&null_vector_variable;
2993 static struct ID3D10EffectMatrixVariable * STDMETHODCALLTYPE d3d10_effect_variable_AsMatrix(
2994 ID3D10EffectVariable *iface)
2996 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
2998 TRACE("iface %p\n", iface);
3000 if (This->vtbl == (const ID3D10EffectVariableVtbl *)&d3d10_effect_matrix_variable_vtbl)
3001 return (ID3D10EffectMatrixVariable *)This;
3003 return (ID3D10EffectMatrixVariable *)&null_matrix_variable;
3006 static struct ID3D10EffectStringVariable * STDMETHODCALLTYPE d3d10_effect_variable_AsString(
3007 ID3D10EffectVariable *iface)
3009 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
3011 TRACE("iface %p\n", iface);
3013 if (This->vtbl == (const ID3D10EffectVariableVtbl *)&d3d10_effect_string_variable_vtbl)
3014 return (ID3D10EffectStringVariable *)This;
3016 return (ID3D10EffectStringVariable *)&null_string_variable;
3019 static struct ID3D10EffectShaderResourceVariable * STDMETHODCALLTYPE d3d10_effect_variable_AsShaderResource(
3020 ID3D10EffectVariable *iface)
3022 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
3024 TRACE("iface %p\n", iface);
3026 if (This->vtbl == (const ID3D10EffectVariableVtbl *)&d3d10_effect_shader_resource_variable_vtbl)
3027 return (ID3D10EffectShaderResourceVariable *)This;
3029 return (ID3D10EffectShaderResourceVariable *)&null_shader_resource_variable;
3032 static struct ID3D10EffectRenderTargetViewVariable * STDMETHODCALLTYPE d3d10_effect_variable_AsRenderTargetView(
3033 ID3D10EffectVariable *iface)
3035 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
3037 TRACE("iface %p\n", iface);
3039 if (This->vtbl == (const ID3D10EffectVariableVtbl *)&d3d10_effect_render_target_view_variable_vtbl)
3040 return (ID3D10EffectRenderTargetViewVariable *)This;
3042 return (ID3D10EffectRenderTargetViewVariable *)&null_render_target_view_variable;
3045 static struct ID3D10EffectDepthStencilViewVariable * STDMETHODCALLTYPE d3d10_effect_variable_AsDepthStencilView(
3046 ID3D10EffectVariable *iface)
3048 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
3050 TRACE("iface %p\n", iface);
3052 if (This->vtbl == (const ID3D10EffectVariableVtbl *)&d3d10_effect_depth_stencil_view_variable_vtbl)
3053 return (ID3D10EffectDepthStencilViewVariable *)This;
3055 return (ID3D10EffectDepthStencilViewVariable *)&null_depth_stencil_view_variable;
3058 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_variable_AsConstantBuffer(
3059 ID3D10EffectVariable *iface)
3061 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
3063 TRACE("iface %p\n", iface);
3065 if (This->vtbl == (const ID3D10EffectVariableVtbl *)&d3d10_effect_constant_buffer_vtbl)
3066 return (ID3D10EffectConstantBuffer *)This;
3068 return (ID3D10EffectConstantBuffer *)&null_local_buffer;
3071 static struct ID3D10EffectShaderVariable * STDMETHODCALLTYPE d3d10_effect_variable_AsShader(
3072 ID3D10EffectVariable *iface)
3074 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
3076 TRACE("iface %p\n", iface);
3078 if (This->vtbl == (const ID3D10EffectVariableVtbl *)&d3d10_effect_shader_variable_vtbl)
3079 return (ID3D10EffectShaderVariable *)This;
3081 return (ID3D10EffectShaderVariable *)&null_shader_variable;
3084 static struct ID3D10EffectBlendVariable * STDMETHODCALLTYPE d3d10_effect_variable_AsBlend(ID3D10EffectVariable *iface)
3086 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
3088 TRACE("iface %p\n", iface);
3090 if (This->vtbl == (const ID3D10EffectVariableVtbl *)&d3d10_effect_blend_variable_vtbl)
3091 return (ID3D10EffectBlendVariable *)This;
3093 return (ID3D10EffectBlendVariable *)&null_blend_variable;
3096 static struct ID3D10EffectDepthStencilVariable * STDMETHODCALLTYPE d3d10_effect_variable_AsDepthStencil(
3097 ID3D10EffectVariable *iface)
3099 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
3101 TRACE("iface %p\n", iface);
3103 if (This->vtbl == (const ID3D10EffectVariableVtbl *)&d3d10_effect_depth_stencil_variable_vtbl)
3104 return (ID3D10EffectDepthStencilVariable *)This;
3106 return (ID3D10EffectDepthStencilVariable *)&null_depth_stencil_variable;
3109 static struct ID3D10EffectRasterizerVariable * STDMETHODCALLTYPE d3d10_effect_variable_AsRasterizer(
3110 ID3D10EffectVariable *iface)
3112 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
3114 TRACE("iface %p\n", iface);
3116 if (This->vtbl == (const ID3D10EffectVariableVtbl *)&d3d10_effect_rasterizer_variable_vtbl)
3117 return (ID3D10EffectRasterizerVariable *)This;
3119 return (ID3D10EffectRasterizerVariable *)&null_rasterizer_variable;
3122 static struct ID3D10EffectSamplerVariable * STDMETHODCALLTYPE d3d10_effect_variable_AsSampler(
3123 ID3D10EffectVariable *iface)
3125 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
3127 TRACE("iface %p\n", iface);
3129 if (This->vtbl == (const ID3D10EffectVariableVtbl *)&d3d10_effect_sampler_variable_vtbl)
3130 return (ID3D10EffectSamplerVariable *)This;
3132 return (ID3D10EffectSamplerVariable *)&null_sampler_variable;
3135 static HRESULT STDMETHODCALLTYPE d3d10_effect_variable_SetRawValue(ID3D10EffectVariable *iface,
3136 void *data, UINT offset, UINT count)
3138 FIXME("iface %p, data %p, offset %u, count %u stub!\n", iface, data, offset, count);
3140 return E_NOTIMPL;
3143 static HRESULT STDMETHODCALLTYPE d3d10_effect_variable_GetRawValue(ID3D10EffectVariable *iface,
3144 void *data, UINT offset, UINT count)
3146 FIXME("iface %p, data %p, offset %u, count %u stub!\n", iface, data, offset, count);
3148 return E_NOTIMPL;
3151 static const struct ID3D10EffectVariableVtbl d3d10_effect_variable_vtbl =
3153 /* ID3D10EffectVariable methods */
3154 d3d10_effect_variable_IsValid,
3155 d3d10_effect_variable_GetType,
3156 d3d10_effect_variable_GetDesc,
3157 d3d10_effect_variable_GetAnnotationByIndex,
3158 d3d10_effect_variable_GetAnnotationByName,
3159 d3d10_effect_variable_GetMemberByIndex,
3160 d3d10_effect_variable_GetMemberByName,
3161 d3d10_effect_variable_GetMemberBySemantic,
3162 d3d10_effect_variable_GetElement,
3163 d3d10_effect_variable_GetParentConstantBuffer,
3164 d3d10_effect_variable_AsScalar,
3165 d3d10_effect_variable_AsVector,
3166 d3d10_effect_variable_AsMatrix,
3167 d3d10_effect_variable_AsString,
3168 d3d10_effect_variable_AsShaderResource,
3169 d3d10_effect_variable_AsRenderTargetView,
3170 d3d10_effect_variable_AsDepthStencilView,
3171 d3d10_effect_variable_AsConstantBuffer,
3172 d3d10_effect_variable_AsShader,
3173 d3d10_effect_variable_AsBlend,
3174 d3d10_effect_variable_AsDepthStencil,
3175 d3d10_effect_variable_AsRasterizer,
3176 d3d10_effect_variable_AsSampler,
3177 d3d10_effect_variable_SetRawValue,
3178 d3d10_effect_variable_GetRawValue,
3181 /* ID3D10EffectVariable methods */
3182 static BOOL STDMETHODCALLTYPE d3d10_effect_constant_buffer_IsValid(ID3D10EffectConstantBuffer *iface)
3184 TRACE("iface %p\n", iface);
3186 return (struct d3d10_effect_variable *)iface != &null_local_buffer;
3189 static struct ID3D10EffectType * STDMETHODCALLTYPE d3d10_effect_constant_buffer_GetType(ID3D10EffectConstantBuffer *iface)
3191 return d3d10_effect_variable_GetType((ID3D10EffectVariable *)iface);
3194 static HRESULT STDMETHODCALLTYPE d3d10_effect_constant_buffer_GetDesc(ID3D10EffectConstantBuffer *iface,
3195 D3D10_EFFECT_VARIABLE_DESC *desc)
3197 return d3d10_effect_variable_GetDesc((ID3D10EffectVariable *)iface, desc);
3200 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_constant_buffer_GetAnnotationByIndex(
3201 ID3D10EffectConstantBuffer *iface, UINT index)
3203 return d3d10_effect_variable_GetAnnotationByIndex((ID3D10EffectVariable *)iface, index);
3206 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_constant_buffer_GetAnnotationByName(
3207 ID3D10EffectConstantBuffer *iface, LPCSTR name)
3209 return d3d10_effect_variable_GetAnnotationByName((ID3D10EffectVariable *)iface, name);
3212 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_constant_buffer_GetMemberByIndex(
3213 ID3D10EffectConstantBuffer *iface, UINT index)
3215 return d3d10_effect_variable_GetMemberByIndex((ID3D10EffectVariable *)iface, index);
3218 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_constant_buffer_GetMemberByName(
3219 ID3D10EffectConstantBuffer *iface, LPCSTR name)
3221 return d3d10_effect_variable_GetMemberByName((ID3D10EffectVariable *)iface, name);
3224 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_constant_buffer_GetMemberBySemantic(
3225 ID3D10EffectConstantBuffer *iface, LPCSTR semantic)
3227 return d3d10_effect_variable_GetMemberBySemantic((ID3D10EffectVariable *)iface, semantic);
3230 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_constant_buffer_GetElement(
3231 ID3D10EffectConstantBuffer *iface, UINT index)
3233 return d3d10_effect_variable_GetElement((ID3D10EffectVariable *)iface, index);
3236 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_constant_buffer_GetParentConstantBuffer(
3237 ID3D10EffectConstantBuffer *iface)
3239 return d3d10_effect_variable_GetParentConstantBuffer((ID3D10EffectVariable *)iface);
3242 static struct ID3D10EffectScalarVariable * STDMETHODCALLTYPE d3d10_effect_constant_buffer_AsScalar(
3243 ID3D10EffectConstantBuffer *iface)
3245 return d3d10_effect_variable_AsScalar((ID3D10EffectVariable *)iface);
3248 static struct ID3D10EffectVectorVariable * STDMETHODCALLTYPE d3d10_effect_constant_buffer_AsVector(
3249 ID3D10EffectConstantBuffer *iface)
3251 return d3d10_effect_variable_AsVector((ID3D10EffectVariable *)iface);
3254 static struct ID3D10EffectMatrixVariable * STDMETHODCALLTYPE d3d10_effect_constant_buffer_AsMatrix(
3255 ID3D10EffectConstantBuffer *iface)
3257 return d3d10_effect_variable_AsMatrix((ID3D10EffectVariable *)iface);
3260 static struct ID3D10EffectStringVariable * STDMETHODCALLTYPE d3d10_effect_constant_buffer_AsString(
3261 ID3D10EffectConstantBuffer *iface)
3263 return d3d10_effect_variable_AsString((ID3D10EffectVariable *)iface);
3266 static struct ID3D10EffectShaderResourceVariable * STDMETHODCALLTYPE d3d10_effect_constant_buffer_AsShaderResource(
3267 ID3D10EffectConstantBuffer *iface)
3269 return d3d10_effect_variable_AsShaderResource((ID3D10EffectVariable *)iface);
3272 static struct ID3D10EffectRenderTargetViewVariable * STDMETHODCALLTYPE d3d10_effect_constant_buffer_AsRenderTargetView(
3273 ID3D10EffectConstantBuffer *iface)
3275 return d3d10_effect_variable_AsRenderTargetView((ID3D10EffectVariable *)iface);
3278 static struct ID3D10EffectDepthStencilViewVariable * STDMETHODCALLTYPE d3d10_effect_constant_buffer_AsDepthStencilView(
3279 ID3D10EffectConstantBuffer *iface)
3281 return d3d10_effect_variable_AsDepthStencilView((ID3D10EffectVariable *)iface);
3284 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_constant_buffer_AsConstantBuffer(
3285 ID3D10EffectConstantBuffer *iface)
3287 return d3d10_effect_variable_AsConstantBuffer((ID3D10EffectVariable *)iface);
3290 static struct ID3D10EffectShaderVariable * STDMETHODCALLTYPE d3d10_effect_constant_buffer_AsShader(
3291 ID3D10EffectConstantBuffer *iface)
3293 return d3d10_effect_variable_AsShader((ID3D10EffectVariable *)iface);
3296 static struct ID3D10EffectBlendVariable * STDMETHODCALLTYPE d3d10_effect_constant_buffer_AsBlend(ID3D10EffectConstantBuffer *iface)
3298 return d3d10_effect_variable_AsBlend((ID3D10EffectVariable *)iface);
3301 static struct ID3D10EffectDepthStencilVariable * STDMETHODCALLTYPE d3d10_effect_constant_buffer_AsDepthStencil(
3302 ID3D10EffectConstantBuffer *iface)
3304 return d3d10_effect_variable_AsDepthStencil((ID3D10EffectVariable *)iface);
3307 static struct ID3D10EffectRasterizerVariable * STDMETHODCALLTYPE d3d10_effect_constant_buffer_AsRasterizer(
3308 ID3D10EffectConstantBuffer *iface)
3310 return d3d10_effect_variable_AsRasterizer((ID3D10EffectVariable *)iface);
3313 static struct ID3D10EffectSamplerVariable * STDMETHODCALLTYPE d3d10_effect_constant_buffer_AsSampler(
3314 ID3D10EffectConstantBuffer *iface)
3316 return d3d10_effect_variable_AsSampler((ID3D10EffectVariable *)iface);
3319 static HRESULT STDMETHODCALLTYPE d3d10_effect_constant_buffer_SetRawValue(ID3D10EffectConstantBuffer *iface,
3320 void *data, UINT offset, UINT count)
3322 return d3d10_effect_variable_SetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
3325 static HRESULT STDMETHODCALLTYPE d3d10_effect_constant_buffer_GetRawValue(ID3D10EffectConstantBuffer *iface,
3326 void *data, UINT offset, UINT count)
3328 return d3d10_effect_variable_GetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
3331 /* ID3D10EffectConstantBuffer methods */
3332 static HRESULT STDMETHODCALLTYPE d3d10_effect_constant_buffer_SetConstantBuffer(ID3D10EffectConstantBuffer *iface,
3333 ID3D10Buffer *buffer)
3335 FIXME("iface %p, buffer %p stub!\n", iface, buffer);
3337 return E_NOTIMPL;
3340 static HRESULT STDMETHODCALLTYPE d3d10_effect_constant_buffer_GetConstantBuffer(ID3D10EffectConstantBuffer *iface,
3341 ID3D10Buffer **buffer)
3343 FIXME("iface %p, buffer %p stub!\n", iface, buffer);
3345 return E_NOTIMPL;
3348 static HRESULT STDMETHODCALLTYPE d3d10_effect_constant_buffer_SetTextureBuffer(ID3D10EffectConstantBuffer *iface,
3349 ID3D10ShaderResourceView *view)
3351 FIXME("iface %p, view %p stub!\n", iface, view);
3353 return E_NOTIMPL;
3356 static HRESULT STDMETHODCALLTYPE d3d10_effect_constant_buffer_GetTextureBuffer(ID3D10EffectConstantBuffer *iface,
3357 ID3D10ShaderResourceView **view)
3359 FIXME("iface %p, view %p stub!\n", iface, view);
3361 return E_NOTIMPL;
3364 static const struct ID3D10EffectConstantBufferVtbl d3d10_effect_constant_buffer_vtbl =
3366 /* ID3D10EffectVariable methods */
3367 d3d10_effect_constant_buffer_IsValid,
3368 d3d10_effect_constant_buffer_GetType,
3369 d3d10_effect_constant_buffer_GetDesc,
3370 d3d10_effect_constant_buffer_GetAnnotationByIndex,
3371 d3d10_effect_constant_buffer_GetAnnotationByName,
3372 d3d10_effect_constant_buffer_GetMemberByIndex,
3373 d3d10_effect_constant_buffer_GetMemberByName,
3374 d3d10_effect_constant_buffer_GetMemberBySemantic,
3375 d3d10_effect_constant_buffer_GetElement,
3376 d3d10_effect_constant_buffer_GetParentConstantBuffer,
3377 d3d10_effect_constant_buffer_AsScalar,
3378 d3d10_effect_constant_buffer_AsVector,
3379 d3d10_effect_constant_buffer_AsMatrix,
3380 d3d10_effect_constant_buffer_AsString,
3381 d3d10_effect_constant_buffer_AsShaderResource,
3382 d3d10_effect_constant_buffer_AsRenderTargetView,
3383 d3d10_effect_constant_buffer_AsDepthStencilView,
3384 d3d10_effect_constant_buffer_AsConstantBuffer,
3385 d3d10_effect_constant_buffer_AsShader,
3386 d3d10_effect_constant_buffer_AsBlend,
3387 d3d10_effect_constant_buffer_AsDepthStencil,
3388 d3d10_effect_constant_buffer_AsRasterizer,
3389 d3d10_effect_constant_buffer_AsSampler,
3390 d3d10_effect_constant_buffer_SetRawValue,
3391 d3d10_effect_constant_buffer_GetRawValue,
3392 /* ID3D10EffectConstantBuffer methods */
3393 d3d10_effect_constant_buffer_SetConstantBuffer,
3394 d3d10_effect_constant_buffer_GetConstantBuffer,
3395 d3d10_effect_constant_buffer_SetTextureBuffer,
3396 d3d10_effect_constant_buffer_GetTextureBuffer,
3399 /* ID3D10EffectVariable methods */
3401 static BOOL STDMETHODCALLTYPE d3d10_effect_scalar_variable_IsValid(ID3D10EffectScalarVariable *iface)
3403 TRACE("iface %p\n", iface);
3405 return (struct d3d10_effect_variable *)iface != &null_scalar_variable;
3408 static struct ID3D10EffectType * STDMETHODCALLTYPE d3d10_effect_scalar_variable_GetType(
3409 ID3D10EffectScalarVariable *iface)
3411 return d3d10_effect_variable_GetType((ID3D10EffectVariable *)iface);
3414 static HRESULT STDMETHODCALLTYPE d3d10_effect_scalar_variable_GetDesc(ID3D10EffectScalarVariable *iface,
3415 D3D10_EFFECT_VARIABLE_DESC *desc)
3417 return d3d10_effect_variable_GetDesc((ID3D10EffectVariable *)iface, desc);
3420 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_scalar_variable_GetAnnotationByIndex(
3421 ID3D10EffectScalarVariable *iface, UINT index)
3423 return d3d10_effect_variable_GetAnnotationByIndex((ID3D10EffectVariable *)iface, index);
3426 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_scalar_variable_GetAnnotationByName(
3427 ID3D10EffectScalarVariable *iface, LPCSTR name)
3429 return d3d10_effect_variable_GetAnnotationByName((ID3D10EffectVariable *)iface, name);
3432 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_scalar_variable_GetMemberByIndex(
3433 ID3D10EffectScalarVariable *iface, UINT index)
3435 return d3d10_effect_variable_GetMemberByIndex((ID3D10EffectVariable *)iface, index);
3438 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_scalar_variable_GetMemberByName(
3439 ID3D10EffectScalarVariable *iface, LPCSTR name)
3441 return d3d10_effect_variable_GetMemberByName((ID3D10EffectVariable *)iface, name);
3444 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_scalar_variable_GetMemberBySemantic(
3445 ID3D10EffectScalarVariable *iface, LPCSTR semantic)
3447 return d3d10_effect_variable_GetMemberBySemantic((ID3D10EffectVariable *)iface, semantic);
3450 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_scalar_variable_GetElement(
3451 ID3D10EffectScalarVariable *iface, UINT index)
3453 return d3d10_effect_variable_GetElement((ID3D10EffectVariable *)iface, index);
3456 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_scalar_variable_GetParentConstantBuffer(
3457 ID3D10EffectScalarVariable *iface)
3459 return d3d10_effect_variable_GetParentConstantBuffer((ID3D10EffectVariable *)iface);
3462 static struct ID3D10EffectScalarVariable * STDMETHODCALLTYPE d3d10_effect_scalar_variable_AsScalar(
3463 ID3D10EffectScalarVariable *iface)
3465 return d3d10_effect_variable_AsScalar((ID3D10EffectVariable *)iface);
3468 static struct ID3D10EffectVectorVariable * STDMETHODCALLTYPE d3d10_effect_scalar_variable_AsVector(
3469 ID3D10EffectScalarVariable *iface)
3471 return d3d10_effect_variable_AsVector((ID3D10EffectVariable *)iface);
3474 static struct ID3D10EffectMatrixVariable * STDMETHODCALLTYPE d3d10_effect_scalar_variable_AsMatrix(
3475 ID3D10EffectScalarVariable *iface)
3477 return d3d10_effect_variable_AsMatrix((ID3D10EffectVariable *)iface);
3480 static struct ID3D10EffectStringVariable * STDMETHODCALLTYPE d3d10_effect_scalar_variable_AsString(
3481 ID3D10EffectScalarVariable *iface)
3483 return d3d10_effect_variable_AsString((ID3D10EffectVariable *)iface);
3486 static struct ID3D10EffectShaderResourceVariable * STDMETHODCALLTYPE d3d10_effect_scalar_variable_AsShaderResource(
3487 ID3D10EffectScalarVariable *iface)
3489 return d3d10_effect_variable_AsShaderResource((ID3D10EffectVariable *)iface);
3492 static struct ID3D10EffectRenderTargetViewVariable * STDMETHODCALLTYPE d3d10_effect_scalar_variable_AsRenderTargetView(
3493 ID3D10EffectScalarVariable *iface)
3495 return d3d10_effect_variable_AsRenderTargetView((ID3D10EffectVariable *)iface);
3498 static struct ID3D10EffectDepthStencilViewVariable * STDMETHODCALLTYPE d3d10_effect_scalar_variable_AsDepthStencilView(
3499 ID3D10EffectScalarVariable *iface)
3501 return d3d10_effect_variable_AsDepthStencilView((ID3D10EffectVariable *)iface);
3504 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_scalar_variable_AsConstantBuffer(
3505 ID3D10EffectScalarVariable *iface)
3507 return d3d10_effect_variable_AsConstantBuffer((ID3D10EffectVariable *)iface);
3510 static struct ID3D10EffectShaderVariable * STDMETHODCALLTYPE d3d10_effect_scalar_variable_AsShader(
3511 ID3D10EffectScalarVariable *iface)
3513 return d3d10_effect_variable_AsShader((ID3D10EffectVariable *)iface);
3516 static struct ID3D10EffectBlendVariable * STDMETHODCALLTYPE d3d10_effect_scalar_variable_AsBlend(
3517 ID3D10EffectScalarVariable *iface)
3519 return d3d10_effect_variable_AsBlend((ID3D10EffectVariable *)iface);
3522 static struct ID3D10EffectDepthStencilVariable * STDMETHODCALLTYPE d3d10_effect_scalar_variable_AsDepthStencil(
3523 ID3D10EffectScalarVariable *iface)
3525 return d3d10_effect_variable_AsDepthStencil((ID3D10EffectVariable *)iface);
3528 static struct ID3D10EffectRasterizerVariable * STDMETHODCALLTYPE d3d10_effect_scalar_variable_AsRasterizer(
3529 ID3D10EffectScalarVariable *iface)
3531 return d3d10_effect_variable_AsRasterizer((ID3D10EffectVariable *)iface);
3534 static struct ID3D10EffectSamplerVariable * STDMETHODCALLTYPE d3d10_effect_scalar_variable_AsSampler(
3535 ID3D10EffectScalarVariable *iface)
3537 return d3d10_effect_variable_AsSampler((ID3D10EffectVariable *)iface);
3540 static HRESULT STDMETHODCALLTYPE d3d10_effect_scalar_variable_SetRawValue(ID3D10EffectScalarVariable *iface,
3541 void *data, UINT offset, UINT count)
3543 return d3d10_effect_variable_SetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
3546 static HRESULT STDMETHODCALLTYPE d3d10_effect_scalar_variable_GetRawValue(ID3D10EffectScalarVariable *iface,
3547 void *data, UINT offset, UINT count)
3549 return d3d10_effect_variable_GetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
3552 /* ID3D10EffectScalarVariable methods */
3554 static HRESULT STDMETHODCALLTYPE d3d10_effect_scalar_variable_SetFloat(ID3D10EffectScalarVariable *iface,
3555 float value)
3557 FIXME("iface %p, value %.8e stub!\n", iface, value);
3559 return E_NOTIMPL;
3562 static HRESULT STDMETHODCALLTYPE d3d10_effect_scalar_variable_GetFloat(ID3D10EffectScalarVariable *iface,
3563 float *value)
3565 FIXME("iface %p, value %p stub!\n", iface, value);
3567 return E_NOTIMPL;
3570 static HRESULT STDMETHODCALLTYPE d3d10_effect_scalar_variable_SetFloatArray(ID3D10EffectScalarVariable *iface,
3571 float *values, UINT offset, UINT count)
3573 FIXME("iface %p, values %p, offset %u, count %u stub!\n", iface, values, offset, count);
3575 return E_NOTIMPL;
3578 static HRESULT STDMETHODCALLTYPE d3d10_effect_scalar_variable_GetFloatArray(ID3D10EffectScalarVariable *iface,
3579 float *values, UINT offset, UINT count)
3581 FIXME("iface %p, values %p, offset %u, count %u stub!\n", iface, values, offset, count);
3583 return E_NOTIMPL;
3586 static HRESULT STDMETHODCALLTYPE d3d10_effect_scalar_variable_SetInt(ID3D10EffectScalarVariable *iface,
3587 int value)
3589 FIXME("iface %p, value %d stub!\n", iface, value);
3591 return E_NOTIMPL;
3594 static HRESULT STDMETHODCALLTYPE d3d10_effect_scalar_variable_GetInt(ID3D10EffectScalarVariable *iface,
3595 int *value)
3597 FIXME("iface %p, value %p stub!\n", iface, value);
3599 return E_NOTIMPL;
3602 static HRESULT STDMETHODCALLTYPE d3d10_effect_scalar_variable_SetIntArray(ID3D10EffectScalarVariable *iface,
3603 int *values, UINT offset, UINT count)
3605 FIXME("iface %p, values %p, offset %u, count %u stub!\n", iface, values, offset, count);
3607 return E_NOTIMPL;
3610 static HRESULT STDMETHODCALLTYPE d3d10_effect_scalar_variable_GetIntArray(ID3D10EffectScalarVariable *iface,
3611 int *values, UINT offset, UINT count)
3613 FIXME("iface %p, values %p, offset %u, count %u stub!\n", iface, values, offset, count);
3615 return E_NOTIMPL;
3618 static HRESULT STDMETHODCALLTYPE d3d10_effect_scalar_variable_SetBool(ID3D10EffectScalarVariable *iface,
3619 BOOL value)
3621 FIXME("iface %p, value %d stub!\n", iface, value);
3623 return E_NOTIMPL;
3626 static HRESULT STDMETHODCALLTYPE d3d10_effect_scalar_variable_GetBool(ID3D10EffectScalarVariable *iface,
3627 BOOL *value)
3629 FIXME("iface %p, value %p stub!\n", iface, value);
3631 return E_NOTIMPL;
3634 static HRESULT STDMETHODCALLTYPE d3d10_effect_scalar_variable_SetBoolArray(ID3D10EffectScalarVariable *iface,
3635 BOOL *values, UINT offset, UINT count)
3637 FIXME("iface %p, values %p, offset %u, count %u stub!\n", iface, values, offset, count);
3639 return E_NOTIMPL;
3642 static HRESULT STDMETHODCALLTYPE d3d10_effect_scalar_variable_GetBoolArray(ID3D10EffectScalarVariable *iface,
3643 BOOL *values, UINT offset, UINT count)
3645 FIXME("iface %p, values %p, offset %u, count %u stub!\n", iface, values, offset, count);
3647 return E_NOTIMPL;
3650 static const struct ID3D10EffectScalarVariableVtbl d3d10_effect_scalar_variable_vtbl =
3652 /* ID3D10EffectVariable methods */
3653 d3d10_effect_scalar_variable_IsValid,
3654 d3d10_effect_scalar_variable_GetType,
3655 d3d10_effect_scalar_variable_GetDesc,
3656 d3d10_effect_scalar_variable_GetAnnotationByIndex,
3657 d3d10_effect_scalar_variable_GetAnnotationByName,
3658 d3d10_effect_scalar_variable_GetMemberByIndex,
3659 d3d10_effect_scalar_variable_GetMemberByName,
3660 d3d10_effect_scalar_variable_GetMemberBySemantic,
3661 d3d10_effect_scalar_variable_GetElement,
3662 d3d10_effect_scalar_variable_GetParentConstantBuffer,
3663 d3d10_effect_scalar_variable_AsScalar,
3664 d3d10_effect_scalar_variable_AsVector,
3665 d3d10_effect_scalar_variable_AsMatrix,
3666 d3d10_effect_scalar_variable_AsString,
3667 d3d10_effect_scalar_variable_AsShaderResource,
3668 d3d10_effect_scalar_variable_AsRenderTargetView,
3669 d3d10_effect_scalar_variable_AsDepthStencilView,
3670 d3d10_effect_scalar_variable_AsConstantBuffer,
3671 d3d10_effect_scalar_variable_AsShader,
3672 d3d10_effect_scalar_variable_AsBlend,
3673 d3d10_effect_scalar_variable_AsDepthStencil,
3674 d3d10_effect_scalar_variable_AsRasterizer,
3675 d3d10_effect_scalar_variable_AsSampler,
3676 d3d10_effect_scalar_variable_SetRawValue,
3677 d3d10_effect_scalar_variable_GetRawValue,
3678 /* ID3D10EffectScalarVariable methods */
3679 d3d10_effect_scalar_variable_SetFloat,
3680 d3d10_effect_scalar_variable_GetFloat,
3681 d3d10_effect_scalar_variable_SetFloatArray,
3682 d3d10_effect_scalar_variable_GetFloatArray,
3683 d3d10_effect_scalar_variable_SetInt,
3684 d3d10_effect_scalar_variable_GetInt,
3685 d3d10_effect_scalar_variable_SetIntArray,
3686 d3d10_effect_scalar_variable_GetIntArray,
3687 d3d10_effect_scalar_variable_SetBool,
3688 d3d10_effect_scalar_variable_GetBool,
3689 d3d10_effect_scalar_variable_SetBoolArray,
3690 d3d10_effect_scalar_variable_GetBoolArray,
3693 /* ID3D10EffectVariable methods */
3695 static BOOL STDMETHODCALLTYPE d3d10_effect_vector_variable_IsValid(ID3D10EffectVectorVariable *iface)
3697 TRACE("iface %p\n", iface);
3699 return (struct d3d10_effect_variable *)iface != &null_vector_variable;
3702 static struct ID3D10EffectType * STDMETHODCALLTYPE d3d10_effect_vector_variable_GetType(
3703 ID3D10EffectVectorVariable *iface)
3705 return d3d10_effect_variable_GetType((ID3D10EffectVariable *)iface);
3708 static HRESULT STDMETHODCALLTYPE d3d10_effect_vector_variable_GetDesc(ID3D10EffectVectorVariable *iface,
3709 D3D10_EFFECT_VARIABLE_DESC *desc)
3711 return d3d10_effect_variable_GetDesc((ID3D10EffectVariable *)iface, desc);
3714 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_vector_variable_GetAnnotationByIndex(
3715 ID3D10EffectVectorVariable *iface, UINT index)
3717 return d3d10_effect_variable_GetAnnotationByIndex((ID3D10EffectVariable *)iface, index);
3720 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_vector_variable_GetAnnotationByName(
3721 ID3D10EffectVectorVariable *iface, LPCSTR name)
3723 return d3d10_effect_variable_GetAnnotationByName((ID3D10EffectVariable *)iface, name);
3726 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_vector_variable_GetMemberByIndex(
3727 ID3D10EffectVectorVariable *iface, UINT index)
3729 return d3d10_effect_variable_GetMemberByIndex((ID3D10EffectVariable *)iface, index);
3732 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_vector_variable_GetMemberByName(
3733 ID3D10EffectVectorVariable *iface, LPCSTR name)
3735 return d3d10_effect_variable_GetMemberByName((ID3D10EffectVariable *)iface, name);
3738 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_vector_variable_GetMemberBySemantic(
3739 ID3D10EffectVectorVariable *iface, LPCSTR semantic)
3741 return d3d10_effect_variable_GetMemberBySemantic((ID3D10EffectVariable *)iface, semantic);
3744 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_vector_variable_GetElement(
3745 ID3D10EffectVectorVariable *iface, UINT index)
3747 return d3d10_effect_variable_GetElement((ID3D10EffectVariable *)iface, index);
3750 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_vector_variable_GetParentConstantBuffer(
3751 ID3D10EffectVectorVariable *iface)
3753 return d3d10_effect_variable_GetParentConstantBuffer((ID3D10EffectVariable *)iface);
3756 static struct ID3D10EffectScalarVariable * STDMETHODCALLTYPE d3d10_effect_vector_variable_AsScalar(
3757 ID3D10EffectVectorVariable *iface)
3759 return d3d10_effect_variable_AsScalar((ID3D10EffectVariable *)iface);
3762 static struct ID3D10EffectVectorVariable * STDMETHODCALLTYPE d3d10_effect_vector_variable_AsVector(
3763 ID3D10EffectVectorVariable *iface)
3765 return d3d10_effect_variable_AsVector((ID3D10EffectVariable *)iface);
3768 static struct ID3D10EffectMatrixVariable * STDMETHODCALLTYPE d3d10_effect_vector_variable_AsMatrix(
3769 ID3D10EffectVectorVariable *iface)
3771 return d3d10_effect_variable_AsMatrix((ID3D10EffectVariable *)iface);
3774 static struct ID3D10EffectStringVariable * STDMETHODCALLTYPE d3d10_effect_vector_variable_AsString(
3775 ID3D10EffectVectorVariable *iface)
3777 return d3d10_effect_variable_AsString((ID3D10EffectVariable *)iface);
3780 static struct ID3D10EffectShaderResourceVariable * STDMETHODCALLTYPE d3d10_effect_vector_variable_AsShaderResource(
3781 ID3D10EffectVectorVariable *iface)
3783 return d3d10_effect_variable_AsShaderResource((ID3D10EffectVariable *)iface);
3786 static struct ID3D10EffectRenderTargetViewVariable * STDMETHODCALLTYPE d3d10_effect_vector_variable_AsRenderTargetView(
3787 ID3D10EffectVectorVariable *iface)
3789 return d3d10_effect_variable_AsRenderTargetView((ID3D10EffectVariable *)iface);
3792 static struct ID3D10EffectDepthStencilViewVariable * STDMETHODCALLTYPE d3d10_effect_vector_variable_AsDepthStencilView(
3793 ID3D10EffectVectorVariable *iface)
3795 return d3d10_effect_variable_AsDepthStencilView((ID3D10EffectVariable *)iface);
3798 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_vector_variable_AsConstantBuffer(
3799 ID3D10EffectVectorVariable *iface)
3801 return d3d10_effect_variable_AsConstantBuffer((ID3D10EffectVariable *)iface);
3804 static struct ID3D10EffectShaderVariable * STDMETHODCALLTYPE d3d10_effect_vector_variable_AsShader(
3805 ID3D10EffectVectorVariable *iface)
3807 return d3d10_effect_variable_AsShader((ID3D10EffectVariable *)iface);
3810 static struct ID3D10EffectBlendVariable * STDMETHODCALLTYPE d3d10_effect_vector_variable_AsBlend(
3811 ID3D10EffectVectorVariable *iface)
3813 return d3d10_effect_variable_AsBlend((ID3D10EffectVariable *)iface);
3816 static struct ID3D10EffectDepthStencilVariable * STDMETHODCALLTYPE d3d10_effect_vector_variable_AsDepthStencil(
3817 ID3D10EffectVectorVariable *iface)
3819 return d3d10_effect_variable_AsDepthStencil((ID3D10EffectVariable *)iface);
3822 static struct ID3D10EffectRasterizerVariable * STDMETHODCALLTYPE d3d10_effect_vector_variable_AsRasterizer(
3823 ID3D10EffectVectorVariable *iface)
3825 return d3d10_effect_variable_AsRasterizer((ID3D10EffectVariable *)iface);
3828 static struct ID3D10EffectSamplerVariable * STDMETHODCALLTYPE d3d10_effect_vector_variable_AsSampler(
3829 ID3D10EffectVectorVariable *iface)
3831 return d3d10_effect_variable_AsSampler((ID3D10EffectVariable *)iface);
3834 static HRESULT STDMETHODCALLTYPE d3d10_effect_vector_variable_SetRawValue(ID3D10EffectVectorVariable *iface,
3835 void *data, UINT offset, UINT count)
3837 return d3d10_effect_variable_SetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
3840 static HRESULT STDMETHODCALLTYPE d3d10_effect_vector_variable_GetRawValue(ID3D10EffectVectorVariable *iface,
3841 void *data, UINT offset, UINT count)
3843 return d3d10_effect_variable_GetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
3846 /* ID3D10EffectVectorVariable methods */
3848 static HRESULT STDMETHODCALLTYPE d3d10_effect_vector_variable_SetBoolVector(ID3D10EffectVectorVariable *iface,
3849 BOOL *value)
3851 FIXME("iface %p, value %p stub!\n", iface, value);
3853 return E_NOTIMPL;
3856 static HRESULT STDMETHODCALLTYPE d3d10_effect_vector_variable_SetIntVector(ID3D10EffectVectorVariable *iface,
3857 int *value)
3859 FIXME("iface %p, value %p stub!\n", iface, value);
3861 return E_NOTIMPL;
3864 static HRESULT STDMETHODCALLTYPE d3d10_effect_vector_variable_SetFloatVector(ID3D10EffectVectorVariable *iface,
3865 float *value)
3867 FIXME("iface %p, value %p stub!\n", iface, value);
3869 return E_NOTIMPL;
3872 static HRESULT STDMETHODCALLTYPE d3d10_effect_vector_variable_GetBoolVector(ID3D10EffectVectorVariable *iface,
3873 BOOL *value)
3875 FIXME("iface %p, value %p stub!\n", iface, value);
3877 return E_NOTIMPL;
3880 static HRESULT STDMETHODCALLTYPE d3d10_effect_vector_variable_GetIntVector(ID3D10EffectVectorVariable *iface,
3881 int *value)
3883 FIXME("iface %p, value %p stub!\n", iface, value);
3885 return E_NOTIMPL;
3888 static HRESULT STDMETHODCALLTYPE d3d10_effect_vector_variable_GetFloatVector(ID3D10EffectVectorVariable *iface,
3889 float *value)
3891 FIXME("iface %p, value %p stub!\n", iface, value);
3893 return E_NOTIMPL;
3896 static HRESULT STDMETHODCALLTYPE d3d10_effect_vector_variable_SetBoolVectorArray(ID3D10EffectVectorVariable *iface,
3897 BOOL *values, UINT offset, UINT count)
3899 FIXME("iface %p, values %p, offset %u, count %u stub!\n", iface, values, offset, count);
3901 return E_NOTIMPL;
3904 static HRESULT STDMETHODCALLTYPE d3d10_effect_vector_variable_SetIntVectorArray(ID3D10EffectVectorVariable *iface,
3905 int *values, UINT offset, UINT count)
3907 FIXME("iface %p, values %p, offset %u, count %u stub!\n", iface, values, offset, count);
3909 return E_NOTIMPL;
3912 static HRESULT STDMETHODCALLTYPE d3d10_effect_vector_variable_SetFloatVectorArray(ID3D10EffectVectorVariable *iface,
3913 float *values, UINT offset, UINT count)
3915 FIXME("iface %p, values %p, offset %u, count %u stub!\n", iface, values, offset, count);
3917 return E_NOTIMPL;
3920 static HRESULT STDMETHODCALLTYPE d3d10_effect_vector_variable_GetBoolVectorArray(ID3D10EffectVectorVariable *iface,
3921 BOOL *values, UINT offset, UINT count)
3923 FIXME("iface %p, values %p, offset %u, count %u stub!\n", iface, values, offset, count);
3925 return E_NOTIMPL;
3928 static HRESULT STDMETHODCALLTYPE d3d10_effect_vector_variable_GetIntVectorArray(ID3D10EffectVectorVariable *iface,
3929 int *values, UINT offset, UINT count)
3931 FIXME("iface %p, values %p, offset %u, count %u stub!\n", iface, values, offset, count);
3933 return E_NOTIMPL;
3936 static HRESULT STDMETHODCALLTYPE d3d10_effect_vector_variable_GetFloatVectorArray(ID3D10EffectVectorVariable *iface,
3937 float *values, UINT offset, UINT count)
3939 FIXME("iface %p, values %p, offset %u, count %u stub!\n", iface, values, offset, count);
3941 return E_NOTIMPL;
3944 static const struct ID3D10EffectVectorVariableVtbl d3d10_effect_vector_variable_vtbl =
3946 /* ID3D10EffectVariable methods */
3947 d3d10_effect_vector_variable_IsValid,
3948 d3d10_effect_vector_variable_GetType,
3949 d3d10_effect_vector_variable_GetDesc,
3950 d3d10_effect_vector_variable_GetAnnotationByIndex,
3951 d3d10_effect_vector_variable_GetAnnotationByName,
3952 d3d10_effect_vector_variable_GetMemberByIndex,
3953 d3d10_effect_vector_variable_GetMemberByName,
3954 d3d10_effect_vector_variable_GetMemberBySemantic,
3955 d3d10_effect_vector_variable_GetElement,
3956 d3d10_effect_vector_variable_GetParentConstantBuffer,
3957 d3d10_effect_vector_variable_AsScalar,
3958 d3d10_effect_vector_variable_AsVector,
3959 d3d10_effect_vector_variable_AsMatrix,
3960 d3d10_effect_vector_variable_AsString,
3961 d3d10_effect_vector_variable_AsShaderResource,
3962 d3d10_effect_vector_variable_AsRenderTargetView,
3963 d3d10_effect_vector_variable_AsDepthStencilView,
3964 d3d10_effect_vector_variable_AsConstantBuffer,
3965 d3d10_effect_vector_variable_AsShader,
3966 d3d10_effect_vector_variable_AsBlend,
3967 d3d10_effect_vector_variable_AsDepthStencil,
3968 d3d10_effect_vector_variable_AsRasterizer,
3969 d3d10_effect_vector_variable_AsSampler,
3970 d3d10_effect_vector_variable_SetRawValue,
3971 d3d10_effect_vector_variable_GetRawValue,
3972 /* ID3D10EffectVectorVariable methods */
3973 d3d10_effect_vector_variable_SetBoolVector,
3974 d3d10_effect_vector_variable_SetIntVector,
3975 d3d10_effect_vector_variable_SetFloatVector,
3976 d3d10_effect_vector_variable_GetBoolVector,
3977 d3d10_effect_vector_variable_GetIntVector,
3978 d3d10_effect_vector_variable_GetFloatVector,
3979 d3d10_effect_vector_variable_SetBoolVectorArray,
3980 d3d10_effect_vector_variable_SetIntVectorArray,
3981 d3d10_effect_vector_variable_SetFloatVectorArray,
3982 d3d10_effect_vector_variable_GetBoolVectorArray,
3983 d3d10_effect_vector_variable_GetIntVectorArray,
3984 d3d10_effect_vector_variable_GetFloatVectorArray,
3987 /* ID3D10EffectVariable methods */
3989 static BOOL STDMETHODCALLTYPE d3d10_effect_matrix_variable_IsValid(ID3D10EffectMatrixVariable *iface)
3991 TRACE("iface %p\n", iface);
3993 return (struct d3d10_effect_variable *)iface != &null_matrix_variable;
3996 static struct ID3D10EffectType * STDMETHODCALLTYPE d3d10_effect_matrix_variable_GetType(
3997 ID3D10EffectMatrixVariable *iface)
3999 return d3d10_effect_variable_GetType((ID3D10EffectVariable *)iface);
4002 static HRESULT STDMETHODCALLTYPE d3d10_effect_matrix_variable_GetDesc(ID3D10EffectMatrixVariable *iface,
4003 D3D10_EFFECT_VARIABLE_DESC *desc)
4005 return d3d10_effect_variable_GetDesc((ID3D10EffectVariable *)iface, desc);
4008 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_matrix_variable_GetAnnotationByIndex(
4009 ID3D10EffectMatrixVariable *iface, UINT index)
4011 return d3d10_effect_variable_GetAnnotationByIndex((ID3D10EffectVariable *)iface, index);
4014 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_matrix_variable_GetAnnotationByName(
4015 ID3D10EffectMatrixVariable *iface, LPCSTR name)
4017 return d3d10_effect_variable_GetAnnotationByName((ID3D10EffectVariable *)iface, name);
4020 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_matrix_variable_GetMemberByIndex(
4021 ID3D10EffectMatrixVariable *iface, UINT index)
4023 return d3d10_effect_variable_GetMemberByIndex((ID3D10EffectVariable *)iface, index);
4026 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_matrix_variable_GetMemberByName(
4027 ID3D10EffectMatrixVariable *iface, LPCSTR name)
4029 return d3d10_effect_variable_GetMemberByName((ID3D10EffectVariable *)iface, name);
4032 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_matrix_variable_GetMemberBySemantic(
4033 ID3D10EffectMatrixVariable *iface, LPCSTR semantic)
4035 return d3d10_effect_variable_GetMemberBySemantic((ID3D10EffectVariable *)iface, semantic);
4038 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_matrix_variable_GetElement(
4039 ID3D10EffectMatrixVariable *iface, UINT index)
4041 return d3d10_effect_variable_GetElement((ID3D10EffectVariable *)iface, index);
4044 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_matrix_variable_GetParentConstantBuffer(
4045 ID3D10EffectMatrixVariable *iface)
4047 return d3d10_effect_variable_GetParentConstantBuffer((ID3D10EffectVariable *)iface);
4050 static struct ID3D10EffectScalarVariable * STDMETHODCALLTYPE d3d10_effect_matrix_variable_AsScalar(
4051 ID3D10EffectMatrixVariable *iface)
4053 return d3d10_effect_variable_AsScalar((ID3D10EffectVariable *)iface);
4056 static struct ID3D10EffectVectorVariable * STDMETHODCALLTYPE d3d10_effect_matrix_variable_AsVector(
4057 ID3D10EffectMatrixVariable *iface)
4059 return d3d10_effect_variable_AsVector((ID3D10EffectVariable *)iface);
4062 static struct ID3D10EffectMatrixVariable * STDMETHODCALLTYPE d3d10_effect_matrix_variable_AsMatrix(
4063 ID3D10EffectMatrixVariable *iface)
4065 return d3d10_effect_variable_AsMatrix((ID3D10EffectVariable *)iface);
4068 static struct ID3D10EffectStringVariable * STDMETHODCALLTYPE d3d10_effect_matrix_variable_AsString(
4069 ID3D10EffectMatrixVariable *iface)
4071 return d3d10_effect_variable_AsString((ID3D10EffectVariable *)iface);
4074 static struct ID3D10EffectShaderResourceVariable * STDMETHODCALLTYPE d3d10_effect_matrix_variable_AsShaderResource(
4075 ID3D10EffectMatrixVariable *iface)
4077 return d3d10_effect_variable_AsShaderResource((ID3D10EffectVariable *)iface);
4080 static struct ID3D10EffectRenderTargetViewVariable * STDMETHODCALLTYPE d3d10_effect_matrix_variable_AsRenderTargetView(
4081 ID3D10EffectMatrixVariable *iface)
4083 return d3d10_effect_variable_AsRenderTargetView((ID3D10EffectVariable *)iface);
4086 static struct ID3D10EffectDepthStencilViewVariable * STDMETHODCALLTYPE d3d10_effect_matrix_variable_AsDepthStencilView(
4087 ID3D10EffectMatrixVariable *iface)
4089 return d3d10_effect_variable_AsDepthStencilView((ID3D10EffectVariable *)iface);
4092 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_matrix_variable_AsConstantBuffer(
4093 ID3D10EffectMatrixVariable *iface)
4095 return d3d10_effect_variable_AsConstantBuffer((ID3D10EffectVariable *)iface);
4098 static struct ID3D10EffectShaderVariable * STDMETHODCALLTYPE d3d10_effect_matrix_variable_AsShader(
4099 ID3D10EffectMatrixVariable *iface)
4101 return d3d10_effect_variable_AsShader((ID3D10EffectVariable *)iface);
4104 static struct ID3D10EffectBlendVariable * STDMETHODCALLTYPE d3d10_effect_matrix_variable_AsBlend(
4105 ID3D10EffectMatrixVariable *iface)
4107 return d3d10_effect_variable_AsBlend((ID3D10EffectVariable *)iface);
4110 static struct ID3D10EffectDepthStencilVariable * STDMETHODCALLTYPE d3d10_effect_matrix_variable_AsDepthStencil(
4111 ID3D10EffectMatrixVariable *iface)
4113 return d3d10_effect_variable_AsDepthStencil((ID3D10EffectVariable *)iface);
4116 static struct ID3D10EffectRasterizerVariable * STDMETHODCALLTYPE d3d10_effect_matrix_variable_AsRasterizer(
4117 ID3D10EffectMatrixVariable *iface)
4119 return d3d10_effect_variable_AsRasterizer((ID3D10EffectVariable *)iface);
4122 static struct ID3D10EffectSamplerVariable * STDMETHODCALLTYPE d3d10_effect_matrix_variable_AsSampler(
4123 ID3D10EffectMatrixVariable *iface)
4125 return d3d10_effect_variable_AsSampler((ID3D10EffectVariable *)iface);
4128 static HRESULT STDMETHODCALLTYPE d3d10_effect_matrix_variable_SetRawValue(ID3D10EffectMatrixVariable *iface,
4129 void *data, UINT offset, UINT count)
4131 return d3d10_effect_variable_SetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
4134 static HRESULT STDMETHODCALLTYPE d3d10_effect_matrix_variable_GetRawValue(ID3D10EffectMatrixVariable *iface,
4135 void *data, UINT offset, UINT count)
4137 return d3d10_effect_variable_GetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
4140 /* ID3D10EffectMatrixVariable methods */
4142 static HRESULT STDMETHODCALLTYPE d3d10_effect_matrix_variable_SetMatrix(ID3D10EffectMatrixVariable *iface,
4143 float *data)
4145 FIXME("iface %p, data %p stub!\n", iface, data);
4147 return E_NOTIMPL;
4150 static HRESULT STDMETHODCALLTYPE d3d10_effect_matrix_variable_GetMatrix(ID3D10EffectMatrixVariable *iface,
4151 float *data)
4153 FIXME("iface %p, data %p stub!\n", iface, data);
4155 return E_NOTIMPL;
4158 static HRESULT STDMETHODCALLTYPE d3d10_effect_matrix_variable_SetMatrixArray(ID3D10EffectMatrixVariable *iface,
4159 float *data, UINT offset, UINT count)
4161 FIXME("iface %p, data %p, offset %u, count %u stub!\n", iface, data, offset, count);
4163 return E_NOTIMPL;
4166 static HRESULT STDMETHODCALLTYPE d3d10_effect_matrix_variable_GetMatrixArray(ID3D10EffectMatrixVariable *iface,
4167 float *data, UINT offset, UINT count)
4169 FIXME("iface %p, data %p, offset %u, count %u stub!\n", iface, data, offset, count);
4171 return E_NOTIMPL;
4174 static HRESULT STDMETHODCALLTYPE d3d10_effect_matrix_variable_SetMatrixTranspose(ID3D10EffectMatrixVariable *iface,
4175 float *data)
4177 FIXME("iface %p, data %p stub!\n", iface, data);
4179 return E_NOTIMPL;
4182 static HRESULT STDMETHODCALLTYPE d3d10_effect_matrix_variable_GetMatrixTranspose(ID3D10EffectMatrixVariable *iface,
4183 float *data)
4185 FIXME("iface %p, data %p stub!\n", iface, data);
4187 return E_NOTIMPL;
4190 static HRESULT STDMETHODCALLTYPE d3d10_effect_matrix_variable_SetMatrixTransposeArray(ID3D10EffectMatrixVariable *iface,
4191 float *data, UINT offset, UINT count)
4193 FIXME("iface %p, data %p, offset %u, count %u stub!\n", iface, data, offset, count);
4195 return E_NOTIMPL;
4198 static HRESULT STDMETHODCALLTYPE d3d10_effect_matrix_variable_GetMatrixTransposeArray(ID3D10EffectMatrixVariable *iface,
4199 float *data, UINT offset, UINT count)
4201 FIXME("iface %p, data %p, offset %u, count %u stub!\n", iface, data, offset, count);
4203 return E_NOTIMPL;
4207 static const struct ID3D10EffectMatrixVariableVtbl d3d10_effect_matrix_variable_vtbl =
4209 /* ID3D10EffectVariable methods */
4210 d3d10_effect_matrix_variable_IsValid,
4211 d3d10_effect_matrix_variable_GetType,
4212 d3d10_effect_matrix_variable_GetDesc,
4213 d3d10_effect_matrix_variable_GetAnnotationByIndex,
4214 d3d10_effect_matrix_variable_GetAnnotationByName,
4215 d3d10_effect_matrix_variable_GetMemberByIndex,
4216 d3d10_effect_matrix_variable_GetMemberByName,
4217 d3d10_effect_matrix_variable_GetMemberBySemantic,
4218 d3d10_effect_matrix_variable_GetElement,
4219 d3d10_effect_matrix_variable_GetParentConstantBuffer,
4220 d3d10_effect_matrix_variable_AsScalar,
4221 d3d10_effect_matrix_variable_AsVector,
4222 d3d10_effect_matrix_variable_AsMatrix,
4223 d3d10_effect_matrix_variable_AsString,
4224 d3d10_effect_matrix_variable_AsShaderResource,
4225 d3d10_effect_matrix_variable_AsRenderTargetView,
4226 d3d10_effect_matrix_variable_AsDepthStencilView,
4227 d3d10_effect_matrix_variable_AsConstantBuffer,
4228 d3d10_effect_matrix_variable_AsShader,
4229 d3d10_effect_matrix_variable_AsBlend,
4230 d3d10_effect_matrix_variable_AsDepthStencil,
4231 d3d10_effect_matrix_variable_AsRasterizer,
4232 d3d10_effect_matrix_variable_AsSampler,
4233 d3d10_effect_matrix_variable_SetRawValue,
4234 d3d10_effect_matrix_variable_GetRawValue,
4235 /* ID3D10EffectMatrixVariable methods */
4236 d3d10_effect_matrix_variable_SetMatrix,
4237 d3d10_effect_matrix_variable_GetMatrix,
4238 d3d10_effect_matrix_variable_SetMatrixArray,
4239 d3d10_effect_matrix_variable_GetMatrixArray,
4240 d3d10_effect_matrix_variable_SetMatrixTranspose,
4241 d3d10_effect_matrix_variable_GetMatrixTranspose,
4242 d3d10_effect_matrix_variable_SetMatrixTransposeArray,
4243 d3d10_effect_matrix_variable_GetMatrixTransposeArray,
4246 /* ID3D10EffectVariable methods */
4248 static BOOL STDMETHODCALLTYPE d3d10_effect_string_variable_IsValid(ID3D10EffectStringVariable *iface)
4250 TRACE("iface %p\n", iface);
4252 return (struct d3d10_effect_variable *)iface != &null_string_variable;
4255 static struct ID3D10EffectType * STDMETHODCALLTYPE d3d10_effect_string_variable_GetType(
4256 ID3D10EffectStringVariable *iface)
4258 return d3d10_effect_variable_GetType((ID3D10EffectVariable *)iface);
4261 static HRESULT STDMETHODCALLTYPE d3d10_effect_string_variable_GetDesc(ID3D10EffectStringVariable *iface,
4262 D3D10_EFFECT_VARIABLE_DESC *desc)
4264 return d3d10_effect_variable_GetDesc((ID3D10EffectVariable *)iface, desc);
4267 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_string_variable_GetAnnotationByIndex(
4268 ID3D10EffectStringVariable *iface, UINT index)
4270 return d3d10_effect_variable_GetAnnotationByIndex((ID3D10EffectVariable *)iface, index);
4273 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_string_variable_GetAnnotationByName(
4274 ID3D10EffectStringVariable *iface, LPCSTR name)
4276 return d3d10_effect_variable_GetAnnotationByName((ID3D10EffectVariable *)iface, name);
4279 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_string_variable_GetMemberByIndex(
4280 ID3D10EffectStringVariable *iface, UINT index)
4282 return d3d10_effect_variable_GetMemberByIndex((ID3D10EffectVariable *)iface, index);
4285 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_string_variable_GetMemberByName(
4286 ID3D10EffectStringVariable *iface, LPCSTR name)
4288 return d3d10_effect_variable_GetMemberByName((ID3D10EffectVariable *)iface, name);
4291 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_string_variable_GetMemberBySemantic(
4292 ID3D10EffectStringVariable *iface, LPCSTR semantic)
4294 return d3d10_effect_variable_GetMemberBySemantic((ID3D10EffectVariable *)iface, semantic);
4297 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_string_variable_GetElement(
4298 ID3D10EffectStringVariable *iface, UINT index)
4300 return d3d10_effect_variable_GetElement((ID3D10EffectVariable *)iface, index);
4303 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_string_variable_GetParentConstantBuffer(
4304 ID3D10EffectStringVariable *iface)
4306 return d3d10_effect_variable_GetParentConstantBuffer((ID3D10EffectVariable *)iface);
4309 static struct ID3D10EffectScalarVariable * STDMETHODCALLTYPE d3d10_effect_string_variable_AsScalar(
4310 ID3D10EffectStringVariable *iface)
4312 return d3d10_effect_variable_AsScalar((ID3D10EffectVariable *)iface);
4315 static struct ID3D10EffectVectorVariable * STDMETHODCALLTYPE d3d10_effect_string_variable_AsVector(
4316 ID3D10EffectStringVariable *iface)
4318 return d3d10_effect_variable_AsVector((ID3D10EffectVariable *)iface);
4321 static struct ID3D10EffectMatrixVariable * STDMETHODCALLTYPE d3d10_effect_string_variable_AsMatrix(
4322 ID3D10EffectStringVariable *iface)
4324 return d3d10_effect_variable_AsMatrix((ID3D10EffectVariable *)iface);
4327 static struct ID3D10EffectStringVariable * STDMETHODCALLTYPE d3d10_effect_string_variable_AsString(
4328 ID3D10EffectStringVariable *iface)
4330 return d3d10_effect_variable_AsString((ID3D10EffectVariable *)iface);
4333 static struct ID3D10EffectShaderResourceVariable * STDMETHODCALLTYPE d3d10_effect_string_variable_AsShaderResource(
4334 ID3D10EffectStringVariable *iface)
4336 return d3d10_effect_variable_AsShaderResource((ID3D10EffectVariable *)iface);
4339 static struct ID3D10EffectRenderTargetViewVariable * STDMETHODCALLTYPE d3d10_effect_string_variable_AsRenderTargetView(
4340 ID3D10EffectStringVariable *iface)
4342 return d3d10_effect_variable_AsRenderTargetView((ID3D10EffectVariable *)iface);
4345 static struct ID3D10EffectDepthStencilViewVariable * STDMETHODCALLTYPE d3d10_effect_string_variable_AsDepthStencilView(
4346 ID3D10EffectStringVariable *iface)
4348 return d3d10_effect_variable_AsDepthStencilView((ID3D10EffectVariable *)iface);
4351 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_string_variable_AsConstantBuffer(
4352 ID3D10EffectStringVariable *iface)
4354 return d3d10_effect_variable_AsConstantBuffer((ID3D10EffectVariable *)iface);
4357 static struct ID3D10EffectShaderVariable * STDMETHODCALLTYPE d3d10_effect_string_variable_AsShader(
4358 ID3D10EffectStringVariable *iface)
4360 return d3d10_effect_variable_AsShader((ID3D10EffectVariable *)iface);
4363 static struct ID3D10EffectBlendVariable * STDMETHODCALLTYPE d3d10_effect_string_variable_AsBlend(
4364 ID3D10EffectStringVariable *iface)
4366 return d3d10_effect_variable_AsBlend((ID3D10EffectVariable *)iface);
4369 static struct ID3D10EffectDepthStencilVariable * STDMETHODCALLTYPE d3d10_effect_string_variable_AsDepthStencil(
4370 ID3D10EffectStringVariable *iface)
4372 return d3d10_effect_variable_AsDepthStencil((ID3D10EffectVariable *)iface);
4375 static struct ID3D10EffectRasterizerVariable * STDMETHODCALLTYPE d3d10_effect_string_variable_AsRasterizer(
4376 ID3D10EffectStringVariable *iface)
4378 return d3d10_effect_variable_AsRasterizer((ID3D10EffectVariable *)iface);
4381 static struct ID3D10EffectSamplerVariable * STDMETHODCALLTYPE d3d10_effect_string_variable_AsSampler(
4382 ID3D10EffectStringVariable *iface)
4384 return d3d10_effect_variable_AsSampler((ID3D10EffectVariable *)iface);
4387 static HRESULT STDMETHODCALLTYPE d3d10_effect_string_variable_SetRawValue(ID3D10EffectStringVariable *iface,
4388 void *data, UINT offset, UINT count)
4390 return d3d10_effect_variable_SetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
4393 static HRESULT STDMETHODCALLTYPE d3d10_effect_string_variable_GetRawValue(ID3D10EffectStringVariable *iface,
4394 void *data, UINT offset, UINT count)
4396 return d3d10_effect_variable_GetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
4399 /* ID3D10EffectStringVariable methods */
4401 static HRESULT STDMETHODCALLTYPE d3d10_effect_string_variable_GetString(ID3D10EffectStringVariable *iface,
4402 LPCSTR *str)
4404 FIXME("iface %p, str %p stub!\n", iface, str);
4406 return E_NOTIMPL;
4409 static HRESULT STDMETHODCALLTYPE d3d10_effect_string_variable_GetStringArray(ID3D10EffectStringVariable *iface,
4410 LPCSTR *strs, UINT offset, UINT count)
4412 FIXME("iface %p, strs %p, offset %u, count %u stub!\n", iface, strs, offset, count);
4414 return E_NOTIMPL;
4418 static const struct ID3D10EffectStringVariableVtbl d3d10_effect_string_variable_vtbl =
4420 /* ID3D10EffectVariable methods */
4421 d3d10_effect_string_variable_IsValid,
4422 d3d10_effect_string_variable_GetType,
4423 d3d10_effect_string_variable_GetDesc,
4424 d3d10_effect_string_variable_GetAnnotationByIndex,
4425 d3d10_effect_string_variable_GetAnnotationByName,
4426 d3d10_effect_string_variable_GetMemberByIndex,
4427 d3d10_effect_string_variable_GetMemberByName,
4428 d3d10_effect_string_variable_GetMemberBySemantic,
4429 d3d10_effect_string_variable_GetElement,
4430 d3d10_effect_string_variable_GetParentConstantBuffer,
4431 d3d10_effect_string_variable_AsScalar,
4432 d3d10_effect_string_variable_AsVector,
4433 d3d10_effect_string_variable_AsMatrix,
4434 d3d10_effect_string_variable_AsString,
4435 d3d10_effect_string_variable_AsShaderResource,
4436 d3d10_effect_string_variable_AsRenderTargetView,
4437 d3d10_effect_string_variable_AsDepthStencilView,
4438 d3d10_effect_string_variable_AsConstantBuffer,
4439 d3d10_effect_string_variable_AsShader,
4440 d3d10_effect_string_variable_AsBlend,
4441 d3d10_effect_string_variable_AsDepthStencil,
4442 d3d10_effect_string_variable_AsRasterizer,
4443 d3d10_effect_string_variable_AsSampler,
4444 d3d10_effect_string_variable_SetRawValue,
4445 d3d10_effect_string_variable_GetRawValue,
4446 /* ID3D10EffectStringVariable methods */
4447 d3d10_effect_string_variable_GetString,
4448 d3d10_effect_string_variable_GetStringArray,
4451 /* ID3D10EffectVariable methods */
4453 static BOOL STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_IsValid(ID3D10EffectShaderResourceVariable *iface)
4455 TRACE("iface %p\n", iface);
4457 return (struct d3d10_effect_variable *)iface != &null_shader_resource_variable;
4460 static struct ID3D10EffectType * STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_GetType(
4461 ID3D10EffectShaderResourceVariable *iface)
4463 return d3d10_effect_variable_GetType((ID3D10EffectVariable *)iface);
4466 static HRESULT STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_GetDesc(
4467 ID3D10EffectShaderResourceVariable *iface, D3D10_EFFECT_VARIABLE_DESC *desc)
4469 return d3d10_effect_variable_GetDesc((ID3D10EffectVariable *)iface, desc);
4472 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_GetAnnotationByIndex(
4473 ID3D10EffectShaderResourceVariable *iface, UINT index)
4475 return d3d10_effect_variable_GetAnnotationByIndex((ID3D10EffectVariable *)iface, index);
4478 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_GetAnnotationByName(
4479 ID3D10EffectShaderResourceVariable *iface, LPCSTR name)
4481 return d3d10_effect_variable_GetAnnotationByName((ID3D10EffectVariable *)iface, name);
4484 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_GetMemberByIndex(
4485 ID3D10EffectShaderResourceVariable *iface, UINT index)
4487 return d3d10_effect_variable_GetMemberByIndex((ID3D10EffectVariable *)iface, index);
4490 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_GetMemberByName(
4491 ID3D10EffectShaderResourceVariable *iface, LPCSTR name)
4493 return d3d10_effect_variable_GetMemberByName((ID3D10EffectVariable *)iface, name);
4496 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_GetMemberBySemantic(
4497 ID3D10EffectShaderResourceVariable *iface, LPCSTR semantic)
4499 return d3d10_effect_variable_GetMemberBySemantic((ID3D10EffectVariable *)iface, semantic);
4502 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_GetElement(
4503 ID3D10EffectShaderResourceVariable *iface, UINT index)
4505 return d3d10_effect_variable_GetElement((ID3D10EffectVariable *)iface, index);
4508 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_GetParentConstantBuffer(
4509 ID3D10EffectShaderResourceVariable *iface)
4511 return d3d10_effect_variable_GetParentConstantBuffer((ID3D10EffectVariable *)iface);
4514 static struct ID3D10EffectScalarVariable * STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_AsScalar(
4515 ID3D10EffectShaderResourceVariable *iface)
4517 return d3d10_effect_variable_AsScalar((ID3D10EffectVariable *)iface);
4520 static struct ID3D10EffectVectorVariable * STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_AsVector(
4521 ID3D10EffectShaderResourceVariable *iface)
4523 return d3d10_effect_variable_AsVector((ID3D10EffectVariable *)iface);
4526 static struct ID3D10EffectMatrixVariable * STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_AsMatrix(
4527 ID3D10EffectShaderResourceVariable *iface)
4529 return d3d10_effect_variable_AsMatrix((ID3D10EffectVariable *)iface);
4532 static struct ID3D10EffectStringVariable * STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_AsString(
4533 ID3D10EffectShaderResourceVariable *iface)
4535 return d3d10_effect_variable_AsString((ID3D10EffectVariable *)iface);
4538 static struct ID3D10EffectShaderResourceVariable * STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_AsShaderResource(
4539 ID3D10EffectShaderResourceVariable *iface)
4541 return d3d10_effect_variable_AsShaderResource((ID3D10EffectVariable *)iface);
4544 static struct ID3D10EffectRenderTargetViewVariable * STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_AsRenderTargetView(
4545 ID3D10EffectShaderResourceVariable *iface)
4547 return d3d10_effect_variable_AsRenderTargetView((ID3D10EffectVariable *)iface);
4550 static struct ID3D10EffectDepthStencilViewVariable * STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_AsDepthStencilView(
4551 ID3D10EffectShaderResourceVariable *iface)
4553 return d3d10_effect_variable_AsDepthStencilView((ID3D10EffectVariable *)iface);
4556 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_AsConstantBuffer(
4557 ID3D10EffectShaderResourceVariable *iface)
4559 return d3d10_effect_variable_AsConstantBuffer((ID3D10EffectVariable *)iface);
4562 static struct ID3D10EffectShaderVariable * STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_AsShader(
4563 ID3D10EffectShaderResourceVariable *iface)
4565 return d3d10_effect_variable_AsShader((ID3D10EffectVariable *)iface);
4568 static struct ID3D10EffectBlendVariable * STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_AsBlend(
4569 ID3D10EffectShaderResourceVariable *iface)
4571 return d3d10_effect_variable_AsBlend((ID3D10EffectVariable *)iface);
4574 static struct ID3D10EffectDepthStencilVariable * STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_AsDepthStencil(
4575 ID3D10EffectShaderResourceVariable *iface)
4577 return d3d10_effect_variable_AsDepthStencil((ID3D10EffectVariable *)iface);
4580 static struct ID3D10EffectRasterizerVariable * STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_AsRasterizer(
4581 ID3D10EffectShaderResourceVariable *iface)
4583 return d3d10_effect_variable_AsRasterizer((ID3D10EffectVariable *)iface);
4586 static struct ID3D10EffectSamplerVariable * STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_AsSampler(
4587 ID3D10EffectShaderResourceVariable *iface)
4589 return d3d10_effect_variable_AsSampler((ID3D10EffectVariable *)iface);
4592 static HRESULT STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_SetRawValue(
4593 ID3D10EffectShaderResourceVariable *iface, void *data, UINT offset, UINT count)
4595 return d3d10_effect_variable_SetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
4598 static HRESULT STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_GetRawValue(
4599 ID3D10EffectShaderResourceVariable *iface, void *data, UINT offset, UINT count)
4601 return d3d10_effect_variable_GetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
4604 /* ID3D10EffectShaderResourceVariable methods */
4606 static HRESULT STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_SetResource(
4607 ID3D10EffectShaderResourceVariable *iface, ID3D10ShaderResourceView *resource)
4609 FIXME("iface %p, resource %p stub!\n", iface, resource);
4611 return E_NOTIMPL;
4614 static HRESULT STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_GetResource(
4615 ID3D10EffectShaderResourceVariable *iface, ID3D10ShaderResourceView **resource)
4617 FIXME("iface %p, resource %p stub!\n", iface, resource);
4619 return E_NOTIMPL;
4622 static HRESULT STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_SetResourceArray(
4623 ID3D10EffectShaderResourceVariable *iface, ID3D10ShaderResourceView **resources, UINT offset, UINT count)
4625 FIXME("iface %p, resources %p, offset %u, count %u stub!\n", iface, resources, offset, count);
4627 return E_NOTIMPL;
4630 static HRESULT STDMETHODCALLTYPE d3d10_effect_shader_resource_variable_GetResourceArray(
4631 ID3D10EffectShaderResourceVariable *iface, ID3D10ShaderResourceView **resources, UINT offset, UINT count)
4633 FIXME("iface %p, resources %p, offset %u, count %u stub!\n", iface, resources, offset, count);
4635 return E_NOTIMPL;
4639 static const struct ID3D10EffectShaderResourceVariableVtbl d3d10_effect_shader_resource_variable_vtbl =
4641 /* ID3D10EffectVariable methods */
4642 d3d10_effect_shader_resource_variable_IsValid,
4643 d3d10_effect_shader_resource_variable_GetType,
4644 d3d10_effect_shader_resource_variable_GetDesc,
4645 d3d10_effect_shader_resource_variable_GetAnnotationByIndex,
4646 d3d10_effect_shader_resource_variable_GetAnnotationByName,
4647 d3d10_effect_shader_resource_variable_GetMemberByIndex,
4648 d3d10_effect_shader_resource_variable_GetMemberByName,
4649 d3d10_effect_shader_resource_variable_GetMemberBySemantic,
4650 d3d10_effect_shader_resource_variable_GetElement,
4651 d3d10_effect_shader_resource_variable_GetParentConstantBuffer,
4652 d3d10_effect_shader_resource_variable_AsScalar,
4653 d3d10_effect_shader_resource_variable_AsVector,
4654 d3d10_effect_shader_resource_variable_AsMatrix,
4655 d3d10_effect_shader_resource_variable_AsString,
4656 d3d10_effect_shader_resource_variable_AsShaderResource,
4657 d3d10_effect_shader_resource_variable_AsRenderTargetView,
4658 d3d10_effect_shader_resource_variable_AsDepthStencilView,
4659 d3d10_effect_shader_resource_variable_AsConstantBuffer,
4660 d3d10_effect_shader_resource_variable_AsShader,
4661 d3d10_effect_shader_resource_variable_AsBlend,
4662 d3d10_effect_shader_resource_variable_AsDepthStencil,
4663 d3d10_effect_shader_resource_variable_AsRasterizer,
4664 d3d10_effect_shader_resource_variable_AsSampler,
4665 d3d10_effect_shader_resource_variable_SetRawValue,
4666 d3d10_effect_shader_resource_variable_GetRawValue,
4667 /* ID3D10EffectShaderResourceVariable methods */
4668 d3d10_effect_shader_resource_variable_SetResource,
4669 d3d10_effect_shader_resource_variable_GetResource,
4670 d3d10_effect_shader_resource_variable_SetResourceArray,
4671 d3d10_effect_shader_resource_variable_GetResourceArray,
4674 /* ID3D10EffectVariable methods */
4676 static BOOL STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_IsValid(
4677 ID3D10EffectRenderTargetViewVariable *iface)
4679 TRACE("iface %p\n", iface);
4681 return (struct d3d10_effect_variable *)iface != &null_render_target_view_variable;
4684 static struct ID3D10EffectType * STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_GetType(
4685 ID3D10EffectRenderTargetViewVariable *iface)
4687 return d3d10_effect_variable_GetType((ID3D10EffectVariable *)iface);
4690 static HRESULT STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_GetDesc(
4691 ID3D10EffectRenderTargetViewVariable *iface, D3D10_EFFECT_VARIABLE_DESC *desc)
4693 return d3d10_effect_variable_GetDesc((ID3D10EffectVariable *)iface, desc);
4696 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_GetAnnotationByIndex(
4697 ID3D10EffectRenderTargetViewVariable *iface, UINT index)
4699 return d3d10_effect_variable_GetAnnotationByIndex((ID3D10EffectVariable *)iface, index);
4702 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_GetAnnotationByName(
4703 ID3D10EffectRenderTargetViewVariable *iface, LPCSTR name)
4705 return d3d10_effect_variable_GetAnnotationByName((ID3D10EffectVariable *)iface, name);
4708 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_GetMemberByIndex(
4709 ID3D10EffectRenderTargetViewVariable *iface, UINT index)
4711 return d3d10_effect_variable_GetMemberByIndex((ID3D10EffectVariable *)iface, index);
4714 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_GetMemberByName(
4715 ID3D10EffectRenderTargetViewVariable *iface, LPCSTR name)
4717 return d3d10_effect_variable_GetMemberByName((ID3D10EffectVariable *)iface, name);
4720 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_GetMemberBySemantic(
4721 ID3D10EffectRenderTargetViewVariable *iface, LPCSTR semantic)
4723 return d3d10_effect_variable_GetMemberBySemantic((ID3D10EffectVariable *)iface, semantic);
4726 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_GetElement(
4727 ID3D10EffectRenderTargetViewVariable *iface, UINT index)
4729 return d3d10_effect_variable_GetElement((ID3D10EffectVariable *)iface, index);
4732 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_GetParentConstantBuffer(
4733 ID3D10EffectRenderTargetViewVariable *iface)
4735 return d3d10_effect_variable_GetParentConstantBuffer((ID3D10EffectVariable *)iface);
4738 static struct ID3D10EffectScalarVariable * STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_AsScalar(
4739 ID3D10EffectRenderTargetViewVariable *iface)
4741 return d3d10_effect_variable_AsScalar((ID3D10EffectVariable *)iface);
4744 static struct ID3D10EffectVectorVariable * STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_AsVector(
4745 ID3D10EffectRenderTargetViewVariable *iface)
4747 return d3d10_effect_variable_AsVector((ID3D10EffectVariable *)iface);
4750 static struct ID3D10EffectMatrixVariable * STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_AsMatrix(
4751 ID3D10EffectRenderTargetViewVariable *iface)
4753 return d3d10_effect_variable_AsMatrix((ID3D10EffectVariable *)iface);
4756 static struct ID3D10EffectStringVariable * STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_AsString(
4757 ID3D10EffectRenderTargetViewVariable *iface)
4759 return d3d10_effect_variable_AsString((ID3D10EffectVariable *)iface);
4762 static struct ID3D10EffectShaderResourceVariable * STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_AsShaderResource(
4763 ID3D10EffectRenderTargetViewVariable *iface)
4765 return d3d10_effect_variable_AsShaderResource((ID3D10EffectVariable *)iface);
4768 static struct ID3D10EffectRenderTargetViewVariable * STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_AsRenderTargetView(
4769 ID3D10EffectRenderTargetViewVariable *iface)
4771 return d3d10_effect_variable_AsRenderTargetView((ID3D10EffectVariable *)iface);
4774 static struct ID3D10EffectDepthStencilViewVariable * STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_AsDepthStencilView(
4775 ID3D10EffectRenderTargetViewVariable *iface)
4777 return d3d10_effect_variable_AsDepthStencilView((ID3D10EffectVariable *)iface);
4780 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_AsConstantBuffer(
4781 ID3D10EffectRenderTargetViewVariable *iface)
4783 return d3d10_effect_variable_AsConstantBuffer((ID3D10EffectVariable *)iface);
4786 static struct ID3D10EffectShaderVariable * STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_AsShader(
4787 ID3D10EffectRenderTargetViewVariable *iface)
4789 return d3d10_effect_variable_AsShader((ID3D10EffectVariable *)iface);
4792 static struct ID3D10EffectBlendVariable * STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_AsBlend(
4793 ID3D10EffectRenderTargetViewVariable *iface)
4795 return d3d10_effect_variable_AsBlend((ID3D10EffectVariable *)iface);
4798 static struct ID3D10EffectDepthStencilVariable * STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_AsDepthStencil(
4799 ID3D10EffectRenderTargetViewVariable *iface)
4801 return d3d10_effect_variable_AsDepthStencil((ID3D10EffectVariable *)iface);
4804 static struct ID3D10EffectRasterizerVariable * STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_AsRasterizer(
4805 ID3D10EffectRenderTargetViewVariable *iface)
4807 return d3d10_effect_variable_AsRasterizer((ID3D10EffectVariable *)iface);
4810 static struct ID3D10EffectSamplerVariable * STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_AsSampler(
4811 ID3D10EffectRenderTargetViewVariable *iface)
4813 return d3d10_effect_variable_AsSampler((ID3D10EffectVariable *)iface);
4816 static HRESULT STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_SetRawValue(
4817 ID3D10EffectRenderTargetViewVariable *iface, void *data, UINT offset, UINT count)
4819 return d3d10_effect_variable_SetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
4822 static HRESULT STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_GetRawValue(
4823 ID3D10EffectRenderTargetViewVariable *iface, void *data, UINT offset, UINT count)
4825 return d3d10_effect_variable_GetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
4828 /* ID3D10EffectRenderTargetViewVariable methods */
4830 static HRESULT STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_SetRenderTarget(
4831 ID3D10EffectRenderTargetViewVariable *iface, ID3D10RenderTargetView *view)
4833 FIXME("iface %p, view %p stub!\n", iface, view);
4835 return E_NOTIMPL;
4838 static HRESULT STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_GetRenderTarget(
4839 ID3D10EffectRenderTargetViewVariable *iface, ID3D10RenderTargetView **view)
4841 FIXME("iface %p, view %p stub!\n", iface, view);
4843 return E_NOTIMPL;
4846 static HRESULT STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_SetRenderTargetArray(
4847 ID3D10EffectRenderTargetViewVariable *iface, ID3D10RenderTargetView **views, UINT offset, UINT count)
4849 FIXME("iface %p, views %p, offset %u, count %u stub!\n", iface, views, offset, count);
4851 return E_NOTIMPL;
4854 static HRESULT STDMETHODCALLTYPE d3d10_effect_render_target_view_variable_GetRenderTargetArray(
4855 ID3D10EffectRenderTargetViewVariable *iface, ID3D10RenderTargetView **views, UINT offset, UINT count)
4857 FIXME("iface %p, views %p, offset %u, count %u stub!\n", iface, views, offset, count);
4859 return E_NOTIMPL;
4863 static const struct ID3D10EffectRenderTargetViewVariableVtbl d3d10_effect_render_target_view_variable_vtbl =
4865 /* ID3D10EffectVariable methods */
4866 d3d10_effect_render_target_view_variable_IsValid,
4867 d3d10_effect_render_target_view_variable_GetType,
4868 d3d10_effect_render_target_view_variable_GetDesc,
4869 d3d10_effect_render_target_view_variable_GetAnnotationByIndex,
4870 d3d10_effect_render_target_view_variable_GetAnnotationByName,
4871 d3d10_effect_render_target_view_variable_GetMemberByIndex,
4872 d3d10_effect_render_target_view_variable_GetMemberByName,
4873 d3d10_effect_render_target_view_variable_GetMemberBySemantic,
4874 d3d10_effect_render_target_view_variable_GetElement,
4875 d3d10_effect_render_target_view_variable_GetParentConstantBuffer,
4876 d3d10_effect_render_target_view_variable_AsScalar,
4877 d3d10_effect_render_target_view_variable_AsVector,
4878 d3d10_effect_render_target_view_variable_AsMatrix,
4879 d3d10_effect_render_target_view_variable_AsString,
4880 d3d10_effect_render_target_view_variable_AsShaderResource,
4881 d3d10_effect_render_target_view_variable_AsRenderTargetView,
4882 d3d10_effect_render_target_view_variable_AsDepthStencilView,
4883 d3d10_effect_render_target_view_variable_AsConstantBuffer,
4884 d3d10_effect_render_target_view_variable_AsShader,
4885 d3d10_effect_render_target_view_variable_AsBlend,
4886 d3d10_effect_render_target_view_variable_AsDepthStencil,
4887 d3d10_effect_render_target_view_variable_AsRasterizer,
4888 d3d10_effect_render_target_view_variable_AsSampler,
4889 d3d10_effect_render_target_view_variable_SetRawValue,
4890 d3d10_effect_render_target_view_variable_GetRawValue,
4891 /* ID3D10EffectRenderTargetViewVariable methods */
4892 d3d10_effect_render_target_view_variable_SetRenderTarget,
4893 d3d10_effect_render_target_view_variable_GetRenderTarget,
4894 d3d10_effect_render_target_view_variable_SetRenderTargetArray,
4895 d3d10_effect_render_target_view_variable_GetRenderTargetArray,
4898 /* ID3D10EffectVariable methods */
4900 static BOOL STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_IsValid(
4901 ID3D10EffectDepthStencilViewVariable *iface)
4903 TRACE("iface %p\n", iface);
4905 return (struct d3d10_effect_variable *)iface != &null_depth_stencil_view_variable;
4908 static struct ID3D10EffectType * STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_GetType(
4909 ID3D10EffectDepthStencilViewVariable *iface)
4911 return d3d10_effect_variable_GetType((ID3D10EffectVariable *)iface);
4914 static HRESULT STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_GetDesc(
4915 ID3D10EffectDepthStencilViewVariable *iface, D3D10_EFFECT_VARIABLE_DESC *desc)
4917 return d3d10_effect_variable_GetDesc((ID3D10EffectVariable *)iface, desc);
4920 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_GetAnnotationByIndex(
4921 ID3D10EffectDepthStencilViewVariable *iface, UINT index)
4923 return d3d10_effect_variable_GetAnnotationByIndex((ID3D10EffectVariable *)iface, index);
4926 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_GetAnnotationByName(
4927 ID3D10EffectDepthStencilViewVariable *iface, LPCSTR name)
4929 return d3d10_effect_variable_GetAnnotationByName((ID3D10EffectVariable *)iface, name);
4932 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_GetMemberByIndex(
4933 ID3D10EffectDepthStencilViewVariable *iface, UINT index)
4935 return d3d10_effect_variable_GetMemberByIndex((ID3D10EffectVariable *)iface, index);
4938 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_GetMemberByName(
4939 ID3D10EffectDepthStencilViewVariable *iface, LPCSTR name)
4941 return d3d10_effect_variable_GetMemberByName((ID3D10EffectVariable *)iface, name);
4944 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_GetMemberBySemantic(
4945 ID3D10EffectDepthStencilViewVariable *iface, LPCSTR semantic)
4947 return d3d10_effect_variable_GetMemberBySemantic((ID3D10EffectVariable *)iface, semantic);
4950 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_GetElement(
4951 ID3D10EffectDepthStencilViewVariable *iface, UINT index)
4953 return d3d10_effect_variable_GetElement((ID3D10EffectVariable *)iface, index);
4956 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_GetParentConstantBuffer(
4957 ID3D10EffectDepthStencilViewVariable *iface)
4959 return d3d10_effect_variable_GetParentConstantBuffer((ID3D10EffectVariable *)iface);
4962 static struct ID3D10EffectScalarVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_AsScalar(
4963 ID3D10EffectDepthStencilViewVariable *iface)
4965 return d3d10_effect_variable_AsScalar((ID3D10EffectVariable *)iface);
4968 static struct ID3D10EffectVectorVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_AsVector(
4969 ID3D10EffectDepthStencilViewVariable *iface)
4971 return d3d10_effect_variable_AsVector((ID3D10EffectVariable *)iface);
4974 static struct ID3D10EffectMatrixVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_AsMatrix(
4975 ID3D10EffectDepthStencilViewVariable *iface)
4977 return d3d10_effect_variable_AsMatrix((ID3D10EffectVariable *)iface);
4980 static struct ID3D10EffectStringVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_AsString(
4981 ID3D10EffectDepthStencilViewVariable *iface)
4983 return d3d10_effect_variable_AsString((ID3D10EffectVariable *)iface);
4986 static struct ID3D10EffectShaderResourceVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_AsShaderResource(
4987 ID3D10EffectDepthStencilViewVariable *iface)
4989 return d3d10_effect_variable_AsShaderResource((ID3D10EffectVariable *)iface);
4992 static struct ID3D10EffectRenderTargetViewVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_AsRenderTargetView(
4993 ID3D10EffectDepthStencilViewVariable *iface)
4995 return d3d10_effect_variable_AsRenderTargetView((ID3D10EffectVariable *)iface);
4998 static struct ID3D10EffectDepthStencilViewVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_AsDepthStencilView(
4999 ID3D10EffectDepthStencilViewVariable *iface)
5001 return d3d10_effect_variable_AsDepthStencilView((ID3D10EffectVariable *)iface);
5004 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_AsConstantBuffer(
5005 ID3D10EffectDepthStencilViewVariable *iface)
5007 return d3d10_effect_variable_AsConstantBuffer((ID3D10EffectVariable *)iface);
5010 static struct ID3D10EffectShaderVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_AsShader(
5011 ID3D10EffectDepthStencilViewVariable *iface)
5013 return d3d10_effect_variable_AsShader((ID3D10EffectVariable *)iface);
5016 static struct ID3D10EffectBlendVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_AsBlend(
5017 ID3D10EffectDepthStencilViewVariable *iface)
5019 return d3d10_effect_variable_AsBlend((ID3D10EffectVariable *)iface);
5022 static struct ID3D10EffectDepthStencilVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_AsDepthStencil(
5023 ID3D10EffectDepthStencilViewVariable *iface)
5025 return d3d10_effect_variable_AsDepthStencil((ID3D10EffectVariable *)iface);
5028 static struct ID3D10EffectRasterizerVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_AsRasterizer(
5029 ID3D10EffectDepthStencilViewVariable *iface)
5031 return d3d10_effect_variable_AsRasterizer((ID3D10EffectVariable *)iface);
5034 static struct ID3D10EffectSamplerVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_AsSampler(
5035 ID3D10EffectDepthStencilViewVariable *iface)
5037 return d3d10_effect_variable_AsSampler((ID3D10EffectVariable *)iface);
5040 static HRESULT STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_SetRawValue(
5041 ID3D10EffectDepthStencilViewVariable *iface, void *data, UINT offset, UINT count)
5043 return d3d10_effect_variable_SetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
5046 static HRESULT STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_GetRawValue(
5047 ID3D10EffectDepthStencilViewVariable *iface, void *data, UINT offset, UINT count)
5049 return d3d10_effect_variable_GetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
5052 /* ID3D10EffectDepthStencilViewVariable methods */
5054 static HRESULT STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_SetDepthStencil(
5055 ID3D10EffectDepthStencilViewVariable *iface, ID3D10DepthStencilView *view)
5057 FIXME("iface %p, view %p stub!\n", iface, view);
5059 return E_NOTIMPL;
5062 static HRESULT STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_GetDepthStencil(
5063 ID3D10EffectDepthStencilViewVariable *iface, ID3D10DepthStencilView **view)
5065 FIXME("iface %p, view %p stub!\n", iface, view);
5067 return E_NOTIMPL;
5070 static HRESULT STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_SetDepthStencilArray(
5071 ID3D10EffectDepthStencilViewVariable *iface, ID3D10DepthStencilView **views, UINT offset, UINT count)
5073 FIXME("iface %p, views %p, offset %u, count %u stub!\n", iface, views, offset, count);
5075 return E_NOTIMPL;
5078 static HRESULT STDMETHODCALLTYPE d3d10_effect_depth_stencil_view_variable_GetDepthStencilArray(
5079 ID3D10EffectDepthStencilViewVariable *iface, ID3D10DepthStencilView **views, UINT offset, UINT count)
5081 FIXME("iface %p, views %p, offset %u, count %u stub!\n", iface, views, offset, count);
5083 return E_NOTIMPL;
5087 static const struct ID3D10EffectDepthStencilViewVariableVtbl d3d10_effect_depth_stencil_view_variable_vtbl =
5089 /* ID3D10EffectVariable methods */
5090 d3d10_effect_depth_stencil_view_variable_IsValid,
5091 d3d10_effect_depth_stencil_view_variable_GetType,
5092 d3d10_effect_depth_stencil_view_variable_GetDesc,
5093 d3d10_effect_depth_stencil_view_variable_GetAnnotationByIndex,
5094 d3d10_effect_depth_stencil_view_variable_GetAnnotationByName,
5095 d3d10_effect_depth_stencil_view_variable_GetMemberByIndex,
5096 d3d10_effect_depth_stencil_view_variable_GetMemberByName,
5097 d3d10_effect_depth_stencil_view_variable_GetMemberBySemantic,
5098 d3d10_effect_depth_stencil_view_variable_GetElement,
5099 d3d10_effect_depth_stencil_view_variable_GetParentConstantBuffer,
5100 d3d10_effect_depth_stencil_view_variable_AsScalar,
5101 d3d10_effect_depth_stencil_view_variable_AsVector,
5102 d3d10_effect_depth_stencil_view_variable_AsMatrix,
5103 d3d10_effect_depth_stencil_view_variable_AsString,
5104 d3d10_effect_depth_stencil_view_variable_AsShaderResource,
5105 d3d10_effect_depth_stencil_view_variable_AsRenderTargetView,
5106 d3d10_effect_depth_stencil_view_variable_AsDepthStencilView,
5107 d3d10_effect_depth_stencil_view_variable_AsConstantBuffer,
5108 d3d10_effect_depth_stencil_view_variable_AsShader,
5109 d3d10_effect_depth_stencil_view_variable_AsBlend,
5110 d3d10_effect_depth_stencil_view_variable_AsDepthStencil,
5111 d3d10_effect_depth_stencil_view_variable_AsRasterizer,
5112 d3d10_effect_depth_stencil_view_variable_AsSampler,
5113 d3d10_effect_depth_stencil_view_variable_SetRawValue,
5114 d3d10_effect_depth_stencil_view_variable_GetRawValue,
5115 /* ID3D10EffectDepthStencilViewVariable methods */
5116 d3d10_effect_depth_stencil_view_variable_SetDepthStencil,
5117 d3d10_effect_depth_stencil_view_variable_GetDepthStencil,
5118 d3d10_effect_depth_stencil_view_variable_SetDepthStencilArray,
5119 d3d10_effect_depth_stencil_view_variable_GetDepthStencilArray,
5122 /* ID3D10EffectVariable methods */
5124 static BOOL STDMETHODCALLTYPE d3d10_effect_shader_variable_IsValid(ID3D10EffectShaderVariable *iface)
5126 TRACE("iface %p\n", iface);
5128 return (struct d3d10_effect_variable *)iface != &null_shader_variable;
5131 static struct ID3D10EffectType * STDMETHODCALLTYPE d3d10_effect_shader_variable_GetType(
5132 ID3D10EffectShaderVariable *iface)
5134 return d3d10_effect_variable_GetType((ID3D10EffectVariable *)iface);
5137 static HRESULT STDMETHODCALLTYPE d3d10_effect_shader_variable_GetDesc(ID3D10EffectShaderVariable *iface,
5138 D3D10_EFFECT_VARIABLE_DESC *desc)
5140 return d3d10_effect_variable_GetDesc((ID3D10EffectVariable *)iface, desc);
5143 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_shader_variable_GetAnnotationByIndex(
5144 ID3D10EffectShaderVariable *iface, UINT index)
5146 return d3d10_effect_variable_GetAnnotationByIndex((ID3D10EffectVariable *)iface, index);
5149 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_shader_variable_GetAnnotationByName(
5150 ID3D10EffectShaderVariable *iface, LPCSTR name)
5152 return d3d10_effect_variable_GetAnnotationByName((ID3D10EffectVariable *)iface, name);
5155 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_shader_variable_GetMemberByIndex(
5156 ID3D10EffectShaderVariable *iface, UINT index)
5158 return d3d10_effect_variable_GetMemberByIndex((ID3D10EffectVariable *)iface, index);
5161 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_shader_variable_GetMemberByName(
5162 ID3D10EffectShaderVariable *iface, LPCSTR name)
5164 return d3d10_effect_variable_GetMemberByName((ID3D10EffectVariable *)iface, name);
5167 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_shader_variable_GetMemberBySemantic(
5168 ID3D10EffectShaderVariable *iface, LPCSTR semantic)
5170 return d3d10_effect_variable_GetMemberBySemantic((ID3D10EffectVariable *)iface, semantic);
5173 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_shader_variable_GetElement(
5174 ID3D10EffectShaderVariable *iface, UINT index)
5176 return d3d10_effect_variable_GetElement((ID3D10EffectVariable *)iface, index);
5179 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_shader_variable_GetParentConstantBuffer(
5180 ID3D10EffectShaderVariable *iface)
5182 return d3d10_effect_variable_GetParentConstantBuffer((ID3D10EffectVariable *)iface);
5185 static struct ID3D10EffectScalarVariable * STDMETHODCALLTYPE d3d10_effect_shader_variable_AsScalar(
5186 ID3D10EffectShaderVariable *iface)
5188 return d3d10_effect_variable_AsScalar((ID3D10EffectVariable *)iface);
5191 static struct ID3D10EffectVectorVariable * STDMETHODCALLTYPE d3d10_effect_shader_variable_AsVector(
5192 ID3D10EffectShaderVariable *iface)
5194 return d3d10_effect_variable_AsVector((ID3D10EffectVariable *)iface);
5197 static struct ID3D10EffectMatrixVariable * STDMETHODCALLTYPE d3d10_effect_shader_variable_AsMatrix(
5198 ID3D10EffectShaderVariable *iface)
5200 return d3d10_effect_variable_AsMatrix((ID3D10EffectVariable *)iface);
5203 static struct ID3D10EffectStringVariable * STDMETHODCALLTYPE d3d10_effect_shader_variable_AsString(
5204 ID3D10EffectShaderVariable *iface)
5206 return d3d10_effect_variable_AsString((ID3D10EffectVariable *)iface);
5209 static struct ID3D10EffectShaderResourceVariable * STDMETHODCALLTYPE d3d10_effect_shader_variable_AsShaderResource(
5210 ID3D10EffectShaderVariable *iface)
5212 return d3d10_effect_variable_AsShaderResource((ID3D10EffectVariable *)iface);
5215 static struct ID3D10EffectRenderTargetViewVariable * STDMETHODCALLTYPE d3d10_effect_shader_variable_AsRenderTargetView(
5216 ID3D10EffectShaderVariable *iface)
5218 return d3d10_effect_variable_AsRenderTargetView((ID3D10EffectVariable *)iface);
5221 static struct ID3D10EffectDepthStencilViewVariable * STDMETHODCALLTYPE d3d10_effect_shader_variable_AsDepthStencilView(
5222 ID3D10EffectShaderVariable *iface)
5224 return d3d10_effect_variable_AsDepthStencilView((ID3D10EffectVariable *)iface);
5227 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_shader_variable_AsConstantBuffer(
5228 ID3D10EffectShaderVariable *iface)
5230 return d3d10_effect_variable_AsConstantBuffer((ID3D10EffectVariable *)iface);
5233 static struct ID3D10EffectShaderVariable * STDMETHODCALLTYPE d3d10_effect_shader_variable_AsShader(
5234 ID3D10EffectShaderVariable *iface)
5236 return d3d10_effect_variable_AsShader((ID3D10EffectVariable *)iface);
5239 static struct ID3D10EffectBlendVariable * STDMETHODCALLTYPE d3d10_effect_shader_variable_AsBlend(
5240 ID3D10EffectShaderVariable *iface)
5242 return d3d10_effect_variable_AsBlend((ID3D10EffectVariable *)iface);
5245 static struct ID3D10EffectDepthStencilVariable * STDMETHODCALLTYPE d3d10_effect_shader_variable_AsDepthStencil(
5246 ID3D10EffectShaderVariable *iface)
5248 return d3d10_effect_variable_AsDepthStencil((ID3D10EffectVariable *)iface);
5251 static struct ID3D10EffectRasterizerVariable * STDMETHODCALLTYPE d3d10_effect_shader_variable_AsRasterizer(
5252 ID3D10EffectShaderVariable *iface)
5254 return d3d10_effect_variable_AsRasterizer((ID3D10EffectVariable *)iface);
5257 static struct ID3D10EffectSamplerVariable * STDMETHODCALLTYPE d3d10_effect_shader_variable_AsSampler(
5258 ID3D10EffectShaderVariable *iface)
5260 return d3d10_effect_variable_AsSampler((ID3D10EffectVariable *)iface);
5263 static HRESULT STDMETHODCALLTYPE d3d10_effect_shader_variable_SetRawValue(
5264 ID3D10EffectShaderVariable *iface, void *data, UINT offset, UINT count)
5266 return d3d10_effect_variable_SetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
5269 static HRESULT STDMETHODCALLTYPE d3d10_effect_shader_variable_GetRawValue(
5270 ID3D10EffectShaderVariable *iface, void *data, UINT offset, UINT count)
5272 return d3d10_effect_variable_GetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
5275 /* ID3D10EffectShaderVariable methods */
5277 static HRESULT STDMETHODCALLTYPE d3d10_effect_shader_variable_GetShaderDesc(
5278 ID3D10EffectShaderVariable *iface, UINT index, D3D10_EFFECT_SHADER_DESC *desc)
5280 FIXME("iface %p, index %u, desc %p stub!\n", iface, index, desc);
5282 return E_NOTIMPL;
5285 static HRESULT STDMETHODCALLTYPE d3d10_effect_shader_variable_GetVertexShader(
5286 ID3D10EffectShaderVariable *iface, UINT index, ID3D10VertexShader **shader)
5288 FIXME("iface %p, index %u, shader %p stub!\n", iface, index, shader);
5290 return E_NOTIMPL;
5293 static HRESULT STDMETHODCALLTYPE d3d10_effect_shader_variable_GetGeometryShader(
5294 ID3D10EffectShaderVariable *iface, UINT index, ID3D10GeometryShader **shader)
5296 FIXME("iface %p, index %u, shader %p stub!\n", iface, index, shader);
5298 return E_NOTIMPL;
5301 static HRESULT STDMETHODCALLTYPE d3d10_effect_shader_variable_GetPixelShader(
5302 ID3D10EffectShaderVariable *iface, UINT index, ID3D10PixelShader **shader)
5304 FIXME("iface %p, index %u, shader %p stub!\n", iface, index, shader);
5306 return E_NOTIMPL;
5309 static HRESULT STDMETHODCALLTYPE d3d10_effect_shader_variable_GetInputSignatureElementDesc(
5310 ID3D10EffectShaderVariable *iface, UINT shader_index, UINT element_index,
5311 D3D10_SIGNATURE_PARAMETER_DESC *desc)
5313 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
5314 struct d3d10_effect_shader_variable *s;
5315 D3D10_SIGNATURE_PARAMETER_DESC *d;
5317 TRACE("iface %p, shader_index %u, element_index %u, desc %p\n",
5318 iface, shader_index, element_index, desc);
5320 if (!iface->lpVtbl->IsValid(iface))
5322 WARN("Null variable specified\n");
5323 return E_FAIL;
5326 /* Check shader_index, this crashes on W7/DX10 */
5327 if (shader_index >= This->effect->used_shader_count)
5329 WARN("This should crash on W7/DX10!\n");
5330 return E_FAIL;
5333 s = This->effect->used_shaders[shader_index]->data;
5334 if (!s->input_signature.signature)
5336 WARN("No shader signature\n");
5337 return D3DERR_INVALIDCALL;
5340 /* Check desc for NULL, this crashes on W7/DX10 */
5341 if (!desc)
5343 WARN("This should crash on W7/DX10!\n");
5344 return E_FAIL;
5347 if (element_index >= s->input_signature.element_count)
5349 WARN("Invalid element index specified\n");
5350 return E_INVALIDARG;
5353 d = &s->input_signature.elements[element_index];
5354 desc->SemanticName = d->SemanticName;
5355 desc->SemanticIndex = d->SemanticIndex;
5356 desc->SystemValueType = d->SystemValueType;
5357 desc->ComponentType = d->ComponentType;
5358 desc->Register = d->Register;
5359 desc->ReadWriteMask = d->ReadWriteMask;
5360 desc->Mask = d->Mask;
5362 return S_OK;
5365 static HRESULT STDMETHODCALLTYPE d3d10_effect_shader_variable_GetOutputSignatureElementDesc(
5366 ID3D10EffectShaderVariable *iface, UINT shader_index, UINT element_index,
5367 D3D10_SIGNATURE_PARAMETER_DESC *desc)
5369 struct d3d10_effect_variable *This = (struct d3d10_effect_variable *)iface;
5370 struct d3d10_effect_shader_variable *s;
5371 D3D10_SIGNATURE_PARAMETER_DESC *d;
5373 TRACE("iface %p, shader_index %u, element_index %u, desc %p\n",
5374 iface, shader_index, element_index, desc);
5376 if (!iface->lpVtbl->IsValid(iface))
5378 WARN("Null variable specified\n");
5379 return E_FAIL;
5382 /* Check shader_index, this crashes on W7/DX10 */
5383 if (shader_index >= This->effect->used_shader_count)
5385 WARN("This should crash on W7/DX10!\n");
5386 return E_FAIL;
5389 s = This->effect->used_shaders[shader_index]->data;
5390 if (!s->output_signature.signature)
5392 WARN("No shader signature\n");
5393 return D3DERR_INVALIDCALL;
5396 /* Check desc for NULL, this crashes on W7/DX10 */
5397 if (!desc)
5399 WARN("This should crash on W7/DX10!\n");
5400 return E_FAIL;
5403 if (element_index >= s->output_signature.element_count)
5405 WARN("Invalid element index specified\n");
5406 return E_INVALIDARG;
5409 d = &s->output_signature.elements[element_index];
5410 desc->SemanticName = d->SemanticName;
5411 desc->SemanticIndex = d->SemanticIndex;
5412 desc->SystemValueType = d->SystemValueType;
5413 desc->ComponentType = d->ComponentType;
5414 desc->Register = d->Register;
5415 desc->ReadWriteMask = d->ReadWriteMask;
5416 desc->Mask = d->Mask;
5418 return S_OK;
5422 static const struct ID3D10EffectShaderVariableVtbl d3d10_effect_shader_variable_vtbl =
5424 /* ID3D10EffectVariable methods */
5425 d3d10_effect_shader_variable_IsValid,
5426 d3d10_effect_shader_variable_GetType,
5427 d3d10_effect_shader_variable_GetDesc,
5428 d3d10_effect_shader_variable_GetAnnotationByIndex,
5429 d3d10_effect_shader_variable_GetAnnotationByName,
5430 d3d10_effect_shader_variable_GetMemberByIndex,
5431 d3d10_effect_shader_variable_GetMemberByName,
5432 d3d10_effect_shader_variable_GetMemberBySemantic,
5433 d3d10_effect_shader_variable_GetElement,
5434 d3d10_effect_shader_variable_GetParentConstantBuffer,
5435 d3d10_effect_shader_variable_AsScalar,
5436 d3d10_effect_shader_variable_AsVector,
5437 d3d10_effect_shader_variable_AsMatrix,
5438 d3d10_effect_shader_variable_AsString,
5439 d3d10_effect_shader_variable_AsShaderResource,
5440 d3d10_effect_shader_variable_AsRenderTargetView,
5441 d3d10_effect_shader_variable_AsDepthStencilView,
5442 d3d10_effect_shader_variable_AsConstantBuffer,
5443 d3d10_effect_shader_variable_AsShader,
5444 d3d10_effect_shader_variable_AsBlend,
5445 d3d10_effect_shader_variable_AsDepthStencil,
5446 d3d10_effect_shader_variable_AsRasterizer,
5447 d3d10_effect_shader_variable_AsSampler,
5448 d3d10_effect_shader_variable_SetRawValue,
5449 d3d10_effect_shader_variable_GetRawValue,
5450 /* ID3D10EffectShaderVariable methods */
5451 d3d10_effect_shader_variable_GetShaderDesc,
5452 d3d10_effect_shader_variable_GetVertexShader,
5453 d3d10_effect_shader_variable_GetGeometryShader,
5454 d3d10_effect_shader_variable_GetPixelShader,
5455 d3d10_effect_shader_variable_GetInputSignatureElementDesc,
5456 d3d10_effect_shader_variable_GetOutputSignatureElementDesc,
5459 /* ID3D10EffectVariable methods */
5461 static BOOL STDMETHODCALLTYPE d3d10_effect_blend_variable_IsValid(ID3D10EffectBlendVariable *iface)
5463 TRACE("iface %p\n", iface);
5465 return (struct d3d10_effect_variable *)iface != &null_blend_variable;
5468 static struct ID3D10EffectType * STDMETHODCALLTYPE d3d10_effect_blend_variable_GetType(
5469 ID3D10EffectBlendVariable *iface)
5471 return d3d10_effect_variable_GetType((ID3D10EffectVariable *)iface);
5474 static HRESULT STDMETHODCALLTYPE d3d10_effect_blend_variable_GetDesc(ID3D10EffectBlendVariable *iface,
5475 D3D10_EFFECT_VARIABLE_DESC *desc)
5477 return d3d10_effect_variable_GetDesc((ID3D10EffectVariable *)iface, desc);
5480 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_blend_variable_GetAnnotationByIndex(
5481 ID3D10EffectBlendVariable *iface, UINT index)
5483 return d3d10_effect_variable_GetAnnotationByIndex((ID3D10EffectVariable *)iface, index);
5486 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_blend_variable_GetAnnotationByName(
5487 ID3D10EffectBlendVariable *iface, LPCSTR name)
5489 return d3d10_effect_variable_GetAnnotationByName((ID3D10EffectVariable *)iface, name);
5492 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_blend_variable_GetMemberByIndex(
5493 ID3D10EffectBlendVariable *iface, UINT index)
5495 return d3d10_effect_variable_GetMemberByIndex((ID3D10EffectVariable *)iface, index);
5498 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_blend_variable_GetMemberByName(
5499 ID3D10EffectBlendVariable *iface, LPCSTR name)
5501 return d3d10_effect_variable_GetMemberByName((ID3D10EffectVariable *)iface, name);
5504 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_blend_variable_GetMemberBySemantic(
5505 ID3D10EffectBlendVariable *iface, LPCSTR semantic)
5507 return d3d10_effect_variable_GetMemberBySemantic((ID3D10EffectVariable *)iface, semantic);
5510 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_blend_variable_GetElement(
5511 ID3D10EffectBlendVariable *iface, UINT index)
5513 return d3d10_effect_variable_GetElement((ID3D10EffectVariable *)iface, index);
5516 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_blend_variable_GetParentConstantBuffer(
5517 ID3D10EffectBlendVariable *iface)
5519 return d3d10_effect_variable_GetParentConstantBuffer((ID3D10EffectVariable *)iface);
5522 static struct ID3D10EffectScalarVariable * STDMETHODCALLTYPE d3d10_effect_blend_variable_AsScalar(
5523 ID3D10EffectBlendVariable *iface)
5525 return d3d10_effect_variable_AsScalar((ID3D10EffectVariable *)iface);
5528 static struct ID3D10EffectVectorVariable * STDMETHODCALLTYPE d3d10_effect_blend_variable_AsVector(
5529 ID3D10EffectBlendVariable *iface)
5531 return d3d10_effect_variable_AsVector((ID3D10EffectVariable *)iface);
5534 static struct ID3D10EffectMatrixVariable * STDMETHODCALLTYPE d3d10_effect_blend_variable_AsMatrix(
5535 ID3D10EffectBlendVariable *iface)
5537 return d3d10_effect_variable_AsMatrix((ID3D10EffectVariable *)iface);
5540 static struct ID3D10EffectStringVariable * STDMETHODCALLTYPE d3d10_effect_blend_variable_AsString(
5541 ID3D10EffectBlendVariable *iface)
5543 return d3d10_effect_variable_AsString((ID3D10EffectVariable *)iface);
5546 static struct ID3D10EffectShaderResourceVariable * STDMETHODCALLTYPE d3d10_effect_blend_variable_AsShaderResource(
5547 ID3D10EffectBlendVariable *iface)
5549 return d3d10_effect_variable_AsShaderResource((ID3D10EffectVariable *)iface);
5552 static struct ID3D10EffectRenderTargetViewVariable * STDMETHODCALLTYPE d3d10_effect_blend_variable_AsRenderTargetView(
5553 ID3D10EffectBlendVariable *iface)
5555 return d3d10_effect_variable_AsRenderTargetView((ID3D10EffectVariable *)iface);
5558 static struct ID3D10EffectDepthStencilViewVariable * STDMETHODCALLTYPE d3d10_effect_blend_variable_AsDepthStencilView(
5559 ID3D10EffectBlendVariable *iface)
5561 return d3d10_effect_variable_AsDepthStencilView((ID3D10EffectVariable *)iface);
5564 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_blend_variable_AsConstantBuffer(
5565 ID3D10EffectBlendVariable *iface)
5567 return d3d10_effect_variable_AsConstantBuffer((ID3D10EffectVariable *)iface);
5570 static struct ID3D10EffectShaderVariable * STDMETHODCALLTYPE d3d10_effect_blend_variable_AsShader(
5571 ID3D10EffectBlendVariable *iface)
5573 return d3d10_effect_variable_AsShader((ID3D10EffectVariable *)iface);
5576 static struct ID3D10EffectBlendVariable * STDMETHODCALLTYPE d3d10_effect_blend_variable_AsBlend(
5577 ID3D10EffectBlendVariable *iface)
5579 return d3d10_effect_variable_AsBlend((ID3D10EffectVariable *)iface);
5582 static struct ID3D10EffectDepthStencilVariable * STDMETHODCALLTYPE d3d10_effect_blend_variable_AsDepthStencil(
5583 ID3D10EffectBlendVariable *iface)
5585 return d3d10_effect_variable_AsDepthStencil((ID3D10EffectVariable *)iface);
5588 static struct ID3D10EffectRasterizerVariable * STDMETHODCALLTYPE d3d10_effect_blend_variable_AsRasterizer(
5589 ID3D10EffectBlendVariable *iface)
5591 return d3d10_effect_variable_AsRasterizer((ID3D10EffectVariable *)iface);
5594 static struct ID3D10EffectSamplerVariable * STDMETHODCALLTYPE d3d10_effect_blend_variable_AsSampler(
5595 ID3D10EffectBlendVariable *iface)
5597 return d3d10_effect_variable_AsSampler((ID3D10EffectVariable *)iface);
5600 static HRESULT STDMETHODCALLTYPE d3d10_effect_blend_variable_SetRawValue(ID3D10EffectBlendVariable *iface,
5601 void *data, UINT offset, UINT count)
5603 return d3d10_effect_variable_SetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
5606 static HRESULT STDMETHODCALLTYPE d3d10_effect_blend_variable_GetRawValue(ID3D10EffectBlendVariable *iface,
5607 void *data, UINT offset, UINT count)
5609 return d3d10_effect_variable_GetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
5612 /* ID3D10EffectBlendVariable methods */
5614 static HRESULT STDMETHODCALLTYPE d3d10_effect_blend_variable_GetBlendState(ID3D10EffectBlendVariable *iface,
5615 UINT index, ID3D10BlendState **blend_state)
5617 FIXME("iface %p, index %u, blend_state %p stub!\n", iface, index, blend_state);
5619 return E_NOTIMPL;
5622 static HRESULT STDMETHODCALLTYPE d3d10_effect_blend_variable_GetBackingStore(ID3D10EffectBlendVariable *iface,
5623 UINT index, D3D10_BLEND_DESC *desc)
5625 FIXME("iface %p, index %u, desc %p stub!\n", iface, index, desc);
5627 return E_NOTIMPL;
5631 static const struct ID3D10EffectBlendVariableVtbl d3d10_effect_blend_variable_vtbl =
5633 /* ID3D10EffectVariable methods */
5634 d3d10_effect_blend_variable_IsValid,
5635 d3d10_effect_blend_variable_GetType,
5636 d3d10_effect_blend_variable_GetDesc,
5637 d3d10_effect_blend_variable_GetAnnotationByIndex,
5638 d3d10_effect_blend_variable_GetAnnotationByName,
5639 d3d10_effect_blend_variable_GetMemberByIndex,
5640 d3d10_effect_blend_variable_GetMemberByName,
5641 d3d10_effect_blend_variable_GetMemberBySemantic,
5642 d3d10_effect_blend_variable_GetElement,
5643 d3d10_effect_blend_variable_GetParentConstantBuffer,
5644 d3d10_effect_blend_variable_AsScalar,
5645 d3d10_effect_blend_variable_AsVector,
5646 d3d10_effect_blend_variable_AsMatrix,
5647 d3d10_effect_blend_variable_AsString,
5648 d3d10_effect_blend_variable_AsShaderResource,
5649 d3d10_effect_blend_variable_AsRenderTargetView,
5650 d3d10_effect_blend_variable_AsDepthStencilView,
5651 d3d10_effect_blend_variable_AsConstantBuffer,
5652 d3d10_effect_blend_variable_AsShader,
5653 d3d10_effect_blend_variable_AsBlend,
5654 d3d10_effect_blend_variable_AsDepthStencil,
5655 d3d10_effect_blend_variable_AsRasterizer,
5656 d3d10_effect_blend_variable_AsSampler,
5657 d3d10_effect_blend_variable_SetRawValue,
5658 d3d10_effect_blend_variable_GetRawValue,
5659 /* ID3D10EffectBlendVariable methods */
5660 d3d10_effect_blend_variable_GetBlendState,
5661 d3d10_effect_blend_variable_GetBackingStore,
5664 /* ID3D10EffectVariable methods */
5666 static BOOL STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_IsValid(ID3D10EffectDepthStencilVariable *iface)
5668 TRACE("iface %p\n", iface);
5670 return (struct d3d10_effect_variable *)iface != &null_depth_stencil_variable;
5673 static struct ID3D10EffectType * STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_GetType(
5674 ID3D10EffectDepthStencilVariable *iface)
5676 return d3d10_effect_variable_GetType((ID3D10EffectVariable *)iface);
5679 static HRESULT STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_GetDesc(ID3D10EffectDepthStencilVariable *iface,
5680 D3D10_EFFECT_VARIABLE_DESC *desc)
5682 return d3d10_effect_variable_GetDesc((ID3D10EffectVariable *)iface, desc);
5685 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_GetAnnotationByIndex(
5686 ID3D10EffectDepthStencilVariable *iface, UINT index)
5688 return d3d10_effect_variable_GetAnnotationByIndex((ID3D10EffectVariable *)iface, index);
5691 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_GetAnnotationByName(
5692 ID3D10EffectDepthStencilVariable *iface, LPCSTR name)
5694 return d3d10_effect_variable_GetAnnotationByName((ID3D10EffectVariable *)iface, name);
5697 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_GetMemberByIndex(
5698 ID3D10EffectDepthStencilVariable *iface, UINT index)
5700 return d3d10_effect_variable_GetMemberByIndex((ID3D10EffectVariable *)iface, index);
5703 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_GetMemberByName(
5704 ID3D10EffectDepthStencilVariable *iface, LPCSTR name)
5706 return d3d10_effect_variable_GetMemberByName((ID3D10EffectVariable *)iface, name);
5709 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_GetMemberBySemantic(
5710 ID3D10EffectDepthStencilVariable *iface, LPCSTR semantic)
5712 return d3d10_effect_variable_GetMemberBySemantic((ID3D10EffectVariable *)iface, semantic);
5715 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_GetElement(
5716 ID3D10EffectDepthStencilVariable *iface, UINT index)
5718 return d3d10_effect_variable_GetElement((ID3D10EffectVariable *)iface, index);
5721 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_GetParentConstantBuffer(
5722 ID3D10EffectDepthStencilVariable *iface)
5724 return d3d10_effect_variable_GetParentConstantBuffer((ID3D10EffectVariable *)iface);
5727 static struct ID3D10EffectScalarVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_AsScalar(
5728 ID3D10EffectDepthStencilVariable *iface)
5730 return d3d10_effect_variable_AsScalar((ID3D10EffectVariable *)iface);
5733 static struct ID3D10EffectVectorVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_AsVector(
5734 ID3D10EffectDepthStencilVariable *iface)
5736 return d3d10_effect_variable_AsVector((ID3D10EffectVariable *)iface);
5739 static struct ID3D10EffectMatrixVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_AsMatrix(
5740 ID3D10EffectDepthStencilVariable *iface)
5742 return d3d10_effect_variable_AsMatrix((ID3D10EffectVariable *)iface);
5745 static struct ID3D10EffectStringVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_AsString(
5746 ID3D10EffectDepthStencilVariable *iface)
5748 return d3d10_effect_variable_AsString((ID3D10EffectVariable *)iface);
5751 static struct ID3D10EffectShaderResourceVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_AsShaderResource(
5752 ID3D10EffectDepthStencilVariable *iface)
5754 return d3d10_effect_variable_AsShaderResource((ID3D10EffectVariable *)iface);
5757 static struct ID3D10EffectRenderTargetViewVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_AsRenderTargetView(
5758 ID3D10EffectDepthStencilVariable *iface)
5760 return d3d10_effect_variable_AsRenderTargetView((ID3D10EffectVariable *)iface);
5763 static struct ID3D10EffectDepthStencilViewVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_AsDepthStencilView(
5764 ID3D10EffectDepthStencilVariable *iface)
5766 return d3d10_effect_variable_AsDepthStencilView((ID3D10EffectVariable *)iface);
5769 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_AsConstantBuffer(
5770 ID3D10EffectDepthStencilVariable *iface)
5772 return d3d10_effect_variable_AsConstantBuffer((ID3D10EffectVariable *)iface);
5775 static struct ID3D10EffectShaderVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_AsShader(
5776 ID3D10EffectDepthStencilVariable *iface)
5778 return d3d10_effect_variable_AsShader((ID3D10EffectVariable *)iface);
5781 static struct ID3D10EffectBlendVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_AsBlend(
5782 ID3D10EffectDepthStencilVariable *iface)
5784 return d3d10_effect_variable_AsBlend((ID3D10EffectVariable *)iface);
5787 static struct ID3D10EffectDepthStencilVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_AsDepthStencil(
5788 ID3D10EffectDepthStencilVariable *iface)
5790 return d3d10_effect_variable_AsDepthStencil((ID3D10EffectVariable *)iface);
5793 static struct ID3D10EffectRasterizerVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_AsRasterizer(
5794 ID3D10EffectDepthStencilVariable *iface)
5796 return d3d10_effect_variable_AsRasterizer((ID3D10EffectVariable *)iface);
5799 static struct ID3D10EffectSamplerVariable * STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_AsSampler(
5800 ID3D10EffectDepthStencilVariable *iface)
5802 return d3d10_effect_variable_AsSampler((ID3D10EffectVariable *)iface);
5805 static HRESULT STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_SetRawValue(ID3D10EffectDepthStencilVariable *iface,
5806 void *data, UINT offset, UINT count)
5808 return d3d10_effect_variable_SetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
5811 static HRESULT STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_GetRawValue(ID3D10EffectDepthStencilVariable *iface,
5812 void *data, UINT offset, UINT count)
5814 return d3d10_effect_variable_GetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
5817 /* ID3D10EffectDepthStencilVariable methods */
5819 static HRESULT STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_GetDepthStencilState(ID3D10EffectDepthStencilVariable *iface,
5820 UINT index, ID3D10DepthStencilState **depth_stencil_state)
5822 FIXME("iface %p, index %u, depth_stencil_state %p stub!\n", iface, index, depth_stencil_state);
5824 return E_NOTIMPL;
5827 static HRESULT STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_GetBackingStore(ID3D10EffectDepthStencilVariable *iface,
5828 UINT index, D3D10_DEPTH_STENCIL_DESC *desc)
5830 FIXME("iface %p, index %u, desc %p stub!\n", iface, index, desc);
5832 return E_NOTIMPL;
5836 static const struct ID3D10EffectDepthStencilVariableVtbl d3d10_effect_depth_stencil_variable_vtbl =
5838 /* ID3D10EffectVariable methods */
5839 d3d10_effect_depth_stencil_variable_IsValid,
5840 d3d10_effect_depth_stencil_variable_GetType,
5841 d3d10_effect_depth_stencil_variable_GetDesc,
5842 d3d10_effect_depth_stencil_variable_GetAnnotationByIndex,
5843 d3d10_effect_depth_stencil_variable_GetAnnotationByName,
5844 d3d10_effect_depth_stencil_variable_GetMemberByIndex,
5845 d3d10_effect_depth_stencil_variable_GetMemberByName,
5846 d3d10_effect_depth_stencil_variable_GetMemberBySemantic,
5847 d3d10_effect_depth_stencil_variable_GetElement,
5848 d3d10_effect_depth_stencil_variable_GetParentConstantBuffer,
5849 d3d10_effect_depth_stencil_variable_AsScalar,
5850 d3d10_effect_depth_stencil_variable_AsVector,
5851 d3d10_effect_depth_stencil_variable_AsMatrix,
5852 d3d10_effect_depth_stencil_variable_AsString,
5853 d3d10_effect_depth_stencil_variable_AsShaderResource,
5854 d3d10_effect_depth_stencil_variable_AsRenderTargetView,
5855 d3d10_effect_depth_stencil_variable_AsDepthStencilView,
5856 d3d10_effect_depth_stencil_variable_AsConstantBuffer,
5857 d3d10_effect_depth_stencil_variable_AsShader,
5858 d3d10_effect_depth_stencil_variable_AsBlend,
5859 d3d10_effect_depth_stencil_variable_AsDepthStencil,
5860 d3d10_effect_depth_stencil_variable_AsRasterizer,
5861 d3d10_effect_depth_stencil_variable_AsSampler,
5862 d3d10_effect_depth_stencil_variable_SetRawValue,
5863 d3d10_effect_depth_stencil_variable_GetRawValue,
5864 /* ID3D10EffectDepthStencilVariable methods */
5865 d3d10_effect_depth_stencil_variable_GetDepthStencilState,
5866 d3d10_effect_depth_stencil_variable_GetBackingStore,
5869 /* ID3D10EffectVariable methods */
5871 static BOOL STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_IsValid(ID3D10EffectRasterizerVariable *iface)
5873 TRACE("iface %p\n", iface);
5875 return (struct d3d10_effect_variable *)iface != &null_rasterizer_variable;
5878 static struct ID3D10EffectType * STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_GetType(
5879 ID3D10EffectRasterizerVariable *iface)
5881 return d3d10_effect_variable_GetType((ID3D10EffectVariable *)iface);
5884 static HRESULT STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_GetDesc(ID3D10EffectRasterizerVariable *iface,
5885 D3D10_EFFECT_VARIABLE_DESC *desc)
5887 return d3d10_effect_variable_GetDesc((ID3D10EffectVariable *)iface, desc);
5890 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_GetAnnotationByIndex(
5891 ID3D10EffectRasterizerVariable *iface, UINT index)
5893 return d3d10_effect_variable_GetAnnotationByIndex((ID3D10EffectVariable *)iface, index);
5896 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_GetAnnotationByName(
5897 ID3D10EffectRasterizerVariable *iface, LPCSTR name)
5899 return d3d10_effect_variable_GetAnnotationByName((ID3D10EffectVariable *)iface, name);
5902 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_GetMemberByIndex(
5903 ID3D10EffectRasterizerVariable *iface, UINT index)
5905 return d3d10_effect_variable_GetMemberByIndex((ID3D10EffectVariable *)iface, index);
5908 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_GetMemberByName(
5909 ID3D10EffectRasterizerVariable *iface, LPCSTR name)
5911 return d3d10_effect_variable_GetMemberByName((ID3D10EffectVariable *)iface, name);
5914 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_GetMemberBySemantic(
5915 ID3D10EffectRasterizerVariable *iface, LPCSTR semantic)
5917 return d3d10_effect_variable_GetMemberBySemantic((ID3D10EffectVariable *)iface, semantic);
5920 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_GetElement(
5921 ID3D10EffectRasterizerVariable *iface, UINT index)
5923 return d3d10_effect_variable_GetElement((ID3D10EffectVariable *)iface, index);
5926 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_GetParentConstantBuffer(
5927 ID3D10EffectRasterizerVariable *iface)
5929 return d3d10_effect_variable_GetParentConstantBuffer((ID3D10EffectVariable *)iface);
5932 static struct ID3D10EffectScalarVariable * STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_AsScalar(
5933 ID3D10EffectRasterizerVariable *iface)
5935 return d3d10_effect_variable_AsScalar((ID3D10EffectVariable *)iface);
5938 static struct ID3D10EffectVectorVariable * STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_AsVector(
5939 ID3D10EffectRasterizerVariable *iface)
5941 return d3d10_effect_variable_AsVector((ID3D10EffectVariable *)iface);
5944 static struct ID3D10EffectMatrixVariable * STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_AsMatrix(
5945 ID3D10EffectRasterizerVariable *iface)
5947 return d3d10_effect_variable_AsMatrix((ID3D10EffectVariable *)iface);
5950 static struct ID3D10EffectStringVariable * STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_AsString(
5951 ID3D10EffectRasterizerVariable *iface)
5953 return d3d10_effect_variable_AsString((ID3D10EffectVariable *)iface);
5956 static struct ID3D10EffectShaderResourceVariable * STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_AsShaderResource(
5957 ID3D10EffectRasterizerVariable *iface)
5959 return d3d10_effect_variable_AsShaderResource((ID3D10EffectVariable *)iface);
5962 static struct ID3D10EffectRenderTargetViewVariable * STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_AsRenderTargetView(
5963 ID3D10EffectRasterizerVariable *iface)
5965 return d3d10_effect_variable_AsRenderTargetView((ID3D10EffectVariable *)iface);
5968 static struct ID3D10EffectDepthStencilViewVariable * STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_AsDepthStencilView(
5969 ID3D10EffectRasterizerVariable *iface)
5971 return d3d10_effect_variable_AsDepthStencilView((ID3D10EffectVariable *)iface);
5974 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_AsConstantBuffer(
5975 ID3D10EffectRasterizerVariable *iface)
5977 return d3d10_effect_variable_AsConstantBuffer((ID3D10EffectVariable *)iface);
5980 static struct ID3D10EffectShaderVariable * STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_AsShader(
5981 ID3D10EffectRasterizerVariable *iface)
5983 return d3d10_effect_variable_AsShader((ID3D10EffectVariable *)iface);
5986 static struct ID3D10EffectBlendVariable * STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_AsBlend(
5987 ID3D10EffectRasterizerVariable *iface)
5989 return d3d10_effect_variable_AsBlend((ID3D10EffectVariable *)iface);
5992 static struct ID3D10EffectDepthStencilVariable * STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_AsDepthStencil(
5993 ID3D10EffectRasterizerVariable *iface)
5995 return d3d10_effect_variable_AsDepthStencil((ID3D10EffectVariable *)iface);
5998 static struct ID3D10EffectRasterizerVariable * STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_AsRasterizer(
5999 ID3D10EffectRasterizerVariable *iface)
6001 return d3d10_effect_variable_AsRasterizer((ID3D10EffectVariable *)iface);
6004 static struct ID3D10EffectSamplerVariable * STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_AsSampler(
6005 ID3D10EffectRasterizerVariable *iface)
6007 return d3d10_effect_variable_AsSampler((ID3D10EffectVariable *)iface);
6010 static HRESULT STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_SetRawValue(ID3D10EffectRasterizerVariable *iface,
6011 void *data, UINT offset, UINT count)
6013 return d3d10_effect_variable_SetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
6016 static HRESULT STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_GetRawValue(ID3D10EffectRasterizerVariable *iface,
6017 void *data, UINT offset, UINT count)
6019 return d3d10_effect_variable_GetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
6022 /* ID3D10EffectRasterizerVariable methods */
6024 static HRESULT STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_GetRasterizerState(ID3D10EffectRasterizerVariable *iface,
6025 UINT index, ID3D10RasterizerState **rasterizer_state)
6027 FIXME("iface %p, index %u, rasterizer_state %p stub!\n", iface, index, rasterizer_state);
6029 return E_NOTIMPL;
6032 static HRESULT STDMETHODCALLTYPE d3d10_effect_rasterizer_variable_GetBackingStore(ID3D10EffectRasterizerVariable *iface,
6033 UINT index, D3D10_RASTERIZER_DESC *desc)
6035 FIXME("iface %p, index %u, desc %p stub!\n", iface, index, desc);
6037 return E_NOTIMPL;
6041 static const struct ID3D10EffectRasterizerVariableVtbl d3d10_effect_rasterizer_variable_vtbl =
6043 /* ID3D10EffectVariable methods */
6044 d3d10_effect_rasterizer_variable_IsValid,
6045 d3d10_effect_rasterizer_variable_GetType,
6046 d3d10_effect_rasterizer_variable_GetDesc,
6047 d3d10_effect_rasterizer_variable_GetAnnotationByIndex,
6048 d3d10_effect_rasterizer_variable_GetAnnotationByName,
6049 d3d10_effect_rasterizer_variable_GetMemberByIndex,
6050 d3d10_effect_rasterizer_variable_GetMemberByName,
6051 d3d10_effect_rasterizer_variable_GetMemberBySemantic,
6052 d3d10_effect_rasterizer_variable_GetElement,
6053 d3d10_effect_rasterizer_variable_GetParentConstantBuffer,
6054 d3d10_effect_rasterizer_variable_AsScalar,
6055 d3d10_effect_rasterizer_variable_AsVector,
6056 d3d10_effect_rasterizer_variable_AsMatrix,
6057 d3d10_effect_rasterizer_variable_AsString,
6058 d3d10_effect_rasterizer_variable_AsShaderResource,
6059 d3d10_effect_rasterizer_variable_AsRenderTargetView,
6060 d3d10_effect_rasterizer_variable_AsDepthStencilView,
6061 d3d10_effect_rasterizer_variable_AsConstantBuffer,
6062 d3d10_effect_rasterizer_variable_AsShader,
6063 d3d10_effect_rasterizer_variable_AsBlend,
6064 d3d10_effect_rasterizer_variable_AsDepthStencil,
6065 d3d10_effect_rasterizer_variable_AsRasterizer,
6066 d3d10_effect_rasterizer_variable_AsSampler,
6067 d3d10_effect_rasterizer_variable_SetRawValue,
6068 d3d10_effect_rasterizer_variable_GetRawValue,
6069 /* ID3D10EffectRasterizerVariable methods */
6070 d3d10_effect_rasterizer_variable_GetRasterizerState,
6071 d3d10_effect_rasterizer_variable_GetBackingStore,
6074 /* ID3D10EffectVariable methods */
6076 static BOOL STDMETHODCALLTYPE d3d10_effect_sampler_variable_IsValid(ID3D10EffectSamplerVariable *iface)
6078 TRACE("iface %p\n", iface);
6080 return (struct d3d10_effect_variable *)iface != &null_sampler_variable;
6083 static struct ID3D10EffectType * STDMETHODCALLTYPE d3d10_effect_sampler_variable_GetType(
6084 ID3D10EffectSamplerVariable *iface)
6086 return d3d10_effect_variable_GetType((ID3D10EffectVariable *)iface);
6089 static HRESULT STDMETHODCALLTYPE d3d10_effect_sampler_variable_GetDesc(ID3D10EffectSamplerVariable *iface,
6090 D3D10_EFFECT_VARIABLE_DESC *desc)
6092 return d3d10_effect_variable_GetDesc((ID3D10EffectVariable *)iface, desc);
6095 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_sampler_variable_GetAnnotationByIndex(
6096 ID3D10EffectSamplerVariable *iface, UINT index)
6098 return d3d10_effect_variable_GetAnnotationByIndex((ID3D10EffectVariable *)iface, index);
6101 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_sampler_variable_GetAnnotationByName(
6102 ID3D10EffectSamplerVariable *iface, LPCSTR name)
6104 return d3d10_effect_variable_GetAnnotationByName((ID3D10EffectVariable *)iface, name);
6107 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_sampler_variable_GetMemberByIndex(
6108 ID3D10EffectSamplerVariable *iface, UINT index)
6110 return d3d10_effect_variable_GetMemberByIndex((ID3D10EffectVariable *)iface, index);
6113 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_sampler_variable_GetMemberByName(
6114 ID3D10EffectSamplerVariable *iface, LPCSTR name)
6116 return d3d10_effect_variable_GetMemberByName((ID3D10EffectVariable *)iface, name);
6119 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_sampler_variable_GetMemberBySemantic(
6120 ID3D10EffectSamplerVariable *iface, LPCSTR semantic)
6122 return d3d10_effect_variable_GetMemberBySemantic((ID3D10EffectVariable *)iface, semantic);
6125 static struct ID3D10EffectVariable * STDMETHODCALLTYPE d3d10_effect_sampler_variable_GetElement(
6126 ID3D10EffectSamplerVariable *iface, UINT index)
6128 return d3d10_effect_variable_GetElement((ID3D10EffectVariable *)iface, index);
6131 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_sampler_variable_GetParentConstantBuffer(
6132 ID3D10EffectSamplerVariable *iface)
6134 return d3d10_effect_variable_GetParentConstantBuffer((ID3D10EffectVariable *)iface);
6137 static struct ID3D10EffectScalarVariable * STDMETHODCALLTYPE d3d10_effect_sampler_variable_AsScalar(
6138 ID3D10EffectSamplerVariable *iface)
6140 return d3d10_effect_variable_AsScalar((ID3D10EffectVariable *)iface);
6143 static struct ID3D10EffectVectorVariable * STDMETHODCALLTYPE d3d10_effect_sampler_variable_AsVector(
6144 ID3D10EffectSamplerVariable *iface)
6146 return d3d10_effect_variable_AsVector((ID3D10EffectVariable *)iface);
6149 static struct ID3D10EffectMatrixVariable * STDMETHODCALLTYPE d3d10_effect_sampler_variable_AsMatrix(
6150 ID3D10EffectSamplerVariable *iface)
6152 return d3d10_effect_variable_AsMatrix((ID3D10EffectVariable *)iface);
6155 static struct ID3D10EffectStringVariable * STDMETHODCALLTYPE d3d10_effect_sampler_variable_AsString(
6156 ID3D10EffectSamplerVariable *iface)
6158 return d3d10_effect_variable_AsString((ID3D10EffectVariable *)iface);
6161 static struct ID3D10EffectShaderResourceVariable * STDMETHODCALLTYPE d3d10_effect_sampler_variable_AsShaderResource(
6162 ID3D10EffectSamplerVariable *iface)
6164 return d3d10_effect_variable_AsShaderResource((ID3D10EffectVariable *)iface);
6167 static struct ID3D10EffectRenderTargetViewVariable * STDMETHODCALLTYPE d3d10_effect_sampler_variable_AsRenderTargetView(
6168 ID3D10EffectSamplerVariable *iface)
6170 return d3d10_effect_variable_AsRenderTargetView((ID3D10EffectVariable *)iface);
6173 static struct ID3D10EffectDepthStencilViewVariable * STDMETHODCALLTYPE d3d10_effect_sampler_variable_AsDepthStencilView(
6174 ID3D10EffectSamplerVariable *iface)
6176 return d3d10_effect_variable_AsDepthStencilView((ID3D10EffectVariable *)iface);
6179 static struct ID3D10EffectConstantBuffer * STDMETHODCALLTYPE d3d10_effect_sampler_variable_AsConstantBuffer(
6180 ID3D10EffectSamplerVariable *iface)
6182 return d3d10_effect_variable_AsConstantBuffer((ID3D10EffectVariable *)iface);
6185 static struct ID3D10EffectShaderVariable * STDMETHODCALLTYPE d3d10_effect_sampler_variable_AsShader(
6186 ID3D10EffectSamplerVariable *iface)
6188 return d3d10_effect_variable_AsShader((ID3D10EffectVariable *)iface);
6191 static struct ID3D10EffectBlendVariable * STDMETHODCALLTYPE d3d10_effect_sampler_variable_AsBlend(
6192 ID3D10EffectSamplerVariable *iface)
6194 return d3d10_effect_variable_AsBlend((ID3D10EffectVariable *)iface);
6197 static struct ID3D10EffectDepthStencilVariable * STDMETHODCALLTYPE d3d10_effect_sampler_variable_AsDepthStencil(
6198 ID3D10EffectSamplerVariable *iface)
6200 return d3d10_effect_variable_AsDepthStencil((ID3D10EffectVariable *)iface);
6203 static struct ID3D10EffectRasterizerVariable * STDMETHODCALLTYPE d3d10_effect_sampler_variable_AsRasterizer(
6204 ID3D10EffectSamplerVariable *iface)
6206 return d3d10_effect_variable_AsRasterizer((ID3D10EffectVariable *)iface);
6209 static struct ID3D10EffectSamplerVariable * STDMETHODCALLTYPE d3d10_effect_sampler_variable_AsSampler(
6210 ID3D10EffectSamplerVariable *iface)
6212 return d3d10_effect_variable_AsSampler((ID3D10EffectVariable *)iface);
6215 static HRESULT STDMETHODCALLTYPE d3d10_effect_sampler_variable_SetRawValue(ID3D10EffectSamplerVariable *iface,
6216 void *data, UINT offset, UINT count)
6218 return d3d10_effect_variable_SetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
6221 static HRESULT STDMETHODCALLTYPE d3d10_effect_sampler_variable_GetRawValue(ID3D10EffectSamplerVariable *iface,
6222 void *data, UINT offset, UINT count)
6224 return d3d10_effect_variable_GetRawValue((ID3D10EffectVariable *)iface, data, offset, count);
6227 /* ID3D10EffectSamplerVariable methods */
6229 static HRESULT STDMETHODCALLTYPE d3d10_effect_sampler_variable_GetSampler(ID3D10EffectSamplerVariable *iface,
6230 UINT index, ID3D10SamplerState **sampler)
6232 FIXME("iface %p, index %u, sampler %p stub!\n", iface, index, sampler);
6234 return E_NOTIMPL;
6237 static HRESULT STDMETHODCALLTYPE d3d10_effect_sampler_variable_GetBackingStore(ID3D10EffectSamplerVariable *iface,
6238 UINT index, D3D10_SAMPLER_DESC *desc)
6240 FIXME("iface %p, index %u, desc %p stub!\n", iface, index, desc);
6242 return E_NOTIMPL;
6246 static const struct ID3D10EffectSamplerVariableVtbl d3d10_effect_sampler_variable_vtbl =
6248 /* ID3D10EffectVariable methods */
6249 d3d10_effect_sampler_variable_IsValid,
6250 d3d10_effect_sampler_variable_GetType,
6251 d3d10_effect_sampler_variable_GetDesc,
6252 d3d10_effect_sampler_variable_GetAnnotationByIndex,
6253 d3d10_effect_sampler_variable_GetAnnotationByName,
6254 d3d10_effect_sampler_variable_GetMemberByIndex,
6255 d3d10_effect_sampler_variable_GetMemberByName,
6256 d3d10_effect_sampler_variable_GetMemberBySemantic,
6257 d3d10_effect_sampler_variable_GetElement,
6258 d3d10_effect_sampler_variable_GetParentConstantBuffer,
6259 d3d10_effect_sampler_variable_AsScalar,
6260 d3d10_effect_sampler_variable_AsVector,
6261 d3d10_effect_sampler_variable_AsMatrix,
6262 d3d10_effect_sampler_variable_AsString,
6263 d3d10_effect_sampler_variable_AsShaderResource,
6264 d3d10_effect_sampler_variable_AsRenderTargetView,
6265 d3d10_effect_sampler_variable_AsDepthStencilView,
6266 d3d10_effect_sampler_variable_AsConstantBuffer,
6267 d3d10_effect_sampler_variable_AsShader,
6268 d3d10_effect_sampler_variable_AsBlend,
6269 d3d10_effect_sampler_variable_AsDepthStencil,
6270 d3d10_effect_sampler_variable_AsRasterizer,
6271 d3d10_effect_sampler_variable_AsSampler,
6272 d3d10_effect_sampler_variable_SetRawValue,
6273 d3d10_effect_sampler_variable_GetRawValue,
6274 /* ID3D10EffectSamplerVariable methods */
6275 d3d10_effect_sampler_variable_GetSampler,
6276 d3d10_effect_sampler_variable_GetBackingStore,
6279 /* ID3D10EffectType methods */
6281 static BOOL STDMETHODCALLTYPE d3d10_effect_type_IsValid(ID3D10EffectType *iface)
6283 TRACE("iface %p\n", iface);
6285 return (struct d3d10_effect_type *)iface != &null_type;
6288 static HRESULT STDMETHODCALLTYPE d3d10_effect_type_GetDesc(ID3D10EffectType *iface, D3D10_EFFECT_TYPE_DESC *desc)
6290 struct d3d10_effect_type *This = (struct d3d10_effect_type *)iface;
6292 TRACE("iface %p, desc %p\n", iface, desc);
6294 if (This == &null_type)
6296 WARN("Null type specified\n");
6297 return E_FAIL;
6300 if (!desc)
6302 WARN("Invalid argument specified\n");
6303 return E_INVALIDARG;
6306 desc->TypeName = This->name;
6307 desc->Class = This->type_class;
6308 desc->Type = This->basetype;
6309 desc->Elements = This->element_count;
6310 desc->Members = This->member_count;
6311 desc->Rows = This->row_count;
6312 desc->Columns = This->column_count;
6313 desc->PackedSize = This->size_packed;
6314 desc->UnpackedSize = This->size_unpacked;
6315 desc->Stride = This->stride;
6317 return S_OK;
6320 static struct ID3D10EffectType * STDMETHODCALLTYPE d3d10_effect_type_GetMemberTypeByIndex(ID3D10EffectType *iface,
6321 UINT index)
6323 struct d3d10_effect_type *This = (struct d3d10_effect_type *)iface;
6324 struct d3d10_effect_type *t;
6326 TRACE("iface %p, index %u\n", iface, index);
6328 if (index >= This->member_count)
6330 WARN("Invalid index specified\n");
6331 return (ID3D10EffectType *)&null_type;
6334 t = (&This->members[index])->type;
6336 TRACE("Returning member %p, %s\n", t, debugstr_a(t->name));
6338 return (ID3D10EffectType *)t;
6341 static struct ID3D10EffectType * STDMETHODCALLTYPE d3d10_effect_type_GetMemberTypeByName(ID3D10EffectType *iface,
6342 LPCSTR name)
6344 struct d3d10_effect_type *This = (struct d3d10_effect_type *)iface;
6345 unsigned int i;
6347 TRACE("iface %p, name %s\n", iface, debugstr_a(name));
6349 if (!name)
6351 WARN("Invalid name specified\n");
6352 return (ID3D10EffectType *)&null_type;
6355 for (i = 0; i < This->member_count; ++i)
6357 struct d3d10_effect_type_member *typem = &This->members[i];
6359 if (typem->name)
6361 if (!strcmp(typem->name, name))
6363 TRACE("Returning type %p.\n", typem->type);
6364 return (ID3D10EffectType *)typem->type;
6369 WARN("Invalid name specified\n");
6371 return (ID3D10EffectType *)&null_type;
6374 static struct ID3D10EffectType * STDMETHODCALLTYPE d3d10_effect_type_GetMemberTypeBySemantic(ID3D10EffectType *iface,
6375 LPCSTR semantic)
6377 struct d3d10_effect_type *This = (struct d3d10_effect_type *)iface;
6378 unsigned int i;
6380 TRACE("iface %p, semantic %s\n", iface, debugstr_a(semantic));
6382 if (!semantic)
6384 WARN("Invalid semantic specified\n");
6385 return (ID3D10EffectType *)&null_type;
6388 for (i = 0; i < This->member_count; ++i)
6390 struct d3d10_effect_type_member *typem = &This->members[i];
6392 if (typem->semantic)
6394 if (!strcmp(typem->semantic, semantic))
6396 TRACE("Returning type %p.\n", typem->type);
6397 return (ID3D10EffectType *)typem->type;
6402 WARN("Invalid semantic specified\n");
6404 return (ID3D10EffectType *)&null_type;
6407 static LPCSTR STDMETHODCALLTYPE d3d10_effect_type_GetMemberName(ID3D10EffectType *iface, UINT index)
6409 struct d3d10_effect_type *This = (struct d3d10_effect_type *)iface;
6410 struct d3d10_effect_type_member *typem;
6412 TRACE("iface %p, index %u\n", iface, index);
6414 if (index >= This->member_count)
6416 WARN("Invalid index specified\n");
6417 return NULL;
6420 typem = &This->members[index];
6422 TRACE("Returning name %s\n", debugstr_a(typem->name));
6424 return typem->name;
6427 static LPCSTR STDMETHODCALLTYPE d3d10_effect_type_GetMemberSemantic(ID3D10EffectType *iface, UINT index)
6429 struct d3d10_effect_type *This = (struct d3d10_effect_type *)iface;
6430 struct d3d10_effect_type_member *typem;
6432 TRACE("iface %p, index %u\n", iface, index);
6434 if (index >= This->member_count)
6436 WARN("Invalid index specified\n");
6437 return NULL;
6440 typem = &This->members[index];
6442 TRACE("Returning semantic %s\n", debugstr_a(typem->semantic));
6444 return typem->semantic;
6447 static const struct ID3D10EffectTypeVtbl d3d10_effect_type_vtbl =
6449 /* ID3D10EffectType */
6450 d3d10_effect_type_IsValid,
6451 d3d10_effect_type_GetDesc,
6452 d3d10_effect_type_GetMemberTypeByIndex,
6453 d3d10_effect_type_GetMemberTypeByName,
6454 d3d10_effect_type_GetMemberTypeBySemantic,
6455 d3d10_effect_type_GetMemberName,
6456 d3d10_effect_type_GetMemberSemantic,