[Mesa-dev] [PATCH 01/28] glsl: only add outward facing varyings to resourse list for SSO
Anuj Phogat
anuj.phogat at gmail.com
Tue Jan 5 15:16:40 PST 2016
On Mon, Dec 28, 2015 at 9:00 PM, Timothy Arceri
<timothy.arceri at collabora.com> wrote:
> An SSO program can have multiple stages and we only want to add the externally
> facing varyings. The current code was adding both the packed inputs and outputs
> for the first and last stage of each program.
> ---
> src/glsl/linker.cpp | 17 ++++++++++-------
> 1 file changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
> index c7e6976..d11c404 100644
> --- a/src/glsl/linker.cpp
> +++ b/src/glsl/linker.cpp
> @@ -3433,7 +3433,7 @@ add_interface_variables(struct gl_shader_program *shProg,
> }
>
> static bool
> -add_packed_varyings(struct gl_shader_program *shProg, int stage)
> +add_packed_varyings(struct gl_shader_program *shProg, int stage, GLenum type)
> {
> struct gl_shader *sh = shProg->_LinkedShaders[stage];
> GLenum iface;
> @@ -3454,10 +3454,13 @@ add_packed_varyings(struct gl_shader_program *shProg, int stage)
> default:
> unreachable("unexpected type");
> }
> - if (!add_program_resource(shProg, iface, var,
> - build_stageref(shProg, var->name,
> - var->data.mode)))
> - return false;
> +
> + if (type == iface) {
> + if (!add_program_resource(shProg, iface, var,
> + build_stageref(shProg, var->name,
> + var->data.mode)))
> + return false;
> + }
> }
> }
> return true;
> @@ -3724,9 +3727,9 @@ build_program_resource_list(struct gl_shader_program *shProg)
>
> /* Program interface needs to expose varyings in case of SSO. */
> if (shProg->SeparateShader) {
> - if (!add_packed_varyings(shProg, input_stage))
> + if (!add_packed_varyings(shProg, input_stage, GL_PROGRAM_INPUT))
> return;
> - if (!add_packed_varyings(shProg, output_stage))
> + if (!add_packed_varyings(shProg, output_stage, GL_PROGRAM_OUTPUT))
> return;
> }
>
> --
> 2.4.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>
More information about the mesa-dev
mailing list