From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/d3d10/effect.c | 30 +++++++ dlls/d3d10/tests/effect.c | 162 ++++++++++++++++++++++++++------------ 2 files changed, 142 insertions(+), 50 deletions(-)
diff --git a/dlls/d3d10/effect.c b/dlls/d3d10/effect.c index ab3b9e47594..9f66645c0a1 100644 --- a/dlls/d3d10/effect.c +++ b/dlls/d3d10/effect.c @@ -467,6 +467,34 @@ static void pres_bine(float **args, unsigned int n, const struct preshader_instr } }
+static void pres_buge(float **args, unsigned int n, const struct preshader_instr *instr) +{ + unsigned int *arg1 = (unsigned int *)args[0]; + unsigned int *arg2 = (unsigned int *)args[1]; + float *retval = args[2]; + unsigned int i; + + for (i = 0; i < instr->comp_count; ++i) + { + unsigned int v = arg1[instr->scalar ? 0 : i] >= arg2[i] ? ~0u : 0; + retval[i] = *(float *)&v; + } +} + +static void pres_bult(float **args, unsigned int n, const struct preshader_instr *instr) +{ + unsigned int *arg1 = (unsigned int *)args[0]; + unsigned int *arg2 = (unsigned int *)args[1]; + float *retval = args[2]; + unsigned int i; + + for (i = 0; i < instr->comp_count; ++i) + { + unsigned int v = arg1[instr->scalar ? 0 : i] < arg2[i] ? ~0u : 0; + retval[i] = *(float *)&v; + } +} + static void pres_udiv(float **args, unsigned int n, const struct preshader_instr *instr) { unsigned int *arg1 = (unsigned int *)args[0]; @@ -604,6 +632,8 @@ static const struct preshader_op_info preshader_ops[] = { 0x211, "bige", pres_bige }, { 0x212, "bieq", pres_bieq }, { 0x213, "bine", pres_bine }, + { 0x214, "buge", pres_buge }, + { 0x215, "bult", pres_bult }, { 0x216, "iadd", pres_iadd }, { 0x21a, "udiv", pres_udiv }, { 0x21d, "imin", pres_imin }, diff --git a/dlls/d3d10/tests/effect.c b/dlls/d3d10/tests/effect.c index e5efa2d5df2..fffe1791fa7 100644 --- a/dlls/d3d10/tests/effect.c +++ b/dlls/d3d10/tests/effect.c @@ -8272,13 +8272,17 @@ technique10 tech SetBlendState( NULL, g_var3.x < g_var3.y ? (g_var3.x >= g_var3.z ? 0 : 1 ) : (g_var3.x != g_var3.z ? g_var3.z == g_var3.w : 2), 0 ); } + pass p21 + { + SetBlendState( NULL, g_var4.x >= g_var4.y ? 0 : (g_var4.y < g_var4.z ? 1 : 2), 0 ); + } } #endif static DWORD fx_test_value_expression[] = { - 0x43425844, 0x0665faf3, 0x70ffa2d0, 0x6f046007, 0x12b30760, 0x00000001, 0x00002bd4, 0x00000001, - 0x00000024, 0x30315846, 0x00002ba8, 0xfeff1001, 0x00000001, 0x00000004, 0x00000001, 0x00000000, - 0x00000000, 0x00000000, 0x00000001, 0x000025b4, 0x00000000, 0x00000000, 0x00000001, 0x00000000, + 0x43425844, 0x483c26a6, 0xa784dafb, 0x921ba9a9, 0x1d2bb725, 0x00000001, 0x00002e7c, 0x00000001, + 0x00000024, 0x30315846, 0x00002e50, 0xfeff1001, 0x00000001, 0x00000004, 0x00000001, 0x00000000, + 0x00000000, 0x00000000, 0x00000001, 0x00002820, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6f6c4724, 0x736c6162, 0x6f6c6600, 0x00347461, 0x0000000d, 0x00000001, 0x00000000, 0x00000010, 0x00000010, 0x00000010, 0x0000210a, 0x61765f67, 0x5f670072, 0x32726176, 0x746e6900, 0x003d0034, 0x00010000, @@ -8581,52 +8585,73 @@ static DWORD fx_test_value_expression[] = 0x00000004, 0x00000001, 0x13000001, 0x00000001, 0x00000000, 0x00000007, 0x0000000c, 0x00000000, 0x00000004, 0x00000002, 0x13000001, 0x00000001, 0x00000000, 0x00000007, 0x0000000c, 0x00000000, 0x00000004, 0x00000003, 0xf0f0f0f0, 0x0f0f0f0f, 0x0000ffff, 0x00000001, 0x00000002, 0x00000000, - 0x00000001, 0x00000002, 0x00000000, 0x00000004, 0x00000040, 0x00000000, 0x00000004, 0xffffffff, - 0x00000000, 0x00000030, 0x00000014, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000036, 0x00000014, 0x00000000, 0x00000010, 0x00000000, 0x00000000, 0x00000000, 0x0000005e, - 0x00000042, 0x00000000, 0x00000020, 0x00000000, 0x00000000, 0x00000000, 0x00000087, 0x0000006b, - 0x00000000, 0x00000030, 0x00000000, 0x00000000, 0x00000000, 0x000000bc, 0x000000a0, 0x00000000, - 0xffffffff, 0x00000001, 0x00000019, 0x00000000, 0x00000006, 0x000000c5, 0x00000000, 0x000001b5, - 0x00000015, 0x00000000, 0x000001ba, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, - 0x000001bd, 0x0000000b, 0x00000000, 0x00000001, 0x00000405, 0x00000002, 0x00000000, 0x00000001, - 0x00000411, 0x0000041d, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00000420, - 0x0000000b, 0x00000000, 0x00000001, 0x00000574, 0x00000002, 0x00000000, 0x00000001, 0x00000580, - 0x0000058c, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x0000058f, 0x0000000b, - 0x00000000, 0x00000001, 0x000007bf, 0x00000002, 0x00000000, 0x00000001, 0x000007cb, 0x000007d7, - 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x000007da, 0x0000000b, 0x00000000, - 0x00000001, 0x00000902, 0x00000002, 0x00000000, 0x00000001, 0x0000090e, 0x0000091a, 0x00000003, - 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x0000091d, 0x0000000b, 0x00000000, 0x00000001, - 0x00000a45, 0x00000002, 0x00000000, 0x00000001, 0x00000a51, 0x00000a5d, 0x00000003, 0x00000000, - 0x0000000a, 0x00000000, 0x00000006, 0x00000a60, 0x0000000b, 0x00000000, 0x00000001, 0x00000b5c, - 0x00000002, 0x00000000, 0x00000001, 0x00000b68, 0x00000b74, 0x00000003, 0x00000000, 0x0000000a, - 0x00000000, 0x00000006, 0x00000b77, 0x0000000b, 0x00000000, 0x00000001, 0x00000cc7, 0x00000002, - 0x00000000, 0x00000001, 0x00000cd3, 0x00000cdf, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, - 0x00000006, 0x00000ce2, 0x0000000b, 0x00000000, 0x00000001, 0x00000dd2, 0x00000002, 0x00000000, - 0x00000001, 0x00000dde, 0x00000dea, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, - 0x00000ded, 0x0000000b, 0x00000000, 0x00000001, 0x00000fe9, 0x00000002, 0x00000000, 0x00000001, - 0x00000ff5, 0x00001001, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00001004, - 0x0000000b, 0x00000000, 0x00000001, 0x00001180, 0x00000002, 0x00000000, 0x00000001, 0x0000118c, - 0x00001198, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x0000119c, 0x0000000b, - 0x00000000, 0x00000001, 0x0000136c, 0x00000002, 0x00000000, 0x00000001, 0x00001378, 0x00001384, - 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00001388, 0x0000000b, 0x00000000, - 0x00000001, 0x00001504, 0x00000002, 0x00000000, 0x00000001, 0x00001510, 0x0000151c, 0x00000003, - 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00001520, 0x0000000b, 0x00000000, 0x00000001, - 0x0000169c, 0x00000002, 0x00000000, 0x00000001, 0x000016a8, 0x000016b4, 0x00000003, 0x00000000, - 0x0000000a, 0x00000000, 0x00000006, 0x000016b8, 0x0000000b, 0x00000000, 0x00000001, 0x00001834, - 0x00000002, 0x00000000, 0x00000001, 0x00001840, 0x0000184c, 0x00000003, 0x00000000, 0x0000000a, - 0x00000000, 0x00000006, 0x00001850, 0x0000000b, 0x00000000, 0x00000001, 0x000019cc, 0x00000002, - 0x00000000, 0x00000001, 0x000019d8, 0x000019e4, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, - 0x00000006, 0x000019e8, 0x0000000b, 0x00000000, 0x00000001, 0x00001b38, 0x00000002, 0x00000000, - 0x00000001, 0x00001b44, 0x00001b50, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, - 0x00001b54, 0x0000000b, 0x00000000, 0x00000001, 0x00001ca4, 0x00000002, 0x00000000, 0x00000001, - 0x00001cb0, 0x00001cbc, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00001cc0, - 0x0000000b, 0x00000000, 0x00000001, 0x00001e10, 0x00000002, 0x00000000, 0x00000001, 0x00001e1c, - 0x00001e28, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00001e2c, 0x0000000b, - 0x00000000, 0x00000001, 0x00001fac, 0x00000002, 0x00000000, 0x00000001, 0x00001fb8, 0x00001fc4, - 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00001fc8, 0x0000000b, 0x00000000, - 0x00000001, 0x0000229c, 0x00000002, 0x00000000, 0x00000001, 0x000022a8, 0x000022b4, 0x00000003, - 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x000022b8, 0x0000000b, 0x00000000, 0x00000001, - 0x0000259c, 0x00000002, 0x00000000, 0x00000001, 0x000025a8, + 0x00000001, 0x00000002, 0x00000000, 0x00313270, 0x0000024c, 0x43425844, 0x2c53dbe2, 0x46a9f629, + 0xb72e1a1a, 0xf1302ff3, 0x00000001, 0x0000024c, 0x00000003, 0x0000002c, 0x000000a8, 0x000000c4, + 0x42415443, 0x00000074, 0x0000001c, 0x0000004b, 0x46580400, 0x00000001, 0x0000001c, 0x00000100, + 0x00000048, 0x00000030, 0x00000002, 0x00000001, 0x00000038, 0x00000000, 0x61765f67, 0xab003472, + 0x00020001, 0x00040001, 0x00000001, 0x00000000, 0x4d007874, 0x6f726369, 0x74666f73, 0x29522820, + 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970, 0x30312072, 0xab00312e, 0x34494c43, + 0x00000014, 0x00000004, 0x3f800000, 0x40000000, 0x00000000, 0x00000000, 0x434c5846, 0x00000180, + 0x00000007, 0x21500001, 0x00000002, 0x00000000, 0x00000002, 0x00000001, 0x00000000, 0x00000002, + 0x00000002, 0x00000000, 0x00000007, 0x00000000, 0x30100001, 0x00000003, 0x00000000, 0x00000007, + 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000001, 0x00000001, 0x00000000, + 0x00000007, 0x00000004, 0x21400001, 0x00000002, 0x00000000, 0x00000002, 0x00000000, 0x00000000, + 0x00000002, 0x00000001, 0x00000000, 0x00000007, 0x00000000, 0x30100001, 0x00000003, 0x00000000, + 0x00000007, 0x00000000, 0x00000000, 0x00000001, 0x00000002, 0x00000000, 0x00000007, 0x00000004, + 0x00000000, 0x00000004, 0x00000000, 0x30100001, 0x00000003, 0x00000000, 0x00000007, 0x00000000, + 0x00000000, 0x00000001, 0x00000002, 0x00000000, 0x00000007, 0x00000004, 0x00000000, 0x00000004, + 0x00000001, 0x30100001, 0x00000003, 0x00000000, 0x00000007, 0x00000000, 0x00000000, 0x00000001, + 0x00000002, 0x00000000, 0x00000007, 0x00000004, 0x00000000, 0x00000004, 0x00000002, 0x30100001, + 0x00000003, 0x00000000, 0x00000007, 0x00000000, 0x00000000, 0x00000001, 0x00000002, 0x00000000, + 0x00000007, 0x00000004, 0x00000000, 0x00000004, 0x00000003, 0xf0f0f0f0, 0x0f0f0f0f, 0x0000ffff, + 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000002, 0x00000000, 0x00000004, 0x00000040, + 0x00000000, 0x00000004, 0xffffffff, 0x00000000, 0x00000030, 0x00000014, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000036, 0x00000014, 0x00000000, 0x00000010, 0x00000000, + 0x00000000, 0x00000000, 0x0000005e, 0x00000042, 0x00000000, 0x00000020, 0x00000000, 0x00000000, + 0x00000000, 0x00000087, 0x0000006b, 0x00000000, 0x00000030, 0x00000000, 0x00000000, 0x00000000, + 0x000000bc, 0x000000a0, 0x00000000, 0xffffffff, 0x00000001, 0x00000019, 0x00000000, 0x00000006, + 0x000000c5, 0x00000000, 0x000001b5, 0x00000016, 0x00000000, 0x000001ba, 0x00000003, 0x00000000, + 0x0000000a, 0x00000000, 0x00000006, 0x000001bd, 0x0000000b, 0x00000000, 0x00000001, 0x00000405, + 0x00000002, 0x00000000, 0x00000001, 0x00000411, 0x0000041d, 0x00000003, 0x00000000, 0x0000000a, + 0x00000000, 0x00000006, 0x00000420, 0x0000000b, 0x00000000, 0x00000001, 0x00000574, 0x00000002, + 0x00000000, 0x00000001, 0x00000580, 0x0000058c, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, + 0x00000006, 0x0000058f, 0x0000000b, 0x00000000, 0x00000001, 0x000007bf, 0x00000002, 0x00000000, + 0x00000001, 0x000007cb, 0x000007d7, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, + 0x000007da, 0x0000000b, 0x00000000, 0x00000001, 0x00000902, 0x00000002, 0x00000000, 0x00000001, + 0x0000090e, 0x0000091a, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x0000091d, + 0x0000000b, 0x00000000, 0x00000001, 0x00000a45, 0x00000002, 0x00000000, 0x00000001, 0x00000a51, + 0x00000a5d, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00000a60, 0x0000000b, + 0x00000000, 0x00000001, 0x00000b5c, 0x00000002, 0x00000000, 0x00000001, 0x00000b68, 0x00000b74, + 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00000b77, 0x0000000b, 0x00000000, + 0x00000001, 0x00000cc7, 0x00000002, 0x00000000, 0x00000001, 0x00000cd3, 0x00000cdf, 0x00000003, + 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00000ce2, 0x0000000b, 0x00000000, 0x00000001, + 0x00000dd2, 0x00000002, 0x00000000, 0x00000001, 0x00000dde, 0x00000dea, 0x00000003, 0x00000000, + 0x0000000a, 0x00000000, 0x00000006, 0x00000ded, 0x0000000b, 0x00000000, 0x00000001, 0x00000fe9, + 0x00000002, 0x00000000, 0x00000001, 0x00000ff5, 0x00001001, 0x00000003, 0x00000000, 0x0000000a, + 0x00000000, 0x00000006, 0x00001004, 0x0000000b, 0x00000000, 0x00000001, 0x00001180, 0x00000002, + 0x00000000, 0x00000001, 0x0000118c, 0x00001198, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, + 0x00000006, 0x0000119c, 0x0000000b, 0x00000000, 0x00000001, 0x0000136c, 0x00000002, 0x00000000, + 0x00000001, 0x00001378, 0x00001384, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, + 0x00001388, 0x0000000b, 0x00000000, 0x00000001, 0x00001504, 0x00000002, 0x00000000, 0x00000001, + 0x00001510, 0x0000151c, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00001520, + 0x0000000b, 0x00000000, 0x00000001, 0x0000169c, 0x00000002, 0x00000000, 0x00000001, 0x000016a8, + 0x000016b4, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x000016b8, 0x0000000b, + 0x00000000, 0x00000001, 0x00001834, 0x00000002, 0x00000000, 0x00000001, 0x00001840, 0x0000184c, + 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00001850, 0x0000000b, 0x00000000, + 0x00000001, 0x000019cc, 0x00000002, 0x00000000, 0x00000001, 0x000019d8, 0x000019e4, 0x00000003, + 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x000019e8, 0x0000000b, 0x00000000, 0x00000001, + 0x00001b38, 0x00000002, 0x00000000, 0x00000001, 0x00001b44, 0x00001b50, 0x00000003, 0x00000000, + 0x0000000a, 0x00000000, 0x00000006, 0x00001b54, 0x0000000b, 0x00000000, 0x00000001, 0x00001ca4, + 0x00000002, 0x00000000, 0x00000001, 0x00001cb0, 0x00001cbc, 0x00000003, 0x00000000, 0x0000000a, + 0x00000000, 0x00000006, 0x00001cc0, 0x0000000b, 0x00000000, 0x00000001, 0x00001e10, 0x00000002, + 0x00000000, 0x00000001, 0x00001e1c, 0x00001e28, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, + 0x00000006, 0x00001e2c, 0x0000000b, 0x00000000, 0x00000001, 0x00001fac, 0x00000002, 0x00000000, + 0x00000001, 0x00001fb8, 0x00001fc4, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, + 0x00001fc8, 0x0000000b, 0x00000000, 0x00000001, 0x0000229c, 0x00000002, 0x00000000, 0x00000001, + 0x000022a8, 0x000022b4, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x000022b8, + 0x0000000b, 0x00000000, 0x00000001, 0x0000259c, 0x00000002, 0x00000000, 0x00000001, 0x000025a8, + 0x000025b4, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x000025b8, 0x0000000b, + 0x00000000, 0x00000001, 0x00002808, 0x00000002, 0x00000000, 0x00000001, 0x00002814, };
static float get_frc(float v) @@ -8647,6 +8672,7 @@ static void test_effect_value_expression(void) ID3D10Effect *effect; ID3D10Device *device; UINT sample_mask; + unsigned int idx; ULONG refcount; HRESULT hr; int i[4]; @@ -9048,7 +9074,7 @@ static void test_effect_value_expression(void) ok(blend_factor[3] == 2.0f, "Got unexpected blend_factor[3] %.8e.\n", blend_factor[3]); ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask);
- /* Integer comparison */ + /* Signed integer comparison. */ pass = t->lpVtbl->GetPassByName(t, "p20"); ok(pass->lpVtbl->IsValid(pass), "Expected valid pass.\n");
@@ -9088,6 +9114,42 @@ static void test_effect_value_expression(void) ok(blend_factor[3] == 2.0f, "Got unexpected blend_factor[3] %.8e.\n", blend_factor[3]); ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask);
+ /* Unsigned integer comparison. */ + pass = t->lpVtbl->GetPassByName(t, "p21"); + ok(pass->lpVtbl->IsValid(pass), "Expected valid pass.\n"); + + i[0] = 6; + i[1] = 5; + i[2] = 7; + i[3] = 1; + hr = g_var4->lpVtbl->SetIntVector(g_var4, i); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = pass->lpVtbl->Apply(pass, 0); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + + ID3D10Device_OMGetBlendState(device, &blend_state, blend_factor, &sample_mask); + ok(!blend_state, "Unexpected blend state %p.\n", blend_state); + for (idx = 0; idx < ARRAY_SIZE(blend_factor); ++idx) + ok(blend_factor[idx] == 0.0f, "Got unexpected blend_factor[%u] %.8e.\n", idx, blend_factor[idx]); + ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask); + + i[0] = 2; + i[1] = 5; + i[2] = 7; + i[3] = 1; + hr = g_var4->lpVtbl->SetIntVector(g_var4, i); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = pass->lpVtbl->Apply(pass, 0); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + + ID3D10Device_OMGetBlendState(device, &blend_state, blend_factor, &sample_mask); + ok(!blend_state, "Unexpected blend state %p.\n", blend_state); + for (idx = 0; idx < ARRAY_SIZE(blend_factor); ++idx) + ok(blend_factor[idx] == 1.0f, "Got unexpected blend_factor[%u] %.8e.\n", idx, blend_factor[idx]); + ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask); + effect->lpVtbl->Release(effect);
refcount = ID3D10Device_Release(device);
From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/d3d10/tests/effect.c | 94 ++++++++++++++------------------------- 1 file changed, 34 insertions(+), 60 deletions(-)
diff --git a/dlls/d3d10/tests/effect.c b/dlls/d3d10/tests/effect.c index fffe1791fa7..01e2ff3c9ab 100644 --- a/dlls/d3d10/tests/effect.c +++ b/dlls/d3d10/tests/effect.c @@ -4814,6 +4814,7 @@ static void test_effect_state_group_defaults(void) ID3D10EffectPass *pass; ID3D10Effect *effect; ID3D10Device *device; + unsigned int idx; ULONG refcount; HRESULT hr;
@@ -4851,10 +4852,8 @@ static void test_effect_state_group_defaults(void) ok(sampler_desc.MaxAnisotropy == 16, "Got unexpected MaxAnisotropy %#x.\n", sampler_desc.MaxAnisotropy); ok(sampler_desc.ComparisonFunc == D3D10_COMPARISON_NEVER, "Got unexpected ComparisonFunc %#x.\n", sampler_desc.ComparisonFunc); - ok(sampler_desc.BorderColor[0] == 0.0f, "Got unexpected BorderColor[0] %.8e.\n", sampler_desc.BorderColor[0]); - ok(sampler_desc.BorderColor[1] == 0.0f, "Got unexpected BorderColor[1] %.8e.\n", sampler_desc.BorderColor[1]); - ok(sampler_desc.BorderColor[2] == 0.0f, "Got unexpected BorderColor[2] %.8e.\n", sampler_desc.BorderColor[2]); - ok(sampler_desc.BorderColor[3] == 0.0f, "Got unexpected BorderColor[3] %.8e.\n", sampler_desc.BorderColor[3]); + for (idx = 0; idx < ARRAY_SIZE(sampler_desc.BorderColor); ++idx) + ok(sampler_desc.BorderColor[idx] == 0.0f, "Got unexpected BorderColor[%u] %.8e.\n", idx, sampler_desc.BorderColor[idx]); ok(sampler_desc.MinLOD == 0.0f, "Got unexpected MinLOD %.8e.\n", sampler_desc.MinLOD); ok(sampler_desc.MaxLOD == FLT_MAX, "Got unexpected MaxLOD %.8e.\n", sampler_desc.MaxLOD);
@@ -4938,6 +4937,8 @@ static void test_effect_state_group_defaults(void) ok(pass_desc.BlendFactor[1] == 0.0f, "Got unexpected BlendFactor[1] %.8e.\n", pass_desc.BlendFactor[1]); ok(pass_desc.BlendFactor[2] == 0.0f, "Got unexpected BlendFactor[2] %.8e.\n", pass_desc.BlendFactor[2]); ok(pass_desc.BlendFactor[3] == 0.0f, "Got unexpected BlendFactor[3] %.8e.\n", pass_desc.BlendFactor[3]); + for (idx = 0; idx < ARRAY_SIZE(pass_desc.BlendFactor); ++idx) + ok(pass_desc.BlendFactor[idx] == 0.0f, "Got unexpected BlendFactor[%u] %.8e.\n", idx, pass_desc.BlendFactor[idx]);
effect->lpVtbl->Release(effect);
@@ -7828,6 +7829,7 @@ static void test_effect_dynamic_numeric_field(void) float blend_factor[4]; ID3D10Effect *effect; ID3D10Device *device; + unsigned int idx; ULONG refcount; HRESULT hr;
@@ -7914,10 +7916,8 @@ static void test_effect_dynamic_numeric_field(void) ID3D10Device_OMGetDepthStencilState(device, &ds_state, &stencil_ref); ok(stencil_ref == 0x4, "Unexpected stencil ref value %#x.\n", stencil_ref); ID3D10Device_OMGetBlendState(device, &blend_state, blend_factor, &sample_mask); - ok(blend_factor[0] == 0.123f, "Got unexpected blend_factor[0] %.8e.\n", blend_factor[0]); - ok(blend_factor[1] == 0.123f, "Got unexpected blend_factor[1] %.8e.\n", blend_factor[1]); - ok(blend_factor[2] == 0.123f, "Got unexpected blend_factor[2] %.8e.\n", blend_factor[2]); - ok(blend_factor[3] == 0.123f, "Got unexpected blend_factor[3] %.8e.\n", blend_factor[3]); + for (idx = 0; idx < ARRAY_SIZE(blend_factor); ++idx) + ok(blend_factor[idx] == 0.123f, "Got unexpected blend_factor[%u] %.8e.\n", idx, blend_factor[idx]); ok(!sample_mask, "Unexpected sample mask %#x.\n", sample_mask);
effect->lpVtbl->Release(effect); @@ -8711,10 +8711,8 @@ static void test_effect_value_expression(void)
ID3D10Device_OMGetBlendState(device, &blend_state, blend_factor, &sample_mask); ok(!blend_state, "Unexpected blend state %p.\n", blend_state); - ok(blend_factor[0] == 0.0f, "Got unexpected blend_factor[0] %.8e.\n", blend_factor[0]); - ok(blend_factor[1] == 0.0f, "Got unexpected blend_factor[1] %.8e.\n", blend_factor[1]); - ok(blend_factor[2] == 0.0f, "Got unexpected blend_factor[2] %.8e.\n", blend_factor[2]); - ok(blend_factor[3] == 0.0f, "Got unexpected blend_factor[3] %.8e.\n", blend_factor[3]); + for (idx = 0; idx < ARRAY_SIZE(blend_factor); ++idx) + ok(blend_factor[idx] == 0.0f, "Got unexpected blend_factor[%u] %.8e.\n", idx, blend_factor[idx]); ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask);
f[0] = 1.0f; f[1] = 2.0f; f[2] = 3.0f; f[3] = 4.0f; @@ -8800,10 +8798,8 @@ static void test_effect_value_expression(void)
ID3D10Device_OMGetBlendState(device, &blend_state, blend_factor, &sample_mask); ok(!blend_state, "Unexpected blend state %p.\n", blend_state); - ok(blend_factor[0] == get_frc(f[0]), "Got unexpected blend_factor[0] %.8e.\n", blend_factor[0]); - ok(blend_factor[1] == get_frc(f[1]), "Got unexpected blend_factor[1] %.8e.\n", blend_factor[1]); - ok(blend_factor[2] == get_frc(f[2]), "Got unexpected blend_factor[2] %.8e.\n", blend_factor[2]); - ok(blend_factor[3] == get_frc(f[3]), "Got unexpected blend_factor[3] %.8e.\n", blend_factor[3]); + for (idx = 0; idx < ARRAY_SIZE(blend_factor); ++idx) + ok(blend_factor[idx] == get_frc(f[idx]), "Got unexpected blend_factor[%u] %.8e.\n", idx, blend_factor[idx]); ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask);
/* Mutable state objects. */ @@ -8854,10 +8850,8 @@ static void test_effect_value_expression(void)
ID3D10Device_OMGetBlendState(device, &blend_state, blend_factor, &sample_mask); ok(!blend_state, "Unexpected blend state %p.\n", blend_state); - ok(blend_factor[0] == 0.3f, "Got unexpected blend_factor[0] %.8e.\n", blend_factor[0]); - ok(blend_factor[1] == 0.3f, "Got unexpected blend_factor[1] %.8e.\n", blend_factor[1]); - ok(blend_factor[2] == 0.3f, "Got unexpected blend_factor[2] %.8e.\n", blend_factor[2]); - ok(blend_factor[3] == 0.3f, "Got unexpected blend_factor[3] %.8e.\n", blend_factor[3]); + for (idx = 0; idx < ARRAY_SIZE(blend_factor); ++idx) + ok(blend_factor[idx] == 0.3f, "Got unexpected blend_factor[%u] %.8e.\n", idx, blend_factor[idx]); ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask);
/* udiv */ @@ -8874,10 +8868,8 @@ static void test_effect_value_expression(void)
ID3D10Device_OMGetBlendState(device, &blend_state, blend_factor, &sample_mask); ok(!blend_state, "Unexpected blend state %p.\n", blend_state); - ok(blend_factor[0] == UINT_MAX, "Got unexpected blend_factor[0] %.8e.\n", blend_factor[0]); - ok(blend_factor[1] == UINT_MAX, "Got unexpected blend_factor[1] %.8e.\n", blend_factor[1]); - ok(blend_factor[2] == UINT_MAX, "Got unexpected blend_factor[2] %.8e.\n", blend_factor[2]); - ok(blend_factor[3] == UINT_MAX, "Got unexpected blend_factor[3] %.8e.\n", blend_factor[3]); + for (idx = 0; idx < ARRAY_SIZE(blend_factor); ++idx) + ok(blend_factor[idx] == UINT_MAX, "Got unexpected blend_factor[%u] %.8e.\n", idx, blend_factor[idx]); ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask);
/* movc */ @@ -8895,10 +8887,8 @@ static void test_effect_value_expression(void)
ID3D10Device_OMGetBlendState(device, &blend_state, blend_factor, &sample_mask); ok(!blend_state, "Unexpected blend state %p.\n", blend_state); - ok(blend_factor[0] == 2.2f, "Got unexpected blend_factor[0] %.8e.\n", blend_factor[0]); - ok(blend_factor[1] == 2.2f, "Got unexpected blend_factor[1] %.8e.\n", blend_factor[1]); - ok(blend_factor[2] == 2.2f, "Got unexpected blend_factor[2] %.8e.\n", blend_factor[2]); - ok(blend_factor[3] == 2.2f, "Got unexpected blend_factor[3] %.8e.\n", blend_factor[3]); + for (idx = 0; idx < ARRAY_SIZE(blend_factor); ++idx) + ok(blend_factor[idx] == 2.2f, "Got unexpected blend_factor[%u] %.8e.\n", idx, blend_factor[idx]); ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask);
f[0] = 0.1f; @@ -8912,10 +8902,8 @@ static void test_effect_value_expression(void)
ID3D10Device_OMGetBlendState(device, &blend_state, blend_factor, &sample_mask); ok(!blend_state, "Unexpected blend state %p.\n", blend_state); - ok(blend_factor[0] == 0.1f, "Got unexpected blend_factor[0] %.8e.\n", blend_factor[0]); - ok(blend_factor[1] == 0.1f, "Got unexpected blend_factor[1] %.8e.\n", blend_factor[1]); - ok(blend_factor[2] == 0.1f, "Got unexpected blend_factor[2] %.8e.\n", blend_factor[2]); - ok(blend_factor[3] == 0.1f, "Got unexpected blend_factor[3] %.8e.\n", blend_factor[3]); + for (idx = 0; idx < ARRAY_SIZE(blend_factor); ++idx) + ok(blend_factor[idx] == 0.1f, "Got unexpected blend_factor[%u] %.8e.\n", idx, blend_factor[idx]); ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask);
/* umin/umax */ @@ -8932,10 +8920,8 @@ static void test_effect_value_expression(void)
ID3D10Device_OMGetBlendState(device, &blend_state, blend_factor, &sample_mask); ok(!blend_state, "Unexpected blend state %p.\n", blend_state); - ok(blend_factor[0] == 2.0f, "Got unexpected blend_factor[0] %.8e.\n", blend_factor[0]); - ok(blend_factor[1] == 2.0f, "Got unexpected blend_factor[1] %.8e.\n", blend_factor[1]); - ok(blend_factor[2] == 2.0f, "Got unexpected blend_factor[2] %.8e.\n", blend_factor[2]); - ok(blend_factor[3] == 2.0f, "Got unexpected blend_factor[3] %.8e.\n", blend_factor[3]); + for (idx = 0; idx < ARRAY_SIZE(blend_factor); ++idx) + ok(blend_factor[idx] == 2.0f, "Got unexpected blend_factor[%u] %.8e.\n", idx, blend_factor[idx]); ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask);
pass = t->lpVtbl->GetPassByName(t, "p12"); @@ -8951,10 +8937,8 @@ static void test_effect_value_expression(void)
ID3D10Device_OMGetBlendState(device, &blend_state, blend_factor, &sample_mask); ok(!blend_state, "Unexpected blend state %p.\n", blend_state); - ok(blend_factor[0] == 5.0f, "Got unexpected blend_factor[0] %.8e.\n", blend_factor[0]); - ok(blend_factor[1] == 5.0f, "Got unexpected blend_factor[1] %.8e.\n", blend_factor[1]); - ok(blend_factor[2] == 5.0f, "Got unexpected blend_factor[2] %.8e.\n", blend_factor[2]); - ok(blend_factor[3] == 5.0f, "Got unexpected blend_factor[3] %.8e.\n", blend_factor[3]); + for (idx = 0; idx < ARRAY_SIZE(blend_factor); ++idx) + ok(blend_factor[idx] == 5.0f, "Got unexpected blend_factor[%u] %.8e.\n", idx, blend_factor[idx]); ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask);
/* imin */ @@ -8971,10 +8955,8 @@ static void test_effect_value_expression(void)
ID3D10Device_OMGetBlendState(device, &blend_state, blend_factor, &sample_mask); ok(!blend_state, "Unexpected blend state %p.\n", blend_state); - ok(blend_factor[0] == 3.0f, "Got unexpected blend_factor[0] %.8e.\n", blend_factor[0]); - ok(blend_factor[1] == 3.0f, "Got unexpected blend_factor[1] %.8e.\n", blend_factor[1]); - ok(blend_factor[2] == 3.0f, "Got unexpected blend_factor[2] %.8e.\n", blend_factor[2]); - ok(blend_factor[3] == 3.0f, "Got unexpected blend_factor[3] %.8e.\n", blend_factor[3]); + for (idx = 0; idx < ARRAY_SIZE(blend_factor); ++idx) + ok(blend_factor[idx] == 3.0f, "Got unexpected blend_factor[%u] %.8e.\n", idx, blend_factor[idx]); ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask);
/* iadd */ @@ -8991,10 +8973,8 @@ static void test_effect_value_expression(void)
ID3D10Device_OMGetBlendState(device, &blend_state, blend_factor, &sample_mask); ok(!blend_state, "Unexpected blend state %p.\n", blend_state); - ok(blend_factor[0] == 8.0f, "Got unexpected blend_factor[0] %.8e.\n", blend_factor[0]); - ok(blend_factor[1] == 8.0f, "Got unexpected blend_factor[1] %.8e.\n", blend_factor[1]); - ok(blend_factor[2] == 8.0f, "Got unexpected blend_factor[2] %.8e.\n", blend_factor[2]); - ok(blend_factor[3] == 8.0f, "Got unexpected blend_factor[3] %.8e.\n", blend_factor[3]); + for (idx = 0; idx < ARRAY_SIZE(blend_factor); ++idx) + ok(blend_factor[idx] == 8.0f, "Got unexpected blend_factor[%u] %.8e.\n", idx, blend_factor[idx]); ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask);
/* asin */ @@ -9068,10 +9048,8 @@ static void test_effect_value_expression(void)
ID3D10Device_OMGetBlendState(device, &blend_state, blend_factor, &sample_mask); ok(!blend_state, "Unexpected blend state %p.\n", blend_state); - ok(blend_factor[0] == 2.0f, "Got unexpected blend_factor[0] %.8e.\n", blend_factor[0]); - ok(blend_factor[1] == 2.0f, "Got unexpected blend_factor[1] %.8e.\n", blend_factor[1]); - ok(blend_factor[2] == 2.0f, "Got unexpected blend_factor[2] %.8e.\n", blend_factor[2]); - ok(blend_factor[3] == 2.0f, "Got unexpected blend_factor[3] %.8e.\n", blend_factor[3]); + for (idx = 0; idx < ARRAY_SIZE(blend_factor); ++idx) + ok(blend_factor[idx] == 2.0f, "Got unexpected blend_factor[%u] %.8e.\n", idx, blend_factor[idx]); ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask);
/* Signed integer comparison. */ @@ -9090,10 +9068,8 @@ static void test_effect_value_expression(void)
ID3D10Device_OMGetBlendState(device, &blend_state, blend_factor, &sample_mask); ok(!blend_state, "Unexpected blend state %p.\n", blend_state); - ok(blend_factor[0] == 1.0f, "Got unexpected blend_factor[0] %.8e.\n", blend_factor[0]); - ok(blend_factor[1] == 1.0f, "Got unexpected blend_factor[1] %.8e.\n", blend_factor[1]); - ok(blend_factor[2] == 1.0f, "Got unexpected blend_factor[2] %.8e.\n", blend_factor[2]); - ok(blend_factor[3] == 1.0f, "Got unexpected blend_factor[3] %.8e.\n", blend_factor[3]); + for (idx = 0; idx < ARRAY_SIZE(blend_factor); ++idx) + ok(blend_factor[idx] == 1.0f, "Got unexpected blend_factor[%u] %.8e.\n", idx, blend_factor[idx]); ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask);
i[0] = 2; @@ -9108,10 +9084,8 @@ static void test_effect_value_expression(void)
ID3D10Device_OMGetBlendState(device, &blend_state, blend_factor, &sample_mask); ok(!blend_state, "Unexpected blend state %p.\n", blend_state); - ok(blend_factor[0] == 2.0f, "Got unexpected blend_factor[0] %.8e.\n", blend_factor[0]); - ok(blend_factor[1] == 2.0f, "Got unexpected blend_factor[1] %.8e.\n", blend_factor[1]); - ok(blend_factor[2] == 2.0f, "Got unexpected blend_factor[2] %.8e.\n", blend_factor[2]); - ok(blend_factor[3] == 2.0f, "Got unexpected blend_factor[3] %.8e.\n", blend_factor[3]); + for (idx = 0; idx < ARRAY_SIZE(blend_factor); ++idx) + ok(blend_factor[idx] == 2.0f, "Got unexpected blend_factor[%u] %.8e.\n", idx, blend_factor[idx]); ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask);
/* Unsigned integer comparison. */
From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/d3d10/effect.c | 11 +++ dlls/d3d10/tests/effect.c | 173 +++++++++++++++++++++++++++----------- 2 files changed, 133 insertions(+), 51 deletions(-)
diff --git a/dlls/d3d10/effect.c b/dlls/d3d10/effect.c index 9f66645c0a1..c8de69917b2 100644 --- a/dlls/d3d10/effect.c +++ b/dlls/d3d10/effect.c @@ -343,6 +343,16 @@ static void pres_ftob(float **args, unsigned int n, const struct preshader_instr } }
+static void pres_ceil(float **args, unsigned int n, const struct preshader_instr *instr) +{ + float value = ceilf(args[0][0]); + float *retval = args[1]; + unsigned int i; + + for (i = 0; i < instr->comp_count; ++i) + retval[i] = value; +} + static void pres_min(float **args, unsigned int n, const struct preshader_instr *instr) { float *retval = args[2]; @@ -622,6 +632,7 @@ static const struct preshader_op_info preshader_ops[] = { 0x131, "utof", pres_utof }, { 0x133, "ftou", pres_ftou }, { 0x137, "ftob", pres_ftob }, + { 0x13a, "ceil", pres_ceil }, { 0x200, "min", pres_min }, { 0x201, "max", pres_max }, { 0x204, "add", pres_add }, diff --git a/dlls/d3d10/tests/effect.c b/dlls/d3d10/tests/effect.c index 01e2ff3c9ab..44d96537d7a 100644 --- a/dlls/d3d10/tests/effect.c +++ b/dlls/d3d10/tests/effect.c @@ -8276,13 +8276,17 @@ technique10 tech { SetBlendState( NULL, g_var4.x >= g_var4.y ? 0 : (g_var4.y < g_var4.z ? 1 : 2), 0 ); } + pass p22 + { + SetBlendState( NULL, ceil(g_var), 0 ); + } } #endif static DWORD fx_test_value_expression[] = { - 0x43425844, 0x483c26a6, 0xa784dafb, 0x921ba9a9, 0x1d2bb725, 0x00000001, 0x00002e7c, 0x00000001, - 0x00000024, 0x30315846, 0x00002e50, 0xfeff1001, 0x00000001, 0x00000004, 0x00000001, 0x00000000, - 0x00000000, 0x00000000, 0x00000001, 0x00002820, 0x00000000, 0x00000000, 0x00000001, 0x00000000, + 0x43425844, 0x8fe0502a, 0x2ff204ae, 0xca809c53, 0x4027206e, 0x00000001, 0x00002fc4, 0x00000001, + 0x00000024, 0x30315846, 0x00002f98, 0xfeff1001, 0x00000001, 0x00000004, 0x00000001, 0x00000000, + 0x00000000, 0x00000000, 0x00000001, 0x0000292c, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6f6c4724, 0x736c6162, 0x6f6c6600, 0x00347461, 0x0000000d, 0x00000001, 0x00000000, 0x00000010, 0x00000010, 0x00000010, 0x0000210a, 0x61765f67, 0x5f670072, 0x32726176, 0x746e6900, 0x003d0034, 0x00010000, @@ -8604,54 +8608,65 @@ static DWORD fx_test_value_expression[] = 0x00000002, 0x00000000, 0x00000007, 0x00000004, 0x00000000, 0x00000004, 0x00000002, 0x30100001, 0x00000003, 0x00000000, 0x00000007, 0x00000000, 0x00000000, 0x00000001, 0x00000002, 0x00000000, 0x00000007, 0x00000004, 0x00000000, 0x00000004, 0x00000003, 0xf0f0f0f0, 0x0f0f0f0f, 0x0000ffff, - 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000002, 0x00000000, 0x00000004, 0x00000040, - 0x00000000, 0x00000004, 0xffffffff, 0x00000000, 0x00000030, 0x00000014, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000036, 0x00000014, 0x00000000, 0x00000010, 0x00000000, - 0x00000000, 0x00000000, 0x0000005e, 0x00000042, 0x00000000, 0x00000020, 0x00000000, 0x00000000, - 0x00000000, 0x00000087, 0x0000006b, 0x00000000, 0x00000030, 0x00000000, 0x00000000, 0x00000000, - 0x000000bc, 0x000000a0, 0x00000000, 0xffffffff, 0x00000001, 0x00000019, 0x00000000, 0x00000006, - 0x000000c5, 0x00000000, 0x000001b5, 0x00000016, 0x00000000, 0x000001ba, 0x00000003, 0x00000000, - 0x0000000a, 0x00000000, 0x00000006, 0x000001bd, 0x0000000b, 0x00000000, 0x00000001, 0x00000405, - 0x00000002, 0x00000000, 0x00000001, 0x00000411, 0x0000041d, 0x00000003, 0x00000000, 0x0000000a, - 0x00000000, 0x00000006, 0x00000420, 0x0000000b, 0x00000000, 0x00000001, 0x00000574, 0x00000002, - 0x00000000, 0x00000001, 0x00000580, 0x0000058c, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, - 0x00000006, 0x0000058f, 0x0000000b, 0x00000000, 0x00000001, 0x000007bf, 0x00000002, 0x00000000, - 0x00000001, 0x000007cb, 0x000007d7, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, - 0x000007da, 0x0000000b, 0x00000000, 0x00000001, 0x00000902, 0x00000002, 0x00000000, 0x00000001, - 0x0000090e, 0x0000091a, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x0000091d, - 0x0000000b, 0x00000000, 0x00000001, 0x00000a45, 0x00000002, 0x00000000, 0x00000001, 0x00000a51, - 0x00000a5d, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00000a60, 0x0000000b, - 0x00000000, 0x00000001, 0x00000b5c, 0x00000002, 0x00000000, 0x00000001, 0x00000b68, 0x00000b74, - 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00000b77, 0x0000000b, 0x00000000, - 0x00000001, 0x00000cc7, 0x00000002, 0x00000000, 0x00000001, 0x00000cd3, 0x00000cdf, 0x00000003, - 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00000ce2, 0x0000000b, 0x00000000, 0x00000001, - 0x00000dd2, 0x00000002, 0x00000000, 0x00000001, 0x00000dde, 0x00000dea, 0x00000003, 0x00000000, - 0x0000000a, 0x00000000, 0x00000006, 0x00000ded, 0x0000000b, 0x00000000, 0x00000001, 0x00000fe9, - 0x00000002, 0x00000000, 0x00000001, 0x00000ff5, 0x00001001, 0x00000003, 0x00000000, 0x0000000a, - 0x00000000, 0x00000006, 0x00001004, 0x0000000b, 0x00000000, 0x00000001, 0x00001180, 0x00000002, - 0x00000000, 0x00000001, 0x0000118c, 0x00001198, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, - 0x00000006, 0x0000119c, 0x0000000b, 0x00000000, 0x00000001, 0x0000136c, 0x00000002, 0x00000000, - 0x00000001, 0x00001378, 0x00001384, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, - 0x00001388, 0x0000000b, 0x00000000, 0x00000001, 0x00001504, 0x00000002, 0x00000000, 0x00000001, - 0x00001510, 0x0000151c, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00001520, - 0x0000000b, 0x00000000, 0x00000001, 0x0000169c, 0x00000002, 0x00000000, 0x00000001, 0x000016a8, - 0x000016b4, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x000016b8, 0x0000000b, - 0x00000000, 0x00000001, 0x00001834, 0x00000002, 0x00000000, 0x00000001, 0x00001840, 0x0000184c, - 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00001850, 0x0000000b, 0x00000000, - 0x00000001, 0x000019cc, 0x00000002, 0x00000000, 0x00000001, 0x000019d8, 0x000019e4, 0x00000003, - 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x000019e8, 0x0000000b, 0x00000000, 0x00000001, - 0x00001b38, 0x00000002, 0x00000000, 0x00000001, 0x00001b44, 0x00001b50, 0x00000003, 0x00000000, - 0x0000000a, 0x00000000, 0x00000006, 0x00001b54, 0x0000000b, 0x00000000, 0x00000001, 0x00001ca4, - 0x00000002, 0x00000000, 0x00000001, 0x00001cb0, 0x00001cbc, 0x00000003, 0x00000000, 0x0000000a, - 0x00000000, 0x00000006, 0x00001cc0, 0x0000000b, 0x00000000, 0x00000001, 0x00001e10, 0x00000002, - 0x00000000, 0x00000001, 0x00001e1c, 0x00001e28, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, - 0x00000006, 0x00001e2c, 0x0000000b, 0x00000000, 0x00000001, 0x00001fac, 0x00000002, 0x00000000, - 0x00000001, 0x00001fb8, 0x00001fc4, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, - 0x00001fc8, 0x0000000b, 0x00000000, 0x00000001, 0x0000229c, 0x00000002, 0x00000000, 0x00000001, - 0x000022a8, 0x000022b4, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x000022b8, - 0x0000000b, 0x00000000, 0x00000001, 0x0000259c, 0x00000002, 0x00000000, 0x00000001, 0x000025a8, - 0x000025b4, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x000025b8, 0x0000000b, - 0x00000000, 0x00000001, 0x00002808, 0x00000002, 0x00000000, 0x00000001, 0x00002814, + 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000002, 0x00000000, 0x00323270, 0x000000ec, + 0x43425844, 0xc95f99d5, 0x429f3bc7, 0xe63b88c0, 0x6af83630, 0x00000001, 0x000000ec, 0x00000003, + 0x0000002c, 0x000000a8, 0x000000b4, 0x42415443, 0x00000074, 0x0000001c, 0x0000004b, 0x46580400, + 0x00000001, 0x0000001c, 0x00000100, 0x00000048, 0x00000030, 0x00000002, 0x00000001, 0x00000038, + 0x00000000, 0x61765f67, 0xabab0072, 0x00030001, 0x00040001, 0x00000001, 0x00000000, 0x4d007874, + 0x6f726369, 0x74666f73, 0x29522820, 0x534c4820, 0x6853204c, 0x72656461, 0x6d6f4320, 0x656c6970, + 0x30312072, 0xab00312e, 0x34494c43, 0x00000004, 0x00000000, 0x434c5846, 0x00000030, 0x00000001, + 0x13a00004, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x00000004, 0x00000000, + 0xf0f0f0f0, 0x0f0f0f0f, 0x0000ffff, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000002, + 0x00000000, 0x00000004, 0x00000040, 0x00000000, 0x00000004, 0xffffffff, 0x00000000, 0x00000030, + 0x00000014, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000036, 0x00000014, + 0x00000000, 0x00000010, 0x00000000, 0x00000000, 0x00000000, 0x0000005e, 0x00000042, 0x00000000, + 0x00000020, 0x00000000, 0x00000000, 0x00000000, 0x00000087, 0x0000006b, 0x00000000, 0x00000030, + 0x00000000, 0x00000000, 0x00000000, 0x000000bc, 0x000000a0, 0x00000000, 0xffffffff, 0x00000001, + 0x00000019, 0x00000000, 0x00000006, 0x000000c5, 0x00000000, 0x000001b5, 0x00000017, 0x00000000, + 0x000001ba, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x000001bd, 0x0000000b, + 0x00000000, 0x00000001, 0x00000405, 0x00000002, 0x00000000, 0x00000001, 0x00000411, 0x0000041d, + 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00000420, 0x0000000b, 0x00000000, + 0x00000001, 0x00000574, 0x00000002, 0x00000000, 0x00000001, 0x00000580, 0x0000058c, 0x00000003, + 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x0000058f, 0x0000000b, 0x00000000, 0x00000001, + 0x000007bf, 0x00000002, 0x00000000, 0x00000001, 0x000007cb, 0x000007d7, 0x00000003, 0x00000000, + 0x0000000a, 0x00000000, 0x00000006, 0x000007da, 0x0000000b, 0x00000000, 0x00000001, 0x00000902, + 0x00000002, 0x00000000, 0x00000001, 0x0000090e, 0x0000091a, 0x00000003, 0x00000000, 0x0000000a, + 0x00000000, 0x00000006, 0x0000091d, 0x0000000b, 0x00000000, 0x00000001, 0x00000a45, 0x00000002, + 0x00000000, 0x00000001, 0x00000a51, 0x00000a5d, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, + 0x00000006, 0x00000a60, 0x0000000b, 0x00000000, 0x00000001, 0x00000b5c, 0x00000002, 0x00000000, + 0x00000001, 0x00000b68, 0x00000b74, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, + 0x00000b77, 0x0000000b, 0x00000000, 0x00000001, 0x00000cc7, 0x00000002, 0x00000000, 0x00000001, + 0x00000cd3, 0x00000cdf, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00000ce2, + 0x0000000b, 0x00000000, 0x00000001, 0x00000dd2, 0x00000002, 0x00000000, 0x00000001, 0x00000dde, + 0x00000dea, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00000ded, 0x0000000b, + 0x00000000, 0x00000001, 0x00000fe9, 0x00000002, 0x00000000, 0x00000001, 0x00000ff5, 0x00001001, + 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00001004, 0x0000000b, 0x00000000, + 0x00000001, 0x00001180, 0x00000002, 0x00000000, 0x00000001, 0x0000118c, 0x00001198, 0x00000003, + 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x0000119c, 0x0000000b, 0x00000000, 0x00000001, + 0x0000136c, 0x00000002, 0x00000000, 0x00000001, 0x00001378, 0x00001384, 0x00000003, 0x00000000, + 0x0000000a, 0x00000000, 0x00000006, 0x00001388, 0x0000000b, 0x00000000, 0x00000001, 0x00001504, + 0x00000002, 0x00000000, 0x00000001, 0x00001510, 0x0000151c, 0x00000003, 0x00000000, 0x0000000a, + 0x00000000, 0x00000006, 0x00001520, 0x0000000b, 0x00000000, 0x00000001, 0x0000169c, 0x00000002, + 0x00000000, 0x00000001, 0x000016a8, 0x000016b4, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, + 0x00000006, 0x000016b8, 0x0000000b, 0x00000000, 0x00000001, 0x00001834, 0x00000002, 0x00000000, + 0x00000001, 0x00001840, 0x0000184c, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, + 0x00001850, 0x0000000b, 0x00000000, 0x00000001, 0x000019cc, 0x00000002, 0x00000000, 0x00000001, + 0x000019d8, 0x000019e4, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x000019e8, + 0x0000000b, 0x00000000, 0x00000001, 0x00001b38, 0x00000002, 0x00000000, 0x00000001, 0x00001b44, + 0x00001b50, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00001b54, 0x0000000b, + 0x00000000, 0x00000001, 0x00001ca4, 0x00000002, 0x00000000, 0x00000001, 0x00001cb0, 0x00001cbc, + 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00001cc0, 0x0000000b, 0x00000000, + 0x00000001, 0x00001e10, 0x00000002, 0x00000000, 0x00000001, 0x00001e1c, 0x00001e28, 0x00000003, + 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00001e2c, 0x0000000b, 0x00000000, 0x00000001, + 0x00001fac, 0x00000002, 0x00000000, 0x00000001, 0x00001fb8, 0x00001fc4, 0x00000003, 0x00000000, + 0x0000000a, 0x00000000, 0x00000006, 0x00001fc8, 0x0000000b, 0x00000000, 0x00000001, 0x0000229c, + 0x00000002, 0x00000000, 0x00000001, 0x000022a8, 0x000022b4, 0x00000003, 0x00000000, 0x0000000a, + 0x00000000, 0x00000006, 0x000022b8, 0x0000000b, 0x00000000, 0x00000001, 0x0000259c, 0x00000002, + 0x00000000, 0x00000001, 0x000025a8, 0x000025b4, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, + 0x00000006, 0x000025b8, 0x0000000b, 0x00000000, 0x00000001, 0x00002808, 0x00000002, 0x00000000, + 0x00000001, 0x00002814, 0x00002820, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, + 0x00002824, 0x0000000b, 0x00000000, 0x00000001, 0x00002914, 0x00000002, 0x00000000, 0x00000001, + 0x00002920, };
static float get_frc(float v) @@ -9124,6 +9139,62 @@ static void test_effect_value_expression(void) ok(blend_factor[idx] == 1.0f, "Got unexpected blend_factor[%u] %.8e.\n", idx, blend_factor[idx]); ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask);
+ /* ceil() */ + pass = t->lpVtbl->GetPassByName(t, "p22"); + ok(pass->lpVtbl->IsValid(pass), "Expected valid pass.\n"); + + set_vec4(f, 1.1f, -2.3f, 3.5f, -4.5f); + hr = g_var->lpVtbl->SetFloatVector(g_var, f); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = pass->lpVtbl->Apply(pass, 0); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + + ID3D10Device_OMGetBlendState(device, &blend_state, blend_factor, &sample_mask); + ok(!blend_state, "Unexpected blend state %p.\n", blend_state); + for (idx = 0; idx < ARRAY_SIZE(blend_factor); ++idx) + ok(blend_factor[idx] == 2.0f, "Got unexpected blend_factor[%u] %.8e.\n", idx, blend_factor[idx]); + ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask); + + set_vec4(f, -2.3f, 1.1f, 3.5f, -4.5f); + hr = g_var->lpVtbl->SetFloatVector(g_var, f); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = pass->lpVtbl->Apply(pass, 0); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + + ID3D10Device_OMGetBlendState(device, &blend_state, blend_factor, &sample_mask); + ok(!blend_state, "Unexpected blend state %p.\n", blend_state); + for (idx = 0; idx < ARRAY_SIZE(blend_factor); ++idx) + ok(blend_factor[idx] == -2.0f, "Got unexpected blend_factor[%u] %.8e.\n", idx, blend_factor[idx]); + ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask); + + set_vec4(f, 3.5f, -2.3f, 1.1f, -4.5f); + hr = g_var->lpVtbl->SetFloatVector(g_var, f); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = pass->lpVtbl->Apply(pass, 0); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + + ID3D10Device_OMGetBlendState(device, &blend_state, blend_factor, &sample_mask); + ok(!blend_state, "Unexpected blend state %p.\n", blend_state); + for (idx = 0; idx < ARRAY_SIZE(blend_factor); ++idx) + ok(blend_factor[idx] == 4.0f, "Got unexpected blend_factor[%u] %.8e.\n", idx, blend_factor[idx]); + ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask); + + set_vec4(f, -4.5f, -2.3f, 3.5f, 1.1f); + hr = g_var->lpVtbl->SetFloatVector(g_var, f); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + hr = pass->lpVtbl->Apply(pass, 0); + ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr); + + ID3D10Device_OMGetBlendState(device, &blend_state, blend_factor, &sample_mask); + ok(!blend_state, "Unexpected blend state %p.\n", blend_state); + for (idx = 0; idx < ARRAY_SIZE(blend_factor); ++idx) + ok(blend_factor[idx] == -4.0f, "Got unexpected blend_factor[%u] %.8e.\n", idx, blend_factor[idx]); + ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask); + effect->lpVtbl->Release(effect);
refcount = ID3D10Device_Release(device);