isl/gen9: Fix slice offset calculation for 1D array images.
authorFrancisco Jerez <currojerez@riseup.net>
Tue, 26 Jan 2016 03:20:57 +0000 (19:20 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Tue, 26 Jan 2016 23:14:50 +0000 (15:14 -0800)
The X component of the offset is set to the layer index times layer
height which is obviously bogus, return the vertical offset of the
slice as Y component instead.  Fixes a few image load/store tests that
use 1D arrays on SKL when forcing it to fall back to untyped reads and
writes.

src/isl/isl.c

index acc80eae59c624447afd0734f3fa8062e188bcf4..6015c5c305c8158721f1338953fa0af9594d4f08 100644 (file)
@@ -1260,7 +1260,7 @@ get_image_offset_sa_gen9_1d(const struct isl_surf *surf,
    const struct isl_extent3d image_align_sa =
       isl_surf_get_image_alignment_sa(surf);
 
-   uint32_t x = layer * isl_surf_get_array_pitch_sa_rows(surf);
+   uint32_t x = 0;
 
    for (uint32_t l = 0; l < level; ++l) {
       uint32_t W = isl_minify(W0, l);
@@ -1270,7 +1270,7 @@ get_image_offset_sa_gen9_1d(const struct isl_surf *surf,
    }
 
    *x_offset_sa = x;
-   *y_offset_sa = 0;
+   *y_offset_sa = layer * isl_surf_get_array_pitch_sa_rows(surf);
 }
 
 void