|
@@ -0,0 +1,47 @@
|
|
|
+/**************************************************************************
|
|
|
+ * Copyright (c) 2011, Intel Corporation.
|
|
|
+ * All Rights Reserved.
|
|
|
+ *
|
|
|
+ * This program is free software; you can redistribute it and/or modify it
|
|
|
+ * under the terms and conditions of the GNU General Public License,
|
|
|
+ * version 2, as published by the Free Software Foundation.
|
|
|
+ *
|
|
|
+ * This program is distributed in the hope it will be useful, but WITHOUT
|
|
|
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
|
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
|
+ * more details.
|
|
|
+ *
|
|
|
+ * You should have received a copy of the GNU General Public License along with
|
|
|
+ * this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
+ * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
+ *
|
|
|
+ **************************************************************************/
|
|
|
+
|
|
|
+#include <drm/drmP.h>
|
|
|
+#include <drm/drm.h>
|
|
|
+
|
|
|
+/**
|
|
|
+ * Initialize an already allocated GEM object of the specified size with
|
|
|
+ * no GEM provided backing store. Instead the caller is responsible for
|
|
|
+ * backing the object and handling it.
|
|
|
+ */
|
|
|
+int drm_gem_private_object_init(struct drm_device *dev,
|
|
|
+ struct drm_gem_object *obj, size_t size)
|
|
|
+{
|
|
|
+ BUG_ON((size & (PAGE_SIZE - 1)) != 0);
|
|
|
+
|
|
|
+ obj->dev = dev;
|
|
|
+ obj->filp = NULL;
|
|
|
+
|
|
|
+ kref_init(&obj->refcount);
|
|
|
+ atomic_set(&obj->handle_count, 0);
|
|
|
+ obj->size = size;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+void drm_gem_object_release_wrap(struct drm_gem_object *obj)
|
|
|
+{
|
|
|
+ if (obj->filp)
|
|
|
+ drm_gem_object_release(obj);
|
|
|
+}
|