mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-17 02:40:37 +01:00
Calculate render inputs for tcl stage correctly (hint: they aren't the
same as tnl->render_inputs). Fixes recent tcl problems.
This commit is contained in:
parent
c9a69a6968
commit
846eb333ae
1 changed files with 32 additions and 1 deletions
|
|
@ -370,6 +370,7 @@ static GLboolean r200_run_tcl_render( GLcontext *ctx,
|
|||
r200ContextPtr rmesa = R200_CONTEXT(ctx);
|
||||
TNLcontext *tnl = TNL_CONTEXT(ctx);
|
||||
struct vertex_buffer *VB = &tnl->vb;
|
||||
GLuint inputs = VERT_BIT_POS | VERT_BIT_COLOR0;
|
||||
GLuint i;
|
||||
|
||||
/* TODO: separate this from the swtnl pipeline
|
||||
|
|
@ -383,8 +384,38 @@ static GLboolean r200_run_tcl_render( GLcontext *ctx,
|
|||
if (VB->Count == 0)
|
||||
return GL_FALSE;
|
||||
|
||||
/* Validate state:
|
||||
*/
|
||||
if (rmesa->NewGLState)
|
||||
r200ValidateState( ctx );
|
||||
|
||||
/* NOTE: inputs != tnl->render_inputs - these are the untransformed
|
||||
* inputs.
|
||||
*/
|
||||
if (ctx->Light.Enabled) {
|
||||
inputs |= VERT_BIT_NORMAL;
|
||||
if (ctx->_TriangleCaps & DD_SEPARATE_SPECULAR) {
|
||||
inputs |= VERT_BIT_COLOR1;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ctx->Fog.FogCoordinateSource == GL_FOG_COORD ) {
|
||||
inputs |= VERT_BIT_FOG;
|
||||
}
|
||||
|
||||
for (i = 0 ; i < ctx->Const.MaxTextureUnits; i++) {
|
||||
if (ctx->Texture.Unit[i]._ReallyEnabled) {
|
||||
if (rmesa->TexGenNeedNormals[i]) {
|
||||
inputs |= VERT_BIT_NORMAL;
|
||||
}
|
||||
inputs |= VERT_BIT_TEX(i);
|
||||
}
|
||||
}
|
||||
|
||||
/* Do the actual work:
|
||||
*/
|
||||
r200ReleaseArrays( ctx, ~0 /* stage->changed_inputs */ );
|
||||
r200EmitArrays( ctx, tnl->render_inputs );
|
||||
r200EmitArrays( ctx, inputs );
|
||||
|
||||
rmesa->tcl.Elts = VB->Elts;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue