d3dx9/tests: Test setting annotation values.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Zebediah Figura 2022-02-07 17:24:35 -06:00 committed by Alexandre Julliard
parent 47351a609d
commit ffc4d9b84c
1 changed files with 63 additions and 0 deletions

View File

@ -8075,6 +8075,38 @@ static void test_effect_parameter_block(void)
HWND window;
HRESULT hr;
static const DWORD annotation_code[] =
{
#if 0
float f <float a = 1.0;>;
float4 vs_main(float4 pos : POSITION) : POSITION
{
return pos;
}
technique tech0
{
pass p
{
VertexShader = compile vs_2_0 vs_main();
}
}
#endif
0xfeff0901, 0x00000080, 0x00000000, 0x00000003, 0x00000000, 0x0000004c, 0x00000000, 0x00000000,
0x00000001, 0x00000001, 0x00000000, 0x3f800000, 0x00000003, 0x00000000, 0x00000044, 0x00000000,
0x00000000, 0x00000001, 0x00000001, 0x00000002, 0x00000061, 0x00000002, 0x00000066, 0x00000001,
0x00000010, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0x00000070, 0x00000006,
0x68636574, 0x00000030, 0x00000001, 0x00000001, 0x00000002, 0x00000002, 0x00000004, 0x00000020,
0x00000000, 0x00000001, 0x00000028, 0x00000024, 0x00000074, 0x00000000, 0x00000001, 0x0000006c,
0x00000000, 0x00000001, 0x00000092, 0x00000000, 0x00000058, 0x00000054, 0x00000000, 0x00000001,
0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 0x00000074, 0xfffe0200, 0x0014fffe,
0x42415443, 0x0000001c, 0x00000023, 0xfffe0200, 0x00000000, 0x00000000, 0x20000400, 0x0000001c,
0x325f7376, 0x4d00305f, 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820, 0x6853204c, 0x72656461,
0x6d6f4320, 0x656c6970, 0x30312072, 0xab00312e, 0x0200001f, 0x80000000, 0x900f0000, 0x02000001,
0xc00f0000, 0x90e40000, 0x0000ffff,
};
if (!(window = CreateWindowA("static", "d3dx9_test", WS_OVERLAPPEDWINDOW, 0, 0,
640, 480, NULL, NULL, NULL, NULL)))
{
@ -8388,6 +8420,37 @@ static void test_effect_parameter_block(void)
refcount = effect->lpVtbl->Release(effect);
ok(!refcount, "Got unexpected refcount %u.\n", refcount);
hr = D3DXCreateEffect(device, annotation_code, sizeof(annotation_code),
NULL, NULL, 0, NULL, &effect, NULL);
ok(hr == D3D_OK, "Got result %#x.\n", hr);
hr = effect->lpVtbl->GetFloat(effect, "f@a", &float_value);
ok(hr == D3D_OK, "Got result %#x.\n", hr);
ok(float_value == 1.0f, "Got float %.8e.\n", float_value);
hr = effect->lpVtbl->SetFloat(effect, "f@a", 2.0f);
ok(hr == D3D_OK, "Got result %#x.\n", hr);
hr = effect->lpVtbl->GetFloat(effect, "f@a", &float_value);
ok(hr == D3D_OK, "Got result %#x.\n", hr);
ok(float_value == 2.0f, "Got float %.8e.\n", float_value);
hr = effect->lpVtbl->BeginParameterBlock(effect);
ok(hr == D3D_OK, "Got result %#x.\n", hr);
hr = effect->lpVtbl->SetFloat(effect, "f@a", 3.0f);
ok(hr == D3D_OK, "Got result %#x.\n", hr);
hr = effect->lpVtbl->GetFloat(effect, "f@a", &float_value);
ok(hr == D3D_OK, "Got result %#x.\n", hr);
ok(float_value == 2.0f, "Got float %.8e.\n", float_value);
block = effect->lpVtbl->EndParameterBlock(effect);
ok(!!block, "Got unexpected block %p.\n", block);
hr = effect->lpVtbl->ApplyParameterBlock(effect, block);
ok(hr == D3D_OK, "Got result %#x.\n", hr);
hr = effect->lpVtbl->GetFloat(effect, "f@a", &float_value);
ok(hr == D3D_OK, "Got result %#x.\n", hr);
ok(float_value == 3.0f, "Got float %.8e.\n", float_value);
refcount = effect->lpVtbl->Release(effect);
ok(!refcount, "Got unexpected refcount %u.\n", refcount);
refcount = IDirect3DDevice9_Release(device);
ok(!refcount, "Device has %u references left.\n", refcount);
IDirect3D9_Release(d3d);