[Mesa-dev] [PATCH] anv: Check for VK_WHOLE_SIZE in anv_CmdFillBuffer

Nicolas Koch nioko1337 at gmail.com
Tue Sep 20 15:37:36 UTC 2016


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.
---
 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 ed4d1db..fd0797f 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.10.0



More information about the mesa-dev mailing list