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 <nunes.erico@gmail.com>
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10791>
This commit is contained in:
Erico Nunes
2021-05-13 01:40:46 +02:00
parent ebba3cad81
commit 1fc7575cc1
3 changed files with 5 additions and 1 deletions
+2
View File
@@ -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),
+2 -1
View File
@@ -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) {
+1
View File
@@ -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;