From f17948a30a339b4196806de795c25a29058ecdc2 Mon Sep 17 00:00:00 2001 From: Nicolas Koch Date: Tue, 20 Sep 2016 17:37:36 +0200 Subject: [PATCH] anv: Check for VK_WHOLE_SIZE in anv_CmdFillBuffer From the Vulkan spec: Size is the number of bytes to fill, and must be either a multiple of 4, or VK_WHOLE_SIZE to fill the range from offset to the end of the buffer. If VK_WHOLE_SIZE is used and the remaining size of the buffer is not a multiple of 4, then the nearest smaller multiple is used. Reviewed-by: Jason Ekstrand --- src/intel/vulkan/anv_meta_clear.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/intel/vulkan/anv_meta_clear.c b/src/intel/vulkan/anv_meta_clear.c index ed4d1db9d45..fd0797f31d7 100644 --- a/src/intel/vulkan/anv_meta_clear.c +++ b/src/intel/vulkan/anv_meta_clear.c @@ -1012,6 +1012,12 @@ void anv_CmdFillBuffer( meta_clear_begin(&saved_state, cmd_buffer); + if (fillSize == VK_WHOLE_SIZE) { + fillSize = dst_buffer->size - dstOffset; + /* Make sure fillSize is a multiple of 4 */ + fillSize -= fillSize & 3; + } + VkFormat format; int bs; if ((fillSize & 15) == 0 && (dstOffset & 15) == 0) { -- 2.30.2