Browse Source

recalculate state on drawable changes

tags/mesa_20060201
Keith Whitwell 19 years ago
parent
commit
cabecbd314
2 changed files with 26 additions and 3 deletions
  1. 21
    2
      src/mesa/drivers/dri/i915/intel_context.c
  2. 5
    1
      src/mesa/drivers/dri/i915/intel_state.c

+ 21
- 2
src/mesa/drivers/dri/i915/intel_context.c View File

@@ -140,8 +140,14 @@ static void intelBufferSize(GLframebuffer *buffer,
* to be correct.
*/
LOCK_HARDWARE(intel);
*width = intel->driDrawable->w;
*height = intel->driDrawable->h;
if (intel->driDrawable) {
*width = intel->driDrawable->w;
*height = intel->driDrawable->h;
}
else {
*width = 0;
*height = 0;
}
UNLOCK_HARDWARE(intel);
}

@@ -528,6 +534,19 @@ void intelWindowMoved( intelContextPtr intel )
intelSetFrontClipRects( intel );
}
}

/* Set state we know depends on drawable parameters:
*/
{
GLcontext *ctx = &intel->ctx;

ctx->Driver.Scissor( ctx, ctx->Scissor.X, ctx->Scissor.Y,
ctx->Scissor.Width, ctx->Scissor.Height );
ctx->Driver.DepthRange( ctx,
ctx->Viewport.Near,
ctx->Viewport.Far );
}
}

GLboolean intelUnbindContext(__DRIcontextPrivate *driContextPriv)

+ 5
- 1
src/mesa/drivers/dri/i915/intel_state.c View File

@@ -230,6 +230,10 @@ static void intelCalcViewport( GLcontext *ctx )
intelContextPtr intel = INTEL_CONTEXT(ctx);
const GLfloat *v = ctx->Viewport._WindowMap.m;
GLfloat *m = intel->ViewportMatrix.m;
GLint h = 0;

if (intel->driDrawable)
h = intel->driDrawable->h + SUBPIXEL_Y;

/* See also intel_translate_vertex. SUBPIXEL adjustments can be done
* via state vars, too.
@@ -237,7 +241,7 @@ static void intelCalcViewport( GLcontext *ctx )
m[MAT_SX] = v[MAT_SX];
m[MAT_TX] = v[MAT_TX] + SUBPIXEL_X;
m[MAT_SY] = - v[MAT_SY];
m[MAT_TY] = - v[MAT_TY] + intel->driDrawable->h + SUBPIXEL_Y;
m[MAT_TY] = - v[MAT_TY] + h;
m[MAT_SZ] = v[MAT_SZ] * intel->depth_scale;
m[MAT_TZ] = v[MAT_TZ] * intel->depth_scale;
}

Loading…
Cancel
Save