Don't use tessellation FB barrier after NVIDIA 440.00
This bug has already been fixed on newer drivers.
Bug: skia:9739
Change-Id: I8407d4198bc0610dd9a239969d1cf69942494c96
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/268639
Reviewed-by: Mark Kilgard US <mjk@nvidia.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp
index 71e3365..62f6378 100644
--- a/src/gpu/gl/GrGLCaps.cpp
+++ b/src/gpu/gl/GrGLCaps.cpp
@@ -3755,14 +3755,21 @@
fDriverBlacklistMSAACCPR = true;
}
- if (shaderCaps->fTessellationSupport && kNVIDIA_GrGLDriver == ctxInfo.driver()) {
+ // http://skbug.com/9739
+ bool isNVIDIAPascal =
+ kNVIDIA_GrGLDriver == ctxInfo.driver() &&
+ ctxInfo.hasExtension("GL_NV_conservative_raster_pre_snap_triangles") && // Pascal+.
+ !ctxInfo.hasExtension("GL_NV_conservative_raster_underestimation"); // Volta+.
+ if (isNVIDIAPascal && ctxInfo.driverVersion() < GR_GL_DRIVER_VER(440, 00, 0)) {
if (GR_IS_GR_GL(ctxInfo.standard())) {
+ // glMemoryBarrier wasn't around until version 4.2.
if (ctxInfo.version() >= GR_GL_VER(4,2)) {
fRequiresManualFBBarrierAfterTessellatedStencilDraw = true;
} else {
shaderCaps->fTessellationSupport = false;
}
} else {
+ // glMemoryBarrier wasn't around until es version 3.1.
if (ctxInfo.version() >= GR_GL_VER(3,1)) {
fRequiresManualFBBarrierAfterTessellatedStencilDraw = true;
} else {