mirror of
https://github.com/stenzek/duckstation.git
synced 2026-02-14 02:14:35 +00:00
GPUDevice: Display OSD message if debug settings are enabled
This commit is contained in:
@@ -645,6 +645,8 @@ bool GPUThread::CreateDeviceOnThread(RenderAPI api, bool fullscreen, bool clear_
|
||||
create_flags |= GPUDevice::CreateFlags::EnableDebugDevice;
|
||||
if (g_gpu_settings.gpu_use_debug_device && g_gpu_settings.gpu_use_debug_device_gpu_validation)
|
||||
create_flags |= GPUDevice::CreateFlags::EnableGPUValidation;
|
||||
if (g_gpu_settings.gpu_disable_shader_cache)
|
||||
create_flags |= GPUDevice::CreateFlags::DisableShaderCache;
|
||||
if (g_gpu_settings.gpu_disable_dual_source_blend)
|
||||
create_flags |= GPUDevice::CreateFlags::DisableDualSourceBlend;
|
||||
if (g_gpu_settings.gpu_disable_framebuffer_fetch)
|
||||
@@ -662,7 +664,7 @@ bool GPUThread::CreateDeviceOnThread(RenderAPI api, bool fullscreen, bool clear_
|
||||
if (g_gpu_settings.gpu_disable_compressed_textures)
|
||||
create_flags |= GPUDevice::CreateFlags::DisableCompressedTextures;
|
||||
|
||||
// Don't dump shaders on debug builds for Android, users will complain about storage...
|
||||
// Only dump shaders on debug builds for Android, users will complain about storage...
|
||||
#if !defined(__ANDROID__) || defined(_DEBUG)
|
||||
const std::string_view shader_dump_directory(EmuFolders::DataRoot);
|
||||
#else
|
||||
@@ -674,8 +676,7 @@ bool GPUThread::CreateDeviceOnThread(RenderAPI api, bool fullscreen, bool clear_
|
||||
if (!g_gpu_device ||
|
||||
!(wi = Host::AcquireRenderWindow(api, fullscreen, fullscreen_mode.has_value(), &create_error)).has_value() ||
|
||||
!g_gpu_device->Create(
|
||||
Host::GetStringSettingValue("GPU", "Adapter"), create_flags, shader_dump_directory,
|
||||
g_gpu_settings.gpu_disable_shader_cache ? std::string_view() : std::string_view(EmuFolders::Cache),
|
||||
Host::GetStringSettingValue("GPU", "Adapter"), create_flags, shader_dump_directory, EmuFolders::Cache,
|
||||
SHADER_CACHE_VERSION, wi.value(), s_state.requested_vsync, s_state.requested_allow_present_throttle,
|
||||
fullscreen_mode.has_value() ? &fullscreen_mode.value() : nullptr, exclusive_fullscreen_control, &create_error))
|
||||
{
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "compress_helpers.h"
|
||||
#include "gpu_framebuffer_manager.h"
|
||||
#include "image.h"
|
||||
#include "imgui_manager.h"
|
||||
#include "shadergen.h"
|
||||
|
||||
#include "common/assert.h"
|
||||
@@ -23,6 +24,8 @@
|
||||
#include "spirv_cross_c.h"
|
||||
#include "xxhash.h"
|
||||
|
||||
#include "IconsEmoji.h"
|
||||
|
||||
LOG_CHANNEL(GPUDevice);
|
||||
|
||||
#ifdef _WIN32
|
||||
@@ -459,33 +462,32 @@ bool GPUDevice::Create(std::string_view adapter, CreateFlags create_flags, std::
|
||||
|
||||
if (create_flags != CreateFlags::None) [[unlikely]]
|
||||
{
|
||||
WARNING_LOG("One or more non-standard creation flags are set:");
|
||||
if (HasCreateFlag(create_flags, CreateFlags::EnableDebugDevice))
|
||||
WARNING_LOG(" - Use debug device");
|
||||
if (HasCreateFlag(create_flags, CreateFlags::EnableGPUValidation))
|
||||
WARNING_LOG(" - Enable GPU validation");
|
||||
if (HasCreateFlag(create_flags, CreateFlags::PreferGLESContext))
|
||||
WARNING_LOG(" - Prefer OpenGL ES context");
|
||||
if (HasCreateFlag(create_flags, CreateFlags::DisableDualSourceBlend))
|
||||
WARNING_LOG(" - Disable dual source blend");
|
||||
if (HasCreateFlag(create_flags, CreateFlags::DisableFeedbackLoops))
|
||||
WARNING_LOG(" - Disable feedback loops");
|
||||
if (HasCreateFlag(create_flags, CreateFlags::DisableFramebufferFetch))
|
||||
WARNING_LOG(" - Disable framebuffer fetch");
|
||||
if (HasCreateFlag(create_flags, CreateFlags::DisableTextureBuffers))
|
||||
WARNING_LOG(" - Disable texture buffers");
|
||||
if (HasCreateFlag(create_flags, CreateFlags::DisableGeometryShaders))
|
||||
WARNING_LOG(" - Disable geometry shaders");
|
||||
if (HasCreateFlag(create_flags, CreateFlags::DisableComputeShaders))
|
||||
WARNING_LOG(" - Disable compute shaders");
|
||||
if (HasCreateFlag(create_flags, CreateFlags::DisableTextureCopyToSelf))
|
||||
WARNING_LOG(" - Disable texture copy to self");
|
||||
if (HasCreateFlag(create_flags, CreateFlags::DisableMemoryImport))
|
||||
WARNING_LOG(" - Disable memory import");
|
||||
if (HasCreateFlag(create_flags, CreateFlags::DisableRasterOrderViews))
|
||||
WARNING_LOG(" - Disable raster order views");
|
||||
if (HasCreateFlag(create_flags, CreateFlags::DisableCompressedTextures))
|
||||
WARNING_LOG(" - Disable compressed textures");
|
||||
#define FLAG_MSG(flag, text) \
|
||||
if (HasCreateFlag(create_flags, flag)) \
|
||||
{ \
|
||||
message += "\n \u2022 " text; \
|
||||
}
|
||||
|
||||
std::string message = "One or more non-standard GPU device flags are set:";
|
||||
FLAG_MSG(CreateFlags::EnableDebugDevice, "Use Debug Device");
|
||||
FLAG_MSG(CreateFlags::EnableGPUValidation, "Enable GPU Validation");
|
||||
FLAG_MSG(CreateFlags::PreferGLESContext, "Prefer OpenGL ES context");
|
||||
FLAG_MSG(CreateFlags::DisableShaderCache, "Disable Shader Cache");
|
||||
FLAG_MSG(CreateFlags::DisableDualSourceBlend, "Disable Dual Source Blend");
|
||||
FLAG_MSG(CreateFlags::DisableFeedbackLoops, "Disable Feedback Loops");
|
||||
FLAG_MSG(CreateFlags::DisableFramebufferFetch, "Disable Framebuffer Fetch");
|
||||
FLAG_MSG(CreateFlags::DisableTextureBuffers, "Disable Texture Buffers");
|
||||
FLAG_MSG(CreateFlags::DisableGeometryShaders, "Disable Geometry Shaders");
|
||||
FLAG_MSG(CreateFlags::DisableComputeShaders, "Disable Compute Shaders");
|
||||
FLAG_MSG(CreateFlags::DisableTextureCopyToSelf, "Disable Texture Copy To Self");
|
||||
FLAG_MSG(CreateFlags::DisableMemoryImport, "Disable Memory Import");
|
||||
FLAG_MSG(CreateFlags::DisableRasterOrderViews, "Disable Raster Order Views");
|
||||
FLAG_MSG(CreateFlags::DisableCompressedTextures, "Disable Compressed Textures");
|
||||
|
||||
Host::AddIconOSDMessage("GPUDeviceNonStandardFlags", ICON_EMOJI_WARNING, std::move(message),
|
||||
Host::OSD_WARNING_DURATION);
|
||||
|
||||
#undef FLAG_MSG
|
||||
}
|
||||
|
||||
if (!CreateDeviceAndMainSwapChain(adapter, create_flags, wi, vsync, allow_present_throttle, exclusive_fullscreen_mode,
|
||||
@@ -499,7 +501,8 @@ bool GPUDevice::Create(std::string_view adapter, CreateFlags create_flags, std::
|
||||
INFO_LOG("Render API: {} Version {}", RenderAPIToString(m_render_api), m_render_api_version);
|
||||
INFO_LOG("Graphics Driver Info:\n{}", GetDriverInfo());
|
||||
|
||||
OpenShaderCache(shader_cache_path, shader_cache_version);
|
||||
OpenShaderCache(HasCreateFlag(create_flags, CreateFlags::DisableShaderCache) ? std::string_view() : shader_cache_path,
|
||||
shader_cache_version);
|
||||
|
||||
if (!CreateResources(error))
|
||||
{
|
||||
|
||||
@@ -587,16 +587,17 @@ public:
|
||||
PreferGLESContext = (1 << 0),
|
||||
EnableDebugDevice = (1 << 1),
|
||||
EnableGPUValidation = (1 << 2),
|
||||
DisableDualSourceBlend = (1 << 3),
|
||||
DisableFeedbackLoops = (1 << 4),
|
||||
DisableFramebufferFetch = (1 << 5),
|
||||
DisableTextureBuffers = (1 << 6),
|
||||
DisableGeometryShaders = (1 << 7),
|
||||
DisableComputeShaders = (1 << 8),
|
||||
DisableTextureCopyToSelf = (1 << 9),
|
||||
DisableMemoryImport = (1 << 10),
|
||||
DisableRasterOrderViews = (1 << 11),
|
||||
DisableCompressedTextures = (1 << 12),
|
||||
DisableShaderCache = (1 << 3),
|
||||
DisableDualSourceBlend = (1 << 4),
|
||||
DisableFeedbackLoops = (1 << 5),
|
||||
DisableFramebufferFetch = (1 << 6),
|
||||
DisableTextureBuffers = (1 << 7),
|
||||
DisableGeometryShaders = (1 << 8),
|
||||
DisableComputeShaders = (1 << 9),
|
||||
DisableTextureCopyToSelf = (1 << 10),
|
||||
DisableMemoryImport = (1 << 11),
|
||||
DisableRasterOrderViews = (1 << 12),
|
||||
DisableCompressedTextures = (1 << 13),
|
||||
};
|
||||
|
||||
enum class DrawBarrier : u32
|
||||
|
||||
Reference in New Issue
Block a user