diff --git a/demos/cube.c b/demos/cube.c
index b02e443..4ae8c01 100644
--- a/demos/cube.c
+++ b/demos/cube.c
@@ -299,6 +299,9 @@
          .pColorAttachments = (XGL_COLOR_ATTACHMENT_BIND_INFO*) &color_attachment,
          .pDepthStencilAttachment = (XGL_DEPTH_STENCIL_BIND_INFO*) &depth_stencil,
          .sampleCount = 1,
+         .width  = demo->width,
+         .height = demo->height,
+         .layers = 1,
     };
     XGL_RENDER_PASS_CREATE_INFO rp_info;
 
diff --git a/demos/tri.c b/demos/tri.c
index 19a591b..bb5814f 100644
--- a/demos/tri.c
+++ b/demos/tri.c
@@ -121,6 +121,9 @@
          .pColorAttachments = (XGL_COLOR_ATTACHMENT_BIND_INFO*) &color_attachment,
          .pDepthStencilAttachment = (XGL_DEPTH_STENCIL_BIND_INFO*) &depth_stencil,
          .sampleCount = 1,
+         .width  = demo->width,
+         .height = demo->height,
+         .layers = 1,
     };
     XGL_RENDER_PASS_CREATE_INFO rp_info;
 
diff --git a/icd/intel/cmd_pipeline.c b/icd/intel/cmd_pipeline.c
index 5b69174..23fcae9 100644
--- a/icd/intel/cmd_pipeline.c
+++ b/icd/intel/cmd_pipeline.c
@@ -535,6 +535,11 @@
           0x7ff << GEN6_CLIP_DW3_MAX_POINT_WIDTH__SHIFT |
           (viewport->viewport_count - 1);
 
+    /* TODO: framebuffer requests layer_count > 1 */
+    if (cmd->bind.render_pass->fb->layer_count == 1) {
+        dw3 |= GEN6_CLIP_DW3_RTAINDEX_FORCED_ZERO;
+    }
+
     cmd_batch_pointer(cmd, cmd_len, &dw);
     dw[0] = dw0;
     dw[1] = dw1;
diff --git a/icd/intel/fb.c b/icd/intel/fb.c
index 6ccc3ee..2b4925b 100644
--- a/icd/intel/fb.c
+++ b/icd/intel/fb.c
@@ -47,7 +47,9 @@
     if (!fb)
         return XGL_ERROR_OUT_OF_MEMORY;
 
-    XGL_UINT width = 0, height = 0;
+    XGL_UINT width  = info->width;
+    XGL_UINT height = info->height;
+    XGL_UINT layers = info->layers;
     XGL_UINT i;
 
     for (i = 0; i < info->colorAttachmentCount; i++) {
@@ -55,38 +57,55 @@
         const struct intel_rt_view *rt = intel_rt_view(att->view);
         const struct intel_layout *layout = &rt->img->layout;
 
-        if (i == 0) {
+        if (width > layout->width0)
             width = layout->width0;
+        if (height > layout->height0)
             height = layout->height0;
-        } else {
-            if (width > layout->width0)
-                width = layout->width0;
-            if (height > layout->height0)
-                height = layout->height0;
-        }
+        if (layers > rt->array_size)
+            layers = rt->array_size;
 
+        if (rt->img->samples != info->sampleCount) {
+            intel_fb_destroy(fb);
+            return XGL_ERROR_INVALID_VALUE;
+        }
         fb->rt[i] = rt;
     }
+
     fb->rt_count = info->colorAttachmentCount;
 
     if (info->pDepthStencilAttachment) {
         const struct intel_layout *layout;
 
         fb->ds = intel_ds_view(info->pDepthStencilAttachment->view);
+
         layout = &fb->ds->img->layout;
 
         if (width > layout->width0)
             width = layout->width0;
         if (height > layout->height0)
             height = layout->height0;
+        if (layers > fb->ds->array_size)
+            layers = fb->ds->array_size;
+
+        if (fb->ds->img->samples != info->sampleCount) {
+            intel_fb_destroy(fb);
+            return XGL_ERROR_INVALID_VALUE;
+        }
+
     } else {
         fb->ds = NULL;
     }
 
