[D3D12] Make ROV the default RT path on Intel due to stencil

This commit is contained in:
Triang3l 2021-04-28 20:53:07 +03:00
parent 71fbfdb63e
commit bb55bb3e70
1 changed files with 11 additions and 2 deletions

View File

@ -65,7 +65,9 @@ DEFINE_string(
"cases.\n"
" Any other value:\n"
" Choose what is considered the most optimal for the system (currently "
"always RTV because the ROV path is much slower now).",
"always RTV because the ROV path is much slower now, except for Intel "
"GPUs, which have a bug in stencil testing that causes Xbox 360 Direct3D 9 "
"clears not to work).",
"GPU");
namespace xe {
@ -253,12 +255,19 @@ bool D3D12RenderTargetCache::Initialize() {
} else if (cvars::render_target_path_d3d12 == "rov") {
path_ = Path::kPixelShaderInterlock;
} else {
// As of April 2021 (driver version 27.20.0100.9316), on Intel (tested on
// UHD Graphics 630), the "always" stencil comparison function isn't working
// properly, so clears in the Xbox 360's Direct3D 9 don't work. Forcing ROV
// there.
#if 1
// The ROV path is currently much slower generally.
// TODO(Triang3l): Make ROV the default when it's optimized better (for
// instance, using static shader modifications to pass render target
// parameters).
path_ = Path::kHostRenderTargets;
path_ = provider.GetAdapterVendorID() ==
ui::GraphicsProvider::GpuVendorID::kIntel
? Path::kPixelShaderInterlock
: Path::kHostRenderTargets;
#else
// The AMD shader compiler crashes very often with Xenia's custom
// output-merger code as of March 2021.