From 1c6f53c9027b6fbac27f58a1d510e2052f98149a Mon Sep 17 00:00:00 2001 From: Nicolas Capens Date: Thu, 31 Dec 2015 11:30:40 -0500 Subject: [PATCH] Fix format/type conversion for readPixels. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Change-Id: I5d9d8247fc847e987cbe7d62f7e8641ac4225f50 Reviewed-on: https://swiftshader-review.googlesource.com/4448 Tested-by: Nicolas Capens Reviewed-by: Alexis Hétu Reviewed-by: Nicolas Capens --- src/OpenGL/common/Image.cpp | 3 +-- src/OpenGL/common/Image.hpp | 2 +- src/OpenGL/libGLESv2/Context.cpp | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/OpenGL/common/Image.cpp b/src/OpenGL/common/Image.cpp index 85ebe9a3e..2b4d97eaa 100644 --- a/src/OpenGL/common/Image.cpp +++ b/src/OpenGL/common/Image.cpp @@ -1058,8 +1058,7 @@ namespace egl return (rawPitch + alignment - 1) & ~(alignment - 1); } - - GLsizei ComputeCompressedPitch(GLsizei width, GLenum format) + inline GLsizei ComputeCompressedPitch(GLsizei width, GLenum format) { return ComputeCompressedSize(width, 1, format); } diff --git a/src/OpenGL/common/Image.hpp b/src/OpenGL/common/Image.hpp index a82dc1c36..1b4d34952 100644 --- a/src/OpenGL/common/Image.hpp +++ b/src/OpenGL/common/Image.hpp @@ -26,9 +26,9 @@ namespace egl { +sw::Format ConvertFormatType(GLenum format, GLenum type); sw::Format SelectInternalFormat(GLenum format, GLenum type); GLsizei ComputePitch(GLsizei width, GLenum format, GLenum type, GLint alignment); -GLsizei ComputeCompressedPitch(GLsizei width, GLenum format); GLsizei ComputeCompressedSize(GLsizei width, GLsizei height, GLenum format); static inline sw::Resource *getParentResource(egl::Texture *texture) diff --git a/src/OpenGL/libGLESv2/Context.cpp b/src/OpenGL/libGLESv2/Context.cpp index af3bae371..a364b81a4 100644 --- a/src/OpenGL/libGLESv2/Context.cpp +++ b/src/OpenGL/libGLESv2/Context.cpp @@ -3303,7 +3303,7 @@ void Context::readPixels(GLint x, GLint y, GLsizei width, GLsizei height, sw::Rect dstRect = { 0, 0, width, height }; rect.clip(0, 0, renderTarget->getWidth(), renderTarget->getHeight()); - sw::Surface externalSurface(width, height, 1, egl::SelectInternalFormat(format, type), pixels, outputPitch, outputPitch * outputHeight); + sw::Surface externalSurface(width, height, 1, egl::ConvertFormatType(format, type), pixels, outputPitch, outputPitch * outputHeight); sw::SliceRect sliceRect(rect); sw::SliceRect dstSliceRect(dstRect); device->blit(renderTarget, sliceRect, &externalSurface, dstSliceRect, false); -- 2.11.0