mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 13:57:57 -07:00
4595b89ad8
I think this is a relic of D3D9. D3D11 and D3D12 seem to work fine without it. Plus, ViewportCorrectionMatrix just didn't work correctly (at least with the viewports being generated by the new scissor code).
112 lines
3.9 KiB
C++
112 lines
3.9 KiB
C++
// Copyright 2015 Dolphin Emulator Project
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
// Null Backend Documentation
|
|
|
|
// This backend tries not to do anything in the backend,
|
|
// but everything in VideoCommon.
|
|
|
|
#include "VideoBackends/Null/VideoBackend.h"
|
|
|
|
#include "Common/Common.h"
|
|
#include "Common/MsgHandler.h"
|
|
|
|
#include "VideoBackends/Null/NullRender.h"
|
|
#include "VideoBackends/Null/NullVertexManager.h"
|
|
#include "VideoBackends/Null/PerfQuery.h"
|
|
#include "VideoBackends/Null/TextureCache.h"
|
|
|
|
#include "VideoCommon/FramebufferManager.h"
|
|
#include "VideoCommon/VideoBackendBase.h"
|
|
#include "VideoCommon/VideoCommon.h"
|
|
#include "VideoCommon/VideoConfig.h"
|
|
|
|
namespace Null
|
|
{
|
|
void VideoBackend::InitBackendInfo()
|
|
{
|
|
g_Config.backend_info.api_type = APIType::Nothing;
|
|
g_Config.backend_info.MaxTextureSize = 16384;
|
|
g_Config.backend_info.bSupportsExclusiveFullscreen = true;
|
|
g_Config.backend_info.bSupportsDualSourceBlend = true;
|
|
g_Config.backend_info.bSupportsPrimitiveRestart = true;
|
|
g_Config.backend_info.bSupportsGeometryShaders = true;
|
|
g_Config.backend_info.bSupportsComputeShaders = false;
|
|
g_Config.backend_info.bSupports3DVision = false;
|
|
g_Config.backend_info.bSupportsEarlyZ = true;
|
|
g_Config.backend_info.bSupportsBindingLayout = true;
|
|
g_Config.backend_info.bSupportsBBox = true;
|
|
g_Config.backend_info.bSupportsGSInstancing = true;
|
|
g_Config.backend_info.bSupportsPostProcessing = false;
|
|
g_Config.backend_info.bSupportsPaletteConversion = true;
|
|
g_Config.backend_info.bSupportsClipControl = true;
|
|
g_Config.backend_info.bSupportsSSAA = true;
|
|
g_Config.backend_info.bSupportsDepthClamp = true;
|
|
g_Config.backend_info.bSupportsReversedDepthRange = true;
|
|
g_Config.backend_info.bSupportsMultithreading = false;
|
|
g_Config.backend_info.bSupportsGPUTextureDecoding = false;
|
|
g_Config.backend_info.bSupportsST3CTextures = false;
|
|
g_Config.backend_info.bSupportsBPTCTextures = false;
|
|
g_Config.backend_info.bSupportsFramebufferFetch = false;
|
|
g_Config.backend_info.bSupportsBackgroundCompiling = false;
|
|
g_Config.backend_info.bSupportsLogicOp = false;
|
|
g_Config.backend_info.bSupportsLargePoints = false;
|
|
g_Config.backend_info.bSupportsDepthReadback = false;
|
|
g_Config.backend_info.bSupportsPartialDepthCopies = false;
|
|
g_Config.backend_info.bSupportsShaderBinaries = false;
|
|
g_Config.backend_info.bSupportsPipelineCacheData = false;
|
|
g_Config.backend_info.bSupportsCoarseDerivatives = false;
|
|
g_Config.backend_info.bSupportsTextureQueryLevels = false;
|
|
g_Config.backend_info.bSupportsLodBiasInSampler = false;
|
|
g_Config.backend_info.bSupportsSettingObjectNames = false;
|
|
|
|
// aamodes: We only support 1 sample, so no MSAA
|
|
g_Config.backend_info.Adapters.clear();
|
|
g_Config.backend_info.AAModes = {1};
|
|
}
|
|
|
|
bool VideoBackend::Initialize(const WindowSystemInfo& wsi)
|
|
{
|
|
InitializeShared();
|
|
|
|
g_renderer = std::make_unique<Renderer>();
|
|
g_vertex_manager = std::make_unique<VertexManager>();
|
|
g_perf_query = std::make_unique<PerfQuery>();
|
|
g_framebuffer_manager = std::make_unique<FramebufferManager>();
|
|
g_texture_cache = std::make_unique<TextureCache>();
|
|
g_shader_cache = std::make_unique<VideoCommon::ShaderCache>();
|
|
|
|
if (!g_vertex_manager->Initialize() || !g_shader_cache->Initialize() ||
|
|
!g_renderer->Initialize() || !g_framebuffer_manager->Initialize() ||
|
|
!g_texture_cache->Initialize())
|
|
{
|
|
PanicAlertFmt("Failed to initialize renderer classes");
|
|
Shutdown();
|
|
return false;
|
|
}
|
|
|
|
g_shader_cache->InitializeShaderCache();
|
|
return true;
|
|
}
|
|
|
|
void VideoBackend::Shutdown()
|
|
{
|
|
g_shader_cache->Shutdown();
|
|
g_renderer->Shutdown();
|
|
|
|
g_texture_cache.reset();
|
|
g_perf_query.reset();
|
|
g_vertex_manager.reset();
|
|
g_framebuffer_manager.reset();
|
|
g_renderer.reset();
|
|
|
|
ShutdownShared();
|
|
}
|
|
|
|
std::string VideoBackend::GetDisplayName() const
|
|
{
|
|
// i18n: Null is referring to the null video backend, which renders nothing
|
|
return _trans("Null");
|
|
}
|
|
} // namespace Null
|