[Mesa-dev] [PATCH 1/2] mesa: enable EXT_framebuffer_object in core profile
Timothy Arceri
tarceri at itsqueeze.com
Sat Sep 8 04:20:17 UTC 2018
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.
---
src/mapi/glapi/gen/EXT_framebuffer_object.xml | 4 +--
src/mesa/main/extensions_table.h | 2 +-
src/mesa/main/fbobject.c | 30 ++++++++-----------
src/mesa/main/tests/dispatch_sanity.cpp | 4 +--
4 files changed, 17 insertions(+), 23 deletions(-)
diff --git a/src/mapi/glapi/gen/EXT_framebuffer_object.xml b/src/mapi/glapi/gen/EXT_framebuffer_object.xml
index 310e8ee9569..6c0e54af1c9 100644
--- a/src/mapi/glapi/gen/EXT_framebuffer_object.xml
+++ b/src/mapi/glapi/gen/EXT_framebuffer_object.xml
@@ -75,7 +75,7 @@
<return type="GLboolean"/>
</function>
- <function name="BindRenderbufferEXT" deprecated="3.1">
+ <function name="BindRenderbufferEXT">
<param name="target" type="GLenum"/>
<param name="renderbuffer" type="GLuint"/>
<glx rop="4316"/>
@@ -109,7 +109,7 @@
<return type="GLboolean"/>
</function>
- <function name="BindFramebufferEXT" deprecated="3.1">
+ <function name="BindFramebufferEXT">
<param name="target" type="GLenum"/>
<param name="framebuffer" type="GLuint"/>
<glx rop="4319"/>
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 edb86438e39..6dda4b5e523 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;
}
@@ -1460,17 +1461,13 @@ _mesa_BindRenderbuffer(GLenum target, GLuint renderbuffer)
/* 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);
}
/**
@@ -2797,7 +2794,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;
@@ -2828,9 +2825,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;
}
@@ -2924,18 +2922,14 @@ _mesa_BindFramebuffer(GLenum target, GLuint framebuffer)
/* 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 },
--
2.17.1
More information about the mesa-dev
mailing list