提交 7d7b7adf 编写于 作者: A Alan Cox 提交者: Greg Kroah-Hartman

gma500: allow the creation of 'stolen' memory objects

For things like cursors and many kinds of framebuffer set up we are actually
best using the stolen memory when possible.
Signed-off-by: NAlan Cox <alan@linux.intel.com>
Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
上级 7dfe43c5
...@@ -251,6 +251,21 @@ int psb_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf) ...@@ -251,6 +251,21 @@ int psb_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
} }
} }
static int psb_gem_create_stolen(struct drm_file *file, struct drm_device *dev,
int size, u32 *handle)
{
struct gtt_range *gtt = psb_gtt_alloc_range(dev, size, "gem", 1);
if (gtt == NULL)
return -ENOMEM;
if (drm_gem_private_object_init(dev, &gtt->gem, size) != 0)
goto free_gtt;
if (drm_gem_handle_create(file, &gtt->gem, handle) == 0)
return 0;
free_gtt:
psb_gtt_free_range(dev, gtt);
return -ENOMEM;
}
/* /*
* GEM interfaces for our specific client * GEM interfaces for our specific client
*/ */
...@@ -258,6 +273,15 @@ int psb_gem_create_ioctl(struct drm_device *dev, void *data, ...@@ -258,6 +273,15 @@ int psb_gem_create_ioctl(struct drm_device *dev, void *data,
struct drm_file *file) struct drm_file *file)
{ {
struct drm_psb_gem_create *args = data; struct drm_psb_gem_create *args = data;
int ret;
if (args->flags & PSB_GEM_CREATE_STOLEN) {
ret = psb_gem_create_stolen(file, dev, args->size,
&args->handle);
if (ret == 0)
return 0;
/* Fall throguh */
args->flags &= ~PSB_GEM_CREATE_STOLEN;
}
return psb_gem_create(file, dev, args->size, &args->handle); return psb_gem_create(file, dev, args->size, &args->handle);
} }
......
...@@ -189,7 +189,8 @@ struct psb_drm_dpu_rect { ...@@ -189,7 +189,8 @@ struct psb_drm_dpu_rect {
struct drm_psb_gem_create { struct drm_psb_gem_create {
__u64 size; __u64 size;
__u32 handle; __u32 handle;
__u32 pad; __u32 flags;
#define PSB_GEM_CREATE_STOLEN 1 /* Stolen memory can be used */
}; };
#define PSB_2D_OP_BUFLEN 16 #define PSB_2D_OP_BUFLEN 16
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册