mirror of
https://github.com/RPCS3/rpcs3.git
synced 2026-07-09 17:25:18 -06:00
Force renderer to default renderer if not supported
This commit is contained in:
parent
cc999d4210
commit
44b33f1962
@ -717,6 +717,11 @@ namespace cfg
|
||||
m_value = std::string(value);
|
||||
return true;
|
||||
}
|
||||
|
||||
void set(std::string_view value)
|
||||
{
|
||||
m_value = std::string(value);
|
||||
}
|
||||
};
|
||||
|
||||
// Simple set entry (TODO: template for various types)
|
||||
|
||||
@ -121,7 +121,8 @@ namespace rsx
|
||||
}
|
||||
|
||||
Emulator::Emulator() noexcept
|
||||
: m_default_renderer(video_renderer::null)
|
||||
: m_supported_renderers({video_renderer::null})
|
||||
, m_default_renderer(video_renderer::null)
|
||||
{
|
||||
s_emulator_available = true;
|
||||
}
|
||||
@ -303,6 +304,15 @@ static void fixup_settings(const psf::registry* _psf)
|
||||
g_cfg.audio.music.set(music_handler::null);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Make sure we have a valid renderer
|
||||
if (!Emu.GetSupportedRenderers().contains(g_cfg.video.renderer.get()))
|
||||
{
|
||||
sys_log.warning("The video renderer '%s' is not supported on this device and will therefore be set to '%s'.", g_cfg.video.renderer.get(), Emu.GetDefaultRenderer());
|
||||
g_cfg.video.renderer.set(Emu.GetDefaultRenderer());
|
||||
}
|
||||
}
|
||||
|
||||
// Some settings are not allowed in certain PPU decoders
|
||||
if (g_cfg.core.ppu_decoder != ppu_decoder_type::_static)
|
||||
|
||||
@ -142,6 +142,7 @@ class Emulator final
|
||||
|
||||
games_config m_games_config;
|
||||
|
||||
std::set<video_renderer> m_supported_renderers;
|
||||
video_renderer m_default_renderer;
|
||||
std::string m_default_graphics_adapter;
|
||||
|
||||
@ -476,6 +477,10 @@ public:
|
||||
bool IsHeadless() const { return m_headless; }
|
||||
void SetHeadless(bool headless) { m_headless = headless; }
|
||||
|
||||
const std::set<video_renderer>& GetSupportedRenderers() const { return m_supported_renderers; }
|
||||
void SetSupportedRenderers(std::set<video_renderer> renderers) { m_supported_renderers = std::move(renderers); }
|
||||
|
||||
video_renderer GetDefaultRenderer() const { return m_default_renderer; }
|
||||
void SetDefaultRenderer(video_renderer renderer) { m_default_renderer = renderer; }
|
||||
void SetDefaultGraphicsAdapter(std::string adapter) { m_default_graphics_adapter = std::move(adapter); }
|
||||
|
||||
|
||||
@ -100,21 +100,28 @@ bool emu_settings::Init()
|
||||
{
|
||||
m_render_creator = new render_creator(this);
|
||||
|
||||
if (m_render_creator->abort_requested)
|
||||
std::set<video_renderer> supported_renderers;
|
||||
supported_renderers.insert(video_renderer::null);
|
||||
|
||||
if (m_render_creator->OpenGL.supported)
|
||||
{
|
||||
return false;
|
||||
supported_renderers.insert(video_renderer::opengl);
|
||||
}
|
||||
|
||||
// Make Vulkan default setting if it is supported
|
||||
if (m_render_creator->Vulkan.supported && !m_render_creator->Vulkan.adapters.empty())
|
||||
if (!m_render_creator->abort_requested && m_render_creator->Vulkan.supported && !m_render_creator->Vulkan.adapters.empty())
|
||||
{
|
||||
const std::string adapter = ::at32(m_render_creator->Vulkan.adapters, 0).toStdString();
|
||||
cfg_log.notice("Setting the default renderer to Vulkan. Default GPU: '%s'", adapter);
|
||||
Emu.SetDefaultRenderer(video_renderer::vulkan);
|
||||
Emu.SetDefaultGraphicsAdapter(adapter);
|
||||
|
||||
supported_renderers.insert(video_renderer::vulkan);
|
||||
}
|
||||
|
||||
return true;
|
||||
Emu.SetSupportedRenderers(supported_renderers);
|
||||
|
||||
return !m_render_creator->abort_requested;
|
||||
}
|
||||
|
||||
void emu_settings::LoadSettings(const std::string& title_id, bool create_config_from_global, const std::string& db_config)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user