OSDN Git Service

amdgpu: Send correct flags to AMDGPU_GEM_CREATE
authorAkshu Agrawal <akshu.agrawal@amd.com>
Mon, 9 Jan 2017 09:10:32 +0000 (14:40 +0530)
committerchrome-bot <chrome-bot@chromium.org>
Thu, 19 Jan 2017 10:43:15 +0000 (02:43 -0800)
On the basis of gbm flags, send proper flags to AMDGPU_GEM_CREATE

BUG:chrome-os-partner:61504
TEST: With CL:418518 drm_cursor_test passess

Change-Id: Ia1c55a6494ceebe9446d68cdc2cd70eb5d290529
Signed-off-by: Akshu Agrawal <akshu.agrawal@amd.com>
Reviewed-on: https://chromium-review.googlesource.com/427482
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
amdgpu.c

index 3f519d7..5dcfbeb 100644 (file)
--- a/amdgpu.c
+++ b/amdgpu.c
@@ -315,6 +315,7 @@ static int amdgpu_bo_create(struct bo *bo, uint32_t width, uint32_t height,
        struct amdgpu_bo_metadata metadata = {0};
        ADDR_COMPUTE_SURFACE_INFO_OUTPUT addr_out = {0};
        uint32_t tiling_flags = 0;
+       uint32_t gem_create_flags = 0;
        int ret;
 
        if (amdgpu_addrlib_compute(addrlib, width,
@@ -328,13 +329,19 @@ static int amdgpu_bo_create(struct bo *bo, uint32_t width, uint32_t height,
        bo->sizes[0] = addr_out.surfSize;
        bo->strides[0] = addr_out.pixelPitch
                * DIV_ROUND_UP(addr_out.pixelBits, 8);
+       if (usage & (BO_USE_CURSOR | BO_USE_LINEAR | BO_USE_SW_READ_OFTEN |
+                    BO_USE_SW_WRITE_OFTEN | BO_USE_SW_WRITE_RARELY |
+                    BO_USE_SW_READ_RARELY))
+               gem_create_flags |= AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
+       else
+               gem_create_flags |= AMDGPU_GEM_CREATE_NO_CPU_ACCESS;
 
        memset(&gem_create, 0, sizeof(gem_create));
        gem_create.in.bo_size = bo->sizes[0];
        gem_create.in.alignment = addr_out.baseAlign;
        /* Set the placement. */
        gem_create.in.domains = AMDGPU_GEM_DOMAIN_VRAM;
-       gem_create.in.domain_flags = usage;
+       gem_create.in.domain_flags = gem_create_flags;
 
        /* Allocate the buffer with the preferred heap. */
        ret = drmCommandWriteRead(drv_get_fd(bo->drv), DRM_AMDGPU_GEM_CREATE,