<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Feb 27, 2018 at 1:30 AM,  <span dir="ltr"><<a href="mailto:kevin.rogovin@intel.com" target="_blank">kevin.rogovin@intel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">From: Kevin Rogovin <<a href="mailto:kevin.rogovin@intel.com">kevin.rogovin@intel.com</a>><br>
<br>
Signed-off-by: Kevin Rogovin <<a href="mailto:kevin.rogovin@intel.com">kevin.rogovin@intel.com</a>><br>
---<br>
 src/mesa/drivers/dri/i965/brw_<wbr>draw.c             | 20 ++++++++++++++++++--<br>
 src/mesa/drivers/dri/i965/brw_<wbr>wm_surface_state.c |  7 +++++--<br>
 2 files changed, 23 insertions(+), 4 deletions(-)<br>
<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>brw_draw.c b/src/mesa/drivers/dri/i965/<wbr>brw_draw.c<br>
index 0241035..34f4de3 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>brw_draw.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>brw_draw.c<br>
@@ -392,6 +392,8 @@ mark_textures_used_for_txf(<wbr>BITSET_WORD *used_for_txf,<br>
  *<br>
  * Resolve the depth buffer's HiZ buffer, resolve the depth buffer of each<br>
  * enabled depth texture, and flush the render cache for any dirty textures.<br>
+ * In addition, if the ASTC5x5 workaround is needed and if ASTC5x5 textures<br>
+ * are present, resolve textures so that auxilary buffers are not needed.<br>
  */<br>
 void<br>
 brw_predraw_resolve_inputs(<wbr>struct brw_context *brw, bool rendering,<br>
@@ -445,10 +447,14 @@ brw_predraw_resolve_inputs(<wbr>struct brw_context *brw, bool rendering,<br>
                                      "for sampling");<br>
       }<br>
<br>
+      const bool astc_disables_aux = (brw->astc5x5_wa.required &&<br>
+         brw->astc5x5_wa.texture_<wbr>astc5x5_present &&<br>
+         tex_obj->mt->aux_usage != ISL_AUX_USAGE_NONE);<br>
+<br>
       intel_miptree_prepare_texture(<wbr>brw, tex_obj->mt, view_format,<br>
                                     min_level, num_levels,<br>
                                     min_layer, num_layers,<br>
-                                    false);<br>
+                                    astc_disables_aux);<br>
<br>
       /* If any programs are using it with texelFetch, we may need to also do<br>
        * a prepare with an sRGB format to ensure texelFetch works "properly".<br>
@@ -460,7 +466,7 @@ brw_predraw_resolve_inputs(<wbr>struct brw_context *brw, bool rendering,<br>
             intel_miptree_prepare_texture(<wbr>brw, tex_obj->mt, txf_format,<br>
                                           min_level, num_levels,<br>
                                           min_layer, num_layers,<br>
-                                          false);<br>
+                                          astc_disables_aux);<br>
          }<br>
       }<br>
<br>
@@ -496,6 +502,16 @@ brw_predraw_resolve_inputs(<wbr>struct brw_context *brw, bool rendering,<br>
          }<br>
       }<br>
    }<br>
+<br>
+   /* if an ASTC5x5 is present when we need the workaround, then<br>
+    * the above has made sure that the textures have been resolved<br>
+    * so that they do not need an auxilary buffer, so we clear<br>
+    * texture_with_auxilary_present<br>
+    */<br>
+   if (brw->astc5x5_wa.required &&<br>
+       brw->astc5x5_wa.texture_<wbr>astc5x5_present) {<br>
+      brw->astc5x5_wa.texture_with_<wbr>auxilary_present = false;<br>
+   }<br>
 }<br>
<br>
 static void<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/<wbr>brw_wm_surface_state.c<br>
index 23bf5a2..505e2bf 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>brw_wm_surface_state.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>brw_wm_surface_state.c<br>
@@ -441,7 +441,8 @@ swizzle_to_scs(GLenum swizzle, bool need_green_to_blue)<br>
    return (need_green_to_blue && scs == HSW_SCS_GREEN) ? HSW_SCS_BLUE : scs;<br>
 }<br>
<br>
-static void brw_update_texture_surface(<wbr>struct gl_context *ctx,<br>
+static void<br>
+brw_update_texture_surface(<wbr>struct gl_context *ctx,<br>
                            unsigned unit,<br>
                            uint32_t *surf_offset,<br>
                            bool for_gather,<br>
@@ -581,7 +582,9 @@ static void brw_update_texture_surface(<wbr>struct gl_context *ctx,<br>
           obj->Target == GL_TEXTURE_CUBE_MAP_ARRAY)<br>
          view.usage |= ISL_SURF_USAGE_CUBE_BIT;<br>
<br>
-      enum isl_aux_usage aux_usage =<br>
+      bool disable_aux = brw->astc5x5_wa.required &&<br>
+         brw->astc5x5_wa.texture_<wbr>astc5x5_present;<br></blockquote><div><br></div><div>I think we can replace texture_astc5x5_present with mode == HAS_ASTC5x5.  For that matter, as long as we never set the mode when the workaround is not enabled, we don't even need to check whether or not it is required.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+      enum isl_aux_usage aux_usage = (disable_aux) ? ISL_AUX_USAGE_NONE :<br>
          intel_miptree_texture_aux_<wbr>usage(brw, mt, format);<br>
<br>
       brw_emit_surface_state(brw, mt, mt->target, view, aux_usage,<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.7.4<br>
<br>
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div></div>