Module: Mesa
Branch: master
Commit: 9c136e8a07b10ce0c034cbeab1180ae2b4d89bf7
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9c136e8a07b10ce0c034cbeab1180ae2b4d89bf7

Author: Gurchetan Singh <[email protected]>
Date:   Tue Jul 10 16:19:24 2018 -0700

virgl: also mark sampler views as dirty

When texture buffers are used as images in compute shaders, the guest
never sees the modified data since the TBO is always marked as clean.

Fixes most dEQP-GLES31.functional.image_load_store.buffer.* tests.

Example test cases:
   dEQP-GLES31.functional.image_load_store.buffer.load_store.r32ui
   dEQP-GLES31.functional.image_load_store.buffer.qualifiers.coherent_r32f
   
dEQP-GLES31.functional.image_load_store.buffer.format_reinterpret.rgba8_rgba8ui

Note: virglrenderer side patch also needed to bind TBOs correctly

Reviewed-by: Dave Airlie <[email protected]>

---

 src/gallium/drivers/virgl/virgl_buffer.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/virgl/virgl_buffer.c 
b/src/gallium/drivers/virgl/virgl_buffer.c
index 3288bb20bd..88a22b56f9 100644
--- a/src/gallium/drivers/virgl/virgl_buffer.c
+++ b/src/gallium/drivers/virgl/virgl_buffer.c
@@ -164,7 +164,8 @@ struct pipe_resource *virgl_buffer_create(struct 
virgl_screen *vs,
    vbind = pipe_to_virgl_bind(template->bind);
    size = template->width0;
 
-   if (vbind == VIRGL_BIND_SHADER_BUFFER)
+   /* SSBOs and texture buffers can written to by host compute shaders. */
+   if (vbind == VIRGL_BIND_SHADER_BUFFER || vbind == VIRGL_BIND_SAMPLER_VIEW)
       buf->base.clean = FALSE;
    buf->base.hw_res = vs->vws->resource_create(vs->vws, template->target, 
template->format, vbind, template->width0, 1, 1, 1, 0, 0, size);
 

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to