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);