i965: Add gen8 fast clear perf debug
authorBen Widawsky <benjamin.widawsky@intel.com>
Fri, 5 Jun 2015 06:59:23 +0000 (23:59 -0700)
committerBen Widawsky <benjamin.widawsky@intel.com>
Fri, 5 Jun 2015 21:25:47 +0000 (14:25 -0700)
In an ideal world I would just implement this instead of adding the perf debug.
There are some errata involved which lead me to believe it won't be so simple as
flipping a few bits.

There is room to add a thing for Gen9s flexibility, but since I am actively
working on that I have opted to ignore it.

Example:
Multi-LOD fast clear - giving up (256x128x8).

v2: Use braces for if statements because they are multiple lines (Ken)

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_meta_fast_clear.c
src/mesa/drivers/dri/i965/intel_mipmap_tree.c

index a864143e6dcf0eada5d94a25fd6db941295cd913..c0c8dfa608d1e6b4f8793540423c8aeaffbf211d 100644 (file)
@@ -340,6 +340,10 @@ is_color_fast_clear_compatible(struct brw_context *brw,
                                const union gl_color_union *color)
 {
    if (_mesa_is_format_integer_color(format))
+      if (brw->gen >= 8) {
+         perf_debug("Integer fast clear not enabled for (%s)",
+                    _mesa_get_format_name(format));
+      }
       return false;
 
    for (int i = 0; i < 4; i++) {
index 24a5c3dc6663d4e72ba4497292bec480a307795e..8616c0193c8a0addb7d61a16a820cea6133f60df 100644 (file)
@@ -198,10 +198,23 @@ intel_is_non_msrt_mcs_buffer_supported(struct brw_context *brw,
       return false;
    if (mt->cpp != 4 && mt->cpp != 8 && mt->cpp != 16)
       return false;
-   if (mt->first_level != 0 || mt->last_level != 0)
+   if (mt->first_level != 0 || mt->last_level != 0) {
+      if (brw->gen >= 8) {
+         perf_debug("Multi-LOD fast clear - giving up (%dx%dx%d).\n",
+                    mt->logical_width0, mt->logical_height0, mt->last_level);
+      }
+
       return false;
-   if (mt->physical_depth0 != 1)
+   }
+   if (mt->physical_depth0 != 1) {
+      if (brw->gen >= 8) {
+         perf_debug("Layered fast clear - giving up. (%dx%d%d)\n",
+                    mt->logical_width0, mt->logical_height0,
+                    mt->physical_depth0);
+      }
+
       return false;
+   }
 
    /* There's no point in using an MCS buffer if the surface isn't in a
     * renderable format.