Module: Mesa
Branch: vulkan
Commit: 265d4c415ca6b41bdd9a4a3e9f311d8f6e69cef1
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=265d4c415ca6b41bdd9a4a3e9f311d8f6e69cef1

Author: Nanley Chery <nanley.g.ch...@intel.com>
Date:   Wed Feb 24 12:10:44 2016 -0800

isl: Fix isl_surf_get_image_intratile_offset_el()

Consecutive tiles are separated by the size of the tile, not by the
logical tile width.

v2: Remove extra subtraction (Ville)
    Add parenthesis (Jason)
v3: Update the unit tests for the function

Signed-off-by: Nanley Chery <nanley.g.ch...@intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>

---

 src/intel/isl/isl.c                                |  2 +-
 .../isl/tests/isl_surf_get_image_offset_test.c     | 70 +++++++++++-----------
 2 files changed, 36 insertions(+), 36 deletions(-)

diff --git a/src/intel/isl/isl.c b/src/intel/isl/isl.c
index c1d47d5..3b6bee1 100644
--- a/src/intel/isl/isl.c
+++ b/src/intel/isl/isl.c
@@ -1378,7 +1378,7 @@ isl_surf_get_image_intratile_offset_el(const struct 
isl_device *dev,
    uint32_t total_x_offset_B = total_x_offset_el * fmtl->bs;
    uint32_t small_x_offset_B = total_x_offset_B % tile_info.width;
    uint32_t small_x_offset_el = small_x_offset_B / fmtl->bs;
-   uint32_t big_x_offset_B = total_x_offset_B - small_x_offset_B;
+   uint32_t big_x_offset_B = (total_x_offset_B / tile_info.width) * 
tile_info.size;
 
    *base_address_offset = big_y_offset_B + big_x_offset_B;
    *x_offset_el = small_x_offset_el;
diff --git a/src/intel/isl/tests/isl_surf_get_image_offset_test.c 
b/src/intel/isl/tests/isl_surf_get_image_offset_test.c
index cda8583..34b336e 100644
--- a/src/intel/isl/tests/isl_surf_get_image_offset_test.c
+++ b/src/intel/isl/tests/isl_surf_get_image_offset_test.c
@@ -191,14 +191,14 @@ 
test_bdw_2d_r8g8b8a8_unorm_512x512_array01_samples01_noaux_tiley0(void)
 
    t_assert_intratile_offset_el(&dev, &surf, 0, 0, 0,      0x0, 0,  0);
    t_assert_intratile_offset_el(&dev, &surf, 1, 0, 0, 0x100000, 0,  0);
-   t_assert_intratile_offset_el(&dev, &surf, 2, 0, 0, 0x100400, 0,  0);
-   t_assert_intratile_offset_el(&dev, &surf, 3, 0, 0, 0x140400, 0,  0);
-   t_assert_intratile_offset_el(&dev, &surf, 4, 0, 0, 0x160400, 0,  0);
-   t_assert_intratile_offset_el(&dev, &surf, 5, 0, 0, 0x170400, 0,  0);
-   t_assert_intratile_offset_el(&dev, &surf, 6, 0, 0, 0x170400, 0, 16);
-   t_assert_intratile_offset_el(&dev, &surf, 7, 0, 0, 0x170400, 0, 24);
-   t_assert_intratile_offset_el(&dev, &surf, 8, 0, 0, 0x170400, 0, 28);
-   t_assert_intratile_offset_el(&dev, &surf, 9, 0, 0, 0x180400, 0,  0);
+   t_assert_intratile_offset_el(&dev, &surf, 2, 0, 0, 0x108000, 0,  0);
+   t_assert_intratile_offset_el(&dev, &surf, 3, 0, 0, 0x148000, 0,  0);
+   t_assert_intratile_offset_el(&dev, &surf, 4, 0, 0, 0x168000, 0,  0);
+   t_assert_intratile_offset_el(&dev, &surf, 5, 0, 0, 0x178000, 0,  0);
+   t_assert_intratile_offset_el(&dev, &surf, 6, 0, 0, 0x178000, 0, 16);
+   t_assert_intratile_offset_el(&dev, &surf, 7, 0, 0, 0x178000, 0, 24);
+   t_assert_intratile_offset_el(&dev, &surf, 8, 0, 0, 0x178000, 0, 28);
+   t_assert_intratile_offset_el(&dev, &surf, 9, 0, 0, 0x188000, 0,  0);
 }
 
 static void
