mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-26 09:41:11 +00:00
Support OS specific bugs in our DriverDetails.
This commit is contained in:
parent
2cbefa2905
commit
faf8792351
@ -11,8 +11,9 @@ namespace DriverDetails
|
|||||||
{
|
{
|
||||||
struct BugInfo
|
struct BugInfo
|
||||||
{
|
{
|
||||||
Vendor m_vendor; // which vendor has the error
|
u32 m_os; // Which OS has the issue
|
||||||
Driver m_driver; // which driver has the error
|
Vendor m_vendor; // Which vendor has the error
|
||||||
|
Driver m_driver; // Which driver has the error
|
||||||
Bug m_bug; // Which bug it is
|
Bug m_bug; // Which bug it is
|
||||||
double m_versionstart; // When it started
|
double m_versionstart; // When it started
|
||||||
double m_versionend; // When it ended
|
double m_versionend; // When it ended
|
||||||
@ -20,6 +21,16 @@ namespace DriverDetails
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Local members
|
// Local members
|
||||||
|
#ifdef _WIN32
|
||||||
|
const u32 m_os = OS_ALL | OS_WINDOWS;
|
||||||
|
#elif ANDROID
|
||||||
|
const u32 m_os = OS_ALL | OS_ANDROID;
|
||||||
|
#elif __APPLE__
|
||||||
|
const u32 m_os = OS_ALL | OS_OSX;
|
||||||
|
#elif __linux__
|
||||||
|
const u32 m_os = OS_ALL | OS_LINUX;
|
||||||
|
#endif
|
||||||
|
|
||||||
Vendor m_vendor = VENDOR_UNKNOWN;
|
Vendor m_vendor = VENDOR_UNKNOWN;
|
||||||
Driver m_driver = DRIVER_UNKNOWN;
|
Driver m_driver = DRIVER_UNKNOWN;
|
||||||
double m_version = 0.0;
|
double m_version = 0.0;
|
||||||
@ -27,18 +38,18 @@ namespace DriverDetails
|
|||||||
// This is a list of all known bugs for each vendor
|
// This is a list of all known bugs for each vendor
|
||||||
// We use this to check if the device and driver has a issue
|
// We use this to check if the device and driver has a issue
|
||||||
BugInfo m_known_bugs[] = {
|
BugInfo m_known_bugs[] = {
|
||||||
{VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, BUG_NODYNUBOACCESS, 14.0, 46.0, true},
|
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, BUG_NODYNUBOACCESS, 14.0, 46.0, true},
|
||||||
{VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, BUG_BROKENCENTROID, 14.0, -1.0, true},
|
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, BUG_BROKENCENTROID, 14.0, -1.0, true},
|
||||||
{VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, BUG_BROKENINFOLOG, -1.0, -1.0, true},
|
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, BUG_BROKENINFOLOG, -1.0, -1.0, true},
|
||||||
{VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, BUG_ANNIHILATEDUBOS, 41.0, 46.0, true},
|
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, BUG_ANNIHILATEDUBOS, 41.0, 46.0, true},
|
||||||
{VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, BUG_BROKENSWAP, -1.0, -1.0, true},
|
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, BUG_BROKENSWAP, -1.0, -1.0, true},
|
||||||
{VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, BUG_BROKENBUFFERSTREAM, -1.0, -1.0, true},
|
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, BUG_BROKENBUFFERSTREAM, -1.0, -1.0, true},
|
||||||
{VENDOR_ARM, DRIVER_ARM_T6XX, BUG_BROKENBUFFERSTREAM, -1.0, -1.0, true},
|
{OS_ALL, VENDOR_ARM, DRIVER_ARM_T6XX, BUG_BROKENBUFFERSTREAM, -1.0, -1.0, true},
|
||||||
{VENDOR_MESA, DRIVER_NOUVEAU, BUG_BROKENUBO, 900, 916, true},
|
{OS_ALL, VENDOR_MESA, DRIVER_NOUVEAU, BUG_BROKENUBO, 900, 916, true},
|
||||||
{VENDOR_MESA, DRIVER_R600, BUG_BROKENUBO, 900, 913, true},
|
{OS_ALL, VENDOR_MESA, DRIVER_R600, BUG_BROKENUBO, 900, 913, true},
|
||||||
{VENDOR_MESA, DRIVER_I965, BUG_BROKENUBO, 900, 920, true},
|
{OS_ALL, VENDOR_MESA, DRIVER_I965, BUG_BROKENUBO, 900, 920, true},
|
||||||
{VENDOR_ATI, DRIVER_ATI, BUG_BROKENHACKEDBUFFER, -1.0, -1.0, true},
|
{OS_ALL, VENDOR_ATI, DRIVER_ATI, BUG_BROKENHACKEDBUFFER, -1.0, -1.0, true},
|
||||||
{VENDOR_MESA, DRIVER_NOUVEAU, BUG_BROKENHACKEDBUFFER, -1.0, -1.0, true},
|
{OS_ALL, VENDOR_MESA, DRIVER_NOUVEAU, BUG_BROKENHACKEDBUFFER, -1.0, -1.0, true},
|
||||||
};
|
};
|
||||||
|
|
||||||
std::map<Bug, BugInfo> m_bugs;
|
std::map<Bug, BugInfo> m_bugs;
|
||||||
@ -75,6 +86,7 @@ namespace DriverDetails
|
|||||||
for(auto& bug : m_known_bugs)
|
for(auto& bug : m_known_bugs)
|
||||||
{
|
{
|
||||||
if(
|
if(
|
||||||
|
( bug.m_vendor & m_vendor ) &&
|
||||||
( bug.m_vendor == m_vendor || bug.m_vendor == VENDOR_ALL ) &&
|
( bug.m_vendor == m_vendor || bug.m_vendor == VENDOR_ALL ) &&
|
||||||
( bug.m_driver == m_driver || bug.m_driver == DRIVER_ALL ) &&
|
( bug.m_driver == m_driver || bug.m_driver == DRIVER_ALL ) &&
|
||||||
( bug.m_versionstart <= m_version || bug.m_versionstart == -1 ) &&
|
( bug.m_versionstart <= m_version || bug.m_versionstart == -1 ) &&
|
||||||
|
@ -6,6 +6,15 @@
|
|||||||
|
|
||||||
namespace DriverDetails
|
namespace DriverDetails
|
||||||
{
|
{
|
||||||
|
// Enum of supported operating systems
|
||||||
|
enum OS
|
||||||
|
{
|
||||||
|
OS_ALL = (1 << 0),
|
||||||
|
OS_WINDOWS = (1 << 1),
|
||||||
|
OS_LINUX = (1 << 2),
|
||||||
|
OS_OSX = (1 << 3),
|
||||||
|
OS_ANDROID = (1 << 4),
|
||||||
|
};
|
||||||
// Enum of known vendors
|
// Enum of known vendors
|
||||||
// Tegra and Nvidia are separated out due to such substantial differences
|
// Tegra and Nvidia are separated out due to such substantial differences
|
||||||
enum Vendor
|
enum Vendor
|
||||||
|
Loading…
x
Reference in New Issue
Block a user