30#define INT_FLOAT_MULTI 255.0f
31#define INT_FLOAT_MULTI_INVERSE (1/INT_FLOAT_MULTI)
36#define PARAMETER_FLAG_SHARED 1
38#define INITIAL_POOL_SIZE 16
39#define INITIAL_PARAM_BLOCK_SIZE 1024
204#define INITIAL_SHARED_DATA_SIZE 4
225 unsigned int flags,
struct ID3DXEffectPool *
pool,
const char *skip_constants_string);
596 if (!
param->element_count)
607 TRACE(
"Free parameter %p, name %s, type %s, element %#x, child %#x.\n",
param,
param->name,
610 if (
param->param_eval)
635 if (
param->annotations)
639 for (
i = 0;
i <
param->annotation_count; ++
i)
656 if (
pass->annotations)
658 for (
i = 0;
i <
pass->annotation_count; ++
i)
666 for (
i = 0;
i <
pass->state_count; ++
i)
680 TRACE(
"Free technique %p\n", technique);
713 return sizeof(*record) +
record->bytes;
772 ID3DXEffectPool *
pool;
788 for (
i = 0;
i <
effect->technique_count; ++
i)
795 for (
i = 0;
i <
effect->object_count; ++
i)
807 IUnknown_Release(
effect->manager);
817 for (
i = 0;
i < 4; ++
i)
819 if (i < param->columns)
830 for (
i = 0;
i <
param->columns; ++
i)
838 for (
i = 0;
i < 4; ++
i)
840 for (
k = 0;
k < 4; ++
k)
844 if ((i < param->rows) && (
k <
param->columns))
858 if (
param->columns == 4)
872 for (
k = 0;
k <
param->columns; ++
k)
884 for (
k = 0;
k <
param->columns; ++
k)
895 *param_data =
strdup(
string);
898 ERR(
"Out of memory.\n");
924 if (new_texture == old_texture)
928 IUnknown_AddRef(new_texture);
930 IUnknown_Release(old_texture);
984 TRACE(
"Returning parameter %p\n", temp_parameter);
985 return temp_parameter;
988 FIXME(
"Unhandled case \"%c\"\n", *--part);
993 TRACE(
"Parameter not found\n");
1013 temp_parameter = &annotations[
i];
1017 TRACE(
"Returning annotation %p\n", temp_parameter);
1018 return temp_parameter;
1031 FIXME(
"Unhandled case \"%c\"\n", *--part);
1037 TRACE(
"Annotation not found\n");
1045 unsigned int name_len, param_name_len;
1048 unsigned int full_name_size;
1067 full_name_size = name_len + param_name_len + 2;
1072 ERR(
"Out of memory.\n");
1083 full_name[param_name_len] =
'.';
1084 memcpy(full_name + param_name_len + 1,
name, name_len);
1085 full_name[param_name_len + 1 + name_len] = 0;
1101 temp_parameter = ¶meter->
members[
i];
1105 TRACE(
"Returning parameter %p\n", temp_parameter);
1106 return temp_parameter;
1119 FIXME(
"Unhandled case \"%c\"\n", *--part);
1125 TRACE(
"Parameter not found\n");
1131 return (0xfeff0000 | ((
major) << 8) | (
minor));
1136 BOOL update_all,
BOOL *param_dirty)
1140 *param_value =
NULL;
1142 *param_dirty =
FALSE;
1144 switch (
state->type)
1152 *param_value =
param->data;
1156 unsigned int array_idx;
1158 {
"",
NULL,
NULL,
NULL,
NULL,
D3DXPC_SCALAR,
D3DXPT_INT, 1, 1, 0, 0, 0,
sizeof(array_idx)};
1162 if (!
param->param_eval)
1164 FIXME(
"Preshader structure is null.\n");
1176 array_idx =
state->index;
1178 ref_param =
state->referenced_param;
1179 TRACE(
"Array index %u, stored array index %u, element_count %u.\n", array_idx,
state->index,
1183 if (array_idx == ~0
u)
1185 WARN(
"Array index is -1, setting to 0.\n");
1191 WARN(
"Computed array index %u is larger than array size %u.\n",
1195 selected_param = &ref_param->
members[array_idx];
1197 state->index = array_idx;
1199 *param_value = selected_param->
data;
1200 *out_param = selected_param;
1204 if (
param->param_eval)
1207 *param_value =
param->data;
1213 *param_dirty =
TRUE;
1221 FIXME(
"No preshader for FXLC parameter.\n");
1238 return pass->annotation_count;
1263 FIXME(
"Functions are not handled, yet!\n");
1272 unsigned int member_count;
1277 member_count =
param->element_count ?
param->element_count :
param->member_count;
1278 for (
i = 0;
i < member_count; ++
i)
1314 ERR(
"Out of memory.\n");
1320 block->size = alloc_size;
1321 block->buffer = new_alloc;
1392 TRACE(
"%s (%.8e %.8e %.8e %.8e).\n", light_tbl[
op].
name,
c.r,
c.g,
c.b,
c.a);
1401 TRACE(
"%s (%.8e %.8e %.8e).\n", light_tbl[
op].
name,
v.x,
v.y,
v.z);
1413 float v = *(
float *)
value;
1419 WARN(
"Unknown light parameter %u.\n",
op);
1444 float v = *(
float *)
value;
1457 TRACE(
"%s, value (%.8e %.8e %.8e %.8e).\n", material_tbl[
op].
name,
c.r,
c.g,
c.b,
c.a);
1462 WARN(
"Unknown material parameter %u.\n",
op);
1488 void *
buffer = value_ptr;
1495 if (
param->type != const_tbl[
op].type)
1497 FIXME(
"Unexpected param type %u.\n",
param->type);
1503 unsigned int param_data_size;
1507 if (
param->bytes % const_tbl[
op].elem_size)
1515 ERR(
"Out of memory.\n");
1518 is_heap_buffer =
TRUE;
1525 param_data_size =
min(
param->bytes, const_tbl[
op].elem_size);
1569 unsigned int parameters_count;
1572 if (!
param->param_eval)
1574 FIXME(
"param_eval structure is null.\n");
1578 param->param_eval, update_all)))
1580 params =
param->param_eval->shader_inputs.inputs_param;
1581 cdesc =
param->param_eval->shader_inputs.inputs;
1582 parameters_count =
param->param_eval->shader_inputs.input_count;
1584 for (
i = 0;
i < parameters_count; ++
i)
1589 unsigned int sampler_idx;
1591 for (sampler_idx = 0; sampler_idx < cdesc[
i].
RegisterCount; ++sampler_idx)
1595 cdesc[
i].RegisterIndex,
sampler->state_count);
1620 update_all, ¶m_dirty)))
1627 WARN(
"Returning D3D_OK on out of bounds array access.\n");
1633 if (!(update_all || param_dirty
1652 unit = parent_index == ~0
u ?
state->index : parent_index;
1654 *(IDirect3DBaseTexture9 **)param_value);
1655 return SET_D3D_STATE(effect, SetTexture,
unit, *(IDirect3DBaseTexture9 **)param_value);
1682 sampler = parent_index == ~0
u ?
state->index : parent_index;
1685 *(
DWORD *)param_value);
1688 TRACE(
"%s, shader %p.\n",
state_table[
state->operation].name, *(IDirect3DVertexShader9 **)param_value);
1689 if ((update_all || param_dirty)
1691 *(IDirect3DVertexShader9 **)param_value)))
1692 ERR(
"Could not set vertex shader, hr %#lx.\n",
hr);
1693 else if (*(IDirect3DVertexShader9 **)param_value)
1697 TRACE(
"%s, shader %p.\n",
state_table[
state->operation].name, *(IDirect3DPixelShader9 **)param_value);
1698 if ((update_all || param_dirty)
1700 *(IDirect3DPixelShader9 **)param_value)))
1701 ERR(
"Could not set pixel shader, hr %#lx.\n",
hr);
1702 else if (*(IDirect3DPixelShader9 **)param_value)
1732 return SET_D3D_STATE(effect, SetNPatchMode, *(
float *)param_value);
1737 param, param_value);
1752 TRACE(
"effect %p, pass %p, state_count %u.\n", effect,
pass,
pass->state_count);
1755 for (
i = 0;
i <
pass->state_count; ++
i)
1759 WARN(
"Error applying state, hr %#lx.\n",
hr);
1771 WARN(
"Error setting light, hr %#lx.\n",
hr);
1781 WARN(
"Error setting material, hr %#lx.\n",
hr);
1786 pass->update_version = new_update_version;
1792 unsigned char *member_data =
data;
1800 member_data +=
param->members[
i].bytes;
1833 unsigned int i, free_entry_index;
1839 free_entry_index =
pool->size;
1840 for (
i = 0;
i <
pool->size; ++
i)
1842 if (!
pool->shared_data[
i].count)
1843 free_entry_index =
i;
1847 if (
i ==
pool->size)
1849 i = free_entry_index;
1850 if (
i ==
pool->size)
1867 if (new_alloc !=
pool->shared_data)
1871 for (
j = 0;
j <
pool->size; ++
j)
1872 for (
k = 0;
k < new_alloc[
j].
count; ++
k)
1876 pool->shared_data = new_alloc;
1879 pool->shared_data[
i].data =
param->param.data;
1885 new_count = ++
pool->shared_data[
i].count;
1886 if (new_count >=
pool->shared_data[
i].size)
1894 pool->shared_data[
i].parameters = new_alloc;
1899 pool->shared_data[
i].parameters[new_count - 1] =
param;
1907 ERR(
"Out of memory.\n");
1919 unsigned int new_count;
1923 new_count = --
param->shared_data->count;
1925 TRACE(
"param %p, param->shared_data %p, new_count %d.\n",
param,
param->shared_data, new_count);
1931 for (
i = 0;
i < new_count; ++
i)
1936 &
param->shared_data->parameters[
i + 1],
1937 sizeof(
param->shared_data->parameters[
i]) * (new_count -
i));
1947 param->shared_data->size = 0;
1972 iface->lpVtbl->AddRef(iface);
1987 TRACE(
"%p increasing refcount to %lu.\n", effect, refcount);
1997 TRACE(
"%p decreasing refcount to %lu.\n", effect, refcount);
2010 TRACE(
"iface %p, desc %p.\n", iface,
desc);
2014 WARN(
"Invalid argument specified.\n");
2018 desc->Creator =
"D3DX Effect Compiler";
2019 desc->Functions = 0;
2032 TRACE(
"iface %p, parameter %p, desc %p.\n", iface, parameter,
desc);
2036 WARN(
"Invalid argument specified.\n");
2049 desc->StructMembers =
param->member_count;
2062 TRACE(
"iface %p, technique %p, desc %p.\n", iface, technique,
desc);
2066 WARN(
"Invalid argument specified.\n");
2087 WARN(
"Invalid argument specified.\n");
2092 desc->Annotations =
pass->annotation_count;
2094 desc->pVertexShaderFunction =
NULL;
2100 for (
i = 0;
i <
pass->state_count; ++
i)
2114 FALSE, ¶m_dirty)))
2119 desc->pVertexShaderFunction =
data;
2141 TRACE(
"iface %p, parameter %p, index %u.\n", iface, parameter,
index);
2145 if (index < effect->
params.count)
2160 WARN(
"Parameter not found.\n");
2199 for (
i = 0;
i < effect->
params.count; ++
i)
2201 temp_param = &effect->
params.parameters[
i].param;
2207 TRACE(
"Returning parameter %p\n", temp_param);
2215 TRACE(
"Returning parameter %p\n", temp_param);
2222 for (
i = 0;
i <
param->member_count; ++
i)
2230 TRACE(
"Returning parameter %p\n", temp_param);
2238 TRACE(
"Returning parameter %p\n", temp_param);
2244 WARN(
"Parameter not found.\n");
2254 TRACE(
"iface %p, parameter %p, index %u.\n", iface, parameter,
index);
2258 if (index < effect->
params.count)
2273 WARN(
"Parameter not found.\n");
2282 TRACE(
"iface %p, index %u.\n", iface,
index);
2286 WARN(
"Invalid argument specified.\n");
2305 TRACE(
"Returning technique %p\n",
t);
2309 WARN(
"Technique not found.\n");
2319 TRACE(
"iface %p, technique %p, index %u.\n", iface, technique,
index);
2327 WARN(
"Pass not found.\n");
2355 WARN(
"Pass not found.\n");
2362 FIXME(
"iface %p, index %u stub.\n", iface,
index);
2378 unsigned int annotation_count;
2380 TRACE(
"iface %p, object %p, index %u.\n", iface,
object,
index);
2384 if (
index < annotation_count)
2386 TRACE(
"Returning parameter %p\n", &annotations[
index]);
2390 WARN(
"Annotation not found.\n");
2401 unsigned int annotation_count;
2407 WARN(
"Invalid argument specified\n");
2420 WARN(
"Annotation not found.\n");
2431 TRACE(
"iface %p, parameter %p, data %p, bytes %u.\n", iface, parameter,
data,
bytes);
2435 WARN(
"Invalid parameter %p specified.\n", parameter);
2440 WARN(
"Parameter is a sampler, returning E_FAIL.\n");
2447 WARN(
"Invalid argument specified.\n");
2457 TRACE(
"iface %p, parameter %p, data %p, bytes %u.\n", iface, parameter,
data,
bytes);
2461 WARN(
"Invalid parameter %p specified.\n", parameter);
2466 WARN(
"Parameter is a sampler, returning E_FAIL.\n");
2474 switch (
param->type)
2493 for (
i = 0;
i < (
param->element_count ?
param->element_count : 1); ++
i)
2497 IUnknown_AddRef(unk);
2512 WARN(
"Parameter not found.\n");
2522 TRACE(
"iface %p, parameter %p, b %#x.\n", iface, parameter,
b);
2531 WARN(
"Parameter not found.\n");
2541 TRACE(
"iface %p, parameter %p, b %p.\n", iface, parameter,
b);
2546 TRACE(
"Returning %s\n", *
b ?
"TRUE" :
"FALSE");
2550 WARN(
"Parameter not found.\n");
2561 TRACE(
"iface %p, parameter %p, b %p, count %u.\n", iface, parameter,
b,
count);
2569 switch (
param->class)
2592 WARN(
"Parameter not found.\n");
2602 TRACE(
"iface %p, parameter %p, b %p, count %u.\n", iface, parameter,
b,
count);
2618 WARN(
"Parameter not found.\n");
2628 TRACE(
"iface %p, parameter %p, n %d.\n", iface, parameter,
n);
2649 TRACE(
"Vector fixup.\n");
2664 WARN(
"Parameter not found.\n");
2674 TRACE(
"iface %p, parameter %p, n %p.\n", iface, parameter,
n);
2681 TRACE(
"Returning %d.\n", *
n);
2689 TRACE(
"Vector fixup.\n");
2697 TRACE(
"Returning %d.\n", *
n);
2702 WARN(
"Parameter not found.\n");
2713 TRACE(
"iface %p, parameter %p, n %p, count %u.\n", iface, parameter,
n,
count);
2721 switch (
param->class)
2741 WARN(
"Parameter not found.\n");
2751 TRACE(
"iface %p, parameter %p, n %p, count %u.\n", iface, parameter,
n,
count);
2765 WARN(
"Parameter not found.\n");
2775 TRACE(
"iface %p, parameter %p, f %.8e.\n", iface, parameter,
f);
2787 WARN(
"Parameter not found.\n");
2797 TRACE(
"iface %p, parameter %p, f %p.\n", iface, parameter,
f);
2802 TRACE(
"Returning %f.\n", *
f);
2806 WARN(
"Parameter not found.\n");
2818 TRACE(
"iface %p, parameter %p, f %p, count %u.\n", iface, parameter,
f,
count);
2826 switch (
param->class)
2846 WARN(
"Parameter not found.\n");
2856 TRACE(
"iface %p, parameter %p, f %p, count %u.\n", iface, parameter,
f,
count);
2870 WARN(
"Parameter not found.\n");
2880 TRACE(
"iface %p, parameter %p, vector %p.\n", iface, parameter,
vector);
2886 switch (
param->class)
2894 TRACE(
"INT fixup.\n");
2924 WARN(
"Parameter not found.\n");
2934 TRACE(
"iface %p, parameter %p, vector %p.\n", iface, parameter,
vector);
2940 switch (
param->class)
2946 TRACE(
"INT fixup.\n");
2967 WARN(
"Parameter not found.\n");
2978 TRACE(
"iface %p, parameter %p, vector %p, count %u.\n", iface, parameter,
vector,
count);
2987 switch (
param->class)
2994 if (
param->columns == 4)
3002 param->columns *
sizeof(
float));
3024 WARN(
"Parameter not found.\n");
3035 TRACE(
"iface %p, parameter %p, vector %p, count %u.\n", iface, parameter,
vector,
count);
3046 switch (
param->class)
3065 WARN(
"Parameter not found.\n");
3075 TRACE(
"iface %p, parameter %p, matrix %p.\n", iface, parameter,
matrix);
3081 switch (
param->class)
3100 WARN(
"Parameter not found.\n");
3110 TRACE(
"iface %p, parameter %p, matrix %p.\n", iface, parameter,
matrix);
3116 switch (
param->class)
3134 WARN(
"Parameter not found.\n");
3145 TRACE(
"iface %p, parameter %p, matrix %p, count %u.\n", iface, parameter,
matrix,
count);
3154 switch (
param->class)
3158 *
param->columns *
sizeof(
float),
TRUE);
3178 WARN(
"Parameter not found.\n");
3189 TRACE(
"iface %p, parameter %p, matrix %p, count %u.\n", iface, parameter,
matrix,
count);
3200 switch (
param->class)
3219 WARN(
"Parameter not found.\n");
3230 TRACE(
"iface %p, parameter %p, matrix %p, count %u.\n", iface, parameter,
matrix,
count);
3237 switch (
param->class)
3241 *
param->columns *
sizeof(
float),
TRUE);
3245 *
param->columns *
sizeof(
float));
3260 WARN(
"Parameter not found.\n");
3271 TRACE(
"iface %p, parameter %p, matrix %p, count %u.\n", iface, parameter,
matrix,
count);
3282 switch (
param->class)
3300 WARN(
"Parameter not found.\n");
3311 TRACE(
"iface %p, parameter %p, matrix %p.\n", iface, parameter,
matrix);
3317 switch (
param->class)
3336 WARN(
"Parameter not found.\n");
3347 TRACE(
"iface %p, parameter %p, matrix %p.\n", iface, parameter,
matrix);
3353 switch (
param->class)
3374 WARN(
"Parameter not found.\n");
3385 TRACE(
"iface %p, parameter %p, matrix %p, count %u.\n", iface, parameter,
matrix,
count);
3394 switch (
param->class)
3398 *
param->columns *
sizeof(
float),
TRUE);
3402 +
i *
param->rows *
param->columns *
sizeof(
float));
3418 WARN(
"Parameter not found.\n");
3429 TRACE(
"iface %p, parameter %p, matrix %p, count %u.\n", iface, parameter,
matrix,
count);
3440 switch (
param->class)
3459 WARN(
"Parameter not found.\n");
3470 TRACE(
"iface %p, parameter %p, matrix %p, count %u.\n", iface, parameter,
matrix,
count);
3477 switch (
param->class)
3481 *
param->columns *
sizeof(
float),
TRUE);
3485 +
i *
param->rows *
param->columns *
sizeof(
float));
3500 WARN(
"Parameter not found.\n");
3511 TRACE(
"iface %p, parameter %p, matrix %p, count %u.\n", iface, parameter,
matrix,
count);
3522 switch (
param->class)
3540 WARN(
"Parameter not found.\n");
3550 TRACE(
"iface %p, parameter %p, string %s.\n", iface, parameter,
debugstr_a(
string));
3555 WARN(
"Parameter not found.\n");
3565 TRACE(
"iface %p, parameter %p, string %p.\n", iface, parameter,
string);
3569 *
string = *(
const char **)
param->data;
3574 WARN(
"Parameter not found.\n");
3580 IDirect3DBaseTexture9 *
texture)
3585 TRACE(
"iface %p, parameter %p, texture %p.\n", iface, parameter,
texture);
3593 sizeof(
void *),
texture != *(IDirect3DBaseTexture9 **)
param->data);
3594 IDirect3DBaseTexture9 *old_texture = *
data;
3609 WARN(
"Parameter not found.\n");
3615 IDirect3DBaseTexture9 **
texture)
3620 TRACE(
"iface %p, parameter %p, texture %p.\n", iface, parameter,
texture);
3634 WARN(
"Parameter not found.\n");
3640 IDirect3DPixelShader9 **
shader)
3645 TRACE(
"iface %p, parameter %p, shader %p.\n", iface, parameter,
shader);
3649 if ((*
shader = *(IDirect3DPixelShader9 **)
param->data))
3655 WARN(
"Parameter not found.\n");
3661 IDirect3DVertexShader9 **
shader)
3666 TRACE(
"iface %p, parameter %p, shader %p.\n", iface, parameter,
shader);
3670 if ((*
shader = *(IDirect3DVertexShader9 **)
param->data))
3676 WARN(
"Parameter not found.\n");
3683 FIXME(
"iface %p, parameter %p, start %u, end %u stub.\n", iface, parameter,
start,
end);
3693 TRACE(
"iface %p, pool %p.\n", effect,
pool);
3697 WARN(
"Invalid argument supplied.\n");
3704 *
pool = &effect->
pool->ID3DXEffectPool_iface;
3718 TRACE(
"iface %p, technique %p\n", iface, technique);
3723 TRACE(
"Technique %p\n", tech);
3727 WARN(
"Technique not found.\n");
3748 FIXME(
"iface %p, technique %p semi-stub.\n", iface, technique);
3759 for (
j = 0;
j <
pass->state_count; ++
j)
3772 FALSE, ¶m_dirty)))
3795 TRACE(
"iface %p, technique %p, next_technique %p.\n", iface, technique, next_technique);
3805 if (tech == prev_tech)
3827 *next_technique =
NULL;
3838 unsigned int i, param_count;
3844 param_count =
param_eval->shader_inputs.input_count;
3845 for (
i = 0;
i < param_count; ++
i)
3852 param_count =
param_eval->pres.inputs.input_count;
3853 for (
i = 0;
i < param_count; ++
i)
3893 unsigned int sampler_idx;
3894 unsigned int samplers_count =
max(
param->element_count, 1);
3896 for (sampler_idx = 0; sampler_idx < samplers_count; ++sampler_idx)
3908 member_count =
param->element_count ?
param->element_count :
param->member_count;
3909 for (
i = 0;
i < member_count; ++
i)
3923 if (!tech || !
param)
3929 for (
j = 0;
j <
pass->state_count; ++
j)
3945 TRACE(
"iface %p, parameter %p, technique %p.\n", iface, parameter, technique);
3963 WARN(
"Invalid flags %#lx specified.\n",
flags);
3967 TRACE(
"State capturing disabled.\n");
3976 ID3DXEffectStateManager *manager;
3981 ERR(
"BeginStateBlock failed, hr %#lx.\n",
hr);
3985 ERR(
"EndStateBlock failed, hr %#lx.\n",
hr);
3989 ERR(
"StateBlock Capture failed, hr %#lx.\n",
hr);
4000 WARN(
"Invalid argument supplied.\n");
4010 TRACE(
"iface %p, pass %u\n", effect,
pass);
4014 WARN(
"Effect is not started, returning D3DERR_INVALIDCALL.\n");
4030 WARN(
"Invalid argument supplied.\n");
4039 TRACE(
"iface %p.\n", iface);
4043 WARN(
"Called without an active pass.\n");
4055 if (
This->active_pass)
4061 WARN(
"Invalid call.\n");
4071 TRACE(
"iface %p.\n", iface);
4078 TRACE(
"State restoring disabled.\n");
4087 ERR(
"State block apply failed, hr %#lx.\n",
hr);
4090 ERR(
"No saved state.\n");
4106 WARN(
"Invalid argument supplied.\n");
4121 struct IDirect3DVolumeTexture9 *volume_texture;
4122 struct IDirect3DCubeTexture9 *cube_texture;
4123 struct IDirect3DTexture9 *
texture;
4129 switch (
param->type)
4142 volume_texture = *(IDirect3DVolumeTexture9 **)
param->data;
4143 if (!volume_texture)
4150 cube_texture = *(IDirect3DCubeTexture9 **)
param->data;
4171 TRACE(
"iface %p.\n", iface);
4173 for (
i = 0;
i < effect->
params.count; ++
i)
4195 if (
This->manager) IUnknown_Release(
This->manager);
4210 WARN(
"Invalid argument supplied.\n");
4214 if (
This->manager) IUnknown_AddRef(
This->manager);
4224 TRACE(
"iface %p.\n", iface);
4228 WARN(
"Parameter block is already started.\n");
4246 TRACE(
"iface %p.\n", iface);
4248 if (!
effect->current_parameter_block)
4250 WARN(
"No active parameter block.\n");
4257 ret->buffer = new_buffer;
4270 TRACE(
"iface %p, parameter_block %p.\n", iface, parameter_block);
4286#if D3DX_SDK_VERSION >= 26
4293 TRACE(
"iface %p, parameter_block %p.\n", iface, parameter_block);
4308 WARN(
"Block is not found in issued block list, not freeing memory.\n");
4332 if (!(*(
char **)
dst->data =
strdup(*(
char **)
src->data)))
4348 IUnknown_AddRef(iface);
4363 FIXME(
"Unhandled parameter type %#x.\n",
src->type);
4373 unsigned int i,
j,
k;
4391 src->flags, &
src->pool->ID3DXEffectPool_iface,
src->skip_constants_string)))
4397 for (
i = 0;
i <
src->params.count; ++
i)
4407 for (
i = 0;
i <
src->technique_count; ++
i)
4425 *
out = &
dst->ID3DXEffect_iface;
4426 TRACE(
"Created effect %p.\n",
dst);
4430#if D3DX_SDK_VERSION >= 27
4434 FIXME(
"iface %p, parameter %p, data %p, byte_offset %u, bytes %u stub!\n",
4435 iface, parameter,
data, byte_offset,
bytes);
4522#if D3DX_SDK_VERSION >= 26
4523 d3dx_effect_DeleteParameterBlock,
4526#if D3DX_SDK_VERSION >= 27
4527 d3dx_effect_SetRawValue
4544 iface->lpVtbl->AddRef(iface);
4560 TRACE(
"%p increasing refcount to %lu.\n", iface, refcount);
4570 TRACE(
"%p decreasing refcount to %lu.\n", iface, refcount);
4583 FIXME(
"iface %p, desc %p stub!\n", iface,
desc);
4591 FIXME(
"iface %p, parameter %p, desc %p stub!\n", iface, parameter,
desc);
4599 FIXME(
"iface %p, technique %p, desc %p stub!\n", iface, technique,
desc);
4607 FIXME(
"iface %p, pass %p, desc %p stub!\n", iface,
pass,
desc);
4623 FIXME(
"iface %p, parameter %p, index %u stub!\n", iface, parameter,
index);
4639 FIXME(
"iface %p, parameter %p, semantic %s stub!\n", iface, parameter,
debugstr_a(semantic));
4647 FIXME(
"iface %p, parameter %p, index %u stub!\n", iface, parameter,
index);
4654 FIXME(
"iface %p, index %u stub!\n", iface,
index);
4668 FIXME(
"iface %p, technique %p, index %u stub!\n", iface, technique,
index);
4683 FIXME(
"iface %p, index %u stub!\n", iface,
index);
4698 FIXME(
"iface %p, object %p, index %u stub!\n", iface,
object,
index);
4714 FIXME(
"iface %p, parameter %p, data %p, bytes %u stub!\n", iface, parameter,
data,
bytes);
4722 FIXME(
"iface %p, parameter %p, data %p, bytes %u stub!\n", iface, parameter,
data,
bytes);
4729 FIXME(
"iface %p, parameter %p, b %#x stub!\n", iface, parameter,
b);
4736 FIXME(
"iface %p, parameter %p, b %p stub!\n", iface, parameter,
b);
4744 FIXME(
"iface %p, parameter %p, b %p, count %u stub!\n", iface, parameter,
b,
count);
4752 FIXME(
"iface %p, parameter %p, b %p, count %u stub!\n", iface, parameter,
b,
count);
4759 FIXME(
"iface %p, parameter %p, n %d stub!\n", iface, parameter,
n);
4766 FIXME(
"iface %p, parameter %p, n %p stub!\n", iface, parameter,
n);
4774 FIXME(
"iface %p, parameter %p, n %p, count %u stub!\n", iface, parameter,
n,
count);
4782 FIXME(
"iface %p, parameter %p, n %p, count %u stub!\n", iface, parameter,
n,
count);
4789 FIXME(
"iface %p, parameter %p, f %.8e stub!\n", iface, parameter,
f);
4796 FIXME(
"iface %p, parameter %p, f %p stub!\n", iface, parameter,
f);
4804 FIXME(
"iface %p, parameter %p, f %p, count %u stub!\n", iface, parameter,
f,
count);
4812 FIXME(
"iface %p, parameter %p, f %p, count %u stub!\n", iface, parameter,
f,
count);
4820 FIXME(
"iface %p, parameter %p, vector %p stub!\n", iface, parameter,
vector);
4828 FIXME(
"iface %p, parameter %p, vector %p stub!\n", iface, parameter,
vector);
4836 FIXME(
"iface %p, parameter %p, vector %p, count %u stub!\n", iface, parameter,
vector,
count);
4844 FIXME(
"iface %p, parameter %p, vector %p, count %u stub!\n", iface, parameter,
vector,
count);
4852 FIXME(
"iface %p, parameter %p, matrix %p stub!\n", iface, parameter,
matrix);
4860 FIXME(
"iface %p, parameter %p, matrix %p stub!\n", iface, parameter,
matrix);
4868 FIXME(
"iface %p, parameter %p, matrix %p, count %u stub!\n", iface, parameter,
matrix,
count);
4876 FIXME(
"iface %p, parameter %p, matrix %p, count %u stub!\n", iface, parameter,
matrix,
count);
4884 FIXME(
"iface %p, parameter %p, matrix %p, count %u stub!\n", iface, parameter,
matrix,
count);
4892 FIXME(
"iface %p, parameter %p, matrix %p, count %u stub!\n", iface, parameter,
matrix,
count);
4900 FIXME(
"iface %p, parameter %p, matrix %p stub!\n", iface, parameter,
matrix);
4908 FIXME(
"iface %p, parameter %p, matrix %p stub!\n", iface, parameter,
matrix);
4916 FIXME(
"iface %p, parameter %p, matrix %p, count %u stub!\n", iface, parameter,
matrix,
count);
4924 FIXME(
"iface %p, parameter %p, matrix %p, count %u stub!\n", iface, parameter,
matrix,
count);
4932 FIXME(
"iface %p, parameter %p, matrix %p, count %u stub!\n", iface, parameter,
matrix,
count);
4940 FIXME(
"iface %p, parameter %p, matrix %p, count %u stub!\n", iface, parameter,
matrix,
count);
4948 FIXME(
"iface %p, parameter %p, string %s stub!\n", iface, parameter,
debugstr_a(
string));
4956 FIXME(
"iface %p, parameter %p, string %p stub!\n", iface, parameter,
string);
4964 FIXME(
"iface %p, parameter %p, texture %p stub!\n", iface, parameter,
texture);
4972 FIXME(
"iface %p, parameter %p, texture %p stub!\n", iface, parameter,
texture);
4980 FIXME(
"iface %p, parameter %p, shader %p stub!\n", iface, parameter,
shader);
4988 FIXME(
"iface %p, parameter %p, shader %p stub!\n", iface, parameter,
shader);
4996 FIXME(
"iface %p, parameter %p, start %u, end %u stub!\n", iface, parameter,
start,
end);
5004 FIXME(
"iface %p, parameter %p, literal %#x stub!\n", iface, parameter, literal);
5011 FIXME(
"iface %p, parameter %p, literal %p stub!\n", iface, parameter, literal);
5019 FIXME(
"iface %p, flags %#lx, effect %p, error_msgs %p stub!\n", iface,
flags, effect, error_msgs);
5028 FIXME(
"iface %p, function %p, target %s, flags %#lx, shader %p, error_msgs %p, constant_table %p stub!\n",
5114 ERR(
"Out of memory\n");
5123 WARN(
"Failed to parse state %u\n",
i);
5149 if (
param->element_count)
5153 for (
i = 0;
i <
param->element_count; ++
i)
5160 WARN(
"Failed to parse value %u\n",
i);
5170 switch(
param->class)
5182 for (
i = 0;
i <
param->member_count; ++
i)
5189 WARN(
"Failed to parse value %u\n",
i);
5198 switch (
param->type)
5230 WARN(
"Failed to parse sampler\n");
5266 ERR(
"Failed to allocate data memory.\n");
5270 switch(
param->class)
5293 WARN(
"Failed to parse value\n");
5316 ERR(
"Failed to allocate name memory.\n");
5333 FIXME(
"Overwriting object id %u!\n", object_id);
5335 TRACE(
"Overwriting object id 0.\n");
5338 object->data =
NULL;
5350 ERR(
"Failed to allocate object memory.\n");
5357 *
ptr += ((
object->size + 3) & ~3);
5373 TRACE(
"Adding parameter %p (%s - parent %p, element %u) to the rbtree.\n",
5378 unsigned int parent_name_len =
strlen(parent_name);
5380 unsigned int part_str_len;
5387 part_str_len =
strlen(part_str);
5396 len = parent_name_len + part_str_len + name_len + 1;
5400 ERR(
"Out of memory.\n");
5404 memcpy(
param->full_name, parent_name, parent_name_len);
5405 memcpy(
param->full_name + parent_name_len, part_str, part_str_len);
5406 memcpy(
param->full_name + parent_name_len + part_str_len,
param->name, name_len);
5413 ERR(
"Out of memory.\n");
5417 TRACE(
"Full name is %s.\n",
param->full_name);
5421 for (
i = 0;
i <
param->top_level_param->annotation_count; ++
i)
5424 if (
param->element_count)
5425 for (
i = 0;
i <
param->element_count; ++
i)
5428 for (
i = 0;
i <
param->member_count; ++
i)
5454 WARN(
"Failed to parse name\n");
5463 WARN(
"Failed to parse semantic\n");
5468 TRACE(
"Elements: %u.\n",
param->element_count);
5470 switch (
param->class)
5498 TRACE(
"Members: %u.\n",
param->member_count);
5502 switch (
param->type)
5512 param->bytes =
sizeof(
void *);
5541 param->element_count = 0;
5548 if (
param->element_count)
5550 unsigned int param_bytes = 0;
5551 const char *save_ptr = *
ptr;
5554 if (!
param->members)
5556 ERR(
"Out of memory\n");
5561 for (
i = 0;
i <
param->element_count; ++
i)
5569 WARN(
"Failed to parse member %u\n",
i);
5573 param_bytes +=
param->members[
i].bytes;
5576 param->bytes = param_bytes;
5578 else if (
param->member_count)
5581 if (!
param->members)
5583 ERR(
"Out of memory\n");
5588 for (
i = 0;
i <
param->member_count; ++
i)
5594 WARN(
"Failed to parse member %u\n",
i);
5641 WARN(
"Failed to parse type definition.\n");
5650 WARN(
"Failed to parse value.\n");
5672 WARN(
"Unknown state operation %u.\n",
state->operation);
5686 WARN(
"Failed to parse type definition\n");
5695 WARN(
"Failed to parse value\n");
5701 &&
param->bytes <
sizeof(
void *))
5705 FIXME(
"Unexpected parameter for object, param->type %#x, param->class %#x, *param->data %#x.\n",
5714 ERR(
"Out of memory.\n");
5718 memset(new_data, 0,
sizeof(
void *));
5719 param->data = new_data;
5720 param->bytes =
sizeof(
void *);
5751 TRACE(
"Annotation count: %u.\n",
param->annotation_count);
5756 WARN(
"Failed to parse type definition.\n");
5763 WARN(
"Failed to parse value.\n");
5767 if (
param->annotation_count)
5770 if (!
param->annotations)
5772 ERR(
"Out of memory.\n");
5777 for (
i = 0;
i <
param->annotation_count; ++
i)
5783 WARN(
"Failed to parse annotation.\n");
5793 if (
param->annotations)
5795 for (
i = 0;
i <
param->annotation_count; ++
i)
5818 WARN(
"Failed to parse name.\n");
5823 TRACE(
"Annotation count: %u.\n",
pass->annotation_count);
5826 TRACE(
"State count: %u.\n",
pass->state_count);
5828 if (
pass->annotation_count)
5831 if (!
pass->annotations)
5833 ERR(
"Out of memory\n");
5838 for (
i = 0;
i <
pass->annotation_count; ++
i)
5844 WARN(
"Failed to parse annotation %u\n",
i);
5850 if (
pass->state_count)
5852 states =
calloc(
pass->state_count,
sizeof(*states));
5855 ERR(
"Out of memory\n");
5860 for (
i = 0;
i <
pass->state_count; ++
i)
5865 WARN(
"Failed to parse annotation %u\n",
i);
5872 pass->states = states;
5878 if (
pass->annotations)
5880 for (
i = 0;
i <
pass->annotation_count; ++
i)
5888 for (
i = 0;
i <
pass->state_count; ++
i)
5913 WARN(
"Failed to parse name\n");
5928 ERR(
"Out of memory\n");
5939 WARN(
"Failed to parse annotation %u\n",
i);
5950 ERR(
"Out of memory\n");
5960 WARN(
"Failed to parse pass %u\n",
i);
5999 if (*(
char **)
param->data)
6000 ERR(
"Parameter data already allocated.\n");
6002 switch (
param->type)
6006 if (!*(
char **)
param->data)
6008 ERR(
"Out of memory.\n");
6015 (IDirect3DVertexShader9 **)
param->data)))
6017 WARN(
"Failed to create vertex shader.\n");
6018 object->creation_failed =
TRUE;
6023 (IDirect3DPixelShader9 **)
param->data)))
6025 WARN(
"Failed to create pixel shader.\n");
6026 object->creation_failed =
TRUE;
6036 const char **skip_constants,
unsigned int skip_constants_count)
6040 char *
ptr =
object->data;
6044 TRACE(
"Parsing array entry selection state for parameter %p.\n",
param);
6048 if (
state->referenced_param)
6054 FIXME(
"Referenced parameter %s not found.\n",
ptr + 4);
6059 if (string_size %
sizeof(
uint32_t))
6060 FIXME(
"Unaligned string_size %u.\n", string_size);
6071 for (
i = 0;
i <
param->element_count;
i++)
6075 FIXME(
"Unexpected member parameter type %u, expected %u.\n",
param->members[
i].type,
param->type);
6078 if (!
param->members[
i].param_eval)
6080 TRACE(
"Creating preshader for object %u.\n",
param->members[
i].object_id);
6084 skip_constants, skip_constants_count)))
6093 const char **skip_constants,
unsigned int skip_constants_count)
6095 unsigned int index, state_index,
usage, element_index, technique_index;
6102 TRACE(
"technique_index: %u.\n", technique_index);
6108 TRACE(
"element_index: %u.\n", element_index);
6111 TRACE(
"state_index: %u.\n", state_index);
6116 if (technique_index == 0xffffffff)
6123 FIXME(
"Index out of bounds: index %u >= parameter count %u.\n",
index, effect->
params.count);
6127 parameter = &effect->
params.parameters[
index].param;
6128 if (element_index != 0xffffffff)
6132 FIXME(
"Index out of bounds: element_index %u >= element_count %u.\n", element_index, parameter->
element_count);
6137 parameter = ¶meter->
members[element_index];
6141 if (state_index >=
sampler->state_count)
6143 FIXME(
"Index out of bounds: state_index %u >= state_count %u.\n", state_index,
sampler->state_count);
6156 FIXME(
"Index out of bounds: technique_index %u >= technique_count %u.\n", technique_index,
6161 technique = &effect->
techniques[technique_index];
6169 if (state_index >=
pass->state_count)
6171 FIXME(
"Index out of bounds: state_index %u >= state_count %u.\n", state_index,
pass->state_count);
6180 TRACE(
"Using object id %u.\n",
param->object_id);
6188 switch (
param->type)
6202 skip_constants, skip_constants_count)))
6232 if (
state->referenced_param)
6236 TRACE(
"Mapping to parameter %p, having object id %u.\n", refpar, refpar->
object_id);
6245 skip_constants, skip_constants_count)))
6252 FIXME(
"Referenced parameter %s not found.\n", (
char *)
object->data);
6274 param->top_level_param = top_level_param;
6279 uint32_t start,
const char **skip_constants,
unsigned int skip_constants_count)
6281 unsigned int string_count, resource_count, params_count, shader_count;
6287 TRACE(
"Parameter count: %u.\n", params_count);
6295 TRACE(
"Shader count: %u.\n", shader_count);
6303 ERR(
"Out of memory.\n");
6314 for (
i = 0;
i < effect->
params.count; ++
i)
6320 WARN(
"Failed to parse parameter %u.\n",
i);
6332 ERR(
"Out of memory.\n");
6339 TRACE(
"Parsing technique %u.\n",
i);
6343 WARN(
"Failed to parse technique %u.\n",
i);
6350 TRACE(
"String count: %u.\n", string_count);
6353 TRACE(
"Resource count: %u.\n", resource_count);
6355 for (
i = 0;
i < string_count; ++
i)
6360 TRACE(
"id: %u.\n",
id);
6372 for (
i = 0;
i < resource_count; ++
i)
6374 TRACE(
"parse resource %u.\n",
i);
6379 WARN(
"Failed to parse resource %u.\n",
i);
6384 for (
i = 0;
i < effect->
params.count; ++
i)
6418#define INITIAL_CONST_NAMES_SIZE 4
6441 const char **
names, **new_alloc;
6451 s = skip_constants_string;
6454 if (*names_count ==
size)
6475 unsigned int flags,
struct ID3DXEffectPool *
pool,
const char *skip_constants_string)
6477 unsigned int skip_constants_count = 0;
6478 char *skip_constants_buffer =
NULL;
6479 const char **skip_constants =
NULL;
6512 if (skip_constants_string)
6520 if (!(skip_constants_buffer =
strdup(skip_constants_string)))
6528 free(skip_constants_buffer);
6539 FIXME(
"Failed to parse effect.\n");
6540 free(skip_constants_buffer);
6541 free(skip_constants);
6545 for (
i = 0;
i < skip_constants_count; ++
i)
6555 WARN(
"skip_constants parameter %s is used in technique %u.\n",
6557 free(skip_constants_buffer);
6558 free(skip_constants);
6566 TRACE(
"skip_constants parameter %s not found.\n",
6571 free(skip_constants_buffer);
6572 free(skip_constants);
6591 if (effect->
params.parameters)
6593 for (
i = 0;
i < effect->
params.count; ++
i)
6617#if D3DX_SDK_VERSION <= 36
6620 UINT compile_flags = 0;
6627 TRACE(
"effect %p, device %p, data %p, data_size %Iu, defines %p, include %p, flags %#x, errors %p, "
6628 "pool %p, skip_constants %s.\n",
6637 TRACE(
"HLSL ASCII effect, trying to compile it.\n");
6640 NULL,
"fx_2_0", compile_flags, 0, &bytecode, &temp_errors);
6643 WARN(
"Failed to compile ASCII effect.\n");
6645 ID3D10Blob_Release(bytecode);
6648 const char *error_string = ID3D10Blob_GetBufferPointer(temp_errors);
6649 const char *string_ptr;
6651 while (*error_string)
6653 string_ptr = error_string;
6654 while (*string_ptr && *string_ptr !=
'\n' && *string_ptr !=
'\r'
6655 && string_ptr - error_string < 80)
6658 error_string = string_ptr;
6659 while (*error_string ==
'\n' || *error_string ==
'\r')
6664 *errors = temp_errors;
6665 else if (temp_errors)
6666 ID3D10Blob_Release(temp_errors);
6671 FIXME(
"No output from effect compilation.\n");
6675 *errors = temp_errors;
6676 else if (temp_errors)
6677 ID3D10Blob_Release(temp_errors);
6680 ID3D10Blob_GetBufferSize(bytecode),
flags,
pool, skip_constants_string);
6681 ID3D10Blob_Release(bytecode);
6687 struct ID3DXEffectPool *
pool,
struct ID3DXEffect **effect,
struct ID3DXBuffer **compilation_errors)
6692 TRACE(
"device %p, srcdata %p, srcdatalen %u, defines %p, include %p, "
6693 "skip_constants %p, flags %#lx, pool %p, effect %p, compilation_errors %p.\n",
6695 skip_constants,
flags,
pool, effect, compilation_errors);
6697 if (compilation_errors)
6698 *compilation_errors =
NULL;
6710 object =
calloc(1,
sizeof(*
object));
6718 WARN(
"Failed to create effect object, hr %#lx.\n",
hr);
6722 *effect = &
object->ID3DXEffect_iface;
6724 TRACE(
"Created ID3DXEffect %p\n",
object);
6733 TRACE(
"device %p, data %p, data_size %u, defines %p, include %p, flags %#lx, pool %p, "
6744 TRACE(
"compiler %p, data %p, data_size %Iu, defines %p, include %p, eflags %#x, messages %p.\n",
6750 FIXME(
"ID3DXEffectCompiler implementation is only a stub.\n");
6761 TRACE(
"data %p, data_size %u, defines %p, include %p, flags %#lx, compiler %p, messages %p.\n",
6764 if (!
data || !compiler)
6766 WARN(
"Invalid arguments supplied\n");
6770 object =
calloc(1,
sizeof(*
object));
6778 WARN(
"Failed to initialize effect compiler\n");
6783 *compiler = &
object->ID3DXEffectCompiler_iface;
6785 TRACE(
"Created ID3DXEffectCompiler %p\n",
object);
6798 iface->lpVtbl->AddRef(iface);
6822 for (
i = 0;
i <
pool->size; ++
i)
6824 if (
pool->shared_data[
i].count)
6828 WARN(
"Releasing pool with referenced parameters.\n");
6831 pool->shared_data[
i].parameters[0]->shared_data =
NULL;
6833 for (
j = 1;
j <
pool->shared_data[
i].count; ++
j)
6836 pool->shared_data[
i].parameters[
j]->shared_data =
NULL;
6884 object =
calloc(1,
sizeof(*
object));
6889 object->refcount = 1;
6891 *
pool = &
object->ID3DXEffectPool_iface;
6906 TRACE(
"device %p, srcfile %s, defines %p, include %p, skipconstants %s, "
6907 "flags %#lx, pool %p, effect %p, messages %p.\n",
6952 TRACE(
"device %p, srcfile %s, defines %p, include %p, skipconstants %s, "
6953 "flags %#lx, pool %p, effect %p, messages %p.\n",
6961 srcfileW =
malloc(
len *
sizeof(*srcfileW));
6974 TRACE(
"(void): relay\n");
6983 TRACE(
"(void): relay\n");
6996 TRACE(
"device %p, srcmodule %p, srcresource %s, defines %p, include %p, skipconstants %s, "
6997 "flags %#lx, pool %p, effect %p, messages %p.\n",
7016 const char *skipconstants,
DWORD flags,
struct ID3DXEffectPool *
pool,
7023 TRACE(
"device %p, srcmodule %p, srcresource %s, defines %p, include %p, skipconstants %s, "
7024 "flags %#lx, pool %p, effect %p, messages %p.\n",
7045 TRACE(
"(void): relay\n");
7054 TRACE(
"(void): relay\n");
7066 TRACE(
"srcfile %s, defines %p, include %p, flags %#lx, compiler %p, messages %p.\n",
7090 TRACE(
"srcfile %s, defines %p, include %p, flags %#lx, compiler %p, messages %p.\n",
7097 srcfileW =
malloc(
len *
sizeof(*srcfileW));
7114 TRACE(
"srcmodule %p, srcresource %s, defines %p, include %p, flags %#lx, compiler %p, messages %p.\n",
7134 TRACE(
"srcmodule %p, srcresource %s, defines %p, include %p, flags %#lx, compiler %p, messages %p.\n",
7148 FIXME(
"(%p, %u, %p): stub\n", effect, enable_color_code, disassembly);
static unsigned char bytes[4]
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void list_remove(struct list_entry *entry)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
while(CdLookupNextInitialFileDirent(IrpContext, Fcb, FileContext))
static float(WINAPI *pD2D1Tan)(float angle)
#define D3DERR_INVALIDCALL
@ D3DRS_EMISSIVEMATERIALSOURCE
@ D3DRS_SPECULARMATERIALSOURCE
@ D3DRS_AMBIENTMATERIALSOURCE
@ D3DRS_POINTSPRITEENABLE
@ D3DRS_DEBUGMONITORTOKEN
@ D3DRS_DIFFUSEMATERIALSOURCE
@ D3DRS_INDEXEDVERTEXBLENDENABLE
@ D3DRS_MULTISAMPLEANTIALIAS
@ D3DTSS_TEXTURETRANSFORMFLAGS
#define IDirect3DTexture9_GetLevelDesc(p, a, b)
#define IDirect3DVolumeTexture9_GetLevelDesc(p, a, b)
#define IDirect3DDevice9_CreatePixelShader(p, a, b)
#define IDirect3DStateBlock9_Release(p)
#define IDirect3DVertexShader9_AddRef(p)
#define IDirect3DDevice9_EndStateBlock(p, a)
#define IDirect3DCubeTexture9_GetLevelDesc(p, a, b)
#define IDirect3DDevice9_Release(p)
#define IDirect3DBaseTexture9_Release(p)
#define IDirect3DBaseTexture9_AddRef(p)
#define IDirect3DStateBlock9_Apply(p)
#define IDirect3DDevice9_BeginStateBlock(p)
#define IDirect3DStateBlock9_Capture(p)
#define IDirect3DDevice9_AddRef(p)
#define IDirect3DDevice9_CreateVertexShader(p, a, b)
#define IDirect3DPixelShader9_AddRef(p)
@ D3DRS_ENABLEADAPTIVETESSELLATION
@ D3DRS_SEPARATEALPHABLENDENABLE
@ D3DRS_COLORWRITEENABLE2
@ D3DRS_COLORWRITEENABLE1
@ D3DRS_MINTESSELLATIONLEVEL
@ D3DRS_TWOSIDEDSTENCILMODE
@ D3DRS_COLORWRITEENABLE3
@ D3DRS_SLOPESCALEDEPTHBIAS
@ D3DRS_MAXTESSELLATIONLEVEL
@ D3DRS_ANTIALIASEDLINEENABLE
@ D3DRS_SCISSORTESTENABLE
#define D3DVERTEXTEXTURESAMPLER0
#define D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY
static SIZE_T const char const D3D_SHADER_MACRO ID3DInclude * include
static SIZE_T const char const D3D_SHADER_MACRO * defines
HRESULT WINAPI D3DCompile(const void *data, SIZE_T data_size, const char *filename, const D3D_SHADER_MACRO *defines, ID3DInclude *include, const char *entrypoint, const char *target, UINT sflags, UINT eflags, ID3DBlob **shader, ID3DBlob **error_messages)
#define D3DXERR_INVALIDDATA
struct ID3DXBuffer ID3DXBuffer
static BOOL is_param_type_sampler(D3DXPARAMETER_TYPE type)
HRESULT d3dx_param_eval_set_shader_constants(ID3DXEffectStateManager *manager, struct IDirect3DDevice9 *device, struct d3dx_param_eval *peval, BOOL update_all)
static struct d3dx_top_level_parameter * top_level_parameter_from_parameter(struct d3dx_parameter *param)
static BOOL is_param_dirty(struct d3dx_parameter *param, ULONG64 update_version)
static ULONG64 next_update_version(ULONG64 *version_counter)
CRITICAL_SECTION from_file_mutex
BOOL is_param_eval_input_dirty(struct d3dx_param_eval *peval, ULONG64 update_version)
HRESULT map_view_of_file(const WCHAR *filename, void **buffer, DWORD *length)
static void set_number(void *outdata, D3DXPARAMETER_TYPE outtype, const void *indata, D3DXPARAMETER_TYPE intype)
HRESULT d3dx_evaluate_parameter(struct d3dx_param_eval *peval, const struct d3dx_parameter *param, void *param_value)
const char * debug_d3dxparameter_type(D3DXPARAMETER_TYPE t)
static BOOL is_top_level_parameter(struct d3dx_parameter *param)
HRESULT d3dx_create_param_eval(struct d3dx_parameters_store *parameters, void *byte_code, unsigned int byte_code_size, D3DXPARAMETER_TYPE type, struct d3dx_param_eval **peval, ULONG64 *version_counter, const char **skip_constants, unsigned int skip_constants_count)
void d3dx_free_param_eval(struct d3dx_param_eval *peval)
const struct ID3DXIncludeVtbl d3dx_include_from_file_vtbl
#define SET_D3D_STATE(base_effect,...)
const char * debug_d3dxparameter_class(D3DXPARAMETER_CLASS c)
HRESULT load_resource_into_memory(HMODULE module, HRSRC resinfo, void **buffer, DWORD *length)
static uint32_t read_u32(const char **ptr)
static HRESULT d3dx_parse_state(struct d3dx_effect *effect, struct d3dx_state *state, const char *data, const char **ptr, struct d3dx_object *objects)
#define INITIAL_SHARED_DATA_SIZE
static HRESULT d3dx_parse_effect_technique(struct d3dx_effect *effect, struct d3dx_technique *technique, const char *data, const char **ptr, struct d3dx_object *objects)
static BOOL param_on_lost_device(void *data, struct d3dx_parameter *param)
static HRESULT WINAPI d3dx_effect_GetVertexShader(ID3DXEffect *iface, D3DXHANDLE parameter, IDirect3DVertexShader9 **shader)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetInt(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, INT *n)
static HRESULT WINAPI d3dx_effect_GetMatrixTransposeArray(ID3DXEffect *iface, D3DXHANDLE parameter, D3DXMATRIX *matrix, UINT count)
static HRESULT WINAPI d3dx_effect_SetMatrixTranspose(ID3DXEffect *iface, D3DXHANDLE parameter, const D3DXMATRIX *matrix)
static void param_set_magic_number(struct d3dx_parameter *param)
HRESULT WINAPI D3DXCreateEffectFromFileExW(struct IDirect3DDevice9 *device, const WCHAR *srcfile, const D3DXMACRO *defines, struct ID3DXInclude *include, const char *skipconstants, DWORD flags, struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **messages)
static HRESULT d3dx_parse_effect_annotation(struct d3dx_effect *effect, struct d3dx_parameter *anno, const char *data, const char **ptr, struct d3dx_object *objects)
static HRESULT WINAPI ID3DXEffectCompilerImpl_SetMatrixPointerArray(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, const D3DXMATRIX **matrix, UINT count)
static HRESULT WINAPI d3dx_effect_SetMatrixArray(ID3DXEffect *iface, D3DXHANDLE parameter, const D3DXMATRIX *matrix, UINT count)
static HRESULT d3dx_parse_effect_pass(struct d3dx_effect *effect, struct d3dx_pass *pass, const char *data, const char **ptr, struct d3dx_object *objects)
static HRESULT WINAPI d3dx_effect_OnLostDevice(ID3DXEffect *iface)
static HRESULT WINAPI d3dx_effect_QueryInterface(ID3DXEffect *iface, REFIID riid, void **object)
static HRESULT WINAPI d3dx_effect_SetMatrix(ID3DXEffect *iface, D3DXHANDLE parameter, const D3DXMATRIX *matrix)
static HRESULT WINAPI ID3DXEffectCompilerImpl_SetString(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, const char *string)
static BOOL walk_parameter_tree(struct d3dx_parameter *param, walk_parameter_dep_func param_func, void *data)
static ULONG64 * get_version_counter_ptr(struct d3dx_effect *effect)
static void free_top_level_parameter(struct d3dx_top_level_parameter *param)
static struct d3dx_parameter_block * get_valid_parameter_block(D3DXHANDLE handle)
static D3DXHANDLE WINAPI d3dx_effect_GetFunction(ID3DXEffect *iface, UINT index)
static BOOL walk_parameter_dep(struct d3dx_parameter *param, walk_parameter_dep_func param_func, void *data)
static unsigned int get_annotation_from_object(struct d3dx_effect *effect, D3DXHANDLE object, struct d3dx_parameter **annotations)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetDesc(ID3DXEffectCompiler *iface, D3DXEFFECT_DESC *desc)
static D3DXHANDLE WINAPI ID3DXEffectCompilerImpl_GetFunctionByName(ID3DXEffectCompiler *iface, const char *name)
static HRESULT WINAPI d3dx_effect_EndPass(ID3DXEffect *iface)
static D3DXHANDLE WINAPI d3dx_effect_EndParameterBlock(ID3DXEffect *iface)
static HRESULT WINAPI d3dx_effect_GetMatrixPointerArray(ID3DXEffect *iface, D3DXHANDLE parameter, D3DXMATRIX **matrix, UINT count)
static HRESULT WINAPI d3dx_effect_GetInt(ID3DXEffect *iface, D3DXHANDLE parameter, INT *n)
static HRESULT WINAPI d3dx_effect_SetIntArray(ID3DXEffect *iface, D3DXHANDLE parameter, const INT *n, UINT count)
static HRESULT WINAPI d3dx_effect_GetVectorArray(ID3DXEffect *iface, D3DXHANDLE parameter, D3DXVECTOR4 *vector, UINT count)
static HRESULT WINAPI ID3DXEffectCompilerImpl_SetBoolArray(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, const BOOL *b, UINT count)
static D3DXHANDLE WINAPI d3dx_effect_GetPass(ID3DXEffect *iface, D3DXHANDLE technique, UINT index)
static HRESULT WINAPI ID3DXEffectCompilerImpl_SetFloat(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, float f)
static struct d3dx_technique * get_technique_by_name(struct d3dx_effect *effect, const char *name)
static HRESULT WINAPI d3dx_effect_GetIntArray(ID3DXEffect *iface, D3DXHANDLE parameter, INT *n, UINT count)
static void d3dx9_set_light_parameter(enum LIGHT_TYPE op, D3DLIGHT9 *light, void *value)
static HRESULT WINAPI d3dx_effect_SetMatrixTransposePointerArray(ID3DXEffect *iface, D3DXHANDLE parameter, const D3DXMATRIX **matrix, UINT count)
static HRESULT WINAPI d3dx_effect_GetDevice(ID3DXEffect *iface, struct IDirect3DDevice9 **device)
static HRESULT d3dx9_effect_init_from_binary(struct d3dx_effect *effect, struct IDirect3DDevice9 *device, const char *data, SIZE_T data_size, unsigned int flags, struct ID3DXEffectPool *pool, const char *skip_constants_string)
static HRESULT WINAPI d3dx_effect_SetString(ID3DXEffect *iface, D3DXHANDLE parameter, const char *string)
static HRESULT WINAPI ID3DXEffectCompilerImpl_SetMatrixTransposeArray(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, const D3DXMATRIX *matrix, UINT count)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetPassDesc(ID3DXEffectCompiler *iface, D3DXHANDLE pass, D3DXPASS_DESC *desc)
static HRESULT d3dx9_apply_pass_states(struct d3dx_effect *effect, struct d3dx_pass *pass, BOOL update_all)
#define INT_FLOAT_MULTI_INVERSE
static ULONG WINAPI d3dx_effect_pool_AddRef(ID3DXEffectPool *iface)
static HRESULT WINAPI d3dx_effect_SetInt(ID3DXEffect *iface, D3DXHANDLE parameter, INT n)
HRESULT WINAPI D3DXCreateEffectCompiler(const char *data, UINT data_size, const D3DXMACRO *defines, ID3DXInclude *include, DWORD flags, ID3DXEffectCompiler **compiler, ID3DXBuffer **messages)
static ULONG WINAPI d3dx_effect_AddRef(ID3DXEffect *iface)
HRESULT WINAPI D3DXCreateEffectFromFileW(struct IDirect3DDevice9 *device, const WCHAR *srcfile, const D3DXMACRO *defines, struct ID3DXInclude *include, DWORD flags, struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **messages)
static BOOL is_same_parameter(void *param1_, struct d3dx_parameter *param2)
HRESULT WINAPI D3DXCreateEffectPool(ID3DXEffectPool **pool)
static HRESULT WINAPI d3dx_effect_GetFloatArray(ID3DXEffect *iface, D3DXHANDLE parameter, float *f, UINT count)
static HRESULT d3dx9_apply_state(struct d3dx_effect *effect, struct d3dx_pass *pass, struct d3dx_state *state, unsigned int parent_index, BOOL update_all)
static void free_parameter_data(struct d3dx_parameter *param, BOOL child)
static D3DXHANDLE WINAPI ID3DXEffectCompilerImpl_GetTechnique(ID3DXEffectCompiler *iface, UINT index)
static int param_rb_compare(const void *key, const struct wine_rb_entry *entry)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetTexture(struct ID3DXEffectCompiler *iface, D3DXHANDLE parameter, struct IDirect3DBaseTexture9 **texture)
static void free_technique(struct d3dx_technique *technique)
HRESULT WINAPI D3DXDisassembleEffect(ID3DXEffect *effect, BOOL enable_color_code, ID3DXBuffer **disassembly)
static void free_parameter(struct d3dx_parameter *param, BOOL element, BOOL child)
static D3DXHANDLE WINAPI ID3DXEffectCompilerImpl_GetParameterElement(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, UINT index)
static HRESULT WINAPI ID3DXEffectCompilerImpl_SetFloatArray(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, const float *f, UINT count)
static HRESULT WINAPI d3dx_effect_GetFloat(ID3DXEffect *iface, D3DXHANDLE parameter, float *f)
HRESULT WINAPI D3DXCreateEffectFromResourceA(struct IDirect3DDevice9 *device, HMODULE srcmodule, const char *srcresource, const D3DXMACRO *defines, struct ID3DXInclude *include, DWORD flags, struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **messages)
static void * record_parameter(struct d3dx_effect *effect, struct d3dx_parameter *param, unsigned int bytes)
static HRESULT WINAPI d3dx_effect_CloneEffect(ID3DXEffect *iface, IDirect3DDevice9 *device, ID3DXEffect **out)
static HRESULT WINAPI d3dx_effect_GetStateManager(ID3DXEffect *iface, ID3DXEffectStateManager **manager)
static D3DXHANDLE WINAPI d3dx_effect_GetParameterByName(ID3DXEffect *iface, D3DXHANDLE parameter, const char *name)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetMatrixTranspose(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, D3DXMATRIX *matrix)
static ULONG WINAPI ID3DXEffectCompilerImpl_Release(ID3DXEffectCompiler *iface)
static HRESULT WINAPI d3dx_effect_GetMatrixTransposePointerArray(ID3DXEffect *iface, D3DXHANDLE parameter, D3DXMATRIX **matrix, UINT count)
static BOOL walk_param_eval_dep(struct d3dx_param_eval *param_eval, walk_parameter_dep_func param_func, void *data)
static HRESULT WINAPI ID3DXEffectCompilerImpl_SetVector(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, const D3DXVECTOR4 *vector)
static HRESULT WINAPI ID3DXEffectCompilerImpl_QueryInterface(ID3DXEffectCompiler *iface, REFIID riid, void **object)
static void set_matrix(struct d3dx_parameter *param, const D3DXMATRIX *matrix, void *dst_data)
static bool copy_parameter(struct d3dx_effect *dst_effect, const struct d3dx_effect *src_effect, struct d3dx_parameter *dst, const struct d3dx_parameter *src)
HRESULT WINAPI D3DXCreateEffectFromResourceExW(struct IDirect3DDevice9 *device, HMODULE srcmodule, const WCHAR *srcresource, const D3DXMACRO *defines, struct ID3DXInclude *include, const char *skipconstants, DWORD flags, struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **messages)
static void set_vector(struct d3dx_parameter *param, const D3DXVECTOR4 *vector, void *dst_data)
static BOOL is_parameter_used(struct d3dx_parameter *param, struct d3dx_technique *tech)
static HRESULT set_string(char **param_data, const char *string)
static HRESULT WINAPI d3dx_effect_SetMatrixTransposeArray(ID3DXEffect *iface, D3DXHANDLE parameter, const D3DXMATRIX *matrix, UINT count)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetMatrixTransposePointerArray(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, D3DXMATRIX **matrix, UINT count)
static HRESULT WINAPI d3dx_effect_SetTechnique(ID3DXEffect *iface, D3DXHANDLE technique)
static DWORD d3dx9_effect_version(DWORD major, DWORD minor)
static HRESULT WINAPI d3dx_effect_GetDesc(ID3DXEffect *iface, D3DXEFFECT_DESC *desc)
static HRESULT d3dx_parse_effect(struct d3dx_effect *effect, const char *data, UINT data_size, uint32_t start, const char **skip_constants, unsigned int skip_constants_count)
static void free_parameter_block(struct d3dx_parameter_block *block)
static struct d3dx_effect_pool * impl_from_ID3DXEffectPool(ID3DXEffectPool *iface)
struct d3dx_parameter * get_parameter_by_name(struct d3dx_parameters_store *store, struct d3dx_parameter *parameter, const char *name)
static HRESULT WINAPI d3dx_effect_GetPassDesc(ID3DXEffect *iface, D3DXHANDLE pass_handle, D3DXPASS_DESC *desc)
static struct d3dx_effect * impl_from_ID3DXEffect(ID3DXEffect *iface)
static HRESULT WINAPI d3dx_effect_GetBool(ID3DXEffect *iface, D3DXHANDLE parameter, BOOL *b)
HRESULT WINAPI D3DXCreateEffectCompilerFromResourceA(HMODULE srcmodule, const char *srcresource, const D3DXMACRO *defines, ID3DXInclude *include, DWORD flags, ID3DXEffectCompiler **compiler, ID3DXBuffer **messages)
static HRESULT WINAPI ID3DXEffectCompilerImpl_CompileShader(ID3DXEffectCompiler *iface, D3DXHANDLE function, const char *target, DWORD flags, ID3DXBuffer **shader, ID3DXBuffer **error_msgs, ID3DXConstantTable **constant_table)
HRESULT WINAPI D3DXCreateEffectCompilerFromFileA(const char *srcfile, const D3DXMACRO *defines, ID3DXInclude *include, DWORD flags, ID3DXEffectCompiler **compiler, ID3DXBuffer **messages)
static void d3dx9_set_material_parameter(enum MATERIAL_TYPE op, D3DMATERIAL9 *material, void *value)
static D3DXHANDLE WINAPI d3dx_effect_GetParameter(ID3DXEffect *iface, D3DXHANDLE parameter, UINT index)
static HRESULT WINAPI d3dx_effect_GetTechniqueDesc(ID3DXEffect *iface, D3DXHANDLE technique, D3DXTECHNIQUE_DESC *desc)
static const char ** parse_skip_constants_string(char *skip_constants_string, unsigned int *names_count)
static struct d3dx_effect_pool * unsafe_impl_from_ID3DXEffectPool(ID3DXEffectPool *iface)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetBoolArray(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, BOOL *b, UINT count)
static HRESULT set_value(struct d3dx_parameter *param, const void *data, unsigned int bytes, void *dst_data)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetLiteral(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, BOOL *literal)
static HRESULT WINAPI d3dx_effect_SetBool(ID3DXEffect *iface, D3DXHANDLE parameter, BOOL b)
static HRESULT WINAPI d3dx_effect_GetBoolArray(ID3DXEffect *iface, D3DXHANDLE parameter, BOOL *b, UINT count)
static HRESULT WINAPI ID3DXEffectCompilerImpl_SetTexture(struct ID3DXEffectCompiler *iface, D3DXHANDLE parameter, struct IDirect3DBaseTexture9 *texture)
static D3DXHANDLE WINAPI ID3DXEffectCompilerImpl_GetTechniqueByName(ID3DXEffectCompiler *iface, const char *name)
static char * next_valid_constant_name(char **string)
static D3DXHANDLE WINAPI d3dx_effect_GetAnnotationByName(ID3DXEffect *iface, D3DXHANDLE object, const char *name)
static const struct ID3DXEffectCompilerVtbl ID3DXEffectCompiler_Vtbl
static D3DXHANDLE WINAPI d3dx_effect_GetTechniqueByName(ID3DXEffect *iface, const char *name)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetMatrixPointerArray(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, D3DXMATRIX **matrix, UINT count)
BOOL(* walk_parameter_dep_func)(void *data, struct d3dx_parameter *param)
static HRESULT WINAPI d3dx_effect_SetVector(ID3DXEffect *iface, D3DXHANDLE parameter, const D3DXVECTOR4 *vector)
static HRESULT d3dx_set_shader_constants(struct d3dx_effect *effect, struct d3dx_pass *pass, struct d3dx_parameter *param, BOOL vs, BOOL update_all)
static HRESULT WINAPI d3dx_effect_GetValue(ID3DXEffect *iface, D3DXHANDLE parameter, void *data, UINT bytes)
static void add_param_to_tree(struct d3dx_effect *effect, struct d3dx_parameter *param, struct d3dx_parameter *parent, char separator, unsigned int element)
static HRESULT WINAPI ID3DXEffectCompilerImpl_SetValue(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, const void *data, UINT bytes)
static D3DXHANDLE WINAPI ID3DXEffectCompilerImpl_GetPass(ID3DXEffectCompiler *iface, D3DXHANDLE technique, UINT index)
static HRESULT d3dx_parse_value(struct d3dx_effect *effect, struct d3dx_parameter *param, void *value, const char *data, const char **ptr, struct d3dx_object *objects)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetVertexShader(struct ID3DXEffectCompiler *iface, D3DXHANDLE parameter, struct IDirect3DVertexShader9 **shader)
HRESULT WINAPI D3DXCreateEffectFromResourceExA(struct IDirect3DDevice9 *device, HMODULE srcmodule, const char *srcresource, const D3DXMACRO *defines, struct ID3DXInclude *include, const char *skipconstants, DWORD flags, struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **messages)
static HRESULT WINAPI d3dx_effect_SetStateManager(ID3DXEffect *iface, ID3DXEffectStateManager *manager)
static HRESULT WINAPI ID3DXEffectCompilerImpl_SetMatrixTranspose(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, const D3DXMATRIX *matrix)
static D3DXHANDLE WINAPI d3dx_effect_GetPassByName(ID3DXEffect *iface, D3DXHANDLE technique, const char *name)
static HRESULT WINAPI d3dx_effect_GetParameterDesc(ID3DXEffect *iface, D3DXHANDLE parameter, D3DXPARAMETER_DESC *desc)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetBool(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, BOOL *b)
HRESULT WINAPI D3DXCreateEffect(struct IDirect3DDevice9 *device, const void *data, UINT data_size, const D3DXMACRO *defines, struct ID3DXInclude *include, DWORD flags, struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **messages)
static void free_parameter_object_data(struct d3dx_parameter *param, const void *data, unsigned int bytes)
static HRESULT d3dx_set_shader_const_state(struct d3dx_effect *effect, enum SHADER_CONSTANT_TYPE op, UINT index, struct d3dx_parameter *param, void *value_ptr)
HRESULT WINAPI D3DXCreateEffectEx(struct IDirect3DDevice9 *device, const void *srcdata, UINT srcdatalen, const D3DXMACRO *defines, struct ID3DXInclude *include, const char *skip_constants, DWORD flags, struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **compilation_errors)
static HRESULT d3dx_parse_resource(struct d3dx_effect *effect, const char *data, const char **ptr, const char **skip_constants, unsigned int skip_constants_count)
static ULONG WINAPI d3dx_effect_pool_Release(ID3DXEffectPool *iface)
static HRESULT WINAPI d3dx_effect_FindNextValidTechnique(ID3DXEffect *iface, D3DXHANDLE technique, D3DXHANDLE *next_technique)
static HRESULT WINAPI d3dx_effect_BeginPass(ID3DXEffect *iface, UINT pass)
HRESULT WINAPI D3DXCreateEffectCompilerFromFileW(const WCHAR *srcfile, const D3DXMACRO *defines, ID3DXInclude *include, DWORD flags, ID3DXEffectCompiler **compiler, ID3DXBuffer **messages)
HRESULT WINAPI D3DXCreateEffectFromFileA(struct IDirect3DDevice9 *device, const char *srcfile, const D3DXMACRO *defines, struct ID3DXInclude *include, DWORD flags, struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **messages)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetVector(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, D3DXVECTOR4 *vector)
static HRESULT d3dx_parse_effect_typedef(struct d3dx_effect *effect, struct d3dx_parameter *param, const char *data, const char **ptr, struct d3dx_parameter *parent, UINT flags)
static void free_state(struct d3dx_state *state)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetMatrixTransposeArray(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, D3DXMATRIX *matrix, UINT count)
static D3DXHANDLE WINAPI ID3DXEffectCompilerImpl_GetAnnotationByName(ID3DXEffectCompiler *iface, D3DXHANDLE object, const char *name)
static unsigned int get_recorded_parameter_size(const struct d3dx_recorded_parameter *record)
static D3DXHANDLE get_technique_handle(struct d3dx_technique *technique)
static HRESULT WINAPI ID3DXEffectCompilerImpl_SetMatrix(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, const D3DXMATRIX *matrix)
static HRESULT WINAPI d3dx_effect_pool_QueryInterface(ID3DXEffectPool *iface, REFIID riid, void **object)
static void free_sampler(struct d3dx_sampler *sampler)
static HRESULT WINAPI ID3DXEffectCompilerImpl_CompileEffect(ID3DXEffectCompiler *iface, DWORD flags, ID3DXBuffer **effect, ID3DXBuffer **error_msgs)
static HRESULT WINAPI d3dx_effect_SetArrayRange(ID3DXEffect *iface, D3DXHANDLE parameter, UINT start, UINT end)
static HRESULT WINAPI d3dx_effect_OnResetDevice(ID3DXEffect *iface)
static HRESULT WINAPI ID3DXEffectCompilerImpl_SetInt(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, INT n)
static HRESULT WINAPI d3dx_effect_SetBoolArray(ID3DXEffect *iface, D3DXHANDLE parameter, const BOOL *b, UINT count)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetMatrixArray(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, D3DXMATRIX *matrix, UINT count)
static HRESULT WINAPI d3dx_effect_ApplyParameterBlock(ID3DXEffect *iface, D3DXHANDLE parameter_block)
static D3DXHANDLE WINAPI ID3DXEffectCompilerImpl_GetParameter(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, UINT index)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetFunctionDesc(ID3DXEffectCompiler *iface, D3DXHANDLE shader, D3DXFUNCTION_DESC *desc)
static D3DXHANDLE WINAPI d3dx_effect_GetCurrentTechnique(ID3DXEffect *iface)
static HRESULT d3dx_parse_sampler(struct d3dx_effect *effect, struct d3dx_sampler *sampler, const char *data, const char **ptr, struct d3dx_object *objects)
#define INITIAL_CONST_NAMES_SIZE
static HRESULT WINAPI d3dx_effect_End(ID3DXEffect *iface)
static HRESULT WINAPI ID3DXEffectCompilerImpl_SetIntArray(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, const INT *n, UINT count)
static HRESULT d3dx9_create_object(struct d3dx_effect *effect, struct d3dx_object *object)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetVectorArray(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, D3DXVECTOR4 *vector, UINT count)
static struct d3dx_parameter * get_parameter_element_by_name(struct d3dx_parameters_store *store, struct d3dx_parameter *parameter, const char *name)
static BOOL WINAPI d3dx_effect_IsParameterUsed(ID3DXEffect *iface, D3DXHANDLE parameter, D3DXHANDLE technique)
static HRESULT d3dx9_effect_init(struct d3dx_effect *effect, struct IDirect3DDevice9 *device, const char *data, SIZE_T data_size, const D3D_SHADER_MACRO *defines, ID3DInclude *include, UINT flags, ID3DBlob **errors, struct ID3DXEffectPool *pool, const char *skip_constants_string)
static void free_pass(struct d3dx_pass *pass)
static HRESULT WINAPI d3dx_effect_SetVectorArray(ID3DXEffect *iface, D3DXHANDLE parameter, const D3DXVECTOR4 *vector, UINT count)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetIntArray(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, INT *n, UINT count)
static HRESULT d3dx9_effect_compiler_init(struct ID3DXEffectCompilerImpl *compiler, const char *data, SIZE_T data_size, const D3D_SHADER_MACRO *defines, ID3DInclude *include, UINT eflags, ID3DBlob **messages)
static const struct ID3DXEffectPoolVtbl ID3DXEffectPool_Vtbl
static ULONG64 next_effect_update_version(struct d3dx_effect *effect)
static HRESULT d3dx9_parse_name(char **name, const char *ptr)
static HRESULT WINAPI d3dx_effect_GetMatrixTranspose(ID3DXEffect *iface, D3DXHANDLE parameter, D3DXMATRIX *matrix)
static HRESULT d3dx_parse_effect_parameter(struct d3dx_effect *effect, struct d3dx_top_level_parameter *param, const char *data, const char **ptr, struct d3dx_object *objects)
static HRESULT WINAPI d3dx_effect_SetMatrixPointerArray(ID3DXEffect *iface, D3DXHANDLE parameter, const D3DXMATRIX **matrix, UINT count)
static BOOL param_zero_data_func(void *dummy, struct d3dx_parameter *param)
static HRESULT WINAPI d3dx_effect_GetString(ID3DXEffect *iface, D3DXHANDLE parameter, const char **string)
static HRESULT WINAPI d3dx_effect_CommitChanges(ID3DXEffect *iface)
static void get_vector(struct d3dx_parameter *param, D3DXVECTOR4 *vector)
static D3DXHANDLE WINAPI ID3DXEffectCompilerImpl_GetFunction(ID3DXEffectCompiler *iface, UINT index)
static D3DXHANDLE WINAPI d3dx_effect_GetTechnique(ID3DXEffect *iface, UINT index)
static ULONG WINAPI d3dx_effect_Release(ID3DXEffect *iface)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetString(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, const char **string)
HRESULT d3dx_init_parameters_store(struct d3dx_parameters_store *store, unsigned int count)
static HRESULT WINAPI d3dx_effect_BeginParameterBlock(ID3DXEffect *iface)
static D3DXHANDLE WINAPI d3dx_effect_GetAnnotation(ID3DXEffect *iface, D3DXHANDLE object, UINT index)
static D3DXHANDLE WINAPI ID3DXEffectCompilerImpl_GetPassByName(ID3DXEffectCompiler *iface, D3DXHANDLE technique, const char *name)
static BOOL param_set_top_level_param(void *top_level_param, struct d3dx_parameter *param)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetValue(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, void *data, UINT bytes)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetFloat(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, float *f)
static HRESULT WINAPI d3dx_effect_GetVector(ID3DXEffect *iface, D3DXHANDLE parameter, D3DXVECTOR4 *vector)
static HRESULT WINAPI ID3DXEffectCompilerImpl_SetMatrixArray(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, const D3DXMATRIX *matrix, UINT count)
static void param_set_data_pointer(struct d3dx_parameter *param, unsigned char *data, BOOL child, BOOL free_data)
static void set_dirty(struct d3dx_parameter *param)
HRESULT WINAPI D3DXCreateEffectFromFileExA(struct IDirect3DDevice9 *device, const char *srcfile, const D3DXMACRO *defines, struct ID3DXInclude *include, const char *skipconstants, DWORD flags, struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **messages)
static HRESULT WINAPI ID3DXEffectCompilerImpl_SetArrayRange(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, UINT start, UINT end)
static HRESULT WINAPI ID3DXEffectCompilerImpl_SetMatrixTransposePointerArray(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, const D3DXMATRIX **matrix, UINT count)
static D3DXHANDLE get_pass_handle(struct d3dx_pass *pass)
static D3DXHANDLE get_parameter_handle(struct d3dx_parameter *parameter)
static ULONG WINAPI ID3DXEffectCompilerImpl_AddRef(ID3DXEffectCompiler *iface)
static void get_matrix(struct d3dx_parameter *param, D3DXMATRIX *matrix, BOOL transpose)
HRESULT WINAPI D3DXCreateEffectCompilerFromResourceW(HMODULE srcmodule, const WCHAR *srcresource, const D3DXMACRO *defines, ID3DXInclude *include, DWORD flags, ID3DXEffectCompiler **compiler, ID3DXBuffer **messages)
static HRESULT WINAPI d3dx_effect_GetPool(ID3DXEffect *iface, ID3DXEffectPool **pool)
static HRESULT WINAPI d3dx_effect_Begin(ID3DXEffect *iface, UINT *passes, DWORD flags)
static HRESULT d3dx_pool_sync_shared_parameter(struct d3dx_effect_pool *pool, struct d3dx_top_level_parameter *param)
static D3DXHANDLE WINAPI ID3DXEffectCompilerImpl_GetParameterBySemantic(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, const char *semantic)
static HRESULT WINAPI d3dx_effect_SetFloatArray(ID3DXEffect *iface, D3DXHANDLE parameter, const float *f, UINT count)
void d3dx_parameters_store_cleanup(struct d3dx_parameters_store *store)
static HRESULT d3dx_parse_init_value(struct d3dx_effect *effect, struct d3dx_parameter *param, const char *data, const char *ptr, struct d3dx_object *objects)
static HRESULT WINAPI d3dx_effect_GetPixelShader(ID3DXEffect *iface, D3DXHANDLE parameter, IDirect3DPixelShader9 **shader)
static HRESULT WINAPI d3dx_effect_SetTexture(ID3DXEffect *iface, D3DXHANDLE parameter, IDirect3DBaseTexture9 *texture)
static HRESULT d3dx_parse_array_selector(struct d3dx_effect *effect, struct d3dx_state *state, const char **skip_constants, unsigned int skip_constants_count)
static HRESULT WINAPI d3dx_effect_GetFunctionDesc(ID3DXEffect *iface, D3DXHANDLE shader, D3DXFUNCTION_DESC *desc)
static D3DXHANDLE WINAPI d3dx_effect_GetFunctionByName(ID3DXEffect *iface, const char *name)
static HRESULT WINAPI d3dx_effect_SetValue(ID3DXEffect *iface, D3DXHANDLE parameter, const void *data, UINT bytes)
static struct d3dx_parameter * get_annotation_by_name(struct d3dx_effect *effect, unsigned int count, struct d3dx_parameter *annotations, const char *name)
static struct d3dx_pass * get_valid_pass(struct d3dx_effect *effect, D3DXHANDLE pass)
HRESULT WINAPI D3DXCreateEffectFromResourceW(struct IDirect3DDevice9 *device, HMODULE srcmodule, const WCHAR *srcresource, const D3DXMACRO *defines, struct ID3DXInclude *include, DWORD flags, struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **messages)
static struct d3dx_technique * get_valid_technique(struct d3dx_effect *effect, D3DXHANDLE technique)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetTechniqueDesc(ID3DXEffectCompiler *iface, D3DXHANDLE technique, D3DXTECHNIQUE_DESC *desc)
static void * param_get_data_and_dirtify(struct d3dx_effect *effect, struct d3dx_parameter *param, unsigned int bytes, BOOL value_changed)
#define PARAMETER_FLAG_SHARED
static struct ID3DXEffectCompilerImpl * impl_from_ID3DXEffectCompiler(ID3DXEffectCompiler *iface)
#define INITIAL_POOL_SIZE
static struct d3dx_parameter * get_valid_parameter(struct d3dx_effect *effect, D3DXHANDLE parameter)
static void free_effect_pool(struct d3dx_effect_pool *pool)
static HRESULT WINAPI d3dx_effect_GetMatrixArray(ID3DXEffect *iface, D3DXHANDLE parameter, D3DXMATRIX *matrix, UINT count)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetMatrix(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, D3DXMATRIX *matrix)
static BOOL walk_state_dep(struct d3dx_state *state, walk_parameter_dep_func param_func, void *data)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetFloatArray(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, float *f, UINT count)
static void d3dx_effect_cleanup(struct d3dx_effect *effect)
static HRESULT d3dx9_get_param_value_ptr(struct d3dx_pass *pass, struct d3dx_state *state, void **param_value, struct d3dx_parameter **out_param, BOOL update_all, BOOL *param_dirty)
static void set_matrix_transpose(struct d3dx_parameter *param, const D3DXMATRIX *matrix, void *dst_data)
#define INITIAL_PARAM_BLOCK_SIZE
static const char parameter_block_magic_string[4]
static HRESULT WINAPI d3dx_effect_SetFloat(ID3DXEffect *iface, D3DXHANDLE parameter, float f)
static D3DXHANDLE WINAPI d3dx_effect_GetParameterBySemantic(ID3DXEffect *iface, D3DXHANDLE parameter, const char *semantic)
static D3DXHANDLE WINAPI ID3DXEffectCompilerImpl_GetAnnotation(ID3DXEffectCompiler *iface, D3DXHANDLE object, UINT index)
static const char parameter_magic_string[4]
static D3DXHANDLE WINAPI d3dx_effect_GetParameterElement(ID3DXEffect *iface, D3DXHANDLE parameter, UINT index)
static HRESULT WINAPI ID3DXEffectCompilerImpl_SetVectorArray(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, const D3DXVECTOR4 *vector, UINT count)
static void free_object(struct d3dx_object *object)
static D3DXHANDLE WINAPI ID3DXEffectCompilerImpl_GetParameterByName(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, const char *name)
static HRESULT WINAPI d3dx_effect_GetTexture(ID3DXEffect *iface, D3DXHANDLE parameter, IDirect3DBaseTexture9 **texture)
static HRESULT WINAPI ID3DXEffectCompilerImpl_SetLiteral(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, BOOL literal)
static HRESULT WINAPI ID3DXEffectCompilerImpl_SetBool(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, BOOL b)
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetPixelShader(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, struct IDirect3DPixelShader9 **shader)
static const struct ID3DXEffectVtbl ID3DXEffect_Vtbl
static HRESULT WINAPI d3dx_effect_GetMatrix(ID3DXEffect *iface, D3DXHANDLE parameter, D3DXMATRIX *matrix)
static const struct @283 state_table[]
static HRESULT WINAPI ID3DXEffectCompilerImpl_GetParameterDesc(ID3DXEffectCompiler *iface, D3DXHANDLE parameter, D3DXPARAMETER_DESC *desc)
static HRESULT WINAPI d3dx_effect_ValidateTechnique(ID3DXEffect *iface, D3DXHANDLE technique)
static void d3dx_pool_release_shared_parameter(struct d3dx_top_level_parameter *param)
static HRESULT d3dx9_copy_data(struct d3dx_effect *effect, unsigned int object_id, const char **ptr)
static __inline const char * debugstr_an(const char *s, int n)
#define stricmp(_String1, _String2)
#define WideCharToMultiByte
#define MultiByteToWideChar
static const WCHAR separator[]
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
HRSRC WINAPI FindResourceA(HMODULE hModule, LPCSTR name, LPCSTR type)
_ACRTIMP void *__cdecl _recalloc(void *, size_t, size_t) __WINE_ALLOC_SIZE(2
_ACRTIMP int __cdecl atoi(const char *)
_ACRTIMP char *__cdecl strchr(const char *, int)
_ACRTIMP size_t __cdecl strlen(const char *)
_ACRTIMP size_t __cdecl strcspn(const char *, const char *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
_ACRTIMP int __cdecl strncmp(const char *, const char *, size_t)
static char * strdup(const char *buf)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
#define D3DXFX_DONOTSAVESTATE
#define D3DX_PARAMETER_ANNOTATION
#define D3DXFX_DONOTSAVESAMPLERSTATE
#define D3DXFX_NOT_CLONEABLE
#define D3DXFX_DONOTSAVESHADERSTATE
#define D3DXFX_LARGEADDRESSAWARE
#define ID3DXInclude_Close(p, a)
#define ID3DXInclude_Open(p, a, b, c, d, e)
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLboolean GLboolean GLboolean b
GLsizei GLboolean transpose
GLenum const GLfloat * params
GLuint GLsizei GLsizei * length
GLsizeiptr const GLvoid GLenum usage
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum light
static ID3DXConstantTable ** constant_table
#define memcpy(s1, s2, n)
#define memmove(s1, s2, n)
static const CLSID * objects[]
D3D11_SHADER_VARIABLE_DESC desc
static ULONG ** element_count
png_const_structrp png_const_inforp int * unit
#define IsEqualGUID(rguid1, rguid2)
static unsigned __int64 next
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
#define WINE_RB_ENTRY_VALUE
ID3DXEffectCompiler ID3DXEffectCompiler_iface
ID3DXEffectPool ID3DXEffectPool_iface
struct d3dx_shared_data * shared_data
D3DMATERIAL9 current_material
struct d3dx_technique * active_technique
unsigned int technique_count
unsigned int object_count
struct d3dx_technique * techniques
struct d3dx_pass * active_pass
D3DLIGHT9 current_light[8]
struct ID3DXEffectStateManager * manager
unsigned int light_updated
struct d3dx_object * objects
struct IDirect3DDevice9 * device
struct d3dx_effect_pool * pool
struct d3dx_parameters_store params
ID3DXEffect ID3DXEffect_iface
struct list parameter_block_list
struct d3dx_parameter_block * current_parameter_block
char * skip_constants_string
ID3DXInclude ID3DXInclude_iface
struct d3dx_parameter * param
struct d3dx_effect * effect
char magic_string[ARRAY_SIZE(parameter_block_magic_string)]
struct d3dx_parameter * members
struct d3dx_param_eval * param_eval
unsigned int member_count
unsigned int element_count
D3DXPARAMETER_CLASS class
struct d3dx_top_level_parameter * parameters
unsigned int full_name_tmp_size
struct d3dx_parameter * annotations
unsigned int annotation_count
struct d3dx_state * states
struct d3dx_parameter * param
struct d3dx_state * states
struct d3dx_parameter * referenced_param
struct d3dx_parameter parameter
struct d3dx_pass * passes
struct d3dx_parameter * annotations
struct IDirect3DStateBlock9 * saved_state
unsigned int annotation_count
unsigned int annotation_count
struct d3dx_shared_data * shared_data
struct d3dx_parameter * annotations
ULONG64 * version_counter
struct d3dx_parameter param
#define FIELD_OFFSET(t, f)
#define CONTAINING_RECORD(address, type, field)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
WDF_EXTERN_C_START typedef _In_ WDFDEVICE _In_ WDFCONTEXT _In_ WDF_DMA_DIRECTION Direction
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
static unsigned int block