From c4d3d210248d7e4765aa42d1a5cd148d487ade9d Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Sun, 16 May 2021 10:38:42 -0400 Subject: [PATCH] zink: clamp clear_buffer values MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Marek Olšák Part-of: --- src/gallium/drivers/zink/zink_clear.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gallium/drivers/zink/zink_clear.c b/src/gallium/drivers/zink/zink_clear.c index 48e0282b5ad..416693f735e 100644 --- a/src/gallium/drivers/zink/zink_clear.c +++ b/src/gallium/drivers/zink/zink_clear.c @@ -33,6 +33,7 @@ #include "util/u_inlines.h" #include "util/u_rect.h" #include "util/u_surface.h" +#include "util/u_helpers.h" static inline bool check_3d_layers(struct pipe_surface *psurf) @@ -434,6 +435,9 @@ zink_clear_buffer(struct pipe_context *pctx, struct zink_context *ctx = zink_context(pctx); struct zink_resource *res = zink_resource(pres); + uint32_t clamped; + if (util_lower_clearsize_to_dword(clear_value, &clear_value_size, &clamped)) + clear_value = &clamped; if (offset % 4 == 0 && size % 4 == 0 && clear_value_size == sizeof(uint32_t)) { /* - dstOffset is the byte offset into the buffer at which to start filling,