diff options
| author | Pierre Bourdon <delroth@gmail.com> | 2016-01-20 19:32:56 +0100 |
|---|---|---|
| committer | Pierre Bourdon <delroth@gmail.com> | 2016-01-20 19:32:56 +0100 |
| commit | be1a9e423193ea686273555cd21afd4c34a554a5 (patch) | |
| tree | 0b3741c05a4f53fb34f3b9e3608aa8f24160ea70 /Source/Core/VideoBackends/OGL/Render.cpp | |
| parent | e455ca4d58a7fd398091524e8a270ba81880dfa5 (diff) | |
| parent | 3dda36bc5b8bcf999214640126c0278d146d9c87 (diff) | |
Merge pull request #3518 from Sonicadvance1/blacklist_sandy
Blacklist Sandy Bridge on mesa from using geometry shaders.
Diffstat (limited to 'Source/Core/VideoBackends/OGL/Render.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/OGL/Render.cpp | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp index 5e043ee5da..b107e95645 100644 --- a/Source/Core/VideoBackends/OGL/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Render.cpp @@ -132,8 +132,8 @@ static void InitDriverInfo() std::string sversion = std::string(g_ogl_config.gl_version); DriverDetails::Vendor vendor = DriverDetails::VENDOR_UNKNOWN; DriverDetails::Driver driver = DriverDetails::DRIVER_UNKNOWN; + DriverDetails::Family family = DriverDetails::Family::UNKNOWN; double version = 0.0; - u32 family = 0; // Get the vendor first if (svendor == "NVIDIA Corporation" && srenderer != "NVIDIA Tegra") @@ -210,11 +210,21 @@ static void InitDriverInfo() case DriverDetails::VENDOR_MESA: { if (svendor == "nouveau") + { driver = DriverDetails::DRIVER_NOUVEAU; + } else if (svendor == "Intel Open Source Technology Center") + { driver = DriverDetails::DRIVER_I965; + if (srenderer.find("Sandybridge") != std::string::npos) + family = DriverDetails::Family::INTEL_SANDY; + else if (srenderer.find("Ivybridge") != std::string::npos) + family = DriverDetails::Family::INTEL_IVY; + } else if (std::string::npos != srenderer.find("AMD") || std::string::npos != srenderer.find("ATI")) + { driver = DriverDetails::DRIVER_R600; + } int major = 0; int minor = 0; @@ -225,7 +235,22 @@ static void InitDriverInfo() break; case DriverDetails::VENDOR_INTEL: // Happens in OS X/Windows { - sscanf(g_ogl_config.gl_renderer, "Intel HD Graphics %d", &family); + u32 market_name; + sscanf(g_ogl_config.gl_renderer, "Intel HD Graphics %d", &market_name); + switch (market_name) + { + case 2000: + case 3000: + family = DriverDetails::Family::INTEL_SANDY; + break; + case 2500: + case 4000: + family = DriverDetails::Family::INTEL_IVY; + break; + default: + family = DriverDetails::Family::UNKNOWN; + break; + }; #ifdef _WIN32 int glmajor = 0; int glminor = 0; |
