radv: Support VK_EXT_inline_uniform_block.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Thu, 14 Mar 2019 10:20:53 +0000 (11:20 +0100)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 19 Apr 2019 07:21:47 +0000 (09:21 +0200)
commit8d2654a4197bbf45cbe9f72e82f025d04cda7bc2
tree6e41b9da03e5927afd4442d971c8c9b3076785e3
parent2b515a8259bc104f09e3af7a0e545f7aa659e30d
radv: Support VK_EXT_inline_uniform_block.

Basically just reserve the memory in the descriptor sets.

On the shader side we construct a buffer descriptor, since
AFAIU VGPR indexing on 32-bit pointers in LLVM is still broken.

This fully supports update after bind and variable descriptor set
sizes. However, the limits are somewhat arbitrary and are mostly
about finding a reasonable division of a 2 GiB max memory size over
the set.

v2: - rebased on top of master (Samuel)
    - remove the loading resources rework (Samuel)
    - only load UBO descriptors if it's a pointer (Samuel)
    - use LLVMBuildPtrToInt to avoid IR failures (Samuel)

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> (v2)
src/amd/vulkan/radv_descriptor_set.c
src/amd/vulkan/radv_device.c
src/amd/vulkan/radv_extensions.py
src/amd/vulkan/radv_nir_to_llvm.c
src/amd/vulkan/radv_private.h