From: Kevin Strasser Date: Mon, 10 Oct 2016 21:29:58 +0000 (-0700) Subject: mesa/extensions: expose OES_vertex_half_float for ES2 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1d6fe13c138efb836a28052b16260a258d113827;p=mesa.git mesa/extensions: expose OES_vertex_half_float for ES2 Half float support already exists for desktop GL. Reuse the ARB_half_float_vertex enable bit and account for the different enum to enable the extension for ES2. Signed-off-by: Kevin Strasser Reviewed-by: Kenneth Graunke --- diff --git a/src/mesa/drivers/dri/i965/brw_draw_upload.c b/src/mesa/drivers/dri/i965/brw_draw_upload.c index ab2fc505c79..b138cb7ef62 100644 --- a/src/mesa/drivers/dri/i965/brw_draw_upload.c +++ b/src/mesa/drivers/dri/i965/brw_draw_upload.c @@ -290,6 +290,7 @@ brw_get_vertex_surface_type(struct brw_context *brw, case GL_DOUBLE: return double_types(brw, size, glarray->Doubles); case GL_FLOAT: return float_types[size]; case GL_HALF_FLOAT: + case GL_HALF_FLOAT_OES: if (brw->gen < 6 && size == 3) return half_float_types[4]; else @@ -368,6 +369,7 @@ brw_get_vertex_surface_type(struct brw_context *brw, case GL_DOUBLE: return double_types(brw, size, glarray->Doubles); case GL_FLOAT: return float_types[size]; case GL_HALF_FLOAT: + case GL_HALF_FLOAT_OES: if (brw->gen < 6 && size == 3) return half_float_types[4]; else diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h index 2dbd7da6c90..036e62b23e5 100644 --- a/src/mesa/main/extensions_table.h +++ b/src/mesa/main/extensions_table.h @@ -392,6 +392,7 @@ EXT(OES_texture_npot , ARB_texture_non_power_of_two EXT(OES_texture_stencil8 , ARB_texture_stencil8 , x , x , x , 30, 2014) EXT(OES_texture_storage_multisample_2d_array, ARB_texture_multisample , x , x , x , 31, 2014) EXT(OES_vertex_array_object , dummy_true , x , x , ES1, ES2, 2010) +EXT(OES_vertex_half_float , ARB_half_float_vertex , x , x , x , ES2, 2005) EXT(OES_viewport_array , OES_viewport_array , x , x , x , 31, 2010) EXT(S3_s3tc , ANGLE_texture_compression_dxt , GLL, GLC, x , x , 1999) diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c index 85d00af487f..a95909c9bc9 100644 --- a/src/mesa/main/glformats.c +++ b/src/mesa/main/glformats.c @@ -546,6 +546,7 @@ _mesa_bytes_per_vertex_attrib(GLint comps, GLenum type) case GL_FLOAT: return comps * sizeof(GLfloat); case GL_HALF_FLOAT_ARB: + case GL_HALF_FLOAT_OES: return comps * sizeof(GLhalfARB); case GL_DOUBLE: return comps * sizeof(GLdouble); diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c index 656cb3479c7..c4283551882 100644 --- a/src/mesa/main/varray.c +++ b/src/mesa/main/varray.c @@ -102,6 +102,7 @@ type_to_bit(const struct gl_context *ctx, GLenum type) case GL_UNSIGNED_INT: return UNSIGNED_INT_BIT; case GL_HALF_FLOAT: + case GL_HALF_FLOAT_OES: if (ctx->Extensions.ARB_half_float_vertex) return HALF_BIT; else @@ -236,8 +237,10 @@ get_legal_types_mask(const struct gl_context *ctx) legalTypesMask &= ~(UNSIGNED_INT_BIT | INT_BIT | UNSIGNED_INT_2_10_10_10_REV_BIT | - INT_2_10_10_10_REV_BIT | - HALF_BIT); + INT_2_10_10_10_REV_BIT); + + if (!_mesa_has_OES_vertex_half_float(ctx)) + legalTypesMask &= ~HALF_BIT; } } else { diff --git a/src/mesa/state_tracker/st_atom_array.c b/src/mesa/state_tracker/st_atom_array.c index 5ab10de83a2..221b2c7db3f 100644 --- a/src/mesa/state_tracker/st_atom_array.c +++ b/src/mesa/state_tracker/st_atom_array.c @@ -212,6 +212,7 @@ st_pipe_vertex_format(GLenum type, GLuint size, GLenum format, { assert((type >= GL_BYTE && type <= GL_DOUBLE) || type == GL_FIXED || type == GL_HALF_FLOAT || + type == GL_HALF_FLOAT_OES || type == GL_INT_2_10_10_10_REV || type == GL_UNSIGNED_INT_2_10_10_10_REV || type == GL_UNSIGNED_INT_10F_11F_11F_REV); @@ -281,7 +282,8 @@ st_pipe_vertex_format(GLenum type, GLuint size, GLenum format, switch (type) { case GL_DOUBLE: return double_types[size-1]; case GL_FLOAT: return float_types[size-1]; - case GL_HALF_FLOAT: return half_float_types[size-1]; + case GL_HALF_FLOAT: + case GL_HALF_FLOAT_OES: return half_float_types[size-1]; case GL_INT: return int_types_norm[size-1]; case GL_SHORT: return short_types_norm[size-1]; case GL_BYTE: return byte_types_norm[size-1]; @@ -296,7 +298,8 @@ st_pipe_vertex_format(GLenum type, GLuint size, GLenum format, switch (type) { case GL_DOUBLE: return double_types[size-1]; case GL_FLOAT: return float_types[size-1]; - case GL_HALF_FLOAT: return half_float_types[size-1]; + case GL_HALF_FLOAT: + case GL_HALF_FLOAT_OES: return half_float_types[size-1]; case GL_INT: return int_types_scale[size-1]; case GL_SHORT: return short_types_scale[size-1]; case GL_BYTE: return byte_types_scale[size-1];