From 2be75cfe63beb94488e8e4d4c952829da610122f Mon Sep 17 00:00:00 2001 From: Konstantin Seurer Date: Fri, 28 Feb 2025 11:18:21 +0100 Subject: [PATCH] lavapipe: Implement 64-bit image clears Reviewed-by: Mike Blumenkrantz Part-of: --- src/gallium/frontends/lavapipe/lvp_execute.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/gallium/frontends/lavapipe/lvp_execute.c b/src/gallium/frontends/lavapipe/lvp_execute.c index e507f3a6346..f6a777397a2 100644 --- a/src/gallium/frontends/lavapipe/lvp_execute.c +++ b/src/gallium/frontends/lavapipe/lvp_execute.c @@ -3034,9 +3034,15 @@ static void handle_clear_color_image(struct vk_cmd_queue_entry *cmd, struct rendering_state *state) { LVP_FROM_HANDLE(lvp_image, image, cmd->u.clear_color_image.image); + + enum pipe_format format = image->planes[0].bo->format; + const struct util_format_description *desc = util_format_description(format); + if (util_format_is_int64(desc)) + format = util_format_get_array(desc->channel[0].type, 32, desc->nr_channels * 2, false, true); + union util_color uc; uint32_t *col_val = uc.ui; - util_pack_color_union(image->planes[0].bo->format, &uc, (void*)cmd->u.clear_color_image.color); + util_pack_color_union(format, &uc, (void*)cmd->u.clear_color_image.color); for (unsigned i = 0; i < cmd->u.clear_color_image.range_count; i++) { VkImageSubresourceRange *range = &cmd->u.clear_color_image.ranges[i]; struct pipe_box box;