| Index: src/gpu/gl/GrGLGpu.cpp
|
| diff --git a/src/gpu/gl/GrGLGpu.cpp b/src/gpu/gl/GrGLGpu.cpp
|
| index a83386840e68c959efb43d57c03d80878d3d6875..fdf7eece7efb6f38b4d28e00a9cd4958bc00c887 100644
|
| --- a/src/gpu/gl/GrGLGpu.cpp
|
| +++ b/src/gpu/gl/GrGLGpu.cpp
|
| @@ -648,6 +648,27 @@ bool GrGLGpu::onWritePixels(GrSurface* surface,
|
| return false;
|
| }
|
|
|
| +// For GL_[UN]PACK_ALIGNMENT.
|
| +static inline GrGLint config_alignment(GrPixelConfig config) {
|
| + SkASSERT(!GrPixelConfigIsCompressed(config));
|
| + switch (config) {
|
| + case kAlpha_8_GrPixelConfig:
|
| + return 1;
|
| + case kRGB_565_GrPixelConfig:
|
| + case kRGBA_4444_GrPixelConfig:
|
| + case kAlpha_half_GrPixelConfig:
|
| + case kRGBA_half_GrPixelConfig:
|
| + return 2;
|
| + case kRGBA_8888_GrPixelConfig:
|
| + case kBGRA_8888_GrPixelConfig:
|
| + case kSRGBA_8888_GrPixelConfig:
|
| + case kRGBA_float_GrPixelConfig:
|
| + return 4;
|
| + default:
|
| + return 0;
|
| + }
|
| +}
|
| +
|
| static inline GrGLenum check_alloc_error(const GrSurfaceDesc& desc,
|
| const GrGLInterface* interface) {
|
| if (SkToBool(desc.fFlags & kCheckAllocation_GrSurfaceFlag)) {
|
| @@ -768,8 +789,7 @@ bool GrGLGpu::uploadTexData(const GrSurfaceDesc& desc,
|
| if (glFlipY) {
|
| GL_CALL(PixelStorei(GR_GL_UNPACK_FLIP_Y, GR_GL_TRUE));
|
| }
|
| - GL_CALL(PixelStorei(GR_GL_UNPACK_ALIGNMENT,
|
| - static_cast<GrGLint>(GrUnpackAlignment(dataConfig))));
|
| + GL_CALL(PixelStorei(GR_GL_UNPACK_ALIGNMENT, config_alignment(dataConfig)));
|
| }
|
| bool succeeded = true;
|
| if (isNewTexture &&
|
| @@ -2081,6 +2101,8 @@ bool GrGLGpu::onReadPixels(GrSurface* surface,
|
| if (flipY && this->glCaps().packFlipYSupport()) {
|
| GL_CALL(PixelStorei(GR_GL_PACK_REVERSE_ROW_ORDER, 1));
|
| }
|
| + GL_CALL(PixelStorei(GR_GL_PACK_ALIGNMENT, config_alignment(config)));
|
| +
|
| GL_CALL(ReadPixels(readRect.fLeft, readRect.fBottom,
|
| readRect.fWidth, readRect.fHeight,
|
| format, type, readDst));
|
|
|