anv/cmd_buffer: add the pipeline layout to the pipeline state

We need to access the pipeline layout to compute correct dynamic
offsets for dyamic UBO/SSBO descriptors when we emit draw commands.
Instead of taking it from the pipeline object, store the layout
in the command buffer pipeline state.

Suggested-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Iago Toral Quiroga
2018-01-25 11:54:35 +01:00
parent e1a49f974b
commit 75a4802060
3 changed files with 12 additions and 5 deletions

View File

@@ -547,6 +547,14 @@ anv_cmd_buffer_bind_descriptor_set(struct anv_cmd_buffer *cmd_buffer,
cmd_buffer->state.descriptors_dirty |=
set_layout->shader_stages & VK_SHADER_STAGE_ALL_GRAPHICS;
}
/* Pipeline layout objects are required to live at least while any command
* buffers that use them are in recording state. We need to grab a reference
* to the pipeline layout being bound here so we can compute correct dynamic
* offsets for VK_DESCRIPTOR_TYPE_*_DYNAMIC in dynamic_offset_for_binding()
* when we record draw commands that come after this.
*/
pipe_state->layout = layout;
}
void anv_CmdBindDescriptorSets(