vk: Only fill render targets for meta clear
authorKristian Høgsberg <kristian.h.kristensen@intel.com>
Mon, 18 May 2015 17:39:14 +0000 (10:39 -0700)
committerKristian Høgsberg <kristian.h.kristensen@intel.com>
Tue, 19 May 2015 03:52:43 +0000 (20:52 -0700)
Clear inherits the render targets from the current render pass. This
means we need to fill out the binding table after switching to meta
bindings. However, meta copies etc happen outside a render pass and
break when we try to fill in the render targets. This change fills the
render targets only for meta clear.

src/vulkan/meta.c

index ebdf1a2b08dfd8a1bcf92b8263b5ff04b7ccd63b..661584b0fdf063d37a93a4ed24ebc889003ee9f2 100644 (file)
@@ -160,9 +160,6 @@ anv_cmd_buffer_save(struct anv_cmd_buffer *cmd_buffer,
    state->old_bindings = cmd_buffer->bindings;
    cmd_buffer->bindings = &state->bindings;
    state->old_pipeline = cmd_buffer->pipeline;
-
-   /* Initialize render targets for the meta bindings. */
-   anv_cmd_buffer_fill_render_targets(cmd_buffer);
 }
 
 static void
@@ -245,6 +242,9 @@ anv_cmd_buffer_clear(struct anv_cmd_buffer *cmd_buffer,
 
    anv_cmd_buffer_save(cmd_buffer, &saved_state);
 
+   /* Initialize render targets for the meta bindings. */
+   anv_cmd_buffer_fill_render_targets(cmd_buffer);
+
    anv_CmdBindVertexBuffers((VkCmdBuffer) cmd_buffer, 0, 2,
       (VkBuffer[]) {
          (VkBuffer) &vertex_buffer,