v3dv: initial descriptor set support

Graphics / Mesa 3D Graphics Library / Mesa - Alejandro Piñeiro [igalia.com] - 13 October 2020 21:21 UTC

Focused on getting the basic UBO and SSBO cases implemented. So no dynamic offset, push contanst, samplers, and so on.

This include a initial implementation for CreatedescriptorPool, CreateDescriptorSetLayout, AllocateDescriptorSets, UpdateDescriptorSets, CreatePipelineLayout, and CmdBindDescriptorSets.

Also introduces lowering vulkan intrinsics. For now just
vulkan_resource_index.

We also introduce a descriptor_map, in this case for the ubos and ssbos, used to assign a index for each set/binding combination, that would be used when filling back the details of the ubo or ssbo on other places (like QUNIFORM_UBO_ADDR or QUNIFORM_SSBO_OFFSET).

Note that at this point we don't need a bo for the descriptor pool, so descriptor sets are not getting a piece of it. That would likely change as we start to support more descriptor set types.

Part-of:

9afd24f89a6 v3dv: initial descriptor set support
src/broadcom/vulkan/v3dv_cl.h | 10 +
src/broadcom/vulkan/v3dv_cmd_buffer.c | 32 ++-
src/broadcom/vulkan/v3dv_descriptor_set.c | 443 +++++++++++++++++++++++++++++-
src/broadcom/vulkan/v3dv_device.c | 6 +-
src/broadcom/vulkan/v3dv_pipeline.c | 141 ++++++++++
src/broadcom/vulkan/v3dv_private.h | 95 +++++++
src/broadcom/vulkan/v3dv_uniforms.c | 56 ++++
7 files changed, 776 insertions(+), 7 deletions(-)

Upstream: cgit.freedesktop.org


  • Share