Commit ce8eb945 by Nicolas Capens Committed by Nicolas Capens

Accept GL_HALF_FLOAT and GL_HALF_FLOAT_OES interchangeably.

These enums don't have the same value, but this is only because of desktop OpenGL and OpenGL ES having evolved separately. OpenGL ES 3.0 reconverged to use the enum name and value of desktop OpenGL. Apps choosing between OpenGL ES 2.0 and 3.0 strictly speaking have to use different enums, but many drivers already accept either enum so the apps don't bother to differentiate them. Running them on a driver which adheres more strictly to the (extension) specs would cause parameter validation errors. Additionally, native platform pixel formats such as HAL_PIXEL_FORMAT_RGBA_FP16 on Android couldn't be mapped to GL_RGBA16F with GL_HALF_FLOAT component types on an OpenGL ES 2.0 context if the latter are considered OpenGL ES 3.0 only. Change-Id: Ib66cba7444fe438c0e4a8a6454460773cf02236d Reviewed-on: https://swiftshader-review.googlesource.com/18728Tested-by: 's avatarNicolas Capens <nicolascapens@google.com> Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com>
parent 840f47ea
......@@ -392,6 +392,7 @@ EGLSurface Display::createPBufferSurface(EGLConfig config, const EGLint *attribL
{
case GL_UNSIGNED_BYTE:
case GL_UNSIGNED_SHORT:
case GL_HALF_FLOAT_OES:
case GL_HALF_FLOAT:
clientBufferType = attribList[1];
break;
......@@ -490,6 +491,7 @@ EGLSurface Display::createPBufferSurface(EGLConfig config, const EGLint *attribL
return error(EGL_BAD_PARAMETER, EGL_NO_SURFACE);
}
break;
case GL_HALF_FLOAT_OES:
case GL_HALF_FLOAT:
switch(clientBufferFormat)
{
......
......@@ -264,6 +264,7 @@ sw::Format Surface::getClientBufferFormat() const
break;
}
break;
case GL_HALF_FLOAT_OES:
case GL_HALF_FLOAT:
switch(clientBufferFormat)
{
......
......@@ -214,6 +214,7 @@ public:
case GL_UNSIGNED_INT: return mSize * sizeof(GLuint);
case GL_FIXED: return mSize * sizeof(GLfixed);
case GL_FLOAT: return mSize * sizeof(GLfloat);
case GL_HALF_FLOAT_OES:
case GL_HALF_FLOAT: return mSize * sizeof(GLhalf);
case GL_INT_2_10_10_10_REV: return sizeof(GLint);
case GL_UNSIGNED_INT_2_10_10_10_REV: return sizeof(GLuint);
......
......@@ -6111,6 +6111,7 @@ void VertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normal
case GL_FIXED:
case GL_FLOAT:
case GL_HALF_FLOAT_OES: // GL_OES_vertex_half_float
case GL_HALF_FLOAT:
break;
case GL_INT_2_10_10_10_REV:
case GL_UNSIGNED_INT_2_10_10_10_REV:
......@@ -6125,7 +6126,6 @@ void VertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normal
else return error(GL_INVALID_ENUM);
case GL_INT:
case GL_UNSIGNED_INT:
case GL_HALF_FLOAT:
if(clientVersion >= 3)
{
break;
......
......@@ -793,6 +793,7 @@ namespace es2
case GL_UNSIGNED_SHORT_5_6_5:
case GL_FLOAT: // GL_OES_texture_float
case GL_HALF_FLOAT_OES: // GL_OES_texture_half_float
case GL_HALF_FLOAT:
case GL_UNSIGNED_INT_24_8: // GL_OES_packed_depth_stencil (GL_UNSIGNED_INT_24_8_EXT)
case GL_UNSIGNED_SHORT: // GL_OES_depth_texture
case GL_UNSIGNED_INT: // GL_OES_depth_texture
......@@ -800,7 +801,6 @@ namespace es2
case GL_BYTE:
case GL_SHORT:
case GL_INT:
case GL_HALF_FLOAT:
case GL_UNSIGNED_INT_2_10_10_10_REV:
case GL_UNSIGNED_INT_10F_11F_11F_REV:
case GL_UNSIGNED_INT_5_9_9_9_REV:
......@@ -967,10 +967,10 @@ namespace es2
{
case GL_UNSIGNED_BYTE: VALIDATE_INTERNALFORMAT(GL_RGBA8, GL_RGB5_A1, GL_RGBA4, GL_SRGB8_ALPHA8)
case GL_BYTE: VALIDATE_INTERNALFORMAT(GL_RGBA8_SNORM)
case GL_HALF_FLOAT_OES: VALIDATE_INTERNALFORMAT(GL_RGBA16F)
case GL_UNSIGNED_SHORT_4_4_4_4: VALIDATE_INTERNALFORMAT(GL_RGBA4)
case GL_UNSIGNED_SHORT_5_5_5_1: VALIDATE_INTERNALFORMAT(GL_RGB5_A1)
case GL_UNSIGNED_INT_2_10_10_10_REV: VALIDATE_INTERNALFORMAT(GL_RGB10_A2, GL_RGB5_A1)
case GL_HALF_FLOAT_OES:
case GL_HALF_FLOAT: VALIDATE_INTERNALFORMAT(GL_RGBA16F)
case GL_FLOAT: VALIDATE_INTERNALFORMAT(GL_RGBA32F, GL_RGBA16F)
default: return GL_INVALID_OPERATION;
......@@ -994,10 +994,10 @@ namespace es2
{
case GL_UNSIGNED_BYTE: VALIDATE_INTERNALFORMAT(GL_RGB8, GL_RGB565, GL_SRGB8)
case GL_BYTE: VALIDATE_INTERNALFORMAT(GL_RGB8_SNORM)
case GL_HALF_FLOAT_OES: VALIDATE_INTERNALFORMAT(GL_RGB16F)
case GL_UNSIGNED_SHORT_5_6_5: VALIDATE_INTERNALFORMAT(GL_RGB565)
case GL_UNSIGNED_INT_10F_11F_11F_REV: VALIDATE_INTERNALFORMAT(GL_R11F_G11F_B10F)
case GL_UNSIGNED_INT_5_9_9_9_REV: VALIDATE_INTERNALFORMAT(GL_RGB9_E5)
case GL_HALF_FLOAT_OES:
case GL_HALF_FLOAT: VALIDATE_INTERNALFORMAT(GL_RGB16F, GL_R11F_G11F_B10F, GL_RGB9_E5)
case GL_FLOAT: VALIDATE_INTERNALFORMAT(GL_RGB32F, GL_RGB16F, GL_R11F_G11F_B10F, GL_RGB9_E5)
default: return GL_INVALID_OPERATION;
......@@ -1018,11 +1018,12 @@ namespace es2
case GL_RG:
switch(type)
{
case GL_UNSIGNED_BYTE: VALIDATE_INTERNALFORMAT(GL_RG8)
case GL_BYTE: VALIDATE_INTERNALFORMAT(GL_RG8_SNORM)
case GL_HALF_FLOAT: VALIDATE_INTERNALFORMAT(GL_RG16F)
case GL_FLOAT: VALIDATE_INTERNALFORMAT(GL_RG32F, GL_RG16F)
default: return GL_INVALID_OPERATION;
case GL_UNSIGNED_BYTE: VALIDATE_INTERNALFORMAT(GL_RG8)
case GL_BYTE: VALIDATE_INTERNALFORMAT(GL_RG8_SNORM)
case GL_HALF_FLOAT_OES:
case GL_HALF_FLOAT: VALIDATE_INTERNALFORMAT(GL_RG16F)
case GL_FLOAT: VALIDATE_INTERNALFORMAT(GL_RG32F, GL_RG16F)
default: return GL_INVALID_OPERATION;
}
break;
case GL_RG_INTEGER:
......@@ -1040,11 +1041,12 @@ namespace es2
case GL_RED:
switch(type)
{
case GL_UNSIGNED_BYTE: VALIDATE_INTERNALFORMAT(GL_R8)
case GL_BYTE: VALIDATE_INTERNALFORMAT(GL_R8_SNORM)
case GL_HALF_FLOAT: VALIDATE_INTERNALFORMAT(GL_R16F)
case GL_FLOAT: VALIDATE_INTERNALFORMAT(GL_R32F, GL_R16F)
default: return GL_INVALID_OPERATION;
case GL_UNSIGNED_BYTE: VALIDATE_INTERNALFORMAT(GL_R8)
case GL_BYTE: VALIDATE_INTERNALFORMAT(GL_R8_SNORM)
case GL_HALF_FLOAT_OES:
case GL_HALF_FLOAT: VALIDATE_INTERNALFORMAT(GL_R16F)
case GL_FLOAT: VALIDATE_INTERNALFORMAT(GL_R32F, GL_R16F)
default: return GL_INVALID_OPERATION;
}
break;
case GL_RED_INTEGER:
......@@ -1080,7 +1082,7 @@ namespace es2
switch(type)
{
case GL_UNSIGNED_BYTE: VALIDATE_INTERNALFORMAT(GL_LUMINANCE8_ALPHA8_EXT)
case GL_HALF_FLOAT_OES: VALIDATE_INTERNALFORMAT(GL_LUMINANCE_ALPHA16F_EXT)
case GL_HALF_FLOAT_OES:
case GL_HALF_FLOAT: VALIDATE_INTERNALFORMAT(GL_LUMINANCE_ALPHA16F_EXT)
case GL_FLOAT: VALIDATE_INTERNALFORMAT(GL_LUMINANCE_ALPHA32F_EXT, GL_LUMINANCE_ALPHA16F_EXT)
default:
......@@ -1091,7 +1093,7 @@ namespace es2
switch(type)
{
case GL_UNSIGNED_BYTE: VALIDATE_INTERNALFORMAT(GL_LUMINANCE8_EXT)
case GL_HALF_FLOAT_OES: VALIDATE_INTERNALFORMAT(GL_LUMINANCE16F_EXT)
case GL_HALF_FLOAT_OES:
case GL_HALF_FLOAT: VALIDATE_INTERNALFORMAT(GL_LUMINANCE16F_EXT)
case GL_FLOAT: VALIDATE_INTERNALFORMAT(GL_LUMINANCE32F_EXT, GL_LUMINANCE16F_EXT)
default:
......@@ -1102,7 +1104,7 @@ namespace es2
switch(type)
{
case GL_UNSIGNED_BYTE: VALIDATE_INTERNALFORMAT(GL_ALPHA8_EXT)
case GL_HALF_FLOAT_OES: VALIDATE_INTERNALFORMAT(GL_ALPHA16F_EXT)
case GL_HALF_FLOAT_OES:
case GL_HALF_FLOAT: VALIDATE_INTERNALFORMAT(GL_ALPHA16F_EXT)
case GL_FLOAT: VALIDATE_INTERNALFORMAT(GL_ALPHA32F_EXT, GL_ALPHA16F_EXT)
default:
......@@ -1141,10 +1143,10 @@ namespace es2
case GL_UNSIGNED_SHORT_4_4_4_4:
case GL_UNSIGNED_SHORT_5_5_5_1:
case GL_UNSIGNED_SHORT_5_6_5:
case GL_HALF_FLOAT_OES:
case GL_UNSIGNED_SHORT:
case GL_SHORT:
case GL_HALF_FLOAT:
case GL_HALF_FLOAT_OES:
return 2;
case GL_FLOAT:
case GL_UNSIGNED_INT_24_8:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment