mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
radeon: take ownership rather than adding reference for new renderbuffers
This avoids locking in the reference calls and fixes a leak after the
RefCount initialisation was change from 0 to 1.
Fixes: 32141e53d1 (mesa: tidy up renderbuffer RefCount initialisation)
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
This commit is contained in:
parent
1b85009ec1
commit
6c02387b2c
1 changed files with 5 additions and 5 deletions
|
|
@ -677,13 +677,13 @@ radeonCreateBuffer( __DRIscreen *driScrnPriv,
|
|||
|
||||
/* front color renderbuffer */
|
||||
rfb->color_rb[0] = radeon_create_renderbuffer(rgbFormat, driDrawPriv);
|
||||
_mesa_add_renderbuffer(&rfb->base, BUFFER_FRONT_LEFT, &rfb->color_rb[0]->base.Base);
|
||||
_mesa_add_renderbuffer_without_ref(&rfb->base, BUFFER_FRONT_LEFT, &rfb->color_rb[0]->base.Base);
|
||||
rfb->color_rb[0]->has_surface = 1;
|
||||
|
||||
/* back color renderbuffer */
|
||||
if (mesaVis->doubleBufferMode) {
|
||||
rfb->color_rb[1] = radeon_create_renderbuffer(rgbFormat, driDrawPriv);
|
||||
_mesa_add_renderbuffer(&rfb->base, BUFFER_BACK_LEFT, &rfb->color_rb[1]->base.Base);
|
||||
_mesa_add_renderbuffer_without_ref(&rfb->base, BUFFER_BACK_LEFT, &rfb->color_rb[1]->base.Base);
|
||||
rfb->color_rb[1]->has_surface = 1;
|
||||
}
|
||||
|
||||
|
|
@ -691,21 +691,21 @@ radeonCreateBuffer( __DRIscreen *driScrnPriv,
|
|||
if (mesaVis->stencilBits == 8) {
|
||||
struct radeon_renderbuffer *depthStencilRb =
|
||||
radeon_create_renderbuffer(MESA_FORMAT_Z24_UNORM_S8_UINT, driDrawPriv);
|
||||
_mesa_add_renderbuffer(&rfb->base, BUFFER_DEPTH, &depthStencilRb->base.Base);
|
||||
_mesa_add_renderbuffer_without_ref(&rfb->base, BUFFER_DEPTH, &depthStencilRb->base.Base);
|
||||
_mesa_add_renderbuffer(&rfb->base, BUFFER_STENCIL, &depthStencilRb->base.Base);
|
||||
depthStencilRb->has_surface = screen->depthHasSurface;
|
||||
} else {
|
||||
/* depth renderbuffer */
|
||||
struct radeon_renderbuffer *depth =
|
||||
radeon_create_renderbuffer(MESA_FORMAT_Z24_UNORM_X8_UINT, driDrawPriv);
|
||||
_mesa_add_renderbuffer(&rfb->base, BUFFER_DEPTH, &depth->base.Base);
|
||||
_mesa_add_renderbuffer_without_ref(&rfb->base, BUFFER_DEPTH, &depth->base.Base);
|
||||
depth->has_surface = screen->depthHasSurface;
|
||||
}
|
||||
} else if (mesaVis->depthBits == 16) {
|
||||
/* just 16-bit depth buffer, no hw stencil */
|
||||
struct radeon_renderbuffer *depth =
|
||||
radeon_create_renderbuffer(MESA_FORMAT_Z_UNORM16, driDrawPriv);
|
||||
_mesa_add_renderbuffer(&rfb->base, BUFFER_DEPTH, &depth->base.Base);
|
||||
_mesa_add_renderbuffer_without_ref(&rfb->base, BUFFER_DEPTH, &depth->base.Base);
|
||||
depth->has_surface = screen->depthHasSurface;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue