diff options
Diffstat (limited to 'mesalib/src/mesa/main/get.c')
-rw-r--r-- | mesalib/src/mesa/main/get.c | 49 |
1 files changed, 43 insertions, 6 deletions
diff --git a/mesalib/src/mesa/main/get.c b/mesalib/src/mesa/main/get.c index 273a79f7f..7d922ca15 100644 --- a/mesalib/src/mesa/main/get.c +++ b/mesalib/src/mesa/main/get.c @@ -131,6 +131,7 @@ enum value_extra { EXTRA_API_GL, EXTRA_API_GL_CORE, EXTRA_API_ES2, + EXTRA_API_ES3, EXTRA_NEW_BUFFERS, EXTRA_NEW_FRAG_CLAMP, EXTRA_VALID_DRAW_BUFFER, @@ -290,14 +291,30 @@ static const int extra_texture_buffer_object[] = { EXTRA_END }; +static const int extra_ARB_transform_feedback2_api_es3[] = { + EXT(ARB_transform_feedback2), + EXTRA_API_ES3, + EXTRA_END +}; + static const int extra_ARB_uniform_buffer_object_and_geometry_shader[] = { EXT(ARB_uniform_buffer_object), EXT(ARB_geometry_shader4), EXTRA_END }; +static const int extra_ARB_ES2_compatibility_api_es2[] = { + EXT(ARB_ES2_compatibility), + EXTRA_API_ES2, + EXTRA_END +}; + +static const int extra_ARB_ES3_compatibility_api_es3[] = { + EXT(ARB_ES3_compatibility), + EXTRA_API_ES3, + EXTRA_END +}; -EXTRA_EXT(ARB_ES2_compatibility); EXTRA_EXT(ARB_texture_cube_map); EXTRA_EXT(MESA_texture_array); EXTRA_EXT2(EXT_secondary_color, ARB_vertex_program); @@ -322,7 +339,6 @@ EXTRA_EXT(ARB_seamless_cube_map); EXTRA_EXT(ARB_sync); EXTRA_EXT(ARB_vertex_shader); EXTRA_EXT(EXT_transform_feedback); -EXTRA_EXT(ARB_transform_feedback2); EXTRA_EXT(ARB_transform_feedback3); EXTRA_EXT(EXT_pixel_buffer_object); EXTRA_EXT(ARB_vertex_program); @@ -348,6 +364,12 @@ static const int extra_version_30[] = { EXTRA_VERSION_30, EXTRA_END }; static const int extra_version_31[] = { EXTRA_VERSION_31, EXTRA_END }; static const int extra_version_32[] = { EXTRA_VERSION_32, EXTRA_END }; +static const int extra_gl30_es3[] = { + EXTRA_VERSION_30, + EXTRA_API_ES3, + EXTRA_END, +}; + static const int extra_ARB_vertex_program_api_es2[] = { EXT(ARB_vertex_program), @@ -874,6 +896,12 @@ check_extra(struct gl_context *ctx, const char *func, const struct value_desc *d enabled++; } break; + case EXTRA_API_ES3: + if (_mesa_is_gles3(ctx)) { + total++; + enabled++; + } + break; case EXTRA_API_GL: if (_mesa_is_desktop_gl(ctx)) { total++; @@ -973,6 +1001,15 @@ find_value(const char *func, GLenum pname, void **p, union value *v) int api; api = ctx->API; + /* We index into the table_set[] list of per-API hash tables using the API's + * value in the gl_api enum. Since GLES 3 doesn't have an API_OPENGL* enum + * value since it's compatible with GLES2 its entry in table_set[] is at the + * end. + */ + STATIC_ASSERT(Elements(table_set) == API_OPENGL_LAST + 2); + if (_mesa_is_gles3(ctx)) { + api = API_OPENGL_LAST + 1; + } mask = Elements(table(api)) - 1; hash = (pname * prime_factor); while (1) { @@ -1626,7 +1663,7 @@ _mesa_GetBooleani_v( GLenum pname, GLuint index, GLboolean *params ) { union value v; enum value_type type = - find_value_indexed("glGetBooleanIndexedv", pname, index, &v); + find_value_indexed("glGetBooleani_v", pname, index, &v); switch (type) { case TYPE_INT: @@ -1651,7 +1688,7 @@ _mesa_GetIntegeri_v( GLenum pname, GLuint index, GLint *params ) { union value v; enum value_type type = - find_value_indexed("glGetIntegerIndexedv", pname, index, &v); + find_value_indexed("glGetIntegeri_v", pname, index, &v); switch (type) { case TYPE_INT: @@ -1672,11 +1709,11 @@ _mesa_GetIntegeri_v( GLenum pname, GLuint index, GLint *params ) } void GLAPIENTRY -_mesa_GetInteger64Indexedv( GLenum pname, GLuint index, GLint64 *params ) +_mesa_GetInteger64i_v( GLenum pname, GLuint index, GLint64 *params ) { union value v; enum value_type type = - find_value_indexed("glGetIntegerIndexedv", pname, index, &v); + find_value_indexed("glGetInteger64i_v", pname, index, &v); switch (type) { case TYPE_INT: |