mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-17 08:11:51 +00:00
Add asynchronous streaming to the GUI and auto-enable it
- Hopefully not many users are on very weak GPUs
This commit is contained in:
parent
a5f0faefc3
commit
140c5bfc3e
@ -168,7 +168,7 @@ struct cfg_root : cfg::node
|
||||
cfg::_bool force_fifo{ this, "Force FIFO present mode" };
|
||||
cfg::_bool force_primitive_restart{ this, "Force primitive restart flag" };
|
||||
cfg::_bool force_disable_exclusive_fullscreen_mode{this, "Force Disable Exclusive Fullscreen Mode"};
|
||||
cfg::_bool asynchronous_texture_streaming{ this, "Asynchronous Texture Streaming Placeholder", false, true }; // Placeholder text because it'll have to be updated later
|
||||
cfg::_bool asynchronous_texture_streaming{ this, "Asynchronous Texture Streaming", true, true };
|
||||
cfg::_enum<vk_gpu_scheduler_mode> asynchronous_scheduler{ this, "Asynchronous Queue Scheduler", vk_gpu_scheduler_mode::device };
|
||||
|
||||
} vk{ this };
|
||||
|
@ -76,6 +76,8 @@ enum class emu_settings_type
|
||||
VBlankRate,
|
||||
RelaxedZCULL,
|
||||
DriverWakeUpDelay,
|
||||
VulkanAsyncTextureUploads,
|
||||
VulkanAsyncSchedulerDriver,
|
||||
|
||||
// Performance Overlay
|
||||
PerfOverlayEnabled,
|
||||
@ -225,6 +227,10 @@ static const QMap<emu_settings_type, cfg_location> settings_location =
|
||||
{ emu_settings_type::VBlankRate, { "Video", "Vblank Rate"}},
|
||||
{ emu_settings_type::DriverWakeUpDelay, { "Video", "Driver Wake-Up Delay"}},
|
||||
|
||||
// Vulkan
|
||||
{ emu_settings_type::VulkanAsyncTextureUploads, { "Video", "Vulkan", "Asynchronous Texture Streaming"}},
|
||||
{ emu_settings_type::VulkanAsyncSchedulerDriver, { "Video", "Vulkan", "Asynchronous Queue Scheduler"}},
|
||||
|
||||
// Performance Overlay
|
||||
{ emu_settings_type::PerfOverlayEnabled, { "Video", "Performance Overlay", "Enabled" } },
|
||||
{ emu_settings_type::PerfOverlayFramerateGraphEnabled, { "Video", "Performance Overlay", "Enable Framerate Graph" } },
|
||||
|
@ -441,9 +441,13 @@ settings_dialog::settings_dialog(std::shared_ptr<gui_settings> gui_settings, std
|
||||
ui->gb_resolutionScale->setEnabled(!checked);
|
||||
ui->gb_minimumScalableDimension->setEnabled(!checked);
|
||||
ui->gb_anisotropicFilter->setEnabled(!checked);
|
||||
ui->vulkansched->setEnabled(!checked);
|
||||
};
|
||||
connect(ui->strictModeRendering, &QCheckBox::clicked, this, onStrictRenderingMode);
|
||||
|
||||
m_emu_settings->EnhanceCheckBox(ui->asyncTextureStreaming, emu_settings_type::VulkanAsyncTextureUploads);
|
||||
SubscribeTooltip(ui->asyncTextureStreaming, tooltips.settings.async_texture_streaming);
|
||||
|
||||
// Radio buttons
|
||||
|
||||
SubscribeTooltip(ui->rb_legacy_recompiler, tooltips.settings.legacy_shader_recompiler);
|
||||
@ -638,15 +642,20 @@ settings_dialog::settings_dialog(std::shared_ptr<gui_settings> gui_settings, std
|
||||
connect(ui->graphicsAdapterBox, &QComboBox::currentTextChanged, set_adapter);
|
||||
connect(ui->renderBox, &QComboBox::currentTextChanged, set_renderer);
|
||||
|
||||
auto fix_gl_legacy = [=, this](const QString& text)
|
||||
auto apply_renderer_specific_options = [=, this](const QString& text)
|
||||
{
|
||||
// OpenGL-only
|
||||
ui->glLegacyBuffers->setEnabled(text == r_creator->OpenGL.name);
|
||||
|
||||
// Vulkan-only
|
||||
ui->asyncTextureStreaming->setEnabled(text == r_creator->Vulkan.name);
|
||||
ui->vulkansched->setEnabled(text == r_creator->Vulkan.name);
|
||||
};
|
||||
|
||||
// Handle connects to disable specific checkboxes that depend on GUI state.
|
||||
onStrictRenderingMode(ui->strictModeRendering->isChecked());
|
||||
fix_gl_legacy(ui->renderBox->currentText()); // Init
|
||||
connect(ui->renderBox, &QComboBox::currentTextChanged, fix_gl_legacy);
|
||||
apply_renderer_specific_options(ui->renderBox->currentText()); // Init
|
||||
connect(ui->renderBox, &QComboBox::currentTextChanged, apply_renderer_specific_options);
|
||||
|
||||
// _ _ _______ _
|
||||
// /\ | (_) |__ __| | |
|
||||
@ -983,6 +992,9 @@ settings_dialog::settings_dialog(std::shared_ptr<gui_settings> gui_settings, std
|
||||
m_emu_settings->EnhanceComboBox(ui->sleepTimersAccuracy, emu_settings_type::SleepTimersAccuracy);
|
||||
SubscribeTooltip(ui->gb_sleep_timers_accuracy, tooltips.settings.sleep_timers_accuracy);
|
||||
|
||||
m_emu_settings->EnhanceComboBox(ui->vulkansched, emu_settings_type::VulkanAsyncSchedulerDriver);
|
||||
SubscribeTooltip(ui->gb_vulkansched, tooltips.settings.vulkan_async_scheduler);
|
||||
|
||||
// Sliders
|
||||
|
||||
EnhanceSlider(emu_settings_type::DriverWakeUpDelay, ui->wakeupDelay, ui->wakeupText, tr(reinterpret_cast<const char*>(u8"%0 µs"), "Driver wake up delay"));
|
||||
|
@ -10,7 +10,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>753</width>
|
||||
<height>650</height>
|
||||
<height>730</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
@ -39,7 +39,7 @@
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
<number>6</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="coreTab">
|
||||
<attribute name="title">
|
||||
@ -761,6 +761,13 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="asyncTextureStreaming">
|
||||
<property name="text">
|
||||
<string>Asynchronous Texture Streaming</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="additional_settings_spacer">
|
||||
<property name="orientation">
|
||||
@ -2061,6 +2068,25 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb_vulkansched">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Vulkan Queue Scheduler</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="gb_vksched_layout">
|
||||
<item>
|
||||
<widget class="QComboBox" name="vulkansched">
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="gb_wakeupDelay">
|
||||
<property name="sizePolicy">
|
||||
@ -2200,8 +2226,8 @@
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
<width>13</width>
|
||||
<height>13</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
|
@ -37,6 +37,7 @@ public:
|
||||
const QString clocks_scale = tr("Changes the scale of emulated system time.\nAffects software which uses system time to calculate things such as dynamic timesteps.");
|
||||
const QString wake_up_delay = tr("Try fiddling with this setting when encountering unstable games. The higher value, the better stability it may provide.\nIncrements/Decrements for each test should be around 100μs to 200μs until finding the best value for optimal stability.\nValues above 1000μs may cause noticeable performance penalties, use with caution.");
|
||||
const QString disabled_from_global = tr("Do not change this setting globally.\nRight-click the game in game list and choose \"Configure\" instead.");
|
||||
const QString vulkan_async_scheduler = tr("Determines how to schedule GPU async compute jobs when using asynchronous streaming.\nUse 'Host' mode for more spec compliant behavior at the cost of CPU overhead.\nUse 'Device' to let your driver handle this. Beware that 'device' mode technically violates official spec but is the superior option.");
|
||||
|
||||
// audio
|
||||
|
||||
@ -159,6 +160,8 @@ public:
|
||||
const QString shader_interpreter_only = tr("All rendering is handled by the interpreter with no attempt to compile native shaders.\nThis mode is very slow and experimental.");
|
||||
const QString shader_compiler_threads = tr("Number of threads to use for the shader compiler backend.\nOnly has an impact when shader mode is set to one of the asynchronous modes.");
|
||||
|
||||
const QString async_texture_streaming = tr("Stream textures to GPU in parallel with 3D rendering.\nCan improve performance on more powerful GPUs that have spare headroom.\nOnly works with Vulkan renderer.");
|
||||
|
||||
// gui
|
||||
|
||||
const QString log_limit = tr("Sets the maximum amount of blocks that the log can display.\nThis usually equals the number of lines.\nSet 0 in order to remove the limit.");
|
||||
|
Loading…
Reference in New Issue
Block a user