summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/video_core/CMakeLists.txt1
-rw-r--r--src/video_core/renderer_vulkan/renderer_vulkan.h72
2 files changed, 73 insertions, 0 deletions
diff --git a/src/video_core/CMakeLists.txt b/src/video_core/CMakeLists.txt
index 729ee4a01..d7719eed9 100644
--- a/src/video_core/CMakeLists.txt
+++ b/src/video_core/CMakeLists.txt
@@ -153,6 +153,7 @@ if (ENABLE_VULKAN)
153 renderer_vulkan/fixed_pipeline_state.h 153 renderer_vulkan/fixed_pipeline_state.h
154 renderer_vulkan/maxwell_to_vk.cpp 154 renderer_vulkan/maxwell_to_vk.cpp
155 renderer_vulkan/maxwell_to_vk.h 155 renderer_vulkan/maxwell_to_vk.h
156 renderer_vulkan/renderer_vulkan.h
156 renderer_vulkan/vk_buffer_cache.cpp 157 renderer_vulkan/vk_buffer_cache.cpp
157 renderer_vulkan/vk_buffer_cache.h 158 renderer_vulkan/vk_buffer_cache.h
158 renderer_vulkan/vk_compute_pass.cpp 159 renderer_vulkan/vk_compute_pass.cpp
diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.h b/src/video_core/renderer_vulkan/renderer_vulkan.h
new file mode 100644
index 000000000..a472c5dc9
--- /dev/null
+++ b/src/video_core/renderer_vulkan/renderer_vulkan.h
@@ -0,0 +1,72 @@
1// Copyright 2018 yuzu Emulator Project
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7#include <optional>
8#include <vector>
9#include "video_core/renderer_base.h"
10#include "video_core/renderer_vulkan/declarations.h"
11
12namespace Core {
13class System;
14}
15
16namespace Vulkan {
17
18class VKBlitScreen;
19class VKDevice;
20class VKFence;
21class VKMemoryManager;
22class VKResourceManager;
23class VKSwapchain;
24class VKScheduler;
25class VKImage;
26
27struct VKScreenInfo {
28 VKImage* image{};
29 u32 width{};
30 u32 height{};
31 bool is_srgb{};
32};
33
34class RendererVulkan final : public VideoCore::RendererBase {
35public:
36 explicit RendererVulkan(Core::Frontend::EmuWindow& window, Core::System& system);
37 ~RendererVulkan() override;
38
39 /// Swap buffers (render frame)
40 void SwapBuffers(const Tegra::FramebufferConfig* framebuffer) override;
41
42 /// Initialize the renderer
43 bool Init() override;
44
45 /// Shutdown the renderer
46 void ShutDown() override;
47
48private:
49 std::optional<vk::DebugUtilsMessengerEXT> CreateDebugCallback(
50 const vk::DispatchLoaderDynamic& dldi);
51
52 bool PickDevices(const vk::DispatchLoaderDynamic& dldi);
53
54 void Report() const;
55
56 Core::System& system;
57
58 vk::Instance instance;
59 vk::SurfaceKHR surface;
60
61 VKScreenInfo screen_info;
62
63 UniqueDebugUtilsMessengerEXT debug_callback;
64 std::unique_ptr<VKDevice> device;
65 std::unique_ptr<VKSwapchain> swapchain;
66 std::unique_ptr<VKMemoryManager> memory_manager;
67 std::unique_ptr<VKResourceManager> resource_manager;
68 std::unique_ptr<VKScheduler> scheduler;
69 std::unique_ptr<VKBlitScreen> blit_screen;
70};
71
72} // namespace Vulkan