[Bug,110897] HyperZ is broken for r300 (bad z for some micro and macrotiles?)
diff mbox series

Message ID bug-110897-502-0LmyXl4CD3@http.bugs.freedesktop.org/
State New
Headers show
Series
  • [Bug,110897] HyperZ is broken for r300 (bad z for some micro and macrotiles?)
Related show

Commit Message

bugzilla-daemon@freedesktop.org June 14, 2019, 3:11 p.m. UTC
https://bugs.freedesktop.org/show_bug.cgi?id=110897

--- Comment #31 from Richard Thier <u9vata@gmail.com> ---
Created attachment 144545
  --> https://bugs.freedesktop.org/attachment.cgi?id=144545&action=edit
Really no cmask ram it seems

I have faked to have hiz ram and cmask ram just to see what happens.
When I am turning on MSAA now I get this glitches from the shared screenshot so
I guess it is right that my card is just not having CMASK_RAM.

  122     case CHIP_RS480:
  123         caps->zmask_ram = RV3xx_ZMASK_SIZE;
  124         caps->has_cmask = TRUE; /* guessed because there is also HiZ */
  125         caps->hiz_ram = R300_HIZ_LIMIT;
  126         break;

hiz_ram faking seems to have no effect whatsoever.

I have also tried this hack - but it did not help:

     OUT_CS(tex->tex.hiz_dwords[fb->zsbuf->u.tex.level]);
@@ -1246,6 +1250,9 @@ void r300_emit_zmask_clear(struct r300_context *r300,
unsigned size, void *state
     tex = r300_resource(fb->zsbuf->texture);

     BEGIN_CS(size);
+    OUT_CS_REG(R300_ZB_ZCACHE_CTLSTAT,
+        R300_ZB_ZCACHE_CTLSTAT_ZC_FLUSH_FLUSH_AND_FREE |
+        R300_ZB_ZCACHE_CTLSTAT_ZC_FREE_FREE);
     OUT_CS_PKT3(R300_PACKET3_3D_CLEAR_ZMASK, 2);
     OUT_CS(0);
     OUT_CS(tex->tex.zmask_dwords[fb->zsbuf->u.tex.level]);

Patch
diff mbox series

diff --git a/src/gallium/drivers/r300/r300_emit.c
b/src/gallium/drivers/r300/r300_emit.c
index 80c959b95d0..48fafecfdda 100644
--- a/src/gallium/drivers/r300/r300_emit.c
+++ b/src/gallium/drivers/r300/r300_emit.c
@@ -1224,6 +1224,10 @@  void r300_emit_hiz_clear(struct r300_context *r300,
unsigned size, void *state)
     tex = r300_resource(fb->zsbuf->texture);

     BEGIN_CS(size);
+    // FIXME: Remove this hack!
+    OUT_CS_REG(R300_ZB_ZCACHE_CTLSTAT,
+        R300_ZB_ZCACHE_CTLSTAT_ZC_FLUSH_FLUSH_AND_FREE |
+        R300_ZB_ZCACHE_CTLSTAT_ZC_FREE_FREE);
     OUT_CS_PKT3(R300_PACKET3_3D_CLEAR_HIZ, 2);
     OUT_CS(0);