anv: descriptor: make descriptor writing take a stream allocator

This allows us to allocate surface states from the command buffer when
pushing descriptor sets rather than allocating them through a
descriptor set pool.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Lionel Landwerlin 2017-01-17 17:43:08 +00:00
parent 194fa58285
commit 12dee851a3
2 changed files with 10 additions and 0 deletions

View File

@ -643,6 +643,7 @@ anv_descriptor_set_write_buffer_view(struct anv_descriptor_set *set,
void
anv_descriptor_set_write_buffer(struct anv_descriptor_set *set,
struct anv_device *device,
struct anv_state_stream *alloc_stream,
VkDescriptorType type,
struct anv_buffer *buffer,
uint32_t binding,
@ -672,6 +673,13 @@ anv_descriptor_set_write_buffer(struct anv_descriptor_set *set,
else
bview->range = range;
/* If we're writing descriptors through a push command, we need to allocate
* the surface state from the command buffer. Otherwise it will be
* allocated by the descriptor pool when calling
* vkAllocateDescriptorSets. */
if (alloc_stream)
bview->surface_state = anv_state_stream_alloc(alloc_stream, 64, 64);
anv_fill_buffer_surface_state(device, bview->surface_state,
bview->format,
bview->offset, bview->range, 1);
@ -736,6 +744,7 @@ void anv_UpdateDescriptorSets(
anv_descriptor_set_write_buffer(set,
device,
NULL,
write->descriptorType,
buffer,
write->dstBinding,

View File

@ -960,6 +960,7 @@ anv_descriptor_set_write_buffer_view(struct anv_descriptor_set *set,
void
anv_descriptor_set_write_buffer(struct anv_descriptor_set *set,
struct anv_device *device,
struct anv_state_stream *alloc_stream,
VkDescriptorType type,
struct anv_buffer *buffer,
uint32_t binding,