i965: Don't emit MOVs with undefined registers for Gen4 point clipping.
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 28 Feb 2018 21:22:22 +0000 (13:22 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 28 Feb 2018 23:03:51 +0000 (15:03 -0800)
Gen4 point clipping calls brw_clip_tri_alloc_regs with nr_verts == 0,
which means that c->reg.vertex[] isn't initialized.  It then emits MOVs
to stomp components of those uninitialized registers to 0.

This started causing assertions after Matt's recent series, when those
uninitialized registers started getting BRW_REGISTER_TYPE_NF, which
definitely doesn't exist on Gen4-5.

Reviewed-by: Matt Turner <mattst88@gmail.com>
src/intel/compiler/brw_clip_tri.c

index 8ccf9e49b205bfa85c853bc277f34f2e12607f45..194e6ab1d26f39b1859d6d3af98f68b8e3223eb5 100644 (file)
@@ -68,7 +68,7 @@ void brw_clip_tri_alloc_regs( struct brw_clip_compile *c,
       i += c->nr_regs;
    }
 
-   if (c->vue_map.num_slots % 2) {
+   if (c->vue_map.num_slots % 2 && nr_verts > 0) {
       /* The VUE has an odd number of slots so the last register is only half
        * used.  Fill the second half with zero.
        */