i965: Disable guardband clipping on SandyBridge for odd dimensions
authorvadym.shovkoplias <vadim.shovkoplias@gmail.com>
Thu, 24 May 2018 11:16:46 +0000 (14:16 +0300)
committerRafael Antognolli <rafael.antognolli@intel.com>
Fri, 27 Jul 2018 17:07:44 +0000 (10:07 -0700)
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104388
Signed-off-by: Andriy Khulap <andriy.khulap@globallogic.com>
Acked-by: Rafael Antognolli <rafael.antognolli@intel.com>
src/mesa/drivers/dri/i965/genX_state_upload.c

index 9e0a17b9d932fa1536965fe800351e775bd88673..672035c36ef138dc79d6389b8c2f9fdcf140fad6 100644 (file)
@@ -2508,6 +2508,17 @@ brw_calculate_guardband_size(uint32_t fb_width, uint32_t fb_height,
     */
    const float gb_size = GEN_GEN >= 7 ? 16384.0f : 8192.0f;
 
+   /* Workaround: prevent gpu hangs on SandyBridge
+    * by disabling guardband clipping for odd dimensions.
+    */
+   if (GEN_GEN == 6 && (fb_width & 1 || fb_height & 1)) {
+      *xmin = -1.0f;
+      *xmax =  1.0f;
+      *ymin = -1.0f;
+      *ymax =  1.0f;
+      return;
+   }
+
    if (m00 != 0 && m11 != 0) {
       /* First, we compute the screen-space render area */
       const float ss_ra_xmin = MIN3(        0, m30 + m00, m30 - m00);