Add more verbose popups for video_core errors

This commit is contained in:
fearlessTobi 2018-07-20 17:20:57 +02:00
parent 96c025e4c2
commit d1c5f01afe
8 changed files with 45 additions and 20 deletions

View file

@ -6,6 +6,7 @@
#include <memory>
#include "common/common_types.h"
#include "core/core.h"
#include "video_core/rasterizer_interface.h"
class EmuWindow;
@ -27,7 +28,7 @@ public:
virtual void SetWindow(EmuWindow* window) = 0;
/// Initialize the renderer
virtual bool Init() = 0;
virtual Core::System::ResultStatus Init() = 0;
/// Shutdown the renderer
virtual void ShutDown() = 0;

View file

@ -505,7 +505,7 @@ static void APIENTRY DebugHandler(GLenum source, GLenum type, GLuint id, GLenum
}
/// Initialize the renderer
bool RendererOpenGL::Init() {
Core::System::ResultStatus RendererOpenGL::Init() {
render_window->MakeCurrent();
if (GLAD_GL_KHR_debug) {
@ -525,15 +525,19 @@ bool RendererOpenGL::Init() {
Core::Telemetry().AddField(Telemetry::FieldType::UserSystem, "GPU_Model", gpu_model);
Core::Telemetry().AddField(Telemetry::FieldType::UserSystem, "GPU_OpenGL_Version", gl_version);
if (gpu_vendor == "GDI Generic") {
return Core::System::ResultStatus::ErrorVideoCore_ErrorGenericDrivers;
}
if (!GLAD_GL_VERSION_3_3) {
return false;
return Core::System::ResultStatus::ErrorVideoCore_ErrorBelowGL33;
}
InitOpenGLObjects();
RefreshRasterizerSetting();
return true;
return Core::System::ResultStatus::Success;
}
/// Shutdown the renderer

View file

@ -47,7 +47,7 @@ public:
void SetWindow(EmuWindow* window) override;
/// Initialize the renderer
bool Init() override;
Core::System::ResultStatus Init() override;
/// Shutdown the renderer
void ShutDown() override;

View file

@ -25,19 +25,21 @@ std::atomic<bool> g_hw_shader_accurate_mul;
std::atomic<bool> g_renderer_bg_color_update_requested;
/// Initialize the video core
bool Init(EmuWindow* emu_window) {
Core::System::ResultStatus Init(EmuWindow* emu_window) {
Pica::Init();
g_emu_window = emu_window;
g_renderer = std::make_unique<RendererOpenGL>();
g_renderer->SetWindow(g_emu_window);
if (g_renderer->Init()) {
LOG_DEBUG(Render, "initialized OK");
} else {
Core::System::ResultStatus result = g_renderer->Init();
if (result != Core::System::ResultStatus::Success) {
LOG_ERROR(Render, "initialization failed !");
return false;
} else {
LOG_DEBUG(Render, "initialized OK");
}
return true;
return result;
}
/// Shutdown the video core

View file

@ -6,6 +6,7 @@
#include <atomic>
#include <memory>
#include "core/core.h"
class EmuWindow;
class RendererBase;
@ -31,7 +32,7 @@ extern std::atomic<bool> g_renderer_bg_color_update_requested;
void Start();
/// Initialize the video core
bool Init(EmuWindow* emu_window);
Core::System::ResultStatus Init(EmuWindow* emu_window);
/// Shutdown the video core
void Shutdown();