From 9bdf09bd768f73073e9d1cbc65febfd7f7955db3 Mon Sep 17 00:00:00 2001 From: Liam Date: Thu, 18 Jan 2024 11:44:13 -0500 Subject: renderer_vulkan: implement layer stack composition --- .../renderer_vulkan/present/window_adapt_pass.h | 29 ++++++---------------- 1 file changed, 8 insertions(+), 21 deletions(-) (limited to 'src/video_core/renderer_vulkan/present/window_adapt_pass.h') diff --git a/src/video_core/renderer_vulkan/present/window_adapt_pass.h b/src/video_core/renderer_vulkan/present/window_adapt_pass.h index 5309233a2..0e2edfc31 100644 --- a/src/video_core/renderer_vulkan/present/window_adapt_pass.h +++ b/src/video_core/renderer_vulkan/present/window_adapt_pass.h @@ -3,6 +3,8 @@ #pragma once +#include + #include "common/math_util.h" #include "video_core/vulkan_common/vulkan_wrapper.h" @@ -18,54 +20,39 @@ namespace Vulkan { class Device; struct Frame; -class MemoryAllocator; +class Layer; class Scheduler; +class RasterizerVulkan; class WindowAdaptPass final { public: - explicit WindowAdaptPass(const Device& device, const MemoryAllocator& memory_allocator, - size_t num_images, VkFormat frame_format, vk::Sampler&& sampler, + explicit WindowAdaptPass(const Device& device, VkFormat frame_format, vk::Sampler&& sampler, vk::ShaderModule&& fragment_shader); ~WindowAdaptPass(); - void Draw(Scheduler& scheduler, size_t image_index, VkImageView src_image_view, - VkExtent2D src_image_extent, const Common::Rectangle& crop_rect, + void Draw(RasterizerVulkan& rasterizer, Scheduler& scheduler, size_t image_index, + std::list& layers, std::span configs, const Layout::FramebufferLayout& layout, Frame* dst); + VkDescriptorSetLayout GetDescriptorSetLayout(); VkRenderPass GetRenderPass(); private: - struct BufferData; - - void SetUniformData(BufferData& data, const Layout::FramebufferLayout& layout) const; - void SetVertexData(BufferData& data, const Layout::FramebufferLayout& layout, - const Common::Rectangle& crop_rect) const; - void UpdateDescriptorSet(size_t image_index, VkImageView image_view); - void ConfigureLayout(size_t image_index, VkImageView image_view, - const Layout::FramebufferLayout& layout, - const Common::Rectangle& crop_rect); - - void CreateDescriptorPool(size_t num_images); void CreateDescriptorSetLayout(); - void CreateDescriptorSets(size_t num_images); void CreatePipelineLayout(); void CreateVertexShader(); void CreateRenderPass(VkFormat frame_format); void CreatePipeline(); - void CreateBuffer(const MemoryAllocator& memory_allocator); private: const Device& device; - vk::DescriptorPool descriptor_pool; vk::DescriptorSetLayout descriptor_set_layout; - vk::DescriptorSets descriptor_sets; vk::PipelineLayout pipeline_layout; vk::Sampler sampler; vk::ShaderModule vertex_shader; vk::ShaderModule fragment_shader; vk::RenderPass render_pass; vk::Pipeline pipeline; - vk::Buffer buffer; }; } // namespace Vulkan -- cgit v1.2.3