These 2 shaders do link, but later I discovered that it breaks when I add any fragment shader to the party, telling the same error message “Vertex Shader not supported by HW”.
Pierre, I’m badly surprised ATI don’t acknowledge this as a bug (see original post). It’s clear for me and Alfonse (right?) at least, that the driver behavior contradicts GLSL spec and don’t allow any workaround effectively cutting off a large piece of basic functionality.
Do you agree on that? ATI Customer Support ignores me… Can you influence them a little?
I sent you a PM to take this discussion offline. the best would be to exchange a few tests, since I am not sure that we are talking about the same thing.
my understanding of the spec:
if you have two separate shader objects:
1: void foo(struct1 a);
2: void foo(struct2 a);
-> this should be a link error because it is different functions
if you have different shader objects:
1: struct struct1 {};
2: struct struct1 {};
2: uniform struct1 a;
-> this should link correctly
if you have only one shader object:
1: struct struct1 {};
1: struct struct1 {};
1: uniform struct1 a;
-> this should not compile (type redifinition)
we have made some fixes based on your initial report to correctly link, and we will be glad to fix any other issue (for instance, a fragment shader object should have no impact on the behavior above)
I’m glad to see you back here.
I agree completely on the required linking behavior you described (all 3 cases). Waiting for the new Catalyst version (10.3?) to check your fixes and continue to work efficiently (right now I’m working with 9.10).