[Mesa-dev] [PATCH] r300: Don't disable destination read if the src blend factor needs it

Marek Olšák maraeo at gmail.com
Fri Dec 7 08:50:06 PST 2012


Pushed, thanks!

Marek

On Fri, Dec 7, 2012 at 5:38 PM, Stefan Dösinger <stefandoesinger at gmx.at> wrote:
> The read can remain disabled if the src alpha factor needs it because
> the result would still be zero.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=57984
>
> NOTE: This is a candidate for stable release branches.
> ---
>  src/gallium/drivers/r300/r300_state.c |   12 ++++++++++--
>  1 files changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c
> index fba2d35..050c8f4 100644
> --- a/src/gallium/drivers/r300/r300_state.c
> +++ b/src/gallium/drivers/r300/r300_state.c
> @@ -288,7 +288,11 @@ static void* r300_create_blend_state(struct pipe_context* pipe,
>                           dstRGB == PIPE_BLENDFACTOR_ZERO) &&
>                          (dstA == PIPE_BLENDFACTOR_SRC_COLOR ||
>                           dstA == PIPE_BLENDFACTOR_SRC_ALPHA ||
> -                         dstA == PIPE_BLENDFACTOR_ZERO)) {
> +                         dstA == PIPE_BLENDFACTOR_ZERO) &&
> +                        (srcRGB != PIPE_BLENDFACTOR_DST_COLOR &&
> +                         srcRGB != PIPE_BLENDFACTOR_DST_ALPHA &&
> +                         srcRGB != PIPE_BLENDFACTOR_INV_DST_COLOR &&
> +                         srcRGB != PIPE_BLENDFACTOR_INV_DST_ALPHA)) {
>                           blend_control |= R500_SRC_ALPHA_0_NO_READ;
>                      }
>
> @@ -297,7 +301,11 @@ static void* r300_create_blend_state(struct pipe_context* pipe,
>                           dstRGB == PIPE_BLENDFACTOR_ZERO) &&
>                          (dstA == PIPE_BLENDFACTOR_INV_SRC_COLOR ||
>                           dstA == PIPE_BLENDFACTOR_INV_SRC_ALPHA ||
> -                         dstA == PIPE_BLENDFACTOR_ZERO)) {
> +                         dstA == PIPE_BLENDFACTOR_ZERO) &&
> +                        (srcRGB != PIPE_BLENDFACTOR_DST_COLOR &&
> +                         srcRGB != PIPE_BLENDFACTOR_DST_ALPHA &&
> +                         srcRGB != PIPE_BLENDFACTOR_INV_DST_COLOR &&
> +                         srcRGB != PIPE_BLENDFACTOR_INV_DST_ALPHA)) {
>                           blend_control |= R500_SRC_ALPHA_1_NO_READ;
>                      }
>                  }
> --
> 1.7.8.6
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list