Fix floating-point luminance/alpha pixel upload.

We were expecting R or RG internal formats, instead of L, A, or LA.

Change-Id: I6ee145341819460dda262b017db6d8105860f49a
Reviewed-on: https://swiftshader-review.googlesource.com/17508
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/OpenGL/common/Image.cpp b/src/OpenGL/common/Image.cpp
index 49de8d7..280486a 100644
--- a/src/OpenGL/common/Image.cpp
+++ b/src/OpenGL/common/Image.cpp
@@ -1548,12 +1548,13 @@
 			case GL_FLOAT:
 				switch(internalformat)
 				{
-				case GL_RG32F: return Transfer<Bytes>(buffer, input, rect);
-				case GL_RG16F: return Transfer<RG32FtoRG16F>(buffer, input, rect);
+				case GL_LUMINANCE_ALPHA32F_EXT: return Transfer<Bytes>(buffer, input, rect);
+				case GL_LUMINANCE_ALPHA16F_EXT: return Transfer<RG32FtoRG16F>(buffer, input, rect);
 				default: UNREACHABLE(internalformat);
 				}
 			case GL_HALF_FLOAT:
 			case GL_HALF_FLOAT_OES:
+				ASSERT_OR_RETURN(internalformat == GL_LUMINANCE_ALPHA16F_EXT);
 				return Transfer<Bytes>(buffer, input, rect);
 			default:
 				UNREACHABLE(type);
@@ -1567,12 +1568,15 @@
 			case GL_FLOAT:
 				switch(internalformat)
 				{
-				case GL_R32F: return Transfer<Bytes>(buffer, input, rect);
-				case GL_R16F: return Transfer<R32FtoR16F>(buffer, input, rect);
+				case GL_LUMINANCE32F_EXT: return Transfer<Bytes>(buffer, input, rect);
+				case GL_LUMINANCE16F_EXT: return Transfer<R32FtoR16F>(buffer, input, rect);
+				case GL_ALPHA32F_EXT:     return Transfer<Bytes>(buffer, input, rect);
+				case GL_ALPHA16F_EXT:     return Transfer<R32FtoR16F>(buffer, input, rect);
 				default: UNREACHABLE(internalformat);
 				}
 			case GL_HALF_FLOAT:
 			case GL_HALF_FLOAT_OES:
+				ASSERT_OR_RETURN(internalformat == GL_LUMINANCE16F_EXT || internalformat == GL_ALPHA16F_EXT);
 				return Transfer<Bytes>(buffer, input, rect);
 			default:
 				UNREACHABLE(type);