Don't update span->array->z[] values from SLANG_FRAGMENT_FIXED_FRAGDEPTH.
This restores the behaviour of Mesa 6.5.1, fixing a regression in 6.5.2. See bug 9345. Revisit someday...
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 6.6
|
||||
* Version: 6.5.3
|
||||
*
|
||||
* Copyright (C) 2006 Brian Paul All Rights Reserved.
|
||||
*
|
||||
@@ -103,18 +103,20 @@ _swrast_exec_arbshader(GLcontext *ctx, SWspan *span)
|
||||
span->writeAll = GL_FALSE;
|
||||
}
|
||||
else {
|
||||
GLboolean zWritten = GL_FALSE; /* temp hack (bug 9345) */
|
||||
(**pro).UpdateFixedVarying(pro, SLANG_FRAGMENT_FIXED_FRAGCOLOR,
|
||||
vec, 0, 4 * sizeof(GLfloat), GL_FALSE);
|
||||
COPY_4V(span->array->color.sz4.rgba[i], vec);
|
||||
|
||||
(**pro).UpdateFixedVarying(pro, SLANG_FRAGMENT_FIXED_FRAGDEPTH, vec, 0,
|
||||
sizeof (GLfloat), GL_FALSE);
|
||||
if (vec[0] <= 0.0f)
|
||||
span->array->z[i] = 0;
|
||||
else if (vec[0] >= 1.0f)
|
||||
span->array->z[i] = ctx->DrawBuffer->_DepthMax;
|
||||
else
|
||||
span->array->z[i] = IROUND(vec[0] * ctx->DrawBuffer->_DepthMaxF);
|
||||
if (zWritten) {
|
||||
(**pro).UpdateFixedVarying(pro, SLANG_FRAGMENT_FIXED_FRAGDEPTH,
|
||||
vec, 0, sizeof (GLfloat), GL_FALSE);
|
||||
if (vec[0] <= 0.0f)
|
||||
span->array->z[i] = 0;
|
||||
else if (vec[0] >= 1.0f)
|
||||
span->array->z[i] = ctx->DrawBuffer->_DepthMax;
|
||||
else
|
||||
span->array->z[i] = IROUND(vec[0] * ctx->DrawBuffer->_DepthMaxF);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user