[vulkan] Remove old descriptor and pipeline code

Pipeline cache handling is still there for now, but the rest hasn't been
used since the render graph rewrite, if not before (and good riddance).
This commit is contained in:
Bill Currie 2023-12-13 10:47:19 +09:00
parent 694d969c83
commit 39616bc84d
19 changed files with 0 additions and 445 deletions

View file

@ -192,7 +192,6 @@ include_qf_vulkan = \
include/QF/Vulkan/command.h \
include/QF/Vulkan/cvars.h \
include/QF/Vulkan/debug.h \
include/QF/Vulkan/descriptor.h \
include/QF/Vulkan/device.h \
include/QF/Vulkan/dsmanager.h \
include/QF/Vulkan/funclist.h \

View file

@ -1,67 +0,0 @@
#ifndef __QF_Vulkan_descriptor_h
#define __QF_Vulkan_descriptor_h
#ifndef VK_NO_PROTOTYPES
#define VK_NO_PROTOTYPES
#endif
#include <vulkan/vulkan.h>
#include "QF/darray.h"
typedef struct qfv_bindingset_s
DARRAY_TYPE (VkDescriptorSetLayoutBinding) qfv_bindingset_t;
typedef struct qfv_descriptorsetlayoutset_s
DARRAY_TYPE (VkDescriptorSetLayout) qfv_descriptorsetlayoutset_t;
#define QFV_AllocDescriptorSetLayoutSet(num, allocator) \
DARRAY_ALLOCFIXED (qfv_descriptorsetlayoutset_t, num, allocator)
typedef struct qfv_descriptorsets_s
DARRAY_TYPE (VkDescriptorSet) qfv_descriptorsets_t;
#define QFV_AllocDescriptorSets(num, allocator) \
DARRAY_ALLOCFIXED (qfv_descriptorsets_t, num, allocator)
typedef struct qfv_writedescriptorsets_s
DARRAY_TYPE (VkWriteDescriptorSet) qfv_writedescriptorsets_t;
#define QFV_AllocWriteDescriptorSets(num, allocator) \
DARRAY_ALLOCFIXED (qfv_writedescriptorsets_t, num, allocator)
typedef struct qfv_copydescriptorsets_s
DARRAY_TYPE (VkCopyDescriptorSet) qfv_copydescriptorsets_t;
#define QFV_AllocCopyDescriptorSets(num, allocator) \
DARRAY_ALLOCFIXED (qfv_descriptorsetlayoutset_t, num, allocator)
struct qfv_device_s;
VkSampler QFV_CreateSampler (struct qfv_device_s *device,
VkFilter magFilter, VkFilter minFilter,
VkSamplerMipmapMode mipmapMode,
VkSamplerAddressMode addressModeU,
VkSamplerAddressMode addressModeV,
VkSamplerAddressMode addressModeW,
float mipLodBias,
VkBool32 anisotryEnable, float maxAnisotropy,
VkBool32 compareEnable, VkCompareOp compareOp,
float minLod, float maxLod,
VkBorderColor borderColor,
VkBool32 unnormalizedCoordinates);
VkDescriptorSetLayout
QFV_CreateDescriptorSetLayout (struct qfv_device_s *device,
qfv_bindingset_t *bindings);
VkDescriptorPool
QFV_CreateDescriptorPool (struct qfv_device_s *device,
VkDescriptorPoolCreateFlags flags, uint32_t maxSets,
qfv_bindingset_t *bindings);
qfv_descriptorsets_t *
QFV_AllocateDescriptorSet (struct qfv_device_s *device,
VkDescriptorPool pool,
qfv_descriptorsetlayoutset_t *layouts);
#endif//__QF_Vulkan_descriptor_h

View file

