mesa: Don't reuse DummyFramebuffer as the incomplete framebuffer
Binding framebuffer 0 on a context that doesn't have a winsys drawable will try to bind the incomplete framebuffer. That fails when that's also the dummy framebuffer.
This commit is contained in:
@@ -1300,6 +1300,9 @@ check_compatible(const GLcontext *ctx, const GLframebuffer *buffer)
|
|||||||
if (ctxvis == bufvis)
|
if (ctxvis == bufvis)
|
||||||
return GL_TRUE;
|
return GL_TRUE;
|
||||||
|
|
||||||
|
if (buffer == _mesa_get_incomplete_framebuffer())
|
||||||
|
return GL_TRUE;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
/* disabling this fixes the fgl_glxgears pbuffer demo */
|
/* disabling this fixes the fgl_glxgears pbuffer demo */
|
||||||
if (ctxvis->doubleBufferMode && !bufvis->doubleBufferMode)
|
if (ctxvis->doubleBufferMode && !bufvis->doubleBufferMode)
|
||||||
|
@@ -71,6 +71,10 @@
|
|||||||
static struct gl_framebuffer DummyFramebuffer;
|
static struct gl_framebuffer DummyFramebuffer;
|
||||||
static struct gl_renderbuffer DummyRenderbuffer;
|
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) \
|
#define IS_CUBE_FACE(TARGET) \
|
||||||
((TARGET) >= GL_TEXTURE_CUBE_MAP_POSITIVE_X && \
|
((TARGET) >= GL_TEXTURE_CUBE_MAP_POSITIVE_X && \
|
||||||
@@ -95,14 +99,16 @@ _mesa_init_fbobjects(GLcontext *ctx)
|
|||||||
{
|
{
|
||||||
_glthread_INIT_MUTEX(DummyFramebuffer.Mutex);
|
_glthread_INIT_MUTEX(DummyFramebuffer.Mutex);
|
||||||
_glthread_INIT_MUTEX(DummyRenderbuffer.Mutex);
|
_glthread_INIT_MUTEX(DummyRenderbuffer.Mutex);
|
||||||
|
_glthread_INIT_MUTEX(IncompleteFramebuffer.Mutex);
|
||||||
DummyFramebuffer.Delete = delete_dummy_framebuffer;
|
DummyFramebuffer.Delete = delete_dummy_framebuffer;
|
||||||
DummyRenderbuffer.Delete = delete_dummy_renderbuffer;
|
DummyRenderbuffer.Delete = delete_dummy_renderbuffer;
|
||||||
|
IncompleteFramebuffer.Delete = delete_dummy_framebuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct gl_framebuffer *
|
struct gl_framebuffer *
|
||||||
_mesa_get_incomplete_framebuffer(void)
|
_mesa_get_incomplete_framebuffer(void)
|
||||||
{
|
{
|
||||||
return &DummyFramebuffer;
|
return &IncompleteFramebuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user