diff options
Diffstat (limited to 'Source/Core/VideoBackends/Software/SWmain.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/Software/SWmain.cpp | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/Source/Core/VideoBackends/Software/SWmain.cpp b/Source/Core/VideoBackends/Software/SWmain.cpp index 0ab16bdfa8..c47072d4af 100644 --- a/Source/Core/VideoBackends/Software/SWmain.cpp +++ b/Source/Core/VideoBackends/Software/SWmain.cpp @@ -10,6 +10,7 @@ #include "Common/Common.h" #include "Common/CommonTypes.h" #include "Common/GL/GLContext.h" +#include "Common/MsgHandler.h" #include "VideoBackends/Software/Clipper.h" #include "VideoBackends/Software/DebugUtil.h" @@ -22,14 +23,11 @@ #include "VideoBackends/Software/TextureCache.h" #include "VideoBackends/Software/VideoBackend.h" -#include "VideoCommon/FramebufferManagerBase.h" -#include "VideoCommon/OnScreenDisplay.h" +#include "VideoCommon/FramebufferManager.h" #include "VideoCommon/TextureCacheBase.h" #include "VideoCommon/VideoCommon.h" #include "VideoCommon/VideoConfig.h" -#define VSYNC_ENABLED 0 - namespace SW { class PerfQuery : public PerfQueryBase @@ -59,6 +57,7 @@ void VideoSoftware::InitBackendInfo() { g_Config.backend_info.api_type = APIType::Nothing; g_Config.backend_info.MaxTextureSize = 16384; + g_Config.backend_info.bUsesLowerLeftOrigin = false; g_Config.backend_info.bSupports3DVision = false; g_Config.backend_info.bSupportsDualSourceBlend = true; g_Config.backend_info.bSupportsEarlyZ = true; @@ -70,6 +69,7 @@ void VideoSoftware::InitBackendInfo() g_Config.backend_info.bSupportsST3CTextures = false; g_Config.backend_info.bSupportsBPTCTextures = false; g_Config.backend_info.bSupportsCopyToVram = false; + g_Config.backend_info.bSupportsLargePoints = false; g_Config.backend_info.bSupportsFramebufferFetch = false; g_Config.backend_info.bSupportsBackgroundCompiling = false; g_Config.backend_info.bSupportsLogicOp = true; @@ -92,10 +92,22 @@ bool VideoSoftware::Initialize(const WindowSystemInfo& wsi) g_renderer = std::make_unique<SWRenderer>(std::move(window)); g_vertex_manager = std::make_unique<SWVertexLoader>(); + g_shader_cache = std::make_unique<VideoCommon::ShaderCache>(); + g_framebuffer_manager = std::make_unique<FramebufferManager>(); g_perf_query = std::make_unique<PerfQuery>(); g_texture_cache = std::make_unique<TextureCache>(); - g_shader_cache = std::make_unique<VideoCommon::ShaderCache>(); - return g_renderer->Initialize() && g_shader_cache->Initialize(); + + if (!g_vertex_manager->Initialize() || !g_shader_cache->Initialize() || + !g_renderer->Initialize() || !g_framebuffer_manager->Initialize() || + !g_texture_cache->Initialize()) + { + PanicAlert("Failed to initialize renderer classes"); + Shutdown(); + return false; + } + + g_shader_cache->InitializeShaderCache(); + return true; } void VideoSoftware::Shutdown() @@ -107,9 +119,10 @@ void VideoSoftware::Shutdown() g_renderer->Shutdown(); DebugUtil::Shutdown(); - g_framebuffer_manager.reset(); g_texture_cache.reset(); g_perf_query.reset(); + g_framebuffer_manager.reset(); + g_shader_cache.reset(); g_vertex_manager.reset(); g_renderer.reset(); ShutdownShared(); |
