From 41417a99497b2a27353cd3360456c80d76871bde Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Sat, 24 Jul 2021 13:06:32 -0400 Subject: [PATCH] asahi: Require tiling for cube maps Makes my dEQP happy. Signed-off-by: Alyssa Rosenzweig Part-of: --- src/gallium/drivers/asahi/agx_pipe.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/asahi/agx_pipe.c b/src/gallium/drivers/asahi/agx_pipe.c index bae513b2605..bb4306ed334 100644 --- a/src/gallium/drivers/asahi/agx_pipe.c +++ b/src/gallium/drivers/asahi/agx_pipe.c @@ -137,6 +137,21 @@ agx_is_2d(const struct agx_resource *pres) } } +static bool +agx_must_tile(const struct agx_resource *pres) +{ + switch (pres->base.target) { + case PIPE_TEXTURE_CUBE: + case PIPE_TEXTURE_3D: + /* We don't know how to do linear for these */ + return true; + default: + break; + } + + return false; +} + static bool agx_should_tile(const struct agx_resource *pres) { @@ -155,7 +170,11 @@ agx_should_tile(const struct agx_resource *pres) && (bpp == 32) && ((pres->base.bind & ~valid_binding) == 0); - return can_tile && (pres->base.usage != PIPE_USAGE_STREAM); + bool should_tile = (pres->base.usage != PIPE_USAGE_STREAM); + bool must_tile = agx_must_tile(pres); + + assert(!(must_tile && !can_tile)); + return must_tile || (can_tile && should_tile); } static struct pipe_resource *