d3d10/effect: Release technique names on Optimize().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Matteo Bruni <mbruni@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
d2d161d507
commit
eb1f76caa6
|
@ -3435,6 +3435,12 @@ static HRESULT STDMETHODCALLTYPE d3d10_effect_Optimize(ID3D10Effect *iface)
|
||||||
v->u.shader.stream_output_declaration = NULL;
|
v->u.shader.stream_output_declaration = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < effect->technique_count; ++i)
|
||||||
|
{
|
||||||
|
heap_free(effect->techniques[i].name);
|
||||||
|
effect->techniques[i].name = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5996,6 +5996,8 @@ static void test_effect_optimize(void)
|
||||||
{
|
{
|
||||||
D3D10_EFFECT_SHADER_DESC shaderdesc;
|
D3D10_EFFECT_SHADER_DESC shaderdesc;
|
||||||
ID3D10EffectShaderVariable *gs;
|
ID3D10EffectShaderVariable *gs;
|
||||||
|
D3D10_TECHNIQUE_DESC tech_desc;
|
||||||
|
ID3D10EffectTechnique *tech;
|
||||||
ID3D10EffectVariable *v;
|
ID3D10EffectVariable *v;
|
||||||
ID3D10Effect *effect;
|
ID3D10Effect *effect;
|
||||||
ID3D10Device *device;
|
ID3D10Device *device;
|
||||||
|
@ -6011,6 +6013,11 @@ static void test_effect_optimize(void)
|
||||||
hr = create_effect(fx_local_shader, 0, device, NULL, &effect);
|
hr = create_effect(fx_local_shader, 0, device, NULL, &effect);
|
||||||
ok(SUCCEEDED(hr), "Failed to create an effect.\n");
|
ok(SUCCEEDED(hr), "Failed to create an effect.\n");
|
||||||
|
|
||||||
|
tech = effect->lpVtbl->GetTechniqueByIndex(effect, 0);
|
||||||
|
hr = tech->lpVtbl->GetDesc(tech, &tech_desc);
|
||||||
|
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
|
||||||
|
ok(!strcmp(tech_desc.Name, "Render"), "Unexpected technique name %s.\n", tech_desc.Name);
|
||||||
|
|
||||||
v = effect->lpVtbl->GetVariableByName(effect, "g_so");
|
v = effect->lpVtbl->GetVariableByName(effect, "g_so");
|
||||||
|
|
||||||
gs = v->lpVtbl->AsShader(v);
|
gs = v->lpVtbl->AsShader(v);
|
||||||
|
@ -6038,6 +6045,16 @@ static void test_effect_optimize(void)
|
||||||
ok(!shaderdesc.NumInputSignatureEntries, "Unexpected input signature count.\n");
|
ok(!shaderdesc.NumInputSignatureEntries, "Unexpected input signature count.\n");
|
||||||
ok(!shaderdesc.NumOutputSignatureEntries, "Unexpected output signature count.\n");
|
ok(!shaderdesc.NumOutputSignatureEntries, "Unexpected output signature count.\n");
|
||||||
|
|
||||||
|
hr = tech->lpVtbl->GetDesc(tech, &tech_desc);
|
||||||
|
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
|
||||||
|
ok(!tech_desc.Name, "Unexpected technique name %p.\n", tech_desc.Name);
|
||||||
|
|
||||||
|
tech = effect->lpVtbl->GetTechniqueByIndex(effect, 0);
|
||||||
|
ok(tech->lpVtbl->IsValid(tech), "Unexpected valid technique.\n");
|
||||||
|
|
||||||
|
tech = effect->lpVtbl->GetTechniqueByName(effect, "Render");
|
||||||
|
ok(!tech->lpVtbl->IsValid(tech), "Unexpected valid technique.\n");
|
||||||
|
|
||||||
effect->lpVtbl->Release(effect);
|
effect->lpVtbl->Release(effect);
|
||||||
|
|
||||||
refcount = ID3D10Device_Release(device);
|
refcount = ID3D10Device_Release(device);
|
||||||
|
|
Loading…
Reference in New Issue