@@ -260,41 +260,41 @@ 
test_bdw_2d_r8g8b8a8_unorm_1024x1024_array06_samples01_noaux_tiley0(void)
    /* array layer 0 */
    t_assert_intratile_offset_el(&dev, &surf,  0, 0, 0,         0x0, 0,  0);
    t_assert_intratile_offset_el(&dev, &surf,  1, 0, 0,    0x400000, 0,  0);
-   t_assert_intratile_offset_el(&dev, &surf,  2, 0, 0,    0x400800, 0,  0);
-   t_assert_intratile_offset_el(&dev, &surf,  3, 0, 0,    0x500800, 0,  0);
-   t_assert_intratile_offset_el(&dev, &surf,  4, 0, 0,    0x580800, 0,  0);
-   t_assert_intratile_offset_el(&dev, &surf,  5, 0, 0,    0x5c0800, 0,  0);
-   t_assert_intratile_offset_el(&dev, &surf,  6, 0, 0,    0x5e0800, 0,  0);
-   t_assert_intratile_offset_el(&dev, &surf,  7, 0, 0,    0x5e0800, 0, 16);
-   t_assert_intratile_offset_el(&dev, &surf,  8, 0, 0,    0x5e0800, 0, 24);
-   t_assert_intratile_offset_el(&dev, &surf,  9, 0, 0,    0x5e0800, 0, 28);
-   t_assert_intratile_offset_el(&dev, &surf, 10, 0, 0,    0x600800, 0,  0);
+   t_assert_intratile_offset_el(&dev, &surf,  2, 0, 0,    0x410000, 0,  0);
+   t_assert_intratile_offset_el(&dev, &surf,  3, 0, 0,    0x510000, 0,  0);
+   t_assert_intratile_offset_el(&dev, &surf,  4, 0, 0,    0x590000, 0,  0);
+   t_assert_intratile_offset_el(&dev, &surf,  5, 0, 0,    0x5d0000, 0,  0);
+   t_assert_intratile_offset_el(&dev, &surf,  6, 0, 0,    0x5f0000, 0,  0);
+   t_assert_intratile_offset_el(&dev, &surf,  7, 0, 0,    0x5f0000, 0, 16);
+   t_assert_intratile_offset_el(&dev, &surf,  8, 0, 0,    0x5f0000, 0, 24);
+   t_assert_intratile_offset_el(&dev, &surf,  9, 0, 0,    0x5f0000, 0, 28);
+   t_assert_intratile_offset_el(&dev, &surf, 10, 0, 0,    0x610000, 0,  0);
 
    /* array layer 1 */
    t_assert_intratile_offset_el(&dev, &surf,  0, 1, 0,    0x600000, 0,  4);
    t_assert_intratile_offset_el(&dev, &surf,  1, 1, 0,    0xa00000, 0,  4);
