mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-30 16:30:10 +01:00
glsl: add varyings to resource list only with SSO
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@intel.com> Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92122
This commit is contained in:
parent
6ad9ebb073
commit
4e7fd66cf0
1 changed files with 7 additions and 4 deletions
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue