diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/main/context.c | 3 | ||||
-rw-r--r-- | src/mesa/main/fbobject.c | 8 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index 73d96e8d212..66e4183101c 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -1300,6 +1300,9 @@ check_compatible(const GLcontext *ctx, const GLframebuffer *buffer) if (ctxvis == bufvis) return GL_TRUE; + if (buffer == _mesa_get_incomplete_framebuffer()) + return GL_TRUE; + #if 0 /* disabling this fixes the fgl_glxgears pbuffer demo */ if (ctxvis->doubleBufferMode && !bufvis->doubleBufferMode) diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index 72cbb09ab83..5201f502527 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -71,6 +71,10 @@ static struct gl_framebuffer DummyFramebuffer; static struct gl_renderbuffer DummyRenderbuffer; +/* We bind this framebuffer when applications pass a NULL + * drawable/surface in make current. */ +static struct gl_framebuffer IncompleteFramebuffer; + #define IS_CUBE_FACE(TARGET) \ ((TARGET) >= GL_TEXTURE_CUBE_MAP_POSITIVE_X && \ @@ -95,14 +99,16 @@ _mesa_init_fbobjects(GLcontext *ctx) { _glthread_INIT_MUTEX(DummyFramebuffer.Mutex); _glthread_INIT_MUTEX(DummyRenderbuffer.Mutex); + _glthread_INIT_MUTEX(IncompleteFramebuffer.Mutex); DummyFramebuffer.Delete = delete_dummy_framebuffer; DummyRenderbuffer.Delete = delete_dummy_renderbuffer; + IncompleteFramebuffer.Delete = delete_dummy_framebuffer; } struct gl_framebuffer * _mesa_get_incomplete_framebuffer(void) { - return &DummyFramebuffer; + return &IncompleteFramebuffer; } /** |