update for buffer object changes
diff --git a/icd/intel/view.c b/icd/intel/view.c
index e942853..9d235f4 100644
--- a/icd/intel/view.c
+++ b/icd/intel/view.c
@@ -27,6 +27,7 @@
 
 #include "genhw/genhw.h"
 #include "kmd/winsys.h"
+#include "buf.h"
 #include "dev.h"
 #include "format.h"
 #include "gpu.h"
@@ -1054,25 +1055,33 @@
     }
 }
 
-void intel_mem_view_init(struct intel_mem_view *view,
-                         struct intel_dev *dev,
-                         const XGL_MEMORY_VIEW_ATTACH_INFO *info)
+static void buf_view_destroy(struct intel_obj *obj)
 {
-    bool will_write;
+    struct intel_buf_view *view = intel_buf_view_from_obj(obj);
 
-    switch (info->state) {
-    case XGL_MEMORY_STATE_GRAPHICS_SHADER_WRITE_ONLY:
-    case XGL_MEMORY_STATE_GRAPHICS_SHADER_READ_WRITE:
-    case XGL_MEMORY_STATE_COMPUTE_SHADER_WRITE_ONLY:
-    case XGL_MEMORY_STATE_COMPUTE_SHADER_READ_WRITE:
-        will_write = true;
-        break;
-    default:
-        will_write = false;
-        break;
-    }
+    intel_buf_view_destroy(view);
+}
 
-    view->mem = intel_mem(info->mem);
+XGL_RESULT intel_buf_view_create(struct intel_dev *dev,
+                                 const XGL_BUFFER_VIEW_CREATE_INFO *info,
+                                 struct intel_buf_view **view_ret)
+{
+    struct intel_buf *buf = intel_buf(info->buffer);
+    const bool will_write = (buf->usage |
+            (XGL_BUFFER_USAGE_SHADER_ACCESS_WRITE_BIT &
+             XGL_BUFFER_USAGE_SHADER_ACCESS_ATOMIC_BIT));
+    XGL_FORMAT format;
+    XGL_GPU_SIZE stride;
+    struct intel_buf_view *view;
+
+    view = (struct intel_buf_view *) intel_base_create(dev, sizeof(*view),
+            dev->base.dbg, XGL_DBG_OBJECT_BUFFER_VIEW, info, 0);
+    if (!view)
+        return XGL_ERROR_OUT_OF_MEMORY;
+
+    view->obj.destroy = buf_view_destroy;
+
+    view->buf = buf;
     view->info = *info;
 
     if (intel_gpu_gen(dev->gpu) >= INTEL_GEN(7)) {
@@ -1086,6 +1095,15 @@
                 will_write, will_write, view->cmd);
         view->cmd_len = 6;
     }
+
+    *view_ret = view;
+
+    return XGL_SUCCESS;
+}
+
+void intel_buf_view_destroy(struct intel_buf_view *view)
+{
+    intel_base_destroy(&view->obj.base);
 }
 
 static void img_view_destroy(struct intel_obj *obj)
@@ -1267,6 +1285,17 @@
     intel_base_destroy(&view->obj.base);
 }
 
+ICD_EXPORT XGL_RESULT XGLAPI xglCreateBufferView(
+    XGL_DEVICE                                  device,
+    const XGL_BUFFER_VIEW_CREATE_INFO*          pCreateInfo,
+    XGL_BUFFER_VIEW*                            pView)
+{
+    struct intel_dev *dev = intel_dev(device);
+
+    return intel_buf_view_create(dev, pCreateInfo,
+            (struct intel_buf_view **) pView);
+}
+
 ICD_EXPORT XGL_RESULT XGLAPI xglCreateImageView(
     XGL_DEVICE                                  device,
     const XGL_IMAGE_VIEW_CREATE_INFO*           pCreateInfo,