diff --git a/.gitlab-ci/traces-panfrost.yml b/.gitlab-ci/traces-panfrost.yml index b4323971199..b6aa7d856f5 100644 --- a/.gitlab-ci/traces-panfrost.yml +++ b/.gitlab-ci/traces-panfrost.yml @@ -57,7 +57,7 @@ traces: - path: 0ad/0ad.trace expectations: - device: gl-panfrost-t860 - checksum: b906fb7b106ff287a1d49614015b6653 + checksum: e159a06f423998ea7fcc0107f0e62f15 - path: glmark2/buffer-columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map.rdc expectations: - device: gl-panfrost-t860 @@ -169,7 +169,7 @@ traces: - path: glmark2/terrain.rdc expectations: - device: gl-panfrost-t860 - checksum: 2e625ceb1a7fdc3cdefae57297999492 + checksum: 3ad257e1db7ad3e5dfd88fb1091ddeae - path: glmark2/texture-texture-filter=linear.rdc expectations: - device: gl-panfrost-t860 diff --git a/src/gallium/drivers/panfrost/pan_mfbd.c b/src/gallium/drivers/panfrost/pan_mfbd.c index d4fbf2ba8a9..c16439af298 100644 --- a/src/gallium/drivers/panfrost/pan_mfbd.c +++ b/src/gallium/drivers/panfrost/pan_mfbd.c @@ -401,6 +401,9 @@ panfrost_mfbd_zs_crc_ext_set_bufs(struct panfrost_batch *batch, } switch (zs_surf->format) { + case PIPE_FORMAT_Z16_UNORM: + ext->zs_write_format = MALI_ZS_FORMAT_D16; + break; case PIPE_FORMAT_Z24_UNORM_S8_UINT: ext->zs_write_format = MALI_ZS_FORMAT_D24S8; break; diff --git a/src/gallium/drivers/panfrost/pan_screen.c b/src/gallium/drivers/panfrost/pan_screen.c index cb3d86587f1..ac0554d8dc5 100644 --- a/src/gallium/drivers/panfrost/pan_screen.c +++ b/src/gallium/drivers/panfrost/pan_screen.c @@ -468,6 +468,10 @@ panfrost_is_format_supported( struct pipe_screen *screen, if (is_bifrost && sample_count > 1) return false; + /* Z16 causes dEQP failures on t720 */ + if (format == PIPE_FORMAT_Z16_UNORM && dev->quirks & MIDGARD_SFBD) + return false; + /* Don't confuse poorly written apps (workaround dEQP bug) that expect * more alpha than they ask for */ diff --git a/src/gallium/drivers/panfrost/pan_sfbd.c b/src/gallium/drivers/panfrost/pan_sfbd.c index d6d7547d0ae..690d8fcff25 100644 --- a/src/gallium/drivers/panfrost/pan_sfbd.c +++ b/src/gallium/drivers/panfrost/pan_sfbd.c @@ -158,6 +158,9 @@ panfrost_sfbd_set_zsbuf( fb->zs_writeback.base = rsrc->bo->ptr.gpu + rsrc->slices[level].offset; fb->zs_writeback.row_stride = rsrc->slices[level].stride * 16; switch (surf->format) { + case PIPE_FORMAT_Z16_UNORM: + fb->zs_format = MALI_ZS_FORMAT_D16; + break; case PIPE_FORMAT_Z24_UNORM_S8_UINT: fb->zs_format = MALI_ZS_FORMAT_D24S8; break; diff --git a/src/panfrost/lib/pan_format.c b/src/panfrost/lib/pan_format.c index 7aae9806cf8..b133442a819 100644 --- a/src/panfrost/lib/pan_format.c +++ b/src/panfrost/lib/pan_format.c @@ -155,6 +155,7 @@ struct panfrost_format panfrost_pipe_format_table[PIPE_FORMAT_COUNT] = { [PIPE_FORMAT_R3G3B2_UNORM] = { MALI_RGB332_UNORM, _VT }, + [PIPE_FORMAT_Z16_UNORM] = { MALI_R16_UNORM, _TZ }, [PIPE_FORMAT_Z24_UNORM_S8_UINT] = { MALI_Z24X8_UNORM, _TZ }, [PIPE_FORMAT_Z24X8_UNORM] = { MALI_Z24X8_UNORM, _TZ }, [PIPE_FORMAT_Z32_FLOAT] = { MALI_R32F, _TZ },