mesa: set Q=1 for OPCODE_TEX execution

Q should not be significant for OPCODE_TEX, but it winds up getting
passed to the compute_lambda() function.  Make sure it's 1.0 to
prevent garbage values, which is effectively what we get when the
swizzle is coord.xyzz (which is what GLSL gives us).

Part of the fix for piglit's fbo-generatemipmap-array test.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
Brian Paul 2011-08-18 15:54:53 -06:00
parent 352cab498a
commit 0eb18ee557
1 changed files with 8 additions and 0 deletions

View File

@ -1651,6 +1651,14 @@ _mesa_execute_program(struct gl_context * ctx,
GLfloat texcoord[4], color[4];
fetch_vector4(&inst->SrcReg[0], machine, texcoord);
/* For TEX, texcoord.Q should not be used and its value should not
* matter (at most, we pass coord.xyz to texture3D() in GLSL).
* Set Q=1 so that FetchTexelDeriv() doesn't get a garbage value
* which is effectively what happens when the texcoord swizzle
* is .xyzz
*/
texcoord[3] = 1.0f;
fetch_texel(ctx, machine, inst, texcoord, 0.0, color);
if (DEBUG_PROG) {