layers: Added vu checks for imageless framebuffer
VUs that intersected with VK_EXT_fragment_density_map have been
left out, as there's currently no infrastructure for this extension.
However, appropriate VUs have been added for when this extension is
not enabled.
diff --git a/layers/object_tracker_utils.cpp b/layers/object_tracker_utils.cpp
index 964f6e6..ae7c724 100644
--- a/layers/object_tracker_utils.cpp
+++ b/layers/object_tracker_utils.cpp
@@ -938,3 +938,29 @@
return skip;
}
+
+bool ObjectLifetimes::PreCallValidateCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo *pCreateInfo,
+ const VkAllocationCallbacks *pAllocator, VkFramebuffer *pFramebuffer) {
+ bool skip = false;
+ skip |=
+ ValidateObject(device, device, kVulkanObjectTypeDevice, false, "VUID-vkCreateFramebuffer-device-parameter", kVUIDUndefined);
+ if (pCreateInfo) {
+ skip |= ValidateObject(device, pCreateInfo->renderPass, kVulkanObjectTypeRenderPass, false,
+ "VUID-VkFramebufferCreateInfo-renderPass-parameter", "VUID-VkFramebufferCreateInfo-commonparent");
+ if ((pCreateInfo->flags & VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR) == 0) {
+ for (uint32_t index1 = 0; index1 < pCreateInfo->attachmentCount; ++index1) {
+ skip |= ValidateObject(device, pCreateInfo->pAttachments[index1], kVulkanObjectTypeImageView, true, kVUIDUndefined,
+ "VUID-VkFramebufferCreateInfo-commonparent");
+ }
+ }
+ }
+
+ return skip;
+}
+
+void ObjectLifetimes::PostCallRecordCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo *pCreateInfo,
+ const VkAllocationCallbacks *pAllocator, VkFramebuffer *pFramebuffer,
+ VkResult result) {
+ if (result != VK_SUCCESS) return;
+ CreateObject(device, *pFramebuffer, kVulkanObjectTypeFramebuffer, pAllocator);
+}