Example #1
0
struct drm_gem_object *pscnv_gem_new(struct drm_device *dev, uint64_t size, uint32_t flags,
		uint32_t tile_flags, uint32_t cookie, uint32_t *user)
{
	int i;
	struct drm_gem_object *obj;
	struct pscnv_bo *vo;

	vo = pscnv_mem_alloc(dev, size, flags, tile_flags, cookie);
	if (!vo)
		return 0;

	obj = drm_gem_object_alloc(dev, vo->size);
	if (!obj) {
		pscnv_mem_free(vo);
		return 0;
	}
	obj->driver_private = vo;
	vo->gem = obj;

	if (user)
		for (i = 0; i < ARRAY_SIZE(vo->user); i++)
			vo->user[i] = user[i];
	else
		for (i = 0; i < ARRAY_SIZE(vo->user); i++)
			vo->user[i] = 0;

	return obj;
}
Example #2
0
struct drm_gem_object *pscnv_gem_new(struct drm_device *dev, uint64_t size, uint32_t flags,
		uint32_t tile_flags, uint32_t cookie, uint32_t *user)
{
	int i;
	struct drm_gem_object *obj;
	struct pscnv_bo *vo;

	vo = pscnv_mem_alloc(dev, size, flags, tile_flags, cookie);
	if (!vo)
		return 0;

	obj = drm_gem_object_alloc(dev, vo->size);
	if (!obj) {
		pscnv_mem_free(vo);
		return 0;
	}
#ifndef PSCNV_KAPI_DRM_GEM_OBJECT_HANDLE_COUNT
	atomic_inc(&obj->handle_count);
#endif
	obj->driver_private = vo;
	vo->gem = obj;

	if (user)
		for (i = 0; i < ARRAY_SIZE(vo->user); i++)
			vo->user[i] = user[i];
	else
		for (i = 0; i < ARRAY_SIZE(vo->user); i++)
			vo->user[i] = 0;

	return obj;
}