ccpr: Blacklist Bay Trail and Sandybridge on Mesa

Bug: skia:8162
Change-Id: I16d8b9a93151c9e568b5c27e6ad6c3cf5b717fe1
Reviewed-on: https://skia-review.googlesource.com/142940
Reviewed-by: Ben Wagner <benjaminwagner@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
This commit is contained in:
Chris Dalton 2018-07-23 12:17:10 -06:00 committed by Skia Commit-Bot
parent 7d31e46a35
commit b70beea0a6
3 changed files with 34 additions and 25 deletions

View File

@ -2674,11 +2674,11 @@ void GrGLCaps::applyDriverCorrectnessWorkarounds(const GrGLContextInfo& ctxInfo,
fBlacklistCoverageCounting = true;
}
// CCPR edge AA is busted on Sandy Bridge.
// CCPR edge AA is busted on Mesa, Sandy Bridge/Bay Trail.
// http://skbug.com/8162
if (kIntelSandyBridge_GrGLRenderer == ctxInfo.renderer() ||
(kANGLE_GrGLRenderer == ctxInfo.renderer() &&
GrGLANGLERenderer::kSandyBridge == ctxInfo.angleRenderer())) {
if (kMesa_GrGLDriver == ctxInfo.driver() &&
(kIntelSandyBridge_GrGLRenderer == ctxInfo.renderer() ||
kIntelBayTrail_GrGLRenderer == ctxInfo.renderer())) {
fBlacklistCoverageCounting = true;
}
}

View File

@ -367,31 +367,39 @@ GrGLRenderer GrGLGetRendererFromStrings(const char* rendererString,
if (0 == strcmp("Google SwiftShader", rendererString)) {
return kGoogleSwiftShader_GrGLRenderer;
}
if (0 == strcmp("Intel Iris Pro OpenGL Engine", rendererString)) {
return kIntelIrisPro_GrGLRenderer;
}
int intelNumber;
if (sscanf(rendererString, "Intel(R) Iris(TM) Graphics %d", &intelNumber) ||
sscanf(rendererString, "Intel(R) Iris(TM) Pro Graphics %d", &intelNumber) ||
sscanf(rendererString, "Intel(R) Iris(TM) Pro Graphics P%d", &intelNumber) ||
sscanf(rendererString, "Intel(R) Iris(R) Graphics %d", &intelNumber) ||
sscanf(rendererString, "Intel(R) Iris(R) Pro Graphics %d", &intelNumber) ||
sscanf(rendererString, "Intel(R) Iris(R) Pro Graphics P%d", &intelNumber) ||
sscanf(rendererString, "Intel(R) HD Graphics %d", &intelNumber) ||
sscanf(rendererString, "Intel(R) HD Graphics P%d", &intelNumber)) {
if (intelNumber >= 4000 && intelNumber < 5000) {
return kIntel4xxx_GrGLRenderer;
if (const char* intelString = strstr(rendererString, "Intel")) {
if (0 == strcmp("Intel Iris Pro OpenGL Engine", intelString)) {
return kIntelIrisPro_GrGLRenderer;
}
if (intelNumber >= 6000 && intelNumber < 7000) {
return kIntel6xxx_GrGLRenderer;
}
if (intelNumber >= 2000 && intelNumber < 4000) {
if (strstr(intelString, "Sandybridge")) {
return kIntelSandyBridge_GrGLRenderer;
}
if (intelNumber >= 500 && intelNumber < 600) {
return kIntelSkylake_GrGLRenderer;
if (strstr(intelString, "Bay Trail")) {
return kIntelBayTrail_GrGLRenderer;
}
int intelNumber;
if (sscanf(intelString, "Intel(R) Iris(TM) Graphics %d", &intelNumber) ||
sscanf(intelString, "Intel(R) Iris(TM) Pro Graphics %d", &intelNumber) ||
sscanf(intelString, "Intel(R) Iris(TM) Pro Graphics P%d", &intelNumber) ||
sscanf(intelString, "Intel(R) Iris(R) Graphics %d", &intelNumber) ||
sscanf(intelString, "Intel(R) Iris(R) Pro Graphics %d", &intelNumber) ||
sscanf(intelString, "Intel(R) Iris(R) Pro Graphics P%d", &intelNumber) ||
sscanf(intelString, "Intel(R) HD Graphics %d", &intelNumber) ||
sscanf(intelString, "Intel(R) HD Graphics P%d", &intelNumber)) {
if (intelNumber >= 4000 && intelNumber < 5000) {
return kIntel4xxx_GrGLRenderer;
}
if (intelNumber >= 6000 && intelNumber < 7000) {
return kIntel6xxx_GrGLRenderer;
}
if (intelNumber >= 2000 && intelNumber < 4000) {
return kIntelSandyBridge_GrGLRenderer;
}
if (intelNumber >= 500 && intelNumber < 600) {
return kIntelSkylake_GrGLRenderer;
}
}
}

View File

@ -65,6 +65,7 @@ enum GrGLRenderer {
/** Either HD 6xxx or Iris 6xxx */
kIntel6xxx_GrGLRenderer,
kIntelSandyBridge_GrGLRenderer,
kIntelBayTrail_GrGLRenderer,
kIntelSkylake_GrGLRenderer,
kGalliumLLVM_GrGLRenderer,
kMali4xx_GrGLRenderer,