5370 const char *param_name;
5373 check_op_parameters[] =
5393 const char *param_name;
5397 check_vconsts_parameters[] =
5399 {
"g_Selector", {0x00000000, 0x00000002}},
5400 {
"g_Pos1", {0x80000000, 0x00000002}},
5401 {
"g_Pos2", {0x00000000, 0x00000002}},
5402 {
"m4x3column", {0x03800000, 0x00000000}},
5403 {
"m3x4column", {0x000f0000, 0x00000000}},
5404 {
"m4x3row", {0x0000f000, 0x00000000}},
5405 {
"m3x4row", {0x00700000, 0x00000000}},
5406 {
"ts1", {0x1c000000, 0x00000000}},
5407 {
"ts2", {0x0000003f, 0x00000000}},
5408 {
"arr1", {0x00000000, 0x00000001}},
5409 {
"arr2", {0x60000000, 0x00000000}},
5410 {
"ts3", {0x00000fc0, 0x00000000}},
5414 const char *param_name;
5418 check_bconsts_parameters[] =
5420 {
"mb2x3row", {0x0000001f}},
5421 {
"mb2x3column", {0x00000060}},
5427 ID3DXEffect *effect;
5430 unsigned int i, passes_count,
value;
5433 IDirect3DVertexShader9 *vshader;
5434 unsigned char buffer[256];
5441 param = effect->lpVtbl->GetParameterByName(effect,
NULL,
"g_iVect");
5442 ok(!!
param,
"GetParameterByName failed.\n");
5444 hr = effect->lpVtbl->Begin(effect, &passes_count, 0);
5450 hr = effect->lpVtbl->BeginPass(effect, 0);
5457 for (
j = 0;
j < 8; ++
j)
5462 param = effect->lpVtbl->GetParameterByName(effect,
NULL, check_op_parameters[
i].param_name);
5463 ok(!!
param,
"Failed to get parameter (test %u).\n",
i);
5464 hr = effect->lpVtbl->GetValue(effect,
param, &fvect,
sizeof(fvect));
5465 ok(
hr ==
D3D_OK,
"Failed to get parameter value, hr %#x (test %u).\n",
hr,
i);
5466 hr = effect->lpVtbl->SetValue(effect,
param, &fvect,
sizeof(fvect));
5467 ok(
hr ==
D3D_OK,
"Failed to set parameter value, hr %#x (test %u).\n",
hr,
i);
5468 hr = effect->lpVtbl->CommitChanges(effect);
5469 ok(
hr ==
D3D_OK,
"Failed to commit changes, hr %#x (test %u).\n",
hr,
i);
5472 check_op_parameters[
i].param_name);
5478 param = effect->lpVtbl->GetParameterByName(effect,
NULL, check_vconsts_parameters[
i].param_name);
5479 ok(!!
param,
"GetParameterByName failed.\n");
5484 hr = effect->lpVtbl->CommitChanges(effect);
5488 check_vconsts_parameters[
i].param_name);
5494 param = effect->lpVtbl->GetParameterByName(effect,
NULL, check_bconsts_parameters[
i].param_name);
5495 ok(!!
param,
"GetParameterByName failed.\n");
5500 hr = effect->lpVtbl->CommitChanges(effect);
5504 check_bconsts_parameters[
i].param_name);
5508 param = effect->lpVtbl->GetParameterByName(effect,
NULL,
"g_Selector");
5509 ok(!!
param,
"GetParameterByName failed.\n");
5510 fvect.
x = fvect.
y = fvect.
z = fvect.
w = 0.0f;
5511 hr = effect->lpVtbl->SetVectorArray(effect,
param, &fvect, 1);
5513 hr = effect->lpVtbl->CommitChanges(effect);
5516 check_vconsts_parameters[0].param_name);
5519 param = effect->lpVtbl->GetParameterByName(effect,
NULL,
"arr2");
5520 ok(!!
param,
"GetParameterByName failed.\n");
5521 param = effect->lpVtbl->GetParameterElement(effect,
param, 0);
5522 ok(!!
param,
"GetParameterElement failed.\n");
5523 hr = effect->lpVtbl->SetFloat(effect,
param, 92.0
f);
5525 hr = effect->lpVtbl->CommitChanges(effect);
5528 check_vconsts_parameters[10].param_name);
5531 param = effect->lpVtbl->GetParameterByName(effect,
NULL,
"arr2");
5532 ok(!!
param,
"GetParameterByName failed.\n");
5533 param = effect->lpVtbl->GetParameterElement(effect,
param, 1);
5534 ok(!!
param,
"GetParameterElement failed.\n");
5536 hr = effect->lpVtbl->SetValue(effect,
param, &fvect.
x,
sizeof(fvect.
x));
5538 hr = effect->lpVtbl->CommitChanges(effect);
5541 check_vconsts_parameters[10].param_name);
5544 param = effect->lpVtbl->GetParameterByName(effect,
NULL,
"arr2");
5545 ok(!!
param,
"GetParameterByName failed.\n");
5547 hr = effect->lpVtbl->SetFloatArray(effect,
param, &fvect.
x, 1);
5549 hr = effect->lpVtbl->CommitChanges(effect);
5552 check_vconsts_parameters[10].param_name);
5555 param = effect->lpVtbl->GetParameterByName(effect,
NULL,
"arr2");
5556 ok(!!
param,
"GetParameterByName failed.\n");
5557 param = effect->lpVtbl->GetParameterElement(effect,
param, 1);
5558 ok(!!
param,
"GetParameterElement failed.\n");
5559 hr = effect->lpVtbl->SetInt(effect,
param, 93);
5561 hr = effect->lpVtbl->CommitChanges(effect);
5564 check_vconsts_parameters[10].param_name);
5567 param = effect->lpVtbl->GetParameterByName(effect,
NULL,
"g_Pos1");
5568 ok(!!
param,
"GetParameterByName failed.\n");
5569 fvect.
x = fvect.
y = fvect.
z = fvect.
w = 0.0f;
5570 hr = effect->lpVtbl->SetVector(effect,
param, &fvect);
5572 hr = effect->lpVtbl->CommitChanges(effect);
5575 check_vconsts_parameters[1].param_name);
5578 param = effect->lpVtbl->GetParameterByName(effect,
NULL,
"ts1");
5579 ok(!!
param,
"GetParameterByName failed.\n");
5580 param = effect->lpVtbl->GetParameterElement(effect,
param, 0);
5581 ok(!!
param,
"GetParameterByName failed.\n");
5582 param = effect->lpVtbl->GetParameterByName(effect,
param,
"fv");
5583 ok(!!
param,
"GetParameterByName failed.\n");
5585 hr = effect->lpVtbl->SetValue(effect,
param, &fvect.
x,
sizeof(
float));
5587 hr = effect->lpVtbl->CommitChanges(effect);
5590 check_vconsts_parameters[7].param_name);
5592 *(
float *)&
value = 9999.0
f;
5602 param = effect->lpVtbl->GetParameterByName(effect,
NULL,
"ts2");
5603 ok(!!
param,
"GetParameterByName failed.\n");
5604 param = effect->lpVtbl->GetParameterElement(effect,
param, 0);
5605 ok(!!
param,
"GetParameterByName failed.\n");
5606 param = effect->lpVtbl->GetParameterByName(effect,
param,
"v1");
5607 ok(!!
param,
"GetParameterByName failed.\n");
5608 hr = effect->lpVtbl->GetValue(effect,
param, &fvect,
sizeof(
float) * 3);
5610 hr = effect->lpVtbl->SetValue(effect,
param, &fvect,
sizeof(
float) * 3);
5612 hr = effect->lpVtbl->CommitChanges(effect);
5616 ok(
value == 0,
"Unexpected fog density %g.\n", *(
float *)&
value);
5619 ok(*(
float *)&
value == 4.0
f,
"Unexpected fog start %g.\n", *(
float *)&
value);
5622 ok(*(
float *)&
value == 9999.0
f,
"Unexpected point scale A %g.\n", *(
float *)&
value);
5625 ok(*(
float *)&
value == 9999.0
f,
"Unexpected point scale B %g.\n", *(
float *)&
value);
5627 check_vconsts_parameters[8].param_name);
5629 *(
float *)&
value = 9999.0
f;
5639 param = effect->lpVtbl->GetParameterByName(effect,
NULL,
"ts3");
5640 ok(!!
param,
"GetParameterByName failed.\n");
5641 param = effect->lpVtbl->GetParameterByName(effect,
param,
"ts");
5642 ok(!!
param,
"GetParameterByName failed.\n");
5643 param = effect->lpVtbl->GetParameterElement(effect,
param, 1);
5644 ok(!!
param,
"GetParameterByName failed.\n");
5645 param = effect->lpVtbl->GetParameterByName(effect,
param,
"fv");
5646 ok(!!
param,
"GetParameterByName failed.\n");
5647 hr = effect->lpVtbl->GetValue(effect,
param, &fvect.
x,
sizeof(
float));
5649 hr = effect->lpVtbl->SetValue(effect,
param, &fvect.
x,
sizeof(
float));
5651 hr = effect->lpVtbl->CommitChanges(effect);
5655 ok(*(
float *)&
value == 9999.0
f,
"Unexpected fog density %g.\n", *(
float *)&
value);
5658 ok(*(
float *)&
value == 9999.0
f,
"Unexpected fog start %g.\n", *(
float *)&
value);
5661 ok(*(
float *)&
value == 4.0
f,
"Unexpected point scale A %g.\n", *(
float *)&
value);
5664 ok(*(
float *)&
value == 12.0
f,
"Unexpected point scale B %g.\n", *(
float *)&
value);
5666 check_vconsts_parameters[11].param_name);
5670 ok(
value == 1,
"Unexpected sampler 0 minfilter %u.\n",
value);
5674 ok(
value == 0,
"Unexpected sampler 1 minfilter %u.\n",
value);
5677 ok(
value == 3,
"Unexpected sampler 2 minfilter %u.\n",
value);
5679 param = effect->lpVtbl->GetParameterByName(effect,
NULL,
"g_iVect");
5680 ok(!!
param,
"GetParameterByName failed.\n");
5681 ivect[0] = ivect[1] = ivect[2] = ivect[3] = 1;
5682 hr = effect->lpVtbl->SetValue(effect,
param, ivect,
sizeof(ivect));
5685 for (
i = 0;
i < 3; ++
i)
5702 hr = effect->lpVtbl->CommitChanges(effect);
5707 ok(!vshader,
"Got non NULL vshader.\n");
5709 "selector g_iVect");
5713 ok(
value == 0,
"Unexpected sampler 0 minfilter %u.\n",
value);
5716 ok(
value == 0,
"Unexpected sampler 1 minfilter %u.\n",
value);
5720 ok(
value == 1,
"Unexpected sampler 2 minfilter %u.\n",
value);
5723 ok(
value == 0,
"Unexpected sampler 2 minfilter %u.\n",
value);
5726 ok(
value == 1,
"Unexpected sampler 0 minfilter %u.\n",
value);
5729 ok(
value == 0,
"Unexpected sampler 0 minfilter %u.\n",
value);
5732 hr = effect->lpVtbl->SetValue(effect,
param, ivect,
sizeof(ivect));
5735 hr = effect->lpVtbl->SetValue(effect,
param, ivect,
sizeof(ivect));
5737 hr = effect->lpVtbl->CommitChanges(effect);
5741 ok(!vshader,
"Got non NULL vshader.\n");
5743 "selector g_iVect");
5745 hr = effect->lpVtbl->SetValue(effect,
param, ivect,
sizeof(ivect));
5747 hr = effect->lpVtbl->CommitChanges(effect);
5751 ok(!!vshader,
"Got NULL vshader.\n");
5755 ok(fvect.
x == 0.0f && fvect.
y == 0.0f && fvect.
z == 0.0f && fvect.
w == 0.0f,
5756 "Vertex shader float constants do not match.\n");
5760 "selector g_iVect");
5762 hr = effect->lpVtbl->SetValue(effect,
param, ivect,
sizeof(ivect));
5764 hr = effect->lpVtbl->CommitChanges(effect);
5768 hr = effect->lpVtbl->EndPass(effect);
5771 hr = effect->lpVtbl->End(effect);
5774 effect->lpVtbl->Release(effect);
#define IDirect3DDevice9_GetRenderState(p, a, b)
static void test_effect_clear_vconsts(IDirect3DDevice9 *device)
static void test_effect_preshader_clear_pbool_consts(IDirect3DDevice9 *device)
#define test_effect_preshader_compare_vconsts(a, b, c)
static const DWORD test_effect_preshader_effect_blob[]
static const struct @1611 test_effect_preshader_op_expected[]
HRESULT WINAPI D3DXCreateEffect(struct IDirect3DDevice9 *device, const void *srcdata, UINT srcdatalen, const D3DXMACRO *defines, struct ID3DXInclude *include, DWORD flags, struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **compilation_errors)
#define IDirect3DDevice9_SetVertexShaderConstantF(p, a, b, c)
#define test_effect_preshader_compare_pbool_consts(a, b, c)
static const D3DXVECTOR4 test_effect_preshader_fvect_v[]
#define IDirect3DDevice9_GetVertexShaderConstantF(p, a, b, c)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
#define IDirect3DDevice9_GetVertexShader(p, a)
#define IDirect3DVertexShader9_Release(p)
#define IDirect3DDevice9_SetLight(p, a, b)
GLsizei const GLfloat * value
#define IDirect3DDevice9_SetVertexShader(p, a)
#define IDirect3DDevice9_SetRenderState(p, a, b)
#define test_effect_preshader_op_results(a, b, c)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static const BOOL test_effect_preshader_bconsts[]
#define D3DVERTEXTEXTURESAMPLER1
#define D3DVERTEXTEXTURESAMPLER2
#define IDirect3DDevice9_GetSamplerState(p, a, b, c)
#define IDirect3DDevice9_SetSamplerState(p, a, b, c)
#define D3DVERTEXTEXTURESAMPLER0
#define TEST_EFFECT_BITMASK_BLOCK_SIZE
static const D3DXVECTOR4 fvect_filler