[Mesa-dev] [PATCH] radv: fix dual source blending

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Sun Dec 18 23:00:04 UTC 2016


Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

Does dual source blending work now with this patch? And do you need me
to commit it?

- Bas


On Fri, Dec 16, 2016 at 2:25 AM, Fredrik Höglund <fredrik at kde.org> wrote:
> Add the index to the location when assigning driver locations for
> output variables.
>
> Otherwise two fragment shader outputs declared as:
>
>    layout (location = 0, index = 0) out vec4 output1;
>    layout (location = 0, index = 1) out vec4 output2;
>
> will end up aliasing one another.
>
> Note that this patch will make the second output variable in the above
> example alias a possible third output variable with location = 1 and
> index = 0. But this shouldn't be a problem in practice since only one
> color attachment is supported when dual-source blending is used.
> ---
>  src/amd/common/ac_nir_to_llvm.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
> index d66fefb..90ee917 100644
> --- a/src/amd/common/ac_nir_to_llvm.c
> +++ b/src/amd/common/ac_nir_to_llvm.c
> @@ -4125,7 +4125,7 @@ static void
>  handle_shader_output_decl(struct nir_to_llvm_context *ctx,
>                           struct nir_variable *variable)
>  {
> -       int idx = variable->data.location;
> +       int idx = variable->data.location + variable->data.index;
>         unsigned attrib_count = glsl_count_attribute_slots(variable->type, false);
>
>         variable->data.driver_location = idx * 4;
> @@ -4155,7 +4155,7 @@ handle_shader_output_decl(struct nir_to_llvm_context *ctx,
>                                        si_build_alloca_undef(ctx, ctx->f32, "");
>                 }
>         }
> -       ctx->output_mask |= ((1ull << attrib_count) - 1) << variable->data.location;
> +       ctx->output_mask |= ((1ull << attrib_count) - 1) << idx;
>  }
>
>  static void
> --
> 2.1.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list