[Mesa-dev] [Mesa-stable] [PATCH] glsl: Generate link error for non-matching gl_FragCoord redeclarations

Chris Forbes chrisf at ijw.co.nz
Thu Mar 19 13:36:25 PDT 2015


LGTM.

Reviewed-by: Chris Forbes <chrisf at ijw.co.nz>

On Sat, Mar 7, 2015 at 1:15 PM, Anuj Phogat <anuj.phogat at gmail.com> wrote:
> in different fragment shaders. This also applies to a case when gl_FragCoord
> is redeclared with no layout qualifiers in one fragment shader and not
> declared but used in other fragment shader.
>
> Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
> Khronos Bug#12957
> Cc: "10.5" <mesa-stable at lists.freedesktop.org>
> Cc: Ian Romanick <idr at freedesktop.org>
> ---
>  src/glsl/linker.cpp | 15 ++-------------
>  1 file changed, 2 insertions(+), 13 deletions(-)
>
> diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
> index e11b6fa..e8bda4f 100644
> --- a/src/glsl/linker.cpp
> +++ b/src/glsl/linker.cpp
> @@ -1365,24 +1365,13 @@ link_fs_input_layout_qualifiers(struct gl_shader_program *prog,
>         *   "If gl_FragCoord is redeclared in any fragment shader in a program,
>         *    it must be redeclared in all the fragment shaders in that program
>         *    that have a static use gl_FragCoord."
> -       *
> -       * Exclude the case when one of the 'linked_shader' or 'shader' redeclares
> -       * gl_FragCoord with no layout qualifiers but the other one doesn't
> -       * redeclare it. If we strictly follow GLSL 1.50 spec's language, it
> -       * should be a link error. But, generating link error for this case will
> -       * be a wrong behaviour which spec didn't intend to do and it could also
> -       * break some applications.
>         */
>        if ((linked_shader->redeclares_gl_fragcoord
>             && !shader->redeclares_gl_fragcoord
> -           && shader->uses_gl_fragcoord
> -           && (linked_shader->origin_upper_left
> -               || linked_shader->pixel_center_integer))
> +           && shader->uses_gl_fragcoord)
>            || (shader->redeclares_gl_fragcoord
>                && !linked_shader->redeclares_gl_fragcoord
> -              && linked_shader->uses_gl_fragcoord
> -              && (shader->origin_upper_left
> -                  || shader->pixel_center_integer))) {
> +              && linked_shader->uses_gl_fragcoord)) {
>               linker_error(prog, "fragment shader defined with conflicting "
>                           "layout qualifiers for gl_FragCoord\n");
>        }
> --
> 1.9.3
>
> _______________________________________________
> mesa-stable mailing list
> mesa-stable at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-stable


More information about the mesa-dev mailing list