diff options
author | Timothy Arceri <[email protected]> | 2018-09-08 14:20:17 +1000 |
---|---|---|
committer | Timothy Arceri <[email protected]> | 2018-09-18 19:58:24 +1000 |
commit | b54a2311a904161f31bd529ec1c816d51fac2095 (patch) | |
tree | a44b69f2f14e2e9054b17917dbba7749f53e95aa /src/mesa/main | |
parent | 02843ed76868c7e6268a028bb18ea5e48b72e291 (diff) |
mesa: enable EXT_framebuffer_object in core profile
Since user defined names are not allowed in core profile
we remove the allow_user_names bool and just check if
we have a core profile like all other buffer/texture
object handling code does.
This extension is required by "Wolfenstein: The Old Blood"
and is exposed in core in the Nvidia binary driver.
Reviewed-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src/mesa/main')
-rw-r--r-- | src/mesa/main/extensions_table.h | 2 | ||||
-rw-r--r-- | src/mesa/main/fbobject.c | 34 | ||||
-rw-r--r-- | src/mesa/main/tests/dispatch_sanity.cpp | 4 |
3 files changed, 15 insertions, 25 deletions
diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h index 486d76a0580..09bf923bd0e 100644 --- a/src/mesa/main/extensions_table.h +++ b/src/mesa/main/extensions_table.h @@ -230,7 +230,7 @@ EXT(EXT_frag_depth , dummy_true EXT(EXT_framebuffer_blit , dummy_true , GLL, GLC, x , x , 2005) EXT(EXT_framebuffer_multisample , EXT_framebuffer_multisample , GLL, GLC, x , x , 2005) EXT(EXT_framebuffer_multisample_blit_scaled , EXT_framebuffer_multisample_blit_scaled, GLL, GLC, x , x , 2011) -EXT(EXT_framebuffer_object , dummy_true , GLL, x , x , x , 2000) +EXT(EXT_framebuffer_object , dummy_true , GLL, GLC, x , x , 2000) EXT(EXT_framebuffer_sRGB , EXT_framebuffer_sRGB , GLL, GLC, x , x , 1998) EXT(EXT_geometry_point_size , OES_geometry_shader , x , x , x , 31, 2015) EXT(EXT_geometry_shader , OES_geometry_shader , x , x , x , 31, 2015) diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index 3263fce845e..c3dded6b928 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -1410,7 +1410,7 @@ allocate_renderbuffer_locked(struct gl_context *ctx, GLuint renderbuffer, static void -bind_renderbuffer(GLenum target, GLuint renderbuffer, bool allow_user_names) +bind_renderbuffer(GLenum target, GLuint renderbuffer) { struct gl_renderbuffer *newRb; GET_CURRENT_CONTEXT(ctx); @@ -1430,9 +1430,10 @@ bind_renderbuffer(GLenum target, GLuint renderbuffer, bool allow_user_names) /* ID was reserved, but no real renderbuffer object made yet */ newRb = NULL; } - else if (!newRb && !allow_user_names) { + else if (!newRb && ctx->API == API_OPENGL_CORE) { /* All RB IDs must be Gen'd */ - _mesa_error(ctx, GL_INVALID_OPERATION, "glBindRenderbuffer(buffer)"); + _mesa_error(ctx, GL_INVALID_OPERATION, + "glBindRenderbuffer(non-gen name)"); return; } @@ -1455,22 +1456,16 @@ bind_renderbuffer(GLenum target, GLuint renderbuffer, bool allow_user_names) void GLAPIENTRY _mesa_BindRenderbuffer(GLenum target, GLuint renderbuffer) { - GET_CURRENT_CONTEXT(ctx); - /* OpenGL ES glBindRenderbuffer and glBindRenderbufferOES use this same * entry point, but they allow the use of user-generated names. */ - bind_renderbuffer(target, renderbuffer, _mesa_is_gles(ctx)); + bind_renderbuffer(target, renderbuffer); } void GLAPIENTRY _mesa_BindRenderbufferEXT(GLenum target, GLuint renderbuffer) { - /* This function should not be in the dispatch table for core profile / - * OpenGL 3.1, so execution should never get here in those cases -- no - * need for an explicit test. - */ - bind_renderbuffer(target, renderbuffer, true); + bind_renderbuffer(target, renderbuffer); } /** @@ -2798,7 +2793,7 @@ check_end_texture_render(struct gl_context *ctx, struct gl_framebuffer *fb) static void -bind_framebuffer(GLenum target, GLuint framebuffer, bool allow_user_names) +bind_framebuffer(GLenum target, GLuint framebuffer) { struct gl_framebuffer *newDrawFb, *newReadFb; GLboolean bindReadBuf, bindDrawBuf; @@ -2829,9 +2824,10 @@ bind_framebuffer(GLenum target, GLuint framebuffer, bool allow_user_names) /* ID was reserved, but no real framebuffer object made yet */ newDrawFb = NULL; } - else if (!newDrawFb && !allow_user_names) { + else if (!newDrawFb && ctx->API == API_OPENGL_CORE) { /* All FBO IDs must be Gen'd */ - _mesa_error(ctx, GL_INVALID_OPERATION, "glBindFramebuffer(buffer)"); + _mesa_error(ctx, GL_INVALID_OPERATION, + "glBindFramebuffer(non-gen name)"); return; } @@ -2920,23 +2916,17 @@ _mesa_bind_framebuffers(struct gl_context *ctx, void GLAPIENTRY _mesa_BindFramebuffer(GLenum target, GLuint framebuffer) { - GET_CURRENT_CONTEXT(ctx); - /* OpenGL ES glBindFramebuffer and glBindFramebufferOES use this same entry * point, but they allow the use of user-generated names. */ - bind_framebuffer(target, framebuffer, _mesa_is_gles(ctx)); + bind_framebuffer(target, framebuffer); } void GLAPIENTRY _mesa_BindFramebufferEXT(GLenum target, GLuint framebuffer) { - /* This function should not be in the dispatch table for core profile / - * OpenGL 3.1, so execution should never get here in those cases -- no - * need for an explicit test. - */ - bind_framebuffer(target, framebuffer, true); + bind_framebuffer(target, framebuffer); } diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp index 63c687c46fc..fb2acfbdeea 100644 --- a/src/mesa/main/tests/dispatch_sanity.cpp +++ b/src/mesa/main/tests/dispatch_sanity.cpp @@ -224,6 +224,8 @@ TEST_F(DispatchSanity_test, GLES31) } const struct function common_desktop_functions_possible[] = { + { "glBindRenderbufferEXT", 10, -1 }, + { "glBindFramebufferEXT", 10, -1 }, { "glCullFace", 10, -1 }, { "glFrontFace", 10, -1 }, { "glHint", 10, -1 }, @@ -1200,8 +1202,6 @@ const struct function common_desktop_functions_possible[] = { }; const struct function gl_compatibility_functions_possible[] = { - { "glBindRenderbufferEXT", 10, -1 }, - { "glBindFramebufferEXT", 10, -1 }, { "glNewList", 10, _gloffset_NewList }, { "glEndList", 10, _gloffset_EndList }, { "glCallList", 10, _gloffset_CallList }, |