Index: src/gpu/gl/GrGLGpu.cpp |
diff --git a/src/gpu/gl/GrGLGpu.cpp b/src/gpu/gl/GrGLGpu.cpp |
index 86c4cc3bbc0e3314cf006d6114cbcc3fd9d8482d..f9cba433c742e29b03951d773a009d2dda0e5a06 100644 |
--- a/src/gpu/gl/GrGLGpu.cpp |
+++ b/src/gpu/gl/GrGLGpu.cpp |
@@ -2603,6 +2603,12 @@ bool GrGLGpu::onGetReadPixelsInfo(GrSurface* srcSurface, int width, int height, |
SkASSERT(tempDrawInfo->fTempSurfaceDesc.fConfig == srcConfig); |
SkASSERT(tempDrawInfo->fReadConfig == kAlpha_8_GrPixelConfig); |
} |
+ } else if (this->caps()->isConfigRenderable(readConfig, false) && |
+ this->readPixelsSupported(readConfig, readConfig)) { |
+ // Do a draw to convert from the src config to the read config. |
+ ElevateDrawPreference(drawPreference, kRequireDraw_DrawPreference); |
+ tempDrawInfo->fTempSurfaceDesc.fConfig = readConfig; |
+ tempDrawInfo->fReadConfig = readConfig; |
} else { |
return false; |
} |