-   t_assert_intratile_offset_el(&dev, &surf,  2, 1, 0,    0xa00800, 0,  4);
-   t_assert_intratile_offset_el(&dev, &surf,  3, 1, 0,    0xb00800, 0,  4);
-   t_assert_intratile_offset_el(&dev, &surf,  4, 1, 0,    0xb80800, 0,  4);
-   t_assert_intratile_offset_el(&dev, &surf,  5, 1, 0,    0xbc0800, 0,  4);
-   t_assert_intratile_offset_el(&dev, &surf,  6, 1, 0,    0xbe0800, 0,  4);
-   t_assert_intratile_offset_el(&dev, &surf,  7, 1, 0,    0xbe0800, 0, 20);
-   t_assert_intratile_offset_el(&dev, &surf,  8, 1, 0,    0xbe0800, 0, 28);
-   t_assert_intratile_offset_el(&dev, &surf,  9, 1, 0,    0xc00800, 0,  0);
-   t_assert_intratile_offset_el(&dev, &surf, 10, 1, 0,    0xc00800, 0,  4);
+   t_assert_intratile_offset_el(&dev, &surf,  2, 1, 0,    0xa10000, 0,  4);
+   t_assert_intratile_offset_el(&dev, &surf,  3, 1, 0,    0xb10000, 0,  4);
+   t_assert_intratile_offset_el(&dev, &surf,  4, 1, 0,    0xb90000, 0,  4);
+   t_assert_intratile_offset_el(&dev, &surf,  5, 1, 0,    0xbd0000, 0,  4);
+   t_assert_intratile_offset_el(&dev, &surf,  6, 1, 0,    0xbf0000, 0,  4);
+   t_assert_intratile_offset_el(&dev, &surf,  7, 1, 0,    0xbf0000, 0, 20);
+   t_assert_intratile_offset_el(&dev, &surf,  8, 1, 0,    0xbf0000, 0, 28);
+   t_assert_intratile_offset_el(&dev, &surf,  9, 1, 0,    0xc10000, 0,  0);
+   t_assert_intratile_offset_el(&dev, &surf, 10, 1, 0,    0xc10000, 0,  4);
 
    /* array layer 2 */
    t_assert_intratile_offset_el(&dev, &surf,  0, 2, 0,    0xc00000, 0,  8);
    t_assert_intratile_offset_el(&dev, &surf,  1, 2, 0,   0x1000000, 0,  8);
-   t_assert_intratile_offset_el(&dev, &surf,  2, 2, 0,   0x1000800, 0,  8);
-   t_assert_intratile_offset_el(&dev, &surf,  3, 2, 0,   0x1100800, 0,  8);
-   t_assert_intratile_offset_el(&dev, &surf,  4, 2, 0,   0x1180800, 0,  8);
-   t_assert_intratile_offset_el(&dev, &surf,  5, 2, 0,   0x11c0800, 0,  8);
-   t_assert_intratile_offset_el(&dev, &surf,  6, 2, 0,   0x11e0800, 0,  8);
-   t_assert_intratile_offset_el(&dev, &surf,  7, 2, 0,   0x11e0800, 0, 24);
-   t_assert_intratile_offset_el(&dev, &surf,  8, 2, 0,   0x1200800, 0,  0);
-   t_assert_intratile_offset_el(&dev, &surf,  9, 2, 0,   0x1200800, 0,  4);
-   t_assert_intratile_offset_el(&dev, &surf, 10, 2, 0,   0x1200800, 0,  8);
+   t_assert_intratile_offset_el(&dev, &surf,  2, 2, 0,   0x1010000, 0,  8);
+   t_assert_intratile_offset_el(&dev, &surf,  3, 2, 0,   0x1110000, 0,  8);
+   t_assert_intratile_offset_el(&dev, &surf,  4, 2, 0,   0x1190000, 0,  8);
+   t_assert_intratile_offset_el(&dev, &surf,  5, 2, 0,   0x11d0000, 0,  8);
+   t_assert_intratile_offset_el(&dev, &surf,  6, 2, 0,   0x11f0000, 0,  8);
+   t_assert_intratile_offset_el(&dev, &surf,  7, 2, 0,   0x11f0000, 0, 24);
+   t_assert_intratile_offset_el(&dev, &surf,  8, 2, 0,   0x1210000, 0,  0);
+   t_assert_intratile_offset_el(&dev, &surf,  9, 2, 0,   0x1210000, 0,  4);
+   t_assert_intratile_offset_el(&dev, &surf, 10, 2, 0,   0x1210000, 0,  8);
 
    /* skip the remaining array layers */
 }

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to