From: Eric Anholt <[email protected]> v2: Use API_OPENGL_CORE.
v3: Only require desktop GL. If a driver can't support TexBOs in a non-core context, it should not enable them. Signed-off-by: Eric Anholt <[email protected]> Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> --- src/mesa/main/get.c | 16 +++++++++++----- src/mesa/main/teximage.c | 12 +++++++----- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index 3f7d223..cd2f683 100644 --- a/src/mesa/main/get.c +++ b/src/mesa/main/get.c @@ -284,6 +284,12 @@ static const int extra_GLSL_130[] = { EXTRA_END }; +static const int extra_texture_buffer_object[] = { + EXTRA_VERSION_31, + EXT(ARB_texture_buffer_object), + EXTRA_END +}; + static const int extra_ARB_uniform_buffer_object_and_geometry_shader[] = { EXT(ARB_uniform_buffer_object), EXT(ARB_geometry_shader4), @@ -1287,15 +1293,15 @@ static const struct value_desc values[] = { /* GL_ARB_texture_buffer_object */ { GL_MAX_TEXTURE_BUFFER_SIZE_ARB, CONTEXT_INT(Const.MaxTextureBufferSize), - extra_ARB_texture_buffer_object }, + extra_texture_buffer_object }, { GL_TEXTURE_BINDING_BUFFER_ARB, LOC_CUSTOM, TYPE_INT, 0, - extra_ARB_texture_buffer_object }, + extra_texture_buffer_object }, { GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB, LOC_CUSTOM, TYPE_INT, - TEXTURE_BUFFER_INDEX, extra_ARB_texture_buffer_object }, + TEXTURE_BUFFER_INDEX, extra_texture_buffer_object }, { GL_TEXTURE_BUFFER_FORMAT_ARB, LOC_CUSTOM, TYPE_INT, 0, - extra_ARB_texture_buffer_object }, + extra_texture_buffer_object }, { GL_TEXTURE_BUFFER_ARB, LOC_CUSTOM, TYPE_INT, 0, - extra_ARB_texture_buffer_object }, + extra_texture_buffer_object }, /* GL_ARB_sampler_objects / GL 3.3 */ { GL_SAMPLER_BINDING, diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 8ec48eb..2595717 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -754,7 +754,8 @@ _mesa_select_tex_object(struct gl_context *ctx, case GL_PROXY_TEXTURE_2D_ARRAY_EXT: return arrayTex ? ctx->Texture.ProxyTex[TEXTURE_2D_ARRAY_INDEX] : NULL; case GL_TEXTURE_BUFFER: - return ctx->Extensions.ARB_texture_buffer_object + return _mesa_is_desktop_gl(ctx) + && ctx->Extensions.ARB_texture_buffer_object ? texUnit->CurrentTex[TEXTURE_BUFFER_INDEX] : NULL; case GL_TEXTURE_EXTERNAL_OES: return ctx->Extensions.OES_EGL_image_external @@ -947,9 +948,9 @@ _mesa_max_texture_levels(struct gl_context *ctx, GLenum target) ctx->Extensions.EXT_texture_array) ? ctx->Const.MaxTextureLevels : 0; case GL_TEXTURE_BUFFER: - return _mesa_is_desktop_gl(ctx) && - (ctx->Extensions.ARB_texture_buffer_object || - (ctx->Version >= 31)) ? 1 : 0; + return _mesa_is_desktop_gl(ctx) + && ctx->Extensions.ARB_texture_buffer_object + ? 1 : 0; case GL_TEXTURE_EXTERNAL_OES: /* fall-through */ default: @@ -3974,7 +3975,8 @@ _mesa_TexBuffer(GLenum target, GLenum internalFormat, GLuint buffer) GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - if (!ctx->Extensions.ARB_texture_buffer_object) { + if (!(ctx->Extensions.ARB_texture_buffer_object + && _mesa_is_desktop_gl(ctx))) { _mesa_error(ctx, GL_INVALID_OPERATION, "glTexBuffer"); return; } -- 1.7.6.5 _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
