mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-30 01:29:42 -06:00
DriverDetails: Make the bug identifiers humanly readable.
This commit is contained in:
@ -45,7 +45,7 @@ int BoundingBox::Get(int index)
|
||||
int data = 0;
|
||||
glBindBuffer(GL_SHADER_STORAGE_BUFFER, s_bbox_buffer_id);
|
||||
|
||||
if (!DriverDetails::HasBug(DriverDetails::BUG_SLOWGETBUFFERSUBDATA))
|
||||
if (!DriverDetails::HasBug(DriverDetails::BUG_SLOW_GETBUFFERSUBDATA))
|
||||
{
|
||||
// Using glMapBufferRange to read back the contents of the SSBO is extremely slow
|
||||
// on nVidia drivers. This is more noticeable at higher internal resolutions.
|
||||
|
@ -413,7 +413,7 @@ Renderer::Renderer()
|
||||
"GPU: Does your video card support OpenGL 3.1?");
|
||||
bSuccess = false;
|
||||
}
|
||||
else if (DriverDetails::HasBug(DriverDetails::BUG_BROKENUBO))
|
||||
else if (DriverDetails::HasBug(DriverDetails::BUG_BROKEN_UBO))
|
||||
{
|
||||
PanicAlert(
|
||||
"Buggy GPU driver detected.\n"
|
||||
@ -447,7 +447,7 @@ Renderer::Renderer()
|
||||
(GLExtensions::Supports("GL_ARB_blend_func_extended") ||
|
||||
GLExtensions::Supports("GL_EXT_blend_func_extended"));
|
||||
g_Config.backend_info.bSupportsPrimitiveRestart =
|
||||
!DriverDetails::HasBug(DriverDetails::BUG_PRIMITIVERESTART) &&
|
||||
!DriverDetails::HasBug(DriverDetails::BUG_PRIMITIVE_RESTART) &&
|
||||
((GLExtensions::Version() >= 310) || GLExtensions::Supports("GL_NV_primitive_restart"));
|
||||
g_Config.backend_info.bSupportsBBox =
|
||||
GLExtensions::Supports("GL_ARB_shader_storage_buffer_object");
|
||||
@ -456,7 +456,7 @@ Renderer::Renderer()
|
||||
GLExtensions::Supports("GL_ARB_sample_shading");
|
||||
g_Config.backend_info.bSupportsGeometryShaders =
|
||||
GLExtensions::Version() >= 320 &&
|
||||
!DriverDetails::HasBug(DriverDetails::BUG_BROKENGEOMETRYSHADERS);
|
||||
!DriverDetails::HasBug(DriverDetails::BUG_BROKEN_GEOMETRY_SHADERS);
|
||||
g_Config.backend_info.bSupportsPaletteConversion =
|
||||
GLExtensions::Supports("GL_ARB_texture_buffer_object") ||
|
||||
GLExtensions::Supports("GL_OES_texture_buffer") ||
|
||||
@ -466,7 +466,7 @@ Renderer::Renderer()
|
||||
(GLExtensions::Supports("GL_ARB_copy_image") || GLExtensions::Supports("GL_NV_copy_image") ||
|
||||
GLExtensions::Supports("GL_EXT_copy_image") ||
|
||||
GLExtensions::Supports("GL_OES_copy_image")) &&
|
||||
!DriverDetails::HasBug(DriverDetails::BUG_BROKENCOPYIMAGE);
|
||||
!DriverDetails::HasBug(DriverDetails::BUG_BROKEN_COPYIMAGE);
|
||||
|
||||
// Desktop OpenGL supports the binding layout if it supports 420pack
|
||||
// OpenGL ES 3.1 supports it implicitly without an extension
|
||||
@ -694,7 +694,7 @@ Renderer::Renderer()
|
||||
|
||||
// Handle VSync on/off
|
||||
s_vsync = g_ActiveConfig.IsVSync();
|
||||
if (!DriverDetails::HasBug(DriverDetails::BUG_BROKENVSYNC))
|
||||
if (!DriverDetails::HasBug(DriverDetails::BUG_BROKEN_VSYNC))
|
||||
GLInterface->SwapInterval(s_vsync);
|
||||
|
||||
// TODO: Move these somewhere else?
|
||||
@ -1561,7 +1561,7 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight,
|
||||
if (s_vsync != g_ActiveConfig.IsVSync())
|
||||
{
|
||||
s_vsync = g_ActiveConfig.IsVSync();
|
||||
if (!DriverDetails::HasBug(DriverDetails::BUG_BROKENVSYNC))
|
||||
if (!DriverDetails::HasBug(DriverDetails::BUG_BROKEN_VSYNC))
|
||||
GLInterface->SwapInterval(s_vsync);
|
||||
}
|
||||
|
||||
|
@ -341,7 +341,7 @@ std::unique_ptr<StreamBuffer> StreamBuffer::Create(u32 type, u32 size)
|
||||
// without basevertex support, only streaming methods whith uploads everything to zero works fine:
|
||||
if (!g_ogl_config.bSupportsGLBaseVertex)
|
||||
{
|
||||
if (!DriverDetails::HasBug(DriverDetails::BUG_BROKENBUFFERSTREAM))
|
||||
if (!DriverDetails::HasBug(DriverDetails::BUG_BROKEN_BUFFER_STREAM))
|
||||
return std::make_unique<BufferSubData>(type, size);
|
||||
|
||||
// BufferData is by far the worst way, only use it if needed
|
||||
@ -353,21 +353,21 @@ std::unique_ptr<StreamBuffer> StreamBuffer::Create(u32 type, u32 size)
|
||||
{
|
||||
// pinned memory is much faster than buffer storage on AMD cards
|
||||
if (g_ogl_config.bSupportsGLPinnedMemory &&
|
||||
!(DriverDetails::HasBug(DriverDetails::BUG_BROKENPINNEDMEMORY) &&
|
||||
!(DriverDetails::HasBug(DriverDetails::BUG_BROKEN_PINNED_MEMORY) &&
|
||||
type == GL_ELEMENT_ARRAY_BUFFER))
|
||||
return std::make_unique<PinnedMemory>(type, size);
|
||||
|
||||
// buffer storage works well in most situations
|
||||
bool coherent = DriverDetails::HasBug(DriverDetails::BUG_BROKENEXPLICITFLUSH);
|
||||
bool coherent = DriverDetails::HasBug(DriverDetails::BUG_BROKEN_EXPLICIT_FLUSH);
|
||||
if (g_ogl_config.bSupportsGLBufferStorage &&
|
||||
!(DriverDetails::HasBug(DriverDetails::BUG_BROKENBUFFERSTORAGE) &&
|
||||
!(DriverDetails::HasBug(DriverDetails::BUG_BROKEN_BUFFER_STORAGE) &&
|
||||
type == GL_ARRAY_BUFFER) &&
|
||||
!(DriverDetails::HasBug(DriverDetails::BUG_INTELBROKENBUFFERSTORAGE) &&
|
||||
!(DriverDetails::HasBug(DriverDetails::BUG_INTEL_BROKEN_BUFFER_STORAGE) &&
|
||||
type == GL_ELEMENT_ARRAY_BUFFER))
|
||||
return std::make_unique<BufferStorage>(type, size, coherent);
|
||||
|
||||
// don't fall back to MapAnd* for Nvidia drivers
|
||||
if (DriverDetails::HasBug(DriverDetails::BUG_BROKENUNSYNCMAPPING))
|
||||
if (DriverDetails::HasBug(DriverDetails::BUG_BROKEN_UNSYNC_MAPPING))
|
||||
return std::make_unique<BufferSubData>(type, size);
|
||||
|
||||
// mapping fallback
|
||||
|
Reference in New Issue
Block a user