From 5e5dfe686ab04edcaf18a2dee0f18407645384e4 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sat, 24 Feb 2018 23:10:22 +1000 Subject: [PATCH] VKPipeline: Fix render pass and add pipeline layout fields --- Source/Core/VideoBackends/Vulkan/VKPipeline.cpp | 9 ++++++--- Source/Core/VideoBackends/Vulkan/VKPipeline.h | 9 +++++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Source/Core/VideoBackends/Vulkan/VKPipeline.cpp b/Source/Core/VideoBackends/Vulkan/VKPipeline.cpp index df245644c4..c6c0aa0c85 100644 --- a/Source/Core/VideoBackends/Vulkan/VKPipeline.cpp +++ b/Source/Core/VideoBackends/Vulkan/VKPipeline.cpp @@ -14,7 +14,9 @@ namespace Vulkan { -VKPipeline::VKPipeline(VkPipeline pipeline) : m_pipeline(pipeline) +VKPipeline::VKPipeline(VkPipeline pipeline, VkPipelineLayout pipeline_layout, + AbstractPipelineUsage usage) + : m_pipeline(pipeline), m_pipeline_layout(pipeline_layout), m_usage(usage) { } @@ -30,7 +32,8 @@ std::unique_ptr VKPipeline::Create(const AbstractPipelineConfig& con // Get render pass for config. VkRenderPass render_pass = g_object_cache->GetRenderPass( Util::GetVkFormatForHostTextureFormat(config.framebuffer_state.color_texture_format), - VK_FORMAT_UNDEFINED, config.framebuffer_state.samples, VK_ATTACHMENT_LOAD_OP_LOAD); + Util::GetVkFormatForHostTextureFormat(config.framebuffer_state.depth_texture_format), + config.framebuffer_state.samples, VK_ATTACHMENT_LOAD_OP_LOAD); // Get pipeline layout. VkPipelineLayout pipeline_layout; @@ -68,6 +71,6 @@ std::unique_ptr VKPipeline::Create(const AbstractPipelineConfig& con if (pipeline == VK_NULL_HANDLE) return nullptr; - return std::make_unique(pipeline); + return std::make_unique(pipeline, pipeline_layout, config.usage); } } // namespace Vulkan diff --git a/Source/Core/VideoBackends/Vulkan/VKPipeline.h b/Source/Core/VideoBackends/Vulkan/VKPipeline.h index ad66313e4c..767215062a 100644 --- a/Source/Core/VideoBackends/Vulkan/VKPipeline.h +++ b/Source/Core/VideoBackends/Vulkan/VKPipeline.h @@ -14,14 +14,19 @@ namespace Vulkan class VKPipeline final : public AbstractPipeline { public: - explicit VKPipeline(VkPipeline pipeline); + explicit VKPipeline(VkPipeline pipeline, VkPipelineLayout pipeline_layout, + AbstractPipelineUsage usage); ~VKPipeline() override; - VkPipeline GetPipeline() const { return m_pipeline; } + VkPipeline GetVkPipeline() const { return m_pipeline; } + VkPipelineLayout GetVkPipelineLayout() const { return m_pipeline_layout; } + AbstractPipelineUsage GetUsage() const { return m_usage; } static std::unique_ptr Create(const AbstractPipelineConfig& config); private: VkPipeline m_pipeline; + VkPipelineLayout m_pipeline_layout; + AbstractPipelineUsage m_usage; }; } // namespace Vulkan