[GPU] Add anisotropic filtering override

This commit is contained in:
Stayd
2026-01-15 17:12:49 -07:00
committed by Radosław Gliński
parent a74fe21f76
commit ac6fd65385
4 changed files with 24 additions and 2 deletions

View File

@@ -17,6 +17,7 @@
#include "xenia/base/cvar.h"
#include "xenia/base/math.h"
#include "xenia/gpu/dxbc_shader.h"
#include "xenia/gpu/gpu_flags.h"
#include "xenia/gpu/xenos.h"
#include "xenia/ui/graphics_provider.h"
@@ -1378,7 +1379,10 @@ void DxbcShaderTranslator::PostTranslation() {
shader_binding.mag_filter = translator_binding.mag_filter;
shader_binding.min_filter = translator_binding.min_filter;
shader_binding.mip_filter = translator_binding.mip_filter;
shader_binding.aniso_filter = translator_binding.aniso_filter;
shader_binding.aniso_filter =
cvars::anisotropic_override > -1 && cvars::anisotropic_override < 6
? xenos::AnisoFilter(cvars::anisotropic_override)
: translator_binding.aniso_filter;
}
}
}

View File

@@ -70,3 +70,15 @@ DEFINE_int32(
"Set to higher number than query_occlusion_sample_lower_threshold. This "
"value is ignored if query_occlusion_sample_lower_threshold is set to -1.",
"GPU");
DEFINE_int32(anisotropic_override, -1,
"Level of anisotropic filtering enforced on all texture fetch "
"instructions.\n"
" -1 = No override\n"
" 0 = Disable anisotropic filtering\n"
" 1 = Force 1x anisotropic filtering\n"
" 2 = Force 2x anisotropic filtering\n"
" 3 = Force 4x anisotropic filtering\n"
" 4 = Force 8x anisotropic filtering\n"
" 5 = Force 16x anisotropic filtering",
"GPU");

View File

@@ -30,6 +30,8 @@ DECLARE_int32(query_occlusion_sample_lower_threshold);
DECLARE_int32(query_occlusion_sample_upper_threshold);
DECLARE_int32(anisotropic_override);
DECLARE_bool(disassemble_pm4);
#define XE_GPU_FINE_GRAINED_DRAW_SCOPES 1

View File

@@ -17,6 +17,7 @@
#include "xenia/base/assert.h"
#include "xenia/base/math.h"
#include "xenia/base/string_buffer.h"
#include "xenia/gpu/gpu_flags.h"
#include "xenia/gpu/spirv_shader.h"
namespace xe {
@@ -807,7 +808,10 @@ void SpirvShaderTranslator::PostTranslation() {
shader_binding.mag_filter = translator_binding.mag_filter;
shader_binding.min_filter = translator_binding.min_filter;
shader_binding.mip_filter = translator_binding.mip_filter;
shader_binding.aniso_filter = translator_binding.aniso_filter;
shader_binding.aniso_filter =
cvars::anisotropic_override > -1 && cvars::anisotropic_override < 6
? xenos::AnisoFilter(cvars::anisotropic_override)
: translator_binding.aniso_filter;
}
}
}