d3dx9/tests: Add effect parameter value SetInt() test.
This commit is contained in:
parent
a90eacab1a
commit
51b9699134
|
@ -888,6 +888,7 @@ test_effect_parameter_value_data[] =
|
||||||
#define EFFECT_PARAMETER_VALUE_ARRAY_SIZE 48
|
#define EFFECT_PARAMETER_VALUE_ARRAY_SIZE 48
|
||||||
/* Constants for special INT/FLOAT conversation */
|
/* Constants for special INT/FLOAT conversation */
|
||||||
#define INT_FLOAT_MULTI 255.0f
|
#define INT_FLOAT_MULTI 255.0f
|
||||||
|
#define INT_FLOAT_MULTI_INVERSE (1/INT_FLOAT_MULTI)
|
||||||
|
|
||||||
static void test_effect_parameter_value_GetValue(const struct test_effect_parameter_value_result *res,
|
static void test_effect_parameter_value_GetValue(const struct test_effect_parameter_value_result *res,
|
||||||
ID3DXEffect *effect, const DWORD *res_value, D3DXHANDLE parameter, UINT i)
|
ID3DXEffect *effect, const DWORD *res_value, D3DXHANDLE parameter, UINT i)
|
||||||
|
@ -1635,6 +1636,7 @@ static void test_effect_parameter_value(IDirect3DDevice9 *device)
|
||||||
D3DXHANDLE parameter;
|
D3DXHANDLE parameter;
|
||||||
D3DXPARAMETER_DESC pdesc;
|
D3DXPARAMETER_DESC pdesc;
|
||||||
BOOL bvalue;
|
BOOL bvalue;
|
||||||
|
INT ivalue;
|
||||||
DWORD input_value[EFFECT_PARAMETER_VALUE_ARRAY_SIZE];
|
DWORD input_value[EFFECT_PARAMETER_VALUE_ARRAY_SIZE];
|
||||||
DWORD expected_value[EFFECT_PARAMETER_VALUE_ARRAY_SIZE];
|
DWORD expected_value[EFFECT_PARAMETER_VALUE_ARRAY_SIZE];
|
||||||
UINT l;
|
UINT l;
|
||||||
|
@ -1721,6 +1723,39 @@ static void test_effect_parameter_value(IDirect3DDevice9 *device)
|
||||||
}
|
}
|
||||||
test_effect_parameter_value_GetTestGroup(&res[k], effect, expected_value, parameter, i);
|
test_effect_parameter_value_GetTestGroup(&res[k], effect, expected_value, parameter, i);
|
||||||
test_effect_parameter_value_ResetValue(&res[k], effect, &blob[res_value_offset], parameter, i);
|
test_effect_parameter_value_ResetValue(&res[k], effect, &blob[res_value_offset], parameter, i);
|
||||||
|
|
||||||
|
/* SetInt */
|
||||||
|
ivalue = 0x1fbf02ff;
|
||||||
|
memcpy(expected_value, &blob[res_value_offset], res_desc->Bytes);
|
||||||
|
hr = effect->lpVtbl->SetInt(effect, parameter, ivalue);
|
||||||
|
if (!res_desc->Elements && res_desc->Rows == 1 && res_desc->Columns == 1)
|
||||||
|
{
|
||||||
|
set_number(expected_value, res_desc->Type, &ivalue, D3DXPT_INT);
|
||||||
|
ok(hr == D3D_OK, "%u - %s: SetInt failed, got %#x, expected %#x\n", i, res_full_name, hr, D3D_OK);
|
||||||
|
}
|
||||||
|
else if(!res_desc->Elements && res_desc->Type == D3DXPT_FLOAT &&
|
||||||
|
((res_desc->Class == D3DXPC_VECTOR && res_desc->Columns != 2) ||
|
||||||
|
(res_desc->Class == D3DXPC_MATRIX_ROWS && res_desc->Rows != 2 && res_desc->Columns == 1)))
|
||||||
|
{
|
||||||
|
FLOAT tmp = ((ivalue & 0xff0000) >> 16) * INT_FLOAT_MULTI_INVERSE;
|
||||||
|
set_number(expected_value, res_desc->Type, &tmp, D3DXPT_FLOAT);
|
||||||
|
tmp = ((ivalue & 0xff00) >> 8) * INT_FLOAT_MULTI_INVERSE;
|
||||||
|
set_number(expected_value + 1, res_desc->Type, &tmp, D3DXPT_FLOAT);
|
||||||
|
tmp = (ivalue & 0xff) * INT_FLOAT_MULTI_INVERSE;
|
||||||
|
set_number(expected_value + 2, res_desc->Type, &tmp, D3DXPT_FLOAT);
|
||||||
|
tmp = ((ivalue & 0xff000000) >> 24) * INT_FLOAT_MULTI_INVERSE;
|
||||||
|
set_number(expected_value + 3, res_desc->Type, &tmp, D3DXPT_FLOAT);
|
||||||
|
|
||||||
|
ok(hr == D3D_OK, "%u - %s: SetInt failed, got %#x, expected %#x\n",
|
||||||
|
i, res_full_name, hr, D3D_OK);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ok(hr == D3DERR_INVALIDCALL, "%u - %s: SetInt failed, got %#x, expected %#x\n",
|
||||||
|
i, res_full_name, hr, D3DERR_INVALIDCALL);
|
||||||
|
}
|
||||||
|
test_effect_parameter_value_GetTestGroup(&res[k], effect, expected_value, parameter, i);
|
||||||
|
test_effect_parameter_value_ResetValue(&res[k], effect, &blob[res_value_offset], parameter, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
count = effect->lpVtbl->Release(effect);
|
count = effect->lpVtbl->Release(effect);
|
||||||
|
|
Loading…
Reference in New Issue