Index: src/gpu/gl/GrGLCaps.cpp |
diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp |
index 8474873ffff5d937f5edc2084e67e0bc5002ac17..a5053774220bf97b7e98e30181f0f32c505c5a53 100644 |
--- a/src/gpu/gl/GrGLCaps.cpp |
+++ b/src/gpu/gl/GrGLCaps.cpp |
@@ -234,8 +234,19 @@ bool GrGLCaps::init(const GrGLContextInfo& ctxInfo, const GrGLInterface* gli) { |
if (kGLES_GrGLStandard == standard) { |
if (ctxInfo.hasExtension("GL_EXT_shader_framebuffer_fetch")) { |
fFBFetchType = kEXT_FBFetchType; |
+ fFBFetchColorName = "gl_LastFragData[0]"; |
+ fFBFetchExtensionString = "GL_EXT_shader_framebuffer_fetch"; |
} else if (ctxInfo.hasExtension("GL_NV_shader_framebuffer_fetch")) { |
fFBFetchType = kNV_FBFetchType; |
+ fFBFetchColorName = "gl_LastFragData[0]"; |
+ fFBFetchExtensionString = "GL_NV_shader_framebuffer_fetch"; |
+ } else if (ctxInfo.hasExtension("GL_ARM_shader_framebuffer_fetch")) { |
+ // The arm extension requires specifically enabling MSAA fetching per sample. |
+ // On some devices this may have a perf hit. Also multiple render targets are disabled |
+ GR_GL_CALL(gli, Enable(GR_GL_FETCH_PER_SAMPLE_ARM)); |
+ fFBFetchType = kARM_FBFetchType; |
+ fFBFetchColorName = "gl_LastFragColorARM"; |
+ fFBFetchExtensionString = "GL_ARM_shader_framebuffer_fetch"; |
} |
} |
@@ -779,10 +790,12 @@ SkString GrGLCaps::dump() const { |
"None", |
"EXT", |
"NV", |
+ "ARM", |
}; |
GR_STATIC_ASSERT(0 == kNone_FBFetchType); |
GR_STATIC_ASSERT(1 == kEXT_FBFetchType); |
GR_STATIC_ASSERT(2 == kNV_FBFetchType); |
+ GR_STATIC_ASSERT(3 == kARM_FBFetchType); |
GR_STATIC_ASSERT(SK_ARRAY_COUNT(kFBFetchTypeStr) == kLast_FBFetchType + 1); |
static const char* kInvalidateFBTypeStr[] = { |