wined3d: Implement TSSARGTEMP with register combiners.
This commit is contained in:
parent
0f1c2370b1
commit
bd68237096
|
@ -1170,10 +1170,12 @@ static void shader_none_get_caps(WINED3DDEVTYPE devtype, WineD3D_GL_Info *gl_inf
|
|||
pCaps->PixelShaderVersion = 0;
|
||||
pCaps->PixelShader1xMaxValue = 0.0;
|
||||
|
||||
if (GL_SUPPORT(NV_REGISTER_COMBINERS)) {
|
||||
pCaps->PrimitiveMiscCaps |= WINED3DPMISCCAPS_TSSARGTEMP;
|
||||
}
|
||||
|
||||
/* The caps below can be supported but aren't handled yet in utils.c 'd3dta_to_combiner_input', disable them until support is fixed */
|
||||
#if 0
|
||||
if (GL_SUPPORT(NV_REGISTER_COMBINERS))
|
||||
pCaps->PrimitiveMiscCaps |= WINED3DPMISCCAPS_TSSARGTEMP;
|
||||
if (GL_SUPPORT(NV_REGISTER_COMBINERS2))
|
||||
pCaps->PrimitiveMiscCaps |= WINED3DPMISCCAPS_PERSTAGECONSTANT;
|
||||
#endif
|
||||
|
|
|
@ -1997,7 +1997,8 @@ static void tex_colorop(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3D
|
|||
stateblock->textureState[stage][WINED3DTSS_COLORARG1],
|
||||
stateblock->textureState[stage][WINED3DTSS_COLORARG2],
|
||||
stateblock->textureState[stage][WINED3DTSS_COLORARG0],
|
||||
mapped_stage);
|
||||
mapped_stage,
|
||||
stateblock->textureState[stage][WINED3DTSS_RESULTARG]);
|
||||
|
||||
/* In register combiners bump mapping is done in the stage AFTER the one that has the bump map operation set,
|
||||
* thus the texture shader may have to be updated
|
||||
|
@ -2103,7 +2104,8 @@ static void tex_alphaop(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3D
|
|||
if (GL_SUPPORT(NV_REGISTER_COMBINERS)) {
|
||||
set_tex_op_nvrc((IWineD3DDevice *)stateblock->wineD3DDevice, TRUE, stage,
|
||||
op, arg1, arg2, arg0,
|
||||
mapped_stage);
|
||||
mapped_stage,
|
||||
stateblock->textureState[stage][WINED3DTSS_RESULTARG]);
|
||||
} else {
|
||||
set_tex_op((IWineD3DDevice *)stateblock->wineD3DDevice, TRUE, stage,
|
||||
op, arg1, arg2, arg0);
|
||||
|
@ -2457,18 +2459,6 @@ static void tex_bumpenvloffset(DWORD state, IWineD3DStateBlockImpl *stateblock,
|
|||
}
|
||||
}
|
||||
|
||||
static void tex_resultarg(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
|
||||
DWORD stage = (state - STATE_TEXTURESTAGE(0, 0)) / WINED3D_HIGHEST_TEXTURE_STATE;
|
||||
|
||||
if(stage >= GL_LIMITS(texture_stages)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(stateblock->textureState[stage][WINED3DTSS_RESULTARG] != WINED3DTA_CURRENT) {
|
||||
FIXME("WINED3DTSS_RESULTARG not supported yet\n");
|
||||
}
|
||||
}
|
||||
|
||||
static void sampler(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) {
|
||||
DWORD sampler = state - STATE_SAMPLER(0);
|
||||
DWORD mapped_stage = stateblock->wineD3DDevice->texUnitMap[sampler];
|
||||
|
@ -4172,7 +4162,7 @@ const struct StateEntry FFPStateTable[] =
|
|||
{ /*0, 25, WINED3DTSS_ADDRESSW */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*0, 26, WINED3DTSS_COLORARG0 */ STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP), tex_colorop },
|
||||
{ /*0, 27, WINED3DTSS_ALPHAARG0 */ STATE_TEXTURESTAGE(0, WINED3DTSS_ALPHAOP), tex_alphaop },
|
||||
{ /*0, 28, WINED3DTSS_RESULTARG */ STATE_TEXTURESTAGE(0, WINED3DTSS_RESULTARG), tex_resultarg },
|
||||
{ /*0, 28, WINED3DTSS_RESULTARG */ STATE_TEXTURESTAGE(0, WINED3DTSS_COLOROP), tex_colorop },
|
||||
{ /*0, 29, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*0, 30, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*0, 31, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
|
@ -4205,7 +4195,7 @@ const struct StateEntry FFPStateTable[] =
|
|||
{ /*1, 25, WINED3DTSS_ADDRESSW */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*1, 26, WINED3DTSS_COLORARG0 */ STATE_TEXTURESTAGE(1, WINED3DTSS_COLOROP), tex_colorop },
|
||||
{ /*1, 27, WINED3DTSS_ALPHAARG0 */ STATE_TEXTURESTAGE(1, WINED3DTSS_ALPHAOP), tex_alphaop },
|
||||
{ /*1, 28, WINED3DTSS_RESULTARG */ STATE_TEXTURESTAGE(1, WINED3DTSS_RESULTARG), tex_resultarg },
|
||||
{ /*0, 28, WINED3DTSS_RESULTARG */ STATE_TEXTURESTAGE(1, WINED3DTSS_COLOROP), tex_colorop },
|
||||
{ /*1, 29, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*1, 30, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*1, 31, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
|
@ -4238,7 +4228,7 @@ const struct StateEntry FFPStateTable[] =
|
|||
{ /*2, 25, WINED3DTSS_ADDRESSW */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*2, 26, WINED3DTSS_COLORARG0 */ STATE_TEXTURESTAGE(2, WINED3DTSS_COLOROP), tex_colorop },
|
||||
{ /*2, 27, WINED3DTSS_ALPHAARG0 */ STATE_TEXTURESTAGE(2, WINED3DTSS_ALPHAOP), tex_alphaop },
|
||||
{ /*2, 28, WINED3DTSS_RESULTARG */ STATE_TEXTURESTAGE(2, WINED3DTSS_RESULTARG), tex_resultarg },
|
||||
{ /*0, 28, WINED3DTSS_RESULTARG */ STATE_TEXTURESTAGE(2, WINED3DTSS_COLOROP), tex_colorop },
|
||||
{ /*2, 29, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*2, 30, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*2, 31, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
|
@ -4271,7 +4261,7 @@ const struct StateEntry FFPStateTable[] =
|
|||
{ /*3, 25, WINED3DTSS_ADDRESSW */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*3, 26, WINED3DTSS_COLORARG0 */ STATE_TEXTURESTAGE(3, WINED3DTSS_COLOROP), tex_colorop },
|
||||
{ /*3, 27, WINED3DTSS_ALPHAARG0 */ STATE_TEXTURESTAGE(3, WINED3DTSS_ALPHAOP), tex_alphaop },
|
||||
{ /*3, 28, WINED3DTSS_RESULTARG */ STATE_TEXTURESTAGE(3, WINED3DTSS_RESULTARG), tex_resultarg },
|
||||
{ /*0, 28, WINED3DTSS_RESULTARG */ STATE_TEXTURESTAGE(3, WINED3DTSS_COLOROP), tex_colorop },
|
||||
{ /*3, 29, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*3, 30, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*3, 31, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
|
@ -4304,7 +4294,7 @@ const struct StateEntry FFPStateTable[] =
|
|||
{ /*4, 25, WINED3DTSS_ADDRESSW */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*4, 26, WINED3DTSS_COLORARG0 */ STATE_TEXTURESTAGE(4, WINED3DTSS_COLOROP), tex_colorop },
|
||||
{ /*4, 27, WINED3DTSS_ALPHAARG0 */ STATE_TEXTURESTAGE(4, WINED3DTSS_ALPHAOP), tex_alphaop },
|
||||
{ /*4, 28, WINED3DTSS_RESULTARG */ STATE_TEXTURESTAGE(4, WINED3DTSS_RESULTARG), tex_resultarg },
|
||||
{ /*0, 28, WINED3DTSS_RESULTARG */ STATE_TEXTURESTAGE(4, WINED3DTSS_COLOROP), tex_colorop },
|
||||
{ /*4, 29, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*4, 30, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*4, 31, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
|
@ -4337,7 +4327,7 @@ const struct StateEntry FFPStateTable[] =
|
|||
{ /*5, 25, WINED3DTSS_ADDRESSW */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*5, 26, WINED3DTSS_COLORARG0 */ STATE_TEXTURESTAGE(5, WINED3DTSS_COLOROP), tex_colorop },
|
||||
{ /*5, 27, WINED3DTSS_ALPHAARG0 */ STATE_TEXTURESTAGE(5, WINED3DTSS_ALPHAOP), tex_alphaop },
|
||||
{ /*5, 28, WINED3DTSS_RESULTARG */ STATE_TEXTURESTAGE(5, WINED3DTSS_RESULTARG), tex_resultarg },
|
||||
{ /*0, 28, WINED3DTSS_RESULTARG */ STATE_TEXTURESTAGE(5, WINED3DTSS_COLOROP), tex_colorop },
|
||||
{ /*5, 29, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*5, 30, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*5, 31, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
|
@ -4370,7 +4360,7 @@ const struct StateEntry FFPStateTable[] =
|
|||
{ /*6, 25, WINED3DTSS_ADDRESSW */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*6, 26, WINED3DTSS_COLORARG0 */ STATE_TEXTURESTAGE(6, WINED3DTSS_COLOROP), tex_colorop },
|
||||
{ /*6, 27, WINED3DTSS_ALPHAARG0 */ STATE_TEXTURESTAGE(6, WINED3DTSS_ALPHAOP), tex_alphaop },
|
||||
{ /*6, 28, WINED3DTSS_RESULTARG */ STATE_TEXTURESTAGE(6, WINED3DTSS_RESULTARG), tex_resultarg },
|
||||
{ /*0, 28, WINED3DTSS_RESULTARG */ STATE_TEXTURESTAGE(6, WINED3DTSS_COLOROP), tex_colorop },
|
||||
{ /*6, 29, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*6, 30, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*6, 31, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
|
@ -4403,7 +4393,7 @@ const struct StateEntry FFPStateTable[] =
|
|||
{ /*7, 25, WINED3DTSS_ADDRESSW */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*7, 26, WINED3DTSS_COLORARG0 */ STATE_TEXTURESTAGE(7, WINED3DTSS_COLOROP), tex_colorop },
|
||||
{ /*7, 27, WINED3DTSS_ALPHAARG0 */ STATE_TEXTURESTAGE(7, WINED3DTSS_ALPHAOP), tex_alphaop },
|
||||
{ /*7, 28, WINED3DTSS_RESULTARG */ STATE_TEXTURESTAGE(7, WINED3DTSS_RESULTARG), tex_resultarg },
|
||||
{ /*0, 28, WINED3DTSS_RESULTARG */ STATE_TEXTURESTAGE(7, WINED3DTSS_COLOROP), tex_colorop },
|
||||
{ /*7, 29, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*7, 30, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
{ /*7, 31, undefined */ 0 /* -> sampler state in ddraw / d3d8 */, state_undefined },
|
||||
|
|
|
@ -1125,8 +1125,6 @@ static GLenum d3dta_to_combiner_input(DWORD d3dta, DWORD stage, INT texture_idx)
|
|||
return GL_SECONDARY_COLOR_NV;
|
||||
|
||||
case WINED3DTA_TEMP:
|
||||
/* TODO: Support WINED3DTSS_RESULTARG */
|
||||
FIXME("WINED3DTA_TEMP, not properly supported.\n");
|
||||
return GL_SPARE1_NV;
|
||||
|
||||
case WINED3DTA_CONSTANT:
|
||||
|
@ -1182,11 +1180,12 @@ static BOOL is_invalid_op(IWineD3DDeviceImpl *This, int stage, WINED3DTEXTUREOP
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEXTUREOP op, DWORD arg1, DWORD arg2, DWORD arg3, INT texture_idx) {
|
||||
void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEXTUREOP op, DWORD arg1, DWORD arg2, DWORD arg3, INT texture_idx, DWORD dst) {
|
||||
IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl*)iface;
|
||||
tex_op_args tex_op_args = {{0}, {0}, {0}};
|
||||
GLenum portion = is_alpha ? GL_ALPHA : GL_RGB;
|
||||
GLenum target = GL_COMBINER0_NV + stage;
|
||||
GLenum output;
|
||||
|
||||
TRACE("stage %d, is_alpha %d, op %s, arg1 %#x, arg2 %#x, arg3 %#x, texture_idx %d\n",
|
||||
stage, is_alpha, debug_d3dtop(op), arg1, arg2, arg3, texture_idx);
|
||||
|
@ -1206,6 +1205,12 @@ void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEX
|
|||
&tex_op_args.mapping[2], &tex_op_args.component_usage[2], texture_idx);
|
||||
|
||||
|
||||
if(dst == WINED3DTA_TEMP) {
|
||||
output = GL_SPARE1_NV;
|
||||
} else {
|
||||
output = GL_SPARE0_NV;
|
||||
}
|
||||
|
||||
/* This is called by a state handler which has the gl lock held and a context for the thread */
|
||||
switch(op)
|
||||
{
|
||||
|
@ -1237,7 +1242,7 @@ void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEX
|
|||
GL_ZERO, GL_UNSIGNED_INVERT_NV, portion));
|
||||
|
||||
/* Output */
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, GL_SPARE0_NV, GL_DISCARD_NV,
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, output, GL_DISCARD_NV,
|
||||
GL_DISCARD_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
break;
|
||||
|
||||
|
@ -1252,13 +1257,13 @@ void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEX
|
|||
|
||||
/* Output */
|
||||
if (op == WINED3DTOP_MODULATE) {
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, GL_SPARE0_NV, GL_DISCARD_NV,
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, output, GL_DISCARD_NV,
|
||||
GL_DISCARD_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
} else if (op == WINED3DTOP_MODULATE2X) {
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, GL_SPARE0_NV, GL_DISCARD_NV,
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, output, GL_DISCARD_NV,
|
||||
GL_DISCARD_NV, GL_SCALE_BY_TWO_NV, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
} else if (op == WINED3DTOP_MODULATE4X) {
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, GL_SPARE0_NV, GL_DISCARD_NV,
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, output, GL_DISCARD_NV,
|
||||
GL_DISCARD_NV, GL_SCALE_BY_FOUR_NV, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
}
|
||||
break;
|
||||
|
@ -1279,13 +1284,13 @@ void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEX
|
|||
/* Output */
|
||||
if (op == WINED3DTOP_ADD) {
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
|
||||
GL_SPARE0_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
output, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
} else if (op == WINED3DTOP_ADDSIGNED) {
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
|
||||
GL_SPARE0_NV, GL_NONE, GL_BIAS_BY_NEGATIVE_ONE_HALF_NV, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
output, GL_NONE, GL_BIAS_BY_NEGATIVE_ONE_HALF_NV, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
} else if (op == WINED3DTOP_ADDSIGNED2X) {
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
|
||||
GL_SPARE0_NV, GL_SCALE_BY_TWO_NV, GL_BIAS_BY_NEGATIVE_ONE_HALF_NV, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
output, GL_SCALE_BY_TWO_NV, GL_BIAS_BY_NEGATIVE_ONE_HALF_NV, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -1302,7 +1307,7 @@ void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEX
|
|||
|
||||
/* Output */
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
|
||||
GL_SPARE0_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
output, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
break;
|
||||
|
||||
case WINED3DTOP_ADDSMOOTH:
|
||||
|
@ -1318,7 +1323,7 @@ void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEX
|
|||
|
||||
/* Output */
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
|
||||
GL_SPARE0_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
output, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
break;
|
||||
|
||||
case WINED3DTOP_BLENDDIFFUSEALPHA:
|
||||
|
@ -1353,7 +1358,7 @@ void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEX
|
|||
|
||||
/* Output */
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
|
||||
GL_SPARE0_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
output, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1371,7 +1376,7 @@ void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEX
|
|||
|
||||
/* Output */
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
|
||||
GL_SPARE0_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
output, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
break;
|
||||
|
||||
case WINED3DTOP_MODULATECOLOR_ADDALPHA:
|
||||
|
@ -1388,7 +1393,7 @@ void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEX
|
|||
|
||||
/* Output */
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
|
||||
GL_SPARE0_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
output, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
break;
|
||||
|
||||
case WINED3DTOP_MODULATEINVALPHA_ADDCOLOR:
|
||||
|
@ -1405,7 +1410,7 @@ void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEX
|
|||
|
||||
/* Output */
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
|
||||
GL_SPARE0_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
output, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
break;
|
||||
|
||||
case WINED3DTOP_MODULATEINVCOLOR_ADDALPHA:
|
||||
|
@ -1422,7 +1427,7 @@ void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEX
|
|||
|
||||
/* Output */
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
|
||||
GL_SPARE0_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
output, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
break;
|
||||
|
||||
case WINED3DTOP_DOTPRODUCT3:
|
||||
|
@ -1434,7 +1439,7 @@ void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEX
|
|||
tex_op_args.input[1], GL_EXPAND_NORMAL_NV, tex_op_args.component_usage[1]));
|
||||
|
||||
/* Output */
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, GL_SPARE0_NV, GL_DISCARD_NV,
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, output, GL_DISCARD_NV,
|
||||
GL_DISCARD_NV, GL_NONE, GL_NONE, GL_TRUE, GL_FALSE, GL_FALSE));
|
||||
break;
|
||||
|
||||
|
@ -1451,7 +1456,7 @@ void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEX
|
|||
|
||||
/* Output */
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
|
||||
GL_SPARE0_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
output, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
break;
|
||||
|
||||
case WINED3DTOP_LERP:
|
||||
|
@ -1467,7 +1472,7 @@ void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEX
|
|||
|
||||
/* Output */
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, GL_DISCARD_NV, GL_DISCARD_NV,
|
||||
GL_SPARE0_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
output, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
break;
|
||||
|
||||
case WINED3DTOP_BUMPENVMAPLUMINANCE:
|
||||
|
@ -1482,6 +1487,7 @@ void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEX
|
|||
tex_op_args.input[1], tex_op_args.mapping[1], tex_op_args.component_usage[1]));
|
||||
GL_EXTCALL(glCombinerInputNV(target, portion, GL_VARIABLE_B_NV,
|
||||
GL_ZERO, GL_UNSIGNED_INVERT_NV, portion));
|
||||
/* Always pass through to CURRENT, ignore temp arg */
|
||||
GL_EXTCALL(glCombinerOutputNV(target, portion, GL_SPARE0_NV, GL_DISCARD_NV,
|
||||
GL_DISCARD_NV, GL_NONE, GL_NONE, GL_FALSE, GL_FALSE, GL_FALSE));
|
||||
break;
|
||||
|
|
|
@ -1723,7 +1723,7 @@ const char *debug_d3ddegree(WINED3DDEGREETYPE order);
|
|||
GLenum StencilOp(DWORD op);
|
||||
GLenum CompareFunc(DWORD func);
|
||||
void set_tex_op(IWineD3DDevice *iface, BOOL isAlpha, int Stage, WINED3DTEXTUREOP op, DWORD arg1, DWORD arg2, DWORD arg3);
|
||||
void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEXTUREOP op, DWORD arg1, DWORD arg2, DWORD arg3, INT texture_idx);
|
||||
void set_tex_op_nvrc(IWineD3DDevice *iface, BOOL is_alpha, int stage, WINED3DTEXTUREOP op, DWORD arg1, DWORD arg2, DWORD arg3, INT texture_idx, DWORD dst);
|
||||
void set_texture_matrix(const float *smat, DWORD flags, BOOL calculatedCoords, BOOL transformed, DWORD coordtype);
|
||||
|
||||
void surface_set_compatible_renderbuffer(IWineD3DSurface *iface, unsigned int width, unsigned int height);
|
||||
|
|
Loading…
Reference in New Issue