diff --git a/dlls/d3dx9_36/tests/shader.c b/dlls/d3dx9_36/tests/shader.c index c63cd5949e8..e7ea797228d 100644 --- a/dlls/d3dx9_36/tests/shader.c +++ b/dlls/d3dx9_36/tests/shader.c @@ -3950,6 +3950,504 @@ static const struct registerset_test registerset_test_row_bool_float[] = 0x3f800000, 0x3f800000}}, }; +/* + * fxc.exe /Tvs_3_0 + */ +#if 0 +row_major bool3x2 rab[2] = {1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1}; +row_major int3x2 ran[2] = {4, 5, 6, 1, 8, 1, 5, 3, 9, 6, 7, 3}; +row_major float3x2 raf[2] = {1.5, 2.8, 3.3, 4.9, 5.9, 6.8, 7.9, 8.5, 9.4, 1.3, 1.2, 1.1}; +row_major bool3x2 rabf[2] = {1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1}; +row_major int3x2 ranf[2] = {35, 40, 60, 80, 70, 56, 37, 13, 98, 54, 77, 36}; +float4 main(float4 pos : POSITION) : POSITION +{ + float4 tmp = 0; + int i; + if (rab[1]._32) for (i = 0; i < ran[1]._31; i++) tmp.x += pos.z * raf[1]._31 * rabf[1]._32; + else for (i = 0; i < ran[1]._32; i++) tmp.y += pos.y * raf[1]._32 * ranf[1]._32; + return tmp; +} +#endif +static const DWORD registerset_blob_row_array[] = +{ +0xfffe0300, 0x00b6fffe, 0x42415443, 0x0000001c, 0x000002a3, 0xfffe0300, 0x00000005, 0x0000001c, +0x00000100, 0x0000029c, 0x00000080, 0x00000000, 0x0000000c, 0x00000084, 0x00000094, 0x000000c4, +0x00060002, 0x00000006, 0x000000cc, 0x000000dc, 0x0000013c, 0x00000002, 0x00000006, 0x00000140, +0x00000150, 0x000001b0, 0x00000001, 0x0000000c, 0x000001b4, 0x000001c4, 0x00000224, 0x000c0002, +0x00000006, 0x0000022c, 0x0000023c, 0x00626172, 0x00010002, 0x00020003, 0x00000002, 0x00000000, +0xffffffff, 0x00000000, 0x00000000, 0xffffffff, 0x00000000, 0xffffffff, 0x00000000, 0x00000000, +0xffffffff, 0xffffffff, 0x00000000, 0xffffffff, 0x66626172, 0xababab00, 0x00010002, 0x00020003, +0x00000002, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, +0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, +0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, +0x00000000, 0x00000000, 0x00666172, 0x00030002, 0x00020003, 0x00000002, 0x00000000, 0x3fc00000, +0x40333333, 0x00000000, 0x00000000, 0x40533333, 0x409ccccd, 0x00000000, 0x00000000, 0x40bccccd, +0x40d9999a, 0x00000000, 0x00000000, 0x40fccccd, 0x41080000, 0x00000000, 0x00000000, 0x41166666, +0x3fa66666, 0x00000000, 0x00000000, 0x3f99999a, 0x3f8ccccd, 0x00000000, 0x00000000, 0x006e6172, +0x00020002, 0x00020003, 0x00000002, 0x00000000, 0x00000004, 0x00000005, 0x00000001, 0x00000000, +0x00000006, 0x00000001, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000000, +0x00000005, 0x00000003, 0x00000001, 0x00000000, 0x00000009, 0x00000006, 0x00000001, 0x00000000, +0x00000007, 0x00000003, 0x00000001, 0x00000000, 0x666e6172, 0xababab00, 0x00020002, 0x00020003, +0x00000002, 0x00000000, 0x420c0000, 0x42200000, 0x00000000, 0x00000000, 0x42700000, 0x42a00000, +0x00000000, 0x00000000, 0x428c0000, 0x42600000, 0x00000000, 0x00000000, 0x42140000, 0x41500000, +0x00000000, 0x00000000, 0x42c40000, 0x42580000, 0x00000000, 0x00000000, 0x429a0000, 0x42100000, +0x00000000, 0x00000000, 0x335f7376, 0x4d00305f, 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820, +0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970, 0x2e392072, 0x392e3932, 0x332e3235, 0x00313131, +0x05000051, 0xa00f0012, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0200001f, 0x80000000, +0x900f0000, 0x0200001f, 0x80000000, 0xe00f0000, 0x01000028, 0xe0e4080b, 0x03000005, 0x80010000, +0xa0000005, 0x90aa0000, 0x02000001, 0x80010001, 0xa0000012, 0x01000026, 0xf0e4000a, 0x04000004, +0x80010001, 0x80000000, 0xa055000b, 0x80000001, 0x00000027, 0x02000001, 0x80020001, 0xa0000012, +0x0000002a, 0x03000005, 0x80010000, 0xa0550005, 0x90550000, 0x02000001, 0x80020001, 0xa0000012, +0x01000026, 0xf0e4000b, 0x04000004, 0x80020001, 0x80000000, 0xa0550011, 0x80550001, 0x00000027, +0x02000001, 0x80010001, 0xa0000012, 0x0000002b, 0x02000001, 0xe0030000, 0x80e40001, 0x02000001, +0xe00c0000, 0xa0000012, 0x0000ffff, +}; + +static const struct registerset_constants registerset_constants_row_array_float[] = +{ + {"raf", {"raf", D3DXRS_FLOAT4, 0, 6, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 3, 2, 2, 0, 48, NULL}, 84}, + {"raf[0]", {"raf", D3DXRS_FLOAT4, 0, 3, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 3, 2, 1, 0, 24, NULL}, 84}, + {"raf[1]", {"raf", D3DXRS_FLOAT4, 3, 3, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 3, 2, 1, 0, 24, NULL}, 96}, +}; + +static const struct registerset_test registerset_blob_row_array_float[] = +{ + {SetInt}, + {SetBool}, + {SetFloat}, + {SetIntArray, 1, 0, 5}, + {SetIntArray, 1, 6, 11, 12, + {0x40000000, 0x40400000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000, 0x00000000, + 0x00000000, 0x40e00000}}, + {SetIntArray, 1, 12, REGISTER_OUTPUT_SIZE, 24, + {0x40000000, 0x40400000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000, 0x00000000, + 0x00000000, 0x40e00000, 0x00000000, 0x00000000, 0x41000000, 0x41100000, 0x00000000, 0x00000000, + 0x41200000, 0x41300000, 0x00000000, 0x00000000, 0x41400000, 0x41500000}}, + {SetBoolArray, 1, 0, 5}, + {SetBoolArray, 1, 6, 11, 12, + {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x00000000, 0x3f800000}}, + {SetBoolArray, 1, 12, REGISTER_OUTPUT_SIZE, 24, + {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}}, + {SetFloatArray, 0, 0, 5}, + {SetFloatArray, 0, 6, 11, 12, + {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000, 0x00000000, + 0x40c00123, 0x40e00123}}, + {SetFloatArray, 0, 12, REGISTER_OUTPUT_SIZE, 24, + {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000, 0x00000000, + 0x40c00123, 0x40e00123, 0x00000000, 0x00000000, 0x41000123, 0x41100123, 0x00000000, 0x00000000, + 0x41200123, 0x41300123, 0x00000000, 0x00000000, 0x41400123, 0x41500123}}, + {SetValue, 0, 0, 23}, + {SetValue, 0, 24, 47, 12, + {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000, 0x00000000, + 0x40c00123, 0x40e00123}}, + {SetValue, 0, 48, REGISTER_OUTPUT_SIZE * 4, 24, + {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40800123, 0x40a00123, 0x00000000, 0x00000000, + 0x40c00123, 0x40e00123, 0x00000000, 0x00000000, 0x41000123, 0x41100123, 0x00000000, 0x00000000, + 0x41200123, 0x41300123, 0x00000000, 0x00000000, 0x41400123, 0x41500123}}, + {SetVector}, + {SetVectorArray, 0, 0, 2}, + {SetVectorArray, 0, 3, 5, 12, + {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40c00123, 0x40e00123, 0x00000000, 0x00000000, + 0x41200123, 0x41300123}}, + {SetVectorArray, 0, 6, REGISTER_OUTPUT_SIZE / 4, 24, + {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40c00123, 0x40e00123, 0x00000000, 0x00000000, + 0x41200123, 0x41300123, 0x00000000, 0x00000000, 0x41600123, 0x41700123, 0x00000000, 0x00000000, + 0x41a00123, 0x41b00123, 0x00000000, 0x00000000, 0x00000000, 0x41f00123}}, + {SetMatrix, 0, 0, 0, 12, + {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40c00123, 0x40e00123, 0x00000000, 0x00000000, + 0x41200123, 0x41300123}}, + {SetMatrixArray}, + {SetMatrixArray, 0, 1, 1, 12, + {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40c00123, 0x40e00123, 0x00000000, 0x00000000, + 0x41200123, 0x41300123}}, + {SetMatrixArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 24, + {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40c00123, 0x40e00123, 0x00000000, 0x00000000, + 0x41200123, 0x41300123, 0x00000000, 0x00000000, 0x41a00123, 0x41b00123, 0x00000000, 0x00000000, + 0x00000000, 0x41f00123, 0x00000000, 0x00000000, 0x00000000, 0x42300123}}, + {SetMatrixTranspose, 0, 0, 0, 12, + {0x40000123, 0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x00000000, 0x00000000, + 0x40800123, 0x41000123}}, + {SetMatrixTransposeArray}, + {SetMatrixTransposeArray, 0, 1, 1, 12, + {0x40000123, 0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x00000000, 0x00000000, + 0x40800123, 0x41000123}}, + {SetMatrixTransposeArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 24, + {0x40000123, 0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x00000000, 0x00000000, + 0x40800123, 0x41000123, 0x00000000, 0x00000000, 0x41a00123, 0x00000000, 0x00000000, 0x00000000, + 0x41b00123, 0x41f00123, 0x00000000, 0x00000000, 0x41c00123, 0x42000123}}, + {SetMatrixPointerArray}, + {SetMatrixPointerArray, 0, 1, 1, 12, + {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40c00123, 0x40e00123, 0x00000000, 0x00000000, + 0x41200123, 0x41300123}}, + {SetMatrixPointerArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 24, + {0x40000123, 0x00000000, 0x00000000, 0x00000000, 0x40c00123, 0x40e00123, 0x00000000, 0x00000000, + 0x41200123, 0x41300123, 0x00000000, 0x00000000, 0x41900123, 0x41a00123, 0x00000000, 0x00000000, + 0x41d00123, 0x00000000, 0x00000000, 0x00000000, 0x42100123, 0x00000000}}, + {SetMatrixTransposePointerArray}, + {SetMatrixTransposePointerArray, 0, 1, 1, 12, + {0x40000123, 0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x00000000, 0x00000000, + 0x40800123, 0x41000123}}, + {SetMatrixTransposePointerArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 24, + {0x40000123, 0x40c00123, 0x00000000, 0x00000000, 0x00000000, 0x40e00123, 0x00000000, 0x00000000, + 0x40800123, 0x41000123, 0x00000000, 0x00000000, 0x41900123, 0x41d00123, 0x00000000, 0x00000000, + 0x41a00123, 0x00000000, 0x00000000, 0x00000000, 0x41b00123, 0x41f00123}}, +}; + +static const struct registerset_constants registerset_constants_row_array_int[] = +{ + {"ran", {"ran", D3DXRS_INT4, 0, 12, D3DXPC_MATRIX_ROWS, D3DXPT_INT, 3, 2, 2, 0, 48, NULL}, 113}, + {"ran[0]", {"ran", D3DXRS_INT4, 0, 3, D3DXPC_MATRIX_ROWS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 113}, + {"ran[1]", {"ran", D3DXRS_INT4, 3, 3, D3DXPC_MATRIX_ROWS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 125}, +}; + +static const struct registerset_test registerset_blob_row_array_int[] = +{ + {SetInt}, + {SetBool}, + {SetFloat}, + {SetIntArray, 1, 0, 5}, + {SetIntArray, 1, 6, 11, 12, + {0x00000002, 0x00000003, 0x00000001, 0x00000000, 0x00000004, 0x00000005, 0x00000001, 0x00000000, + 0x00000000, 0x00000007, 0x00000001}}, + {SetIntArray, 1, 12, REGISTER_OUTPUT_SIZE, 24, + {0x00000002, 0x00000003, 0x00000001, 0x00000000, 0x00000004, 0x00000005, 0x00000001, 0x00000000, + 0x00000000, 0x00000007, 0x00000001, 0x00000000, 0x00000008, 0x00000009, 0x00000001, 0x00000000, + 0x0000000a, 0x0000000b, 0x00000001, 0x00000000, 0x0000000c, 0x0000000d, 0x00000001}}, + {SetBoolArray, 1, 0, 5}, + {SetBoolArray, 1, 6, 11, 12, + {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000000, + 0x00000000, 0x00000001, 0x00000001}}, + {SetBoolArray, 1, 12, REGISTER_OUTPUT_SIZE, 24, + {0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000000, + 0x00000000, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000000, + 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001}}, + {SetFloatArray, 0, 0, 5}, + {SetFloatArray, 0, 6, 11, 12, + {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000004, 0x00000005, 0x00000001, 0x00000000, + 0x00000006, 0x00000007, 0x00000001}}, + {SetFloatArray, 0, 12, REGISTER_OUTPUT_SIZE, 24, + {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000004, 0x00000005, 0x00000001, 0x00000000, + 0x00000006, 0x00000007, 0x00000001, 0x00000000, 0x00000008, 0x00000009, 0x00000001, 0x00000000, + 0x0000000a, 0x0000000b, 0x00000001, 0x00000000, 0x0000000c, 0x0000000d, 0x00000001}}, + {SetValue, 1, 0, 23}, + {SetValue, 1, 24, 47, 12, + {0x00000002, 0x00000003, 0x00000001, 0x00000000, 0x00000004, 0x00000005, 0x00000001, 0x00000000, + 0x00000000, 0x00000007, 0x00000001}}, + {SetValue, 1, 48, REGISTER_OUTPUT_SIZE * 4, 24, + {0x00000002, 0x00000003, 0x00000001, 0x00000000, 0x00000004, 0x00000005, 0x00000001, 0x00000000, + 0x00000000, 0x00000007, 0x00000001, 0x00000000, 0x00000008, 0x00000009, 0x00000001, 0x00000000, + 0x0000000a, 0x0000000b, 0x00000001, 0x00000000, 0x0000000c, 0x0000000d, 0x00000001}}, + {SetVector}, + {SetVectorArray, 0, 0, 2}, + {SetVectorArray, 0, 3, 5, 12, + {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000006, 0x00000007, 0x00000001, 0x00000000, + 0x0000000a, 0x0000000b, 0x00000001}}, + {SetVectorArray, 0, 6, REGISTER_OUTPUT_SIZE / 4, 24, + {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000006, 0x00000007, 0x00000001, 0x00000000, + 0x0000000a, 0x0000000b, 0x00000001, 0x00000000, 0x0000000e, 0x0000000f, 0x00000001, 0x00000000, + 0x00000014, 0x00000016, 0x00000001, 0x00000000, 0x00000000, 0x0000001e, 0x00000001}}, + {SetMatrix, 0, 0, 0, 12, + {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000006, 0x00000007, 0x00000001, 0x00000000, + 0x0000000a, 0x0000000b, 0x00000001}}, + {SetMatrixArray}, + {SetMatrixArray, 0, 1, 1, 12, + {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000006, 0x00000007, 0x00000001, 0x00000000, + 0x0000000a, 0x0000000b, 0x00000001}}, + {SetMatrixArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 24, + {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000006, 0x00000007, 0x00000001, 0x00000000, + 0x0000000a, 0x0000000b, 0x00000001, 0x00000000, 0x00000014, 0x00000016, 0x00000001, 0x00000000, + 0x00000000, 0x0000001e, 0x00000001, 0x00000000, 0x00000000, 0x0000002c, 0x00000001}}, + {SetMatrixTranspose, 0, 0, 0, 12, + {0x00000002, 0x00000006, 0x00000001, 0x00000000, 0x00000000, 0x00000007, 0x00000001, 0x00000000, + 0x00000004, 0x00000008, 0x00000001}}, + {SetMatrixTransposeArray}, + {SetMatrixTransposeArray, 0, 1, 1, 12, + {0x00000002, 0x00000006, 0x00000001, 0x00000000, 0x00000000, 0x00000007, 0x00000001, 0x00000000, + 0x00000004, 0x00000008, 0x00000001}}, + {SetMatrixTransposeArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 24, + {0x00000002, 0x00000006, 0x00000001, 0x00000000, 0x00000000, 0x00000007, 0x00000001, 0x00000000, + 0x00000004, 0x00000008, 0x00000001, 0x00000000, 0x00000014, 0x00000000, 0x00000001, 0x00000000, + 0x00000016, 0x0000001e, 0x00000001, 0x00000000, 0x00000018, 0x00000020, 0x00000001}}, + {SetMatrixPointerArray}, + {SetMatrixPointerArray, 0, 1, 1, 12, + {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000006, 0x00000007, 0x00000001, 0x00000000, + 0x0000000a, 0x0000000b, 0x00000001}}, + {SetMatrixPointerArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 24, + {0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000006, 0x00000007, 0x00000001, 0x00000000, + 0x0000000a, 0x0000000b, 0x00000001, 0x00000000, 0x00000012, 0x00000014, 0x00000001, 0x00000000, + 0x0000001a, 0x00000000, 0x00000001, 0x00000000, 0x00000024, 0x00000000, 0x00000001}}, + {SetMatrixTransposePointerArray}, + {SetMatrixTransposePointerArray, 0, 1, 1, 12, + {0x00000002, 0x00000006, 0x00000001, 0x00000000, 0x00000000, 0x00000007, 0x00000001, 0x00000000, + 0x00000004, 0x00000008, 0x00000001}}, + {SetMatrixTransposePointerArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 24, + {0x00000002, 0x00000006, 0x00000001, 0x00000000, 0x00000000, 0x00000007, 0x00000001, 0x00000000, + 0x00000004, 0x00000008, 0x00000001, 0x00000000, 0x00000012, 0x0000001a, 0x00000001, 0x00000000, + 0x00000014, 0x00000000, 0x00000001, 0x00000000, 0x00000016, 0x0000001e, 0x00000001}}, +}; + +static const struct registerset_constants registerset_constants_row_array_bool[] = +{ + {"rab", {"rab", D3DXRS_BOOL, 0, 12, D3DXPC_MATRIX_ROWS, D3DXPT_BOOL, 3, 2, 2, 0, 48, NULL}, 37}, + {"rab[0]", {"rab", D3DXRS_BOOL, 0, 6, D3DXPC_MATRIX_ROWS, D3DXPT_BOOL, 3, 2, 1, 0, 24, NULL}, 37}, + {"rab[1]", {"rab", D3DXRS_BOOL, 6, 6, D3DXPC_MATRIX_ROWS, D3DXPT_BOOL, 3, 2, 1, 0, 24, NULL}, 43}, +}; + +static const struct registerset_test registerset_test_row_array_bool[] = +{ + {SetInt}, + {SetBool}, + {SetFloat}, + {SetIntArray, 1, 0, 5,}, + {SetIntArray, 1, 6, 11, 6, + {0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001}}, + {SetIntArray, 1, 12, REGISTER_OUTPUT_SIZE, 12, + {0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, + 0x00000001, 0x00000001, 0x00000001, 0x00000001}}, + {SetBoolArray, 1, 0, 5}, + {SetBoolArray, 1, 6, 11, 6, + {0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000000, 0x00000007}}, + {SetBoolArray, 1, 12, REGISTER_OUTPUT_SIZE, 12, + {0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000000, 0x00000007, 0x00000008, 0x00000009, + 0x0000000a, 0x0000000b, 0x0000000c, 0x0000000d}}, + {SetFloatArray, 0, 0, 5}, + {SetFloatArray, 0, 6, 11, 6, + {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}}, + {SetFloatArray, 0, 12, REGISTER_OUTPUT_SIZE, 12, + {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, + 0x00000001, 0x00000001, 0x00000001, 0x00000001}}, + {SetValue, 1, 0, 23}, + {SetValue, 1, 24, 47, 6, + {0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000000, 0x00000007}}, + {SetValue, 1, 48, REGISTER_OUTPUT_SIZE * 4, 12, + {0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000000, 0x00000007, 0x00000008, 0x00000009, + 0x0000000a, 0x0000000b, 0x0000000c, 0x0000000d}}, + {SetVector}, + {SetVectorArray, 0, 0, 2}, + {SetVectorArray, 0, 3, 5, 6, + {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}}, + {SetVectorArray, 0, 6, REGISTER_OUTPUT_SIZE / 4, 12, + {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, + 0x00000001, 0x00000001, 0x00000000, 0x00000001}}, + {SetMatrix, 0, 0, 0, 6, + {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}}, + {SetMatrixArray}, + {SetMatrixArray, 0, 1, 1, 6, + {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}}, + {SetMatrixArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 12, + {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, + 0x00000000, 0x00000001, 0x00000000, 0x00000001}}, + {SetMatrixTranspose, 0, 0, 0, 6, + {0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001}}, + {SetMatrixTransposeArray}, + {SetMatrixTransposeArray, 0, 1, 1, 6, + {0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001}}, + {SetMatrixTransposeArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 12, + {0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000000, + 0x00000001, 0x00000001, 0x00000001, 0x00000001}}, + {SetMatrixPointerArray}, + {SetMatrixPointerArray, 0, 1, 1, 6, + {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001}}, + {SetMatrixPointerArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 12, + {0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, + 0x00000001, 0x00000000, 0x00000001, 0x00000000}}, + {SetMatrixTransposePointerArray}, + {SetMatrixTransposePointerArray, 0, 1, 1, 6, + {0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001}}, + {SetMatrixTransposePointerArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 12, + {0x00000001, 0x00000001, 0x00000000, 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, + 0x00000001, 0x00000000, 0x00000001, 0x00000001}}, +}; + +static const struct registerset_constants registerset_constants_row_array_int_float[] = +{ + {"ranf", {"ranf", D3DXRS_FLOAT4, 12, 6, D3DXPC_MATRIX_ROWS, D3DXPT_INT, 3, 2, 2, 0, 48, NULL}, 143}, + {"ranf[0]", {"ranf", D3DXRS_FLOAT4, 12, 3, D3DXPC_MATRIX_ROWS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 143}, + {"ranf[1]", {"ranf", D3DXRS_FLOAT4, 15, 3, D3DXPC_MATRIX_ROWS, D3DXPT_INT, 3, 2, 1, 0, 24, NULL}, 155}, +}; + +static const struct registerset_test registerset_test_row_array_int_float[] = +{ + {SetInt}, + {SetBool}, + {SetFloat}, + {SetIntArray, 1, 0, 5}, + {SetIntArray, 1, 6, 11, 12, + {0x40000000, 0x40400000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000, 0x00000000, + 0x00000000, 0x40e00000,}}, + {SetIntArray, 1, 12, REGISTER_OUTPUT_SIZE, 24, + {0x40000000, 0x40400000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000, 0x00000000, + 0x00000000, 0x40e00000, 0x00000000, 0x00000000, 0x41000000, 0x41100000, 0x00000000, 0x00000000, + 0x41200000, 0x41300000, 0x00000000, 0x00000000, 0x41400000, 0x41500000}}, + {SetBoolArray, 1, 0, 5}, + {SetBoolArray, 1, 6, 11, 12, + {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x00000000, 0x3f800000}}, + {SetBoolArray, 1, 12, REGISTER_OUTPUT_SIZE, 24, + {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}}, + {SetFloatArray, 0, 0, 5}, + {SetFloatArray, 0, 6, 11, 12, + {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000, 0x00000000, + 0x40c00000, 0x40e00000}}, + {SetFloatArray, 0, 12, REGISTER_OUTPUT_SIZE, 24, + {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000, 0x00000000, + 0x40c00000, 0x40e00000, 0x00000000, 0x00000000, 0x41000000, 0x41100000, 0x00000000, 0x00000000, + 0x41200000, 0x41300000, 0x00000000, 0x00000000, 0x41400000, 0x41500000}}, + {SetValue, 1, 0, 23}, + {SetValue, 1, 24, 47, 12, + {0x40000000, 0x40400000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000, 0x00000000, + 0x00000000, 0x40e00000}}, + {SetValue, 1, 48, REGISTER_OUTPUT_SIZE * 4, 24, + {0x40000000, 0x40400000, 0x00000000, 0x00000000, 0x40800000, 0x40a00000, 0x00000000, 0x00000000, + 0x00000000, 0x40e00000, 0x00000000, 0x00000000, 0x41000000, 0x41100000, 0x00000000, 0x00000000, + 0x41200000, 0x41300000, 0x00000000, 0x00000000, 0x41400000, 0x41500000}}, + {SetVector}, + {SetVectorArray, 0, 0, 2}, + {SetVectorArray, 0, 3, 5, 12, + {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40c00000, 0x40e00000, 0x00000000, 0x00000000, + 0x41200000, 0x41300000}}, + {SetVectorArray, 0, 6, REGISTER_OUTPUT_SIZE / 4, 24, + {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40c00000, 0x40e00000, 0x00000000, 0x00000000, + 0x41200000, 0x41300000, 0x00000000, 0x00000000, 0x41600000, 0x41700000, 0x00000000, 0x00000000, + 0x41a00000, 0x41b00000, 0x00000000, 0x00000000, 0x00000000, 0x41f00000}}, + {SetMatrix, 0, 0, 0, 12, + {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40c00000, 0x40e00000, 0x00000000, 0x00000000, + 0x41200000, 0x41300000}}, + {SetMatrixArray}, + {SetMatrixArray, 0, 1, 1, 12, + {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40c00000, 0x40e00000, 0x00000000, 0x00000000, + 0x41200000, 0x41300000}}, + {SetMatrixArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 24, + {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40c00000, 0x40e00000, 0x00000000, 0x00000000, + 0x41200000, 0x41300000, 0x00000000, 0x00000000, 0x41a00000, 0x41b00000, 0x00000000, 0x00000000, + 0x00000000, 0x41f00000, 0x00000000, 0x00000000, 0x00000000, 0x42300000}}, + {SetMatrixTranspose, 0, 0, 0, 12, + {0x40000000, 0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x00000000, 0x00000000, + 0x40800000, 0x41000000}}, + {SetMatrixTransposeArray}, + {SetMatrixTransposeArray, 0, 1, 1, 12, + {0x40000000, 0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x00000000, 0x00000000, + 0x40800000, 0x41000000}}, + {SetMatrixTransposeArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 24, + {0x40000000, 0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x00000000, 0x00000000, + 0x40800000, 0x41000000, 0x00000000, 0x00000000, 0x41a00000, 0x00000000, 0x00000000, 0x00000000, + 0x41b00000, 0x41f00000, 0x00000000, 0x00000000, 0x41c00000, 0x42000000}}, + {SetMatrixPointerArray}, + {SetMatrixPointerArray, 0, 1, 1, 12, + {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40c00000, 0x40e00000, 0x00000000, 0x00000000, + 0x41200000, 0x41300000}}, + {SetMatrixPointerArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 24, + {0x40000000, 0x00000000, 0x00000000, 0x00000000, 0x40c00000, 0x40e00000, 0x00000000, 0x00000000, + 0x41200000, 0x41300000, 0x00000000, 0x00000000, 0x41900000, 0x41a00000, 0x00000000, 0x00000000, + 0x41d00000, 0x00000000, 0x00000000, 0x00000000, 0x42100000, 0x00000000}}, + {SetMatrixTransposePointerArray}, + {SetMatrixTransposePointerArray, 0, 1, 1, 12, + {0x40000000, 0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x00000000, 0x00000000, + 0x40800000, 0x41000000}}, + {SetMatrixTransposePointerArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 24, + {0x40000000, 0x40c00000, 0x00000000, 0x00000000, 0x00000000, 0x40e00000, 0x00000000, 0x00000000, + 0x40800000, 0x41000000, 0x00000000, 0x00000000, 0x41900000, 0x41d00000, 0x00000000, 0x00000000, + 0x41a00000, 0x00000000, 0x00000000, 0x00000000, 0x41b00000, 0x41f00000}}, +}; + +static const struct registerset_constants registerset_constants_row_array_bool_float[] = +{ + {"rabf", {"rabf", D3DXRS_FLOAT4, 6, 6, D3DXPC_MATRIX_ROWS, D3DXPT_BOOL, 3, 2, 2, 0, 48, NULL}, 55}, + {"rabf[0]", {"rabf", D3DXRS_FLOAT4, 6, 3, D3DXPC_MATRIX_ROWS, D3DXPT_BOOL, 3, 2, 1, 0, 24, NULL}, 55}, + {"rabf[1]", {"rabf", D3DXRS_FLOAT4, 9, 3, D3DXPC_MATRIX_ROWS, D3DXPT_BOOL, 3, 2, 1, 0, 24, NULL}, 67}, +}; + +static const struct registerset_test registerset_test_row_array_bool_float[] = +{ + {SetInt}, + {SetBool}, + {SetFloat}, + {SetIntArray, 1, 0, 5}, + {SetIntArray, 1, 6, 11, 12, + {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x00000000, 0x3f800000}}, + {SetIntArray, 1, 12, REGISTER_OUTPUT_SIZE, 24, + {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}}, + {SetBoolArray, 1, 0, 5}, + {SetBoolArray, 1, 6, 11, 12, + {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x00000000, 0x3f800000}}, + {SetBoolArray, 1, 12, REGISTER_OUTPUT_SIZE, 24, + {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}}, + {SetFloatArray, 0, 0, 5}, + {SetFloatArray, 0, 6, 11, 12, + {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000}}, + {SetFloatArray, 0, 12, REGISTER_OUTPUT_SIZE, 24, + {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}}, + {SetValue, 1, 0, 23}, + {SetValue, 1, 24, 47, 12, + {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x00000000, 0x3f800000}}, + {SetValue, 1, 48, REGISTER_OUTPUT_SIZE * 4, 24, + {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}}, + {SetVector}, + {SetVectorArray, 0, 0, 2}, + {SetVectorArray, 0, 3, 5, 12, + {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000}}, + {SetVectorArray, 0, 6, REGISTER_OUTPUT_SIZE / 4, 24, + {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000}}, + {SetMatrix, 0, 0, 0, 12, + {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000}}, + {SetMatrixArray}, + {SetMatrixArray, 0, 1, 1, 12, + {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000}}, + {SetMatrixArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 24, + {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000}}, + {SetMatrixTranspose, 0, 0, 0, 12, + {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000}}, + {SetMatrixTransposeArray}, + {SetMatrixTransposeArray, 0, 1, 1, 12, + {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000}}, + {SetMatrixTransposeArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 24, + {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}}, + {SetMatrixPointerArray}, + {SetMatrixPointerArray, 0, 1, 1, 12, + {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000}}, + {SetMatrixPointerArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 24, + {0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000}}, + {SetMatrixTransposePointerArray}, + {SetMatrixTransposePointerArray, 0, 1, 1, 12, + {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000}}, + {SetMatrixTransposePointerArray, 0, 2, REGISTER_OUTPUT_SIZE / 16, 24, + {0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, + 0x3f800000, 0x00000000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000}}, +}; + static const struct { const char *name; @@ -4121,6 +4619,29 @@ registerset_data[] = sizeof(registerset_test_row_int_float) / sizeof(*registerset_test_row_int_float), registerset_constants_row_int_float, sizeof(registerset_constants_row_int_float) / sizeof(*registerset_constants_row_int_float)}, + /* matrix row array */ + {"float 3x2 [2]", "raf", 0, D3DXRS_FLOAT4, registerset_blob_row_array, registerset_blob_row_array_float, + sizeof(registerset_blob_row_array_float) / sizeof(*registerset_blob_row_array_float), + registerset_constants_row_array_float, + sizeof(registerset_constants_row_array_float) / sizeof(*registerset_constants_row_array_float)}, + {"int 3x2 [2]", "ran", 0, D3DXRS_INT4, registerset_blob_row_array, registerset_blob_row_array_int, + sizeof(registerset_blob_row_array_int) / sizeof(*registerset_blob_row_array_int), + registerset_constants_row_array_int, + sizeof(registerset_constants_row_array_int) / sizeof(*registerset_constants_row_array_int)}, + {"bool 3x2 [2]", "rab", 0, D3DXRS_BOOL, registerset_blob_row_array, registerset_test_row_array_bool, + sizeof(registerset_test_row_array_bool) / sizeof(*registerset_test_row_array_bool), + registerset_constants_row_array_bool, + sizeof(registerset_constants_row_array_bool) / sizeof(*registerset_constants_row_array_bool)}, + {"bool float 3x2 [2]", "rabf", 24, D3DXRS_FLOAT4, registerset_blob_row_array, + registerset_test_row_array_bool_float, + sizeof(registerset_test_row_array_bool_float) / sizeof(*registerset_test_row_array_bool_float), + registerset_constants_row_array_bool_float, + sizeof(registerset_constants_row_array_bool_float) / sizeof(*registerset_constants_row_array_bool_float)}, + {"int float 3x2 [2]", "ranf", 48, D3DXRS_FLOAT4, registerset_blob_row_array, + registerset_test_row_array_int_float, + sizeof(registerset_test_row_array_int_float) / sizeof(*registerset_test_row_array_int_float), + registerset_constants_row_array_int_float, + sizeof(registerset_constants_row_array_int_float) / sizeof(*registerset_constants_row_array_int_float)}, }; static void registerset_clear(IDirect3DDevice9 *device)