i965: don't spawn GS thread for LINELOOP on Sandybridge
authorXiang, Haihao <haihao.xiang@intel.com>
Mon, 27 Dec 2010 08:39:08 +0000 (16:39 +0800)
committerZhenyu Wang <zhenyuw@linux.intel.com>
Mon, 27 Dec 2010 09:05:58 +0000 (17:05 +0800)
LINELOOP is converted to LINESTRIP at the beginning of the 3D pipeline.
This fixes https://bugs.freedesktop.org/show_bug.cgi?id=32596

src/mesa/drivers/dri/i965/brw_gs.c

index 73b41fdbcef703c390f4ac0a07ef085b63ccad6b..70c451d071db0d5ad6da6d3a79bce067d2c5b1c3 100644 (file)
@@ -96,6 +96,9 @@ static void compile_gs_prog( struct brw_context *brw,
       brw_gs_quad_strip( &c, key );
       break;
    case GL_LINE_LOOP:
+      /* Gen6: LINELOOP is converted to LINESTRIP at the beginning of the 3D pipeline */
+      if (intel->gen == 6)
+          return;
       brw_gs_lines( &c );
       break;
    case GL_LINES:
@@ -189,7 +192,7 @@ static void populate_key( struct brw_context *brw,
    }
 
    if (intel->gen == 6)
-       prim_gs_always = brw->primitive == GL_LINE_LOOP;
+       prim_gs_always = 0;
    else
        prim_gs_always = brw->primitive == GL_QUADS ||
                        brw->primitive == GL_QUAD_STRIP ||