From: Lauri Kasanen Date: Tue, 24 Jan 2012 19:37:07 +0000 (+0200) Subject: gallium/postprocess: Fix depth logic X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c5976017e31828dd67fb54e8c11b863fffcac70b;p=mesa.git gallium/postprocess: Fix depth logic This prevents a possible lapse of the depth buffer - the situation where the app and pp have different depth buffers. NOTE: This is a candidate for the 8.0 stable branch. Signed-off-by: Lauri Kasanen --- diff --git a/src/gallium/auxiliary/postprocess/postprocess.h b/src/gallium/auxiliary/postprocess/postprocess.h index ef94f79997a..dfa15f713ac 100644 --- a/src/gallium/auxiliary/postprocess/postprocess.h +++ b/src/gallium/auxiliary/postprocess/postprocess.h @@ -72,8 +72,7 @@ void pp_free(struct pp_queue_t *); void pp_free_fbos(struct pp_queue_t *); void pp_debug(const char *, ...); struct program *pp_init_prog(struct pp_queue_t *, struct pipe_screen *); -void pp_init_fbos(struct pp_queue_t *, unsigned int, unsigned int, - struct pipe_resource *); +void pp_init_fbos(struct pp_queue_t *, unsigned int, unsigned int); /* The filters */ diff --git a/src/gallium/auxiliary/postprocess/pp_init.c b/src/gallium/auxiliary/postprocess/pp_init.c index 740d230a1e8..e2068c25e5b 100644 --- a/src/gallium/auxiliary/postprocess/pp_init.c +++ b/src/gallium/auxiliary/postprocess/pp_init.c @@ -135,7 +135,6 @@ pp_free_fbos(struct pp_queue_t *ppq) pipe_surface_reference(&ppq->inner_tmps[i], NULL); pipe_resource_reference(&ppq->inner_tmp[i], NULL); } - pipe_resource_reference(&ppq->depth, NULL); pipe_surface_reference(&ppq->stencils, NULL); pipe_resource_reference(&ppq->stencil, NULL); @@ -196,7 +195,7 @@ pp_debug(const char *fmt, ...) /** Allocate the temp FBOs. Called on makecurrent and resize. */ void pp_init_fbos(struct pp_queue_t *ppq, unsigned int w, - unsigned int h, struct pipe_resource *indepth) + unsigned int h) { struct program *p = ppq->p; /* The lazy will inherit the earth */ @@ -243,11 +242,7 @@ pp_init_fbos(struct pp_queue_t *ppq, unsigned int w, goto error; } - tmp_res.format = p->surf.format = indepth->format; tmp_res.bind = p->surf.usage = PIPE_BIND_DEPTH_STENCIL; - pipe_resource_reference(&ppq->depth, indepth); - if (!ppq->depth) - goto error; tmp_res.format = p->surf.format = PIPE_FORMAT_S8_UINT_Z24_UNORM; diff --git a/src/gallium/auxiliary/postprocess/pp_run.c b/src/gallium/auxiliary/postprocess/pp_run.c index ab09a5645cc..be52051ed65 100644 --- a/src/gallium/auxiliary/postprocess/pp_run.c +++ b/src/gallium/auxiliary/postprocess/pp_run.c @@ -49,7 +49,7 @@ pp_run(struct pp_queue_t *ppq, struct pipe_resource *in, in->height0 != ppq->p->framebuffer.height) { pp_debug("Resizing the temp pp buffers\n"); pp_free_fbos(ppq); - pp_init_fbos(ppq, in->width0, in->height0, indepth); + pp_init_fbos(ppq, in->width0, in->height0); } if (in == out && ppq->n_filters == 1) { diff --git a/src/gallium/state_trackers/dri/common/dri_context.c b/src/gallium/state_trackers/dri/common/dri_context.c index 52c8f4a254b..e07e16833a7 100644 --- a/src/gallium/state_trackers/dri/common/dri_context.c +++ b/src/gallium/state_trackers/dri/common/dri_context.c @@ -237,8 +237,7 @@ dri_make_current(__DRIcontext * cPriv, if (draw->textures[ST_ATTACHMENT_BACK_LEFT] && draw->textures[ST_ATTACHMENT_DEPTH_STENCIL] && ctx->pp) pp_init_fbos(ctx->pp, draw->textures[ST_ATTACHMENT_BACK_LEFT]->width0, - draw->textures[ST_ATTACHMENT_BACK_LEFT]->height0, - draw->textures[ST_ATTACHMENT_DEPTH_STENCIL]); + draw->textures[ST_ATTACHMENT_BACK_LEFT]->height0); return GL_TRUE; }