Module: Mesa
Branch: main
Commit: b9181c3218bbadfd272eeb94621f0bafaad63c77
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b9181c3218bbadfd272eeb94621f0bafaad63c77

Author: Mike Blumenkrantz <[email protected]>
Date:   Tue Feb  7 16:34:49 2023 -0500

zink: set PIPE_CAP_VALIDATE_ALL_DIRTY_STATES

failing to set this yields patterns like

* bind fs
* bind samplerviews
* draw
* bind fs2
* ~~unbind samplerviews~~ (eliminated)
* draw

the eliminated unbinding of samplerviews between draws also eliminates a 
descriptor update,
triggering various artifacts in certain corner cases (like DOOM2016 shadows)

it's possible to manage the updating during shader binding, but the detection 
is a bit more
complex, and the cpu overhead from maintaining the current codepath with an
extra pipe_context::set_sampler_views (et al) isn't high enough to warrant 
further investigation
at this time

fixes #8252

Fixes: 153af03b941 ("gallium: Add cap to request state validation for all dirty 
state")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21176>

---

 src/gallium/drivers/zink/zink_screen.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/gallium/drivers/zink/zink_screen.c 
b/src/gallium/drivers/zink/zink_screen.c
index b7f5399d7d2..0a7a12b47aa 100644
--- a/src/gallium/drivers/zink/zink_screen.c
+++ b/src/gallium/drivers/zink/zink_screen.c
@@ -528,6 +528,7 @@ zink_get_param(struct pipe_screen *pscreen, enum pipe_cap 
param)
    case PIPE_CAP_NATIVE_FENCE_FD:
       return screen->instance_info.have_KHR_external_semaphore_capabilities && 
screen->info.have_KHR_external_semaphore_fd;
 
+   case PIPE_CAP_VALIDATE_ALL_DIRTY_STATES:
    case PIPE_CAP_ALLOW_MAPPED_BUFFERS_DURING_EXECUTION:
    case PIPE_CAP_MAP_UNSYNCHRONIZED_THREAD_SAFE:
    case PIPE_CAP_SHAREABLE_SHADERS:

Reply via email to