@ -3,125 +3,6 @@
#include "QF/darray.h"
typedef struct qfv_pipelineshaderstateset_s
DARRAY_TYPE (VkPipelineShaderStageCreateInfo) qfv_pipelineshaderstateset_s;
#define QFV_AllocPipelineShaderStageSet(num, allocator) \
DARRAY_ALLOCFIXED (qfv_pipelineshaderstateset_s, num, allocator)
typedef struct qfv_vertexinputbindingset_s
DARRAY_TYPE (VkVertexInputBindingDescription) qfv_vertexinputbindingset_t;
#define QFV_AllocVertexInputBindingSet(num, allocator) \
DARRAY_ALLOCFIXED (qfv_vertexinputbindingset_t, num, allocator)
typedef struct qfv_vertexinputattributeset_s
DARRAY_TYPE (VkVertexInputAttributeDescription)
qfv_vertexinputattributeset_t;
#define QFV_AllocVertexInputAttributeSet(num, allocator) \
DARRAY_ALLOCFIXED (qfv_vertexinputattributeset_t, num, allocator)
typedef struct qfv_vertexinputstate_s {
qfv_vertexinputbindingset_t *bindings;
qfv_vertexinputattributeset_t *attributes;
} qfv_vertexinputstate_t;
typedef struct qfv_pipelineinputassembly_s {
VkPrimitiveTopology topology;
VkBool32 primativeRestartEnable;
} qfv_pipelineinputassembly_t;
typedef struct qfv_pipelinetessellation_s {
uint32_t patchControlPoints;
} qfv_pipelinetessellation_t;
typedef struct qfv_viewportset_s DARRAY_TYPE (VkViewport) qfv_viewportset_t;
#define QFV_AllocViewportSet(num, allocator) \
DARRAY_ALLOCFIXED (qfv_viewportset_t, num, allocator)
typedef struct qfv_scissorsset_s DARRAY_TYPE (VkRect2D) qfv_scissorsset_t;
#define QFV_AllocScissorsSet(num, allocator) \
DARRAY_ALLOCFIXED (qfv_scissorsset_t, num, allocator)
typedef struct qfv_viewportinfo_s {
qfv_viewportset_t *viewportset;
qfv_scissorsset_t *scissorsset;
} qfv_viewportinfo_t;
typedef struct qfv_pipelinerasterization_s {
VkBool32 depthClampEnable;
VkBool32 rasterizerDiscardEnable;
VkPolygonMode polygonMode;
VkCullModeFlags cullMode;
VkFrontFace frontFace;
VkBool32 depthBiasEnable;
float depthBiasConstantFactor;
float depthBiasClamp;
float depthBiasSlopeFactor;
float lineWidth;
} qfv_pipelinerasterization_t;
typedef struct qfv_pipelinemultisample_s {
VkSampleCountFlagBits rasterizationSamples;
VkBool32 sampleShadingEnable;
float minSampleShading;
const VkSampleMask *sampleMask;
VkBool32 alphaToCoverageEnable;
VkBool32 alphaToOneEnable;
} qfv_pipelinemultisample_t;
typedef struct qfv_pipelinedepthandstencil_s {
VkBool32 depthTestEnable;
VkBool32 depthWriteEnable;
VkCompareOp depthCompareOp;
VkBool32 depthBoundsTestEnable;
VkBool32 stencilTestEnable;
VkStencilOpState front;
VkStencilOpState back;
float minDepthBounds;
float maxDepthBounds;
} qfv_pipelinedepthandstencil_t;
typedef struct qfv_blendattachmentset_s
DARRAY_TYPE (VkPipelineColorBlendAttachmentState) qfv_blendattachmentset_t;
#define QFV_AllocBlendAttachmentSet(num, allocator) \
DARRAY_ALLOCFIXED (qfv_blendattachmentset_t, num, allocator)
typedef struct qfv_dynamicstateset_s
DARRAY_TYPE (VkDynamicState) qfv_dynamicstateset_t;
#define QFV_AllocDynamicStateSet(num, allocator) \
DARRAY_ALLOCFIXED (qfv_dynamicstateset_t, num, allocator)
typedef struct qfv_pushconstantrangeset_s
DARRAY_TYPE (VkPushConstantRange) qfv_pushconstantrangeset_t;
#define QFV_AllocPushConstantRangeSet(num, allocator) \
DARRAY_ALLOCFIXED (qfv_pushconstantrangeset_t, num, allocator)
typedef struct qfv_pipelineset_s DARRAY_TYPE (VkPipeline) qfv_pipelineset_t;
#define QFV_AllocPipelineSet(num, allocator) \
DARRAY_ALLOCFIXED (qfv_pipelineset_t, num, allocator)
typedef struct qfv_graphicspipelinecreateinfoset_s
DARRAY_TYPE (VkGraphicsPipelineCreateInfo)
qfv_graphicspipelinecreateinfoset_t;
#define QFV_AllocGraphicsPipelineCreateInfoSet(num, allocator) \
DARRAY_ALLOCFIXED (qfv_graphicspipelinecreateinfoset_t, num, allocator)
typedef struct qfv_computepipelinecreateinfoset_s
DARRAY_TYPE (VkComputePipelineCreateInfo)
qfv_computepipelinecreateinfoset_t;
#define QFV_AllocComputePipelineCreateInfoSet(num, allocator) \
DARRAY_ALLOCFIXED (qfv_computepipelinecreateinfoset_t, num, allocator)
typedef struct qfv_pipelinecacheset_s
DARRAY_TYPE (VkPipelineCache) qfv_pipelinecacheset_t;
@ -137,20 +18,4 @@ void QFV_MergePipelineCaches (struct qfv_device_s *device,
VkPipelineCache targetCache,
qfv_pipelinecacheset_t *sourceCaches);
struct qfv_descriptorsetlayoutset_s;
VkPipelineLayout
QFV_CreatePipelineLayout (struct qfv_device_s *device,
struct qfv_descriptorsetlayoutset_s *layouts,
qfv_pushconstantrangeset_t *pushConstants);
qfv_pipelineset_t *
QFV_CreateGraphicsPipelines (struct qfv_device_s *device,
VkPipelineCache cache,
qfv_graphicspipelinecreateinfoset_t *gpciSet);
qfv_pipelineset_t *
QFV_CreateComputePipelines (struct qfv_device_s *device,
VkPipelineCache cache,
qfv_computepipelinecreateinfoset_t *cpciSet);
void
QFV_DestroyPipeline (struct qfv_device_s *device, VkPipeline pipeline);
#endif//__QF_Vulkan_pipeline_h

