On Fri, Oct 23, 2015 at 5:08 AM, Michel Dänzer <mic...@daenzer.net> wrote:
> On 23.10.2015 08:12, Marek Olšák wrote:
>> This series unbinds shaders properly in bind_(vs/fs/etc.)_state, because any 
>> context can release them now, therefore we can't rely on unbinding in 
>> delete_shader. This is basically a fix for sharable shader.
>>
>> It also gets rid of the dummy pixel shader. Instead, the driver just skips 
>> draw calls that have rasterizer_discard==0 and ps==NULL set at the same 
>> time. rasterizer_discard==1 and ps==NULL works as expected.
>>
>> Please review.
>
> Patches 1-5 are
>
> Reviewed-by: Michel Dänzer <michel.daen...@amd.com>
>
>
> Patches 6 & 7:
>
> Shouldn't we leave sctx->emitted.named.* intact in si_bind_*_shader and
> only clear those from si_delete_shader_selector/si_shader_destroy?
> Otherwise we might keep re-emitting the same shader PM4 state if the app
> / state tracker keeps unbinding and re-binding the same shader.

The thing is any context can release a shader and that shader can
still be bound in a different context than the one that's releasing it
and that can crash later. Or a user can release a shader and allocate
a new one and the pointer might be the same, causing the driver to
think the shader hasn't been changed.

I guess the real issue is that state trackers don't unbind shaders in
other contexts either, so the 2 patches don't help at all, they just
move the problem to a different place and add inefficiency. This needs
more thought, so let's drop them for now.

Marek
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to