mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-24 14:49:42 -06:00
Merge pull request #11028 from tellowkrinkle/MetalFixes
Various Metal renderer improvements
This commit is contained in:
@ -132,10 +132,14 @@ constexpr BugInfo m_known_bugs[] = {
|
||||
-1.0, -1.0, true},
|
||||
{API_VULKAN, OS_ALL, VENDOR_ARM, DRIVER_ARM, Family::UNKNOWN, BUG_BROKEN_VECTOR_BITWISE_AND,
|
||||
-1.0, -1.0, true},
|
||||
{API_VULKAN, OS_OSX, VENDOR_ATI, DRIVER_PORTABILITY, Family::UNKNOWN,
|
||||
BUG_BROKEN_SUBGROUP_INVOCATION_ID, -1.0, -1.0, true},
|
||||
{API_METAL, OS_OSX, VENDOR_ATI, DRIVER_APPLE, Family::UNKNOWN,
|
||||
BUG_BROKEN_SUBGROUP_INVOCATION_ID, -1.0, -1.0, true},
|
||||
{API_VULKAN, OS_OSX, VENDOR_ATI, DRIVER_PORTABILITY, Family::UNKNOWN, BUG_BROKEN_SUBGROUP_OPS,
|
||||
-1.0, -1.0, true},
|
||||
{API_VULKAN, OS_OSX, VENDOR_INTEL, DRIVER_PORTABILITY, Family::UNKNOWN, BUG_BROKEN_SUBGROUP_OPS,
|
||||
-1.0, -1.0, true},
|
||||
{API_METAL, OS_OSX, VENDOR_ATI, DRIVER_APPLE, Family::UNKNOWN, BUG_BROKEN_SUBGROUP_OPS, -1.0,
|
||||
-1.0, true},
|
||||
{API_METAL, OS_OSX, VENDOR_INTEL, DRIVER_APPLE, Family::UNKNOWN, BUG_BROKEN_SUBGROUP_OPS, -1.0,
|
||||
-1.0, true},
|
||||
{API_OPENGL, OS_ANDROID, VENDOR_ALL, DRIVER_ALL, Family::UNKNOWN,
|
||||
BUG_BROKEN_MULTITHREADED_SHADER_PRECOMPILATION, -1.0, -1.0, true},
|
||||
{API_VULKAN, OS_ANDROID, VENDOR_ALL, DRIVER_ALL, Family::UNKNOWN,
|
||||
|
@ -306,10 +306,15 @@ enum Bug
|
||||
BUG_BROKEN_VECTOR_BITWISE_AND,
|
||||
|
||||
// BUG: Accessing gl_SubgroupInvocationID causes the Metal shader compiler to crash.
|
||||
// Affected devices: AMD (macOS)
|
||||
// Affected devices: AMD (older macOS)
|
||||
// BUG: gl_HelperInvocation always returns true, even for non-helper invocations
|
||||
// Affected devices: AMD (newer macOS)
|
||||
// BUG: Using subgroupMax in a shader that can discard results in garbage data
|
||||
// (For some reason, this only happens at 4x+ IR on Metal, but 2x+ IR on MoltenVK)
|
||||
// Affected devices: Intel (macOS)
|
||||
// Started version: -1
|
||||
// Ended version: -1
|
||||
BUG_BROKEN_SUBGROUP_INVOCATION_ID,
|
||||
BUG_BROKEN_SUBGROUP_OPS,
|
||||
|
||||
// BUG: Multi-threaded shader pre-compilation sometimes crashes
|
||||
// Used primarily in Videoconfig.cpp's GetNumAutoShaderPreCompilerThreads()
|
||||
|
@ -55,6 +55,8 @@ void VideoConfig::Refresh()
|
||||
|
||||
bVSync = Config::Get(Config::GFX_VSYNC);
|
||||
iAdapter = Config::Get(Config::GFX_ADAPTER);
|
||||
iManuallyUploadBuffers = Config::Get(Config::GFX_MTL_MANUALLY_UPLOAD_BUFFERS);
|
||||
bUsePresentDrawable = Config::Get(Config::GFX_MTL_USE_PRESENT_DRAWABLE);
|
||||
|
||||
bWidescreenHack = Config::Get(Config::GFX_WIDESCREEN_HACK);
|
||||
aspect_mode = Config::Get(Config::GFX_ASPECT_RATIO);
|
||||
|
@ -45,6 +45,13 @@ enum class ShaderCompilationMode : int
|
||||
AsynchronousSkipRendering
|
||||
};
|
||||
|
||||
enum class TriState : int
|
||||
{
|
||||
Off,
|
||||
On,
|
||||
Auto
|
||||
};
|
||||
|
||||
// NEVER inherit from this class.
|
||||
struct VideoConfig final
|
||||
{
|
||||
@ -149,6 +156,10 @@ struct VideoConfig final
|
||||
// D3D only config, mostly to be merged into the above
|
||||
int iAdapter = 0;
|
||||
|
||||
// Metal only config
|
||||
TriState iManuallyUploadBuffers = TriState::Auto;
|
||||
bool bUsePresentDrawable = false;
|
||||
|
||||
// Enable API validation layers, currently only supported with Vulkan.
|
||||
bool bEnableValidationLayer = false;
|
||||
|
||||
|
Reference in New Issue
Block a user