[Mesa-dev] [PATCH] glsl: properly setting var->data.binding if explicit_binding is true
Timothy Arceri
t_arceri at yahoo.com.au
Sun Apr 26 23:59:31 PDT 2015
On Sun, 2015-04-26 at 15:23 +0200, Alejandro Piñeiro wrote:
On 26/04/15 00:08, Timothy Arceri wrote:
> > On Sat, 2015-04-25 at 18:46 +0200, Alejandro Piñeiro wrote:
> >> There was a typo on commit c0cd5b, doing it when explicit_binding
> >> was false. This prevented to use any binding point different to 0.
> >> ---
> >>
> >> Taking into account the explanation on the header about the
> >> variable binding (ast.h:553)
> >>
> >> /**
> >> * Binding specified via GL_ARB_shading_language_420pack's
"binding" keyword.
> >> *
> >> * \note
> >> * This field is only valid if \c explicit_binding is set.
> >> */
> >> int binding;
> >>
> >> The binding is correct (and should be updated) if explicit_binding
is true.
> >> But the current behaviour was updating it if it was false.
> >>
> >> This was not detected by piglit because all the calls to
> >> glBindBufferBase(GL_ATOMIC_COUNTER_BUFFER are using 0.
> >>
> >> I tested this patch by running all piglit on my system, and I
didn't
> >> detect regression. I also runned make check without issues.
> >>
> >> https://bugs.freedesktop.org/show_bug.cgi?id=90175
> > You should probably convert your test program to a piglit test also
so
> > this bug can be detected if it happens again in the future.
>
> There are several piglit tests at spec/arb_shader_atomic_counters
> testing that you get what you expect while using atomic counters.
> Probably it would be enough to just modify some of the already
existing
> tests, using a non-zero binding point (for example at semantics.c).
>
> But I don't have too much experience tweaking/creating piglit tests.
> What option would be preferred for this case? A new test or just
modify
> a little one of the already available?
>
Take a look at buffer-binding.c it would probably make sense to add your
subtest to this test.
Your test would probably look something like this:
static bool
run_test_explicit_binding(test params here)
{
/* test code */
if (explict_binding_set_incorrectly)
return false;
return true;
}
And you would add something like this to piglit_init()*/
if (piglit_is_extension_supported("GL_ARB_shading_language_420pack"))
atomic_counters_subtest(&status, GL_NONE,
"Atomic buffer explicit binding"
run_test_explicit_binding,
}
You would also need to update the comment at the top of the file.
More information about the mesa-dev
mailing list