From 280c777fd7930de70ea3ebf6b7d1298fae4ab53d Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Tue, 2 Jul 2019 10:50:00 -0700 Subject: [PATCH] panfrost/mfbd: Handle pure int formats We see that the render target itself turns out to be typeless (surprise!) Signed-off-by: Alyssa Rosenzweig --- src/gallium/drivers/panfrost/pan_mfbd.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/gallium/drivers/panfrost/pan_mfbd.c b/src/gallium/drivers/panfrost/pan_mfbd.c index f262f6a592d..d35e6ebf4de 100644 --- a/src/gallium/drivers/panfrost/pan_mfbd.c +++ b/src/gallium/drivers/panfrost/pan_mfbd.c @@ -82,19 +82,31 @@ panfrost_mfbd_format(struct pipe_surface *surf) /* Set flags for alternative formats */ bool float_16 = - surf->format == PIPE_FORMAT_R16_FLOAT; + surf->format == PIPE_FORMAT_R16_FLOAT || + surf->format == PIPE_FORMAT_R16_UINT || + surf->format == PIPE_FORMAT_R16_SINT; bool float_32 = surf->format == PIPE_FORMAT_R11G11B10_FLOAT || + surf->format == PIPE_FORMAT_R16G16_FLOAT || + surf->format == PIPE_FORMAT_R16G16_UINT || + surf->format == PIPE_FORMAT_R16G16_SINT || surf->format == PIPE_FORMAT_R32_FLOAT || - surf->format == PIPE_FORMAT_R16G16_FLOAT; + surf->format == PIPE_FORMAT_R32_UINT || + surf->format == PIPE_FORMAT_R32_SINT; bool float_64 = surf->format == PIPE_FORMAT_R32G32_FLOAT || - surf->format == PIPE_FORMAT_R16G16B16A16_FLOAT; + surf->format == PIPE_FORMAT_R32G32_SINT || + surf->format == PIPE_FORMAT_R32G32_UINT || + surf->format == PIPE_FORMAT_R16G16B16A16_FLOAT || + surf->format == PIPE_FORMAT_R16G16B16A16_SINT || + surf->format == PIPE_FORMAT_R16G16B16A16_UINT; bool float_128 = - surf->format == PIPE_FORMAT_R32G32B32A32_FLOAT; + surf->format == PIPE_FORMAT_R32G32B32A32_FLOAT || + surf->format == PIPE_FORMAT_R32G32B32A32_SINT || + surf->format == PIPE_FORMAT_R32G32B32A32_UINT; if (surf->format == PIPE_FORMAT_B5G6R5_UNORM) { fmt.unk1 = 0x14000000; -- 2.11.0