vulkan: Implement bindless texture rendering
authorBenjamin Otte <otte@redhat.com>
Sat, 20 May 2023 00:56:02 +0000 (02:56 +0200)
committerBenjamin Otte <otte@redhat.com>
Sun, 4 Jun 2023 17:42:01 +0000 (19:42 +0200)
commit0f1b0393066c40393a9b65aa38b831229b1a749f
treed9366167c57974c60b23a6106e38b17c8fcfc9a8
parentb791aa0301d2df088836c7d0f123c815ed46400e
vulkan: Implement bindless texture rendering

Instead of having a descriptor set per operation, we just have one
descriptor set and bind all our images into it.

Then the shaders get to use an index into the large texture array
instead.

Getting this to work - because it's a Vulkan extension that needs to be
manually enabled, even though it's officially part of Vulkan 1.2 - is
insane.
32 files changed:
gdk/gdkvulkancontext.c
gsk/vulkan/gskvulkanblendmodepipeline.c
gsk/vulkan/gskvulkanblendmodepipelineprivate.h
gsk/vulkan/gskvulkanblurpipeline.c
gsk/vulkan/gskvulkanblurpipelineprivate.h
gsk/vulkan/gskvulkancolortextpipeline.c
gsk/vulkan/gskvulkancolortextpipelineprivate.h
gsk/vulkan/gskvulkancrossfadepipeline.c
gsk/vulkan/gskvulkancrossfadepipelineprivate.h
gsk/vulkan/gskvulkaneffectpipeline.c
gsk/vulkan/gskvulkaneffectpipelineprivate.h
gsk/vulkan/gskvulkanrender.c
gsk/vulkan/gskvulkanrenderpass.c
gsk/vulkan/gskvulkanrenderprivate.h
gsk/vulkan/gskvulkantextpipeline.c
gsk/vulkan/gskvulkantextpipelineprivate.h
gsk/vulkan/gskvulkantexturepipeline.c
gsk/vulkan/gskvulkantexturepipelineprivate.h
gsk/vulkan/resources/blendmode.frag
gsk/vulkan/resources/blendmode.vert
gsk/vulkan/resources/blur.frag
gsk/vulkan/resources/blur.vert
gsk/vulkan/resources/color-matrix.frag
gsk/vulkan/resources/color-matrix.vert
gsk/vulkan/resources/common.frag.glsl [new file with mode: 0644]
gsk/vulkan/resources/crossfade.frag
gsk/vulkan/resources/crossfade.vert
gsk/vulkan/resources/mask.frag
gsk/vulkan/resources/mask.vert
gsk/vulkan/resources/meson.build
gsk/vulkan/resources/texture.frag
gsk/vulkan/resources/texture.vert