On 29.11.2017 15:29, Marek Olšák wrote:
On Wed, Nov 29, 2017 at 10:59 AM, Nicolai Hähnle <[email protected]> wrote:
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.
Better safe than sorry. I think it's better to recover from a bad
scenario than to fail an assertion, considering that assertions aren't
even enabled in release builds. I'll add an assertion into the
conditional block.
Sounds good, thanks :)
Marek
--
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