mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-02-21 14:41:39 +00:00
Mali driver bug workaround for driver 32+.
See #15661 Hope this small bias won't break things.
This commit is contained in:
parent
3dd2bd0589
commit
1fd80646cb
@ -825,6 +825,14 @@ VKContext::VKContext(VulkanContext *vulkan, bool splitSubmit)
|
||||
bugs_.Infest(Bugs::EQUAL_WZ_CORRUPTS_DEPTH);
|
||||
// At least one driver at the upper end of the range is known to be likely to suffer from the bug causing issue #13833 (Midnight Club map broken).
|
||||
bugs_.Infest(Bugs::MALI_STENCIL_DISCARD_BUG);
|
||||
|
||||
// This started in driver 31 or 32.
|
||||
if (VK_API_VERSION_MAJOR(deviceProps.driverVersion) >= 32) {
|
||||
NOTICE_LOG(G3D, "Driver version %08x infested: major=%d", deviceProps.driverVersion, VK_API_VERSION_MAJOR(deviceProps.driverVersion));
|
||||
bugs_.Infest(Bugs::MALI_CONSTANT_LOAD_BUG); // See issue #15661
|
||||
} else {
|
||||
NOTICE_LOG(G3D, "Driver version %08x not infested: major=%d", deviceProps.driverVersion, VK_API_VERSION_MAJOR(deviceProps.driverVersion));
|
||||
}
|
||||
}
|
||||
|
||||
caps_.deviceID = deviceProps.deviceID;
|
||||
|
@ -630,6 +630,7 @@ const char *Bugs::GetBugName(uint32_t bug) {
|
||||
case EQUAL_WZ_CORRUPTS_DEPTH: return "EQUAL_WZ_CORRUPTS_DEPTH";
|
||||
case MALI_STENCIL_DISCARD_BUG: return "MALI_STENCIL_DISCARD_BUG";
|
||||
case RASPBERRY_SHADER_COMP_HANG: return "RASPBERRY_SHADER_COMP_HANG";
|
||||
case MALI_CONSTANT_LOAD_BUG: return "MALI_CONSTANT_LOAD_BUG";
|
||||
default: return "(N/A)";
|
||||
}
|
||||
}
|
||||
|
@ -324,6 +324,7 @@ public:
|
||||
EQUAL_WZ_CORRUPTS_DEPTH = 7,
|
||||
MALI_STENCIL_DISCARD_BUG = 8,
|
||||
RASPBERRY_SHADER_COMP_HANG = 9,
|
||||
MALI_CONSTANT_LOAD_BUG = 10,
|
||||
MAX_BUG,
|
||||
};
|
||||
|
||||
|
@ -1052,6 +1052,9 @@ bool GenerateVertexShader(const VShaderID &id, char *buffer, const ShaderLanguag
|
||||
WRITE(p, " %sv_color0 = color0;\n", compat.vsOutPrefix);
|
||||
} else {
|
||||
WRITE(p, " %sv_color0 = u_matambientalpha;\n", compat.vsOutPrefix);
|
||||
if (bugs.Has(Draw::Bugs::MALI_CONSTANT_LOAD_BUG) && g_Config.bVendorBugChecksEnabled) {
|
||||
WRITE(p, " %sv_color0.r += 0.000001;\n", compat.vsOutPrefix);
|
||||
}
|
||||
}
|
||||
if (lmode)
|
||||
WRITE(p, " %sv_color1 = splat3(0.0);\n", compat.vsOutPrefix);
|
||||
|
Loading…
x
Reference in New Issue
Block a user