diff options
author | Liam <byteslice@airmail.cc> | 2024-01-18 17:44:13 +0100 |
---|---|---|
committer | Liam <byteslice@airmail.cc> | 2024-01-31 17:27:21 +0100 |
commit | 9bdf09bd768f73073e9d1cbc65febfd7f7955db3 (patch) | |
tree | 7d29d4c4f61f4c0272056af2370a2c75a769f7d6 /src/video_core/renderer_vulkan/vk_blit_screen.h | |
parent | renderer_opengl: split up blit screen resources into antialias and window adapt passes (diff) | |
download | yuzu-9bdf09bd768f73073e9d1cbc65febfd7f7955db3.tar yuzu-9bdf09bd768f73073e9d1cbc65febfd7f7955db3.tar.gz yuzu-9bdf09bd768f73073e9d1cbc65febfd7f7955db3.tar.bz2 yuzu-9bdf09bd768f73073e9d1cbc65febfd7f7955db3.tar.lz yuzu-9bdf09bd768f73073e9d1cbc65febfd7f7955db3.tar.xz yuzu-9bdf09bd768f73073e9d1cbc65febfd7f7955db3.tar.zst yuzu-9bdf09bd768f73073e9d1cbc65febfd7f7955db3.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/renderer_vulkan/vk_blit_screen.h | 59 |
1 files changed, 9 insertions, 50 deletions
diff --git a/src/video_core/renderer_vulkan/vk_blit_screen.h b/src/video_core/renderer_vulkan/vk_blit_screen.h index 555b3d82e..9a3476c77 100644 --- a/src/video_core/renderer_vulkan/vk_blit_screen.h +++ b/src/video_core/renderer_vulkan/vk_blit_screen.h @@ -3,10 +3,12 @@ #pragma once +#include <list> #include <memory> #include "core/frontend/framebuffer_layout.h" #include "video_core/host1x/gpu_device_memory_manager.h" +#include "video_core/renderer_vulkan/present/layer.h" #include "video_core/vulkan_common/vulkan_memory_allocator.h" #include "video_core/vulkan_common/vulkan_wrapper.h" @@ -14,32 +16,17 @@ namespace Core { class System; } -namespace Core::Frontend { -class EmuWindow; -} - namespace Tegra { struct FramebufferConfig; } -namespace VideoCore { -class RasterizerInterface; -} - -namespace Service::android { -enum class PixelFormat : u32; -} - namespace Settings { -enum class AntiAliasing : u32; enum class ScalingFilter : u32; } // namespace Settings namespace Vulkan { -class AntiAliasPass; class Device; -class FSR; class RasterizerVulkan; class Scheduler; class PresentManager; @@ -64,8 +51,8 @@ public: ~BlitScreen(); void DrawToFrame(RasterizerVulkan& rasterizer, Frame* frame, - const Tegra::FramebufferConfig& framebuffer, - const Layout::FramebufferLayout& layout, size_t swapchain_images, + std::span<const Tegra::FramebufferConfig> framebuffers, + const Layout::FramebufferLayout& layout, size_t current_swapchain_image_count, VkFormat current_swapchain_view_format); [[nodiscard]] vk::Framebuffer CreateFramebuffer(const Layout::FramebufferLayout& layout, @@ -74,50 +61,22 @@ public: private: void WaitIdle(); - void SetWindowAdaptPass(const Layout::FramebufferLayout& layout); - void SetAntiAliasPass(); - - void Draw(RasterizerVulkan& rasterizer, const Tegra::FramebufferConfig& framebuffer, - const Layout::FramebufferLayout& layout, Frame* dst); - + void SetWindowAdaptPass(); vk::Framebuffer CreateFramebuffer(const VkImageView& image_view, VkExtent2D extent, VkRenderPass render_pass); - void RefreshResources(const Tegra::FramebufferConfig& framebuffer); - void ReleaseRawImages(); - void CreateStagingBuffer(const Tegra::FramebufferConfig& framebuffer); - void CreateRawImages(const Tegra::FramebufferConfig& framebuffer); - - u64 CalculateBufferSize(const Tegra::FramebufferConfig& framebuffer) const; - u64 GetRawImageOffset(const Tegra::FramebufferConfig& framebuffer) const; - Tegra::MaxwellDeviceMemoryManager& device_memory; const Device& device; MemoryAllocator& memory_allocator; PresentManager& present_manager; Scheduler& scheduler; - std::size_t image_count; + std::size_t image_count{}; std::size_t image_index{}; + VkFormat swapchain_view_format{}; - vk::Buffer buffer; - - std::vector<u64> resource_ticks; - - std::vector<vk::Image> raw_images; - std::vector<vk::ImageView> raw_image_views; - u32 raw_width = 0; - u32 raw_height = 0; - - Service::android::PixelFormat pixel_format{}; - VkFormat framebuffer_view_format; - VkFormat swapchain_view_format; - - Settings::AntiAliasing anti_aliasing{}; Settings::ScalingFilter scaling_filter{}; - - std::unique_ptr<FSR> fsr; - std::unique_ptr<AntiAliasPass> anti_alias; - std::unique_ptr<WindowAdaptPass> window_adapt; + std::unique_ptr<WindowAdaptPass> window_adapt{}; + std::list<Layer> layers{}; }; } // namespace Vulkan |