ilo: R32G32B32_FLOAT need no special care on Gen8+
authorChia-I Wu <olvaffe@gmail.com>
Fri, 20 Feb 2015 16:35:49 +0000 (00:35 +0800)
committerChia-I Wu <olvaffe@gmail.com>
Sat, 21 Feb 2015 03:33:54 +0000 (11:33 +0800)
Gen8+ must use VALIGN_4.  Unlike prior Gens, R32G32B32_FLOAT should supposedly
support VALIGN_4.

src/gallium/drivers/ilo/ilo_layout.c

index 03a692f..0b639b2 100644 (file)
@@ -430,8 +430,9 @@ layout_init_alignments(struct ilo_layout *layout,
           layout->tiling == INTEL_TILING_Y &&
           (templ->bind & PIPE_BIND_RENDER_TARGET));
 
-      if (valign_4)
-         assert(layout->block_size != 12);
+      if (ilo_dev_gen(params->dev) >= ILO_GEN(7) &&
+          ilo_dev_gen(params->dev) <= ILO_GEN(7.5) && valign_4)
+         assert(layout->format != PIPE_FORMAT_R32G32B32_FLOAT);
 
       layout->align_i = 4;
       layout->align_j = (valign_4) ? 4 : 2;
@@ -525,7 +526,9 @@ layout_get_valid_tilings(const struct ilo_layout *layout,
        *
        *     "VALIGN_4 is not supported for surface format R32G32B32_FLOAT."
        */
-      if (ilo_dev_gen(params->dev) >= ILO_GEN(7) && layout->block_size == 12)
+      if (ilo_dev_gen(params->dev) >= ILO_GEN(7) &&
+          ilo_dev_gen(params->dev) <= ILO_GEN(7.5) &&
+          layout->format == PIPE_FORMAT_R32G32B32_FLOAT)
          valid_tilings &= ~LAYOUT_TILING_Y;
    }