radv/ac: add support for indirect access of descriptor sets.
authorDave Airlie <airlied@redhat.com>
Tue, 18 Apr 2017 00:21:59 +0000 (10:21 +1000)
committerDave Airlie <airlied@redhat.com>
Tue, 18 Apr 2017 23:00:43 +0000 (09:00 +1000)
commit25a5ee391d786b6d0b48b2b9aa0553e6972d97a0
treeef9eb964cbe1f7768e0d8d52fe44234e2dabffbd
parentd0991b135b90b5ce90da51b6d4db7302ddd65a24
radv/ac: add support for indirect access of descriptor sets.

We want to expose more descriptor sets to the applications,
but currently we have a 1:1 mapping between shader descriptor
sets and 2 user sgprs, limiting us to 4 per stage. This commit
check if we don't have enough user sgprs for the number of
bound sets for this shader, we can ask for them to be indirected.

Two sgprs are then used to point to a buffer or 64-bit pointers
to the number of allocated descriptor sets. All shaders point
to the same buffer.

We can use some user sgprs to inline one or two descriptor sets
in future, but until we have a workload that needs this I don't
 think we should spend too much time on it.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/amd/common/ac_nir_to_llvm.c
src/amd/common/ac_nir_to_llvm.h
src/amd/vulkan/radv_cmd_buffer.c
src/amd/vulkan/radv_pipeline.c
src/amd/vulkan/radv_private.h