radeon: use discardable flags on no backing store objects
authorDave Airlie <airlied@redhat.com>
Thu, 16 Oct 2008 00:51:31 +0000 (10:51 +1000)
committerDave Airlie <airlied@redhat.com>
Thu, 16 Oct 2008 00:51:31 +0000 (10:51 +1000)
linux-core/radeon_fb.c
linux-core/radeon_gem.c
shared-core/radeon_drv.h

index 8c9461d..8d4181e 100644 (file)
@@ -728,7 +728,7 @@ int radeonfb_create(struct drm_device *dev, uint32_t fb_width, uint32_t fb_heigh
        size = mode_cmd.pitch * mode_cmd.height;
        aligned_size = ALIGN(size, PAGE_SIZE);
 
-       fbo = radeon_gem_object_alloc(dev, aligned_size, 1, RADEON_GEM_DOMAIN_VRAM);
+       fbo = radeon_gem_object_alloc(dev, aligned_size, 1, RADEON_GEM_DOMAIN_VRAM, 0);
        if (!fbo) {
                printk(KERN_ERR "failed to allocate framebuffer\n");
                ret = -ENOMEM;
index 225f026..5e2ad98 100644 (file)
@@ -74,7 +74,7 @@ int radeon_gem_info_ioctl(struct drm_device *dev, void *data,
 }
 
 struct drm_gem_object *radeon_gem_object_alloc(struct drm_device *dev, int size, int alignment,
-                                              int initial_domain)
+                                              int initial_domain, bool discardable)
 {
        struct drm_gem_object *obj;
        struct drm_radeon_gem_object *obj_priv;
@@ -97,6 +97,9 @@ struct drm_gem_object *radeon_gem_object_alloc(struct drm_device *dev, int size,
 
        flags |= DRM_BO_FLAG_READ | DRM_BO_FLAG_WRITE | DRM_BO_FLAG_EXE;
 
+       if (discardable)
+               flags |= DRM_BO_FLAG_DISCARDABLE;
+
        if (alignment == 0)
                alignment = PAGE_SIZE;
 
@@ -129,7 +132,7 @@ int radeon_gem_create_ioctl(struct drm_device *dev, void *data,
        /* create a gem object to contain this object in */
        args->size = roundup(args->size, PAGE_SIZE);
 
-       obj = radeon_gem_object_alloc(dev, args->size, args->alignment, args->initial_domain);
+       obj = radeon_gem_object_alloc(dev, args->size, args->alignment, args->initial_domain, args->no_backing_store);
        if (!obj)
                return -EINVAL;
 
index 3490ddb..c37f23d 100644 (file)
@@ -1672,7 +1672,7 @@ int radeon_gem_indirect_ioctl(struct drm_device *dev, void *data,
 int radeon_gem_set_domain_ioctl(struct drm_device *dev, void *data,
                                struct drm_file *file_priv);
 struct drm_gem_object *radeon_gem_object_alloc(struct drm_device *dev, int size, int alignment,
-                                              int initial_domain);
+                                              int initial_domain, bool discardable);
 int radeon_modeset_init(struct drm_device *dev);
 void radeon_modeset_cleanup(struct drm_device *dev);
 extern u32 radeon_read_mc_reg(drm_radeon_private_t *dev_priv, int addr);