VideoBackends: Add configuration field for GPU texture decoding
This commit is contained in:
parent
abc662d69c
commit
82fd984f3e
|
@ -284,6 +284,10 @@ static wxString true_color_desc =
|
|||
wxTRANSLATE("Forces the game to render the RGB color channels in 24-bit, thereby increasing "
|
||||
"quality by reducing color banding.\nIt has no impact on performance and causes "
|
||||
"few graphical issues.\n\n\nIf unsure, leave this checked.");
|
||||
static wxString gpu_texture_decoding_desc =
|
||||
wxTRANSLATE("Enables texture decoding using the GPU instead of the CPU. This may result in "
|
||||
"performance gains in some scenarios, or systems where the CPU is the bottleneck."
|
||||
"\n\nIf unsure, leave this unchecked.");
|
||||
|
||||
#if !defined(__APPLE__)
|
||||
// Search for available resolutions - TODO: Move to Common?
|
||||
|
@ -755,6 +759,15 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string& title)
|
|||
slide_szr->Add(new wxStaticText(page_hacks, wxID_ANY, _("Fast")), 0, wxALIGN_CENTER_VERTICAL);
|
||||
|
||||
szr_safetex->Add(slide_szr, 1, wxEXPAND | wxLEFT | wxRIGHT, space5);
|
||||
|
||||
if (vconfig.backend_info.bSupportsGPUTextureDecoding)
|
||||
{
|
||||
szr_safetex->Add(CreateCheckBox(page_hacks, _("GPU Texture Decoding"),
|
||||
wxGetTranslation(gpu_texture_decoding_desc),
|
||||
vconfig.bEnableGPUTextureDecoding),
|
||||
1, wxEXPAND | wxLEFT | wxRIGHT, space5);
|
||||
}
|
||||
|
||||
if (slider_pos == -1)
|
||||
{
|
||||
stc_slider->Disable();
|
||||
|
|
|
@ -76,6 +76,7 @@ void VideoBackend::InitBackendInfo()
|
|||
g_Config.backend_info.bSupportsReversedDepthRange = false;
|
||||
g_Config.backend_info.bSupportsMultithreading = false;
|
||||
g_Config.backend_info.bSupportsInternalResolutionFrameDumps = false;
|
||||
g_Config.backend_info.bSupportsGPUTextureDecoding = false;
|
||||
|
||||
IDXGIFactory* factory;
|
||||
IDXGIAdapter* ad;
|
||||
|
|
|
@ -79,6 +79,7 @@ void VideoBackend::InitBackendInfo()
|
|||
g_Config.backend_info.bSupportsReversedDepthRange = false;
|
||||
g_Config.backend_info.bSupportsMultithreading = false;
|
||||
g_Config.backend_info.bSupportsInternalResolutionFrameDumps = false;
|
||||
g_Config.backend_info.bSupportsGPUTextureDecoding = false;
|
||||
|
||||
IDXGIFactory* factory;
|
||||
IDXGIAdapter* ad;
|
||||
|
|
|
@ -44,6 +44,7 @@ void VideoBackend::InitBackendInfo()
|
|||
g_Config.backend_info.bSupportsReversedDepthRange = true;
|
||||
g_Config.backend_info.bSupportsMultithreading = false;
|
||||
g_Config.backend_info.bSupportsInternalResolutionFrameDumps = false;
|
||||
g_Config.backend_info.bSupportsGPUTextureDecoding = false;
|
||||
|
||||
// aamodes: We only support 1 sample, so no MSAA
|
||||
g_Config.backend_info.Adapters.clear();
|
||||
|
|
|
@ -108,6 +108,7 @@ void VideoBackend::InitBackendInfo()
|
|||
g_Config.backend_info.bSupportsReversedDepthRange = true;
|
||||
g_Config.backend_info.bSupportsMultithreading = false;
|
||||
g_Config.backend_info.bSupportsInternalResolutionFrameDumps = true;
|
||||
g_Config.backend_info.bSupportsGPUTextureDecoding = false;
|
||||
|
||||
// Overwritten in Render.cpp later
|
||||
g_Config.backend_info.bSupportsDualSourceBlend = true;
|
||||
|
|
|
@ -133,6 +133,7 @@ void VideoSoftware::InitBackendInfo()
|
|||
g_Config.backend_info.bSupportsMultithreading = false;
|
||||
g_Config.backend_info.bSupportsComputeShaders = false;
|
||||
g_Config.backend_info.bSupportsInternalResolutionFrameDumps = false;
|
||||
g_Config.backend_info.bSupportsGPUTextureDecoding = false;
|
||||
|
||||
// aamodes
|
||||
g_Config.backend_info.AAModes = {1};
|
||||
|
|
|
@ -245,6 +245,7 @@ void VulkanContext::PopulateBackendInfo(VideoConfig* config)
|
|||
config->backend_info.bSupportsDepthClamp = false; // Dependent on features.
|
||||
config->backend_info.bSupportsReversedDepthRange = false; // No support yet due to driver bugs.
|
||||
config->backend_info.bSupportsComputeShaders = false; // No support yet.
|
||||
config->backend_info.bSupportsGPUTextureDecoding = false; // No support yet.
|
||||
}
|
||||
|
||||
void VulkanContext::PopulateBackendInfoAdapters(VideoConfig* config, const GPUList& gpu_list)
|
||||
|
|
|
@ -81,6 +81,7 @@ void VideoConfig::Load(const std::string& ini_file)
|
|||
settings->Get("DumpPath", &sDumpPath, "");
|
||||
settings->Get("BitrateKbps", &iBitrateKbps, 2500);
|
||||
settings->Get("InternalResolutionFrameDumps", &bInternalResolutionFrameDumps, false);
|
||||
settings->Get("EnableGPUTextureDecoding", &bEnableGPUTextureDecoding, false);
|
||||
settings->Get("EnablePixelLighting", &bEnablePixelLighting, false);
|
||||
settings->Get("FastDepthCalc", &bFastDepthCalc, true);
|
||||
settings->Get("MSAA", &iMultisamples, 1);
|
||||
|
@ -305,6 +306,7 @@ void VideoConfig::Save(const std::string& ini_file)
|
|||
settings->Set("DumpPath", sDumpPath);
|
||||
settings->Set("BitrateKbps", iBitrateKbps);
|
||||
settings->Set("InternalResolutionFrameDumps", bInternalResolutionFrameDumps);
|
||||
settings->Set("EnableGPUTextureDecoding", bEnableGPUTextureDecoding);
|
||||
settings->Set("EnablePixelLighting", bEnablePixelLighting);
|
||||
settings->Set("FastDepthCalc", bFastDepthCalc);
|
||||
settings->Set("MSAA", iMultisamples);
|
||||
|
|
|
@ -108,6 +108,7 @@ struct VideoConfig final
|
|||
bool bInternalResolutionFrameDumps;
|
||||
bool bFreeLook;
|
||||
bool bBorderlessFullscreen;
|
||||
bool bEnableGPUTextureDecoding;
|
||||
int iBitrateKbps;
|
||||
|
||||
// Hacks
|
||||
|
@ -196,6 +197,7 @@ struct VideoConfig final
|
|||
bool bSupportsReversedDepthRange;
|
||||
bool bSupportsMultithreading;
|
||||
bool bSupportsInternalResolutionFrameDumps;
|
||||
bool bSupportsGPUTextureDecoding;
|
||||
} backend_info;
|
||||
|
||||
// Utility
|
||||
|
@ -211,6 +213,10 @@ struct VideoConfig final
|
|||
return false;
|
||||
return backend_info.bSupportsBBox && backend_info.bSupportsFragmentStoresAndAtomics;
|
||||
}
|
||||
bool UseGPUTextureDecoding() const
|
||||
{
|
||||
return backend_info.bSupportsGPUTextureDecoding && bEnableGPUTextureDecoding;
|
||||
}
|
||||
};
|
||||
|
||||
extern VideoConfig g_Config;
|
||||
|
|
Loading…
Reference in New Issue