diff options
| author | Mike Stroyan <stroyan@google.com> | 2016-02-22 09:15:19 -0700 |
|---|---|---|
| committer | Tobin Ehlis <tobine@google.com> | 2016-02-24 08:58:35 -0700 |
| commit | 83614d6a16e069c3ac3d0e7add4832b0dfe59079 (patch) | |
| tree | f15ce91880fa46ac8193c16059593aa06eab525f | |
| parent | 7a9764bdabc4768b1a95245bd30755f39b924f53 (diff) | |
| download | usermoji-83614d6a16e069c3ac3d0e7add4832b0dfe59079.tar.xz | |
layers: draw_state VK_WHOLE_SIZE in barriers
Allow use of VK_WHOLE_SIZE in barriers validation.
| -rw-r--r-- | layers/draw_state.cpp | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp index b67e9964..ffe239b2 100644 --- a/layers/draw_state.cpp +++ b/layers/draw_state.cpp @@ -6335,19 +6335,31 @@ VkBool32 ValidateBarriers(VkCommandBuffer cmdBuffer, uint32_t memBarrierCount, ? reinterpret_cast<uint64_t &>( buffer_data->second.create_info->size) : 0; - if (buffer_data != dev_data->bufferMap.end() && - mem_barrier->offset + mem_barrier->size > buffer_size) { - skip_call |= - log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, - (VkDebugReportObjectTypeEXT)0, 0, __LINE__, - DRAWSTATE_INVALID_BARRIER, "DS", - "Buffer Barrier 0x%" PRIx64 " has offset %" PRIu64 - " and size %" PRIu64 - " whose sum is greater than total size %" PRIu64 ".", - reinterpret_cast<const uint64_t &>(mem_barrier->buffer), - reinterpret_cast<const uint64_t &>(mem_barrier->offset), - reinterpret_cast<const uint64_t &>(mem_barrier->size), - buffer_size); + if (buffer_data != dev_data->bufferMap.end()) { + if (mem_barrier->offset >= buffer_size) { + skip_call |= + log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, + (VkDebugReportObjectTypeEXT)0, 0, __LINE__, + DRAWSTATE_INVALID_BARRIER, "DS", + "Buffer Barrier 0x%" PRIx64 " has offset %" PRIu64 + " whose sum is not less than total size %" PRIu64 ".", + reinterpret_cast<const uint64_t &>(mem_barrier->buffer), + reinterpret_cast<const uint64_t &>(mem_barrier->offset), + buffer_size); + } else if (mem_barrier->size != VK_WHOLE_SIZE && + (mem_barrier->offset + mem_barrier->size > buffer_size)) { + skip_call |= + log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, + (VkDebugReportObjectTypeEXT)0, 0, __LINE__, + DRAWSTATE_INVALID_BARRIER, "DS", + "Buffer Barrier 0x%" PRIx64 " has offset %" PRIu64 + " and size %" PRIu64 + " whose sum is greater than total size %" PRIu64 ".", + reinterpret_cast<const uint64_t &>(mem_barrier->buffer), + reinterpret_cast<const uint64_t &>(mem_barrier->offset), + reinterpret_cast<const uint64_t &>(mem_barrier->size), + buffer_size); + } } } return skip_call; |
