Fix format/type conversion for readPixels.

Change-Id: I5d9d8247fc847e987cbe7d62f7e8641ac4225f50
Reviewed-on: https://swiftshader-review.googlesource.com/4448
Tested-by: Nicolas Capens <capn@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/OpenGL/common/Image.cpp b/src/OpenGL/common/Image.cpp
index 85ebe9a..2b4d97e 100644
--- a/src/OpenGL/common/Image.cpp
+++ b/src/OpenGL/common/Image.cpp
@@ -1058,8 +1058,7 @@
 		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 a82dc1c..1b4d349 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 af3bae3..a364b81 100644
--- a/src/OpenGL/libGLESv2/Context.cpp
+++ b/src/OpenGL/libGLESv2/Context.cpp
@@ -3303,7 +3303,7 @@
 	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);