diff options
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_display.c')
| -rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_display.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c index 860b0e2d4181..8670d90cdc11 100644 --- a/drivers/gpu/drm/nouveau/nouveau_display.c +++ b/drivers/gpu/drm/nouveau/nouveau_display.c | |||
| @@ -869,13 +869,20 @@ nouveau_display_dumb_create(struct drm_file *file_priv, struct drm_device *dev, | |||
| 869 | struct drm_mode_create_dumb *args) | 869 | struct drm_mode_create_dumb *args) |
| 870 | { | 870 | { |
| 871 | struct nouveau_bo *bo; | 871 | struct nouveau_bo *bo; |
| 872 | uint32_t domain; | ||
| 872 | int ret; | 873 | int ret; |
| 873 | 874 | ||
| 874 | args->pitch = roundup(args->width * (args->bpp / 8), 256); | 875 | args->pitch = roundup(args->width * (args->bpp / 8), 256); |
| 875 | args->size = args->pitch * args->height; | 876 | args->size = args->pitch * args->height; |
| 876 | args->size = roundup(args->size, PAGE_SIZE); | 877 | args->size = roundup(args->size, PAGE_SIZE); |
| 877 | 878 | ||
| 878 | ret = nouveau_gem_new(dev, args->size, 0, NOUVEAU_GEM_DOMAIN_VRAM, 0, 0, &bo); | 879 | /* Use VRAM if there is any ; otherwise fallback to system memory */ |
| 880 | if (nouveau_drm(dev)->device.info.ram_size != 0) | ||
| 881 | domain = NOUVEAU_GEM_DOMAIN_VRAM; | ||
| 882 | else | ||
| 883 | domain = NOUVEAU_GEM_DOMAIN_GART; | ||
| 884 | |||
| 885 | ret = nouveau_gem_new(dev, args->size, 0, domain, 0, 0, &bo); | ||
| 879 | if (ret) | 886 | if (ret) |
| 880 | return ret; | 887 | return ret; |
| 881 | 888 | ||
