isl: Fix assert on raw buffer surface state size
authorNanley Chery <nanley.g.chery@intel.com>
Wed, 6 Jul 2016 18:13:15 +0000 (11:13 -0700)
committerNanley Chery <nanley.g.chery@intel.com>
Fri, 15 Jul 2016 17:35:40 +0000 (10:35 -0700)
See inline PRM reference.

Cc: 12.0 <mesa-stable@lists.freedesktop.org>
Signed-off-by: Nanley Chery <nanley.g.chery@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/intel/isl/isl_surface_state.c

index fc7e1bae0268451816d7d843ee8bb270dcc20070..58e9af5f8ee8a5404c93cd09247c56b1404d861c 100644 (file)
@@ -460,8 +460,15 @@ isl_genX(buffer_fill_state_s)(void *state,
    uint32_t num_elements = info->size / info->stride;
 
    if (GEN_GEN >= 7) {
+      /* From the IVB PRM, SURFACE_STATE::Height,
+       *
+       *    For typed buffer and structured buffer surfaces, the number
+       *    of entries in the buffer ranges from 1 to 2^27. For raw buffer
+       *    surfaces, the number of entries in the buffer is the number of bytes
+       *    which can range from 1 to 2^30.
+       */
       if (info->format == ISL_FORMAT_RAW) {
-         assert(num_elements <= (1ull << 31));
+         assert(num_elements <= (1ull << 30));
          assert((num_elements & 3) == 0);
       } else {
          assert(num_elements <= (1ull << 27));