Mesa (master): i915: Only call CalcViewport from DrawBuffers instead of Viewport.

Eric Anholt anholt at kemper.freedesktop.org
Fri Jan 30 21:48:03 UTC 2009


Module: Mesa
Branch: master
Commit: ac0dfbdf0f5e5dea08ec717ae8c4e1e141b15c05
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ac0dfbdf0f5e5dea08ec717ae8c4e1e141b15c05

Author: Eric Anholt <eric at anholt.net>
Date:   Thu Jan 29 16:45:08 2009 -0800

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.

---

 src/mesa/drivers/dri/i915/i915_state.c     |    3 ++-
 src/mesa/drivers/dri/intel/intel_buffers.c |   13 +++++--------
 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 b0334d9..ecb763e 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 13555b2..7f2144a 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 97ae8bf..6069d38 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 */




More information about the mesa-commit mailing list