OSDN Git Service

minigbm: remove gma500
[android-x86/external-minigbm.git] / amdgpu.c
index 9abb79f..cca3537 100644 (file)
--- a/amdgpu.c
+++ b/amdgpu.c
@@ -376,8 +376,20 @@ static int amdgpu_bo_create(struct bo *bo, uint32_t width, uint32_t height, uint
        gem_create.in.bo_size = bo->total_size;
        gem_create.in.alignment = addr_out.baseAlign;
        /* Set the placement. */
-       gem_create.in.domains = AMDGPU_GEM_DOMAIN_VRAM;
-       gem_create.in.domain_flags = AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
+
+       gem_create.in.domain_flags = 0;
+       if (use_flags & (BO_USE_LINEAR | BO_USE_SW))
+               gem_create.in.domain_flags |= AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
+
+       if (use_flags & (BO_USE_SCANOUT | BO_USE_CURSOR)) {
+               /* TODO(dbehr) do not use VRAM after we enable display VM */
+               gem_create.in.domains = AMDGPU_GEM_DOMAIN_VRAM;
+       } else {
+               gem_create.in.domains = AMDGPU_GEM_DOMAIN_GTT;
+               if (!(use_flags & BO_USE_SW_READ_OFTEN))
+                       gem_create.in.domain_flags |= AMDGPU_GEM_CREATE_CPU_GTT_USWC;
+       }
+
        /* Allocate the buffer with the preferred heap. */
        ret = drmCommandWriteRead(drv_get_fd(bo->drv), DRM_AMDGPU_GEM_CREATE, &gem_create,
                                  sizeof(gem_create));