aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorBoris Brezillon <[email protected]>2020-01-31 10:59:23 +0100
committerMarge Bot <[email protected]>2020-02-05 15:41:55 +0000
commit0406ea4856498c25479b1e1b191471f7222747d6 (patch)
treea6a2cc7fbc1f976633fbd56854082b3eca40d914 /src/gallium
parente1ba0cd452cb456e5d06ee22fdecaed451a7a48b (diff)
panfrost: Z24 variants should be sampled as R32UI
Midgard has no dedicated samplers for Z24S8 and Z24X8 formats, and the GPU expects the depth to be encoded in an IEEE 32-bit float. Turn all Z24_UNORM variants into R32UI and let the shader do the conversion using bfe+fmul instructions. Signed-off-by: Boris Brezillon <[email protected]> Reviewed-by: Alyssa Rosenzweig <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3697>
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/panfrost/pan_format.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/gallium/drivers/panfrost/pan_format.c b/src/gallium/drivers/panfrost/pan_format.c
index b4fb38fefed..4f138ca4027 100644
--- a/src/gallium/drivers/panfrost/pan_format.c
+++ b/src/gallium/drivers/panfrost/pan_format.c
@@ -186,9 +186,17 @@ panfrost_find_format(const struct util_format_description *desc) {
return MALI_RGB10_A2I;
case PIPE_FORMAT_Z32_UNORM:
+ return MALI_Z32_UNORM;
+
case PIPE_FORMAT_Z24X8_UNORM:
case PIPE_FORMAT_Z24_UNORM_S8_UINT:
- return MALI_Z32_UNORM;
+ /* Midgard has no dedicated samplers for Z24S8 and Z24X8
+ * formats, and the GPU expects the depth to be encoded in an
+ * IEEE 32-bit float. Turn all Z24_UNORM variants into R32UI
+ * and let the shader do the conversion using bfe+fmul
+ * instructions.
+ */
+ return MALI_R32UI;
case PIPE_FORMAT_Z32_FLOAT_S8X24_UINT:
/* Z32F = R32F to the hardware */