d3d10/effect: Add 'mul' instruction support for expressions.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
This commit is contained in:
Nikolay Sivov 2022-11-30 17:30:31 +03:00 committed by Alexandre Julliard
parent eb3e4b79ac
commit 8dcadad5c0
2 changed files with 85 additions and 74 deletions

View file

@ -255,6 +255,15 @@ static void pres_add(float **args, unsigned int n, const struct preshader_instr
retval[i] = args[0][instr->scalar ? 0 : i] + args[1][i];
}
static void pres_mul(float **args, unsigned int n, const struct preshader_instr *instr)
{
float *retval = args[2];
unsigned int i;
for (i = 0; i < instr->comp_count; ++i)
retval[i] = args[0][instr->scalar ? 0 : i] * args[1][i];
}
struct preshader_op_info
{
int opcode;
@ -269,6 +278,7 @@ static const struct preshader_op_info preshader_ops[] =
{ 0x200, "min", pres_min },
{ 0x201, "max", pres_max },
{ 0x204, "add", pres_add },
{ 0x205, "mul", pres_mul },
};
static int __cdecl preshader_op_compare(const void *a, const void *b)

View file

@ -8142,7 +8142,7 @@ technique10 tech
{
pass p0
{
SetBlendState( NULL, -g_var + 0.1f + g_var2, 0 );
SetBlendState( NULL, -g_var + 0.1f + g_var2 * 2.1f, 0 );
}
pass p1
{
@ -8164,88 +8164,89 @@ technique10 tech
#endif
static DWORD fx_test_value_expression[] =
{
0x43425844, 0x88394383, 0x834c826b, 0xb85f55f9, 0xe141c400, 0x00000001, 0x00000a21, 0x00000001,
0x00000024, 0x30315846, 0x000009f5, 0xfeff1001, 0x00000001, 0x00000002, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000001, 0x00000821, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x43425844, 0x161a43d2, 0xd66bd793, 0xbeb21ab0, 0xfbfff9d4, 0x00000001, 0x00000a4d, 0x00000001,
0x00000024, 0x30315846, 0x00000a21, 0xfeff1001, 0x00000001, 0x00000002, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000001, 0x0000084d, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6f6c4724,
0x736c6162, 0x6f6c6600, 0x00347461, 0x0000000d, 0x00000001, 0x00000000, 0x00000010, 0x00000010,
0x00000010, 0x0000210a, 0x61765f67, 0x5f670072, 0x32726176, 0x63657400, 0x30700068, 0x00018000,
0x42584400, 0x042b4d43, 0x89240778, 0x7627fdd4, 0xd3b7fecb, 0x0000014d, 0x00018000, 0x00000300,
0x00000010, 0x0000210a, 0x61765f67, 0x5f670072, 0x32726176, 0x63657400, 0x30700068, 0x0001ac00,
0x42584400, 0x004e2543, 0xfc3dcf36, 0x3b9f23ae, 0x0ffbc8c0, 0x000001de, 0x0001ac00, 0x00000300,
0x00002c00, 0x0000d400, 0x0000f000, 0x41544300, 0x0000a042, 0x00001c00, 0x00007700, 0x58040000,
0x00000246, 0x00001c00, 0x00010000, 0x00007400, 0x00004400, 0x00000200, 0x00000100, 0x00004c00,
0x00000000, 0x00005c00, 0x01000200, 0x00000100, 0x00006400, 0x00000000, 0x765f6700, 0xab007261,
0x030001ab, 0x04000100, 0x00000100, 0x00000000, 0x765f6700, 0x00327261, 0x030001ab, 0x04000100,
0x00000100, 0x00000000, 0x00787400, 0x7263694d, 0x666f736f, 0x52282074, 0x4c482029, 0x53204c53,
0x65646168, 0x6f432072, 0x6c69706d, 0x31207265, 0x00312e30, 0x494c43ab, 0x00001434, 0x00000400,
0xcccccd00, 0x0000003d, 0x00000000, 0x00000000, 0x4c584600, 0x00008843, 0x00000300, 0x10000400,
0xcccccd00, 0x0666663d, 0x00000040, 0x00000000, 0x4c584600, 0x0000b443, 0x00000400, 0x10000400,
0x00000110, 0x00000000, 0x00000200, 0x00000000, 0x00000000, 0x00000700, 0x00000000, 0x40000400,
0x00000220, 0x00000000, 0x00000700, 0x00000000, 0x00000000, 0x00000200, 0x00000400, 0x00000000,
0x00000700, 0x00000400, 0x40000400, 0x000002a0, 0x00000000, 0x00000100, 0x00000000, 0x00000000,
0x00000700, 0x00000400, 0x00000000, 0x00000400, 0x00000000, 0xf0f0f000, 0x0f0f0ff0, 0x00ffff0f,
0x00000100, 0x00000200, 0x00000000, 0x00000100, 0x00000200, 0x00000000, 0x00317000, 0x00000150,
0x43425844, 0xc6a29e4c, 0x6292ed35, 0xd90bb8cb, 0x50dcd25f, 0x00000001, 0x00000150, 0x00000003,
0x0000002c, 0x000000d4, 0x000000e0, 0x42415443, 0x000000a0, 0x0000001c, 0x00000077, 0x46580400,
0x00000002, 0x0000001c, 0x00000100, 0x00000074, 0x00000044, 0x00000002, 0x00000001, 0x0000004c,
0x00000000, 0x0000005c, 0x00010002, 0x00000001, 0x00000064, 0x00000000, 0x61765f67, 0xabab0072,
0x00030001, 0x00040001, 0x00000001, 0x00000000, 0x61765f67, 0xab003272, 0x00030001, 0x00040001,
0x00000001, 0x00000000, 0x4d007874, 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820, 0x6853204c,
0x72656461, 0x6d6f4320, 0x656c6970, 0x30312072, 0xab00312e, 0x34494c43, 0x00000004, 0x00000000,
0x434c5846, 0x00000068, 0x00000002, 0xa0400004, 0x00000002, 0x00000000, 0x00000002, 0x00000000,
0x00000000, 0x00000002, 0x00000004, 0x00000000, 0x00000007, 0x00000000, 0xa0400004, 0x00000002,
0x00000000, 0x00000002, 0x00000001, 0x00000000, 0x00000007, 0x00000000, 0x00000000, 0x00000004,
0x00000000, 0xf0f0f0f0, 0x0f0f0f0f, 0x0000ffff, 0x00000001, 0x00000002, 0x00000000, 0x00000001,
0x00000002, 0x00000000, 0x2c003270, 0x44000002, 0x9e434258, 0xfae994e0, 0xb641b826, 0x0bac8f3a,
0x019d4eb7, 0x2c000000, 0x03000002, 0x2c000000, 0xd4000000, 0xe0000000, 0x43000000, 0xa0424154,
0x1c000000, 0x77000000, 0x00000000, 0x02465804, 0x1c000000, 0x00000000, 0x74000001, 0x44000000,
0x02000000, 0x01000000, 0x4c000000, 0x00000000, 0x5c000000, 0x02000000, 0x01000100, 0x64000000,
0x00000000, 0x67000000, 0x7261765f, 0x01abab00, 0x01000300, 0x01000400, 0x00000000, 0x67000000,
0x7261765f, 0x01ab0032, 0x01000300, 0x01000400, 0x00000000, 0x74000000, 0x694d0078, 0x736f7263,
0x2074666f, 0x20295228, 0x4c534c48, 0x61685320, 0x20726564, 0x706d6f43, 0x72656c69, 0x2e303120,
0x43ab0031, 0x0434494c, 0x00000000, 0x46000000, 0x44434c58, 0x07000001, 0x01000000, 0x02200000,
0x00000000, 0x02000000, 0x00000000, 0x00000000, 0x02000000, 0x04000000, 0x00000000, 0x07000000,
0x00000000, 0x01000000, 0x02201000, 0x00000000, 0x02000000, 0x01000000, 0x00000000, 0x02000000,
0x05000000, 0x00000000, 0x07000000, 0x01000000, 0x01000000, 0x02204000, 0x00000000, 0x07000000,
0x01000000, 0x00000000, 0x07000000, 0x00000000, 0x00000000, 0x07000000, 0x04000000, 0x04000000,
0x02200000, 0x00000000, 0x02000000, 0x00000000, 0x00000000, 0x02000000, 0x04000000, 0x00000000,
0x07000000, 0x00000000, 0x04000000, 0x02a04000, 0x00000000, 0x07000000, 0x04000000, 0x00000000,
0x07000000, 0x00000000, 0x00000000, 0x07000000, 0x08000000, 0x04000000, 0x02201000, 0x00000000,
0x02000000, 0x00000000, 0x00000000, 0x02000000, 0x04000000, 0x00000000, 0x07000000, 0x00000000,
0x04000000, 0x02204000, 0x00000000, 0x07000000, 0x00000000, 0x00000000, 0x07000000, 0x08000000,
0x00000000, 0x04000000, 0x00000000, 0xf0000000, 0x0ff0f0f0, 0xff0f0f0f, 0x010000ff, 0x02000000,
0x00000000, 0x01000000, 0x02000000, 0x00000000, 0x70000000, 0x01240033, 0x58440000, 0xf4c54342,
0x070658ce, 0xcabd2023, 0x24d22fca, 0x00010f0c, 0x01240000, 0x00030000, 0x002c0000, 0x00d40000,
0x00e00000, 0x54430000, 0x00a04241, 0x001c0000, 0x00770000, 0x04000000, 0x00024658, 0x001c0000,
0x01000000, 0x00740000, 0x00440000, 0x00020000, 0x00010000, 0x004c0000, 0x00000000, 0x005c0000,
0x00020000, 0x00010001, 0x00640000, 0x00000000, 0x5f670000, 0x00726176, 0x0001abab, 0x00010003,
0x00010004, 0x00000000, 0x5f670000, 0x32726176, 0x0001ab00, 0x00010003, 0x00010004, 0x00000000,
0x78740000, 0x63694d00, 0x6f736f72, 0x28207466, 0x48202952, 0x204c534c, 0x64616853, 0x43207265,
0x69706d6f, 0x2072656c, 0x312e3031, 0x4c43ab00, 0x00043449, 0x00000000, 0x58460000, 0x003c434c,
0x00010000, 0x00040000, 0x0002a000, 0x00000000, 0x00020000, 0x00000000, 0x00000000, 0x00020000,
0x00040000, 0x00000000, 0x00040000, 0x00000000, 0xf0f00000, 0x0f0ff0f0, 0xffff0f0f, 0x00010000,
0x00020000, 0x00000000, 0x00010000, 0x00020000, 0x00000000, 0x34700000, 0x00012400, 0x42584400,
0xc902bb43, 0xafcba635, 0xa383ff89, 0xed53a9f6, 0x000001f8, 0x00012400, 0x00000300, 0x00002c00,
0x0000d400, 0x0000e000, 0x41544300, 0x0000a042, 0x00001c00, 0x00007700, 0x58040000, 0x00000246,
0x00001c00, 0x00010000, 0x00007400, 0x00004400, 0x00000200, 0x00000100, 0x00004c00, 0x00000000,
0x00005c00, 0x01000200, 0x00000100, 0x00006400, 0x00000000, 0x765f6700, 0xab007261, 0x030001ab,
0x04000100, 0x00000100, 0x00000000, 0x765f6700, 0x00327261, 0x030001ab, 0x04000100, 0x00000100,
0x00000000, 0x00787400, 0x7263694d, 0x666f736f, 0x52282074, 0x4c482029, 0x53204c53, 0x65646168,
0x6f432072, 0x6c69706d, 0x31207265, 0x00312e30, 0x494c43ab, 0x00000434, 0x00000000, 0x4c584600,
0x00003c43, 0x00000100, 0x10000400, 0x000002a0, 0x00000000, 0x00000200, 0x00000000, 0x00000000,
0x00000200, 0x00000400, 0x00000000, 0x00000400, 0x00000000, 0xf0f0f000, 0x0f0f0ff0, 0x00ffff0f,
0x00000100, 0x00000200, 0x00000000, 0x00000100, 0x00000200, 0x00000000, 0x00000400, 0x00002000,
0x00000000, 0x00000200, 0xffffff00, 0x000000ff, 0x00003000, 0x00001400, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00003600, 0x00001400, 0x00000000, 0x00001000, 0x00000000,
0x00000000, 0x00000000, 0x00003d00, 0x00000500, 0x00000000, 0x00004200, 0x00000300, 0x00000000,
0x00000a00, 0x00000000, 0x00000600, 0x00004500, 0x00000b00, 0x00000000, 0x00000100, 0x0001c900,
0x00000200, 0x00000000, 0x00000100, 0x0001d500, 0x0001e100, 0x00000300, 0x00000000, 0x00000a00,
0x00000000, 0x00000600, 0x0001e400, 0x00000b00, 0x00000000, 0x00000100, 0x00033800, 0x00000200,
0x00000000, 0x00000100, 0x00034400, 0x00035000, 0x00000300, 0x00000000, 0x00000a00, 0x00000000,
0x00000600, 0x00035300, 0x00000b00, 0x00000000, 0x00000100, 0x00058300, 0x00000200, 0x00000000,
0x00000100, 0x00058f00, 0x00059b00, 0x00000300, 0x00000000, 0x00000a00, 0x00000000, 0x00000600,
0x00059e00, 0x00000b00, 0x00000000, 0x00000100, 0x0006c600, 0x00000200, 0x00000000, 0x00000100,
0x0006d200, 0x0006de00, 0x00000300, 0x00000000, 0x00000a00, 0x00000000, 0x00000600, 0x0006e100,
0x00000b00, 0x00000000, 0x00000100, 0x00080900, 0x00000200, 0x00000000, 0x00000100, 0x00081500,
0x00000000,
0x000002a0, 0x00000000, 0x00000100, 0x00000000, 0x00000000, 0x00000700, 0x00000000, 0x00000000,
0x00000700, 0x00000400, 0x50000400, 0x000002a0, 0x00000000, 0x00000100, 0x00000100, 0x00000000,
0x00000200, 0x00000400, 0x00000000, 0x00000700, 0x00000000, 0x40000400, 0x00000220, 0x00000000,
0x00000700, 0x00000000, 0x00000000, 0x00000700, 0x00000400, 0x00000000, 0x00000400, 0x00000000,
0xf0f0f000, 0x0f0f0ff0, 0x00ffff0f, 0x00000100, 0x00000200, 0x00000000, 0x00000100, 0x00000200,
0x00000000, 0x00317000, 0x00000150, 0x43425844, 0xc6a29e4c, 0x6292ed35, 0xd90bb8cb, 0x50dcd25f,
0x00000001, 0x00000150, 0x00000003, 0x0000002c, 0x000000d4, 0x000000e0, 0x42415443, 0x000000a0,
0x0000001c, 0x00000077, 0x46580400, 0x00000002, 0x0000001c, 0x00000100, 0x00000074, 0x00000044,
0x00000002, 0x00000001, 0x0000004c, 0x00000000, 0x0000005c, 0x00010002, 0x00000001, 0x00000064,
0x00000000, 0x61765f67, 0xabab0072, 0x00030001, 0x00040001, 0x00000001, 0x00000000, 0x61765f67,
0xab003272, 0x00030001, 0x00040001, 0x00000001, 0x00000000, 0x4d007874, 0x6f726369, 0x74666f73,
0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970, 0x30312072, 0xab00312e,
0x34494c43, 0x00000004, 0x00000000, 0x434c5846, 0x00000068, 0x00000002, 0xa0400004, 0x00000002,
0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x00000002, 0x00000004, 0x00000000, 0x00000007,
0x00000000, 0xa0400004, 0x00000002, 0x00000000, 0x00000002, 0x00000001, 0x00000000, 0x00000007,
0x00000000, 0x00000000, 0x00000004, 0x00000000, 0xf0f0f0f0, 0x0f0f0f0f, 0x0000ffff, 0x00000001,
0x00000002, 0x00000000, 0x00000001, 0x00000002, 0x00000000, 0x2c003270, 0x44000002, 0x9e434258,
0xfae994e0, 0xb641b826, 0x0bac8f3a, 0x019d4eb7, 0x2c000000, 0x03000002, 0x2c000000, 0xd4000000,
0xe0000000, 0x43000000, 0xa0424154, 0x1c000000, 0x77000000, 0x00000000, 0x02465804, 0x1c000000,
0x00000000, 0x74000001, 0x44000000, 0x02000000, 0x01000000, 0x4c000000, 0x00000000, 0x5c000000,
0x02000000, 0x01000100, 0x64000000, 0x00000000, 0x67000000, 0x7261765f, 0x01abab00, 0x01000300,
0x01000400, 0x00000000, 0x67000000, 0x7261765f, 0x01ab0032, 0x01000300, 0x01000400, 0x00000000,
0x74000000, 0x694d0078, 0x736f7263, 0x2074666f, 0x20295228, 0x4c534c48, 0x61685320, 0x20726564,
0x706d6f43, 0x72656c69, 0x2e303120, 0x43ab0031, 0x0434494c, 0x00000000, 0x46000000, 0x44434c58,
0x07000001, 0x01000000, 0x02200000, 0x00000000, 0x02000000, 0x00000000, 0x00000000, 0x02000000,
0x04000000, 0x00000000, 0x07000000, 0x00000000, 0x01000000, 0x02201000, 0x00000000, 0x02000000,
0x01000000, 0x00000000, 0x02000000, 0x05000000, 0x00000000, 0x07000000, 0x01000000, 0x01000000,
0x02204000, 0x00000000, 0x07000000, 0x01000000, 0x00000000, 0x07000000, 0x00000000, 0x00000000,
0x07000000, 0x04000000, 0x04000000, 0x02200000, 0x00000000, 0x02000000, 0x00000000, 0x00000000,
0x02000000, 0x04000000, 0x00000000, 0x07000000, 0x00000000, 0x04000000, 0x02a04000, 0x00000000,
0x07000000, 0x04000000, 0x00000000, 0x07000000, 0x00000000, 0x00000000, 0x07000000, 0x08000000,
0x04000000, 0x02201000, 0x00000000, 0x02000000, 0x00000000, 0x00000000, 0x02000000, 0x04000000,
0x00000000, 0x07000000, 0x00000000, 0x04000000, 0x02204000, 0x00000000, 0x07000000, 0x00000000,
0x00000000, 0x07000000, 0x08000000, 0x00000000, 0x04000000, 0x00000000, 0xf0000000, 0x0ff0f0f0,
0xff0f0f0f, 0x010000ff, 0x02000000, 0x00000000, 0x01000000, 0x02000000, 0x00000000, 0x70000000,
0x01240033, 0x58440000, 0xf4c54342, 0x070658ce, 0xcabd2023, 0x24d22fca, 0x00010f0c, 0x01240000,
0x00030000, 0x002c0000, 0x00d40000, 0x00e00000, 0x54430000, 0x00a04241, 0x001c0000, 0x00770000,
0x04000000, 0x00024658, 0x001c0000, 0x01000000, 0x00740000, 0x00440000, 0x00020000, 0x00010000,
0x004c0000, 0x00000000, 0x005c0000, 0x00020000, 0x00010001, 0x00640000, 0x00000000, 0x5f670000,
0x00726176, 0x0001abab, 0x00010003, 0x00010004, 0x00000000, 0x5f670000, 0x32726176, 0x0001ab00,
0x00010003, 0x00010004, 0x00000000, 0x78740000, 0x63694d00, 0x6f736f72, 0x28207466, 0x48202952,
0x204c534c, 0x64616853, 0x43207265, 0x69706d6f, 0x2072656c, 0x312e3031, 0x4c43ab00, 0x00043449,
0x00000000, 0x58460000, 0x003c434c, 0x00010000, 0x00040000, 0x0002a000, 0x00000000, 0x00020000,
0x00000000, 0x00000000, 0x00020000, 0x00040000, 0x00000000, 0x00040000, 0x00000000, 0xf0f00000,
0x0f0ff0f0, 0xffff0f0f, 0x00010000, 0x00020000, 0x00000000, 0x00010000, 0x00020000, 0x00000000,
0x34700000, 0x00012400, 0x42584400, 0xc902bb43, 0xafcba635, 0xa383ff89, 0xed53a9f6, 0x000001f8,
0x00012400, 0x00000300, 0x00002c00, 0x0000d400, 0x0000e000, 0x41544300, 0x0000a042, 0x00001c00,
0x00007700, 0x58040000, 0x00000246, 0x00001c00, 0x00010000, 0x00007400, 0x00004400, 0x00000200,
0x00000100, 0x00004c00, 0x00000000, 0x00005c00, 0x01000200, 0x00000100, 0x00006400, 0x00000000,
0x765f6700, 0xab007261, 0x030001ab, 0x04000100, 0x00000100, 0x00000000, 0x765f6700, 0x00327261,
0x030001ab, 0x04000100, 0x00000100, 0x00000000, 0x00787400, 0x7263694d, 0x666f736f, 0x52282074,
0x4c482029, 0x53204c53, 0x65646168, 0x6f432072, 0x6c69706d, 0x31207265, 0x00312e30, 0x494c43ab,
0x00000434, 0x00000000, 0x4c584600, 0x00003c43, 0x00000100, 0x10000400, 0x000002a0, 0x00000000,
0x00000200, 0x00000000, 0x00000000, 0x00000200, 0x00000400, 0x00000000, 0x00000400, 0x00000000,
0xf0f0f000, 0x0f0f0ff0, 0x00ffff0f, 0x00000100, 0x00000200, 0x00000000, 0x00000100, 0x00000200,
0x00000000, 0x00000400, 0x00002000, 0x00000000, 0x00000200, 0xffffff00, 0x000000ff, 0x00003000,
0x00001400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00003600, 0x00001400,
0x00000000, 0x00001000, 0x00000000, 0x00000000, 0x00000000, 0x00003d00, 0x00000500, 0x00000000,
0x00004200, 0x00000300, 0x00000000, 0x00000a00, 0x00000000, 0x00000600, 0x00004500, 0x00000b00,
0x00000000, 0x00000100, 0x0001f500, 0x00000200, 0x00000000, 0x00000100, 0x00020100, 0x00020d00,
0x00000300, 0x00000000, 0x00000a00, 0x00000000, 0x00000600, 0x00021000, 0x00000b00, 0x00000000,
0x00000100, 0x00036400, 0x00000200, 0x00000000, 0x00000100, 0x00037000, 0x00037c00, 0x00000300,
0x00000000, 0x00000a00, 0x00000000, 0x00000600, 0x00037f00, 0x00000b00, 0x00000000, 0x00000100,
0x0005af00, 0x00000200, 0x00000000, 0x00000100, 0x0005bb00, 0x0005c700, 0x00000300, 0x00000000,
0x00000a00, 0x00000000, 0x00000600, 0x0005ca00, 0x00000b00, 0x00000000, 0x00000100, 0x0006f200,
0x00000200, 0x00000000, 0x00000100, 0x0006fe00, 0x00070a00, 0x00000300, 0x00000000, 0x00000a00,
0x00000000, 0x00000600, 0x00070d00, 0x00000b00, 0x00000000, 0x00000100, 0x00083500, 0x00000200,
0x00000000, 0x00000100, 0x00084100, 0x00000000,
};
static void test_effect_value_expression(void)