d3dx9/tests: Add ID3DXConstantTable matrix column array test.

This commit is contained in:
Rico Schüller 2013-07-22 23:25:09 +02:00 committed by Alexandre Julliard
parent 2bfd3e9867
commit b7702177bc
1 changed files with 437 additions and 0 deletions

View File

@ -3227,6 +3227,420 @@ static const struct registerset_test registerset_test_column_bool_float[] =
{0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
};
/*
* fxc.exe /Tvs_3_0
*/
#if 0
bool3x2 cab[2] = {1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1};
int3x2 can[2] = {14, 15, 16, 71, 18, 19, 55, 63, 96, 96, 97, 13};
float3x2 caf[2] = {1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 1.2, 1.3, 1.4};
bool3x2 cabf[2] = {1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1};
int3x2 canf[2] = {300, 301, 303, 302, 304, 306, 350, 365, 654, 612, 326, 999};
float4 main(float4 pos : POSITION) : POSITION
{
float4 tmp = 0;
int i;
if (cab[1]._32) for (i = 0; i < can[1]._31; i++) tmp.x += pos.z * caf[1]._31 * cabf[1]._32;
else for (i = 0; i < can[1]._32; i++) tmp.y += pos.y * caf[1]._32 * canf[1]._32;
return tmp;
}
#endif
static const DWORD registerset_blob_column_array[] =
{
0xfffe0300, 0x0096fffe, 0x42415443, 0x0000001c, 0x00000223, 0xfffe0300, 0x00000005, 0x0000001c,
0x00000100, 0x0000021c, 0x00000080, 0x00000000, 0x0000000c, 0x00000084, 0x00000094, 0x000000c4,
0x00040002, 0x00000004, 0x000000cc, 0x000000dc, 0x0000011c, 0x00000002, 0x00000004, 0x00000120,
0x00000130, 0x00000170, 0x00000001, 0x0000000c, 0x00000174, 0x00000184, 0x000001c4, 0x00080002,
0x00000004, 0x000001cc, 0x000001dc, 0x00626163, 0x00010003, 0x00020003, 0x00000002, 0x00000000,
0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, 0x00000000, 0xffffffff, 0xffffffff, 0x00000000,
0xffffffff, 0xffffffff, 0x00000000, 0xffffffff, 0x66626163, 0xababab00, 0x00010003, 0x00020003,
0x00000002, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000,
0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000,
0x3f800000, 0x00000000, 0x00666163, 0x00030003, 0x00020003, 0x00000002, 0x00000000, 0x3f8ccccd,
0x40533333, 0x40b00000, 0x00000000, 0x400ccccd, 0x408ccccd, 0x40d33333, 0x00000000, 0x40f66666,
0x411e6666, 0x3fa66666, 0x00000000, 0x410ccccd, 0x3f99999a, 0x3fb33333, 0x00000000, 0x006e6163,
0x00020003, 0x00020003, 0x00000002, 0x00000000, 0x0000000e, 0x00000010, 0x00000012, 0x00000000,
0x0000000f, 0x00000047, 0x00000013, 0x00000000, 0x00000037, 0x00000060, 0x00000061, 0x00000000,
0x0000003f, 0x00000060, 0x0000000d, 0x00000000, 0x666e6163, 0xababab00, 0x00020003, 0x00020003,
0x00000002, 0x00000000, 0x43960000, 0x43978000, 0x43980000, 0x00000000, 0x43968000, 0x43970000,
0x43990000, 0x00000000, 0x43af0000, 0x44238000, 0x43a30000, 0x00000000, 0x43b68000, 0x44190000,
0x4479c000, 0x00000000, 0x335f7376, 0x4d00305f, 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820,
0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970, 0x2e392072, 0x392e3932, 0x332e3235, 0x00313131,
0x05000051, 0xa00f000c, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0200001f, 0x80000000,
0x900f0000, 0x0200001f, 0x80000000, 0xe00f0000, 0x01000028, 0xe0e4080b, 0x03000005, 0x80010000,
0xa0aa0002, 0x90aa0000, 0x02000001, 0x80010001, 0xa000000c, 0x01000026, 0xf0e4000a, 0x04000004,
0x80010001, 0x80000000, 0xa0aa0007, 0x80000001, 0x00000027, 0x02000001, 0x80020001, 0xa000000c,
0x0000002a, 0x03000005, 0x80010000, 0xa0aa0003, 0x90550000, 0x02000001, 0x80020001, 0xa000000c,
0x01000026, 0xf0e4000b, 0x04000004, 0x80020001, 0x80000000, 0xa0aa000b, 0x80550001, 0x00000027,
0x02000001, 0x80010001, 0xa000000c, 0x0000002b, 0x02000001, 0xe0030000, 0x80e40001, 0x02000001,
0xe00c0000, 0xa000000c, 0x0000ffff,
};
static const struct registerset_constants registerset_constants_column_array_float[] =
{
{"caf", {"caf", D3DXRS_FLOAT4, 0, 4, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 3, 2, 2, 0, 48, NULL}, 76},
{"caf[0]", {"caf", D3DXRS_FLOAT4, 0, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 3, 2, 1, 0, 24, NULL}, 76},
{"caf[1]", {"caf", D3DXRS_FLOAT4, 2, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 3, 2, 1, 0, 24, NULL}, 84},
};
static const struct registerset_test registerset_blob_column_array_float[] =
{
{SetInt},
{SetBool},
{SetFloat},
{SetIntArray, 1, 0, 5},
{SetIntArray, 1, 6, 11, 8,
{0x40000000, 0x40800000, 0x00000000, 0x00000000, 0x40400000, 0x40a00000, 0x40e00000}},
{SetIntArray, 1, 12, REGISTER_OUTPUT_SIZE, 16,
{0x40000000, 0x40800000, 0x00000000, 0x00000000, 0x40400000, 0x40a00000, 0x40e00000, 0x00000000,
0x41000000, 0x41200000, 0x41400000, 0x00000000, 0x41100000, 0x41300000, 0x41500000}},
{SetBoolArray, 1, 0, 5},
{SetBoolArray, 1, 6, 11, 8,
{0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
{SetBoolArray, 1, 12, REGISTER_OUTPUT_SIZE, 16,
{0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000,
0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
{SetFloatArray, 0, 0, 5},
{SetFloatArray, 0, 6, 11, 8,
{0x40000123, 0x40800123, 0x40c00123, 0x00000000, 0x00000000, 0x40a00123, 0x40e00123}},
{SetFloatArray, 0, 12, REGISTER_OUTPUT_SIZE, 16,
{0x40000123, 0x40800123, 0x40c00123, 0x00000000, 0x00000000, 0x40a00123, 0x40e00123, 0x00000000,
0x41000123, 0x41200123, 0x41400123, 0x00000000, 0x41100123, 0x41300123, 0x41500123}},
{SetValue, 0, 0, 23},
{SetValue, 0, 24, 47, 8,
{0x40000123, 0x40800123, 0x40c00123, 0x00000000, 0x00000000, 0x40a00123, 0x40e00123}},
{SetValue, 0, 48, REGISTER_OUTPUT_SIZE * 4, 16,
{0x40000123, 0x40800123, 0x40c00123, 0x00000000, 0x00000000, 0x40a00123, 0x40e00123, 0x00000000,
0x41000123, 0x41200123, 0x41400123, 0x00000000, 0x41100123, 0x41300123, 0x41500123}},
{SetVector},
{SetVectorArray, 0, 0, 1},
{SetVectorArray, 0, 2, 3, 8,
{0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123}},
{SetVectorArray, 0, 4, REGISTER_OUTPUT_SIZE / 4, 16,
{0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123, 0x00000000,
0x41600123, 0x41a00123, 0x00000000, 0x00000000, 0x41700123, 0x41b00123, 0x41f00123}},
{SetMatrix, 0, 0, 0, 8,
{0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123}},
{SetMatrixArray},
{SetMatrixArray, 0, 1, 1, 8,
{0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123}},
{SetMatrixArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 16,
{0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123, 0x00000000,
0x41a00123, 0x00000000, 0x00000000, 0x00000000, 0x41b00123, 0x41f00123, 0x42300123}},
{SetMatrixTranspose, 0, 0, 0, 8,
{0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123}},
{SetMatrixTransposeArray},
{SetMatrixTransposeArray, 0, 1, 1, 8,
{0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123}},
{SetMatrixTransposeArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 16,
{0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123, 0x00000000,
0x41a00123, 0x41b00123, 0x41c00123, 0x00000000, 0x00000000, 0x41f00123, 0x42000123}},
{SetMatrixPointerArray},
{SetMatrixPointerArray, 0, 1, 1, 8,
{0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123}},
{SetMatrixPointerArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 16,
{0x40000123, 0x40c00123, 0x41200123, 0x00000000, 0x00000000, 0x40e00123, 0x41300123, 0x00000000,
0x41900123, 0x41d00123, 0x42100123, 0x00000000, 0x41a00123, 0x00000000, 0x00000000}},
{SetMatrixTransposePointerArray},
{SetMatrixTransposePointerArray, 0, 1, 1, 8,
{0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123}},
{SetMatrixTransposePointerArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 16,
{0x40000123, 0x00000000, 0x40800123, 0x00000000, 0x40c00123, 0x40e00123, 0x41000123, 0x00000000,
0x41900123, 0x41a00123, 0x41b00123, 0x00000000, 0x41d00123, 0x00000000, 0x41f00123}},
};
static const struct registerset_constants registerset_constants_column_array_int[] =
{
{"can", {"can", D3DXRS_INT4, 0, 12, D3DXPC_MATRIX_COLUMNS, D3DXPT_INT, 3, 2, 2, 0, 48, NULL}, 97},
{"can[0]", {"can", D3DXRS_INT4, 0, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 97},
{"can[1]", {"can", D3DXRS_INT4, 2, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 105},
};
static const struct registerset_test registerset_blob_column_array_int[] =
{
{SetInt},
{SetBool},
{SetFloat},
{SetIntArray, 1, 0, 5},
{SetIntArray, 1, 6, 11, 8,
{0x00000002, 0x00000004, 0x00000000, 0x00000000, 0x00000003, 0x00000005, 0x00000007}},
{SetIntArray, 1, 12, REGISTER_OUTPUT_SIZE, 16,
{0x00000002, 0x00000004, 0x00000000, 0x00000000, 0x00000003, 0x00000005, 0x00000007, 0x00000000,
0x00000008, 0x0000000a, 0x0000000c, 0x00000000, 0x00000009, 0x0000000b, 0x0000000d}},
{SetBoolArray, 1, 0, 5},
{SetBoolArray, 1, 6, 11, 8,
{0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000001, 0x00000001, 0x00000001}},
{SetBoolArray, 1, 12, REGISTER_OUTPUT_SIZE, 16,
{0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000000,
0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001}},
{SetFloatArray, 0, 0, 5},
{SetFloatArray, 0, 6, 11, 8,
{0x00000002, 0x00000004, 0x00000006, 0x00000000, 0x00000000, 0x00000005, 0x00000007}},
{SetFloatArray, 0, 12, REGISTER_OUTPUT_SIZE, 16,
{0x00000002, 0x00000004, 0x00000006, 0x00000000, 0x00000000, 0x00000005, 0x00000007, 0x00000000,
0x00000008, 0x0000000a, 0x0000000c, 0x00000000, 0x00000009, 0x0000000b, 0x0000000d}},
{SetValue, 1, 0, 23},
{SetValue, 1, 24, 47, 8,
{0x00000002, 0x00000004, 0x00000000, 0x00000000, 0x00000003, 0x00000005, 0x00000007}},
{SetValue, 1, 48, REGISTER_OUTPUT_SIZE * 4, 16,
{0x00000002, 0x00000004, 0x00000000, 0x00000000, 0x00000003, 0x00000005, 0x00000007, 0x00000000,
0x00000008, 0x0000000a, 0x0000000c, 0x00000000, 0x00000009, 0x0000000b, 0x0000000d}},
{SetVector},
{SetVectorArray, 0, 0, 1},
{SetVectorArray, 0, 2, 3, 8,
{0x00000002, 0x00000006, 0x0000000a, 0x00000000, 0x00000000, 0x00000007, 0x0000000b}},
{SetVectorArray, 0, 4, REGISTER_OUTPUT_SIZE / 4, 16,
{0x00000002, 0x00000006, 0x0000000a, 0x00000000, 0x00000000, 0x00000007, 0x0000000b, 0x00000000,
0x0000000e, 0x00000014, 0x00000000, 0x00000000, 0x0000000f, 0x00000016, 0x0000001e}},
{SetMatrix, 0, 0, 0, 8,
{0x00000002, 0x00000006, 0x0000000a, 0x00000000, 0x00000000, 0x00000007, 0x0000000b}},
{SetMatrixArray},
{SetMatrixArray, 0, 1, 1, 8,
{0x00000002, 0x00000006, 0x0000000a, 0x00000000, 0x00000000, 0x00000007, 0x0000000b}},
{SetMatrixArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 16,
{0x00000002, 0x00000006, 0x0000000a, 0x00000000, 0x00000000, 0x00000007, 0x0000000b, 0x00000000,
0x00000014, 0x00000000, 0x00000000, 0x00000000, 0x00000016, 0x0000001e, 0x0000002c}},
{SetMatrixTranspose, 0, 0, 0, 8,
{0x00000002, 0x00000000, 0x00000004, 0x00000000, 0x00000006, 0x00000007, 0x00000008}},
{SetMatrixTransposeArray},
{SetMatrixTransposeArray, 0, 1, 1, 8,
{0x00000002, 0x00000000, 0x00000004, 0x00000000, 0x00000006, 0x00000007, 0x00000008}},
{SetMatrixTransposeArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 16,
{0x00000002, 0x00000000, 0x00000004, 0x00000000, 0x00000006, 0x00000007, 0x00000008, 0x00000000,
0x00000014, 0x00000016, 0x00000018, 0x00000000, 0x00000000, 0x0000001e, 0x00000020}},
{SetMatrixPointerArray},
{SetMatrixPointerArray, 0, 1, 1, 8,
{0x00000002, 0x00000006, 0x0000000a, 0x00000000, 0x00000000, 0x00000007, 0x0000000b}},
{SetMatrixPointerArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 16,
{0x00000002, 0x00000006, 0x0000000a, 0x00000000, 0x00000000, 0x00000007, 0x0000000b, 0x00000000,
0x00000012, 0x0000001a, 0x00000024, 0x00000000, 0x00000014, 0x00000000, 0x00000000}},
{SetMatrixTransposePointerArray},
{SetMatrixTransposePointerArray, 0, 1, 1, 8,
{0x00000002, 0x00000000, 0x00000004, 0x00000000, 0x00000006, 0x00000007, 0x00000008}},
{SetMatrixTransposePointerArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 16,
{0x00000002, 0x00000000, 0x00000004, 0x00000000, 0x00000006, 0x00000007, 0x00000008, 0x00000000,
0x00000012, 0x00000014, 0x00000016, 0x00000000, 0x0000001a, 0x00000000, 0x0000001e}},
};
static const struct registerset_constants registerset_constants_column_array_bool[] =
{
{"cab", {"cab", D3DXRS_BOOL, 0, 12, D3DXPC_MATRIX_COLUMNS, D3DXPT_BOOL, 3, 2, 2, 0, 48, NULL}, 37},
{"cab[0]", {"cab", D3DXRS_BOOL, 0, 6, D3DXPC_MATRIX_COLUMNS, D3DXPT_BOOL, 3, 2, 1, 0, 24, NULL}, 37},
{"cab[1]", {"cab", D3DXRS_BOOL, 6, 6, D3DXPC_MATRIX_COLUMNS, D3DXPT_BOOL, 3, 2, 1, 0, 24, NULL}, 43},
};
static const struct registerset_test registerset_test_column_array_bool[] =
{
{SetInt},
{SetBool},
{SetFloat},
{SetIntArray, 1, 0, 5},
{SetIntArray, 1, 6, 11, 6,
{0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001}},
{SetIntArray, 1, 12, REGISTER_OUTPUT_SIZE, 12,
{0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
0x00000001, 0x00000001, 0x00000001, 0x00000001}},
{SetBoolArray, 1, 0, 5},
{SetBoolArray, 1, 6, 11, 6,
{0x00000002, 0x00000004, 0x00000000, 0x00000003, 0x00000005, 0x00000007}},
{SetBoolArray, 1, 12, REGISTER_OUTPUT_SIZE, 12,
{0x00000002, 0x00000004, 0x00000000, 0x00000003, 0x00000005, 0x00000007, 0x00000008, 0x0000000a,
0x0000000c, 0x00000009, 0x0000000b, 0x0000000d}},
{SetFloatArray, 0, 0, 5},
{SetFloatArray, 0, 6, 11, 6,
{0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001}},
{SetFloatArray, 0, 12, REGISTER_OUTPUT_SIZE, 12,
{0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
0x00000001, 0x00000001, 0x00000001, 0x00000001}},
{SetValue, 1, 0, 23},
{SetValue, 1, 24, 47, 6,
{0x00000002, 0x00000004, 0x00000000, 0x00000003, 0x00000005, 0x00000007}},
{SetValue, 1, 48, REGISTER_OUTPUT_SIZE * 4, 12,
{0x00000002, 0x00000004, 0x00000000, 0x00000003, 0x00000005, 0x00000007, 0x00000008, 0x0000000a,
0x0000000c, 0x00000009, 0x0000000b, 0x0000000d}},
{SetVector},
{SetVectorArray, 0, 0, 1},
{SetVectorArray, 0, 2, 3, 6,
{0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001}},
{SetVectorArray, 0, 4, REGISTER_OUTPUT_SIZE / 4, 12,
{0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
0x00000000, 0x00000001, 0x00000001, 0x00000001}},
{SetMatrix, 0, 0, 0, 6,
{0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001}},
{SetMatrixArray},
{SetMatrixArray, 0, 1, 1, 6,
{0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001}},
{SetMatrixArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 12,
{0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000000,
0x00000000, 0x00000001, 0x00000001, 0x00000001}},
{SetMatrixTranspose, 0, 0, 0, 6,
{0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
{SetMatrixTransposeArray},
{SetMatrixTransposeArray, 0, 1, 1, 6,
{0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
{SetMatrixTransposeArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 12,
{0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
0x00000001, 0x00000000, 0x00000001, 0x00000001}},
{SetMatrixPointerArray},
{SetMatrixPointerArray, 0, 1, 1, 6,
{0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001}},
{SetMatrixPointerArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 12,
{0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
0x00000001, 0x00000001, 0x00000000, 0x00000000}},
{SetMatrixTransposePointerArray},
{SetMatrixTransposePointerArray, 0, 1, 1, 6,
{0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}},
{SetMatrixTransposePointerArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 12,
{0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001,
0x00000001, 0x00000001, 0x00000000, 0x00000001}},
};
static const struct registerset_constants registerset_constants_column_array_int_float[] =
{
{"canf", {"canf", D3DXRS_FLOAT4, 8, 4, D3DXPC_MATRIX_COLUMNS, D3DXPT_INT, 3, 2, 2, 0, 48, NULL}, 119},
{"canf[0]", {"canf", D3DXRS_FLOAT4, 8, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 119},
{"canf[1]", {"canf", D3DXRS_FLOAT4, 10, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 127},
};
static const struct registerset_test registerset_test_column_array_int_float[] =
{
{SetInt},
{SetBool},
{SetFloat},
{SetIntArray, 1, 0, 5},
{SetIntArray, 1, 6, 11, 8,
{0x40000000, 0x40800000, 0x00000000, 0x00000000, 0x40400000, 0x40a00000, 0x40e00000}},
{SetIntArray, 1, 12, REGISTER_OUTPUT_SIZE, 16,
{0x40000000, 0x40800000, 0x00000000, 0x00000000, 0x40400000, 0x40a00000, 0x40e00000, 0x00000000,
0x41000000, 0x41200000, 0x41400000, 0x00000000, 0x41100000, 0x41300000, 0x41500000}},
{SetBoolArray, 1, 0, 5},
{SetBoolArray, 1, 6, 11, 8,
{0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
{SetBoolArray, 1, 12, REGISTER_OUTPUT_SIZE, 16,
{0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000,
0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
{SetFloatArray, 0, 0, 5},
{SetFloatArray, 0, 6, 11, 8,
{0x40000000, 0x40800000, 0x40c00000, 0x00000000, 0x00000000, 0x40a00000, 0x40e00000}},
{SetFloatArray, 0, 12, REGISTER_OUTPUT_SIZE, 16,
{0x40000000, 0x40800000, 0x40c00000, 0x00000000, 0x00000000, 0x40a00000, 0x40e00000, 0x00000000,
0x41000000, 0x41200000, 0x41400000, 0x00000000, 0x41100000, 0x41300000, 0x41500000}},
{SetValue, 1, 0, 23},
{SetValue, 1, 24, 47, 8,
{0x40000000, 0x40800000, 0x00000000, 0x00000000, 0x40400000, 0x40a00000, 0x40e00000}},
{SetValue, 1, 48, REGISTER_OUTPUT_SIZE * 4, 16,
{0x40000000, 0x40800000, 0x00000000, 0x00000000, 0x40400000, 0x40a00000, 0x40e00000, 0x00000000,
0x41000000, 0x41200000, 0x41400000, 0x00000000, 0x41100000, 0x41300000, 0x41500000}},
{SetVector},
{SetVectorArray, 0, 0, 1},/*16*/
{SetVectorArray, 0, 2, 3, 8,
{0x40000000, 0x40c00000, 0x41200000, 0x00000000, 0x00000000, 0x40e00000, 0x41300000}},
{SetVectorArray, 0, 4, REGISTER_OUTPUT_SIZE / 4, 16,
{0x40000000, 0x40c00000, 0x41200000, 0x00000000, 0x00000000, 0x40e00000, 0x41300000, 0x00000000,
0x41600000, 0x41a00000, 0x00000000, 0x00000000, 0x41700000, 0x41b00000, 0x41f00000}},
{SetMatrix, 0, 0, 0, 8,
{0x40000000, 0x40c00000, 0x41200000, 0x00000000, 0x00000000, 0x40e00000, 0x41300000}},
{SetMatrixArray},
{SetMatrixArray, 0, 1, 1, 8,
{0x40000000, 0x40c00000, 0x41200000, 0x00000000, 0x00000000, 0x40e00000, 0x41300000}},
{SetMatrixArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 16,
{0x40000000, 0x40c00000, 0x41200000, 0x00000000, 0x00000000, 0x40e00000, 0x41300000, 0x00000000,
0x41a00000, 0x00000000, 0x00000000, 0x00000000, 0x41b00000, 0x41f00000, 0x42300000}},
{SetMatrixTranspose, 0, 0, 0, 8,
{0x40000000, 0x00000000, 0x40800000, 0x00000000, 0x40c00000, 0x40e00000, 0x41000000}},
{SetMatrixTransposeArray},
{SetMatrixTransposeArray, 0, 1, 1, 8,
{0x40000000, 0x00000000, 0x40800000, 0x00000000, 0x40c00000, 0x40e00000, 0x41000000}},
{SetMatrixTransposeArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 16,
{0x40000000, 0x00000000, 0x40800000, 0x00000000, 0x40c00000, 0x40e00000, 0x41000000, 0x00000000,
0x41a00000, 0x41b00000, 0x41c00000, 0x00000000, 0x00000000, 0x41f00000, 0x42000000}},
{SetMatrixPointerArray},
{SetMatrixPointerArray, 0, 1, 1, 8,
{0x40000000, 0x40c00000, 0x41200000, 0x00000000, 0x00000000, 0x40e00000, 0x41300000}},
{SetMatrixPointerArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 16,
{0x40000000, 0x40c00000, 0x41200000, 0x00000000, 0x00000000, 0x40e00000, 0x41300000, 0x00000000,
0x41900000, 0x41d00000, 0x42100000, 0x00000000, 0x41a00000, 0x00000000, 0x00000000}},
{SetMatrixTransposePointerArray},
{SetMatrixTransposePointerArray, 0, 1, 1, 8,
{0x40000000, 0x00000000, 0x40800000, 0x00000000, 0x40c00000, 0x40e00000, 0x41000000}},
{SetMatrixTransposePointerArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 16,
{0x40000000, 0x00000000, 0x40800000, 0x00000000, 0x40c00000, 0x40e00000, 0x41000000, 0x00000000,
0x41900000, 0x41a00000, 0x41b00000, 0x00000000, 0x41d00000, 0x00000000, 0x41f00000}},
};
static const struct registerset_constants registerset_constants_column_array_bool_float[] =
{
{"cabf", {"cabf", D3DXRS_FLOAT4, 4, 4, D3DXPC_MATRIX_COLUMNS, D3DXPT_BOOL, 3, 2, 2, 0, 48, NULL}, 55},
{"cabf[0]", {"cabf", D3DXRS_FLOAT4, 4, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_BOOL, 3, 2, 1, 0, 24, NULL}, 55},
{"cabf[1]", {"cabf", D3DXRS_FLOAT4, 6, 2, D3DXPC_MATRIX_COLUMNS, D3DXPT_BOOL, 3, 2, 1, 0, 24, NULL}, 63},
};
static const struct registerset_test registerset_test_column_array_bool_float[] =
{
{SetInt},
{SetBool},
{SetFloat},
{SetIntArray, 1, 0, 5},
{SetIntArray, 1, 6, 11, 8,
{0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
{SetIntArray, 1, 12, REGISTER_OUTPUT_SIZE, 16,
{0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000,
0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
{SetBoolArray, 1, 0, 5},
{SetBoolArray, 1, 6, 11, 8,
{0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
{SetBoolArray, 1, 12, REGISTER_OUTPUT_SIZE, 16,
{0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000,
0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
{SetFloatArray, 0, 0, 5},
{SetFloatArray, 0, 6, 11, 8,
{0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
{SetFloatArray, 0, 12, REGISTER_OUTPUT_SIZE, 16,
{0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000,
0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
{SetValue, 1, 0, 23},
{SetValue, 1, 24, 47, 8,
{0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
{SetValue, 1, 48, REGISTER_OUTPUT_SIZE * 4, 16,
{0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000,
0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
{SetVector},
{SetVectorArray, 0, 0, 1},
{SetVectorArray, 0, 2, 3, 8,
{0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
{SetVectorArray, 0, 4, REGISTER_OUTPUT_SIZE / 4, 16,
{0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000,
0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
{SetMatrix, 0, 0, 0, 8,
{0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
{SetMatrixArray},
{SetMatrixArray, 0, 1, 1, 8,
{0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
{SetMatrixArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 16,
{0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000,
0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
{SetMatrixTranspose, 0, 0, 0, 8,
{0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
{SetMatrixTransposeArray},
{SetMatrixTransposeArray, 0, 1, 1, 8,
{0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
{SetMatrixTransposeArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 16,
{0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000,
0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
{SetMatrixPointerArray},
{SetMatrixPointerArray, 0, 1, 1, 8,
{0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}},
{SetMatrixPointerArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 16,
{0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000,
0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000}},
{SetMatrixTransposePointerArray},
{SetMatrixTransposePointerArray, 0, 1, 1, 8,
{0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000}},
{SetMatrixTransposePointerArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 16,
{0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000,
0x3f800000, 0x3f800000, 0x3f800000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000}},
};
static const struct
{
const char *name;
@ -3352,6 +3766,29 @@ registerset_data[] =
sizeof(registerset_test_column_int_float) / sizeof(*registerset_test_column_int_float),
registerset_constants_column_int_float,
sizeof(registerset_constants_column_int_float) / sizeof(*registerset_constants_column_int_float)},
/* matrix column array */
{"float c3x2 [2]", "caf", 0, D3DXRS_FLOAT4, registerset_blob_column_array, registerset_blob_column_array_float,
sizeof(registerset_blob_column_array_float) / sizeof(*registerset_blob_column_array_float),
registerset_constants_column_array_float,
sizeof(registerset_constants_column_array_float) / sizeof(*registerset_constants_column_array_float)},
{"int c3x2 [2]", "can", 0, D3DXRS_INT4, registerset_blob_column_array, registerset_blob_column_array_int,
sizeof(registerset_blob_column_array_int) / sizeof(*registerset_blob_column_array_int),
registerset_constants_column_array_int,
sizeof(registerset_constants_column_array_int) / sizeof(*registerset_constants_column_array_int)},
{"bool c3x2 [2]", "cab", 0, D3DXRS_BOOL, registerset_blob_column_array, registerset_test_column_array_bool,
sizeof(registerset_test_column_array_bool) / sizeof(*registerset_test_column_array_bool),
registerset_constants_column_array_bool,
sizeof(registerset_constants_column_array_bool) / sizeof(*registerset_constants_column_array_bool)},
{"bool float c3x2 [2]", "cabf", 16, D3DXRS_FLOAT4, registerset_blob_column_array,
registerset_test_column_array_bool_float,
sizeof(registerset_test_column_array_bool_float) / sizeof(*registerset_test_column_array_bool_float),
registerset_constants_column_array_bool_float,
sizeof(registerset_constants_column_array_bool_float) / sizeof(*registerset_constants_column_array_bool_float)},
{"int float c3x2 [2]", "canf", 32, D3DXRS_FLOAT4, registerset_blob_column_array,
registerset_test_column_array_int_float,
sizeof(registerset_test_column_array_int_float) / sizeof(*registerset_test_column_array_int_float),
registerset_constants_column_array_int_float,
sizeof(registerset_constants_column_array_int_float) / sizeof(*registerset_constants_column_array_int_float)},
};
static void registerset_clear(IDirect3DDevice9 *device)