mesa: ensure UsesFogFragCoord value is set for non-glsl shaders

With recent changes to support frontfacing in glsl, it is necessary
to ensure that the UsesFogFragCoord value is accurate in all shaders.
We were previously not setting it for fixed-function and ARB_fs shaders.
This commit is contained in:
Keith Whitwell 2009-07-02 11:28:56 +01:00
parent 578230dbbf
commit b3e8e1cd4c
2 changed files with 8 additions and 0 deletions

View File

@ -3922,6 +3922,13 @@ _mesa_parse_arb_fragment_program(GLcontext* ctx, GLenum target,
if (program->FogOption)
program->Base.InputsRead |= FRAG_BIT_FOGC;
/* XXX: assume that ARB fragment programs don't have access to the
* FrontFacing and PointCoord values stuffed into the fog
* coordinate in GLSL shaders.
*/
if (program->Base.InputsRead & FRAG_BIT_FOGC)
program->UsesFogFragCoord = TRUE;
if (program->Base.Instructions)
_mesa_free(program->Base.Instructions);

View File

@ -396,6 +396,7 @@ _mesa_append_fog_code(GLcontext *ctx, struct gl_fragment_program *fprog)
fprog->Base.Instructions = newInst;
fprog->Base.NumInstructions = inst - newInst;
fprog->Base.InputsRead |= FRAG_BIT_FOGC;
fprog->UsesFogFragCoord = GL_TRUE;
/* XXX do this? fprog->FogOption = GL_NONE; */
}