winsys/amdgpu: always set NO_CPU_ACCESS and NO_SUBALLOC on GDS resources
authorMarek Olšák <marek.olsak@amd.com>
Tue, 23 Apr 2019 19:24:33 +0000 (15:24 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Thu, 16 May 2019 17:06:18 +0000 (13:06 -0400)
Acked-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/winsys/amdgpu/drm/amdgpu_bo.c

index 09cf924775514e232dbab63e4dafdffd56925249..37098ab305fe2cf7e901c41b42651a37dc88570d 100644 (file)
@@ -1309,11 +1309,14 @@ amdgpu_bo_create(struct radeon_winsys *rws,
    struct amdgpu_winsys_bo *bo;
    int heap = -1;
 
+   if (domain & (RADEON_DOMAIN_GDS | RADEON_DOMAIN_OA))
+      flags |= RADEON_FLAG_NO_CPU_ACCESS | RADEON_FLAG_NO_SUBALLOC;
+
    /* VRAM implies WC. This is not optional. */
    assert(!(domain & RADEON_DOMAIN_VRAM) || flags & RADEON_FLAG_GTT_WC);
 
-   /* NO_CPU_ACCESS is valid with VRAM only. */
-   assert(domain == RADEON_DOMAIN_VRAM || !(flags & RADEON_FLAG_NO_CPU_ACCESS));
+   /* NO_CPU_ACCESS is not valid with GTT. */
+   assert(!(domain & RADEON_DOMAIN_GTT) || !(flags & RADEON_FLAG_NO_CPU_ACCESS));
 
    /* Sparse buffers must have NO_CPU_ACCESS set. */
    assert(!(flags & RADEON_FLAG_SPARSE) || flags & RADEON_FLAG_NO_CPU_ACCESS);