intel: Fallback to software if drawable size is > MaxRenderbufferSize
authorIan Romanick <ian.d.romanick@intel.com>
Tue, 15 Dec 2009 20:14:04 +0000 (12:14 -0800)
committerIan Romanick <ian.d.romanick@intel.com>
Tue, 15 Dec 2009 20:37:09 +0000 (12:37 -0800)
This prevents the mystery blank window if, for example, glxgears is
resized larger than 2048 wide on 915.  Since the Intel drivers in Mesa
7.6 lack GTT mapped fallbacks, the performance is a slideshow at
best.  On Mesa 7.7 and later the performance is much better.

src/mesa/drivers/dri/intel/intel_buffers.c

index e7357e78c539256da3c2816f4b0efb98e0bebd07..4b8ac364f7906656e2be0b254e730ed1667478cb 100644 (file)
@@ -172,10 +172,15 @@ intel_draw_buffer(GLcontext * ctx, struct gl_framebuffer *fb)
       return;
    }
 
-   /*
-    * How many color buffers are we drawing into?
+   /* How many color buffers are we drawing into?
+    *
+    * If there are zero buffers or the buffer is too big, don't configure any
+    * regions for hardware drawing.  We'll fallback to software below.  Not
+    * having regions set makes some of the software fallback paths faster.
     */
-   if (fb->_NumColorDrawBuffers == 0) {
+   if ((fb->Width > ctx->Const.MaxRenderbufferSize)
+       || (fb->Height > ctx->Const.MaxRenderbufferSize)
+       || (fb->_NumColorDrawBuffers == 0)) {
       /* writing to 0  */
       colorRegions[0] = NULL;
       intel->constant_cliprect = GL_TRUE;