intel: fix subslice computation from topology data
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Fri, 4 Oct 2019 16:37:14 +0000 (19:37 +0300)
committerLionel Landwerlin <lionel.g.landwerlin@intel.com>
Sat, 5 Oct 2019 20:05:03 +0000 (23:05 +0300)
We're missing the offset of the slice in the subslice mask...

This worked for most platforms that don't have first slice fused off
because we would reread the same mask from slice0 again and again...

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: c1900f5b0f ("intel: devinfo: add helper functions to fill fusing masks values")
Gitlab: https://gitlab.freedesktop.org/mesa/mesa/issues/1869
Reviewed-by: Mark Janes <mark.a.janes@intel.com>
src/intel/dev/gen_device_info.c

index 85fa978f9c1a031ffd60af9b227fb5227bc23ce1..0ab3c354df51c943e5a3fe65f36c3918e30b891c 100644 (file)
@@ -1104,7 +1104,7 @@ update_from_topology(struct gen_device_info *devinfo,
 
       for (int b = 0; b < devinfo->subslice_slice_stride; b++) {
          devinfo->num_subslices[s] +=
-            __builtin_popcount(devinfo->subslice_masks[b]);
+            __builtin_popcount(devinfo->subslice_masks[s * devinfo->subslice_slice_stride + b]);
       }
       n_subslices += devinfo->num_subslices[s];
    }