summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar german772022-06-25 23:50:04 -0500
committerGravatar german772022-06-26 20:21:45 -0500
commitb5d6194f6d23e4e715c9d6b555000c1fc4a7b419 (patch)
treec3588d170b2abd014af818c4381f2d5bd33a213b
parentvideo_core: Replace VKQueryCache with QueryCache (diff)
downloadyuzu-b5d6194f6d23e4e715c9d6b555000c1fc4a7b419.tar.gz
yuzu-b5d6194f6d23e4e715c9d6b555000c1fc4a7b419.tar.xz
yuzu-b5d6194f6d23e4e715c9d6b555000c1fc4a7b419.zip
video_core: Replace VKSwapchain with Swapchain
Diffstat (limited to '')
-rw-r--r--src/video_core/renderer_vulkan/renderer_vulkan.h2
-rw-r--r--src/video_core/renderer_vulkan/vk_blit_screen.cpp3
-rw-r--r--src/video_core/renderer_vulkan/vk_blit_screen.h9
-rw-r--r--src/video_core/renderer_vulkan/vk_swapchain.cpp26
-rw-r--r--src/video_core/renderer_vulkan/vk_swapchain.h8
5 files changed, 23 insertions, 25 deletions
diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.h b/src/video_core/renderer_vulkan/renderer_vulkan.h
index bd254c45e..e7bfecb20 100644
--- a/src/video_core/renderer_vulkan/renderer_vulkan.h
+++ b/src/video_core/renderer_vulkan/renderer_vulkan.h
@@ -71,7 +71,7 @@ private:
71 MemoryAllocator memory_allocator; 71 MemoryAllocator memory_allocator;
72 StateTracker state_tracker; 72 StateTracker state_tracker;
73 Scheduler scheduler; 73 Scheduler scheduler;
74 VKSwapchain swapchain; 74 Swapchain swapchain;
75 BlitScreen blit_screen; 75 BlitScreen blit_screen;
76 RasterizerVulkan rasterizer; 76 RasterizerVulkan rasterizer;
77}; 77};
diff --git a/src/video_core/renderer_vulkan/vk_blit_screen.cpp b/src/video_core/renderer_vulkan/vk_blit_screen.cpp
index ea0b15b78..1ec8392e1 100644
--- a/src/video_core/renderer_vulkan/vk_blit_screen.cpp
+++ b/src/video_core/renderer_vulkan/vk_blit_screen.cpp
@@ -120,8 +120,7 @@ struct BlitScreen::BufferData {
120 120
121BlitScreen::BlitScreen(Core::Memory::Memory& cpu_memory_, Core::Frontend::EmuWindow& render_window_, 121BlitScreen::BlitScreen(Core::Memory::Memory& cpu_memory_, Core::Frontend::EmuWindow& render_window_,
122 const Device& device_, MemoryAllocator& memory_allocator_, 122 const Device& device_, MemoryAllocator& memory_allocator_,
123 VKSwapchain& swapchain_, Scheduler& scheduler_, 123 Swapchain& swapchain_, Scheduler& scheduler_, const ScreenInfo& screen_info_)
124 const ScreenInfo& screen_info_)
125 : cpu_memory{cpu_memory_}, render_window{render_window_}, device{device_}, 124 : cpu_memory{cpu_memory_}, render_window{render_window_}, device{device_},
126 memory_allocator{memory_allocator_}, swapchain{swapchain_}, scheduler{scheduler_}, 125 memory_allocator{memory_allocator_}, swapchain{swapchain_}, scheduler{scheduler_},
127 image_count{swapchain.GetImageCount()}, screen_info{screen_info_} { 126 image_count{swapchain.GetImageCount()}, screen_info{screen_info_} {
diff --git a/src/video_core/renderer_vulkan/vk_blit_screen.h b/src/video_core/renderer_vulkan/vk_blit_screen.h
index 322af27e1..b8c67bef0 100644
--- a/src/video_core/renderer_vulkan/vk_blit_screen.h
+++ b/src/video_core/renderer_vulkan/vk_blit_screen.h
@@ -36,7 +36,7 @@ class Device;
36class FSR; 36class FSR;
37class RasterizerVulkan; 37class RasterizerVulkan;
38class Scheduler; 38class Scheduler;
39class VKSwapchain; 39class Swapchain;
40 40
41struct ScreenInfo { 41struct ScreenInfo {
42 VkImageView image_view{}; 42 VkImageView image_view{};
@@ -48,9 +48,8 @@ struct ScreenInfo {
48class BlitScreen { 48class BlitScreen {
49public: 49public:
50 explicit BlitScreen(Core::Memory::Memory& cpu_memory, Core::Frontend::EmuWindow& render_window, 50 explicit BlitScreen(Core::Memory::Memory& cpu_memory, Core::Frontend::EmuWindow& render_window,
51 const Device& device, MemoryAllocator& memory_manager, 51 const Device& device, MemoryAllocator& memory_manager, Swapchain& swapchain,
52 VKSwapchain& swapchain, Scheduler& scheduler, 52 Scheduler& scheduler, const ScreenInfo& screen_info);
53 const ScreenInfo& screen_info);
54 ~BlitScreen(); 53 ~BlitScreen();
55 54
56 void Recreate(); 55 void Recreate();
@@ -108,7 +107,7 @@ private:
108 Core::Frontend::EmuWindow& render_window; 107 Core::Frontend::EmuWindow& render_window;
109 const Device& device; 108 const Device& device;
110 MemoryAllocator& memory_allocator; 109 MemoryAllocator& memory_allocator;
111 VKSwapchain& swapchain; 110 Swapchain& swapchain;
112 Scheduler& scheduler; 111 Scheduler& scheduler;
113 const std::size_t image_count; 112 const std::size_t image_count;
114 const ScreenInfo& screen_info; 113 const ScreenInfo& screen_info;
diff --git a/src/video_core/renderer_vulkan/vk_swapchain.cpp b/src/video_core/renderer_vulkan/vk_swapchain.cpp
index 68adf8be7..a0c26a72a 100644
--- a/src/video_core/renderer_vulkan/vk_swapchain.cpp
+++ b/src/video_core/renderer_vulkan/vk_swapchain.cpp
@@ -64,15 +64,15 @@ VkExtent2D ChooseSwapExtent(const VkSurfaceCapabilitiesKHR& capabilities, u32 wi
64 64
65} // Anonymous namespace 65} // Anonymous namespace
66 66
67VKSwapchain::VKSwapchain(VkSurfaceKHR surface_, const Device& device_, Scheduler& scheduler_, 67Swapchain::Swapchain(VkSurfaceKHR surface_, const Device& device_, Scheduler& scheduler_, u32 width,
68 u32 width, u32 height, bool srgb) 68 u32 height, bool srgb)
69 : surface{surface_}, device{device_}, scheduler{scheduler_} { 69 : surface{surface_}, device{device_}, scheduler{scheduler_} {
70 Create(width, height, srgb); 70 Create(width, height, srgb);
71} 71}
72 72
73VKSwapchain::~VKSwapchain() = default; 73Swapchain::~Swapchain() = default;
74 74
75void VKSwapchain::Create(u32 width, u32 height, bool srgb) { 75void Swapchain::Create(u32 width, u32 height, bool srgb) {
76 is_outdated = false; 76 is_outdated = false;
77 is_suboptimal = false; 77 is_suboptimal = false;
78 78
@@ -93,7 +93,7 @@ void VKSwapchain::Create(u32 width, u32 height, bool srgb) {
93 resource_ticks.resize(image_count); 93 resource_ticks.resize(image_count);
94} 94}
95 95
96void VKSwapchain::AcquireNextImage() { 96void Swapchain::AcquireNextImage() {
97 const VkResult result = device.GetLogical().AcquireNextImageKHR( 97 const VkResult result = device.GetLogical().AcquireNextImageKHR(
98 *swapchain, std::numeric_limits<u64>::max(), *present_semaphores[frame_index], 98 *swapchain, std::numeric_limits<u64>::max(), *present_semaphores[frame_index],
99 VK_NULL_HANDLE, &image_index); 99 VK_NULL_HANDLE, &image_index);
@@ -114,7 +114,7 @@ void VKSwapchain::AcquireNextImage() {
114 resource_ticks[image_index] = scheduler.CurrentTick(); 114 resource_ticks[image_index] = scheduler.CurrentTick();
115} 115}
116 116
117void VKSwapchain::Present(VkSemaphore render_semaphore) { 117void Swapchain::Present(VkSemaphore render_semaphore) {
118 const auto present_queue{device.GetPresentQueue()}; 118 const auto present_queue{device.GetPresentQueue()};
119 const VkPresentInfoKHR present_info{ 119 const VkPresentInfoKHR present_info{
120 .sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR, 120 .sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
@@ -145,8 +145,8 @@ void VKSwapchain::Present(VkSemaphore render_semaphore) {
145 } 145 }
146} 146}
147 147
148void VKSwapchain::CreateSwapchain(const VkSurfaceCapabilitiesKHR& capabilities, u32 width, 148void Swapchain::CreateSwapchain(const VkSurfaceCapabilitiesKHR& capabilities, u32 width, u32 height,
149 u32 height, bool srgb) { 149 bool srgb) {
150 const auto physical_device{device.GetPhysical()}; 150 const auto physical_device{device.GetPhysical()};
151 const auto formats{physical_device.GetSurfaceFormatsKHR(surface)}; 151 const auto formats{physical_device.GetSurfaceFormatsKHR(surface)};
152 const auto present_modes{physical_device.GetSurfacePresentModesKHR(surface)}; 152 const auto present_modes{physical_device.GetSurfacePresentModesKHR(surface)};
@@ -212,13 +212,13 @@ void VKSwapchain::CreateSwapchain(const VkSurfaceCapabilitiesKHR& capabilities,
212 image_view_format = srgb ? VK_FORMAT_B8G8R8A8_SRGB : VK_FORMAT_B8G8R8A8_UNORM; 212 image_view_format = srgb ? VK_FORMAT_B8G8R8A8_SRGB : VK_FORMAT_B8G8R8A8_UNORM;
213} 213}
214 214
215void VKSwapchain::CreateSemaphores() { 215void Swapchain::CreateSemaphores() {
216 present_semaphores.resize(image_count); 216 present_semaphores.resize(image_count);
217 std::ranges::generate(present_semaphores, 217 std::ranges::generate(present_semaphores,
218 [this] { return device.GetLogical().CreateSemaphore(); }); 218 [this] { return device.GetLogical().CreateSemaphore(); });
219} 219}
220 220
221void VKSwapchain::CreateImageViews() { 221void Swapchain::CreateImageViews() {
222 VkImageViewCreateInfo ci{ 222 VkImageViewCreateInfo ci{
223 .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, 223 .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
224 .pNext = nullptr, 224 .pNext = nullptr,
@@ -250,7 +250,7 @@ void VKSwapchain::CreateImageViews() {
250 } 250 }
251} 251}
252 252
253void VKSwapchain::Destroy() { 253void Swapchain::Destroy() {
254 frame_index = 0; 254 frame_index = 0;
255 present_semaphores.clear(); 255 present_semaphores.clear();
256 framebuffers.clear(); 256 framebuffers.clear();
@@ -258,11 +258,11 @@ void VKSwapchain::Destroy() {
258 swapchain.reset(); 258 swapchain.reset();
259} 259}
260 260
261bool VKSwapchain::HasFpsUnlockChanged() const { 261bool Swapchain::HasFpsUnlockChanged() const {
262 return current_fps_unlocked != Settings::values.disable_fps_limit.GetValue(); 262 return current_fps_unlocked != Settings::values.disable_fps_limit.GetValue();
263} 263}
264 264
265bool VKSwapchain::NeedsPresentModeUpdate() const { 265bool Swapchain::NeedsPresentModeUpdate() const {
266 // Mailbox present mode is the ideal for all scenarios. If it is not available, 266 // Mailbox present mode is the ideal for all scenarios. If it is not available,
267 // A different present mode is needed to support unlocked FPS above the monitor's refresh rate. 267 // A different present mode is needed to support unlocked FPS above the monitor's refresh rate.
268 return present_mode != VK_PRESENT_MODE_MAILBOX_KHR && HasFpsUnlockChanged(); 268 return present_mode != VK_PRESENT_MODE_MAILBOX_KHR && HasFpsUnlockChanged();
diff --git a/src/video_core/renderer_vulkan/vk_swapchain.h b/src/video_core/renderer_vulkan/vk_swapchain.h
index 6160c6a06..111b3902d 100644
--- a/src/video_core/renderer_vulkan/vk_swapchain.h
+++ b/src/video_core/renderer_vulkan/vk_swapchain.h
@@ -17,11 +17,11 @@ namespace Vulkan {
17class Device; 17class Device;
18class Scheduler; 18class Scheduler;
19 19
20class VKSwapchain { 20class Swapchain {
21public: 21public:
22 explicit VKSwapchain(VkSurfaceKHR surface, const Device& device, Scheduler& scheduler, 22 explicit Swapchain(VkSurfaceKHR surface, const Device& device, Scheduler& scheduler, u32 width,
23 u32 width, u32 height, bool srgb); 23 u32 height, bool srgb);
24 ~VKSwapchain(); 24 ~Swapchain();
25 25
26 /// Creates (or recreates) the swapchain with a given size. 26 /// Creates (or recreates) the swapchain with a given size.
27 void Create(u32 width, u32 height, bool srgb); 27 void Create(u32 width, u32 height, bool srgb);