summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/OGL/Render.cpp
diff options
context:
space:
mode:
authorRyan Houdek <Sonicadvance1@gmail.com>2016-01-15 12:13:14 -0600
committerRyan Houdek <Sonicadvance1@gmail.com>2016-01-20 12:13:21 -0600
commit3dda36bc5b8bcf999214640126c0278d146d9c87 (patch)
treeff933007e690363f52e3c2b4292f71bc2abde009 /Source/Core/VideoBackends/OGL/Render.cpp
parent87464d432b8dbef6311ee827d592cdce84fe7b67 (diff)
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.cpp29
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;