<div dir="ltr">On 19 February 2013 23:11, Michel Dänzer <span dir="ltr"><<a href="mailto:michel@daenzer.net" target="_blank">michel@daenzer.net</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Die, 2013-02-19 at 12:52 +0100, Michel Dänzer wrote:<br>
> On Mon, 2013-02-18 at 10:14 -0800, Paul Berry wrote:<br>
> > On 18 February 2013 07:53, Michel Dänzer <<a href="mailto:michel@daenzer.net">michel@daenzer.net</a>> wrote:<br>
> >         On Don, 2013-02-14 at 08:50 -0800, Paul Berry wrote:<br>
> >         > Previously, both shader_runner and glslparsertest contained<br>
> >         switch<br>
> >         > statements that attempted to choose a GL version for testing<br>
> >         based on<br>
> >         > a GLSL version requirement, and those switch statements<br>
> >         didn't choose<br>
> >         > a GL version very accurately (for example, they converted<br>
> >         GLSL version<br>
> >         > 1.50 to GL version 3.1, which doesn't work).<br>
> >         ><br>
> >         > This patch replaces the switch statements with a single<br>
> >         common<br>
> >         > function (in piglit-util-gl-common) that does the right<br>
> >         thing.<br>
> ><br>
> ><br>
> >         This change caused quick-driver.tests to skip more than 2000<br>
> >         tests on<br>
> >         radeonsi (GL 2.1, GLSL 1.2). Almost all of the skipped tests<br>
> >         were<br>
> >         previously passing.<br>
> ><br>
> >         Was this intended?<br>
> ><br>
> ><br>
> > No, this wasn't expected, and probably indicates a bug in the driver.<br>
> ><br>
> > The specific behavioural change in Piglit is that previously, when<br>
> > running a test that required GLSL 1.20, Piglit would request (via<br>
> > Waffle) a GL 1.0 context.  Then it would query the context to see if<br>
> > it supported GLSL 1.20.  After this patch, when running a test that<br>
> > requires GLSL 1.20, Piglit requests a GL 2.1 context, and then skips<br>
> > if a GL 2.1 context can't be created.  On an implementation that<br>
> > supports GL 2.1 and GLSL 1.20, both methods should yield the same<br>
> > results.<br>
> ><br>
> ><br>
> > Note that there is code in core Mesa to determine, after context<br>
> > creation, which versions of GL and GLSL are supported.  But at the<br>
> > time of context creation, it is the responsibility of driver-specific<br>
> > code to determine whether the requested context version is supported<br>
> > (see, for instance, validate_context_version() in<br>
> > src/mesa/drivers/dri/intel/intel_context.c).  This patch caused piglit<br>
> > to base its decision for whether to skip on the driver-specific code<br>
> > rather than the core Mesa code, so if there was a lurking bug in the<br>
> > driver-specific code, this patch would have exposed it.<br>
> ><br>
> ><br>
> > So my suspicion is that there's a bug in the driver-specific context<br>
> > creation code causing it to incorrectly reject requests for GL 2.1<br>
> > contexts.  Can you check if that's what's happening?  I don't know my<br>
> > way around the radeon context creation code well enough to check it<br>
> > myself.<br>
><br>
> AFAICT the Gallium DRI/OpenGL state trackers should handle that<br>
> correctly. The problem seems to be that I'm testing on xserver 1.12,<br>
> which doesn't support GLX_ARB_create_context. Is it really no longer<br>
> feasible to run those tests without it?<br>
<br>
</div></div>In particular, creating a 2.1 context doesn't really require<br>
GLX_ARB_create_context, does it?<br></blockquote><div><br></div><div>Sorry for not responding sooner--yesterday was unexpectedly busy.  You are right, creating a 2.1 context shouldn't require GLX_ARB_create_context.<br>
<br></div><div>It seems to me that the correct fix here is to have either the Piglit framework or Waffle (I'm not sure which) detect the situation where GLX_ARB_create_context is unsupported, and in that case do the following:<br>
<br></div><div>(a) If the test is trying to create a "compatibility" context with GL version 1.0, go ahead and create an ordinary context without using GLX_ARB_create_context.<br></div><div><br>(b) If the test is trying to create a "compatibility" context with GL version other than 1.0, go ahead and create an ordinary context without using GLX_ARB_create_context, and then check using glGetString() whether a sufficiently high version of GL was returned.  If not, skip the test.<br>
<br></div><div>(c) If the test is trying tocreate a core context, skip.<br><br></div><div>The Piglit framework and Waffle collectively implement behaviours (a) and (c) already; all that would need to be added is (b).<br><br>
</div><div>Chad, does this seem like a reasonable proposal to you?  If so, where do you think it's appropriate to implement (Piglit framework or Waffle)?<br></div></div></div></div>