OSDN Git Service

anv/cmd_buffer: Conditionally choose the sampled image surface state
authorNanley Chery <nanley.g.chery@intel.com>
Tue, 31 Jan 2017 19:25:31 +0000 (11:25 -0800)
committerNanley Chery <nanley.g.chery@intel.com>
Thu, 2 Mar 2017 21:17:55 +0000 (13:17 -0800)
Signed-off-by: Nanley Chery <nanley.g.chery@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/intel/vulkan/genX_cmd_buffer.c

index fdfea3f..73876fc 100644 (file)
@@ -1178,24 +1178,25 @@ emit_binding_table(struct anv_cmd_buffer *cmd_buffer,
 
       case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
       case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
-         surface_state = desc->image_view->sampler_surface_state;
+         surface_state = desc->aux_usage == ISL_AUX_USAGE_NONE ?
+            desc->image_view->no_aux_sampler_surface_state :
+            desc->image_view->sampler_surface_state;
          assert(surface_state.alloc_size);
          add_image_view_relocs(cmd_buffer, desc->image_view,
-                               desc->image_view->image->aux_usage,
-                               surface_state);
+                               desc->aux_usage, surface_state);
          break;
-
       case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:
          assert(stage == MESA_SHADER_FRAGMENT);
          if (desc->image_view->aspect_mask != VK_IMAGE_ASPECT_COLOR_BIT) {
             /* For depth and stencil input attachments, we treat it like any
              * old texture that a user may have bound.
              */
-            surface_state = desc->image_view->sampler_surface_state;
+            surface_state = desc->aux_usage == ISL_AUX_USAGE_NONE ?
+               desc->image_view->no_aux_sampler_surface_state :
+               desc->image_view->sampler_surface_state;
             assert(surface_state.alloc_size);
             add_image_view_relocs(cmd_buffer, desc->image_view,
-                                  desc->image_view->image->aux_usage,
-                                  surface_state);
+                                  desc->aux_usage, surface_state);
          } else {
             /* For color input attachments, we create the surface state at
              * vkBeginRenderPass time so that we can include aux and clear