Subversion Repositories Kolibri OS

Rev

Rev 5060 | Rev 6084 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5060 Rev 5271
Line 33... Line 33...
33
#include 
33
#include 
34
#include 
34
#include 
35
#include 
35
#include 
36
#include 
36
#include 
37
#include 
37
#include 
-
 
38
#include 
-
 
39
#include "drm_internal.h"
Line 38... Line 40...
38
 
40
 
39
/** @file drm_gem.c
41
/** @file drm_gem.c
40
 *
42
 *
41
 * This file provides some of the base ioctls and library routines for
43
 * This file provides some of the base ioctls and library routines for
Line 141... Line 143...
141
	return 0;
143
	return 0;
142
}
144
}
143
EXPORT_SYMBOL(drm_gem_object_init);
145
EXPORT_SYMBOL(drm_gem_object_init);
Line 144... Line 146...
144
 
146
 
145
/**
147
/**
146
 * drm_gem_object_init - initialize an allocated private GEM object
148
 * drm_gem_private_object_init - initialize an allocated private GEM object
147
 * @dev: drm_device the object should be initialized for
149
 * @dev: drm_device the object should be initialized for
148
 * @obj: drm_gem_object to initialize
150
 * @obj: drm_gem_object to initialize
149
 * @size: object size
151
 * @size: object size
150
 *
152
 *
Line 166... Line 168...
166
	drm_vma_node_reset(&obj->vma_node);
168
	drm_vma_node_reset(&obj->vma_node);
167
}
169
}
168
EXPORT_SYMBOL(drm_gem_private_object_init);
170
EXPORT_SYMBOL(drm_gem_private_object_init);
Line 169... Line 171...
169
 
171
 
170
/**
172
/**
171
 * drm_gem_object_free - release resources bound to userspace handles
173
 * drm_gem_object_handle_free - release resources bound to userspace handles
172
 * @obj: GEM object to clean up.
174
 * @obj: GEM object to clean up.
173
 *
175
 *
174
 * Called after the last handle to the object has been closed
176
 * Called after the last handle to the object has been closed
175
 *
177
 *
Line 276... Line 278...
276
 
278
 
277
/**
279
/**
278
 * drm_gem_handle_create_tail - internal functions to create a handle
280
 * drm_gem_handle_create_tail - internal functions to create a handle
279
 * @file_priv: drm file-private structure to register the handle for
281
 * @file_priv: drm file-private structure to register the handle for
280
 * @obj: object to register
282
 * @obj: object to register
281
 * @handlep: pionter to return the created handle to the caller
283
 * @handlep: pointer to return the created handle to the caller
282
 * 
284
 * 
283
 * This expects the dev->object_name_lock to be held already and will drop it
285
 * This expects the dev->object_name_lock to be held already and will drop it
284
 * before returning. Used to avoid races in establishing new handles when
286
 * before returning. Used to avoid races in establishing new handles when
285
 * importing an object from either an flink name or a dma-buf.
287
 * importing an object from either an flink name or a dma-buf.
Line 329... Line 331...
329
 
331
 
330
	return 0;
332
	return 0;
Line 331... Line 333...
331
}
333
}
332
 
334
 
333
/**
335
/**
334
 * gem_handle_create - create a gem handle for an object
336
 * drm_gem_handle_create - create a gem handle for an object
335
 * @file_priv: drm file-private structure to register the handle for
337
 * @file_priv: drm file-private structure to register the handle for
336
 * @obj: object to register
338
 * @obj: object to register
337
 * @handlep: pionter to return the created handle to the caller
339
 * @handlep: pionter to return the created handle to the caller
338
 *
340
 *
339
 * Create a handle for this object. This adds a handle reference
341
 * Create a handle for this object. This adds a handle reference
340
 * to the object, which includes a regular reference count. Callers
342
 * to the object, which includes a regular reference count. Callers
341
 * will likely want to dereference the object afterwards.
-
 
342
 */
343
 * will likely want to dereference the object afterwards.
343
int
344
 */
344
drm_gem_handle_create(struct drm_file *file_priv,
345
int drm_gem_handle_create(struct drm_file *file_priv,
345
		       struct drm_gem_object *obj,
346
		       struct drm_gem_object *obj,
346
		       u32 *handlep)
347
		       u32 *handlep)
Line 549... Line 550...
549
		    struct drm_file *file_priv)
550
		    struct drm_file *file_priv)
550
{
551
{
551
	struct drm_gem_close *args = data;
552
	struct drm_gem_close *args = data;
552
	int ret;
553
	int ret;
Line 553... Line 554...
553
 
554
 
554
	if (!(dev->driver->driver_features & DRIVER_GEM))
555
	if (!drm_core_check_feature(dev, DRIVER_GEM))
Line 555... Line 556...
555
		return -ENODEV;
556
		return -ENODEV;
Line 556... Line 557...
556
 
557
 
Line 576... Line 577...
576
{
577
{
577
	struct drm_gem_flink *args = data;
578
	struct drm_gem_flink *args = data;
578
	struct drm_gem_object *obj;
579
	struct drm_gem_object *obj;
579
	int ret;
580
	int ret;
Line 580... Line 581...
580
 
581
 
581
	if (!(dev->driver->driver_features & DRIVER_GEM))
582
	if (!drm_core_check_feature(dev, DRIVER_GEM))
Line 582... Line 583...
582
		return -ENODEV;
583
		return -ENODEV;
583
 
584
 
584
	obj = drm_gem_object_lookup(dev, file_priv, args->handle);
585
	obj = drm_gem_object_lookup(dev, file_priv, args->handle);
Line 629... Line 630...
629
	struct drm_gem_open *args = data;
630
	struct drm_gem_open *args = data;
630
	struct drm_gem_object *obj;
631
	struct drm_gem_object *obj;
631
	int ret;
632
	int ret;
632
	u32 handle;
633
	u32 handle;
Line 633... Line 634...
633
 
634
 
634
	if (!(dev->driver->driver_features & DRIVER_GEM))
635
	if (!drm_core_check_feature(dev, DRIVER_GEM))
Line 635... Line 636...
635
		return -ENODEV;
636
		return -ENODEV;
636
 
637
 
637
	mutex_lock(&dev->object_name_lock);
638
	mutex_lock(&dev->object_name_lock);