aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2016-08-05 11:30:15 -0600
committerMark Lobodzinski <mark@lunarg.com>2016-08-08 15:08:25 -0600
commit4dd5a973a5cd8392c32ad7b646d00edc376f6035 (patch)
tree2689a0a7b9075da30adbc3dac76abf8728568c73
parent6554c496bc8b918b56857a5a163112fe8c71a0d3 (diff)
downloadusermoji-4dd5a973a5cd8392c32ad7b646d00edc376f6035.tar.xz
layers: LX578, Add CreateRenderPass format check
Validate that AttachmentDescription.Format is not UNDEFINED. Change-Id: Id348905aadfdc552c3b674a5752cdbc350022d8e
-rw-r--r--layers/image.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/layers/image.cpp b/layers/image.cpp
index a2794d0f..8d789c68 100644
--- a/layers/image.cpp
+++ b/layers/image.cpp
@@ -405,6 +405,13 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass(VkDevice device, const VkRenderP
bool depth_format_present = false;
for (uint32_t i = 0; i < pCreateInfo->attachmentCount; ++i) {
+ if (pCreateInfo->pAttachments[i].format == VK_FORMAT_UNDEFINED) {
+ std::stringstream ss;
+ ss << "vkCreateRenderPass: pCreateInfo->pAttachments[" << i << "].format is VK_FORMAT_UNDEFINED";
+ skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__,
+ IMAGE_RENDERPASS_INVALID_ATTACHMENT, "IMAGE", "%s", ss.str().c_str());
+ }
+
if (!validate_VkImageLayoutKHR(pCreateInfo->pAttachments[i].initialLayout) ||
!validate_VkImageLayoutKHR(pCreateInfo->pAttachments[i].finalLayout)) {
std::stringstream ss;
@@ -413,6 +420,7 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass(VkDevice device, const VkRenderP
skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__,
IMAGE_RENDERPASS_INVALID_ATTACHMENT, "IMAGE", "%s", ss.str().c_str());
}
+
if (!validate_VkAttachmentLoadOp(pCreateInfo->pAttachments[i].loadOp)) {
std::stringstream ss;
ss << "vkCreateRenderPass parameter, VkAttachmentLoadOp in pCreateInfo->pAttachments[" << i << "], is unrecognized";
@@ -420,6 +428,7 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass(VkDevice device, const VkRenderP
skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__,
IMAGE_RENDERPASS_INVALID_ATTACHMENT, "IMAGE", "%s", ss.str().c_str());
}
+
if (!validate_VkAttachmentStoreOp(pCreateInfo->pAttachments[i].storeOp)) {
std::stringstream ss;
ss << "vkCreateRenderPass parameter, VkAttachmentStoreOp in pCreateInfo->pAttachments[" << i << "], is unrecognized";
@@ -427,6 +436,7 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass(VkDevice device, const VkRenderP
skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__,
IMAGE_RENDERPASS_INVALID_ATTACHMENT, "IMAGE", "%s", ss.str().c_str());
}
+
// Any depth buffers specified as attachments?
depth_format_present |= vk_format_is_depth_or_stencil(pCreateInfo->pAttachments[i].format);
}