diff options
author | Jason Ekstrand <[email protected]> | 2017-03-04 10:07:56 -0800 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2017-03-13 07:57:03 -0700 |
commit | d36b46381754607f954c2cb6ee3843a84d6ca991 (patch) | |
tree | 9ae17769a993afad484ad9d5ad8e52f6c36349dd /src/intel/vulkan/anv_blorp.c | |
parent | f805593b129729e516dea30245612b6a49b8505a (diff) |
anv: Add a helper for working with VK_WHOLE_SIZE for buffers
Reviewed-by: Plamena Manolova <[email protected]>
Diffstat (limited to 'src/intel/vulkan/anv_blorp.c')
-rw-r--r-- | src/intel/vulkan/anv_blorp.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/intel/vulkan/anv_blorp.c b/src/intel/vulkan/anv_blorp.c index d79c5e0e8c6..05790d268cb 100644 --- a/src/intel/vulkan/anv_blorp.c +++ b/src/intel/vulkan/anv_blorp.c @@ -722,11 +722,17 @@ void anv_CmdFillBuffer( struct blorp_batch batch; blorp_batch_init(&cmd_buffer->device->blorp, &batch, cmd_buffer, 0); - if (fillSize == VK_WHOLE_SIZE) { - fillSize = dst_buffer->size - dstOffset; - /* Make sure fillSize is a multiple of 4 */ - fillSize &= ~3ull; - } + fillSize = anv_buffer_get_range(dst_buffer, dstOffset, fillSize); + + /* 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." + */ + fillSize &= ~3ull; /* First, we compute the biggest format that can be used with the * given offsets and size. |