+    /* Behavior is undefined if width,height are larger
+       than an attachment in some direction, but Intel hardware
+       cannot handle this case */
+    fb->width        = width;
+    fb->height       = height;
+    fb->layer_count  = layers;
+    /* This information must match pipeline state */
     fb->sample_count = info->sampleCount;
-    fb->width = width;
-    fb->height = height;
-    fb->obj.destroy = fb_destroy;
+
+    fb->obj.destroy  = fb_destroy;
 
     *fb_ret = fb;
 
diff --git a/icd/intel/fb.h b/icd/intel/fb.h
index 81a1a33..68ad027 100644
--- a/icd/intel/fb.h
+++ b/icd/intel/fb.h
@@ -33,7 +33,9 @@
     const struct intel_ds_view *ds;
 
     XGL_UINT sample_count;
-    XGL_UINT width, height;
+    XGL_UINT width;
+    XGL_UINT height;
+    XGL_UINT layer_count;
 };
 
 struct intel_render_pass {
diff --git a/icd/intel/view.c b/icd/intel/view.c
index 5f0deea..6991450 100644
--- a/icd/intel/view.c
+++ b/icd/intel/view.c
@@ -1249,6 +1249,8 @@
 
     view->img = img;
 
+    view->array_size = info->arraySize;
+
     if (intel_gpu_gen(dev->gpu) >= INTEL_GEN(7)) {
         surface_state_tex_gen7(dev->gpu, img,
                 img_type_to_view_type(img->type),
@@ -1298,6 +1300,8 @@
 
     view->img = img;
 
+    view->array_size = info->arraySize;
+
     ds_view_init(view, dev->gpu, img, img->layout.format, info->mipLevel,
             info->baseArraySlice, info->arraySize);
 
diff --git a/icd/intel/view.h b/icd/intel/view.h
index 8956123..e36cb43 100644
--- a/icd/intel/view.h
+++ b/icd/intel/view.h
@@ -71,6 +71,8 @@
 
     struct intel_img *img;
 
+    XGL_UINT array_size;
+
     /* SURFACE_STATE */
     uint32_t cmd[8];
     XGL_UINT cmd_len;
@@ -81,6 +83,8 @@
 
     struct intel_img *img;
 
+    XGL_UINT array_size;
+
     /*
      * 3DSTATE_DEPTH_BUFFER
      * 3DSTATE_STENCIL_BUFFER
diff --git a/include/xgl.h b/include/xgl.h
index 9520190..0dd4c5e 100644
--- a/include/xgl.h
+++ b/include/xgl.h
@@ -2212,7 +2212,9 @@
     XGL_COLOR_ATTACHMENT_BIND_INFO*         pColorAttachments;
     XGL_DEPTH_STENCIL_BIND_INFO*            pDepthStencilAttachment;
     XGL_UINT                                sampleCount;
-
+    XGL_UINT                                width;
+    XGL_UINT                                height;
+    XGL_UINT                                layers;
 } XGL_FRAMEBUFFER_CREATE_INFO;
 
 typedef struct _XGL_DRAW_INDIRECT_CMD
diff --git a/tests/xglrenderframework.cpp b/tests/xglrenderframework.cpp
index 68f7baa..3c452c5 100644
--- a/tests/xglrenderframework.cpp
+++ b/tests/xglrenderframework.cpp
@@ -171,6 +171,9 @@
          .pColorAttachments = m_colorBindings,
          .pDepthStencilAttachment = dsBinding,
          .sampleCount = 1,
+         .width = (XGL_UINT)m_width,
+         .height = (XGL_UINT)m_height,
+         .layers = 1,
     };
     XGL_RENDER_PASS_CREATE_INFO rp_info;
     memset(&rp_info, 0 , sizeof(rp_info));
