mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-02 12:18:09 +02:00
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 <marek.olsak@amd.com>
This commit is contained in:
parent
02843ed768
commit
b54a2311a9
4 changed files with 17 additions and 27 deletions
|
|
@ -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"/>
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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 },
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue