[Mesa-dev] [PATCH 3/3] r600g: re-enable single-sample fast clear

Dieter Nützel Dieter at nuetzel-hh.de
Sun Aug 2 10:54:37 PDT 2015


Am 02.08.2015 15:36, schrieb Marek Olšák:
> From: Marek Olšák <marek.olsak at amd.com>
> 
> Fixed by the CB_SHADER_MASK fix.

Hurray,

r600g (Turks) ~10% performance drop for Mesa's 'objview' is _mostly_ 
fixed.
Mostly 'cause it is NOT on par as before (the 'broken') version.
E.g. 'buddha' was stable at 600 FPS (see below).

Thanks,
   Dieter

Without fast clear:                     with new fixed version:
./objview bobcat.obj &
1130.967407 FPS                    1299.925171 FPS
1171.957153 FPS                    1328.500000 FPS
1170.750000 FPS                    1328.500000 FPS

./objview buddha.obj &
533.250000 FPS                       560.609985 FPS
543.364258 FPS                       574.463013 FPS
542.864380 FPS                       574.000000 FPS

./objview bunny.obj &
743.250000 FPS                       811.250000 FPS
768.000000 FPS                       825.500000 FPS
765.500000 FPS                       826.750000 FPS

./objview GreatLakesBiplaneHP.obj &
604.848938 FPS                       644.000000 FPS
617.691406 FPS                       658.500000 FPS
618.250000 FPS                       658.500000 FPS

Taken from former posts with Michel (about enabling DRI3/glamor):
Mesa-demo's 'objview' show this:

bobcat.obj:            ~790 => ~1048 fps | ~25%  with glamor ~1388 fps
buddha.obj:            ~370 =>  ~527 fps | >33%  with glamor  ~600 fps
bunny.obj:            ~530 =>  ~720 fps | >25%  with glamor  ~863 fps
GreatLakesBiplaneHP.obj:    ~435 =>  ~593 fps | >33%  with glamor  ~687 
fps

> ---
>  src/gallium/drivers/r600/r600_blit.c | 7 +------
>  1 file changed, 1 insertion(+), 6 deletions(-)
> 
> diff --git a/src/gallium/drivers/r600/r600_blit.c
> b/src/gallium/drivers/r600/r600_blit.c
> index 1c59230..8664e03 100644
> --- a/src/gallium/drivers/r600/r600_blit.c
> +++ b/src/gallium/drivers/r600/r600_blit.c
> @@ -393,12 +393,7 @@ static void r600_clear(struct pipe_context *ctx,
> unsigned buffers,
>  	struct r600_context *rctx = (struct r600_context *)ctx;
>  	struct pipe_framebuffer_state *fb = &rctx->framebuffer.state;
> 
> -	/* Single-sample fast color clear is broken on r600g:
> -	 *   https://bugs.freedesktop.org/show_bug.cgi?id=73528
> -	 *   https://bugs.freedesktop.org/show_bug.cgi?id=82186
> -	 */
> -	if (buffers & PIPE_CLEAR_COLOR && rctx->b.chip_class >= EVERGREEN &&
> -	    rctx->framebuffer.nr_samples > 1) {
> +	if (buffers & PIPE_CLEAR_COLOR && rctx->b.chip_class >= EVERGREEN) {
>  		evergreen_do_fast_color_clear(&rctx->b, fb, &rctx->framebuffer.atom,
>  					      &buffers, color);
>  		if (!buffers)


More information about the mesa-dev mailing list