[Mesa-dev] [Mesa-stable] Regressions due to commit 1afe3359258

Ian Romanick idr at freedesktop.org
Fri Apr 18 09:39:04 PDT 2014


On 04/18/2014 08:46 AM, Kenneth Graunke wrote:
> On 04/18/2014 12:09 AM, Ilia Mirkin wrote:
>> Hi Ken,
>>
>> I just did a bisect looking for the failure that's causing a few
>> gs-related piglits to fail on nv50, and it came up with the below. Any
>> ideas? Here are the tests that are failing:
>>
>> tests/spec/glsl-1.50/execution/geometry/clip-distance-out-values.shader_test
>> tests/spec/glsl-1.50/execution/geometry/max-input-components.shader_test
>> tests/spec/glsl-1.50/execution/geometry/point-size-out.shader_test
>> tests/spec/glsl-1.50/execution/geometry/primitive-id-out.shader_test
>> tests/spec/glsl-1.50/execution/gs-redeclares-both-pervertex-blocks.shader_test
>> tests/spec/glsl-1.50/execution/interface-vs-named-to-gs-array.shader_test
>> tests/spec/glsl-1.50/execution/redeclare-pervertex-out-subset-gs.shader_test
>> tests/spec/glsl-1.50/execution/redeclare-pervertex-subset-vs-to-gs.shader_test
>>
>> 1afe3359258a9e89b62c8638761f52d78f6d1cbc is the first bad commit
>> commit 1afe3359258a9e89b62c8638761f52d78f6d1cbc
>> Author: Kenneth Graunke <kenneth at whitecape.org>
>> Date:   Thu Mar 20 11:53:16 2014 -0700
>>
>>     mesa: In core profile, refuse to draw unless a VAO is bound.
>>
>>     Core profile requires a non-default VAO to be bound.  Currently, calls
>>     to glVertexAttribPointer raise INVALID_OPERATION unless a VAO is bound,
>>     and we never actually get any vertex data set.  Trying to draw without
>>     any vertex data can only cause problems.  In i965, it causes a crash.
>>
>>     Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=76400
>>     Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
>>     Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
>>     Cc: mesa-stable at lists.freedesktop.org
>>
>> Reverting this commit on top of master makes it work again. I have no
>> idea whether it's the tests/piglit infra that are wrong, or if it's
>> the commit that's wrong, but wanted to raise the issue. This still
>> happens with the (almost-)latest piglit (latest doesn't compile due to
>> EGL stuff...)
>>
>> Let me know if you'd like any additional info.
>>
>> Thanks,
>>
>>   -ilia
> 
> Yeah, we're seeing those too.  I believe the commit is wrong: with
> geometry shaders, you can just generate vertices using a GS program and
> not actually ever upload any vertex data.  At which point, you probably
> don't need a VAO.  I haven't double checked the rules, though.

You don't even need a GS to draw without vertex data.  You just need a
vertex shader that uses gl_VertexID.  I was going to raise an issue
about this patch last week, but I was too distracted by the Khronos
meetings. :(

> Feel free to revert it.
> 
> I also wonder whether we should drop the non-default-VAO requirement.
> ES 3.0 doesn't require it, so I wonder if ARB_ES3_compatibility implies
> we should drop it from API_OPENGL_CORE as well.  If not, it still might
> be worth creating an always-on GL extension that provides the default
> VAO again.  We get quite a few bug reports about people's apps not
> working because they were trying to use the default VAO (which
> apparently nVidia allows).

Implementers are explicitly NOT allowed to have extensions the
re-instate deprecated / removed functionality.  ARB_ES[23]_compatibility
also doesn't bring back vertex data in user memory, so I don't see use
the default VAO should come back.

I don't remember all the rules... I know you can't draw without a VAO,
but can you even bind BOs, configure attributes, etc. on the default
VAO?  Do we generate clear error messages in the right places?

> --Ken
> _______________________________________________
> mesa-stable mailing list
> mesa-stable at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-stable



More information about the mesa-dev mailing list