On 28.11.2017 22:17, Marek Olšák wrote:
From: Marek Olšák <[email protected]>

---
  src/gallium/drivers/radeonsi/si_descriptors.c | 8 ++++++++
  1 file changed, 8 insertions(+)

diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c 
b/src/gallium/drivers/radeonsi/si_descriptors.c
index 69371ea..471c93a 100644
--- a/src/gallium/drivers/radeonsi/si_descriptors.c
+++ b/src/gallium/drivers/radeonsi/si_descriptors.c
@@ -681,20 +681,28 @@ static void si_set_shader_image_desc(struct si_context 
*ctx,
                                          view->format,
                                          view->u.buf.offset,
                                          view->u.buf.size, desc);
                si_set_buf_desc_address(res, view->u.buf.offset, desc + 4);
        } else {
                static const unsigned char swizzle[4] = { 0, 1, 2, 3 };
                struct r600_texture *tex = (struct r600_texture *)res;
                unsigned level = view->u.tex.level;
                unsigned width, height, depth, hw_level;
                bool uses_dcc = vi_dcc_enabled(tex, level);
+               unsigned access = view->access;
+
+               /* Clear the write flag when writes can't occur.
+                * Note that DCC_DECOMPRESS for MSAA doesn't work in some cases,
+                * so we don't wanna trigger it.
+                */
+               if (tex->is_depth || tex->resource.b.b.nr_samples >= 2)
+                       access &= ~PIPE_IMAGE_ACCESS_WRITE;

Shouldn't this rather be an assert()? Just removing the bit here won't stop the application from attempting to write to it from a shader anyway.

We shouldn't be hitting that assert anyway, since we don't currently support MSAA images.

Cheers,
Nicolai


assert(!tex->is_depth);
                assert(tex->fmask.size == 0);
if (uses_dcc && !skip_decompress &&
                    (view->access & PIPE_IMAGE_ACCESS_WRITE ||
                     !vi_dcc_formats_compatible(res->b.b.format, 
view->format))) {
                        /* If DCC can't be disabled, at least decompress it.
                         * The decompression is relatively cheap if the surface
                         * has been decompressed already.



--
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to