Skip to content
Snippets Groups Projects
Commit 891073fe authored by Emma Anholt's avatar Emma Anholt
Browse files

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.
(cherry picked from commit debf751a)
parent dcaec739
No related branches found
No related tags found
Loading
......@@ -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;
}
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;
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);
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment