mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 10:18:05 +02:00
gallium: clean-up in st_renderbuffer_alloc_storage()
This commit is contained in:
parent
42a9218daa
commit
2b2d0e0584
1 changed files with 16 additions and 11 deletions
|
|
@ -80,6 +80,8 @@ init_renderbuffer_bits(struct st_renderbuffer *strb,
|
|||
|
||||
/**
|
||||
* gl_renderbuffer::AllocStorage()
|
||||
* This is called to allocate the original drawing surface, and
|
||||
* during window resize.
|
||||
*/
|
||||
static GLboolean
|
||||
st_renderbuffer_alloc_storage(GLcontext * ctx, struct gl_renderbuffer *rb,
|
||||
|
|
@ -90,8 +92,10 @@ st_renderbuffer_alloc_storage(GLcontext * ctx, struct gl_renderbuffer *rb,
|
|||
struct st_renderbuffer *strb = st_renderbuffer(rb);
|
||||
enum pipe_format pipeFormat;
|
||||
GLbitfield flags = 0x0; /* XXX needed? */
|
||||
int ret;
|
||||
|
||||
if (!strb->surface) {
|
||||
/* first time surface creation */
|
||||
strb->surface = pipe->winsys->surface_alloc(pipe->winsys);
|
||||
assert(strb->surface);
|
||||
assert(strb->surface->refcount);
|
||||
|
|
@ -99,10 +103,10 @@ st_renderbuffer_alloc_storage(GLcontext * ctx, struct gl_renderbuffer *rb,
|
|||
if (!strb->surface)
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
if (strb->surface->buffer)
|
||||
pipe_buffer_reference(pipe->winsys, &strb->surface->buffer,
|
||||
NULL);
|
||||
else if (strb->surface->buffer) {
|
||||
/* release/discard the old surface buffer */
|
||||
pipe_buffer_reference(pipe->winsys, &strb->surface->buffer, NULL);
|
||||
}
|
||||
|
||||
/* Determine surface format here */
|
||||
if (strb->format != PIPE_FORMAT_NONE) {
|
||||
|
|
@ -116,14 +120,15 @@ st_renderbuffer_alloc_storage(GLcontext * ctx, struct gl_renderbuffer *rb,
|
|||
|
||||
init_renderbuffer_bits(strb, pipeFormat);
|
||||
|
||||
pipe->winsys->surface_alloc_storage(pipe->winsys,
|
||||
strb->surface,
|
||||
width,
|
||||
height,
|
||||
pipeFormat,
|
||||
flags);
|
||||
if (!strb->surface->buffer)
|
||||
ret = pipe->winsys->surface_alloc_storage(pipe->winsys,
|
||||
strb->surface,
|
||||
width,
|
||||
height,
|
||||
pipeFormat,
|
||||
flags);
|
||||
if (ret || !strb->surface->buffer) {
|
||||
return GL_FALSE; /* out of memory, try s/w buffer? */
|
||||
}
|
||||
|
||||
ASSERT(strb->surface->buffer);
|
||||
ASSERT(strb->surface->format);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue