Timothy Arceri <tarc...@itsqueeze.com> writes:

> nir_compact_varyings() is meant to skip over varyings used by xfb:
>
>           /* We can't repack xfb varyings. */
>           if (var->data.always_active_io)
>              continue;
>
> Any idea why that isn't working in this case?

Looks like GLSL IR has that flag wrong.  points.7 has v_var6,7,8,9
transform feedback output, but the IR says:

decl_var shader_out INTERP_MODE_NONE SOMEACT vec4 gl_Position 
(VARYING_SLOT_POS, 0, 0)
decl_var shader_out INTERP_MODE_NONE SOMEACT float gl_PointSize 
(VARYING_SLOT_PSIZ.x, 0, 0)
decl_var shader_out INTERP_MODE_FLAT ALWAYSACT  vec4[1] v_var6 
(VARYING_SLOT_VAR0, 0, 0)
decl_var shader_out INTERP_MODE_FLAT ALWAYSACT  ivec3 packed:v_var8 
(VARYING_SLOT_VAR7.xyz, 0, 0)
decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var0 
(VARYING_SLOT_VAR3.x, 0, 0)
decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var0@0 
(VARYING_SLOT_VAR3.y, 0, 0)
decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var0@1 
(VARYING_SLOT_VAR3.z, 0, 0)
decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var1 
(VARYING_SLOT_VAR4.x, 0, 0)
decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var1@2 
(VARYING_SLOT_VAR4.y, 0, 0)
decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var1@3 
(VARYING_SLOT_VAR4.z, 0, 0)
decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var10,v_var9 
(VARYING_SLOT_VAR1.x, 0, 0)
decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var10,v_var9@4 
(VARYING_SLOT_VAR1.y, 0, 0)
decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var10,v_var9@5 
(VARYING_SLOT_VAR1.z, 0, 0)
decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var10,v_var9@6 
(VARYING_SLOT_VAR1.w, 0, 0)
decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var11[0] 
(VARYING_SLOT_VAR5.x, 0, 0)
decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var11[0]@7 
(VARYING_SLOT_VAR5.y, 0, 0)
decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var11[0]@8 
(VARYING_SLOT_VAR5.z, 0, 0)
decl_var shader_out INTERP_MODE_FLAT SOMEACT int 
packed:v_var2,v_var5,v_var7[0],v_var7[1] (VARYING_SLOT_VAR2.x, 0, 0)
decl_var shader_out INTERP_MODE_FLAT SOMEACT int 
packed:v_var2,v_var5,v_var7[0],v_var7[1]@9 (VARYING_SLOT_VAR2.y, 0, 0)
decl_var shader_out INTERP_MODE_FLAT SOMEACT int 
packed:v_var2,v_var5,v_var7[0],v_var7[1]@10 (VARYING_SLOT_VAR2.z, 0, 0)
decl_var shader_out INTERP_MODE_FLAT SOMEACT int 
packed:v_var2,v_var5,v_var7[0],v_var7[1]@11 (VARYING_SLOT_VAR2.w, 0, 0)
decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var3 
(VARYING_SLOT_VAR6.x, 0, 0)
decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var3@12 
(VARYING_SLOT_VAR6.y, 0, 0)
decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var3@13 
(VARYING_SLOT_VAR6.z, 0, 0)
decl_var centroid shader_out INTERP_MODE_NONE SOMEACT float v_var4 
(VARYING_SLOT_VAR8.x, 0, 0)
decl_var centroid shader_out INTERP_MODE_NONE SOMEACT float v_var4@14 
(VARYING_SLOT_VAR8.y, 0, 0)
decl_var centroid shader_out INTERP_MODE_NONE SOMEACT float v_var4@15 
(VARYING_SLOT_VAR8.z, 0, 0)
decl_var centroid shader_out INTERP_MODE_NONE SOMEACT float v_var4@16 
(VARYING_SLOT_VAR8.w, 0, 0)

However, even if I make lower_packed_varyings.cpp flag those as always
active, I still get my varyings reordered if I revert my change to not
call nir_compact_varyings:

 decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var0 
(VARYING_SLOT_VAR12.x, 5, 0)
 decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var0@0 
(VARYING_SLOT_VAR12.y, 5, 0)
 decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var0@1 
(VARYING_SLOT_VAR12.z, 5, 0)
-decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var1 
(VARYING_SLOT_VAR13.x, 6, 0)
-decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var1@2 
(VARYING_SLOT_VAR13.y, 6, 0)
+decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var1 
(VARYING_SLOT_VAR12.w, 5, 0)
+decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var1@2 
(VARYING_SLOT_VAR13.x, 6, 0)
 decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var1@3 
(VARYING_SLOT_VAR13.z, 6, 0)
-decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var11[0] 
(VARYING_SLOT_VAR14.x, 7, 0)
-decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var11[0]@4 
(VARYING_SLOT_VAR14.y, 7, 0)
-decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var11[0]@5 
(VARYING_SLOT_VAR14.z, 7, 0)
-decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var3 
(VARYING_SLOT_VAR15.x, 8, 0)
-decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var3@6 
(VARYING_SLOT_VAR15.y, 8, 0)
-decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var3@7 
(VARYING_SLOT_VAR15.z, 8, 0)
-decl_var shader_out INTERP_MODE_FLAT ALWAYSACT  ivec3 packed:v_var8 
(VARYING_SLOT_VAR16.xyz, 9, 0)
-decl_var centroid shader_out INTERP_MODE_NONE SOMEACT float v_var4 
(VARYING_SLOT_VAR17.x, 10, 0)
-decl_var centroid shader_out INTERP_MODE_NONE SOMEACT float v_var4@8 
(VARYING_SLOT_VAR17.y, 10, 0)
-decl_var centroid shader_out INTERP_MODE_NONE SOMEACT float v_var4@9 
(VARYING_SLOT_VAR17.z, 10, 0)
-decl_var centroid shader_out INTERP_MODE_NONE SOMEACT float v_var4@10 
(VARYING_SLOT_VAR17.w, 10, 0)
+decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var11[0] 
(VARYING_SLOT_VAR13.y, 6, 0)
+decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var11[0]@4 
(VARYING_SLOT_VAR13.w, 6, 0)
+decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var11[0]@5 
(VARYING_SLOT_VAR14.x, 7, 0)
+decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var3 
(VARYING_SLOT_VAR14.y, 7, 0)
+decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var3@6 
(VARYING_SLOT_VAR14.z, 7, 0)
+decl_var shader_out INTERP_MODE_FLAT SOMEACT int packed:v_var3@7 
(VARYING_SLOT_VAR14.w, 7, 0)
+decl_var shader_out INTERP_MODE_FLAT ALWAYSACT  ivec3 packed:v_var8 
(VARYING_SLOT_VAR16.xyz, 8, 0)
+decl_var centroid shader_out INTERP_MODE_NONE SOMEACT float v_var4 
(VARYING_SLOT_VAR17.x, 9, 0)
+decl_var centroid shader_out INTERP_MODE_NONE SOMEACT float v_var4@8 
(VARYING_SLOT_VAR17.y, 9, 0)
+decl_var centroid shader_out INTERP_MODE_NONE SOMEACT float v_var4@9 
(VARYING_SLOT_VAR17.z, 9, 0)
+decl_var centroid shader_out INTERP_MODE_NONE SOMEACT float v_var4@10 
(VARYING_SLOT_VAR17.w, 9, 0)

Attachment: signature.asc
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to