From e0cc61bd91f5ef84bacaf5e7c6cda9eeefed478d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Mon, 13 Aug 2012 23:37:30 +0200 Subject: [PATCH] gallium/u_blitter: document custom meta helpers --- src/gallium/auxiliary/util/u_blitter.c | 4 ++-- src/gallium/auxiliary/util/u_blitter.h | 19 ++++++++++++++----- src/gallium/drivers/r300/r300_blit.c | 2 +- src/gallium/drivers/r600/r600_blit.c | 4 ++-- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/gallium/auxiliary/util/u_blitter.c b/src/gallium/auxiliary/util/u_blitter.c index a5510d553e9..a95e1b5356e 100644 --- a/src/gallium/auxiliary/util/u_blitter.c +++ b/src/gallium/auxiliary/util/u_blitter.c @@ -962,7 +962,7 @@ void util_blitter_clear(struct blitter_context *blitter, NULL, NULL); } -void util_blitter_clear_depth_custom(struct blitter_context *blitter, +void util_blitter_custom_clear_depth(struct blitter_context *blitter, unsigned width, unsigned height, double depth, void *custom_dsa) { @@ -1493,7 +1493,7 @@ void util_blitter_copy_buffer(struct blitter_context *blitter, } /* probably radeon specific */ -void util_blitter_resolve_color_custom(struct blitter_context *blitter, +void util_blitter_custom_resolve_color(struct blitter_context *blitter, struct pipe_resource *dst, unsigned dst_level, unsigned dst_layer, diff --git a/src/gallium/auxiliary/util/u_blitter.h b/src/gallium/auxiliary/util/u_blitter.h index 1207a9ae306..f227902c163 100644 --- a/src/gallium/auxiliary/util/u_blitter.h +++ b/src/gallium/auxiliary/util/u_blitter.h @@ -156,10 +156,6 @@ void util_blitter_clear(struct blitter_context *blitter, const union pipe_color_union *color, double depth, unsigned stencil); -void util_blitter_clear_depth_custom(struct blitter_context *blitter, - unsigned width, unsigned height, - double depth, void *custom_dsa); - /** * Check if the blitter (with the help of the driver) can blit between * the two resources. @@ -294,13 +290,26 @@ void util_blitter_clear_depth_stencil(struct blitter_context *blitter, unsigned dstx, unsigned dsty, unsigned width, unsigned height); +/* The following functions are customized variants of the clear functions. + * Some drivers use them internally to do things like MSAA resolve + * and resource decompression. It usually consists of rendering a full-screen + * quad with a special blend or DSA state. + */ + +/* Used by r300g for depth decompression. */ +void util_blitter_custom_clear_depth(struct blitter_context *blitter, + unsigned width, unsigned height, + double depth, void *custom_dsa); + +/* Used by r600g for depth decompression. */ void util_blitter_custom_depth_stencil(struct blitter_context *blitter, struct pipe_surface *zsurf, struct pipe_surface *cbsurf, unsigned sample_mask, void *dsa_stage, float depth); -void util_blitter_resolve_color_custom(struct blitter_context *blitter, +/* Used by r600g for MSAA color resolve. */ +void util_blitter_custom_resolve_color(struct blitter_context *blitter, struct pipe_resource *dst, unsigned dst_level, unsigned dst_layer, diff --git a/src/gallium/drivers/r300/r300_blit.c b/src/gallium/drivers/r300/r300_blit.c index 1053706ad57..f2c67c0a113 100644 --- a/src/gallium/drivers/r300/r300_blit.c +++ b/src/gallium/drivers/r300/r300_blit.c @@ -398,7 +398,7 @@ void r300_decompress_zmask(struct r300_context *r300) r300_mark_atom_dirty(r300, &r300->hyperz_state); r300_blitter_begin(r300, R300_DECOMPRESS); - util_blitter_clear_depth_custom(r300->blitter, fb->width, fb->height, 0, + util_blitter_custom_clear_depth(r300->blitter, fb->width, fb->height, 0, r300->dsa_decompress_zmask); r300_blitter_end(r300); diff --git a/src/gallium/drivers/r600/r600_blit.c b/src/gallium/drivers/r600/r600_blit.c index f3a3b8f89bf..0ddc7126d49 100644 --- a/src/gallium/drivers/r600/r600_blit.c +++ b/src/gallium/drivers/r600/r600_blit.c @@ -320,7 +320,7 @@ static void r600_color_resolve(struct pipe_context *ctx, if (is_simple_resolve(info)) { r600_blitter_begin(ctx, R600_COLOR_RESOLVE); - util_blitter_resolve_color_custom(rctx->blitter, + util_blitter_custom_resolve_color(rctx->blitter, info->dst.res, info->dst.level, info->dst.layer, info->src.res, info->src.layer, rctx->custom_blend_resolve); @@ -345,7 +345,7 @@ static void r600_color_resolve(struct pipe_context *ctx, /* XXX use scissor, so that only the needed part of the resource is resolved */ r600_blitter_begin(ctx, R600_COLOR_RESOLVE); - util_blitter_resolve_color_custom(rctx->blitter, + util_blitter_custom_resolve_color(rctx->blitter, tmp, 0, 0, info->src.res, info->src.layer, rctx->custom_blend_resolve); -- 2.30.2