Module: Mesa
Branch: master
Commit: 31881079af7cbd3cb0b0395c93802e45569cd9e5
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=31881079af7cbd3cb0b0395c93802e45569cd9e5

Author: Iago Toral Quiroga <[email protected]>
Date:   Wed Feb 28 09:44:18 2018 +0100

anv/cmd_buffer: honor pending clear views for depth/stencil attachments

v2: rebased on top of subpass rework.

v3: rebased

v4:
 - rebased
 - reset pending clear views in one go rather one bit at a time (Caio)

Reviewed-by: Jason Ekstrand <[email protected]>

---

 src/intel/vulkan/genX_cmd_buffer.c | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/src/intel/vulkan/genX_cmd_buffer.c 
b/src/intel/vulkan/genX_cmd_buffer.c
index 3c55cd964c..3da6dffa1a 100644
--- a/src/intel/vulkan/genX_cmd_buffer.c
+++ b/src/intel/vulkan/genX_cmd_buffer.c
@@ -3643,7 +3643,7 @@ cmd_buffer_begin_subpass(struct anv_cmd_buffer 
*cmd_buffer,
          }
       } else if (att_state->pending_clear_aspects & (VK_IMAGE_ASPECT_DEPTH_BIT 
|
                                                      
VK_IMAGE_ASPECT_STENCIL_BIT)) {
-         if (att_state->fast_clear) {
+         if (att_state->fast_clear && !is_multiview) {
             /* We currently only support HiZ for single-layer images */
             if (att_state->pending_clear_aspects & VK_IMAGE_ASPECT_DEPTH_BIT) {
                assert(iview->image->planes[0].aux_usage == ISL_AUX_USAGE_HIZ);
@@ -3658,6 +3658,26 @@ cmd_buffer_begin_subpass(struct anv_cmd_buffer 
*cmd_buffer,
                                 iview->planes[0].isl.base_array_layer,
                                 fb->layers, render_area,
                                 att_state->clear_value.depthStencil.stencil);
+         } else if (is_multiview) {
+            uint32_t pending_clear_mask =
+              get_multiview_subpass_clear_mask(cmd_state, att_state);
+
+            uint32_t layer_idx;
+            for_each_bit(layer_idx, pending_clear_mask) {
+               uint32_t layer =
+                  iview->planes[0].isl.base_array_layer + layer_idx;
+
+               anv_image_clear_depth_stencil(cmd_buffer, image,
+                                             att_state->pending_clear_aspects,
+                                             att_state->aux_usage,
+                                             iview->planes[0].isl.base_level,
+                                             layer, 1,
+                                             render_area,
+                                             
att_state->clear_value.depthStencil.depth,
+                                             
att_state->clear_value.depthStencil.stencil);
+            }
+
+            att_state->pending_clear_views &= ~pending_clear_mask;
          } else {
             anv_image_clear_depth_stencil(cmd_buffer, image,
                                           att_state->pending_clear_aspects,

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to