Can anyone confirm that transform feedback works on Catalyst 11.10?
I have tried something that works on NV (from 8xxx to 4xx with different drivers), but fails on Win7 64-bit/HD 6850.
Driver returns no error, but values are always 0.
Maybe I missed something, so here it is a sample code:
By the way, besides this problem, I’m pleasantly surprised by new Catalyst drivers. Memory allocation is more flexible than on NV’s counterparts, and rendering without attributes works fine.
Sorry to admit that the present AMD driver could not do attribute less rendering. The workaround is to have at least one foobar attribute to feed the glDrawArrays.
With Catalyst 11.12 attributless rendering works fine; at least my sample code.
But glVertexAttrib works even worse. Instead of zeros, now it breaks after first iteration.
The precision of trigonometric functions on AMD is worse than on NVIDIA’s implementation. I really don’t understand why GLSL has such a bad trigonometry.
I’m sorry; it was a part of internal conversation with Hong-Wei.
Well, in short, glVertexAttrib cannot be used outside glBegin/glEnd block in pre-Catalyst 11.12 driver versions.
Now it succeeds, but just for the first call. Unfortunatelly, I cannot give more details, since I don’t have AMD cards and the previous state is a report from a colleague of mine.
glVertexAttribXX(0, #value#) is the same as a glVertexXX(#value#) in that it issues a vertex so can only be called inside glBegin/glEnd. The others should be okay to call outside glBegin/glEnd though.
It’s not true for Core Profile, where all of the “Begin/End Paradigm” and “Array Element” language has been replaced with the much simpler “Transferring Array Elements” section.
In Core Profile, specifying vertex attrib zero no longer immediately submits a vertex, it just sets the generic attrib (and you can query the value, unlike Compatibility Profile.)
I later had such an interesting observation about glVertexAttrib with AMD driver. Theoritically, the follow two code snippet should have the same rendering result; a point sprite on the left.
On this topic, I’ve got problems with transform feedback on an AMD GPU (see below for vendor, version and renderer). It works as expected on an NVIDIA GPU, but not on AMD. It works when I use just one output from the vertex shader, but if I add more the result is incorrect, even if the additional output is not specified using glTransformFeedbackVaryings.
I looked at your demo source and noticed that you use GL_INTERLEAVED_ATTRIBS. I use GL_SEPARATE_ATTRIBS, so was wondering if anyone out there have successfully used GL_SEPARATE_ATTRIBS on AMD for more than one output, and if there are any gotchas.
ATI Technologies Inc.
3.3.11399 Compatibility Profile Context
ATI Radeon HD 3200 Graphics
AMD Catalyst 12.1
If anyone cares to test this I can cook up a small repro case.
If I change primitive mode in DrawTransformFeedback() to points (when transform feedback is capturing lines), it gives me invalid operation. Is this another bug in AMD driver?
I think it should work.
I know there is a sentence “The error INVALID_OPERATION is generated by DrawArrays and the other drawing commands defined in section 2.8.3 if mode is not one of the allowed modes in table 2.14” in the specification. But the whole paragraph only talks about transform feedback being active.