View file

@ -225,7 +225,6 @@ libs_video_renderer_librender_vulkan_la_SOURCES = \
libs/video/renderer/vulkan/command.c \
libs/video/renderer/vulkan/capture.c \
libs/video/renderer/vulkan/debug.c \
libs/video/renderer/vulkan/descriptor.c \
libs/video/renderer/vulkan/device.c \
libs/video/renderer/vulkan/dsmanager.c \
libs/video/renderer/vulkan/image.c \

View file

@ -1,170 +0,0 @@
/*
descriptor.c
Vulkan descriptor functions
Copyright (C) 2020 Bill Currie <bill@taniwha.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to:
Free Software Foundation, Inc.
59 Temple Place - Suite 330
Boston, MA 02111-1307, USA
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include "QF/hash.h"
#include "QF/Vulkan/descriptor.h"
#include "QF/Vulkan/device.h"
VkSampler
QFV_CreateSampler (qfv_device_t *device,
VkFilter magFilter, VkFilter minFilter,
VkSamplerMipmapMode mipmapMode,
VkSamplerAddressMode addressModeU,
VkSamplerAddressMode addressModeV,
VkSamplerAddressMode addressModeW,
float mipLodBias,
VkBool32 anisotryEnable, float maxAnisotropy,
VkBool32 compareEnable, VkCompareOp compareOp,
float minLod, float maxLod,
VkBorderColor borderColor,
VkBool32 unnormalizedCoordinates)
{
VkDevice dev = device->dev;
qfv_devfuncs_t *dfunc = device->funcs;
VkSamplerCreateInfo createInfo = {
VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, 0,
0,
magFilter, minFilter, mipmapMode,
addressModeU, addressModeV, addressModeW,
mipLodBias,
anisotryEnable, maxAnisotropy,
compareEnable, compareOp,
minLod, maxLod,
borderColor, unnormalizedCoordinates,
};
VkSampler sampler;
dfunc->vkCreateSampler (dev, &createInfo, 0, &sampler);
return sampler;
}
VkDescriptorSetLayout
QFV_CreateDescriptorSetLayout (qfv_device_t *device,
qfv_bindingset_t *bindingset)
{
VkDevice dev = device->dev;
qfv_devfuncs_t *dfunc = device->funcs;
VkDescriptorSetLayoutCreateInfo createInfo = {
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, 0,
0,
bindingset->size, bindingset->a,
};
VkDescriptorSetLayout layout;
dfunc->vkCreateDescriptorSetLayout (dev, &createInfo, 0, &layout);
return layout;
}
// There are currently only 13 descriptor types, so 16 should be plenty
static VkDescriptorPoolSize poolsize_pool[16];
static VkDescriptorPoolSize *poolsize_next;
static uintptr_t
poolsize_gethash (const void *ele, void *unused)
{
const VkDescriptorPoolSize *poolsize = ele;
return poolsize->type;
}
static int
poolsize_compmare (const void *ele1, const void *ele2, void *unused)
{
const VkDescriptorPoolSize *poolsize1 = ele1;
const VkDescriptorPoolSize *poolsize2 = ele2;
return poolsize1->type == poolsize2->type;
}
//FIXME not thread-safe
VkDescriptorPool
QFV_CreateDescriptorPool (qfv_device_t *device,
VkDescriptorPoolCreateFlags flags, uint32_t maxSets,
qfv_bindingset_t *bindings)
{
VkDevice dev = device->dev;
qfv_devfuncs_t *dfunc = device->funcs;
static hashtab_t *poolsizes;
if (!poolsizes) {
poolsizes = Hash_NewTable (16, 0, 0, 0, 0);//FIXME threads
Hash_SetHashCompare (poolsizes, poolsize_gethash, poolsize_compmare);
} else {
Hash_FlushTable (poolsizes);
}
poolsize_next = poolsize_pool;
VkDescriptorPoolSize *ps;
for (size_t i = 0; i < bindings->size; i++) {
VkDescriptorPoolSize test = { bindings->a[i].descriptorType, 0 };
ps = Hash_FindElement (poolsizes, &test);
if (!ps) {
ps = poolsize_next++;
if ((size_t) (poolsize_next - poolsize_pool)
> sizeof (poolsize_pool) / sizeof (poolsize_pool[0])) {
Sys_Error ("Too many descriptor types");
}
Hash_AddElement (poolsizes, ps);
}
//XXX is descriptorCount correct?
//FIXME assumes only one layout is used with this pool
ps->descriptorCount += bindings->a[i].descriptorCount * maxSets;
}
VkDescriptorPoolCreateInfo createInfo = {
VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO, 0,
flags, maxSets, poolsize_next - poolsize_pool, poolsize_pool,
};
VkDescriptorPool pool;
dfunc->vkCreateDescriptorPool (dev, &createInfo, 0, &pool);
return pool;
}
qfv_descriptorsets_t *
QFV_AllocateDescriptorSet (qfv_device_t *device,
VkDescriptorPool pool,
qfv_descriptorsetlayoutset_t *layouts)
{
VkDevice dev = device->dev;
qfv_devfuncs_t *dfunc = device->funcs;
VkDescriptorSetAllocateInfo allocateInfo = {
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO, 0,
pool, layouts->size, layouts->a,
};
__auto_type descriptorsets
= QFV_AllocDescriptorSets (layouts->size, malloc);
dfunc->vkAllocateDescriptorSets (dev, &allocateInfo, descriptorsets->a);
return descriptorsets;
}

View file

@ -30,7 +30,6 @@
#include "QF/dstring.h"
#include "QF/Vulkan/descriptor.h"
#include "QF/Vulkan/device.h"
#include "QF/Vulkan/pipeline.h"
@ -75,60 +74,3 @@ QFV_MergePipelineCaches (qfv_device_t *device,
dfunc->vkMergePipelineCaches (dev, targetCache,
sourceCaches->size, sourceCaches->a);
}
VkPipelineLayout
QFV_CreatePipelineLayout (qfv_device_t *device,
qfv_descriptorsetlayoutset_t *layouts,
qfv_pushconstantrangeset_t *pushConstants)
{
VkDevice dev = device->dev;
qfv_devfuncs_t *dfunc = device->funcs;
VkPipelineLayoutCreateInfo createInfo = {
VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, 0, 0,
layouts->size, layouts->a,
pushConstants->size, pushConstants->a,
};
VkPipelineLayout layout;
dfunc->vkCreatePipelineLayout (dev, &createInfo, 0, &layout);
return layout;
}
qfv_pipelineset_t *
QFV_CreateGraphicsPipelines (qfv_device_t *device,
VkPipelineCache cache,
qfv_graphicspipelinecreateinfoset_t *gpciSet)
{
VkDevice dev = device->dev;
qfv_devfuncs_t *dfunc = device->funcs;
__auto_type pipelines = QFV_AllocPipelineSet (gpciSet->size, malloc);
dfunc->vkCreateGraphicsPipelines (dev, cache, gpciSet->size, gpciSet->a, 0,
pipelines->a);
return pipelines;
}
qfv_pipelineset_t *
QFV_CreateComputePipelines (qfv_device_t *device,
VkPipelineCache cache,
qfv_computepipelinecreateinfoset_t *cpciSet)
{
VkDevice dev = device->dev;
qfv_devfuncs_t *dfunc = device->funcs;
__auto_type pipelines = QFV_AllocPipelineSet (cpciSet->size, malloc);
dfunc->vkCreateComputePipelines (dev, cache, cpciSet->size, cpciSet->a, 0,
pipelines->a);
return pipelines;
}
void
QFV_DestroyPipeline (qfv_device_t *device, VkPipeline pipeline)
{
VkDevice dev = device->dev;
qfv_devfuncs_t *dfunc = device->funcs;
dfunc->vkDestroyPipeline (dev, pipeline, 0);
}

View file

@ -60,7 +60,6 @@
#include "QF/Vulkan/barrier.h"
#include "QF/Vulkan/command.h"
#include "QF/Vulkan/debug.h"
#include "QF/Vulkan/descriptor.h"
#include "QF/Vulkan/device.h"
#include "QF/Vulkan/image.h"
#include "QF/Vulkan/instance.h"

View file

@ -48,7 +48,6 @@
#include "QF/Vulkan/qf_compose.h"
#include "QF/Vulkan/qf_translucent.h"
#include "QF/Vulkan/debug.h"
#include "QF/Vulkan/descriptor.h"
#include "QF/Vulkan/device.h"
#include "QF/Vulkan/dsmanager.h"
#include "QF/Vulkan/image.h"

View file

@ -58,7 +58,6 @@
#include "QF/Vulkan/buffer.h"
#include "QF/Vulkan/command.h"
#include "QF/Vulkan/debug.h"
#include "QF/Vulkan/descriptor.h"
#include "QF/Vulkan/device.h"
#include "QF/Vulkan/dsmanager.h"
#include "QF/Vulkan/image.h"

View file

@ -44,7 +44,6 @@
#include "QF/Vulkan/qf_matrices.h"
#include "QF/Vulkan/qf_texture.h"
#include "QF/Vulkan/debug.h"
#include "QF/Vulkan/descriptor.h"
#include "QF/Vulkan/device.h"
#include "QF/Vulkan/dsmanager.h"
#include "QF/Vulkan/instance.h"

View file

@ -63,7 +63,6 @@
#include "QF/Vulkan/barrier.h"
#include "QF/Vulkan/buffer.h"
#include "QF/Vulkan/debug.h"
#include "QF/Vulkan/descriptor.h"
#include "QF/Vulkan/device.h"
#include "QF/Vulkan/dsmanager.h"
#include "QF/Vulkan/image.h"

View file

@ -46,7 +46,6 @@
#include "QF/Vulkan/barrier.h"
#include "QF/Vulkan/buffer.h"
#include "QF/Vulkan/debug.h"
#include "QF/Vulkan/descriptor.h"
#include "QF/Vulkan/device.h"
#include "QF/Vulkan/dsmanager.h"
#include "QF/Vulkan/instance.h"

View file

@ -49,7 +49,6 @@
#include "QF/Vulkan/qf_vid.h"
#include "QF/Vulkan/capture.h"
#include "QF/Vulkan/debug.h"
#include "QF/Vulkan/descriptor.h"
#include "QF/Vulkan/device.h"
#include "QF/Vulkan/dsmanager.h"
#include "QF/Vulkan/image.h"

View file

@ -44,7 +44,6 @@
#include "QF/Vulkan/buffer.h"
#include "QF/Vulkan/debug.h"
#include "QF/Vulkan/descriptor.h"
#include "QF/Vulkan/device.h"
#include "QF/Vulkan/dsmanager.h"
#include "QF/Vulkan/instance.h"

View file

@ -40,7 +40,6 @@
#include "QF/Vulkan/qf_planes.h"
#include "QF/Vulkan/barrier.h"
#include "QF/Vulkan/debug.h"
#include "QF/Vulkan/descriptor.h"
#include "QF/Vulkan/device.h"
#include "QF/Vulkan/dsmanager.h"
#include "QF/Vulkan/instance.h"

View file

@ -43,7 +43,6 @@
#include "QF/Vulkan/qf_lighting.h"
#include "QF/Vulkan/qf_scene.h"
#include "QF/Vulkan/debug.h"
#include "QF/Vulkan/descriptor.h"
#include "QF/Vulkan/device.h"
#include "QF/Vulkan/dsmanager.h"
#include "QF/Vulkan/instance.h"

View file

@ -59,7 +59,6 @@
#include "QF/Vulkan/buffer.h"
#include "QF/Vulkan/command.h"
#include "QF/Vulkan/debug.h"
#include "QF/Vulkan/descriptor.h"
#include "QF/Vulkan/device.h"
#include "QF/Vulkan/dsmanager.h"
#include "QF/Vulkan/instance.h"

View file

@ -42,7 +42,6 @@
#include "QF/Vulkan/qf_texture.h"
#include "QF/Vulkan/barrier.h"
#include "QF/Vulkan/debug.h"
#include "QF/Vulkan/descriptor.h"
#include "QF/Vulkan/device.h"
#include "QF/Vulkan/dsmanager.h"
#include "QF/Vulkan/image.h"

View file

@ -48,7 +48,6 @@
#include "QF/Vulkan/qf_translucent.h"
#include "QF/Vulkan/barrier.h"
#include "QF/Vulkan/debug.h"
#include "QF/Vulkan/descriptor.h"
#include "QF/Vulkan/device.h"
#include "QF/Vulkan/dsmanager.h"
#include "QF/Vulkan/image.h"