aboutsummaryrefslogtreecommitdiff
path: root/layers/core_validation.cpp
diff options
context:
space:
mode:
authorTobin Ehlis <tobine@google.com>2016-12-13 12:16:58 -0700
committerTobin Ehlis <tobine@google.com>2016-12-13 16:12:40 -0700
commitf838e3f0b49f56c074815e4fb39ecbef2c72e614 (patch)
tree7e914f0f7ba4cf9522463cf1b6a707c0144e3dce /layers/core_validation.cpp
parent7caf98ae82679b091e9880e6822e457ad678d5de (diff)
downloadusermoji-f838e3f0b49f56c074815e4fb39ecbef2c72e614.tar.xz
layers:Warn on buffer/image aliasing
The Buffer-Image Granularity section of the spec details what must be done to avoid having a linear buffer alias with a tiled image, but it does not state that such aliasing is a definite error. Demoting this check to a warning.
Diffstat (limited to 'layers/core_validation.cpp')
-rw-r--r--layers/core_validation.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp
index 213a1b2f..9cedb1d9 100644
--- a/layers/core_validation.cpp
+++ b/layers/core_validation.cpp
@@ -5572,17 +5572,19 @@ static bool rangesIntersect(layer_data const *dev_data, MEMORY_RANGE const *rang
return false;
if (range1->linear != range2->linear) {
- // In linear vs. non-linear case, it's an error to alias
+ // In linear vs. non-linear case, warn of aliasing
const char *r1_linear_str = range1->linear ? "Linear" : "Non-linear";
const char *r1_type_str = range1->image ? "image" : "buffer";
const char *r2_linear_str = range2->linear ? "linear" : "non-linear";
const char *r2_type_str = range2->image ? "image" : "buffer";
auto obj_type = range1->image ? VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT : VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT;
- *skip_call |=
- log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, obj_type, range1->handle, 0, MEMTRACK_INVALID_ALIASING,
- "MEM", "%s %s 0x%" PRIx64 " is aliased with %s %s 0x%" PRIx64
- " which is in violation of the Buffer-Image Granularity section of the Vulkan specification.",
- r1_linear_str, r1_type_str, range1->handle, r2_linear_str, r2_type_str, range2->handle);
+ *skip_call |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_WARNING_BIT_EXT, obj_type, range1->handle, 0,
+ MEMTRACK_INVALID_ALIASING, "MEM", "%s %s 0x%" PRIx64 " is aliased with %s %s 0x%" PRIx64
+ " which may indicate a bug. For further info refer to the "
+ "Buffer-Image Granularity section of the Vulkan specification. "
+ "(https://www.khronos.org/registry/vulkan/specs/1.0-extensions/"
+ "xhtml/vkspec.html#resources-bufferimagegranularity)",
+ r1_linear_str, r1_type_str, range1->handle, r2_linear_str, r2_type_str, range2->handle);
}
// Ranges intersect
return true;