aboutsummaryrefslogtreecommitdiff
path: root/layers/parameter_validation.cpp
diff options
context:
space:
mode:
authorMaciej Jesionowski <maciej.jesionowski@mobica.com>2016-12-14 11:01:21 +0100
committerMark Lobodzinski <mark@lunarg.com>2016-12-15 11:03:55 -0700
commitba15b1b58b80852f774b490e0af68cdba8d08710 (patch)
tree963249e5ac85d00d3be62e46db9396cede4b4097 /layers/parameter_validation.cpp
parent323dcacf7158263913452888ebf6d1b8232d854a (diff)
downloadusermoji-ba15b1b58b80852f774b490e0af68cdba8d08710.tar.xz
layers: GH1260, SPARSE_BINDING_BIT validation
- add error message for size (error 00663) - add error messages for buffer and image flags (error 00669 and 02160) - remove obsolete TODOs - fix a typo in vkCreateImage validation, add error code Change-Id: I50d6111c4aed1b348119a9664ec299f7c2cb7884
Diffstat (limited to 'layers/parameter_validation.cpp')
-rw-r--r--layers/parameter_validation.cpp31
1 files changed, 18 insertions, 13 deletions
diff --git a/layers/parameter_validation.cpp b/layers/parameter_validation.cpp
index 36dd87dc..62963294 100644
--- a/layers/parameter_validation.cpp
+++ b/layers/parameter_validation.cpp
@@ -2332,20 +2332,13 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateBuffer(VkDevice device, const VkBufferCreat
assert(device_data != nullptr);
debug_report_data *report_data = device_data->report_data;
- // TODO: Add check for VALIDATION_ERROR_00660
- // TODO: Add check for VALIDATION_ERROR_00661
- // TODO: Add check for VALIDATION_ERROR_00662
- // TODO: Add check for VALIDATION_ERROR_00670
- // TODO: Add check for VALIDATION_ERROR_00671
- // TODO: Add check for VALIDATION_ERROR_00672
- // TODO: Add check for VALIDATION_ERROR_00673
- // TODO: Add check for VALIDATION_ERROR_00674
- // TODO: Add check for VALIDATION_ERROR_00675
- // TODO: Note that the above errors need to be generated from the next function, which is codegened.
- // TODO: Add check for VALIDATION_ERROR_00663
skip |= parameter_validation_vkCreateBuffer(report_data, pCreateInfo, pAllocator, pBuffer);
if (pCreateInfo != nullptr) {
+ // Buffer size must be greater than 0 (error 00663)
+ skip |=
+ ValidateGreaterThan(report_data, "vkCreateBuffer", "pCreateInfo->size", static_cast<uint32_t>(pCreateInfo->size), 0u);
+
// Validation for parameters excluded from the generated validation code due to a 'noautovalidity' tag in vk.xml
if (pCreateInfo->sharingMode == VK_SHARING_MODE_CONCURRENT) {
// If sharingMode is VK_SHARING_MODE_CONCURRENT, queueFamilyIndexCount must be greater than 1
@@ -2372,6 +2365,17 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateBuffer(VkDevice device, const VkBufferCreat
skip |= validate_queue_family_indices(device_data, "vkCreateBuffer", "pCreateInfo->pQueueFamilyIndices",
pCreateInfo->queueFamilyIndexCount, pCreateInfo->pQueueFamilyIndices);
}
+
+ // If flags contains VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT or VK_BUFFER_CREATE_SPARSE_ALIASED_BIT, it must also contain
+ // VK_BUFFER_CREATE_SPARSE_BINDING_BIT
+ if (((pCreateInfo->flags & (VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT | VK_BUFFER_CREATE_SPARSE_ALIASED_BIT)) != 0) &&
+ ((pCreateInfo->flags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT) != VK_BUFFER_CREATE_SPARSE_BINDING_BIT)) {
+ skip |=
+ log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0,
+ __LINE__, VALIDATION_ERROR_00669, LayerName,
+ "vkCreateBuffer: if pCreateInfo->flags contains VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT or "
+ "VK_BUFFER_CREATE_SPARSE_ALIASED_BIT, it must also contain VK_BUFFER_CREATE_SPARSE_BINDING_BIT");
+ }
}
if (!skip) {
@@ -2511,8 +2515,9 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateImage(VkDevice device, const VkImageCreateI
if (((pCreateInfo->flags & (VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT | VK_IMAGE_CREATE_SPARSE_ALIASED_BIT)) != 0) &&
((pCreateInfo->flags & VK_IMAGE_CREATE_SPARSE_BINDING_BIT) != VK_IMAGE_CREATE_SPARSE_BINDING_BIT)) {
skip |=
- log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, 1, LayerName,
- "vkCreateImage: pCreateInfo->flags contains VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT or "
+ log_msg(report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0,
+ __LINE__, VALIDATION_ERROR_02160, LayerName,
+ "vkCreateImage: if pCreateInfo->flags contains VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT or "
"VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, it must also contain VK_IMAGE_CREATE_SPARSE_BINDING_BIT");
}
}