[PATCH] WineD3D: Implement D3DTA_ALPHAREPLICATE in arbfp and =
Stefan Doesinger
stefan at codeweavers.com
Tue Aug 19 10:43:03 CDT 2008
atifs=0A=
=0A=
Also adds a simple test for this. In the fixed function and nvrc/nvts =
code this already works=0A=
properly=0A=
---=0A=
dlls/d3d9/tests/visual.c | 43 +++++++++=0A=
dlls/wined3d/arb_program_shader.c | 6 +=0A=
dlls/wined3d/ati_fragment_shader.c | 178 =
+++++++++++++++++++-----------------=0A=
3 files changed, 145 insertions(+), 82 deletions(-)=0A=
=0A=
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c=0A=
index 25085f0..6562187 100644=0A=
--- a/dlls/d3d9/tests/visual.c=0A=
+++ b/dlls/d3d9/tests/visual.c=0A=
@@ -9492,6 +9492,48 @@ static void texop_range_test(IDirect3DDevice9 =
*device)=0A=
IDirect3DTexture9_Release(texture);=0A=
}=0A=
=0A=
+static void alphareplicate_test(IDirect3DDevice9 *device) {=0A=
+ struct vertex quad[] =3D {=0A=
+ { -1.0, -1.0, 0.1, 0x80ff00ff },=0A=
+ { 1.0, -1.0, 0.1, 0x80ff00ff },=0A=
+ { -1.0, 1.0, 0.1, 0x80ff00ff },=0A=
+ { 1.0, 1.0, 0.1, 0x80ff00ff },=0A=
+ };=0A=
+ HRESULT hr;=0A=
+ DWORD color;=0A=
+=0A=
+ hr =3D IDirect3DDevice9_Clear(device, 0, NULL, D3DCLEAR_TARGET | =
D3DCLEAR_ZBUFFER, 0x00000000, 1.0f, 0);=0A=
+ ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_Clear failed with 0x%08x\n", =
hr);=0A=
+=0A=
+ hr =3D IDirect3DDevice9_SetFVF(device, D3DFVF_XYZ | D3DFVF_DIFFUSE);=0A=
+ ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_SetFVF failed with =
0x%08x\n", hr);=0A=
+=0A=
+ hr =3D IDirect3DDevice9_SetTextureStageState(device, 0, =
D3DTSS_COLOROP, D3DTOP_SELECTARG1);=0A=
+ ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_SetTextureStageState failed =
with 0x%08x\n", hr);=0A=
+ hr =3D IDirect3DDevice9_SetTextureStageState(device, 0, =
D3DTSS_COLORARG1, D3DTA_DIFFUSE | D3DTA_ALPHAREPLICATE);=0A=
+ ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_SetTextureStageState failed =
with 0x%08x\n", hr);=0A=
+=0A=
+ hr =3D IDirect3DDevice9_BeginScene(device);=0A=
+ ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_BeginScene failed with =
0x%08x\n", hr);=0A=
+ if(SUCCEEDED(hr)) {=0A=
+ hr =3D IDirect3DDevice9_DrawPrimitiveUP(device, =
D3DPT_TRIANGLESTRIP, 2, quad, sizeof(*quad));=0A=
+ ok(SUCCEEDED(hr), "DrawPrimitiveUP failed with 0x%08x\n", hr);=0A=
+ hr =3D IDirect3DDevice9_EndScene(device);=0A=
+ ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_BeginScene failed with =
0x%08x\n", hr);=0A=
+ }=0A=
+=0A=
+ hr =3D IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL);=0A=
+ ok(SUCCEEDED(hr), "Present failed with 0x%08x\n", hr);=0A=
+=0A=
+ color =3D getPixelColor(device, 320, 240);=0A=
+ ok(color_match(color, 0x00808080, 1), "alphareplicate test 0x%08x, =
expected 0x00808080\n",=0A=
+ color);=0A=
+=0A=
+ hr =3D IDirect3DDevice9_SetTextureStageState(device, 0, =
D3DTSS_COLOROP, D3DTOP_DISABLE);=0A=
+ ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_SetTextureStageState failed =
with 0x%08x\n", hr);=0A=
+=0A=
+}=0A=
+=0A=
START_TEST(visual)=0A=
{=0A=
IDirect3DDevice9 *device_ptr;=0A=
@@ -9650,6 +9692,7 @@ START_TEST(visual)=0A=
else skip("No ps_1_1 support\n");=0A=
texop_test(device_ptr);=0A=
texop_range_test(device_ptr);=0A=
+ alphareplicate_test(device_ptr);=0A=
=0A=
cleanup:=0A=
if(device_ptr) {=0A=
diff --git a/dlls/wined3d/arb_program_shader.c =
b/dlls/wined3d/arb_program_shader.c=0A=
index 1f27ec4..250845a 100644=0A=
--- a/dlls/wined3d/arb_program_shader.c=0A=
+++ b/dlls/wined3d/arb_program_shader.c=0A=
@@ -2464,6 +2464,12 @@ static const char *get_argreg(SHADER_BUFFER =
*buffer, DWORD argnum, unsigned int=0A=
if(argnum =3D=3D 1) ret =3D "arg1";=0A=
if(argnum =3D=3D 2) ret =3D "arg2";=0A=
}=0A=
+ if(arg & WINED3DTA_ALPHAREPLICATE) {=0A=
+ shader_addline(buffer, "MOV arg%u, %s.a;\n", argnum, ret);=0A=
+ if(argnum =3D=3D 0) ret =3D "arg0";=0A=
+ if(argnum =3D=3D 1) ret =3D "arg1";=0A=
+ if(argnum =3D=3D 2) ret =3D "arg2";=0A=
+ }=0A=
return ret;=0A=
}=0A=
=0A=
diff --git a/dlls/wined3d/ati_fragment_shader.c =
b/dlls/wined3d/ati_fragment_shader.c=0A=
index e6b43d8..667a95c 100644=0A=
--- a/dlls/wined3d/ati_fragment_shader.c=0A=
+++ b/dlls/wined3d/ati_fragment_shader.c=0A=
@@ -148,8 +148,18 @@ static const char *debug_swizzle(GLuint swizzle) {=0A=
}=0A=
}=0A=
=0A=
+static const char *debug_rep(GLuint rep) {=0A=
+ switch(rep) {=0A=
+ case GL_NONE: return "GL_NONE";=0A=
+ case GL_RED: return "GL_RED";=0A=
+ case GL_GREEN: return "GL_GREEN";=0A=
+ case GL_BLUE: return "GL_BLUE";=0A=
+ default: return "unknown argrep";=0A=
+ }=0A=
+}=0A=
+=0A=
#define GLINFO_LOCATION (*gl_info)=0A=
-static GLuint register_for_arg(DWORD arg, WineD3D_GL_Info *gl_info, =
unsigned int stage, GLuint *mod, GLuint tmparg) {=0A=
+static GLuint register_for_arg(DWORD arg, WineD3D_GL_Info *gl_info, =
unsigned int stage, GLuint *mod, GLuint *rep, GLuint tmparg) {=0A=
GLenum ret;=0A=
=0A=
if(mod) *mod =3D GL_NONE;=0A=
@@ -203,7 +213,9 @@ static GLuint register_for_arg(DWORD arg, =
WineD3D_GL_Info *gl_info, unsigned int=0A=
if(mod) *mod |=3D GL_COMP_BIT_ATI;=0A=
}=0A=
if(arg & WINED3DTA_ALPHAREPLICATE) {=0A=
- FIXME("Unhandled read modifier WINED3DTA_ALPHAREPLICATE\n");=0A=
+ if(rep) *rep =3D GL_ALPHA;=0A=
+ } else {=0A=
+ if(rep) *rep =3D GL_NONE;=0A=
}=0A=
return ret;=0A=
}=0A=
@@ -273,6 +285,7 @@ static GLuint gen_ati_shader(struct texture_stage_op =
op[MAX_TEXTURES], WineD3D_G=0A=
unsigned int stage;=0A=
GLuint arg0, arg1, arg2, extrarg;=0A=
GLuint dstmod, argmod0, argmod1, argmod2, argmodextra;=0A=
+ GLuint rep0, rep1, rep2;=0A=
GLuint swizzle;=0A=
GLuint tmparg =3D find_tmpreg(op);=0A=
GLuint dstreg;=0A=
@@ -429,9 +442,9 @@ static GLuint gen_ati_shader(struct texture_stage_op =
op[MAX_TEXTURES], WineD3D_G=0A=
dstreg =3D GL_REG_0_ATI;=0A=
}=0A=
=0A=
- arg0 =3D register_for_arg(op[stage].carg0, gl_info, stage, =
&argmod0, tmparg);=0A=
- arg1 =3D register_for_arg(op[stage].carg1, gl_info, stage, =
&argmod1, tmparg);=0A=
- arg2 =3D register_for_arg(op[stage].carg2, gl_info, stage, =
&argmod2, tmparg);=0A=
+ arg0 =3D register_for_arg(op[stage].carg0, gl_info, stage, =
&argmod0, &rep0, tmparg);=0A=
+ arg1 =3D register_for_arg(op[stage].carg1, gl_info, stage, =
&argmod1, &rep1, tmparg);=0A=
+ arg2 =3D register_for_arg(op[stage].carg2, gl_info, stage, =
&argmod2, &rep2, tmparg);=0A=
dstmod =3D GL_NONE;=0A=
argmodextra =3D GL_NONE;=0A=
extrarg =3D GL_NONE;=0A=
@@ -440,11 +453,12 @@ static GLuint gen_ati_shader(struct =
texture_stage_op op[MAX_TEXTURES], WineD3D_G=0A=
case WINED3DTOP_SELECTARG2:=0A=
arg1 =3D arg2;=0A=
argmod1 =3D argmod2;=0A=
+ rep1 =3D rep2;=0A=
case WINED3DTOP_SELECTARG1:=0A=
- TRACE("glColorFragmentOp1ATI(GL_MOV_ATI, %s, GL_NONE, =
GL_NONE, %s, GL_NONE, %s)\n",=0A=
- debug_register(dstreg), debug_register(arg1), =
debug_argmod(argmod1));=0A=
+ TRACE("glColorFragmentOp1ATI(GL_MOV_ATI, %s, GL_NONE, =
GL_NONE, %s, %s, %s)\n",=0A=
+ debug_register(dstreg), debug_register(arg1), =
debug_rep(rep1), debug_argmod(argmod1));=0A=
GL_EXTCALL(glColorFragmentOp1ATI(GL_MOV_ATI, dstreg, =
GL_NONE, GL_NONE,=0A=
- arg1, GL_NONE, =
argmod1));=0A=
+ arg1, rep1, argmod1));=0A=
break;=0A=
=0A=
case WINED3DTOP_MODULATE4X:=0A=
@@ -453,13 +467,13 @@ static GLuint gen_ati_shader(struct =
texture_stage_op op[MAX_TEXTURES], WineD3D_G=0A=
if(dstmod =3D=3D GL_NONE) dstmod =3D GL_2X_BIT_ATI;=0A=
dstmod |=3D GL_SATURATE_BIT_ATI;=0A=
case WINED3DTOP_MODULATE:=0A=
- TRACE("glColorFragmentOp2ATI(GL_MUL_ATI, %s, GL_NONE, =
%s, %s, GL_NONE, %s, %s, GL_NONE, %s)\n",=0A=
+ TRACE("glColorFragmentOp2ATI(GL_MUL_ATI, %s, GL_NONE, =
%s, %s, %s, %s, %s, %s, %s)\n",=0A=
debug_register(dstreg), debug_dstmod(dstmod),=0A=
- debug_register(arg1), debug_argmod(argmod1),=0A=
- debug_register(arg2), debug_argmod(argmod2));=0A=
+ debug_register(arg1), debug_rep(rep1), =
debug_argmod(argmod1),=0A=
+ debug_register(arg2), debug_rep(rep2), =
debug_argmod(argmod2));=0A=
GL_EXTCALL(glColorFragmentOp2ATI(GL_MUL_ATI, dstreg, =
GL_NONE, dstmod,=0A=
- arg1, GL_NONE, argmod1,=0A=
- arg2, GL_NONE, =
argmod2));=0A=
+ arg1, rep1, argmod1,=0A=
+ arg2, rep2, argmod2));=0A=
break;=0A=
=0A=
case WINED3DTOP_ADDSIGNED2X:=0A=
@@ -468,72 +482,72 @@ static GLuint gen_ati_shader(struct =
texture_stage_op op[MAX_TEXTURES], WineD3D_G=0A=
argmodextra =3D GL_BIAS_BIT_ATI;=0A=
case WINED3DTOP_ADD:=0A=
dstmod |=3D GL_SATURATE_BIT_ATI;=0A=
- TRACE("glColorFragmentOp2ATI(GL_ADD_ATI, %s, GL_NONE, =
%s, %s, GL_NONE, %s, %s, GL_NONE, %s)\n",=0A=
+ TRACE("glColorFragmentOp2ATI(GL_ADD_ATI, %s, GL_NONE, =
%s, %s, %s, %s, %s, %s, %s)\n",=0A=
debug_register(dstreg), debug_dstmod(dstmod),=0A=
- debug_register(arg1), debug_argmod(argmod1),=0A=
- debug_register(arg2), debug_argmod(argmodextra | =
argmod2));=0A=
+ debug_register(arg1), debug_rep(rep1), =
debug_argmod(argmod1),=0A=
+ debug_register(arg2), debug_rep(rep2), =
debug_argmod(argmodextra | argmod2));=0A=
GL_EXTCALL(glColorFragmentOp2ATI(GL_ADD_ATI, =
GL_REG_0_ATI, GL_NONE, dstmod,=0A=
- arg1, GL_NONE, argmod1,=0A=
- arg2, GL_NONE, =
argmodextra | argmod2));=0A=
+ arg1, rep1, argmod1,=0A=
+ arg2, rep2, =
argmodextra | argmod2));=0A=
break;=0A=
=0A=
case WINED3DTOP_SUBTRACT:=0A=
dstmod |=3D GL_SATURATE_BIT_ATI;=0A=
- TRACE("glColorFragmentOp2ATI(GL_SUB_ATI, %s, GL_NONE, =
%s, %s, GL_NONE, %s, %s, GL_NONE, %s)\n",=0A=
+ TRACE("glColorFragmentOp2ATI(GL_SUB_ATI, %s, GL_NONE, =
%s, %s, %s, %s, %s, %s, %s)\n",=0A=
debug_register(dstreg), debug_dstmod(dstmod),=0A=
- debug_register(arg1), debug_argmod(argmod1),=0A=
- debug_register(arg2), debug_argmod(argmod2));=0A=
+ debug_register(arg1), debug_rep(rep1), =
debug_argmod(argmod1),=0A=
+ debug_register(arg2), debug_rep(rep2), =
debug_argmod(argmod2));=0A=
GL_EXTCALL(glColorFragmentOp2ATI(GL_SUB_ATI, dstreg, =
GL_NONE, dstmod,=0A=
- arg1, GL_NONE, argmod1,=0A=
- arg2, GL_NONE, =
argmod2));=0A=
+ arg1, rep1, argmod1,=0A=
+ arg2, rep2, argmod2));=0A=
break;=0A=
=0A=
case WINED3DTOP_ADDSMOOTH:=0A=
argmodextra =3D argmod1 & GL_COMP_BIT_ATI ? argmod1 & =
~GL_COMP_BIT_ATI : argmod1 | GL_COMP_BIT_ATI;=0A=
- TRACE("glColorFragmentOp3ATI(GL_MAD_ATI, %s, GL_NONE, =
GL_SATURATE_BIT_ATI, %s, GL_NONE, %s, %s, GL_NONE, %s, %s, GL_NONE, =
%s)\n",=0A=
+ TRACE("glColorFragmentOp3ATI(GL_MAD_ATI, %s, GL_NONE, =
GL_SATURATE_BIT_ATI, %s, %s, %s, %s, %s, %s, %s, %s, %s)\n",=0A=
debug_register(dstreg),=0A=
- debug_register(arg2), debug_argmod(argmod2),=0A=
- debug_register(arg1), debug_argmod(argmodextra),=0A=
- debug_register(arg1), debug_argmod(argmod1));=0A=
+ debug_register(arg2), debug_rep(rep2), =
debug_argmod(argmod2),=0A=
+ debug_register(arg1), debug_rep(rep1), =
debug_argmod(argmodextra),=0A=
+ debug_register(arg1), debug_rep(rep1), =
debug_argmod(argmod1));=0A=
/* Dst =3D arg1 + * arg2(1 -arg 1)=0A=
* =3D arg2 * (1 - arg1) + arg1=0A=
*/=0A=
GL_EXTCALL(glColorFragmentOp3ATI(GL_MAD_ATI, dstreg, =
GL_NONE, GL_SATURATE_BIT_ATI,=0A=
- arg2, GL_NONE, argmod2,=0A=
- arg1, GL_NONE, =
argmodextra,=0A=
- arg1, GL_NONE, =
argmod1));=0A=
+ arg2, rep2, argmod2,=0A=
+ arg1, rep1, =
argmodextra,=0A=
+ arg1, rep1, argmod1));=0A=
break;=0A=
=0A=
case WINED3DTOP_BLENDCURRENTALPHA:=0A=
- if(extrarg =3D=3D GL_NONE) extrarg =3D =
register_for_arg(WINED3DTA_CURRENT, gl_info, stage, NULL, -1);=0A=
+ if(extrarg =3D=3D GL_NONE) extrarg =3D =
register_for_arg(WINED3DTA_CURRENT, gl_info, stage, NULL, NULL, -1);=0A=
case WINED3DTOP_BLENDFACTORALPHA:=0A=
- if(extrarg =3D=3D GL_NONE) extrarg =3D =
register_for_arg(WINED3DTA_TFACTOR, gl_info, stage, NULL, -1);=0A=
+ if(extrarg =3D=3D GL_NONE) extrarg =3D =
register_for_arg(WINED3DTA_TFACTOR, gl_info, stage, NULL, NULL, -1);=0A=
case WINED3DTOP_BLENDTEXTUREALPHA:=0A=
- if(extrarg =3D=3D GL_NONE) extrarg =3D =
register_for_arg(WINED3DTA_TEXTURE, gl_info, stage, NULL, -1);=0A=
+ if(extrarg =3D=3D GL_NONE) extrarg =3D =
register_for_arg(WINED3DTA_TEXTURE, gl_info, stage, NULL, NULL, -1);=0A=
case WINED3DTOP_BLENDDIFFUSEALPHA:=0A=
- if(extrarg =3D=3D GL_NONE) extrarg =3D =
register_for_arg(WINED3DTA_DIFFUSE, gl_info, stage, NULL, -1);=0A=
- TRACE("glColorFragmentOp3ATI(GL_LERP_ATI, %s, GL_NONE, =
GL_NONE, %s, GL_ALPHA, GL_NONE, %s, GL_NONE, %s, %s, GL_NONE, %s)\n",=0A=
+ if(extrarg =3D=3D GL_NONE) extrarg =3D =
register_for_arg(WINED3DTA_DIFFUSE, gl_info, stage, NULL, NULL, -1);=0A=
+ TRACE("glColorFragmentOp3ATI(GL_LERP_ATI, %s, GL_NONE, =
GL_NONE, %s, GL_ALPHA, GL_NONE, %s, %s, %s, %s, %s, %s)\n",=0A=
debug_register(dstreg),=0A=
debug_register(extrarg),=0A=
- debug_register(arg1), debug_argmod(argmod1),=0A=
- debug_register(arg2), debug_argmod(argmod2));=0A=
+ debug_register(arg1), debug_rep(rep1), =
debug_argmod(argmod1),=0A=
+ debug_register(arg2), debug_rep(rep2), =
debug_argmod(argmod2));=0A=
GL_EXTCALL(glColorFragmentOp3ATI(GL_LERP_ATI, dstreg, =
GL_NONE, GL_NONE,=0A=
extrarg, GL_ALPHA, =
GL_NONE,=0A=
- arg1, GL_NONE, argmod1,=0A=
- arg2, GL_NONE, =
argmod2));=0A=
+ arg1, rep1, argmod1,=0A=
+ arg2, rep2, argmod2));=0A=
break;=0A=
=0A=
case WINED3DTOP_BLENDTEXTUREALPHAPM:=0A=
- arg0 =3D register_for_arg(WINED3DTA_TEXTURE, gl_info, =
stage, NULL, -1);=0A=
- TRACE("glColorFragmentOp3ATI(GL_MAD_ATI, %s, GL_NONE, =
GL_NONE, %s, GL_NONE, %s, %s, GL_ALPHA, GL_COMP_BIT_ATI, %s, GL_NONE, =
%s)\n",=0A=
+ arg0 =3D register_for_arg(WINED3DTA_TEXTURE, gl_info, =
stage, NULL, NULL, -1);=0A=
+ TRACE("glColorFragmentOp3ATI(GL_MAD_ATI, %s, GL_NONE, =
GL_NONE, %s, %s, %s, %s, GL_ALPHA, GL_COMP_BIT_ATI, %s, %s, %s)\n",=0A=
debug_register(dstreg),=0A=
- debug_register(arg2), debug_argmod(argmod2),=0A=
+ debug_register(arg2), debug_rep(rep2), =
debug_argmod(argmod2),=0A=
debug_register(arg0),=0A=
- debug_register(arg1), debug_argmod(argmod1));=0A=
+ debug_register(arg1), debug_rep(rep1), =
debug_argmod(argmod1));=0A=
GL_EXTCALL(glColorFragmentOp3ATI(GL_MAD_ATI, dstreg, =
GL_NONE, GL_NONE,=0A=
- arg2, GL_NONE, =
argmod2,=0A=
+ arg2, rep2, argmod2,=0A=
arg0, GL_ALPHA, =
GL_COMP_BIT_ATI,=0A=
- arg1, GL_NONE, =
argmod1));=0A=
+ arg1, rep1, argmod1));=0A=
break;=0A=
=0A=
/* D3DTOP_PREMODULATE ???? */=0A=
@@ -542,63 +556,63 @@ static GLuint gen_ati_shader(struct =
texture_stage_op op[MAX_TEXTURES], WineD3D_G=0A=
argmodextra =3D argmod1 & GL_COMP_BIT_ATI ? argmod1 & =
~GL_COMP_BIT_ATI : argmod1 | GL_COMP_BIT_ATI;=0A=
case WINED3DTOP_MODULATEALPHA_ADDCOLOR:=0A=
if(!argmodextra) argmodextra =3D argmod1;=0A=
- TRACE("glColorFragmentOp3ATI(GL_MAD_ATI, %s, GL_NONE, =
GL_SATURATE_BIT_ATI, %s, GL_NONE, %s, %s, GL_ALPHA, %s, %s, GL_NONE, =
%s)\n",=0A=
+ TRACE("glColorFragmentOp3ATI(GL_MAD_ATI, %s, GL_NONE, =
GL_SATURATE_BIT_ATI, %s, %s, %s, %s, GL_ALPHA, %s, %s, %s, %s)\n",=0A=
debug_register(dstreg),=0A=
- debug_register(arg2), debug_argmod(argmod2),=0A=
- debug_register(arg1), debug_argmod(argmodextra), =
debug_register(arg1), debug_argmod(arg1));=0A=
+ debug_register(arg2), debug_rep(rep2), =
debug_argmod(argmod2),=0A=
+ debug_register(arg1), debug_argmod(argmodextra), =
debug_register(arg1), debug_rep(rep1), debug_argmod(arg1));=0A=
GL_EXTCALL(glColorFragmentOp3ATI(GL_MAD_ATI, dstreg, =
GL_NONE, GL_SATURATE_BIT_ATI,=0A=
- arg2, GL_NONE, =
argmod2,=0A=
+ arg2, rep2, argmod2,=0A=
arg1, GL_ALPHA, =
argmodextra,=0A=
- arg1, GL_NONE, =
argmod1));=0A=
+ arg1, rep1, argmod1));=0A=
break;=0A=
=0A=
case WINED3DTOP_MODULATEINVCOLOR_ADDALPHA:=0A=
argmodextra =3D argmod1 & GL_COMP_BIT_ATI ? argmod1 & =
~GL_COMP_BIT_ATI : argmod1 | GL_COMP_BIT_ATI;=0A=
case WINED3DTOP_MODULATECOLOR_ADDALPHA:=0A=
if(!argmodextra) argmodextra =3D argmod1;=0A=
- TRACE("glColorFragmentOp3ATI(GL_MAD_ATI, %s, GL_NONE, =
GL_SATURATE_BIT_ATI, %s, GL_NONE, %s, %s, GL_NONE, %s, %s, GL_ALPHA, =
%s)\n",=0A=
+ TRACE("glColorFragmentOp3ATI(GL_MAD_ATI, %s, GL_NONE, =
GL_SATURATE_BIT_ATI, %s, %s, %s, %s, %s, %s, %s, GL_ALPHA, %s)\n",=0A=
debug_register(dstreg),=0A=
- debug_register(arg2), debug_argmod(argmod2),=0A=
- debug_register(arg1), debug_argmod(argmodextra),=0A=
+ debug_register(arg2), debug_rep(rep2), =
debug_argmod(argmod2),=0A=
+ debug_register(arg1), debug_rep(rep1), =
debug_argmod(argmodextra),=0A=
debug_register(arg1), debug_argmod(argmod1));=0A=
GL_EXTCALL(glColorFragmentOp3ATI(GL_MAD_ATI, dstreg, =
GL_NONE, GL_SATURATE_BIT_ATI,=0A=
- arg2, GL_NONE, =
argmod2,=0A=
- arg1, GL_NONE, =
argmodextra,=0A=
+ arg2, rep2, argmod2,=0A=
+ arg1, rep1, =
argmodextra,=0A=
arg1, GL_ALPHA, =
argmod1));=0A=
break;=0A=
=0A=
case WINED3DTOP_DOTPRODUCT3:=0A=
- TRACE("glColorFragmentOp2ATI(GL_DOT3_ATI, %s, GL_NONE, =
GL_4X_BIT_ATI | GL_SATURATE_BIT_ATI, %s, GL_NONE, %s, %s, GL_NONE, =
%s)\n",=0A=
+ TRACE("glColorFragmentOp2ATI(GL_DOT3_ATI, %s, GL_NONE, =
GL_4X_BIT_ATI | GL_SATURATE_BIT_ATI, %s, %s, %s, %s, %s, %s)\n",=0A=
debug_register(dstreg),=0A=
- debug_register(arg1), debug_argmod(argmod1 | =
GL_BIAS_BIT_ATI),=0A=
- debug_register(arg2), debug_argmod(argmod2 | =
GL_BIAS_BIT_ATI));=0A=
+ debug_register(arg1), debug_rep(rep1), =
debug_argmod(argmod1 | GL_BIAS_BIT_ATI),=0A=
+ debug_register(arg2), debug_rep(rep2), =
debug_argmod(argmod2 | GL_BIAS_BIT_ATI));=0A=
GL_EXTCALL(glColorFragmentOp2ATI(GL_DOT3_ATI, dstreg, =
GL_NONE, GL_4X_BIT_ATI | GL_SATURATE_BIT_ATI,=0A=
- arg1, GL_NONE, argmod1 =
| GL_BIAS_BIT_ATI,=0A=
- arg2, GL_NONE, argmod2 =
| GL_BIAS_BIT_ATI));=0A=
+ arg1, rep1, argmod1 | =
GL_BIAS_BIT_ATI,=0A=
+ arg2, rep2, argmod2 | =
GL_BIAS_BIT_ATI));=0A=
break;=0A=
=0A=
case WINED3DTOP_MULTIPLYADD:=0A=
- TRACE("glColorFragmentOp3ATI(GL_MAD_ATI, %s, GL_NONE, =
GL_SATURATE_BIT_ATI, %s, GL_NONE, %s, %s, GL_NONE, %s, %s, GL_NONE, =
%s)\n",=0A=
+ TRACE("glColorFragmentOp3ATI(GL_MAD_ATI, %s, GL_NONE, =
GL_SATURATE_BIT_ATI, %s, %s, %s, %s, %s, %s, %s, %s, %s)\n",=0A=
debug_register(dstreg),=0A=
- debug_register(arg1), debug_argmod(argmod1),=0A=
- debug_register(arg2), debug_argmod(argmod2),=0A=
- debug_register(arg0), debug_argmod(argmod0));=0A=
+ debug_register(arg1), debug_rep(rep1), =
debug_argmod(argmod1),=0A=
+ debug_register(arg2), debug_rep(rep2), =
debug_argmod(argmod2),=0A=
+ debug_register(arg0), debug_rep(rep0), =
debug_argmod(argmod0));=0A=
GL_EXTCALL(glColorFragmentOp3ATI(GL_MAD_ATI, dstreg, =
GL_NONE, GL_SATURATE_BIT_ATI,=0A=
- arg1, GL_NONE, argmod1,=0A=
- arg2, GL_NONE, argmod2,=0A=
- arg0, GL_NONE, =
argmod0));=0A=
+ arg1, rep1, argmod1,=0A=
+ arg2, rep2, argmod2,=0A=
+ arg0, rep0, argmod0));=0A=
break;=0A=
=0A=
case WINED3DTOP_LERP:=0A=
- TRACE("glColorFragmentOp3ATI(GL_LERP_ATI, %s, GL_NONE, =
GL_NONE, %s, GL_NONE, %s, %s, GL_NONE, %s, %s, GL_NONE, %s)\n",=0A=
+ TRACE("glColorFragmentOp3ATI(GL_LERP_ATI, %s, GL_NONE, =
GL_NONE, %s, %s, %s, %s, %s, %s, %s, %s, %s)\n",=0A=
debug_register(dstreg),=0A=
- debug_register(arg1), debug_argmod(argmod1),=0A=
- debug_register(arg2), debug_argmod(argmod2),=0A=
- debug_register(arg0), debug_argmod(argmod0));=0A=
+ debug_register(arg1), debug_rep(rep1), =
debug_argmod(argmod1),=0A=
+ debug_register(arg2), debug_rep(rep2), =
debug_argmod(argmod2),=0A=
+ debug_register(arg0), debug_rep(rep0), =
debug_argmod(argmod0));=0A=
GL_EXTCALL(glColorFragmentOp3ATI(GL_LERP_ATI, dstreg, =
GL_NONE, GL_NONE,=0A=
- arg0, GL_NONE, argmod0,=0A=
- arg1, GL_NONE, argmod1,=0A=
- arg2, GL_NONE, =
argmod2));=0A=
+ arg0, rep0, argmod0,=0A=
+ arg1, rep1, argmod1,=0A=
+ arg2, rep2, argmod2));=0A=
break;=0A=
=0A=
case WINED3DTOP_BUMPENVMAP:=0A=
@@ -609,9 +623,9 @@ static GLuint gen_ati_shader(struct texture_stage_op =
op[MAX_TEXTURES], WineD3D_G=0A=
default: FIXME("Unhandled color operation %d on stage =
%d\n", op[stage].cop, stage);=0A=
}=0A=
=0A=
- arg0 =3D register_for_arg(op[stage].aarg0, gl_info, stage, =
&argmod0, tmparg);=0A=
- arg1 =3D register_for_arg(op[stage].aarg1, gl_info, stage, =
&argmod1, tmparg);=0A=
- arg2 =3D register_for_arg(op[stage].aarg2, gl_info, stage, =
&argmod2, tmparg);=0A=
+ arg0 =3D register_for_arg(op[stage].aarg0, gl_info, stage, =
&argmod0, NULL, tmparg);=0A=
+ arg1 =3D register_for_arg(op[stage].aarg1, gl_info, stage, =
&argmod1, NULL, tmparg);=0A=
+ arg2 =3D register_for_arg(op[stage].aarg2, gl_info, stage, =
&argmod2, NULL, tmparg);=0A=
dstmod =3D GL_NONE;=0A=
argmodextra =3D GL_NONE;=0A=
extrarg =3D GL_NONE;=0A=
@@ -695,13 +709,13 @@ static GLuint gen_ati_shader(struct =
texture_stage_op op[MAX_TEXTURES], WineD3D_G=0A=
break;=0A=
=0A=
case WINED3DTOP_BLENDCURRENTALPHA:=0A=
- if(extrarg =3D=3D GL_NONE) extrarg =3D =
register_for_arg(WINED3DTA_CURRENT, gl_info, stage, NULL, -1);=0A=
+ if(extrarg =3D=3D GL_NONE) extrarg =3D =
register_for_arg(WINED3DTA_CURRENT, gl_info, stage, NULL, NULL, -1);=0A=
case WINED3DTOP_BLENDFACTORALPHA:=0A=
- if(extrarg =3D=3D GL_NONE) extrarg =3D =
register_for_arg(WINED3DTA_TFACTOR, gl_info, stage, NULL, -1);=0A=
+ if(extrarg =3D=3D GL_NONE) extrarg =3D =
register_for_arg(WINED3DTA_TFACTOR, gl_info, stage, NULL, NULL, -1);=0A=
case WINED3DTOP_BLENDTEXTUREALPHA:=0A=
- if(extrarg =3D=3D GL_NONE) extrarg =3D =
register_for_arg(WINED3DTA_TEXTURE, gl_info, stage, NULL, -1);=0A=
+ if(extrarg =3D=3D GL_NONE) extrarg =3D =
register_for_arg(WINED3DTA_TEXTURE, gl_info, stage, NULL, NULL, -1);=0A=
case WINED3DTOP_BLENDDIFFUSEALPHA:=0A=
- if(extrarg =3D=3D GL_NONE) extrarg =3D =
register_for_arg(WINED3DTA_DIFFUSE, gl_info, stage, NULL, -1);=0A=
+ if(extrarg =3D=3D GL_NONE) extrarg =3D =
register_for_arg(WINED3DTA_DIFFUSE, gl_info, stage, NULL, NULL, -1);=0A=
TRACE("glAlphaFragmentOp3ATI(GL_LERP_ATI, %s, =
GL_NONE, %s, GL_ALPHA, GL_NONE, %s, GL_NONE, %s, %s, GL_NONE, %s)\n",=0A=
debug_register(dstreg),=0A=
debug_register(extrarg),=0A=
@@ -714,7 +728,7 @@ static GLuint gen_ati_shader(struct texture_stage_op =
op[MAX_TEXTURES], WineD3D_G=0A=
break;=0A=
=0A=
case WINED3DTOP_BLENDTEXTUREALPHAPM:=0A=
- arg0 =3D register_for_arg(WINED3DTA_TEXTURE, gl_info, =
stage, NULL, -1);=0A=
+ arg0 =3D register_for_arg(WINED3DTA_TEXTURE, gl_info, =
stage, NULL, NULL, -1);=0A=
TRACE("glAlphaFragmentOp3ATI(GL_MAD_ATI, %s, =
GL_NONE, %s, GL_NONE, %s, %s, GL_ALPHA, GL_COMP_BIT_ATI, %s, GL_NONE, =
%s)\n",=0A=
debug_register(dstreg),=0A=
debug_register(arg2), debug_argmod(argmod2),=0A=
-- =0A=
1.5.6.4=0A=
=0A=
------=_NextPart_000_001F_01C90695.AB73B330--
More information about the wine-patches
mailing list