diff --git a/src/asahi/layout/formats.c b/src/asahi/layout/formats.c index fffa95adeb2..e272b79ab56 100644 --- a/src/asahi/layout/formats.c +++ b/src/asahi/layout/formats.c @@ -142,9 +142,7 @@ const struct ail_pixel_format_entry ail_pixel_format[PIPE_FORMAT_COUNT] = { AIL_FMT(B10G10R10A2_SINT, R10G10B10A2, SINT, _), AIL_FMT(R11G11B10_FLOAT, R11G11B10, FLOAT, RG11B10F), - - /* TODO: This should be renderable but there are copyimage issues */ - AIL_FMT(R9G9B9E5_FLOAT, R9G9B9E5, FLOAT, _), + AIL_FMT(R9G9B9E5_FLOAT, R9G9B9E5, FLOAT, RGB9E5), /* These formats are emulated for texture buffers only */ AIL_FMT(R32G32B32_FLOAT, R32G32B32_EMULATED, FLOAT, _), diff --git a/src/gallium/drivers/asahi/agx_pipe.c b/src/gallium/drivers/asahi/agx_pipe.c index 46faa641acb..018beacea83 100644 --- a/src/gallium/drivers/asahi/agx_pipe.c +++ b/src/gallium/drivers/asahi/agx_pipe.c @@ -27,6 +27,7 @@ #include "pipe/p_state.h" #include "util/bitscan.h" #include "util/format/u_format.h" +#include "util/format/u_formats.h" #include "util/half_float.h" #include "util/macros.h" #include "util/simple_mtx.h" @@ -429,6 +430,11 @@ agx_compression_allowed(const struct agx_resource *pres) return false; } + if (pres->base.format == PIPE_FORMAT_R9G9B9E5_FLOAT) { + rsrc_debug(pres, "No compression: RGB9E5 copies need work\n"); + return false; + } + return true; } @@ -2496,7 +2502,9 @@ agx_is_format_supported(struct pipe_screen *pscreen, enum pipe_format format, target != PIPE_BUFFER) return false; - if ((usage & PIPE_BIND_RENDER_TARGET) && !ent.renderable) + /* XXX: sort out rgb9e5 rendering */ + if ((usage & PIPE_BIND_RENDER_TARGET) && + (!ent.renderable || (tex_format == PIPE_FORMAT_R9G9B9E5_FLOAT))) return false; }