[Mesa-dev] [PATCH] glsl/linker: attempt to match anonymous structures at link
Ian Romanick
idr at freedesktop.org
Wed May 18 21:43:17 UTC 2016
This patch is
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
On 05/16/2016 05:33 PM, Dave Airlie wrote:
> From: Dave Airlie <airlied at redhat.com>
>
> This is my attempt at fixing at least one of the UE4 bugs with GL4.3.
>
> If we are doing intrastage matching and hit anonymous structs, then
> we should do a record comparison instead of using the names.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=95005
> Signed-off-by: Dave Airlie <airlied at redhat.com>
> ---
> src/compiler/glsl/link_varyings.cpp | 24 +++++++++++++++---------
> 1 file changed, 15 insertions(+), 9 deletions(-)
>
> diff --git a/src/compiler/glsl/link_varyings.cpp b/src/compiler/glsl/link_varyings.cpp
> index 003b9d4..9ae5791 100644
> --- a/src/compiler/glsl/link_varyings.cpp
> +++ b/src/compiler/glsl/link_varyings.cpp
> @@ -226,15 +226,21 @@ cross_validate_types_and_qualifiers(struct gl_shader_program *prog,
> * fragment language."
> */
> if (!output->type->is_array() || !is_gl_identifier(output->name)) {
> - linker_error(prog,
> - "%s shader output `%s' declared as type `%s', "
> - "but %s shader input declared as type `%s'\n",
> - _mesa_shader_stage_to_string(producer_stage),
> - output->name,
> - output->type->name,
> - _mesa_shader_stage_to_string(consumer_stage),
> - input->type->name);
> - return;
> + bool anon_matches = output->type->is_anonymous() &&
> + type_to_match->is_anonymous() &&
> + type_to_match->record_compare(output->type);
> +
> + if (!anon_matches) {
> + linker_error(prog,
> + "%s shader output `%s' declared as type `%s', "
> + "but %s shader input declared as type `%s'\n",
> + _mesa_shader_stage_to_string(producer_stage),
> + output->name,
> + output->type->name,
> + _mesa_shader_stage_to_string(consumer_stage),
> + input->type->name);
> + return;
> + }
> }
> }
>
>
More information about the mesa-dev
mailing list