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

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
This commit is contained in:
Nikolay Sivov 2022-12-01 06:33:09 +03:00 committed by Alexandre Julliard
parent 7448ecae49
commit 08e8f284f5
2 changed files with 155 additions and 86 deletions

View file

@ -246,6 +246,18 @@ static void pres_ftou(float **args, unsigned int n, const struct preshader_instr
}
}
static void pres_ftob(float **args, unsigned int n, const struct preshader_instr *instr)
{
float *retval = args[1];
unsigned int i;
for (i = 0; i < instr->comp_count; ++i)
{
unsigned int u = args[0][i] == 0.0f ? 0 : ~0u;
retval[i] = *(float *)&u;
}
}
static void pres_min(float **args, unsigned int n, const struct preshader_instr *instr)
{
float *retval = args[2];
@ -295,6 +307,7 @@ static const struct preshader_op_info preshader_ops[] =
{ 0x108, "sin", pres_sin },
{ 0x109, "cos", pres_cos },
{ 0x133, "ftou", pres_ftou },
{ 0x137, "ftob", pres_ftob },
{ 0x200, "min", pres_min },
{ 0x201, "max", pres_max },
{ 0x204, "add", pres_add },
@ -867,8 +880,9 @@ static void d3d10_effect_update_dependent_props(struct d3d10_effect_prop_depende
case D3D10_EOO_VALUE_EXPRESSION:
if ((property_info->container_type != D3D10_C_PASS)
|| ((property_info->type != D3D10_SVT_UINT) && (property_info->type != D3D10_SVT_FLOAT)))
if ((property_info->type != D3D10_SVT_UINT)
&& (property_info->type != D3D10_SVT_FLOAT)
&& (property_info->type != D3D10_SVT_BOOL))
{
FIXME("Unimplemented for property %s.\n", property_info->name);
return;
@ -8864,6 +8878,8 @@ static HRESULT STDMETHODCALLTYPE d3d10_effect_depth_stencil_variable_GetBackingS
if (!(v = d3d10_get_state_variable(v, index, &v->effect->ds_states)))
return E_FAIL;
d3d10_effect_update_dependent_props(&v->u.state.dependencies, &v->u.state.desc);
*desc = v->u.state.desc.depth_stencil;
return S_OK;

View file

@ -22,6 +22,7 @@
#include "wine/test.h"
#include <float.h>
#include <math.h>
#define D3DERR_INVALIDCALL 0x8876086c
@ -8138,6 +8139,12 @@ static void test_effect_index_expression(void)
#if 0
float4 g_var;
float4 g_var2;
DepthStencilState ds_state
{
StencilEnable = g_var.x;
};
technique10 tech
{
pass p0
@ -8164,99 +8171,111 @@ technique10 tech
#endif
static DWORD fx_test_value_expression[] =
{
0x43425844, 0x1cd6bc1c, 0x8025a693, 0x09d5d4d0, 0xc0da1b6c, 0x00000001, 0x00000ae5, 0x00000001,
0x00000024, 0x30315846, 0x00000ab9, 0xfeff1001, 0x00000001, 0x00000002, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000001, 0x000008e5, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x43425844, 0xf580dcc6, 0xa9d229ae, 0x14b1f1d5, 0x3c8c456c, 0x00000001, 0x00000c34, 0x00000001,
0x00000024, 0x30315846, 0x00000c08, 0xfeff1001, 0x00000001, 0x00000002, 0x00000001, 0x00000000,
0x00000000, 0x00000000, 0x00000001, 0x00000a0c, 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, 0x63657400, 0x30700068, 0x00024400,
0x42584400, 0xff104243, 0xa078c06f, 0xb9d7d003, 0x421eb8c7, 0x0000014c, 0x00024400, 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, 0x0666663d, 0x00000040, 0x00000000, 0x4c584600, 0x00014c43, 0x00000800, 0x10000400,
0x00000110, 0x00000000, 0x00000200, 0x00000000, 0x00000000, 0x00000700, 0x00000000, 0x80000100,
0x00000110, 0x00000000, 0x00000200, 0x00000000, 0x00000000, 0x00000700, 0x00000400, 0x40000400,
0x000002a0, 0x00000000, 0x00000700, 0x00000400, 0x00000000, 0x00000700, 0x00000000, 0x00000000,
0x00000700, 0x00000800, 0x90000100, 0x00000110, 0x00000000, 0x00000200, 0x00000100, 0x00000000,
0x00000700, 0x00000000, 0x40000400, 0x000002a0, 0x00000000, 0x00000700, 0x00000000, 0x00000000,
0x00000700, 0x00000800, 0x00000000, 0x00000700, 0x00000400, 0x40000400, 0x000002a0, 0x00000000,
0x00000100, 0x00000000, 0x00000000, 0x00000700, 0x00000400, 0x00000000, 0x00000700, 0x00000000,
0x50000400, 0x000002a0, 0x00000000, 0x00000100, 0x00000100, 0x00000000, 0x00000200, 0x00000400,
0x00000000, 0x00000700, 0x00000400, 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,
0x00000010, 0x0000210a, 0x61765f67, 0x5f670072, 0x32726176, 0x70654400, 0x74536874, 0x69636e65,
0x6174536c, 0x3d006574, 0x02000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x03000000,
0x64000000, 0x74735f73, 0x00657461, 0x000000ec, 0x43425844, 0x79125440, 0x90f05fca, 0xfe55a99c,
0x45e16165, 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, 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,
0x00028d00, 0x00000200, 0x00000000, 0x00000100, 0x00029900, 0x0002a500, 0x00000300, 0x00000000,
0x00000a00, 0x00000000, 0x00000600, 0x0002a800, 0x00000b00, 0x00000000, 0x00000100, 0x0003fc00,
0x00000200, 0x00000000, 0x00000100, 0x00040800, 0x00041400, 0x00000300, 0x00000000, 0x00000a00,
0x00000000, 0x00000600, 0x00041700, 0x00000b00, 0x00000000, 0x00000100, 0x00064700, 0x00000200,
0x00000000, 0x00000100, 0x00065300, 0x00065f00, 0x00000300, 0x00000000, 0x00000a00, 0x00000000,
0x00000600, 0x00066200, 0x00000b00, 0x00000000, 0x00000100, 0x00078a00, 0x00000200, 0x00000000,
0x00000100, 0x00079600, 0x0007a200, 0x00000300, 0x00000000, 0x00000a00, 0x00000000, 0x00000600,
0x0007a500, 0x00000b00, 0x00000000, 0x00000100, 0x0008cd00, 0x00000200, 0x00000000, 0x00000100,
0x0008d900, 0x00000000,
0x00000000, 0x434c5846, 0x00000030, 0x00000001, 0x13700001, 0x00000001, 0x00000000, 0x00000002,
0x00000000, 0x00000000, 0x00000004, 0x00000000, 0xf0f0f0f0, 0x0f0f0f0f, 0x0000ffff, 0x68636574,
0x00307000, 0x00000244, 0x43425844, 0x6fff1042, 0x03a078c0, 0xc7b9d7d0, 0x4c421eb8, 0x00000001,
0x00000244, 0x00000003, 0x0000002c, 0x000000d4, 0x000000f0, 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,
0x00000014, 0x00000004, 0x3dcccccd, 0x40066666, 0x00000000, 0x00000000, 0x434c5846, 0x0000014c,
0x00000008, 0x10100004, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x00000007,
0x00000000, 0x10800001, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000000, 0x00000007,
0x00000004, 0xa0400004, 0x00000002, 0x00000000, 0x00000007, 0x00000004, 0x00000000, 0x00000007,
0x00000000, 0x00000000, 0x00000007, 0x00000008, 0x10900001, 0x00000001, 0x00000000, 0x00000002,
0x00000001, 0x00000000, 0x00000007, 0x00000000, 0xa0400004, 0x00000002, 0x00000000, 0x00000007,
0x00000000, 0x00000000, 0x00000007, 0x00000008, 0x00000000, 0x00000007, 0x00000004, 0xa0400004,
0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000007, 0x00000004, 0x00000000,
0x00000007, 0x00000000, 0xa0500004, 0x00000002, 0x00000000, 0x00000001, 0x00000001, 0x00000000,
0x00000002, 0x00000004, 0x00000000, 0x00000007, 0x00000004, 0x20400004, 0x00000002, 0x00000000,
0x00000007, 0x00000000, 0x00000000, 0x00000007, 0x00000004, 0x00000000, 0x00000004, 0x00000000,
0xf0f0f0f0, 0x0f0f0f0f, 0x0000ffff, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000002,
0x00000000, 0x50003170, 0x44000001, 0x4c434258, 0x35c6a29e, 0xcb6292ed, 0x5fd90bb8, 0x0150dcd2,
0x50000000, 0x03000001, 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, 0x68434c58, 0x02000000, 0x04000000, 0x02a04000, 0x00000000,
0x02000000, 0x00000000, 0x00000000, 0x02000000, 0x04000000, 0x00000000, 0x07000000, 0x00000000,
0x04000000, 0x02a04000, 0x00000000, 0x02000000, 0x01000000, 0x00000000, 0x07000000, 0x00000000,
0x00000000, 0x04000000, 0x00000000, 0xf0000000, 0x0ff0f0f0, 0xff0f0f0f, 0x010000ff, 0x02000000,
0x00000000, 0x01000000, 0x02000000, 0x00000000, 0x70000000, 0x022c0032, 0x58440000, 0xe09e4342,
0x26fae994, 0x3ab641b8, 0xb70bac8f, 0x00019d4e, 0x022c0000, 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, 0x0144434c,
0x00070000, 0x00010000, 0x00022000, 0x00000000, 0x00020000, 0x00000000, 0x00000000, 0x00020000,
0x00040000, 0x00000000, 0x00070000, 0x00000000, 0x00010000, 0x00022010, 0x00000000, 0x00020000,
0x00010000, 0x00000000, 0x00020000, 0x00050000, 0x00000000, 0x00070000, 0x00010000, 0x00010000,
0x00022040, 0x00000000, 0x00070000, 0x00010000, 0x00000000, 0x00070000, 0x00000000, 0x00000000,
0x00070000, 0x00040000, 0x00040000, 0x00022000, 0x00000000, 0x00020000, 0x00000000, 0x00000000,
0x00020000, 0x00040000, 0x00000000, 0x00070000, 0x00000000, 0x00040000, 0x0002a040, 0x00000000,
0x00070000, 0x00040000, 0x00000000, 0x00070000, 0x00000000, 0x00000000, 0x00070000, 0x00080000,
0x00040000, 0x00022010, 0x00000000, 0x00020000, 0x00000000, 0x00000000, 0x00020000, 0x00040000,
0x00000000, 0x00070000, 0x00000000, 0x00040000, 0x00022040, 0x00000000, 0x00070000, 0x00000000,
0x00000000, 0x00070000, 0x00080000, 0x00000000, 0x00040000, 0x00000000, 0xf0f00000, 0x0f0ff0f0,
0xffff0f0f, 0x00010000, 0x00020000, 0x00000000, 0x00010000, 0x00020000, 0x00000000, 0x33700000,
0x00012400, 0x42584400, 0xcef4c543, 0x23070658, 0xcacabd20, 0x0c24d22f, 0x0000010f, 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, 0x00000400, 0x000002a0, 0x00000000, 0x00000200,
0x00000000, 0x00000000, 0x00000200, 0x00000400, 0x00000000, 0x00000400, 0x00000000, 0xf0f0f000,
0x0f0f0ff0, 0x00ffff0f, 0x00000100, 0x00000200, 0x00000000, 0x00000100, 0x00000200, 0x00000000,
0x00347000, 0x00000124, 0x43425844, 0x35c902bb, 0x89afcba6, 0xf6a383ff, 0xf8ed53a9, 0x00000001,
0x00000124, 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, 0x0000003c, 0x00000001, 0xa0100004, 0x00000002, 0x00000000,
0x00000002, 0x00000000, 0x00000000, 0x00000002, 0x00000004, 0x00000000, 0x00000004, 0x00000000,
0xf0f0f0f0, 0x0f0f0f0f, 0x0000ffff, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000002,
0x00000000, 0x00000004, 0x00000020, 0x00000000, 0x00000002, 0xffffffff, 0x00000000, 0x00000030,
0x00000014, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000036, 0x00000014,
0x00000000, 0x00000010, 0x00000000, 0x00000000, 0x00000000, 0x0000006b, 0x0000004f, 0x00000000,
0xffffffff, 0x00000001, 0x00000019, 0x00000000, 0x00000006, 0x00000074, 0x00000000, 0x00000164,
0x00000005, 0x00000000, 0x00000169, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006,
0x0000016c, 0x0000000b, 0x00000000, 0x00000001, 0x000003b4, 0x00000002, 0x00000000, 0x00000001,
0x000003c0, 0x000003cc, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x000003cf,
0x0000000b, 0x00000000, 0x00000001, 0x00000523, 0x00000002, 0x00000000, 0x00000001, 0x0000052f,
0x0000053b, 0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x0000053e, 0x0000000b,
0x00000000, 0x00000001, 0x0000076e, 0x00000002, 0x00000000, 0x00000001, 0x0000077a, 0x00000786,
0x00000003, 0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x00000789, 0x0000000b, 0x00000000,
0x00000001, 0x000008b1, 0x00000002, 0x00000000, 0x00000001, 0x000008bd, 0x000008c9, 0x00000003,
0x00000000, 0x0000000a, 0x00000000, 0x00000006, 0x000008cc, 0x0000000b, 0x00000000, 0x00000001,
0x000009f4, 0x00000002, 0x00000000, 0x00000001, 0x00000a00,
};
static void test_effect_value_expression(void)
{
ID3D10EffectVectorVariable *g_var, *g_var2;
ID3D10EffectDepthStencilVariable *ds;
D3D10_DEPTH_STENCIL_DESC ds_desc;
ID3D10BlendState *blend_state;
float f[4], blend_factor[4];
ID3D10EffectTechnique *t;
@ -8334,6 +8353,40 @@ static void test_effect_value_expression(void)
ok(blend_factor[3] == 1.0f, "Got unexpected blend_factor[3] %.8e.\n", blend_factor[3]);
ok(!sample_mask, "Got unexpected sample_mask %#x.\n", sample_mask);
/* Mutable state objects. */
v = effect->lpVtbl->GetVariableByName(effect, "ds_state");
ds = v->lpVtbl->AsDepthStencil(v);
f[0] = 1.0f; f[1] = 2.0f; f[2] = 3.0f; f[3] = 4.0f;
hr = g_var->lpVtbl->SetFloatVector(g_var, f);
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
ds->lpVtbl->GetBackingStore(ds, 0, &ds_desc);
ok(ds_desc.StencilEnable == 0xffffffff, "Got unexpected StencilEnable %#x.\n", ds_desc.StencilEnable);
f[0] = 0.0f;
hr = g_var->lpVtbl->SetFloatVector(g_var, f);
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
ds->lpVtbl->GetBackingStore(ds, 0, &ds_desc);
ok(!ds_desc.StencilEnable, "Got unexpected StencilEnable %#x.\n", ds_desc.StencilEnable);
f[0] = -0.1f;
hr = g_var->lpVtbl->SetFloatVector(g_var, f);
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
ds->lpVtbl->GetBackingStore(ds, 0, &ds_desc);
ok(ds_desc.StencilEnable == 0xffffffff, "Got unexpected StencilEnable %#x.\n", ds_desc.StencilEnable);
f[0] = 0.0f;
hr = g_var->lpVtbl->SetFloatVector(g_var, f);
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
ds->lpVtbl->GetBackingStore(ds, 0, &ds_desc);
ok(!ds_desc.StencilEnable, "Got unexpected StencilEnable %#x.\n", ds_desc.StencilEnable);
f[0] = NAN;
hr = g_var->lpVtbl->SetFloatVector(g_var, f);
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
ds->lpVtbl->GetBackingStore(ds, 0, &ds_desc);
ok(ds_desc.StencilEnable == 0xffffffff, "Got unexpected StencilEnable %#x.\n", ds_desc.StencilEnable);
effect->lpVtbl->Release(effect);
refcount = ID3D10Device_Release(device);