Summary: | [bisected] olgc GLSLlinker(positive.variable.structInitialization) fails | ||
---|---|---|---|
Product: | Mesa | Reporter: | fangxun <xunx.fang> |
Component: | Drivers/DRI/i965 | Assignee: | Ian Romanick <idr> |
Status: | CLOSED NOTABUG | QA Contact: | |
Severity: | normal | ||
Priority: | medium | CC: | eric |
Version: | git | ||
Hardware: | All | ||
OS: | Linux (All) | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: | New piglit case to reproduce this regression |
Description
fangxun
2011-09-13 23:33:38 UTC
Created attachment 53032 [details]
New piglit case to reproduce this regression
Attached piglit shader_runner case could be used to reproduce this bug
Ian, can you review Shuang's piglit case? I'm not 100% convinced that the test is valid. The GLSL spec is somewhat ambiguous in this area. The only text that I can find that speaks to this issue at all is on page 55 (page 60 of the PDF) of the 3.30 spec: "Structure types must be of the same declared structure." I honestly don't know what that means. Even though this is technically a regression, I'm decreasing the priority. I doubt any real application will ever intentionally encounter this. I've just tried the case on one Nvidia card, it also fails. So I'm confused, since accoring to the test case document, this case is written against GLSL 1.10 rev 59. In section 4.2: "Shared globals are global variables declared with the same name in independently compiled units (shaders) of the same language (vertex or fragment) that are linked together to make a single program. Shared globals share the same namespace, and must be declared with the same type. They will share the same storage. Shared global arrays must have the same base type and the same size. Scalars must have exactly the same type name and type definition. Structures must have the same name, sequence of type names, and type definitions, and field names to be considered the same type. This rule applies recursively for nested or embedded types. All initializers for a shared global must have the same value, or a link error will result." Just heard from Gordon that this case is invalid. Then this oglc case is also invalid. We need to mark it as invalid (In reply to comment #4) > I've just tried the case on one Nvidia card, it also fails. So I'm confused, > since accoring to the test case document, this case is written against GLSL > 1.10 rev 59. In section 4.2: > "Shared globals are global variables declared with the same name in > independently compiled units (shaders) of the same language (vertex or > fragment) that are linked together to make a single program. Shared globals > share the same namespace, and must be declared with the same type. They will > share the same storage. Shared global arrays must have the same base type and > the same size. Scalars must have exactly the same type name and type > definition. Structures must have the same name, sequence of type names, and ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ In the test case, s1 has type st1 in one shader and type st2 in the other. It was an error that these shaders ever linked. :) > type definitions, and field names to be considered the same type. This rule > applies recursively for nested or embedded types. All initializers for a shared > global must have the same value, or a link error will result." (In reply to comment #6) > (In reply to comment #4) > > I've just tried the case on one Nvidia card, it also fails. So I'm confused, > > since accoring to the test case document, this case is written against GLSL > > 1.10 rev 59. In section 4.2: > > "Shared globals are global variables declared with the same name in > > independently compiled units (shaders) of the same language (vertex or > > fragment) that are linked together to make a single program. Shared globals > > share the same namespace, and must be declared with the same type. They will > > share the same storage. Shared global arrays must have the same base type and > > the same size. Scalars must have exactly the same type name and type > > definition. Structures must have the same name, sequence of type names, and > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > In the test case, s1 has type st1 in one shader and type st2 in the other. It > was an error that these shaders ever linked. :) > > type definitions, and field names to be considered the same type. This rule > > applies recursively for nested or embedded types. All initializers for a shared > > global must have the same value, or a link error will result." Thanks for your explanation :) |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.