aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Stroyan <stroyan@google.com>2016-02-22 09:15:19 -0700
committerTobin Ehlis <tobine@google.com>2016-02-24 08:58:35 -0700
commit83614d6a16e069c3ac3d0e7add4832b0dfe59079 (patch)
treef15ce91880fa46ac8193c16059593aa06eab525f
parent7a9764bdabc4768b1a95245bd30755f39b924f53 (diff)
downloadusermoji-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.cpp38
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;