diff --git a/README.md b/README.md
index 19e8fb519..7baf1c186 100755
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
yuzu emulator early access
=============
-This is the source code for early-access 3671.
+This is the source code for early-access 3672.
## Legal Notice
diff --git a/src/android/app/src/main/AndroidManifest.xml b/src/android/app/src/main/AndroidManifest.xml
index 1e92098ec..55f62b4b9 100755
--- a/src/android/app/src/main/AndroidManifest.xml
+++ b/src/android/app/src/main/AndroidManifest.xml
@@ -24,6 +24,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
android:hasFragileUserData="true"
android:supportsRtl="true"
android:isGame="true"
+ android:localeConfig="@xml/locales_config"
android:banner="@drawable/tv_banner"
android:extractNativeLibs="true"
android:fullBackupContent="@xml/data_extraction_rules"
diff --git a/src/android/app/src/main/res/xml/locales_config.xml b/src/android/app/src/main/res/xml/locales_config.xml
new file mode 100755
index 000000000..51b88d9dc
--- /dev/null
+++ b/src/android/app/src/main/res/xml/locales_config.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/common/settings.cpp b/src/common/settings.cpp
index 838a0c96d..da40aaec5 100755
--- a/src/common/settings.cpp
+++ b/src/common/settings.cpp
@@ -245,6 +245,7 @@ void RestoreGlobalState(bool is_powered_on) {
values.bg_blue.SetGlobal(true);
values.enable_compute_pipelines.SetGlobal(true);
values.use_video_framerate.SetGlobal(true);
+ values.use_aggressive_anisotropic_filtering.SetGlobal(true);
// System
values.language_index.SetGlobal(true);
diff --git a/src/common/settings.h b/src/common/settings.h
index d2859dc81..2145fe981 100755
--- a/src/common/settings.h
+++ b/src/common/settings.h
@@ -483,6 +483,8 @@ struct Values {
AstcRecompression::Uncompressed, AstcRecompression::Uncompressed, AstcRecompression::Bc3,
"astc_recompression"};
SwitchableSetting use_video_framerate{false, "use_video_framerate"};
+ SwitchableSetting use_aggressive_anisotropic_filtering{
+ false, "use_aggressive_anisotropic_filtering"};
SwitchableSetting bg_red{0, "bg_red"};
SwitchableSetting bg_green{0, "bg_green"};
diff --git a/src/video_core/textures/texture.cpp b/src/video_core/textures/texture.cpp
index 3705ea6a5..65e92a3ef 100755
--- a/src/video_core/textures/texture.cpp
+++ b/src/video_core/textures/texture.cpp
@@ -62,7 +62,9 @@ std::array TSCEntry::BorderColor() const noexcept {
}
float TSCEntry::MaxAnisotropy() const noexcept {
- if (max_anisotropy == 0 && mipmap_filter != TextureMipmapFilter::Linear) {
+ if (max_anisotropy == 0 && (depth_compare_enabled.Value() ||
+ (mipmap_filter != TextureMipmapFilter::Linear &&
+ !Settings::values.use_aggressive_anisotropic_filtering))) {
return 1.0f;
}
const auto anisotropic_settings = Settings::values.max_anisotropy.GetValue();
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp
index 63cbd90ad..97cba033d 100755
--- a/src/yuzu/configuration/config.cpp
+++ b/src/yuzu/configuration/config.cpp
@@ -761,6 +761,7 @@ void Config::ReadRendererValues() {
ReadGlobalSetting(Settings::values.use_vulkan_driver_pipeline_cache);
ReadGlobalSetting(Settings::values.enable_compute_pipelines);
ReadGlobalSetting(Settings::values.use_video_framerate);
+ ReadGlobalSetting(Settings::values.use_aggressive_anisotropic_filtering);
ReadGlobalSetting(Settings::values.bg_red);
ReadGlobalSetting(Settings::values.bg_green);
ReadGlobalSetting(Settings::values.bg_blue);
@@ -1417,6 +1418,7 @@ void Config::SaveRendererValues() {
WriteGlobalSetting(Settings::values.use_vulkan_driver_pipeline_cache);
WriteGlobalSetting(Settings::values.enable_compute_pipelines);
WriteGlobalSetting(Settings::values.use_video_framerate);
+ WriteGlobalSetting(Settings::values.use_aggressive_anisotropic_filtering);
WriteGlobalSetting(Settings::values.bg_red);
WriteGlobalSetting(Settings::values.bg_green);
WriteGlobalSetting(Settings::values.bg_blue);
diff --git a/src/yuzu/configuration/configure_graphics_advanced.cpp b/src/yuzu/configuration/configure_graphics_advanced.cpp
index e9f0f98ef..af6a65962 100755
--- a/src/yuzu/configuration/configure_graphics_advanced.cpp
+++ b/src/yuzu/configuration/configure_graphics_advanced.cpp
@@ -31,6 +31,7 @@ void ConfigureGraphicsAdvanced::SetConfiguration() {
ui->use_asynchronous_shaders->setEnabled(runtime_lock);
ui->anisotropic_filtering_combobox->setEnabled(runtime_lock);
ui->enable_compute_pipelines_checkbox->setEnabled(runtime_lock);
+ ui->use_aggressive_anisotropic_filtering->setEnabled(runtime_lock);
ui->async_present->setChecked(Settings::values.async_presentation.GetValue());
ui->renderer_force_max_clock->setChecked(Settings::values.renderer_force_max_clock.GetValue());
@@ -43,6 +44,8 @@ void ConfigureGraphicsAdvanced::SetConfiguration() {
ui->enable_compute_pipelines_checkbox->setChecked(
Settings::values.enable_compute_pipelines.GetValue());
ui->use_video_framerate_checkbox->setChecked(Settings::values.use_video_framerate.GetValue());
+ ui->use_aggressive_anisotropic_filtering->setChecked(
+ Settings::values.use_aggressive_anisotropic_filtering.GetValue());
if (Settings::IsConfiguringGlobal()) {
ui->gpu_accuracy->setCurrentIndex(
@@ -94,6 +97,9 @@ void ConfigureGraphicsAdvanced::ApplyConfiguration() {
enable_compute_pipelines);
ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_video_framerate,
ui->use_video_framerate_checkbox, use_video_framerate);
+ ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_aggressive_anisotropic_filtering,
+ ui->use_aggressive_anisotropic_filtering,
+ use_aggressive_anisotropic_filtering);
}
void ConfigureGraphicsAdvanced::changeEvent(QEvent* event) {
@@ -130,6 +136,8 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() {
Settings::values.enable_compute_pipelines.UsingGlobal());
ui->use_video_framerate_checkbox->setEnabled(
Settings::values.use_video_framerate.UsingGlobal());
+ ui->use_aggressive_anisotropic_filtering->setEnabled(
+ Settings::values.use_aggressive_anisotropic_filtering.UsingGlobal());
return;
}
@@ -157,6 +165,9 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() {
ConfigurationShared::SetColoredTristate(ui->use_video_framerate_checkbox,
Settings::values.use_video_framerate,
use_video_framerate);
+ ConfigurationShared::SetColoredTristate(ui->use_aggressive_anisotropic_filtering,
+ Settings::values.use_aggressive_anisotropic_filtering,
+ use_aggressive_anisotropic_filtering);
ConfigurationShared::SetColoredComboBox(
ui->gpu_accuracy, ui->label_gpu_accuracy,
static_cast(Settings::values.gpu_accuracy.GetValue(true)));
diff --git a/src/yuzu/configuration/configure_graphics_advanced.h b/src/yuzu/configuration/configure_graphics_advanced.h
index 9c9829620..8f3e7ae69 100755
--- a/src/yuzu/configuration/configure_graphics_advanced.h
+++ b/src/yuzu/configuration/configure_graphics_advanced.h
@@ -48,6 +48,7 @@ private:
ConfigurationShared::CheckState use_vulkan_driver_pipeline_cache;
ConfigurationShared::CheckState enable_compute_pipelines;
ConfigurationShared::CheckState use_video_framerate;
+ ConfigurationShared::CheckState use_aggressive_anisotropic_filtering;
const Core::System& system;
};
diff --git a/src/yuzu/configuration/configure_graphics_advanced.ui b/src/yuzu/configuration/configure_graphics_advanced.ui
index babe2d21c..ff21aaf04 100755
--- a/src/yuzu/configuration/configure_graphics_advanced.ui
+++ b/src/yuzu/configuration/configure_graphics_advanced.ui
@@ -260,6 +260,19 @@ Compute pipelines are always enabled on all other drivers.
+ -
+
+
+ Enable this option for a more aggressive approach to applying Anisotropic Filtering to textures.
+By toggling this, Anisotropic Filtering is added to textures with both nearest and linear mipmapping modes.
+This may result in improved visual quality for a wider range of textures, but can also introduce artifacts in
+some titles.
+
+
+ Apply Anisotropic Filtering for all mipmap modes
+
+
+
diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp
index 43f725d31..e4424cc78 100755
--- a/src/yuzu_cmd/config.cpp
+++ b/src/yuzu_cmd/config.cpp
@@ -321,6 +321,7 @@ void Config::ReadValues() {
ReadSetting("Renderer", Settings::values.astc_recompression);
ReadSetting("Renderer", Settings::values.use_fast_gpu_time);
ReadSetting("Renderer", Settings::values.use_vulkan_driver_pipeline_cache);
+ ReadSetting("Renderer", Settings::values.use_aggressive_anisotropic_filtering);
ReadSetting("Renderer", Settings::values.bg_red);
ReadSetting("Renderer", Settings::values.bg_green);
diff --git a/src/yuzu_cmd/default_ini.h b/src/yuzu_cmd/default_ini.h
index 1e9549384..1bded0f61 100755
--- a/src/yuzu_cmd/default_ini.h
+++ b/src/yuzu_cmd/default_ini.h
@@ -325,6 +325,10 @@ aspect_ratio =
# 0: Default, 1: 2x, 2: 4x, 3: 8x, 4: 16x
max_anisotropy =
+# Apply Anisotropic Filtering to all mipmap modes.
+# 0 (default): Off, 1: On
+use_aggressive_anisotropic_filtering =
+
# Whether to enable VSync or not.
# OpenGL: Values other than 0 enable VSync
# Vulkan: FIFO is selected if the requested mode is not supported by the driver.