diff options
| -rw-r--r-- | src/mesa/drivers/dri/i915/intel_context.c | 23 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/i915/intel_state.c | 6 | 
2 files changed, 26 insertions, 3 deletions
diff --git a/src/mesa/drivers/dri/i915/intel_context.c b/src/mesa/drivers/dri/i915/intel_context.c index d39e45d0b3..170d1df25d 100644 --- a/src/mesa/drivers/dri/i915/intel_context.c +++ b/src/mesa/drivers/dri/i915/intel_context.c @@ -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) diff --git a/src/mesa/drivers/dri/i915/intel_state.c b/src/mesa/drivers/dri/i915/intel_state.c index 2343d061f5..a2f2b20738 100644 --- a/src/mesa/drivers/dri/i915/intel_state.c +++ b/src/mesa/drivers/dri/i915/intel_state.c @@ -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;  }  | 
