HostDisplay: Add threaded presentation for Vulkan renderer

Can add a significant speedup for fast forward. Automatically disabled
when vsync is enabled.
This commit is contained in:
Connor McLaughlin
2020-12-26 23:22:24 +10:00
parent 1a6a14fcd4
commit 702ed21207
29 changed files with 241 additions and 76 deletions

View File

@ -459,8 +459,9 @@ bool AndroidHostInterface::AcquireHostDisplay()
break;
}
if (!display->CreateRenderDevice(wi, {}, g_settings.gpu_use_debug_device) ||
!display->InitializeRenderDevice(GetShaderCacheBasePath(), g_settings.gpu_use_debug_device))
if (!display->CreateRenderDevice(wi, {}, g_settings.gpu_use_debug_device, g_settings.gpu_threaded_presentation) ||
!display->InitializeRenderDevice(GetShaderCacheBasePath(), g_settings.gpu_use_debug_device,
g_settings.gpu_threaded_presentation))
{
ReportError("Failed to acquire host display.");
display->DestroyRenderDevice();

View File

@ -153,6 +153,8 @@
<string name="main_activity_copy">Copy</string>
<string name="settings_gpu_thread">Threaded GPU Rendering</string>
<string name="settings_summary_gpu_thread">Uses a second thread for drawing graphics. Currently only available for the software renderer, but can provide a significant speed improvement, and is safe to use.</string>
<string name="settings_gpu_threaded_presentation">Threaded GPU Presentation</string>
<string name="settings_summary_gpu_threaded_presentation">Presents frames on a background thread when fast forwarding or vsync is disabled. This can measurably improve performance in the Vulkan renderer.</string>
<string name="settings_language">Language (restart to apply)</string>
<string name="touchscreen_controller_stop_editing">Stop Editing</string>
<string name="touchscreen_controller_reset_layout">Reset Layout</string>

View File

@ -49,6 +49,12 @@
app:defaultValue="true"
app:summary="@string/settings_summary_gpu_thread"
app:iconSpaceReserved="false" />
<SwitchPreferenceCompat
app:key="GPU/ThreadedPresentation"
app:title="@string/settings_gpu_threaded_presentation"
app:defaultValue="true"
app:summary="@string/settings_summary_gpu_threaded_presentation"
app:iconSpaceReserved="false" />
<SwitchPreferenceCompat
app:key="GPU/PGXPVertexCache"
app:title="@string/settings_pgxp_vertex_cache"