[Mesa-dev] Using the right context in st_texture_release_all_sampler_views()

Marek Olšák maraeo at gmail.com
Thu Jul 23 08:44:07 PDT 2015


Hi Brian,

Like the commit message says, I have no idea how Firefox does it. My
commit only changed the situation from "crash on all drivers" to
"undefined behavior on drivers where sampler views are not sharable by
contexts".

Marek

On Thu, Jul 23, 2015 at 12:32 AM, Brian Paul <brianp at vmware.com> wrote:
> Hi Marek,
>
> This is regarding your commit "st/mesa: use pipe_sampler_view_release for
> releasing sampler views" from last October.
>
> Basically, we have:
>
> void
> st_texture_release_all_sampler_views(struct st_context *st,
>                                      struct st_texture_object *stObj)
> {
>    GLuint i;
>
>    /* XXX This should use sampler_views[i]->pipe, not st->pipe */
>    for (i = 0; i < stObj->num_sampler_views; ++i)
>       pipe_sampler_view_release(st->pipe, &stObj->sampler_views[i]);
> }
>
> Our VMware/svga driver has an issue when
> pipe_context::sampler_view_destroy() is called with one context and a
> sampler view which was created with another context.  I can hack around it
> in our driver code, but it would be nice to fix this in the state tracker.
>
> Ideally, the above code should be something like:
>
>    for (i = 0; i < stObj->num_sampler_views; ++i)
>       pipe_sampler_view_reference(&stObj->sampler_views[i], NULL);
>
> The current code which uses the st->pipe context came from the bug
> https://bugs.freedesktop.org/show_bug.cgi?id=81680
>
> AFAICT, you were just working around an R600 driver issue.  Any chance we
> could fix the state tracker and re-test Firefox on R600?
>
> -Brian


More information about the mesa-dev mailing list