[Mesa-dev] [PATCH 23/28] glsl: add pack varying to resource list for vertex input / fragment output

Anuj Phogat anuj.phogat at gmail.com
Wed Jan 20 15:38:37 PST 2016


On Wed, Jan 20, 2016 at 1:39 PM, Timothy Arceri
<timothy.arceri at collabora.com> wrote:
> On Wed, 2016-01-20 at 10:06 -0800, Anuj Phogat wrote:
>> On Mon, Dec 28, 2015 at 9:00 PM, Timothy Arceri
>> <timothy.arceri at collabora.com> wrote:
>> > This is needed now that we pack these type of varyings when they
>> > have a
>> > component layout qualifier.
>> > ---
>> >  src/glsl/linker.cpp | 15 ++++++++-------
>> >  1 file changed, 8 insertions(+), 7 deletions(-)
>> >
>> > diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
>> > index 44dd7f0..52a326a 100644
>> > --- a/src/glsl/linker.cpp
>> > +++ b/src/glsl/linker.cpp
>> > @@ -3763,13 +3763,14 @@ build_program_resource_list(struct
>> > gl_shader_program *shProg)
>> >     if (input_stage == MESA_SHADER_STAGES && output_stage == 0)
>> >        return;
>> >
>> > -   /* Program interface needs to expose varyings in case of SSO.
>> > */
>> > -   if (shProg->SeparateShader) {
>> > -      if (!add_packed_varyings(shProg, input_stage,
>> > GL_PROGRAM_INPUT))
>> > -         return;
>> > -      if (!add_packed_varyings(shProg, output_stage,
>> > GL_PROGRAM_OUTPUT))
>> > -         return;
>> > -   }
>> > +   /* Program interface needs to expose varyings in case of SSO,
>> > or in case of
>> > +    * vertex inputs/fragement outputs that are packed unsing the
>> > component
>> > +    * layout qualifier.
>> > +    */
>> > +   if (!add_packed_varyings(shProg, input_stage,
>> > GL_PROGRAM_INPUT))
>> > +      return;
>> > +   if (!add_packed_varyings(shProg, output_stage,
>> > GL_PROGRAM_OUTPUT))
>> > +      return;
>> >
>> >     if (!add_fragdata_arrays(shProg))
>> >        return;
>> > --
>> > 2.4.3
>> >
>> > _______________________________________________
>> > mesa-dev mailing list
>> > mesa-dev at lists.freedesktop.org
>> > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>
>> I will give you my r-b on this if you can help me understand the
>> concept of
>> exposing varyings and how it's utilized during linking.
>
> Sure. The inputs and outputs to a program need to be added to the
> resource list so that they can be queried by
> ARB_program_interface_query via PROGRAM_INPUT/PROGRAM_OUTPUT.
Right. Aren't the input/output variables added by  add_interface_variables() ?
add_packed_varyings() is used just for SSO with below explanation from
commit : 4e7fd66:
"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."

Can you explain why do we need to add packed varyings to the resource
list even with non-SSO?

>
> I can add that to the commit message if you think its useful.
>
>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list