mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 06:48:06 +02:00
mesa: update assertions and fix refcounting in depth/stencil renderbuffer code
This commit is contained in:
parent
4beea12f17
commit
f2bfc2b7d2
1 changed files with 16 additions and 6 deletions
|
|
@ -62,8 +62,8 @@ nop_get_pointer(GLcontext *ctx, struct gl_renderbuffer *rb, GLint x, GLint y)
|
||||||
static void
|
static void
|
||||||
delete_wrapper(struct gl_renderbuffer *rb)
|
delete_wrapper(struct gl_renderbuffer *rb)
|
||||||
{
|
{
|
||||||
ASSERT(rb->Format == MESA_FORMAT_Z24_S8 ||
|
ASSERT(rb->Format == MESA_FORMAT_S8 ||
|
||||||
rb->Format == MESA_FORMAT_S8_Z24);
|
rb->Format == MESA_FORMAT_X8_Z24);
|
||||||
_mesa_reference_renderbuffer(&rb->Wrapped, NULL);
|
_mesa_reference_renderbuffer(&rb->Wrapped, NULL);
|
||||||
free(rb);
|
free(rb);
|
||||||
}
|
}
|
||||||
|
|
@ -83,7 +83,9 @@ alloc_wrapper_storage(GLcontext *ctx, struct gl_renderbuffer *rb,
|
||||||
(void) internalFormat;
|
(void) internalFormat;
|
||||||
|
|
||||||
ASSERT(dsrb->Format == MESA_FORMAT_Z24_S8 ||
|
ASSERT(dsrb->Format == MESA_FORMAT_Z24_S8 ||
|
||||||
dsrb->Format == MESA_FORMAT_S8_Z24);
|
dsrb->Format == MESA_FORMAT_Z24_X8 ||
|
||||||
|
dsrb->Format == MESA_FORMAT_S8_Z24 ||
|
||||||
|
dsrb->Format == MESA_FORMAT_X8_Z24);
|
||||||
|
|
||||||
retVal = dsrb->AllocStorage(ctx, dsrb, dsrb->InternalFormat, width, height);
|
retVal = dsrb->AllocStorage(ctx, dsrb, dsrb->InternalFormat, width, height);
|
||||||
if (retVal) {
|
if (retVal) {
|
||||||
|
|
@ -352,16 +354,21 @@ _mesa_new_z24_renderbuffer_wrapper(GLcontext *ctx,
|
||||||
struct gl_renderbuffer *z24rb;
|
struct gl_renderbuffer *z24rb;
|
||||||
|
|
||||||
ASSERT(dsrb->Format == MESA_FORMAT_Z24_S8 ||
|
ASSERT(dsrb->Format == MESA_FORMAT_Z24_S8 ||
|
||||||
dsrb->Format == MESA_FORMAT_S8_Z24);
|
dsrb->Format == MESA_FORMAT_Z24_X8 ||
|
||||||
|
dsrb->Format == MESA_FORMAT_S8_Z24 ||
|
||||||
|
dsrb->Format == MESA_FORMAT_X8_Z24);
|
||||||
ASSERT(dsrb->DataType == GL_UNSIGNED_INT_24_8_EXT);
|
ASSERT(dsrb->DataType == GL_UNSIGNED_INT_24_8_EXT);
|
||||||
|
|
||||||
z24rb = _mesa_new_renderbuffer(ctx, 0);
|
z24rb = _mesa_new_renderbuffer(ctx, 0);
|
||||||
if (!z24rb)
|
if (!z24rb)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
/* NOTE: need to do manual refcounting here */
|
||||||
z24rb->Wrapped = dsrb;
|
z24rb->Wrapped = dsrb;
|
||||||
|
dsrb->RefCount++;
|
||||||
|
|
||||||
z24rb->Name = dsrb->Name;
|
z24rb->Name = dsrb->Name;
|
||||||
z24rb->RefCount = 1;
|
z24rb->RefCount = 0;
|
||||||
z24rb->Width = dsrb->Width;
|
z24rb->Width = dsrb->Width;
|
||||||
z24rb->Height = dsrb->Height;
|
z24rb->Height = dsrb->Height;
|
||||||
z24rb->InternalFormat = GL_DEPTH_COMPONENT24;
|
z24rb->InternalFormat = GL_DEPTH_COMPONENT24;
|
||||||
|
|
@ -642,9 +649,12 @@ _mesa_new_s8_renderbuffer_wrapper(GLcontext *ctx, struct gl_renderbuffer *dsrb)
|
||||||
if (!s8rb)
|
if (!s8rb)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
/* NOTE: need to do manual refcounting here */
|
||||||
s8rb->Wrapped = dsrb;
|
s8rb->Wrapped = dsrb;
|
||||||
|
dsrb->RefCount++;
|
||||||
|
|
||||||
s8rb->Name = dsrb->Name;
|
s8rb->Name = dsrb->Name;
|
||||||
s8rb->RefCount = 1;
|
s8rb->RefCount = 0;
|
||||||
s8rb->Width = dsrb->Width;
|
s8rb->Width = dsrb->Width;
|
||||||
s8rb->Height = dsrb->Height;
|
s8rb->Height = dsrb->Height;
|
||||||
s8rb->InternalFormat = GL_STENCIL_INDEX8_EXT;
|
s8rb->InternalFormat = GL_STENCIL_INDEX8_EXT;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue