From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/d3d10/effect.c | 10 ++++ dlls/d3d10/tests/effect.c | 101 +++++++++++++++++++------------------- 2 files changed, 61 insertions(+), 50 deletions(-)
diff --git a/dlls/d3d10/effect.c b/dlls/d3d10/effect.c index da67fecc908..00b17b289d8 100644 --- a/dlls/d3d10/effect.c +++ b/dlls/d3d10/effect.c @@ -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) diff --git a/dlls/d3d10/tests/effect.c b/dlls/d3d10/tests/effect.c index f1c7af4e050..58a0a50bc0e 100644 --- a/dlls/d3d10/tests/effect.c +++ b/dlls/d3d10/tests/effect.c @@ -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 { @@ -8156,64 +8156,65 @@ technique10 tech #endif static DWORD fx_test_value_expression[] = { - 0x43425844, 0x5efbe2c7, 0xf0e73736, 0x817c47b1, 0x221654f8, 0x00000001, 0x00000723, 0x00000001, - 0x00000024, 0x30315846, 0x000006f7, 0xfeff1001, 0x00000001, 0x00000002, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000001, 0x0000059b, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x43425844, 0xf5b38d78, 0xc16f7150, 0xecec0534, 0xaa12c6b0, 0x00000001, 0x0000074f, 0x00000001, + 0x00000024, 0x30315846, 0x00000723, 0xfeff1001, 0x00000001, 0x00000002, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000001, 0x000005c7, 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, 0x04000000, 0x20000000, 0x00000000, 0x02000000, - 0xff000000, 0x00ffffff, 0x30000000, 0x14000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x36000000, 0x14000000, 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, - 0x3d000000, 0x03000000, 0x00000000, 0x42000000, 0x03000000, 0x00000000, 0x0a000000, 0x00000000, - 0x06000000, 0x45000000, 0x0b000000, 0x00000000, 0x01000000, 0xc9000000, 0x02000001, 0x00000000, - 0x01000000, 0xd5000000, 0xe1000001, 0x03000001, 0x00000000, 0x0a000000, 0x00000000, 0x06000000, - 0xe4000000, 0x0b000001, 0x00000000, 0x01000000, 0x38000000, 0x02000003, 0x00000000, 0x01000000, - 0x44000000, 0x50000003, 0x03000003, 0x00000000, 0x0a000000, 0x00000000, 0x06000000, 0x53000000, - 0x0b000003, 0x00000000, 0x01000000, 0x83000000, 0x02000005, 0x00000000, 0x01000000, 0x8f000000, - 0x00000005, + 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, 0x04000000, + 0x20000000, 0x00000000, 0x02000000, 0xff000000, 0x00ffffff, 0x30000000, 0x14000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x36000000, 0x14000000, 0x00000000, 0x10000000, + 0x00000000, 0x00000000, 0x00000000, 0x3d000000, 0x03000000, 0x00000000, 0x42000000, 0x03000000, + 0x00000000, 0x0a000000, 0x00000000, 0x06000000, 0x45000000, 0x0b000000, 0x00000000, 0x01000000, + 0xf5000000, 0x02000001, 0x00000000, 0x01000000, 0x01000000, 0x0d000002, 0x03000002, 0x00000000, + 0x0a000000, 0x00000000, 0x06000000, 0x10000000, 0x0b000002, 0x00000000, 0x01000000, 0x64000000, + 0x02000003, 0x00000000, 0x01000000, 0x70000000, 0x7c000003, 0x03000003, 0x00000000, 0x0a000000, + 0x00000000, 0x06000000, 0x7f000000, 0x0b000003, 0x00000000, 0x01000000, 0xaf000000, 0x02000005, + 0x00000000, 0x01000000, 0xbb000000, 0x00000005, };
static void test_effect_value_expression(void)