From 6e069d1c3febebb7996240ad5ce76b352ea2fe8d Mon Sep 17 00:00:00 2001 From: Boris Brezillon Date: Thu, 12 Nov 2020 16:03:24 +0100 Subject: [PATCH] panfrost: Fix panfrost_format_to_bifrost_blend() panfrost_format_to_bifrost_blend() shouldn't return a pipe_format, but a mali_format. Signed-off-by: Boris Brezillon Reviewed-by: Alyssa Rosenzweig Part-of: --- src/gallium/drivers/panfrost/pan_blend_shaders.c | 7 ++++--- src/gallium/drivers/panfrost/pan_cmdstream.c | 2 +- src/panfrost/lib/pan_blit.c | 2 +- src/panfrost/lib/pan_format.c | 5 +++-- src/panfrost/lib/pan_texture.h | 4 +++- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/gallium/drivers/panfrost/pan_blend_shaders.c b/src/gallium/drivers/panfrost/pan_blend_shaders.c index 7d036be7729..93570bf6b50 100644 --- a/src/gallium/drivers/panfrost/pan_blend_shaders.c +++ b/src/gallium/drivers/panfrost/pan_blend_shaders.c @@ -219,7 +219,8 @@ panfrost_create_blend_shader(struct panfrost_context *ctx, } static uint64_t -bifrost_get_blend_desc(enum pipe_format fmt, unsigned rt) +bifrost_get_blend_desc(const struct panfrost_device *dev, + enum pipe_format fmt, unsigned rt) { const struct util_format_description *desc = util_format_description(fmt); uint64_t res; @@ -263,7 +264,7 @@ bifrost_get_blend_desc(enum pipe_format fmt, unsigned rt) desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB; cfg.fixed_function.conversion.memory_format.format = - panfrost_format_to_bifrost_blend(desc, true); + panfrost_format_to_bifrost_blend(dev, desc, true); } return res; @@ -299,7 +300,7 @@ panfrost_compile_blend_shader(struct panfrost_blend_shader *shader, if (dev->quirks & IS_BIFROST) { inputs.blend.bifrost_blend_desc = - bifrost_get_blend_desc(shader->key.format, shader->key.rt); + bifrost_get_blend_desc(dev, shader->key.format, shader->key.rt); program = bifrost_compile_shader_nir(NULL, shader->nir, &inputs); } else { program = midgard_compile_shader_nir(NULL, shader->nir, &inputs); diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c index 9d043211f70..fed8d652ca2 100644 --- a/src/gallium/drivers/panfrost/pan_cmdstream.c +++ b/src/gallium/drivers/panfrost/pan_cmdstream.c @@ -301,7 +301,7 @@ panfrost_emit_bifrost_blend(struct panfrost_batch *batch, */ cfg.bifrost.internal.fixed_function.num_comps = 4; cfg.bifrost.internal.fixed_function.conversion.memory_format.format = - panfrost_format_to_bifrost_blend(format_desc, true); + panfrost_format_to_bifrost_blend(dev, format_desc, true); if (dev->quirks & HAS_SWIZZLES) { cfg.bifrost.internal.fixed_function.conversion.memory_format.swizzle = panfrost_get_default_swizzle(4); diff --git a/src/panfrost/lib/pan_blit.c b/src/panfrost/lib/pan_blit.c index 7ef69d95723..595d094d692 100644 --- a/src/panfrost/lib/pan_blit.c +++ b/src/panfrost/lib/pan_blit.c @@ -570,7 +570,7 @@ bifrost_load_emit_blend_rt(struct pan_pool *pool, void *out, cfg.bifrost.equation.color_mask = 0xf; cfg.bifrost.internal.fixed_function.num_comps = 4; cfg.bifrost.internal.fixed_function.conversion.memory_format.format = - panfrost_format_to_bifrost_blend(format_desc, true); + panfrost_format_to_bifrost_blend(pool->dev, format_desc, true); cfg.bifrost.internal.fixed_function.conversion.register_format = blit_type_to_reg_fmt(T); diff --git a/src/panfrost/lib/pan_format.c b/src/panfrost/lib/pan_format.c index 08fcbbc7bf1..6777661bbb4 100644 --- a/src/panfrost/lib/pan_format.c +++ b/src/panfrost/lib/pan_format.c @@ -673,13 +673,14 @@ panfrost_invert_swizzle(const unsigned char *in, unsigned char *out) } enum mali_format -panfrost_format_to_bifrost_blend(const struct util_format_description *desc, bool dither) +panfrost_format_to_bifrost_blend(const struct panfrost_device *dev, + const struct util_format_description *desc, bool dither) { struct pan_blendable_format fmt = panfrost_blend_format(desc->format); /* Formats requiring blend shaders are stored raw in the tilebuffer */ if (!fmt.internal) - return desc->format; + return MALI_EXTRACT_INDEX(dev->formats[desc->format].hw); /* Else, pick the pixel format matching the tilebuffer format */ switch (fmt.internal) { diff --git a/src/panfrost/lib/pan_texture.h b/src/panfrost/lib/pan_texture.h index 1135fadc5f3..f7da2a13dc9 100644 --- a/src/panfrost/lib/pan_texture.h +++ b/src/panfrost/lib/pan_texture.h @@ -191,7 +191,9 @@ panfrost_bifrost_swizzle(unsigned components) } enum mali_format -panfrost_format_to_bifrost_blend(const struct util_format_description *desc, bool dither); +panfrost_format_to_bifrost_blend(const struct panfrost_device *dev, + const struct util_format_description *desc, + bool dither); struct pan_pool; struct pan_scoreboard;