[Mesa-dev] [PATCH 06/12] glsl: fix subroutine uniform .length().
Chris Forbes
chrisf at ijw.co.nz
Mon May 23 02:19:24 UTC 2016
On Mon, May 23, 2016 at 12:52 PM, Dave Airlie <airlied at gmail.com> wrote:
> From: Dave Airlie <airlied at redhat.com>
>
> This fixes .length() on subroutine uniform arrays, if
> we don't find the identifier normally, we look up the corresponding
> subroutine identifier instead.
>
> Fixes:
> GL45-CTS.shader_subroutine.arrays_of_arrays_of_uniforms
> GL45-CTS.shader_subroutine.arrayed_subroutine_uniforms
>
> Signed-off-by: Dave Airlie <airlied at redhat.com>
> ---
> src/compiler/glsl/ast_to_hir.cpp | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/src/compiler/glsl/ast_to_hir.cpp
> b/src/compiler/glsl/ast_to_hir.cpp
> index 434734d..ecd1327 100644
> --- a/src/compiler/glsl/ast_to_hir.cpp
> +++ b/src/compiler/glsl/ast_to_hir.cpp
> @@ -1917,6 +1917,14 @@ ast_expression::do_hir(exec_list *instructions,
> ir_variable *var =
>
> state->symbols->get_variable(this->primary_expression.identifier);
>
> + if (var == NULL) {
> + /* the identifier might be a subroutine name */
>
Being pedantic, but `subroutine uniform name`, right?
> + char *sub_name;
> + sub_name = ralloc_asprintf(ctx, "%s_%s",
> _mesa_shader_stage_to_subroutine_prefix(state->stage),
> this->primary_expression.identifier);
> + var = state->symbols->get_variable(sub_name);
> + ralloc_free(sub_name);
> + }
> +
> if (var != NULL) {
> var->data.used = true;
> result = new(ctx) ir_dereference_variable(var);
> --
> 2.5.5
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160523/9fd40696/attachment.html>
More information about the mesa-dev
mailing list