radeonsi: fix calculation of valid RB mask per SE
authorNicolai Hähnle <nicolai.haehnle@amd.com>
Fri, 17 Jun 2016 08:48:53 +0000 (10:48 +0200)
committerNicolai Hähnle <nicolai.haehnle@amd.com>
Mon, 20 Jun 2016 16:28:31 +0000 (18:28 +0200)
The old calculation treated too many RBs as disabled.

Cc: 11.0 11.1 11.2 12.0 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/drivers/radeonsi/si_state.c

index 0c52eee7a585b71bf4d82e49f2532604c9eea6bb..397ce660aa89178d10b48bcb7934b66774b0fc20 100644 (file)
@@ -3522,10 +3522,15 @@ si_write_harvested_raster_configs(struct si_context *sctx,
        unsigned se_mask[4];
        unsigned se;
 
-       se_mask[0] = ((1 << rb_per_se) - 1) & rb_mask;
-       se_mask[1] = (se_mask[0] << rb_per_se) & rb_mask;
-       se_mask[2] = (se_mask[1] << rb_per_se) & rb_mask;
-       se_mask[3] = (se_mask[2] << rb_per_se) & rb_mask;
+       se_mask[0] = ((1 << rb_per_se) - 1);
+       se_mask[1] = (se_mask[0] << rb_per_se);
+       se_mask[2] = (se_mask[1] << rb_per_se);
+       se_mask[3] = (se_mask[2] << rb_per_se);
+
+       se_mask[0] &= rb_mask;
+       se_mask[1] &= rb_mask;
+       se_mask[2] &= rb_mask;
+       se_mask[3] &= rb_mask;
 
        assert(num_se == 1 || num_se == 2 || num_se == 4);
        assert(sh_per_se == 1 || sh_per_se == 2);