Sorry for the delayed response. I was on a vacation for some time. I wouldn't change it if the expected behavior in cts tests (listed in commit 49c7105) matches the language in OpenGL 4.3+ and with mesa behavior. You might want to find out what Nvidia's proprietary driver does. You can get the explanation for the inconsistency by raising a khronos spec bug.
-Anuj On Wed, Apr 13, 2016 at 6:31 AM, Alejandro Piñeiro <apinhe...@igalia.com> wrote: > Taking into account the small amount of feedback at piglit list, trying > now on mesa-dev, hoping someone here could shed some light on the matter. > > > -------- Forwarded Message -------- > Subject: [Piglit] RFC: confusion about vertex attrib location index=0 > and CURRENT_VERTEX_ATTRIB > Date: Tue, 5 Apr 2016 18:46:16 +0200 > From: Alejandro Piñeiro <apinhe...@igalia.com> > To: piglit <pig...@lists.freedesktop.org> > > > > Hi, > > while checking the spec of ARB_vertex_attrib64bit [1] searching for > possible piglit tests, I found the following paragraph: > > void GetVertexAttribLdv(uint index, enum pname, double *params); > > (modify the third paragraph, p. 388) The query CURRENT_VERTEX_ATTRIB > returns the current value for the generic attribute > <index>. > > <skip> > The error INVALID_OPERATION is generated if index > is zero, as there is no current value for generic attribute zero. > > > So I was about to add a test checking for INVALID_OPERATION on that > case. But I also wanted to check if there was an existing test for the > other GetVertexAttrib*, as it was not the case I was about to add a test > for all of them. > > But I found the spec documentation inconsistent between versions with > respect to what to do in that case. What it is clear is that before 3.1 > it was a special value assigned to vertex. So, for example, if we go > directly to mesa code, there is a method that checks if attribute zero > aliases to vertex position [2], that is used to raise INVALID_OPERATION > or not [3]. With that code, it doesn't emit INVALID_OPERATION as soon as > the attribute 0 becomes non-magic (as the code comment mentions). > > But, looking at the specs of different versions of mesa, I found the > following: > > On 3.1 CURRENT_VERTEX_ATTRIB is not present. > > For 3.2, 3.3 and 4.0 core&compatibility, INVALID OPERATION for index=0 > is not explicitly mentioned. But a general "The error INVALID_OPERATION > is generated if program has not been linked successfully, or if location > is not a valid location for program". I assume that location 0 for a > vertex attrib is mentioned as not a valid location somewhere, but I > didn't find it. > > So now starts the interesting. On specs 4.1 and 4.2, the following > explicit paragraph is included on core profile: > "An INVALID_OPERATION error is generated if index is zero and pname is > CURRENT_VERTEX_ATTRIB , since there is no current value for generic > attribute zero." > > *But*, on 4.3, 4.4 and 4.5, that paragraph is only present at the > compatibility profile spec. > > So, if we follow literally what the spec says, calling GetVertexAttrib* > with index=0 and CURRENT_VERTEX_ATTRIB should raise a INVALID_OPERATION > error: > * on 3.2, 3.3, 4.0 core&compatibility, as I assume that location 0 is > wrong, even if not mentioned explicitly > * on 4.1, 4.2 core&compatibility: as there is a explicit paragraph > about it. > * on 4.3, 4.4, 4.5 compatibility but not on core: as the paragraph is > only present on the compatibility spec. > > Something that right now mesa is not doing. Something strange as the > commit that implements part of that code, mentions explicitly that a CTS > test for glGetVertexAttrib get fixed [4]. And in any case, I find the > spec somewhat inconsistent about this error. > > In any case, trying to go for a conclusion, and perhaps following more > what I see currently on mesa code, seems that for 3.2 and beyond > INVALID_OPERATION should not be raised when using index=0 and pname > CURRENT_VERTEX_ATTRIB, so I shouldn't bother to write a piglit test for > that. > > Opinions? > > [1] https://www.opengl.org/registry/specs/ARB/vertex_attrib_64bit.txt > [2] > https://cgit.freedesktop.org/mesa/mesa/tree/src/mesa/main/varray.h?h=11.2#n78 > [3] https://cgit.freedesktop.org/mesa/mesa/tree/src/mesa/main/varray.c#n973 > [4] > https://cgit.freedesktop.org/mesa/mesa/commit/?id=49c71050de1e0df451e29621558b4adfefb7e098 > _______________________________________________ > Piglit mailing list > pig...@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/piglit > > > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev