On 06/12/2012 02:40 PM, James Jones wrote:
On 6/12/12 2:25 PM, Ian Romanick wrote:
From: Ian Romanick<[email protected]>
NVIDIA's closed-source driver fails this test. GLXBadProfileARB is
generated instead of BadMatch. The specification isn't specific about
what error should be generated, but I don't think GLXBadProfileARB is
correct. GLXBadProfileARB seems to only be generated in cases where
the bit mask specified for GLX_CONTEXT_PROFILE_MASK_ARB is invalid.
Cases where the GLX_CONTEXT_PROFILE_MASK_ARB is incongruous with the
specified version either result in GLX_CONTEXT_PROFILE_MASK_ARB being
ignored or BadMatch.
GLXBadProfileARB fell out more naturally from our implementation. I
see no good argument for either side. I think I could construct an
equally convincing case for generating GLXBadProfileARB, but I don't
have a strong opinion. If you really want it to be BadMatch, I can
update our implementation and the spec to conform to that as well, so we
can be consistent at least.
Since it appears you are the only shipping implementation, I'm content
with having the first one be the winner. I'll submit a bug against the
spec with some suggested language change.
Something like...
Replace:
"... If the GLX_CONTEXT_ES2_PROFILE_BIT_EXT bit is set, and the
requested version is 2.0, then a context implementing OpenGL ES 2.0
is returned; otherwise, if the requested OpenGL version is less than
3.2, GLX_CONTEXT_PROFILE_MASK_ARB is ignored and the functionality
of the context is determined solely by the requested version."
with
"... If the GLX_CONTEXT_ES2_PROFILE_BIT_EXT bit is set, and the
requested version is 2.0, then a context implementing OpenGL ES 2.0
is returned. If the GLX_CONTEXT_ES2_PROFILE_BIT_EXT bit is set,
and the requested version is not 2.0, the error GLXBadProfileARB is
generated. Otherwise, if the requested OpenGL version is less than
3.2, GLX_CONTEXT_PROFILE_MASK_ARB is ignored and the functionality
of the context is determined solely by the requested version."
The original language is, as worded, broken anyway. It implies that if
you specify GLX_CONTEXT_ES2_PROFILE_BIT_EXT and 2.1, that a desktop
OpenGL 2.1 context should be created.
Generating GLXBadProfileARB is also consistent with
"* If attribute GLX_CONTEXT_PROFILE_MASK_ARB has no bits set; has
any bits set other than GLX_CONTEXT_CORE_PROFILE_BIT_ARB and
GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB; has more than one of
these bits set; or *if the implementation does not support the
requested profile*, then GLXBadProfileARB is generated."
(emphasis mine)
_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit