[Mesa-dev] [PATCH] glsl: add varyings to resource list only with SSO
Dieter Nützel
Dieter at nuetzel-hh.de
Wed Oct 7 06:18:25 PDT 2015
Am 07.10.2015 09:04, schrieb Tapani Pälli:
> Varyings can be considered inputs or outputs of a program only when
> SSO is in use. With multi-stage programs, inputs contain only inputs
> for first stage and outputs contains outputs of the final shader stage.
>
> I've tested that fix works for Assault Android Cactus (demo version)
> and does not cause Piglit or CTS regressions in glGetProgramiv tests.
>
> Following ES 3.1 CTS separate shader tests that do query properties
> of varyings in SSO shader programs pass:
>
> ES31-CTS.program_interface_query.separate-programs-vertex
> ES31-CTS.program_interface_query.separate-programs-fragment
>
> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92122
Tested-by: Dieter Nützel <Dieter at nuetzel-hh.de>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92173
'broke WebGL-Water Caustics on NI/Turks (6670)'
> ---
> src/glsl/linker.cpp | 11 +++++++----
> 1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
> index 6df8d61..a97b4ef 100644
> --- a/src/glsl/linker.cpp
> +++ b/src/glsl/linker.cpp
> @@ -3421,10 +3421,13 @@ build_program_resource_list(struct
> gl_shader_program *shProg)
> if (input_stage == MESA_SHADER_STAGES && output_stage == 0)
> return;
>
> - if (!add_packed_varyings(shProg, input_stage))
> - return;
> - if (!add_packed_varyings(shProg, output_stage))
> - return;
> + /* Program interface needs to expose varyings in case of SSO. */
> + if (shProg->SeparateShader) {
> + if (!add_packed_varyings(shProg, input_stage))
> + return;
> + if (!add_packed_varyings(shProg, output_stage))
> + return;
> + }
>
> /* Add inputs and outputs to the resource list. */
> if (!add_interface_variables(shProg,
> shProg->_LinkedShaders[input_stage]->ir,
More information about the mesa-dev
mailing list