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:
@@ -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),
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user