Travis Athougies : d3dx9_36/tests: Added tests for constant table samplers.
Alexandre Julliard
julliard at winehq.org
Thu Jun 23 04:10:07 CDT 2011
Module: wine
Branch: master
Commit: 7a8a7b920e4c4f5ed7dcf750f9cf712a6e614172
URL: http://source.winehq.org/git/wine.git/?a=commit;h=7a8a7b920e4c4f5ed7dcf750f9cf712a6e614172
Author: Travis Athougies <iammisc at gmail.com>
Date: Wed Jun 22 13:10:52 2011 -0700
d3dx9_36/tests: Added tests for constant table samplers.
---
dlls/d3dx9_36/tests/shader.c | 66 +++++++++++++++++++++++++++++++++++++++--
1 files changed, 62 insertions(+), 4 deletions(-)
diff --git a/dlls/d3dx9_36/tests/shader.c b/dlls/d3dx9_36/tests/shader.c
index 540317a..5bcd216 100644
--- a/dlls/d3dx9_36/tests/shader.c
+++ b/dlls/d3dx9_36/tests/shader.c
@@ -102,8 +102,8 @@ static const D3DXCONSTANT_DESC ctab_basic_expected[] = {
static const DWORD ctab_matrices[] = {
0xfffe0300, /* vs_3_0 */
0x0032fffe, FCC_CTAB, /* CTAB comment */
- 0x0000001c, 0x000000b0, 0xfffe0300, 0x00000003, 0x0000001c, 0x20008100, /* Header */
- 0x000000a8,
+ 0x0000001c, 0x000000b4, 0xfffe0300, 0x00000003, 0x0000001c, 0x20008100, /* Header */
+ 0x000000ac,
0x00000058, 0x00070002, 0x00000001, 0x00000064, 0x00000000, /* Constant 1 desc (fmatrix3x1) */
0x00000074, 0x00000002, 0x00000004, 0x00000080, 0x00000000, /* Constant 2 desc (fmatrix4x4) */
0x00000090, 0x00040002, 0x00000003, 0x0000009c, 0x00000000, /* Constant 3 desc (imatrix2x3) */
@@ -157,6 +157,29 @@ static const D3DXCONSTANT_DESC ctab_arrays_expected[] = {
{"bvecarray", D3DXRS_FLOAT4, 16, 2, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 3, 0, 36, 0},
{"ivecarray", D3DXRS_FLOAT4, 18, 1, D3DXPC_VECTOR, D3DXPT_INT, 1, 4, 1, 0, 16, 0}};
+static const DWORD ctab_samplers[] = {
+ 0xfffe0300, /* vs_3_0 */
+ 0x0032fffe, FCC_CTAB, /* CTAB comment */
+ 0x0000001c, 0x000000b4, 0xfffe0300, 0x00000003, 0x0000001c, 0x20008100, /* Header */
+ 0x000000ac,
+ 0x00000058, 0x00020002, 0x00000001, 0x00000064, 0x00000000, /* Constant 1 desc (notsampler) */
+ 0x00000074, 0x00000003, 0x00000001, 0x00000080, 0x00000000, /* Constant 2 desc (sampler1) */
+ 0x00000090, 0x00030003, 0x00000001, 0x0000009c, 0x00000000, /* Constant 3 desc (sampler2) */
+ 0x73746f6e, 0x6c706d61, 0xab007265, /* Constant 1 name */
+ 0x00030001, 0x00040001, 0x00000001, 0x00000000, /* Constant 1 type desc */
+ 0x706d6173, 0x3172656c, 0xababab00, /* Constant 2 name */
+ 0x000c0004, 0x00010001, 0x00000001, 0x00000000, /* Constant 2 type desc */
+ 0x706d6173, 0x3272656c, 0xababab00, /* Constant 3 name */
+ 0x000d0004, 0x00010001, 0x00000001, 0x00000000, /* Constant 3 type desc */
+ 0x335f7376, 0xab00305f, /* Target name string */
+ 0x656e6957, 0x6f727020, 0x7463656a, 0xababab00, /* Creator name string */
+ 0x0000ffff}; /* END */
+
+static const D3DXCONSTANT_DESC ctab_samplers_expected[] = {
+ {"sampler1", D3DXRS_SAMPLER, 0, 1, D3DXPC_OBJECT, D3DXPT_SAMPLER2D, 1, 1, 1, 0, 4, 0},
+ {"sampler2", D3DXRS_SAMPLER, 3, 1, D3DXPC_OBJECT, D3DXPT_SAMPLER3D, 1, 1, 1, 0, 4, 0},
+ {"notsampler", D3DXRS_FLOAT4, 2, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 4, 1, 0, 16, 0}};
+
static void test_get_shader_size(void)
{
UINT shader_size, expected;
@@ -370,8 +393,10 @@ static void test_constant_table(const char *test_name, const DWORD *ctable_fn,
const_handle = ID3DXConstantTable_GetConstantByName(ctable, NULL, expected->Name);
- ID3DXConstantTable_GetConstantDesc(ctable, const_handle, &actual, &pCount);
- ok(pCount == 1, "Got more or less descriptions: %d\n", pCount);
+ res = ID3DXConstantTable_GetConstantDesc(ctable, const_handle, &actual, &pCount);
+ ok(SUCCEEDED(res), "%s in %s: ID3DXConstantTable_GetConstantDesc returned %08x\n", expected->Name,
+ test_name, res);
+ ok(pCount == 1, "%s in %s: Got more or less descriptions: %d\n", expected->Name, test_name, pCount);
ok(strcmp(actual.Name, expected->Name) == 0,
"%s in %s: Got different names: Got %s, expected %s\n", expected->Name,
@@ -418,6 +443,8 @@ static void test_constant_tables(void)
sizeof(ctab_matrices_expected)/sizeof(*ctab_matrices_expected));
test_constant_table("test_arrays", ctab_arrays, ctab_arrays_expected,
sizeof(ctab_arrays_expected)/sizeof(*ctab_arrays_expected));
+ test_constant_table("test_samplers", ctab_samplers, ctab_samplers_expected,
+ sizeof(ctab_samplers_expected)/sizeof(*ctab_samplers_expected));
}
static void test_setting_basic_table(IDirect3DDevice9 *device)
@@ -645,6 +672,36 @@ static void test_setting_constants(void)
if (wnd) DestroyWindow(wnd);
}
+static void test_get_sampler_index(void)
+{
+ ID3DXConstantTable *ctable;
+
+ HRESULT res;
+ UINT index;
+
+ ULONG refcnt;
+
+ res = D3DXGetShaderConstantTable(ctab_samplers, &ctable);
+ ok(res == D3D_OK, "D3DXGetShaderConstantTable failed on ctab_samplers: got %08x\n", res);
+
+ index = ID3DXConstantTable_GetSamplerIndex(ctable, "sampler1");
+ ok(index == 0, "ID3DXConstantTable_GetSamplerIndex returned wrong index: Got %d, expected 0\n", index);
+
+ index = ID3DXConstantTable_GetSamplerIndex(ctable, "sampler2");
+ ok(index == 3, "ID3DXConstantTable_GetSamplerIndex returned wrong index: Got %d, expected 3\n", index);
+
+ index = ID3DXConstantTable_GetSamplerIndex(ctable, "nonexistent");
+ ok(index == -1, "ID3DXConstantTable_GetSamplerIndex found non-existent sampler: Got %d\n",
+ index);
+
+ index = ID3DXConstantTable_GetSamplerIndex(ctable, "notsampler");
+ ok(index == -1, "ID3DXConstantTable_GetSamplerIndex succeeded on non-sampler constant: Got %d\n",
+ index);
+
+ refcnt = ID3DXConstantTable_Release(ctable);
+ ok(refcnt == 0, "The ID3DXConstantTable reference count was %u, should be 0\n", refcnt);
+}
+
START_TEST(shader)
{
test_get_shader_size();
@@ -653,4 +710,5 @@ START_TEST(shader)
test_get_shader_constant_table_ex();
test_constant_tables();
test_setting_constants();
+ test_get_sampler_index();
}
More information about the wine-cvs
mailing list