Compare commits
1 Commits
remove-unu
...
interval-z
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4dcbc1c03c |
@@ -53,6 +53,7 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting {
|
|||||||
|
|
||||||
SOC_OVERLAY_BACKGROUND("soc_overlay_background"),
|
SOC_OVERLAY_BACKGROUND("soc_overlay_background"),
|
||||||
ENABLE_INPUT_OVERLAY_AUTO_HIDE("enable_input_overlay_auto_hide"),
|
ENABLE_INPUT_OVERLAY_AUTO_HIDE("enable_input_overlay_auto_hide"),
|
||||||
|
RESPECT_PRESENT_INTERVAL_ZERO("respect_present_interval_zero"),
|
||||||
|
|
||||||
PERF_OVERLAY_BACKGROUND("perf_overlay_background"),
|
PERF_OVERLAY_BACKGROUND("perf_overlay_background"),
|
||||||
SHOW_PERFORMANCE_OVERLAY("show_performance_overlay"),
|
SHOW_PERFORMANCE_OVERLAY("show_performance_overlay"),
|
||||||
|
|||||||
@@ -237,6 +237,13 @@ abstract class SettingsItem(
|
|||||||
override fun reset() = BooleanSetting.USE_DOCKED_MODE.reset()
|
override fun reset() = BooleanSetting.USE_DOCKED_MODE.reset()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
put(
|
||||||
|
SwitchSetting(
|
||||||
|
BooleanSetting.RESPECT_PRESENT_INTERVAL_ZERO,
|
||||||
|
titleId = R.string.respect_present_interval_zero,
|
||||||
|
descriptionId = R.string.respect_present_interval_zero_description
|
||||||
|
)
|
||||||
|
)
|
||||||
put(
|
put(
|
||||||
SwitchSetting(
|
SwitchSetting(
|
||||||
dockedModeSetting,
|
dockedModeSetting,
|
||||||
|
|||||||
@@ -460,6 +460,7 @@ class SettingsFragmentPresenter(
|
|||||||
add(IntSetting.RENDERER_SAMPLE_SHADING_FRACTION.key)
|
add(IntSetting.RENDERER_SAMPLE_SHADING_FRACTION.key)
|
||||||
|
|
||||||
add(HeaderSetting(R.string.veil_renderer))
|
add(HeaderSetting(R.string.veil_renderer))
|
||||||
|
add(BooleanSetting.RESPECT_PRESENT_INTERVAL_ZERO.key)
|
||||||
add(BooleanSetting.RENDERER_EARLY_RELEASE_FENCES.key)
|
add(BooleanSetting.RENDERER_EARLY_RELEASE_FENCES.key)
|
||||||
add(IntSetting.DMA_ACCURACY.key)
|
add(IntSetting.DMA_ACCURACY.key)
|
||||||
add(BooleanSetting.BUFFER_REORDER_DISABLE.key)
|
add(BooleanSetting.BUFFER_REORDER_DISABLE.key)
|
||||||
|
|||||||
@@ -105,6 +105,8 @@
|
|||||||
<string name="sample_shading_fraction_description">The intensity of the sample shading pass. Higher values improve quality more but also reduce performance to a greater extent.</string>
|
<string name="sample_shading_fraction_description">The intensity of the sample shading pass. Higher values improve quality more but also reduce performance to a greater extent.</string>
|
||||||
|
|
||||||
<string name="veil_renderer">Renderer</string>
|
<string name="veil_renderer">Renderer</string>
|
||||||
|
<string name="respect_present_interval_zero">Respect present interval 0 for unlocked FPS</string>
|
||||||
|
<string name="respect_present_interval_zero_description">When enabled, present interval 0 will be used for games requesting unlocked FPS. This matches console behavior more closely, but may cause higher battery usage and frame pacing issues. When disabled (default), present interval 0 is capped at 120FPS to conserve battery.</string>
|
||||||
<string name="renderer_early_release_fences">Release Fences Early</string>
|
<string name="renderer_early_release_fences">Release Fences Early</string>
|
||||||
<string name="renderer_early_release_fences_description">Helps fix 0 FPS in games like DKCR:HD, Subnautica Below Zero and Ori 2, but may break loading or performance in Unreal Engine games.</string>
|
<string name="renderer_early_release_fences_description">Helps fix 0 FPS in games like DKCR:HD, Subnautica Below Zero and Ori 2, but may break loading or performance in Unreal Engine games.</string>
|
||||||
<string name="sync_memory_operations">Sync Memory Operations</string>
|
<string name="sync_memory_operations">Sync Memory Operations</string>
|
||||||
|
|||||||
@@ -342,6 +342,9 @@ struct Values {
|
|||||||
Category::Renderer};
|
Category::Renderer};
|
||||||
SwitchableSetting<bool> use_asynchronous_gpu_emulation{
|
SwitchableSetting<bool> use_asynchronous_gpu_emulation{
|
||||||
linkage, true, "use_asynchronous_gpu_emulation", Category::Renderer};
|
linkage, true, "use_asynchronous_gpu_emulation", Category::Renderer};
|
||||||
|
SwitchableSetting<bool> respect_present_interval_zero{
|
||||||
|
linkage, false, "respect_present_interval_zero", Category::Renderer};
|
||||||
|
|
||||||
SwitchableSetting<AstcDecodeMode, true> accelerate_astc{linkage,
|
SwitchableSetting<AstcDecodeMode, true> accelerate_astc{linkage,
|
||||||
#ifdef ANDROID
|
#ifdef ANDROID
|
||||||
AstcDecodeMode::Cpu,
|
AstcDecodeMode::Cpu,
|
||||||
|
|||||||
@@ -8,6 +8,8 @@
|
|||||||
|
|
||||||
#include <boost/container/small_vector.hpp>
|
#include <boost/container/small_vector.hpp>
|
||||||
|
|
||||||
|
#include "common/settings.h"
|
||||||
|
|
||||||
#include "core/hle/service/nvdrv/devices/nvdisp_disp0.h"
|
#include "core/hle/service/nvdrv/devices/nvdisp_disp0.h"
|
||||||
#include "core/hle/service/nvnflinger/buffer_item.h"
|
#include "core/hle/service/nvnflinger/buffer_item.h"
|
||||||
#include "core/hle/service/nvnflinger/buffer_item_consumer.h"
|
#include "core/hle/service/nvnflinger/buffer_item_consumer.h"
|
||||||
@@ -21,6 +23,14 @@ namespace {
|
|||||||
|
|
||||||
s32 NormalizeSwapInterval(f32* out_speed_scale, s32 swap_interval) {
|
s32 NormalizeSwapInterval(f32* out_speed_scale, s32 swap_interval) {
|
||||||
if (swap_interval <= 0) {
|
if (swap_interval <= 0) {
|
||||||
|
// If swap_interval is 0 and setting enabled, respect it as unlocked FPS
|
||||||
|
if (swap_interval == 0 && Settings::values.respect_present_interval_zero.GetValue()) {
|
||||||
|
if (out_speed_scale) {
|
||||||
|
*out_speed_scale = 1.0f;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// As an extension, treat nonpositive swap interval as speed multiplier.
|
// As an extension, treat nonpositive swap interval as speed multiplier.
|
||||||
if (out_speed_scale) {
|
if (out_speed_scale) {
|
||||||
*out_speed_scale = 2.f * static_cast<f32>(1 - swap_interval);
|
*out_speed_scale = 2.f * static_cast<f32>(1 - swap_interval);
|
||||||
|
|||||||
@@ -213,6 +213,11 @@ std::unique_ptr<TranslationMap> InitializeTranslations(QObject* parent)
|
|||||||
use_asynchronous_gpu_emulation,
|
use_asynchronous_gpu_emulation,
|
||||||
tr("Use asynchronous GPU emulation"),
|
tr("Use asynchronous GPU emulation"),
|
||||||
tr("Uses an extra CPU thread for rendering.\nThis option should always remain enabled."));
|
tr("Uses an extra CPU thread for rendering.\nThis option should always remain enabled."));
|
||||||
|
INSERT(
|
||||||
|
Settings, respect_present_interval_zero, tr("Respect present interval 0 for unlocked FPS"),
|
||||||
|
tr("When enabled, present interval 0 will be used for games requesting unlocked FPS.\n"
|
||||||
|
"This matches console behavior more closely, but may cause higher battery usage and frame pacing issues.\n"
|
||||||
|
"When disabled (default), present interval 0 is capped at 120FPS to conserve battery."));
|
||||||
INSERT(Settings,
|
INSERT(Settings,
|
||||||
nvdec_emulation,
|
nvdec_emulation,
|
||||||
tr("NVDEC emulation:"),
|
tr("NVDEC emulation:"),
|
||||||
|
|||||||
Reference in New Issue
Block a user