Commit 2d5fdb16 authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard

d3d10: Add support for parsing stencil reference values to parse_fx10_object().

parent 1cfba6ce
......@@ -52,6 +52,7 @@ enum d3d10_effect_object_type
D3D10_EOT_VERTEXSHADER = 0x6,
D3D10_EOT_PIXELSHADER = 0x7,
D3D10_EOT_GEOMETRYSHADER = 0x8,
D3D10_EOT_STENCIL_REF = 0x9,
D3D10_EOT_BLEND_FACTOR = 0xa,
D3D10_EOT_SAMPLE_MASK = 0xb,
};
......@@ -159,6 +160,7 @@ struct d3d10_effect_pass
struct d3d10_effect_object *objects;
struct d3d10_effect_variable *annotations;
UINT stencil_ref;
UINT sample_mask;
float blend_factor[4];
};
......
......@@ -921,6 +921,10 @@ static BOOL read_int32_value(DWORD value, D3D_SHADER_VARIABLE_TYPE in_type, INT
{
switch (in_type)
{
case D3D10_SVT_FLOAT:
out_data[idx] = *(float *)&value;
return TRUE;
case D3D10_SVT_INT:
out_data[idx] = value;
return TRUE;
......@@ -1018,6 +1022,16 @@ static HRESULT parse_fx10_object(struct d3d10_effect_object *o, const char **ptr
hr = S_OK;
break;
case D3D10_EOT_STENCIL_REF:
if (!read_value_list(data + offset, D3D10_SVT_UINT, 1, &o->pass->stencil_ref))
{
ERR("Failed to read stencil ref.\n");
return E_FAIL;
}
hr = S_OK;
break;
case D3D10_EOT_SAMPLE_MASK:
if (!read_value_list(data + offset, D3D10_SVT_UINT, 1, &o->pass->sample_mask))
{
......@@ -2576,6 +2590,7 @@ static HRESULT STDMETHODCALLTYPE d3d10_effect_pass_GetDesc(ID3D10EffectPass *ifa
}
}
desc->StencilRef = This->stencil_ref;
desc->SampleMask = This->sample_mask;
memcpy(desc->BlendFactor, This->blend_factor, 4 * sizeof(float));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment