i965: Move framebuffer fetch to the new resolve functions
authorJason Ekstrand <jason.ekstrand@intel.com>
Thu, 25 May 2017 19:26:00 +0000 (12:26 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 8 Jun 2017 05:18:53 +0000 (22:18 -0700)
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Chad Versace <chadversary@chromium.org>
src/mesa/drivers/dri/i965/brw_context.c
src/mesa/drivers/dri/i965/intel_mipmap_tree.c
src/mesa/drivers/dri/i965/intel_mipmap_tree.h

index 0ef22c8b0afd8dc2fe0e6db700c38ddf29d32d05..c7dfe14e245fa8a6c30fbf36101f94abbc030189 100644 (file)
@@ -285,10 +285,8 @@ intel_update_state(struct gl_context * ctx, GLuint new_state)
             intel_renderbuffer(fb->_ColorDrawBuffers[i]);
 
          if (irb) {
-             intel_miptree_resolve_color(brw, irb->mt,
-                                         irb->mt_level, 1,
-                                         irb->mt_layer, irb->layer_count,
-                                         INTEL_MIPTREE_IGNORE_CCS_E);
+            intel_miptree_prepare_fb_fetch(brw, irb->mt, irb->mt_level,
+                                           irb->mt_layer, irb->layer_count);
          }
       }
    }
index cd713b93e3f686c244efa3bd5e68ae80a8dd5cf5..c8fddc27030a84b5d76400d8b8e38d19da087d5a 100644 (file)
@@ -2431,11 +2431,13 @@ intel_texture_view_requires_resolve(struct brw_context *brw,
    return true;
 }
 
-void
-intel_miptree_prepare_texture(struct brw_context *brw,
-                              struct intel_mipmap_tree *mt,
-                              mesa_format view_format,
-                              bool *aux_supported_out)
+static void
+intel_miptree_prepare_texture_slices(struct brw_context *brw,
+                                     struct intel_mipmap_tree *mt,
+                                     mesa_format view_format,
+                                     uint32_t start_level, uint32_t num_levels,
+                                     uint32_t start_layer, uint32_t num_layers,
+                                     bool *aux_supported_out)
 {
    bool aux_supported;
    if (_mesa_is_format_color_format(mt->format)) {
@@ -2447,13 +2449,34 @@ intel_miptree_prepare_texture(struct brw_context *brw,
       aux_supported = intel_miptree_sample_with_hiz(brw, mt);
    }
 
-   intel_miptree_prepare_access(brw, mt, 0, INTEL_REMAINING_LEVELS,
-                                0, INTEL_REMAINING_LAYERS,
+   intel_miptree_prepare_access(brw, mt, start_level, num_levels,
+                                start_layer, num_layers,
                                 aux_supported, aux_supported);
    if (aux_supported_out)
       *aux_supported_out = aux_supported;
 }
 
+void
+intel_miptree_prepare_texture(struct brw_context *brw,
+                              struct intel_mipmap_tree *mt,
+                              mesa_format view_format,
+                              bool *aux_supported_out)
+{
+   intel_miptree_prepare_texture_slices(brw, mt, view_format,
+                                        0, INTEL_REMAINING_LEVELS,
+                                        0, INTEL_REMAINING_LAYERS,
+                                        aux_supported_out);
+}
+
+void
+intel_miptree_prepare_fb_fetch(struct brw_context *brw,
+                               struct intel_mipmap_tree *mt, uint32_t level,
+                               uint32_t start_layer, uint32_t num_layers)
+{
+   intel_miptree_prepare_texture_slices(brw, mt, mt->format, level, 1,
+                                        start_layer, num_layers, NULL);
+}
+
 void
 intel_miptree_prepare_render(struct brw_context *brw,
                              struct intel_mipmap_tree *mt, uint32_t level,
index 5f3431c5bdd17b3588e537c14e3cd08848e09963..7613db57defdd9acf563dd95134540af6003a73d 100644 (file)
@@ -1051,6 +1051,10 @@ intel_miptree_prepare_texture(struct brw_context *brw,
                               mesa_format view_format,
                               bool *aux_supported_out);
 void
+intel_miptree_prepare_fb_fetch(struct brw_context *brw,
+                               struct intel_mipmap_tree *mt, uint32_t level,
+                               uint32_t start_layer, uint32_t num_layers);
+void
 intel_miptree_prepare_render(struct brw_context *brw,
                              struct intel_mipmap_tree *mt, uint32_t level,
                              uint32_t start_layer, uint32_t layer_count,