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

Author: Erico Nunes <[email protected]>
Date:   Thu May 13 01:40:46 2021 +0200

lima: enable z16 format

Other than listing the format as supported, an extra detail is to unset
one bit in the render state depth_test when a z16 texture needs to be
reloaded before rendering, following the mali blob behavior.

Signed-off-by: Erico Nunes <[email protected]>
Reviewed-by: Vasily Khoruzhick <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10791>

---

 src/gallium/drivers/lima/lima_format.c | 2 ++
 src/gallium/drivers/lima/lima_job.c    | 3 ++-
 src/gallium/drivers/lima/lima_screen.c | 1 +
 3 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/lima/lima_format.c 
b/src/gallium/drivers/lima/lima_format.c
index 2b0167a425f..3f07ea7419a 100644
--- a/src/gallium/drivers/lima/lima_format.c
+++ b/src/gallium/drivers/lima/lima_format.c
@@ -108,6 +108,7 @@ static const struct lima_format lima_texel_formats[] = {
    LIMA_TEXEL_FORMAT(B4G4R4A4_UNORM,     BGRA_4444, false, SWIZ(X, Y, Z, W)),
    LIMA_TEXEL_FORMAT(Z24_UNORM_S8_UINT,  Z24X8,     false, SWIZ(X, Y, Z, W)),
    LIMA_TEXEL_FORMAT(Z24X8_UNORM,        Z24X8,     false, SWIZ(X, Y, Z, W)),
+   LIMA_TEXEL_FORMAT(Z16_UNORM,          L16,       false, SWIZ(X, Y, Z, W)),
    LIMA_TEXEL_FORMAT(L16_UNORM,          L16,       false, SWIZ(X, Y, Z, W)),
    LIMA_TEXEL_FORMAT(L8_UNORM,           L8,        false, SWIZ(X, Y, Z, W)),
    LIMA_TEXEL_FORMAT(A16_UNORM,          A16,       false, SWIZ(X, Y, Z, W)),
@@ -138,6 +139,7 @@ static const struct lima_format lima_pixel_formats[] = {
    LIMA_PIXEL_FORMAT(B4G4R4A4_UNORM,     B4G4R4A4, false, 0x8444),
    LIMA_PIXEL_FORMAT(R8_UNORM,           B8,       true,  0x8888),
    LIMA_PIXEL_FORMAT(R8G8_UNORM,         G8B8,     true,  0x8888),
+   LIMA_PIXEL_FORMAT(Z16_UNORM,          Z16,      false, 0x0000),
    LIMA_PIXEL_FORMAT(Z24_UNORM_S8_UINT,  Z24S8,    false, 0x0000),
    LIMA_PIXEL_FORMAT(Z24X8_UNORM,        Z24S8,    false, 0x0000),
    LIMA_PIXEL_FORMAT(R16G16B16A16_FLOAT, B16G16R16A16_FLOAT, true, 0x0000),
diff --git a/src/gallium/drivers/lima/lima_job.c 
b/src/gallium/drivers/lima/lima_job.c
index a74e2bb91e9..0d01d9abb05 100644
--- a/src/gallium/drivers/lima/lima_job.c
+++ b/src/gallium/drivers/lima/lima_job.c
@@ -375,7 +375,8 @@ lima_pack_reload_plbu_cmd(struct lima_job *job, struct 
pipe_surface *psurf)
 
    if (util_format_is_depth_or_stencil(psurf->format)) {
       reload_render_state.alpha_blend &= 0x0fffffff;
-      reload_render_state.depth_test |= 0x400;
+      if (psurf->format != PIPE_FORMAT_Z16_UNORM)
+         reload_render_state.depth_test |= 0x400;
       if (surf->reload & PIPE_CLEAR_DEPTH)
          reload_render_state.depth_test |= 0x801;
       if (surf->reload & PIPE_CLEAR_STENCIL) {
diff --git a/src/gallium/drivers/lima/lima_screen.c 
b/src/gallium/drivers/lima/lima_screen.c
index 9a9dea043c8..d6265c539ca 100644
--- a/src/gallium/drivers/lima/lima_screen.c
+++ b/src/gallium/drivers/lima/lima_screen.c
@@ -331,6 +331,7 @@ lima_screen_is_format_supported(struct pipe_screen *pscreen,
 
    if (usage & PIPE_BIND_DEPTH_STENCIL) {
       switch (format) {
+      case PIPE_FORMAT_Z16_UNORM:
       case PIPE_FORMAT_Z24_UNORM_S8_UINT:
       case PIPE_FORMAT_Z24X8_UNORM:
          break;

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

Reply via email to