d3dx9/tests: Add ID3DXConstantTable struct array test.

This commit is contained in:
Rico Schüller 2013-07-24 22:30:31 +02:00 committed by Alexandre Julliard
parent cf5a2b6417
commit b196d0ccdc
1 changed files with 377 additions and 0 deletions

View File

@ -4733,6 +4733,360 @@ static const struct registerset_test registerset_test_struct_bool_float[] =
{0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
};
/*
* fxc.exe /Tvs_3_0
*/
#if 0
struct {bool b; bool3 vb;} sab[2] = {1, 1, 0, 1, 0, 1, 0, 1};
struct {int n; int3 vn;} san[2] = {21, 22, 23, 24, 25, 26, 27, 28};
struct {float f; float3 vf;} saf[2] = {1.1f, 2.1f, 3.1f, 4.1f, 5.1f, 6.1f, 7.1f, 8.1f};
struct {int nf; int3 vnf;} sanf[2] = {41, 0, 43, 44, 41, 42, 43, 44};
struct {bool bf; bool3 vbf;} sabf[2] = {1, 0, 0, 1, 1, 1, 0, 1};
float4 main(float4 pos : POSITION) : POSITION
{
float4 tmp = 0;
int i;
if (sab[1].vb.z) for (i = 0; i < san[1].n; i++) tmp.x += pos.z * saf[1].vf.x * sanf[1].vnf.z;
else for (i = 0; i < san[1].vn.z; i++) tmp.y += pos.y * saf[1].vf.z * sabf[1].vbf.y;
return tmp;
}
#endif
static const DWORD registerset_blob_struct_array[] =
{
0xfffe0300, 0x00c6fffe, 0x42415443, 0x0000001c, 0x000002e3, 0xfffe0300, 0x00000005, 0x0000001c,
0x00000100, 0x000002dc, 0x00000080, 0x00000000, 0x00000008, 0x000000bc, 0x000000cc, 0x000000ec,
0x00080002, 0x00000004, 0x00000108, 0x00000118, 0x00000158, 0x00000002, 0x00000004, 0x00000194,
0x000001a4, 0x000001e4, 0x00000001, 0x00000008, 0x00000220, 0x00000230, 0x00000270, 0x00040002,
0x00000004, 0x0000028c, 0x0000029c, 0x00626173, 0xabab0062, 0x00010000, 0x00010001, 0x00000001,
0x00000000, 0xab006276, 0x00010001, 0x00030001, 0x00000001, 0x00000000, 0x00000084, 0x00000088,
0x00000098, 0x0000009c, 0x00000005, 0x00040001, 0x00020002, 0x000000ac, 0xffffffff, 0xffffffff,
0x00000000, 0xffffffff, 0x00000000, 0xffffffff, 0x00000000, 0xffffffff, 0x66626173, 0x00666200,
0x00666276, 0x000000f1, 0x00000088, 0x000000f4, 0x0000009c, 0x00000005, 0x00040001, 0x00020002,
0x000000f8, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000,
0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x3f800000,
0x00000000, 0x00666173, 0xabab0066, 0x00030000, 0x00010001, 0x00000001, 0x00000000, 0xab006676,
0x00030001, 0x00030001, 0x00000001, 0x00000000, 0x0000015c, 0x00000160, 0x00000170, 0x00000174,
0x00000005, 0x00040001, 0x00020002, 0x00000184, 0x3f8ccccd, 0x00000000, 0x00000000, 0x00000000,
0x40066666, 0x40466666, 0x40833333, 0x00000000, 0x40a33333, 0x00000000, 0x00000000, 0x00000000,
0x40c33333, 0x40e33333, 0x4101999a, 0x00000000, 0x006e6173, 0xabab006e, 0x00020000, 0x00010001,
0x00000001, 0x00000000, 0xab006e76, 0x00020001, 0x00030001, 0x00000001, 0x00000000, 0x000001e8,
0x000001ec, 0x000001fc, 0x00000200, 0x00000005, 0x00040001, 0x00020002, 0x00000210, 0x00000015,
0x00000000, 0x00000001, 0x00000000, 0x00000016, 0x00000017, 0x00000018, 0x00000000, 0x00000019,
0x00000000, 0x00000001, 0x00000000, 0x0000001a, 0x0000001b, 0x0000001c, 0x00000000, 0x666e6173,
0x00666e00, 0x00666e76, 0x00000275, 0x000001ec, 0x00000278, 0x00000200, 0x00000005, 0x00040001,
0x00020002, 0x0000027c, 0x42240000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x422c0000,
0x42300000, 0x00000000, 0x42240000, 0x00000000, 0x00000000, 0x00000000, 0x42280000, 0x422c0000,
0x42300000, 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, 0xe0e40807, 0x03000005, 0x80010000,
0xa0000003, 0x90aa0000, 0x02000001, 0x80010001, 0xa000000c, 0x01000026, 0xf0e40004, 0x04000004,
0x80010001, 0x80000000, 0xa0aa0007, 0x80000001, 0x00000027, 0x02000001, 0x80020001, 0xa000000c,
0x0000002a, 0x03000005, 0x80010000, 0xa0aa0003, 0x90550000, 0x02000001, 0x80020001, 0xa000000c,
0x01000026, 0xf0e40007, 0x04000004, 0x80020001, 0x80000000, 0xa055000b, 0x80550001, 0x00000027,
0x02000001, 0x80010001, 0xa000000c, 0x0000002b, 0x02000001, 0xe0030000, 0x80e40001, 0x02000001,
0xe00c0000, 0xa000000c, 0x0000ffff,
};
static const struct registerset_constants registerset_constants_struct_array_float[] =
{
{"saf", {"saf", D3DXRS_FLOAT4, 0, 4, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 2, 2, 32, NULL}, 105},
{"saf[0]", {"saf", D3DXRS_FLOAT4, 0, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 105},
{"saf[0].f", {"f", D3DXRS_FLOAT4, 0, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL}, 105},
{"saf[0].vf", {"vf", D3DXRS_FLOAT4, 1, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 109},
{"saf[1]", {"saf", D3DXRS_FLOAT4, 2, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 113},
{"saf[1].f", {"f", D3DXRS_FLOAT4, 2, 1, D3DXPC_SCALAR, D3DXPT_FLOAT, 1, 1, 1, 0, 4, NULL}, 113},
{"saf[1].vf", {"vf", D3DXRS_FLOAT4, 3, 1, D3DXPC_VECTOR, D3DXPT_FLOAT, 1, 3, 1, 0, 12, NULL}, 117},
};
static const struct registerset_test registerset_test_struct_array_float[] =
{
{SetInt},
{SetBool},
{SetFloat},
{SetIntArray, 1, 0, 3},
{SetIntArray, 1, 4, 7, 8,
{0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40400000, 0x40800000, 0x40a00000, 0x00000000}},
{SetIntArray, 1, 8, REGISTER_OUTPUT_SIZE, 8,
{0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x41000000, 0x41100000, 0x00000000}},
{SetBoolArray, 1, 0, 3},
{SetBoolArray, 1, 4, 7, 8,
{0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
{SetBoolArray, 1, 8, REGISTER_OUTPUT_SIZE, 8,
{0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
{SetFloatArray, 0, 0, 3},
{SetFloatArray, 0, 4, 7, 8,
{0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000}},
{SetFloatArray, 0, 8, REGISTER_OUTPUT_SIZE, 8,
{0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x41000123, 0x41100123, 0x00000000}},
{SetValue, 0, 0, 15},
{SetValue, 0, 16, 31, 8,
{0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000}},
{SetValue, 0, 32, REGISTER_OUTPUT_SIZE * 4, 8,
{0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x41000123, 0x41100123, 0x00000000}},
{SetVector, 0, 0, 0, 8,
{0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000}},
{SetVectorArray},
{SetVectorArray, 0, 1, 1, 8,
{0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000}},
{SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 8,
{0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x41000123, 0x41100123, 0x00000000}},
{SetMatrix, 0, 0, 0, 8,
{0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x41000123, 0x41100123, 0x00000000}},
{SetMatrixArray},
{SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
{0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x41000123, 0x41100123, 0x00000000}},
{SetMatrixTranspose, 0, 0, 0, 8,
{0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
{SetMatrixTransposeArray},
{SetMatrixTransposeArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
{0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
{SetMatrixPointerArray},
{SetMatrixPointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8},
{SetMatrixTransposePointerArray},
{SetMatrixTransposePointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8},
};
static const struct registerset_constants registerset_constants_struct_array_int[] =
{
{"san", {"san", D3DXRS_INT4, 0, 8, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 2, 2, 32, NULL}, 140},
{"san[0]", {"san", D3DXRS_INT4, 0, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 140},
{"san[0].n", {"n", D3DXRS_INT4, 0, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 140},
{"san[0].vn", {"vn", D3DXRS_INT4, 1, 1, D3DXPC_VECTOR, D3DXPT_INT, 1, 3, 1, 0, 12, NULL}, 144},
{"san[1]", {"san", D3DXRS_INT4, 2, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 148},
{"san[1].n", {"n", D3DXRS_INT4, 2, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 148},
{"san[1].vn", {"vn", D3DXRS_INT4, 3, 1, D3DXPC_VECTOR, D3DXPT_INT, 1, 3, 1, 0, 12, NULL}, 152},
};
static const struct registerset_test registerset_test_struct_array_int[] =
{
{SetInt},
{SetBool},
{SetFloat},
{SetIntArray, 1, 0, 3},
{SetIntArray, 1, 4, 7, 8,
{0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000003, 0x00000004, 0x00000005, 0x00000000}},
{SetIntArray, 1, 8, REGISTER_OUTPUT_SIZE, 8,
{0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000007, 0x00000008, 0x00000009, 0x00000000}},
{SetBoolArray, 1, 0, 3},
{SetBoolArray, 1, 4, 7, 8,
{0x00000001, 0x00000000, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000000}},
{SetBoolArray, 1, 8, REGISTER_OUTPUT_SIZE, 8,
{0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000000}},
{SetFloatArray, 0, 0, 3},
{SetFloatArray, 0, 4, 7, 8,
{0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000004, 0x00000005, 0x00000000}},
{SetFloatArray, 0, 8, REGISTER_OUTPUT_SIZE, 8,
{0x00000006, 0x00000000, 0x00000001, 0x00000000, 0x00000007, 0x00000008, 0x00000009, 0x00000000}},
{SetValue, 1, 0, 15},
{SetValue, 1, 16, 31, 8,
{0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000003, 0x00000004, 0x00000005, 0x00000000}},
{SetValue, 1, 32, REGISTER_OUTPUT_SIZE * 4, 8,
{0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000007, 0x00000008, 0x00000009, 0x00000000}},
{SetVector, 0, 0, 0, 8,
{0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000004, 0x00000005, 0x00000000}},
{SetVectorArray},
{SetVectorArray, 0, 1, 1, 8,
{0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000004, 0x00000005, 0x00000000}},
{SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 8,
{0x00000006, 0x00000000, 0x00000001, 0x00000000, 0x00000007, 0x00000008, 0x00000009, 0x00000000}},
{SetMatrix, 0, 0, 0, 8,
{0x00000006, 0x00000000, 0x00000001, 0x00000000, 0x00000007, 0x00000008, 0x00000009, 0x00000000},},
{SetMatrixArray},
{SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
{0x00000006, 0x00000000, 0x00000001, 0x00000000, 0x00000007, 0x00000008, 0x00000009, 0x00000000}},
{SetMatrixTranspose, 0, 0, 0, 8,
{0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
{SetMatrixTransposeArray},
{SetMatrixTransposeArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
{0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
{SetMatrixPointerArray},
{SetMatrixPointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
{0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
{SetMatrixTransposePointerArray},
{SetMatrixTransposePointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
{0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
};
static const struct registerset_constants registerset_constants_struct_array_bool[] =
{
{"sab", {"sab", D3DXRS_BOOL, 0, 8, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 2, 2, 32, NULL}, 51},
{"sab[0]", {"sab", D3DXRS_BOOL, 0, 4, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 51},
{"sab[0].b", {"b", D3DXRS_BOOL, 0, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 51},
{"sab[0].vb", {"vb", D3DXRS_BOOL, 1, 3, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 1, 0, 12, NULL}, 52},
{"sab[1]", {"sab", D3DXRS_BOOL, 4, 4, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 55},
{"sab[1].b", {"b", D3DXRS_BOOL, 4, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 55},
{"sab[1].vb", {"vb", D3DXRS_BOOL, 5, 3, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 1, 0, 12, NULL}, 56},
};
static const struct registerset_test registerset_test_struct_array_bool[] =
{
{SetInt},
{SetBool},
{SetFloat},
{SetIntArray, 1, 0, 3},
{SetIntArray, 1, 4, 7, 4,
{0x00000001, 0x00000001, 0x00000001, 0x00000001}},
{SetIntArray, 1, 8, REGISTER_OUTPUT_SIZE, 4,
{0x00000000, 0x00000001, 0x00000001, 0x00000001}},
{SetBoolArray, 1, 0, 3},
{SetBoolArray, 1, 4, 7, 4,
{0x00000002, 0x00000003, 0x00000004, 0x00000005}},
{SetBoolArray, 1, 8, REGISTER_OUTPUT_SIZE, 4,
{0x00000000, 0x00000007, 0x00000008, 0x00000009}},
{SetFloatArray, 0, 0, 3},
{SetFloatArray, 0, 4, 7, 4,
{0x00000001, 0x00000000, 0x00000001, 0x00000001}},
{SetFloatArray, 0, 8, REGISTER_OUTPUT_SIZE, 4,
{0x00000001, 0x00000001, 0x00000001, 0x00000001}},
{SetValue, 1, 0, 15},
{SetValue, 1, 16, 31, 4,
{0x00000002, 0x00000003, 0x00000004, 0x00000005}},
{SetValue, 1, 32, REGISTER_OUTPUT_SIZE * 4, 4,
{0x00000000, 0x00000007, 0x00000008, 0x00000009}},
{SetVector, 0, 0, 0, 4,
{0x00000001, 0x00000000, 0x00000001, 0x00000001}},
{SetVectorArray},
{SetVectorArray, 0, 1, 1, 4,
{0x00000001, 0x00000000, 0x00000001, 0x00000001}},
{SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 4,
{0x00000001, 0x00000001, 0x00000001, 0x00000001}},
{SetMatrix, 0, 0, 0, 4,
{0x00000001, 0x00000001, 0x00000001, 0x00000001}},
{SetMatrixArray},
{SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4,
{0x00000001, 0x00000001, 0x00000001, 0x00000001}},
{SetMatrixTranspose, 0, 0, 0, 4,
{0x00000000, 0x00000001, 0x00000001, 0x00000001}},
{SetMatrixTransposeArray},
{SetMatrixTransposeArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4,
{0x00000000, 0x00000001, 0x00000001, 0x00000001}},
{SetMatrixPointerArray},
{SetMatrixPointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4,
{0x00000001, 0x00000001, 0x00000001, 0x00000001}},
{SetMatrixTransposePointerArray},
{SetMatrixTransposePointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 4,
{0x00000000, 0x00000001, 0x00000001, 0x00000001}},
};
static const struct registerset_constants registerset_constants_struct_array_int_float[] =
{
{"sanf", {"sanf", D3DXRS_FLOAT4, 4, 4, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 2, 2, 32, NULL}, 167},
{"sanf[0]", {"sanf", D3DXRS_FLOAT4, 4, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 167},
{"sanf[0].nf", {"nf", D3DXRS_FLOAT4, 4, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 167},
{"sanf[0].vnf", {"vnf", D3DXRS_FLOAT4, 5, 1, D3DXPC_VECTOR, D3DXPT_INT, 1, 3, 1, 0, 12, NULL}, 171},
{"sanf[1]", {"sanf", D3DXRS_FLOAT4, 6, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 175},
{"sanf[1].nf", {"nf", D3DXRS_FLOAT4, 6, 1, D3DXPC_SCALAR, D3DXPT_INT, 1, 1, 1, 0, 4, NULL}, 175},
{"sanf[1].vnf", {"vnf", D3DXRS_FLOAT4, 7, 1, D3DXPC_VECTOR, D3DXPT_INT, 1, 3, 1, 0, 12, NULL}, 179},
};
static const struct registerset_test registerset_test_struct_array_int_float[] =
{
{SetInt},
{SetBool},
{SetFloat},
{SetIntArray, 1, 0, 3},
{SetIntArray, 1, 4, 7, 8,
{0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40400000, 0x40800000, 0x40a00000, 0x00000000}},
{SetIntArray, 1, 8, REGISTER_OUTPUT_SIZE, 8,
{0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x41000000, 0x41100000, 0x00000000}},
{SetBoolArray, 1, 0, 3},
{SetBoolArray, 1, 4, 7, 8,
{0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
{SetBoolArray, 1, 8, REGISTER_OUTPUT_SIZE, 8,
{0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
{SetFloatArray, 0, 0, 3},
{SetFloatArray, 0, 4, 7, 8,
{0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000}},
{SetFloatArray, 0, 8, REGISTER_OUTPUT_SIZE, 8,
{0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x41000000, 0x41100000, 0x00000000}},
{SetValue, 1, 0, 15},
{SetValue, 1, 16, 31, 8,
{0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40400000, 0x40800000, 0x40a00000, 0x00000000}},
{SetValue, 1, 32, REGISTER_OUTPUT_SIZE * 4, 8,
{0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x41000000, 0x41100000, 0x00000000}},
{SetVector, 0, 0, 0, 8,
{0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000}},
{SetVectorArray},
{SetVectorArray, 0, 1, 1, 8,
{0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000}},
{SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 8,
{0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x41000000, 0x41100000, 0x00000000}},
{SetMatrix, 0, 0, 0, 8,
{0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x41000000, 0x41100000, 0x00000000}},
{SetMatrixArray},
{SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
{0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x41000000, 0x41100000, 0x00000000}},
{SetMatrixTranspose, 0, 0, 0, 8,
{0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
{SetMatrixTransposeArray},
{SetMatrixTransposeArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
{0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
{SetMatrixPointerArray},
{SetMatrixPointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8},
{SetMatrixTransposePointerArray},
{SetMatrixTransposePointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8},
};
static const struct registerset_constants registerset_constants_struct_array_bool_float[] =
{
{"sabf", {"sabf", D3DXRS_FLOAT4, 8, 4, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 2, 2, 32, NULL}, 70},
{"sabf[0]", {"sabf", D3DXRS_FLOAT4, 8, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 70},
{"sabf[0].bf", {"bf", D3DXRS_FLOAT4, 8, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 70},
{"sabf[0].vbf", {"vbf", D3DXRS_FLOAT4, 9, 1, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 1, 0, 12, NULL}, 74},
{"sabf[1]", {"sabf", D3DXRS_FLOAT4, 10, 2, D3DXPC_STRUCT, D3DXPT_VOID, 1, 4, 1, 2, 16, NULL}, 78},
{"sabf[1].bf", {"bf", D3DXRS_FLOAT4, 10, 1, D3DXPC_SCALAR, D3DXPT_BOOL, 1, 1, 1, 0, 4, NULL}, 78},
{"sabf[1].vbf", {"vbf", D3DXRS_FLOAT4, 11, 1, D3DXPC_VECTOR, D3DXPT_BOOL, 1, 3, 1, 0, 12, NULL}, 82},
};
static const struct registerset_test registerset_test_struct_array_bool_float[] =
{
{SetInt},
{SetBool},
{SetFloat},
{SetIntArray, 1, 0, 3},
{SetIntArray, 1, 4, 7, 8,
{0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
{SetIntArray, 1, 8, REGISTER_OUTPUT_SIZE, 8,
{0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
{SetBoolArray, 1, 0, 3},
{SetBoolArray, 1, 4, 7, 8,
{0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
{SetBoolArray, 1, 8, REGISTER_OUTPUT_SIZE, 8,
{0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
{SetFloatArray, 0, 0, 3},
{SetFloatArray, 0, 4, 7, 8,
{0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000}},
{SetFloatArray, 0, 8, REGISTER_OUTPUT_SIZE, 8,
{0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
{SetValue, 1, 0, 15},
{SetValue, 1, 16, 31, 8,
{0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
{SetValue, 1, 32, REGISTER_OUTPUT_SIZE * 4, 8,
{0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
{SetVector, 0, 0, 0, 8,
{0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000}},
{SetVectorArray},
{SetVectorArray, 0, 1, 1, 8,
{0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000}},
{SetVectorArray, 0, 2, REGISTER_OUTPUT_SIZE / 4, 8,
{0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
{SetMatrix, 0, 0, 0, 8,
{0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
{SetMatrixArray},
{SetMatrixArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
{0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x3f800000, 0x00000000}},
{SetMatrixTranspose, 0, 0, 0, 8,
{0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
{SetMatrixTransposeArray},
{SetMatrixTransposeArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8,
{0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}},
{SetMatrixPointerArray},
{SetMatrixPointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8},
{SetMatrixTransposePointerArray},
{SetMatrixTransposePointerArray, 0, 1, REGISTER_OUTPUT_SIZE / 16, 8},
};
static const struct
{
const char *name;
@ -4950,6 +5304,29 @@ registerset_data[] =
sizeof(registerset_test_struct_int_float) / sizeof(*registerset_test_struct_int_float),
registerset_constants_struct_int_float,
sizeof(registerset_constants_struct_int_float) / sizeof(*registerset_constants_struct_int_float)},
/* struct array */
{"struct float [2]", "saf", 0, D3DXRS_FLOAT4, registerset_blob_struct_array, registerset_test_struct_array_float,
sizeof(registerset_test_struct_array_float) / sizeof(*registerset_test_struct_array_float),
registerset_constants_struct_array_float,
sizeof(registerset_constants_struct_array_float) / sizeof(*registerset_constants_struct_array_float)},
{"struct int [2]", "san", 0, D3DXRS_INT4, registerset_blob_struct_array, registerset_test_struct_array_int,
sizeof(registerset_test_struct_array_int) / sizeof(*registerset_test_struct_array_int),
registerset_constants_struct_array_int,
sizeof(registerset_constants_struct_array_int) / sizeof(*registerset_constants_struct_array_int)},
{"struct bool [2]", "sab", 0, D3DXRS_BOOL, registerset_blob_struct_array, registerset_test_struct_array_bool,
sizeof(registerset_test_struct_array_bool) / sizeof(*registerset_test_struct_array_bool),
registerset_constants_struct_array_bool,
sizeof(registerset_constants_struct_array_bool) / sizeof(*registerset_constants_struct_array_bool)},
{"struct bool float [2]", "sabf", 32, D3DXRS_FLOAT4, registerset_blob_struct_array,
registerset_test_struct_array_bool_float,
sizeof(registerset_test_struct_array_bool_float) / sizeof(*registerset_test_struct_array_bool_float),
registerset_constants_struct_array_bool_float,
sizeof(registerset_constants_struct_array_bool_float) / sizeof(*registerset_constants_struct_array_bool_float)},
{"struct int float [2]", "sanf", 16, D3DXRS_FLOAT4, registerset_blob_struct_array,
registerset_test_struct_array_int_float,
sizeof(registerset_test_struct_array_int_float) / sizeof(*registerset_test_struct_array_int_float),
registerset_constants_struct_array_int_float,
sizeof(registerset_constants_struct_array_int_float) / sizeof(*registerset_constants_struct_array_int_float)},
};
static void registerset_clear(IDirect3DDevice9 *device)