OSDN Git Service

cso: don't release sampler states that are bound
authorMarek Olšák <marek.olsak@amd.com>
Fri, 2 Dec 2016 14:39:25 +0000 (15:39 +0100)
committerEmil Velikov <emil.l.velikov@gmail.com>
Wed, 14 Dec 2016 19:03:12 +0000 (19:03 +0000)
commit86b8bc7656ef7fd870829121f2a6d088c5fd2516
tree9dadbd1ce9099a27627e8056e7eef8682a37c4db
parent7c813ce14e50a48780a74bdd67ad550f8ae9ade9
cso: don't release sampler states that are bound

This fixes random radeonsi GPU hangs in Batman Arkham: Origins (Wine) and
probably many other games too.

cso_cache deletes sampler states when the cache size is too big and doesn't
check which sampler states are bound, causing use-after-free in drivers.
Because of that, radeonsi uploaded garbage sampler states and the hardware
went bananas. Other drivers may have experienced similar issues.

Cc: 12.0 13.0 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
(cherry picked from commit 6dc96de303290e8d1fc294da478c4f370be98dea)
src/gallium/auxiliary/cso_cache/cso_cache.c