mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-20 21:50:26 +01:00
i915: Fix incorrect depth scaling when enabling/disabling depth buffers.
We were updating our new viewport using the old buffers' _WindowMap.m. We can do less math and avoid using that deprecated matrix by just folding the viewport calculation right in to the driver. Fixes piglit fbo-depthtex.
This commit is contained in:
parent
79fee3a76b
commit
debf751aea
1 changed files with 18 additions and 23 deletions
|
|
@ -401,31 +401,26 @@ void
|
|||
intelCalcViewport(struct gl_context * ctx)
|
||||
{
|
||||
struct intel_context *intel = intel_context(ctx);
|
||||
const GLfloat *v = ctx->Viewport._WindowMap.m;
|
||||
const GLfloat depthScale = 1.0F / ctx->DrawBuffer->_DepthMaxF;
|
||||
GLfloat *m = intel->ViewportMatrix.m;
|
||||
GLfloat yScale, yBias;
|
||||
|
||||
if (ctx->DrawBuffer->Name) {
|
||||
/* User created FBO */
|
||||
/* y=0=bottom */
|
||||
yScale = 1.0;
|
||||
yBias = 0.0;
|
||||
if (ctx->DrawBuffer->Name == 0) {
|
||||
_math_matrix_viewport(&intel->ViewportMatrix,
|
||||
ctx->Viewport.X,
|
||||
ctx->DrawBuffer->Height - ctx->Viewport.Y,
|
||||
ctx->Viewport.Width,
|
||||
-ctx->Viewport.Height,
|
||||
ctx->Viewport.Near,
|
||||
ctx->Viewport.Far,
|
||||
1.0);
|
||||
} else {
|
||||
_math_matrix_viewport(&intel->ViewportMatrix,
|
||||
ctx->Viewport.X,
|
||||
ctx->Viewport.Y,
|
||||
ctx->Viewport.Width,
|
||||
ctx->Viewport.Height,
|
||||
ctx->Viewport.Near,
|
||||
ctx->Viewport.Far,
|
||||
1.0);
|
||||
}
|
||||
else {
|
||||
/* window buffer, y=0=top */
|
||||
yScale = -1.0;
|
||||
yBias = ctx->DrawBuffer->Height;
|
||||
}
|
||||
|
||||
m[MAT_SX] = v[MAT_SX];
|
||||
m[MAT_TX] = v[MAT_TX];
|
||||
|
||||
m[MAT_SY] = v[MAT_SY] * yScale;
|
||||
m[MAT_TY] = v[MAT_TY] * yScale + yBias;
|
||||
|
||||
m[MAT_SZ] = v[MAT_SZ] * depthScale;
|
||||
m[MAT_TZ] = v[MAT_TZ] * depthScale;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue