diff options
| author | 2018-08-11 14:10:55 -0400 | |
|---|---|---|
| committer | 2018-08-11 14:10:55 -0400 | |
| commit | d64303d185f86901d0f587faf0e9a65d8497169c (patch) | |
| tree | 27e105a3534a2a92d2ea6468dab723cc156118fa /src | |
| parent | Merge pull request #1003 from lioncash/var (diff) | |
| parent | video_core; Get rid of global g_toggle_framelimit_enabled variable (diff) | |
| download | yuzu-d64303d185f86901d0f587faf0e9a65d8497169c.tar.gz yuzu-d64303d185f86901d0f587faf0e9a65d8497169c.tar.xz yuzu-d64303d185f86901d0f587faf0e9a65d8497169c.zip | |
Merge pull request #1016 from lioncash/video
video_core: Get rid of global variable g_toggle_framelimit_enabled
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/service/nvflinger/buffer_queue.h | 1 | ||||
| -rw-r--r-- | src/core/settings.cpp | 6 | ||||
| -rw-r--r-- | src/video_core/gpu.cpp | 10 | ||||
| -rw-r--r-- | src/video_core/gpu.h | 10 | ||||
| -rw-r--r-- | src/video_core/renderer_base.cpp | 19 | ||||
| -rw-r--r-- | src/video_core/renderer_base.h | 24 | ||||
| -rw-r--r-- | src/video_core/video_core.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/video_core.h | 7 |
8 files changed, 44 insertions, 35 deletions
diff --git a/src/core/hle/service/nvflinger/buffer_queue.h b/src/core/hle/service/nvflinger/buffer_queue.h index f86e1056c..db2e17c0c 100644 --- a/src/core/hle/service/nvflinger/buffer_queue.h +++ b/src/core/hle/service/nvflinger/buffer_queue.h | |||
| @@ -6,6 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | #include <vector> | 7 | #include <vector> |
| 8 | #include <boost/optional.hpp> | 8 | #include <boost/optional.hpp> |
| 9 | #include "common/common_funcs.h" | ||
| 9 | #include "common/math_util.h" | 10 | #include "common/math_util.h" |
| 10 | #include "common/swap.h" | 11 | #include "common/swap.h" |
| 11 | #include "core/hle/kernel/event.h" | 12 | #include "core/hle/kernel/event.h" |
diff --git a/src/core/settings.cpp b/src/core/settings.cpp index a4623223d..0da159559 100644 --- a/src/core/settings.cpp +++ b/src/core/settings.cpp | |||
| @@ -7,22 +7,18 @@ | |||
| 7 | #include "core/hle/service/hid/hid.h" | 7 | #include "core/hle/service/hid/hid.h" |
| 8 | #include "core/settings.h" | 8 | #include "core/settings.h" |
| 9 | #include "video_core/renderer_base.h" | 9 | #include "video_core/renderer_base.h" |
| 10 | #include "video_core/video_core.h" | ||
| 11 | 10 | ||
| 12 | namespace Settings { | 11 | namespace Settings { |
| 13 | 12 | ||
| 14 | Values values = {}; | 13 | Values values = {}; |
| 15 | 14 | ||
| 16 | void Apply() { | 15 | void Apply() { |
| 17 | |||
| 18 | GDBStub::SetServerPort(values.gdbstub_port); | 16 | GDBStub::SetServerPort(values.gdbstub_port); |
| 19 | GDBStub::ToggleServer(values.use_gdbstub); | 17 | GDBStub::ToggleServer(values.use_gdbstub); |
| 20 | 18 | ||
| 21 | VideoCore::g_toggle_framelimit_enabled = values.toggle_framelimit; | ||
| 22 | |||
| 23 | auto& system_instance = Core::System::GetInstance(); | 19 | auto& system_instance = Core::System::GetInstance(); |
| 24 | if (system_instance.IsPoweredOn()) { | 20 | if (system_instance.IsPoweredOn()) { |
| 25 | system_instance.Renderer().UpdateCurrentFramebufferLayout(); | 21 | system_instance.Renderer().RefreshBaseSettings(); |
| 26 | } | 22 | } |
| 27 | 23 | ||
| 28 | Service::HID::ReloadInputDevices(); | 24 | Service::HID::ReloadInputDevices(); |
diff --git a/src/video_core/gpu.cpp b/src/video_core/gpu.cpp index b90937d17..ceaf86654 100644 --- a/src/video_core/gpu.cpp +++ b/src/video_core/gpu.cpp | |||
| @@ -2,6 +2,7 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include "common/assert.h" | ||
| 5 | #include "video_core/engines/fermi_2d.h" | 6 | #include "video_core/engines/fermi_2d.h" |
| 6 | #include "video_core/engines/maxwell_3d.h" | 7 | #include "video_core/engines/maxwell_3d.h" |
| 7 | #include "video_core/engines/maxwell_compute.h" | 8 | #include "video_core/engines/maxwell_compute.h" |
| @@ -11,6 +12,15 @@ | |||
| 11 | 12 | ||
| 12 | namespace Tegra { | 13 | namespace Tegra { |
| 13 | 14 | ||
| 15 | u32 FramebufferConfig::BytesPerPixel(PixelFormat format) { | ||
| 16 | switch (format) { | ||
| 17 | case PixelFormat::ABGR8: | ||
| 18 | return 4; | ||
| 19 | } | ||
| 20 | |||
| 21 | UNREACHABLE(); | ||
| 22 | } | ||
| 23 | |||
| 14 | GPU::GPU(VideoCore::RasterizerInterface& rasterizer) { | 24 | GPU::GPU(VideoCore::RasterizerInterface& rasterizer) { |
| 15 | memory_manager = std::make_unique<MemoryManager>(); | 25 | memory_manager = std::make_unique<MemoryManager>(); |
| 16 | maxwell_3d = std::make_unique<Engines::Maxwell3D>(rasterizer, *memory_manager); | 26 | maxwell_3d = std::make_unique<Engines::Maxwell3D>(rasterizer, *memory_manager); |
diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h index 0164c747a..b57312b3b 100644 --- a/src/video_core/gpu.h +++ b/src/video_core/gpu.h | |||
| @@ -6,7 +6,6 @@ | |||
| 6 | 6 | ||
| 7 | #include <memory> | 7 | #include <memory> |
| 8 | #include <unordered_map> | 8 | #include <unordered_map> |
| 9 | #include <vector> | ||
| 10 | #include "common/common_types.h" | 9 | #include "common/common_types.h" |
| 11 | #include "core/hle/service/nvflinger/buffer_queue.h" | 10 | #include "core/hle/service/nvflinger/buffer_queue.h" |
| 12 | #include "video_core/memory_manager.h" | 11 | #include "video_core/memory_manager.h" |
| @@ -72,14 +71,7 @@ struct FramebufferConfig { | |||
| 72 | /** | 71 | /** |
| 73 | * Returns the number of bytes per pixel. | 72 | * Returns the number of bytes per pixel. |
| 74 | */ | 73 | */ |
| 75 | static u32 BytesPerPixel(PixelFormat format) { | 74 | static u32 BytesPerPixel(PixelFormat format); |
| 76 | switch (format) { | ||
| 77 | case PixelFormat::ABGR8: | ||
| 78 | return 4; | ||
| 79 | } | ||
| 80 | |||
| 81 | UNREACHABLE(); | ||
| 82 | } | ||
| 83 | 75 | ||
| 84 | VAddr address; | 76 | VAddr address; |
| 85 | u32 offset; | 77 | u32 offset; |
diff --git a/src/video_core/renderer_base.cpp b/src/video_core/renderer_base.cpp index 3ca350243..e87016429 100644 --- a/src/video_core/renderer_base.cpp +++ b/src/video_core/renderer_base.cpp | |||
| @@ -4,18 +4,23 @@ | |||
| 4 | 4 | ||
| 5 | #include <memory> | 5 | #include <memory> |
| 6 | #include "core/frontend/emu_window.h" | 6 | #include "core/frontend/emu_window.h" |
| 7 | #include "core/settings.h" | ||
| 7 | #include "video_core/renderer_base.h" | 8 | #include "video_core/renderer_base.h" |
| 8 | #include "video_core/renderer_opengl/gl_rasterizer.h" | 9 | #include "video_core/renderer_opengl/gl_rasterizer.h" |
| 9 | 10 | ||
| 10 | namespace VideoCore { | 11 | namespace VideoCore { |
| 11 | 12 | ||
| 12 | RendererBase::RendererBase(EmuWindow& window) : render_window{window} {} | 13 | RendererBase::RendererBase(EmuWindow& window) : render_window{window} { |
| 14 | RefreshBaseSettings(); | ||
| 15 | } | ||
| 16 | |||
| 13 | RendererBase::~RendererBase() = default; | 17 | RendererBase::~RendererBase() = default; |
| 14 | 18 | ||
| 15 | void RendererBase::UpdateCurrentFramebufferLayout() { | 19 | void RendererBase::RefreshBaseSettings() { |
| 16 | const Layout::FramebufferLayout& layout = render_window.GetFramebufferLayout(); | 20 | RefreshRasterizerSetting(); |
| 21 | UpdateCurrentFramebufferLayout(); | ||
| 17 | 22 | ||
| 18 | render_window.UpdateCurrentFramebufferLayout(layout.width, layout.height); | 23 | renderer_settings.use_framelimiter = Settings::values.toggle_framelimit; |
| 19 | } | 24 | } |
| 20 | 25 | ||
| 21 | void RendererBase::RefreshRasterizerSetting() { | 26 | void RendererBase::RefreshRasterizerSetting() { |
| @@ -24,4 +29,10 @@ void RendererBase::RefreshRasterizerSetting() { | |||
| 24 | } | 29 | } |
| 25 | } | 30 | } |
| 26 | 31 | ||
| 32 | void RendererBase::UpdateCurrentFramebufferLayout() { | ||
| 33 | const Layout::FramebufferLayout& layout = render_window.GetFramebufferLayout(); | ||
| 34 | |||
| 35 | render_window.UpdateCurrentFramebufferLayout(layout.width, layout.height); | ||
| 36 | } | ||
| 37 | |||
| 27 | } // namespace VideoCore | 38 | } // namespace VideoCore |
diff --git a/src/video_core/renderer_base.h b/src/video_core/renderer_base.h index 235de23a1..fd8c47592 100644 --- a/src/video_core/renderer_base.h +++ b/src/video_core/renderer_base.h | |||
| @@ -4,9 +4,9 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include <atomic> | ||
| 7 | #include <memory> | 8 | #include <memory> |
| 8 | #include <boost/optional.hpp> | 9 | #include <boost/optional.hpp> |
| 9 | #include "common/assert.h" | ||
| 10 | #include "common/common_types.h" | 10 | #include "common/common_types.h" |
| 11 | #include "video_core/gpu.h" | 11 | #include "video_core/gpu.h" |
| 12 | #include "video_core/rasterizer_interface.h" | 12 | #include "video_core/rasterizer_interface.h" |
| @@ -15,11 +15,12 @@ class EmuWindow; | |||
| 15 | 15 | ||
| 16 | namespace VideoCore { | 16 | namespace VideoCore { |
| 17 | 17 | ||
| 18 | struct RendererSettings { | ||
| 19 | std::atomic_bool use_framelimiter{false}; | ||
| 20 | }; | ||
| 21 | |||
| 18 | class RendererBase : NonCopyable { | 22 | class RendererBase : NonCopyable { |
| 19 | public: | 23 | public: |
| 20 | /// Used to reference a framebuffer | ||
| 21 | enum kFramebuffer { kFramebuffer_VirtualXFB = 0, kFramebuffer_EFB, kFramebuffer_Texture }; | ||
| 22 | |||
| 23 | explicit RendererBase(EmuWindow& window); | 24 | explicit RendererBase(EmuWindow& window); |
| 24 | virtual ~RendererBase(); | 25 | virtual ~RendererBase(); |
| 25 | 26 | ||
| @@ -32,9 +33,6 @@ public: | |||
| 32 | /// Shutdown the renderer | 33 | /// Shutdown the renderer |
| 33 | virtual void ShutDown() = 0; | 34 | virtual void ShutDown() = 0; |
| 34 | 35 | ||
| 35 | /// Updates the framebuffer layout of the contained render window handle. | ||
| 36 | void UpdateCurrentFramebufferLayout(); | ||
| 37 | |||
| 38 | // Getter/setter functions: | 36 | // Getter/setter functions: |
| 39 | // ------------------------ | 37 | // ------------------------ |
| 40 | 38 | ||
| @@ -54,13 +52,23 @@ public: | |||
| 54 | return *rasterizer; | 52 | return *rasterizer; |
| 55 | } | 53 | } |
| 56 | 54 | ||
| 57 | void RefreshRasterizerSetting(); | 55 | /// Refreshes the settings common to all renderers |
| 56 | void RefreshBaseSettings(); | ||
| 58 | 57 | ||
| 59 | protected: | 58 | protected: |
| 59 | /// Refreshes settings specific to the rasterizer. | ||
| 60 | void RefreshRasterizerSetting(); | ||
| 61 | |||
| 60 | EmuWindow& render_window; ///< Reference to the render window handle. | 62 | EmuWindow& render_window; ///< Reference to the render window handle. |
| 61 | std::unique_ptr<RasterizerInterface> rasterizer; | 63 | std::unique_ptr<RasterizerInterface> rasterizer; |
| 62 | f32 m_current_fps = 0.0f; ///< Current framerate, should be set by the renderer | 64 | f32 m_current_fps = 0.0f; ///< Current framerate, should be set by the renderer |
| 63 | int m_current_frame = 0; ///< Current frame, should be set by the renderer | 65 | int m_current_frame = 0; ///< Current frame, should be set by the renderer |
| 66 | |||
| 67 | RendererSettings renderer_settings; | ||
| 68 | |||
| 69 | private: | ||
| 70 | /// Updates the framebuffer layout of the contained render window handle. | ||
| 71 | void UpdateCurrentFramebufferLayout(); | ||
| 64 | }; | 72 | }; |
| 65 | 73 | ||
| 66 | } // namespace VideoCore | 74 | } // namespace VideoCore |
diff --git a/src/video_core/video_core.cpp b/src/video_core/video_core.cpp index 5085ef96b..1e686b89e 100644 --- a/src/video_core/video_core.cpp +++ b/src/video_core/video_core.cpp | |||
| @@ -9,8 +9,6 @@ | |||
| 9 | 9 | ||
| 10 | namespace VideoCore { | 10 | namespace VideoCore { |
| 11 | 11 | ||
| 12 | std::atomic<bool> g_toggle_framelimit_enabled; | ||
| 13 | |||
| 14 | std::unique_ptr<RendererBase> CreateRenderer(EmuWindow& emu_window) { | 12 | std::unique_ptr<RendererBase> CreateRenderer(EmuWindow& emu_window) { |
| 15 | return std::make_unique<RendererOpenGL>(emu_window); | 13 | return std::make_unique<RendererOpenGL>(emu_window); |
| 16 | } | 14 | } |
diff --git a/src/video_core/video_core.h b/src/video_core/video_core.h index 7c01c0b8d..2dc07540f 100644 --- a/src/video_core/video_core.h +++ b/src/video_core/video_core.h | |||
| @@ -4,7 +4,6 @@ | |||
| 4 | 4 | ||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include <atomic> | ||
| 8 | #include <memory> | 7 | #include <memory> |
| 9 | 8 | ||
| 10 | class EmuWindow; | 9 | class EmuWindow; |
| @@ -13,12 +12,6 @@ namespace VideoCore { | |||
| 13 | 12 | ||
| 14 | class RendererBase; | 13 | class RendererBase; |
| 15 | 14 | ||
| 16 | enum class Renderer { Software, OpenGL }; | ||
| 17 | |||
| 18 | // TODO: Wrap these in a user settings struct along with any other graphics settings (often set from | ||
| 19 | // qt ui) | ||
| 20 | extern std::atomic<bool> g_toggle_framelimit_enabled; | ||
| 21 | |||
| 22 | /** | 15 | /** |
| 23 | * Creates a renderer instance. | 16 | * Creates a renderer instance. |
| 24 | * | 17 | * |