diff options
author | Eric Anholt <[email protected]> | 2009-01-29 16:45:08 -0800 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2009-01-30 13:46:37 -0800 |
commit | ac0dfbdf0f5e5dea08ec717ae8c4e1e141b15c05 (patch) | |
tree | a5f0b3ac285f3410eccaeea0f5911cb78e8b6cb4 | |
parent | 3ee21f30cda27e0ee1357f930163526622ba9434 (diff) |
i915: Only call CalcViewport from DrawBuffers instead of Viewport.
This saves an inadvertent round-trip to the X Server on DrawBuffers, which was
hurting some metaops.
-rw-r--r-- | src/mesa/drivers/dri/i915/i915_state.c | 3 | ||||
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_buffers.c | 13 | ||||
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_buffers.h | 3 |
3 files changed, 10 insertions, 9 deletions
diff --git a/src/mesa/drivers/dri/i915/i915_state.c b/src/mesa/drivers/dri/i915/i915_state.c index b0334d9d795..ecb763e1277 100644 --- a/src/mesa/drivers/dri/i915/i915_state.c +++ b/src/mesa/drivers/dri/i915/i915_state.c @@ -41,6 +41,7 @@ #include "intel_fbo.h" #include "intel_screen.h" #include "intel_batchbuffer.h" +#include "intel_buffers.h" #include "i915_context.h" #include "i915_reg.h" @@ -309,7 +310,7 @@ i915DepthMask(GLcontext * ctx, GLboolean flag) * - depthrange * - window pos/size or FBO size */ -static void +void intelCalcViewport(GLcontext * ctx) { struct intel_context *intel = intel_context(ctx); diff --git a/src/mesa/drivers/dri/intel/intel_buffers.c b/src/mesa/drivers/dri/intel/intel_buffers.c index 13555b2e0e6..7f2144abd4b 100644 --- a/src/mesa/drivers/dri/intel/intel_buffers.c +++ b/src/mesa/drivers/dri/intel/intel_buffers.c @@ -284,14 +284,11 @@ intel_draw_buffer(GLcontext * ctx, struct gl_framebuffer *fb) fb->_NumColorDrawBuffers); /* update viewport since it depends on window size */ - if (ctx->Driver.Viewport) { - ctx->Driver.Viewport(ctx, ctx->Viewport.X, ctx->Viewport.Y, - ctx->Viewport.Width, ctx->Viewport.Height); - } - else { - ctx->NewState |= _NEW_VIEWPORT; - } - +#ifdef I915 + intelCalcViewport(ctx); +#else + ctx->NewState |= _NEW_VIEWPORT; +#endif /* Set state we know depends on drawable parameters: */ if (ctx->Driver.Scissor) diff --git a/src/mesa/drivers/dri/intel/intel_buffers.h b/src/mesa/drivers/dri/intel/intel_buffers.h index 97ae8bf738f..6069d38e9eb 100644 --- a/src/mesa/drivers/dri/intel/intel_buffers.h +++ b/src/mesa/drivers/dri/intel/intel_buffers.h @@ -53,5 +53,8 @@ void intel_get_cliprects(struct intel_context *intel, struct drm_clip_rect **cliprects, unsigned int *num_cliprects, int *x_off, int *y_off); +#ifdef I915 +void intelCalcViewport(GLcontext * ctx); +#endif #endif /* INTEL_BUFFERS_H */ |