v142: Bug 14275 - Remove image layouts in VkFramebufferCreateInfo
diff --git a/demos/cube.c b/demos/cube.c
index a848bcc..2c1acd3 100644
--- a/demos/cube.c
+++ b/demos/cube.c
@@ -1772,16 +1772,9 @@
static void demo_prepare_framebuffers(struct demo *demo)
{
- VkAttachmentBindInfo attachments[2] = {
- [0] = {
- .view.handle = VK_NULL_HANDLE,
- .layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
- },
- [1] = {
- .view = demo->depth.view,
- .layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
- },
- };
+ VkAttachmentView attachments[2];
+ attachments[1] = demo->depth.view;
+
const VkFramebufferCreateInfo fb_info = {
.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,
.pNext = NULL,
@@ -1796,7 +1789,7 @@
uint32_t i;
for (i = 0; i < DEMO_BUFFER_COUNT; i++) {
- attachments[0].view = demo->buffers[i].view;
+ attachments[0] = demo->buffers[i].view;
err = vkCreateFramebuffer(demo->device, &fb_info, &demo->framebuffers[i]);
assert(!err);
}
diff --git a/demos/tri.c b/demos/tri.c
index 6c094ff..134e261 100644
--- a/demos/tri.c
+++ b/demos/tri.c
@@ -1394,16 +1394,9 @@
static void demo_prepare_framebuffers(struct demo *demo)
{
- VkAttachmentBindInfo attachments[2] = {
- [0] = {
- .view.handle = VK_NULL_HANDLE,
- .layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
- },
- [1] = {
- .view = demo->depth.view,
- .layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
- },
- };
+ VkAttachmentView attachments[2];
+ attachments[1] = demo->depth.view;
+
const VkFramebufferCreateInfo fb_info = {
.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,
.pNext = NULL,
@@ -1418,7 +1411,7 @@
uint32_t i;
for (i = 0; i < DEMO_BUFFER_COUNT; i++) {
- attachments[0].view = demo->buffers[i].view;
+ attachments[0]= demo->buffers[i].view;
err = vkCreateFramebuffer(demo->device, &fb_info, &demo->framebuffers[i]);
assert(!err);
}
diff --git a/icd/intel/fb.c b/icd/intel/fb.c
index 06683fa..762d65b 100644
--- a/icd/intel/fb.c
+++ b/icd/intel/fb.c
@@ -61,14 +61,9 @@
array_size = info->layers;
for (i = 0; i < info->attachmentCount; i++) {
- const VkAttachmentBindInfo *att = &info->pAttachments[i];
- const struct intel_att_view *view = intel_att_view(att->view);
- const struct intel_layout *layout = &view->img->layout;
+ const VkAttachmentView *att = &info->pAttachments[i];
+ const struct intel_att_view *view = intel_att_view(*att);
- if (width > layout->width0)
- width = layout->width0;
- if (height > layout->height0)
- height = layout->height0;
if (array_size > view->array_size)
array_size = view->array_size;
diff --git a/include/vulkan.h b/include/vulkan.h
index 36d8b2c..33ccde7 100644
--- a/include/vulkan.h
+++ b/include/vulkan.h
@@ -41,14 +41,14 @@
((major << 22) | (minor << 12) | patch)
// Vulkan API version supported by this file
-#define VK_API_VERSION VK_MAKE_VERSION(0, 140, 0)
+#define VK_API_VERSION VK_MAKE_VERSION(0, 142, 0)
#define VK_DEFINE_HANDLE(obj) typedef struct obj##_T* obj;
#if defined(__cplusplus)
- #if (_MSC_VER >= 1800 || __cplusplus >= 201103L)
+ #if ((defined(_MSC_VER) && _MSC_VER >= 1800) || __cplusplus >= 201103L)
// The bool operator only works if there are no implicit conversions from an obj to
// a bool-compatible type, which can then be used to unintentionally violate type safety.
// C++11 and above supports the "explicit" keyword on conversion operators to stop this
@@ -1860,16 +1860,11 @@
} VkDynamicDepthStencilStateCreateInfo;
typedef struct {
- VkAttachmentView view;
- VkImageLayout layout;
-} VkAttachmentBindInfo;
-
-typedef struct {
VkStructureType sType;
const void* pNext;
VkRenderPass renderPass;
uint32_t attachmentCount;
- const VkAttachmentBindInfo* pAttachments;
+ const VkAttachmentView* pAttachments;
uint32_t width;
uint32_t height;
uint32_t layers;
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index e17a36e..b8b9df1 100644
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -2783,8 +2783,8 @@
// Shadow create info and store in map
VkFramebufferCreateInfo* localFBCI = new VkFramebufferCreateInfo(*pCreateInfo);
if (pCreateInfo->pAttachments) {
- localFBCI->pAttachments = new VkAttachmentBindInfo[localFBCI->attachmentCount];
- memcpy((void*)localFBCI->pAttachments, pCreateInfo->pAttachments, localFBCI->attachmentCount*sizeof(VkAttachmentBindInfo));
+ localFBCI->pAttachments = new VkAttachmentView[localFBCI->attachmentCount];
+ memcpy((void*)localFBCI->pAttachments, pCreateInfo->pAttachments, localFBCI->attachmentCount*sizeof(VkAttachmentView));
}
frameBufferMap[pFramebuffer->handle] = localFBCI;
}
diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp
index 0c7b4d4..1547fbb 100644
--- a/layers/param_checker.cpp
+++ b/layers/param_checker.cpp
@@ -6134,13 +6134,6 @@
}
if(pCreateInfo->pAttachments != nullptr)
{
- if(pCreateInfo->pAttachments->layout < VK_IMAGE_LAYOUT_BEGIN_RANGE ||
- pCreateInfo->pAttachments->layout > VK_IMAGE_LAYOUT_END_RANGE)
- {
- log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK",
- "vkCreateFramebuffer parameter, VkImageLayout pCreateInfo->pAttachments->layout, is an unrecognized enumerator");
- return false;
- }
}
}
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index e43f74a..cba8fad 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -268,16 +268,16 @@
InitRenderTarget(targets, NULL);
}
-void VkRenderFramework::InitRenderTarget(VkAttachmentBindInfo *dsBinding)
+void VkRenderFramework::InitRenderTarget(VkAttachmentView *dsBinding)
{
InitRenderTarget(1, dsBinding);
}
-void VkRenderFramework::InitRenderTarget(uint32_t targets, VkAttachmentBindInfo *dsBinding)
+void VkRenderFramework::InitRenderTarget(uint32_t targets, VkAttachmentView *dsBinding)
{
std::vector<VkAttachmentDescription> attachments;
std::vector<VkAttachmentReference> color_references;
- std::vector<VkAttachmentBindInfo> bindings;
+ std::vector<VkAttachmentView> bindings;
attachments.reserve(targets + (bool) dsBinding);
color_references.reserve(targets);
bindings.reserve(targets + (bool) dsBinding);
@@ -301,8 +301,7 @@
VkClearValue clear = {};
clear.color = m_clear_color;
- VkAttachmentBindInfo bind = {};
- bind.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
+ VkAttachmentView bind = {};
for (uint32_t i = 0; i < targets; i++) {
attachments.push_back(att);
@@ -335,7 +334,7 @@
}
m_renderTargets.push_back(img);
- bind.view = img->targetView();
+ bind = img->targetView();
bindings.push_back(bind);
}
@@ -357,8 +356,6 @@
att.storeOp = VK_ATTACHMENT_STORE_OP_STORE;
att.stencilLoadOp = VK_ATTACHMENT_LOAD_OP_LOAD;
att.stencilStoreOp = VK_ATTACHMENT_STORE_OP_STORE;
- att.initialLayout = dsBinding->layout;
- att.finalLayout = dsBinding->layout;
attachments.push_back(att);
clear.ds.depth = m_depth_clear_color;
@@ -368,7 +365,6 @@
bindings.push_back(*dsBinding);
subpass.depthStencilAttachment.attachment = targets;
- subpass.depthStencilAttachment.layout = dsBinding->layout;
} else {
subpass.depthStencilAttachment.attachment = VK_ATTACHMENT_UNUSED;
}
@@ -1349,7 +1345,7 @@
// prepare the depth buffer for clear
- memory_barrier.oldLayout = depthStencilObj->BindInfo()->layout;
+ memory_barrier.oldLayout = memory_barrier.newLayout;
memory_barrier.newLayout = VK_IMAGE_LAYOUT_GENERAL;
memory_barrier.image = depthStencilObj->handle();
memory_barrier.subresourceRange = dsRange;
@@ -1363,8 +1359,8 @@
// prepare depth buffer for rendering
memory_barrier.image = depthStencilObj->handle();
+ memory_barrier.newLayout = memory_barrier.oldLayout;
memory_barrier.oldLayout = VK_IMAGE_LAYOUT_GENERAL;
- memory_barrier.newLayout = depthStencilObj->BindInfo()->layout;
memory_barrier.subresourceRange = dsRange;
vkCmdPipelineBarrier( handle(), src_stages, dest_stages, false, 1, (const void * const*)&pmemory_barrier);
}
@@ -1521,7 +1517,7 @@
return m_initialized;
}
-VkAttachmentBindInfo* VkDepthStencilObj::BindInfo()
+VkAttachmentView* VkDepthStencilObj::BindInfo()
{
return &m_attachmentBindInfo;
}
@@ -1564,6 +1560,5 @@
view_info.image = handle();
m_attachmentView.init(*m_device, view_info);
- m_attachmentBindInfo.view = m_attachmentView.handle();
- m_attachmentBindInfo.layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
+ m_attachmentBindInfo = m_attachmentView.handle();
}
diff --git a/tests/vkrenderframework.h b/tests/vkrenderframework.h
index 9dc1865..494df3c 100644
--- a/tests/vkrenderframework.h
+++ b/tests/vkrenderframework.h
@@ -57,14 +57,14 @@
VkDepthStencilObj();
void Init(VkDeviceObj *device, int32_t width, int32_t height, VkFormat format);
bool Initialized();
- VkAttachmentBindInfo* BindInfo();
+ VkAttachmentView* BindInfo();
protected:
VkDeviceObj *m_device;
bool m_initialized;
vk_testing::AttachmentView m_attachmentView;
VkFormat m_depth_stencil_fmt;
- VkAttachmentBindInfo m_attachmentBindInfo;
+ VkAttachmentView m_attachmentBindInfo;
};
class VkCommandBufferObj;
@@ -84,8 +84,8 @@
void InitViewport();
void InitRenderTarget();
void InitRenderTarget(uint32_t targets);
- void InitRenderTarget(VkAttachmentBindInfo *dsBinding);
- void InitRenderTarget(uint32_t targets, VkAttachmentBindInfo *dsBinding);
+ void InitRenderTarget(VkAttachmentView *dsBinding);
+ void InitRenderTarget(uint32_t targets, VkAttachmentView *dsBinding);
void InitFramework();
void InitFramework(
std::vector<const char *> instance_layer_names,