OSDN Git Service

Implement GL_OES_vertex_half_float.
authorNicolas Capens <capn@google.com>
Thu, 3 Aug 2017 16:53:47 +0000 (12:53 -0400)
committerNicolas Capens <nicolascapens@google.com>
Thu, 3 Aug 2017 17:10:25 +0000 (17:10 +0000)
This enables using half-float vertex data for OpenGL ES 2.0.
Note that GL_HALF_FLOAT_OES does not have the same value as
GL_HALF_FLOAT.

Change-Id: I0a7a55b7904fe797cdbb86627c8d0a1cc07d2d0a
Reviewed-on: https://swiftshader-review.googlesource.com/1500
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
src/OpenGL/libGLESv2/Context.cpp
src/OpenGL/libGLESv2/VertexDataManager.cpp
src/OpenGL/libGLESv2/libGLESv2.cpp

index aa68523..3cd11af 100644 (file)
@@ -4314,6 +4314,7 @@ const GLubyte *Context::getExtensions(GLuint index, GLuint *numExt) const
                "GL_OES_texture_half_float_linear",
                "GL_OES_texture_npot",
                "GL_OES_texture_3D",
+               "GL_OES_vertex_half_float",
                "GL_EXT_blend_minmax",
                "GL_EXT_color_buffer_half_float",
                "GL_EXT_draw_buffers",
index 2fff628..59062f7 100644 (file)
@@ -193,6 +193,7 @@ GLenum VertexDataManager::prepareVertexData(GLint start, GLsizei count, Translat
                                case GL_FIXED:          translated[i].type = sw::STREAMTYPE_FIXED;  break;
                                case GL_FLOAT:          translated[i].type = sw::STREAMTYPE_FLOAT;  break;
                                case GL_HALF_FLOAT:     translated[i].type = sw::STREAMTYPE_HALF;   break;
+                               case GL_HALF_FLOAT_OES: translated[i].type = sw::STREAMTYPE_HALF;   break;
                                case GL_INT_2_10_10_10_REV:          translated[i].type = sw::STREAMTYPE_2_10_10_10_INT;  break;
                                case GL_UNSIGNED_INT_2_10_10_10_REV: translated[i].type = sw::STREAMTYPE_2_10_10_10_UINT; break;
                                default: UNREACHABLE(attrib.mType); translated[i].type = sw::STREAMTYPE_FLOAT;  break;
index 3b687fb..f486982 100644 (file)
@@ -6146,6 +6146,7 @@ void VertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normal
        case GL_UNSIGNED_SHORT:
        case GL_FIXED:
        case GL_FLOAT:
+       case GL_HALF_FLOAT_OES:   // GL_OES_vertex_half_float
                break;
        case GL_INT_2_10_10_10_REV:
        case GL_UNSIGNED_INT_2_10_10_10_REV: