Renderer: Add pipeline and texture sampler info validation

This commit is contained in:
Jérôme Leclercq
2021-07-09 12:34:38 +02:00
parent 8458301a64
commit 552dfbc01e
19 changed files with 103 additions and 10 deletions

View File

@@ -18,12 +18,13 @@ namespace Nz
class NAZARA_VULKANRENDERER_API VulkanDevice : public RenderDevice, public Vk::Device
{
public:
inline VulkanDevice(Vk::Instance& instance, RenderDeviceInfo renderDeviceInfo);
inline VulkanDevice(Vk::Instance& instance, const RenderDeviceFeatures& enabledFeatures, RenderDeviceInfo renderDeviceInfo);
VulkanDevice(const VulkanDevice&) = delete;
VulkanDevice(VulkanDevice&&) = delete; ///TODO?
~VulkanDevice();
const RenderDeviceInfo& GetDeviceInfo() const override;
const RenderDeviceFeatures& GetEnabledFeatures() const override;
std::shared_ptr<AbstractBuffer> InstantiateBuffer(BufferType type) override;
std::shared_ptr<CommandPool> InstantiateCommandPool(QueueType queueType) override;
@@ -42,6 +43,7 @@ namespace Nz
VulkanDevice& operator=(VulkanDevice&&) = delete; ///TODO?
private:
RenderDeviceFeatures m_enabledFeatures;
RenderDeviceInfo m_renderDeviceInfo;
};
}

View File

@@ -7,8 +7,9 @@
namespace Nz
{
inline VulkanDevice::VulkanDevice(Vk::Instance& instance, RenderDeviceInfo renderDeviceInfo) :
inline VulkanDevice::VulkanDevice(Vk::Instance& instance, const RenderDeviceFeatures& enabledFeatures, RenderDeviceInfo renderDeviceInfo) :
Device(instance),
m_enabledFeatures(enabledFeatures),
m_renderDeviceInfo(std::move(renderDeviceInfo))
{
}

View File

@@ -19,12 +19,14 @@
namespace Nz
{
class VulkanDevice;
class NAZARA_VULKANRENDERER_API VulkanRenderPipeline : public RenderPipeline
{
public:
struct CreateInfo;
VulkanRenderPipeline(Vk::Device& device, RenderPipelineInfo pipelineInfo);
VulkanRenderPipeline(VulkanDevice& device, RenderPipelineInfo pipelineInfo);
~VulkanRenderPipeline() = default;
VkPipeline Get(const VulkanRenderPass& renderPass, std::size_t subpassIndex) const;

View File

@@ -13,10 +13,12 @@
namespace Nz
{
class VulkanDevice;
class NAZARA_VULKANRENDERER_API VulkanTextureSampler : public TextureSampler
{
public:
VulkanTextureSampler(Vk::Device& device, TextureSamplerInfo samplerInfo);
VulkanTextureSampler(VulkanDevice& device, TextureSamplerInfo samplerInfo);
VulkanTextureSampler(const VulkanTextureSampler&) = delete;
VulkanTextureSampler(VulkanTextureSampler&&) = delete;
~VulkanTextureSampler() = default;