video_core: Remove Init method
* The constructor can do the same
This commit is contained in:
@ -30,9 +30,6 @@ public:
|
||||
explicit RendererBase(Frontend::EmuWindow& window, Frontend::EmuWindow* secondary_window);
|
||||
virtual ~RendererBase();
|
||||
|
||||
/// Initialize the renderer
|
||||
virtual VideoCore::ResultStatus Init() = 0;
|
||||
|
||||
/// Returns the rasterizer owned by the renderer
|
||||
virtual VideoCore::RasterizerInterface* Rasterizer() = 0;
|
||||
|
||||
|
@ -278,7 +278,17 @@ RendererOpenGL::RendererOpenGL(Memory::MemorySystem& memory_, Frontend::EmuWindo
|
||||
: RendererBase{window, secondary_window}, memory{memory_},
|
||||
driver{Settings::values.graphics_api.GetValue() == Settings::GraphicsAPI::OpenGLES,
|
||||
Settings::values.renderer_debug.GetValue()},
|
||||
frame_dumper(Core::System::GetInstance().VideoDumper(), window) {
|
||||
rasterizer{memory, render_window, driver}, frame_dumper{
|
||||
Core::System::GetInstance().VideoDumper(),
|
||||
window} {
|
||||
|
||||
const Vendor vendor = driver.GetVendor();
|
||||
if (vendor == Vendor::Generic || vendor == Vendor::Unknown) {
|
||||
LOG_WARNING(Render_OpenGL, "Unknown vendor: {}", driver.GetVendorString());
|
||||
}
|
||||
|
||||
InitOpenGLObjects();
|
||||
|
||||
window.mailbox = std::make_unique<OGLTextureMailbox>();
|
||||
if (secondary_window) {
|
||||
secondary_window->mailbox = std::make_unique<OGLTextureMailbox>();
|
||||
@ -288,22 +298,6 @@ RendererOpenGL::RendererOpenGL(Memory::MemorySystem& memory_, Frontend::EmuWindo
|
||||
|
||||
RendererOpenGL::~RendererOpenGL() = default;
|
||||
|
||||
VideoCore::ResultStatus RendererOpenGL::Init() {
|
||||
const Vendor vendor = driver.GetVendor();
|
||||
if (vendor == Vendor::Generic || vendor == Vendor::Unknown) {
|
||||
LOG_WARNING(Render_OpenGL, "Unknown vendor: {}", driver.GetVendorString());
|
||||
}
|
||||
|
||||
InitOpenGLObjects();
|
||||
rasterizer = std::make_unique<RasterizerOpenGL>(memory, render_window, driver);
|
||||
|
||||
return VideoCore::ResultStatus::Success;
|
||||
}
|
||||
|
||||
VideoCore::RasterizerInterface* RendererOpenGL::Rasterizer() {
|
||||
return rasterizer.get();
|
||||
}
|
||||
|
||||
void RendererOpenGL::SwapBuffers() {
|
||||
// Maintain the rasterizer's state as a priority
|
||||
OpenGLState prev_state = OpenGLState::GetCurState();
|
||||
@ -489,8 +483,8 @@ void RendererOpenGL::LoadFBToScreenInfo(const GPU::Regs::FramebufferConfig& fram
|
||||
// only allows rows to have a memory alignement of 4.
|
||||
ASSERT(pixel_stride % 4 == 0);
|
||||
|
||||
if (!rasterizer->AccelerateDisplay(framebuffer, framebuffer_addr,
|
||||
static_cast<u32>(pixel_stride), screen_info)) {
|
||||
if (!rasterizer.AccelerateDisplay(framebuffer, framebuffer_addr, static_cast<u32>(pixel_stride),
|
||||
screen_info)) {
|
||||
// Reset the screen info's display texture to its own permanent texture
|
||||
screen_info.display_texture = screen_info.texture.resource.handle;
|
||||
screen_info.display_texcoords = Common::Rectangle<float>(0.f, 0.f, 1.f, 1.f);
|
||||
@ -1075,7 +1069,7 @@ void RendererOpenGL::CleanupVideoDumping() {
|
||||
}
|
||||
|
||||
void RendererOpenGL::Sync() {
|
||||
rasterizer->SyncEntireState();
|
||||
rasterizer.SyncEntireState();
|
||||
}
|
||||
|
||||
} // namespace OpenGL
|
||||
|
@ -9,8 +9,7 @@
|
||||
#include "video_core/renderer_base.h"
|
||||
#include "video_core/renderer_opengl/frame_dumper_opengl.h"
|
||||
#include "video_core/renderer_opengl/gl_driver.h"
|
||||
#include "video_core/renderer_opengl/gl_resource_manager.h"
|
||||
#include "video_core/renderer_opengl/gl_state.h"
|
||||
#include "video_core/renderer_opengl/gl_rasterizer.h"
|
||||
|
||||
namespace Layout {
|
||||
struct FramebufferLayout;
|
||||
@ -65,8 +64,10 @@ public:
|
||||
Frontend::EmuWindow* secondary_window);
|
||||
~RendererOpenGL() override;
|
||||
|
||||
VideoCore::ResultStatus Init() override;
|
||||
VideoCore::RasterizerInterface* Rasterizer() override;
|
||||
[[nodiscard]] VideoCore::RasterizerInterface* Rasterizer() override {
|
||||
return &rasterizer;
|
||||
}
|
||||
|
||||
void SwapBuffers() override;
|
||||
void TryPresent(int timeout_ms, bool is_secondary) override;
|
||||
void PrepareVideoDumping() override;
|
||||
@ -124,7 +125,7 @@ private:
|
||||
Memory::MemorySystem& memory;
|
||||
Driver driver;
|
||||
OpenGLState state;
|
||||
std::unique_ptr<RasterizerOpenGL> rasterizer;
|
||||
RasterizerOpenGL rasterizer;
|
||||
|
||||
// OpenGL object IDs
|
||||
OGLVertexArray vertex_array;
|
||||
|
@ -114,6 +114,9 @@ RendererVulkan::RendererVulkan(Memory::MemorySystem& memory_, Frontend::EmuWindo
|
||||
rasterizer{memory, render_window, instance, scheduler,
|
||||
desc_manager, runtime, renderpass_cache} {
|
||||
Report();
|
||||
CompileShaders();
|
||||
BuildLayouts();
|
||||
BuildPipelines();
|
||||
window.mailbox = std::make_unique<TextureMailbox>(instance, swapchain, renderpass_cache);
|
||||
}
|
||||
|
||||
@ -143,17 +146,6 @@ RendererVulkan::~RendererVulkan() {
|
||||
render_window.mailbox.reset();
|
||||
}
|
||||
|
||||
VideoCore::ResultStatus RendererVulkan::Init() {
|
||||
CompileShaders();
|
||||
BuildLayouts();
|
||||
BuildPipelines();
|
||||
return VideoCore::ResultStatus::Success;
|
||||
}
|
||||
|
||||
VideoCore::RasterizerInterface* RendererVulkan::Rasterizer() {
|
||||
return &rasterizer;
|
||||
}
|
||||
|
||||
void RendererVulkan::Sync() {
|
||||
rasterizer.SyncEntireState();
|
||||
}
|
||||
|
@ -64,8 +64,10 @@ public:
|
||||
Frontend::EmuWindow* secondary_window);
|
||||
~RendererVulkan() override;
|
||||
|
||||
VideoCore::ResultStatus Init() override;
|
||||
VideoCore::RasterizerInterface* Rasterizer() override;
|
||||
[[nodiscard]] VideoCore::RasterizerInterface* Rasterizer() override {
|
||||
return &rasterizer;
|
||||
}
|
||||
|
||||
void SwapBuffers() override;
|
||||
void NotifySurfaceChanged() override;
|
||||
void TryPresent(int timeout_ms, bool is_secondary) override;
|
||||
|
@ -50,14 +50,7 @@ ResultStatus Init(Frontend::EmuWindow& emu_window, Frontend::EmuWindow* secondar
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
||||
ResultStatus result = g_renderer->Init();
|
||||
if (result != ResultStatus::Success) {
|
||||
LOG_ERROR(Render, "Video core initialization failed");
|
||||
} else {
|
||||
LOG_INFO(Render, "Video core initialization OK");
|
||||
}
|
||||
|
||||
return result;
|
||||
return ResultStatus::Success;
|
||||
}
|
||||
|
||||
/// Shutdown the video core
|
||||
|
Reference in New Issue
Block a user