ilo: fix PCB alloc asserts on Gen7.5 GT3
authorChia-I Wu <olvaffe@gmail.com>
Wed, 18 Feb 2015 20:26:29 +0000 (13:26 -0700)
committerChia-I Wu <olvaffe@gmail.com>
Wed, 18 Feb 2015 21:20:29 +0000 (14:20 -0700)
GT3 has two slices and all limits are doubled.

src/gallium/drivers/ilo/ilo_builder_3d_top.h

index 30c787d7f3a52b4130427600363f6aea2816294a..d359252aa8c956760b28944953e45a83d0a3d3b7 100644 (file)
@@ -90,7 +90,9 @@ gen7_3dstate_push_constant_alloc(struct ilo_builder *builder,
                         GEN6_RENDER_SUBTYPE_3D |
                         subop;
    const uint8_t cmd_len = 2;
-   const int slice_count = (ilo_dev_gen(builder->dev) >= ILO_GEN(8)) ? 2 : 1;
+   const int slice_count = ((ilo_dev_gen(builder->dev) == ILO_GEN(7.5) &&
+                             builder->dev->gt == 3) ||
+                            ilo_dev_gen(builder->dev) >= ILO_GEN(8)) ? 2 : 1;
    uint32_t *dw;
    int end;
 
@@ -138,6 +140,8 @@ gen7_3dstate_push_constant_alloc(struct ilo_builder *builder,
       size = 15 * slice_count;
    }
 
+   assert(offset % slice_count == 0 && size % slice_count == 0);
+
    ilo_builder_batch_pointer(builder, cmd_len, &dw);
 
    dw[0] = cmd | (cmd_len - 2);