mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-24 06:39:46 -06:00
VideoCommon: Pass WindowSystemInfo to InitBackendInfo
This commit is contained in:
@ -63,7 +63,7 @@ std::optional<std::string> VideoBackend::GetWarningMessage() const
|
||||
return result;
|
||||
}
|
||||
|
||||
void VideoBackend::InitBackendInfo()
|
||||
void VideoBackend::InitBackendInfo(const WindowSystemInfo& wsi)
|
||||
{
|
||||
if (!D3DCommon::LoadLibraries())
|
||||
return;
|
||||
|
@ -18,7 +18,7 @@ public:
|
||||
std::string GetDisplayName() const override;
|
||||
std::optional<std::string> GetWarningMessage() const override;
|
||||
|
||||
void InitBackendInfo() override;
|
||||
void InitBackendInfo(const WindowSystemInfo& wsi) override;
|
||||
|
||||
static constexpr const char* NAME = "D3D";
|
||||
|
||||
|
@ -36,7 +36,7 @@ std::string VideoBackend::GetDisplayName() const
|
||||
return "Direct3D 12";
|
||||
}
|
||||
|
||||
void VideoBackend::InitBackendInfo()
|
||||
void VideoBackend::InitBackendInfo(const WindowSystemInfo& wsi)
|
||||
{
|
||||
if (!D3DCommon::LoadLibraries())
|
||||
return;
|
||||
|
@ -16,7 +16,7 @@ public:
|
||||
|
||||
std::string GetName() const override;
|
||||
std::string GetDisplayName() const override;
|
||||
void InitBackendInfo() override;
|
||||
void InitBackendInfo(const WindowSystemInfo& wsi) override;
|
||||
|
||||
static constexpr const char* NAME = "D3D12";
|
||||
|
||||
|
@ -119,7 +119,7 @@ void Metal::VideoBackend::Shutdown()
|
||||
ObjectCache::Shutdown();
|
||||
}
|
||||
|
||||
void Metal::VideoBackend::InitBackendInfo()
|
||||
void Metal::VideoBackend::InitBackendInfo(const WindowSystemInfo& wsi)
|
||||
{
|
||||
@autoreleasepool
|
||||
{
|
||||
|
@ -18,7 +18,7 @@ public:
|
||||
std::string GetDisplayName() const override;
|
||||
std::optional<std::string> GetWarningMessage() const override;
|
||||
|
||||
void InitBackendInfo() override;
|
||||
void InitBackendInfo(const WindowSystemInfo& wsi) override;
|
||||
|
||||
void PrepareWindow(WindowSystemInfo& wsi) override;
|
||||
|
||||
|
@ -25,7 +25,7 @@
|
||||
|
||||
namespace Null
|
||||
{
|
||||
void VideoBackend::InitBackendInfo()
|
||||
void VideoBackend::InitBackendInfo(const WindowSystemInfo& wsi)
|
||||
{
|
||||
g_Config.backend_info.api_type = APIType::Nothing;
|
||||
g_Config.backend_info.MaxTextureSize = 16384;
|
||||
|
@ -15,7 +15,7 @@ public:
|
||||
|
||||
std::string GetName() const override { return NAME; }
|
||||
std::string GetDisplayName() const override;
|
||||
void InitBackendInfo() override;
|
||||
void InitBackendInfo(const WindowSystemInfo& wsi) override;
|
||||
|
||||
static constexpr const char* NAME = "Null";
|
||||
};
|
||||
|
@ -74,8 +74,45 @@ std::string VideoBackend::GetDisplayName() const
|
||||
return _trans("OpenGL");
|
||||
}
|
||||
|
||||
void VideoBackend::InitBackendInfo()
|
||||
void VideoBackend::InitBackendInfo(const WindowSystemInfo& wsi)
|
||||
{
|
||||
std::unique_ptr<GLContext> temp_gl_context =
|
||||
GLContext::Create(wsi, g_Config.stereo_mode == StereoMode::QuadBuffer, true, false,
|
||||
Config::Get(Config::GFX_PREFER_GLES));
|
||||
|
||||
if (!temp_gl_context)
|
||||
return;
|
||||
|
||||
FillBackendInfo(temp_gl_context.get());
|
||||
}
|
||||
|
||||
bool VideoBackend::InitializeGLExtensions(GLContext* context)
|
||||
{
|
||||
// Init extension support.
|
||||
if (!GLExtensions::Init(context))
|
||||
{
|
||||
// OpenGL 2.0 is required for all shader based drawings. There is no way to get this by
|
||||
// extensions
|
||||
PanicAlertFmtT("GPU: OGL ERROR: Does your video card support OpenGL 2.0?");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (GLExtensions::Version() < 300)
|
||||
{
|
||||
// integer vertex attributes require a gl3 only function
|
||||
PanicAlertFmtT("GPU: OGL ERROR: Need OpenGL version 3.\n"
|
||||
"GPU: Does your video card support OpenGL 3?");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool VideoBackend::FillBackendInfo(GLContext* context)
|
||||
{
|
||||
if (!InitializeGLExtensions(context))
|
||||
return false;
|
||||
|
||||
g_Config.backend_info.api_type = APIType::OpenGL;
|
||||
g_Config.backend_info.MaxTextureSize = 16384;
|
||||
g_Config.backend_info.bUsesLowerLeftOrigin = true;
|
||||
@ -123,33 +160,6 @@ void VideoBackend::InitBackendInfo()
|
||||
|
||||
// aamodes - 1 is to stay consistent with D3D (means no AA)
|
||||
g_Config.backend_info.AAModes = {1, 2, 4, 8};
|
||||
}
|
||||
|
||||
bool VideoBackend::InitializeGLExtensions(GLContext* context)
|
||||
{
|
||||
// Init extension support.
|
||||
if (!GLExtensions::Init(context))
|
||||
{
|
||||
// OpenGL 2.0 is required for all shader based drawings. There is no way to get this by
|
||||
// extensions
|
||||
PanicAlertFmtT("GPU: OGL ERROR: Does your video card support OpenGL 2.0?");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (GLExtensions::Version() < 300)
|
||||
{
|
||||
// integer vertex attributes require a gl3 only function
|
||||
PanicAlertFmtT("GPU: OGL ERROR: Need OpenGL version 3.\n"
|
||||
"GPU: Does your video card support OpenGL 3?");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool VideoBackend::FillBackendInfo()
|
||||
{
|
||||
InitBackendInfo();
|
||||
|
||||
// check for the max vertex attributes
|
||||
GLint numvertexattribs = 0;
|
||||
@ -184,7 +194,7 @@ bool VideoBackend::Initialize(const WindowSystemInfo& wsi)
|
||||
if (!main_gl_context)
|
||||
return false;
|
||||
|
||||
if (!InitializeGLExtensions(main_gl_context.get()) || !FillBackendInfo())
|
||||
if (!FillBackendInfo(main_gl_context.get()))
|
||||
return false;
|
||||
|
||||
auto gfx = std::make_unique<OGLGfx>(std::move(main_gl_context), wsi.render_surface_scale);
|
||||
|
@ -19,12 +19,12 @@ public:
|
||||
std::string GetName() const override;
|
||||
std::string GetDisplayName() const override;
|
||||
|
||||
void InitBackendInfo() override;
|
||||
void InitBackendInfo(const WindowSystemInfo& wsi) override;
|
||||
|
||||
static constexpr const char* NAME = "OGL";
|
||||
|
||||
private:
|
||||
bool InitializeGLExtensions(GLContext* context);
|
||||
bool FillBackendInfo();
|
||||
bool FillBackendInfo(GLContext* context);
|
||||
};
|
||||
} // namespace OGL
|
||||
|
@ -62,7 +62,7 @@ std::optional<std::string> VideoSoftware::GetWarningMessage() const
|
||||
"really want to enable software rendering? If unsure, select 'No'.");
|
||||
}
|
||||
|
||||
void VideoSoftware::InitBackendInfo()
|
||||
void VideoSoftware::InitBackendInfo(const WindowSystemInfo& wsi)
|
||||
{
|
||||
g_Config.backend_info.api_type = APIType::Nothing;
|
||||
g_Config.backend_info.MaxTextureSize = 16384;
|
||||
|
@ -17,7 +17,7 @@ class VideoSoftware : public VideoBackendBase
|
||||
std::string GetDisplayName() const override;
|
||||
std::optional<std::string> GetWarningMessage() const override;
|
||||
|
||||
void InitBackendInfo() override;
|
||||
void InitBackendInfo(const WindowSystemInfo& wsi) override;
|
||||
|
||||
static constexpr const char* NAME = "Software Renderer";
|
||||
};
|
||||
|
@ -30,7 +30,7 @@
|
||||
|
||||
namespace Vulkan
|
||||
{
|
||||
void VideoBackend::InitBackendInfo()
|
||||
void VideoBackend::InitBackendInfo(const WindowSystemInfo& wsi)
|
||||
{
|
||||
VulkanContext::PopulateBackendInfo(&g_Config);
|
||||
|
||||
|
@ -16,7 +16,7 @@ public:
|
||||
|
||||
std::string GetName() const override { return NAME; }
|
||||
std::string GetDisplayName() const override { return _trans("Vulkan"); }
|
||||
void InitBackendInfo() override;
|
||||
void InitBackendInfo(const WindowSystemInfo& wsi) override;
|
||||
void PrepareWindow(WindowSystemInfo& wsi) override;
|
||||
|
||||
static constexpr const char* NAME = "Vulkan";
|
||||
|
Reference in New Issue
Block a user