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,