From: Michel Dänzer <michel.daen...@amd.com>

When set, the pixmap memory is allocated in GTT instead of in VRAM.

Signed-off-by: Michel Dänzer <michel.daen...@amd.com>
---
 src/amdgpu_bo_helper.c | 6 ++++--
 src/amdgpu_pixmap.h    | 1 +
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/amdgpu_bo_helper.c b/src/amdgpu_bo_helper.c
index 47cd9eb..00e8643 100644
--- a/src/amdgpu_bo_helper.c
+++ b/src/amdgpu_bo_helper.c
@@ -62,7 +62,7 @@ struct amdgpu_buffer *amdgpu_alloc_pixmap_bo(ScrnInfoPtr 
pScrn, int width,
        AMDGPUInfoPtr info = AMDGPUPTR(pScrn);
        struct amdgpu_buffer *pixmap_buffer;
 
-       if (info->gbm) {
+       if (!(usage_hint & AMDGPU_CREATE_PIXMAP_GTT) && info->gbm) {
                uint32_t bo_use = GBM_BO_USE_RENDERING;
                uint32_t gbm_format = amdgpu_get_gbm_format(depth, 
bitsPerPixel);
 
@@ -107,9 +107,11 @@ struct amdgpu_buffer *amdgpu_alloc_pixmap_bo(ScrnInfoPtr 
pScrn, int width,
                unsigned cpp = (bitsPerPixel + 7) / 8;
                unsigned pitch = cpp *
                        AMDGPU_ALIGN(width, drmmode_get_pitch_align(pScrn, 
cpp));
+               uint32_t domain = (usage_hint & AMDGPU_CREATE_PIXMAP_GTT) ?
+                       AMDGPU_GEM_DOMAIN_GTT : AMDGPU_GEM_DOMAIN_VRAM;
 
                pixmap_buffer = amdgpu_bo_open(pAMDGPUEnt->pDev, pitch * height,
-                                              4096, AMDGPU_GEM_DOMAIN_VRAM);
+                                              4096, domain);
 
                if (new_pitch)
                        *new_pitch = pitch;
diff --git a/src/amdgpu_pixmap.h b/src/amdgpu_pixmap.h
index a5dc081..b269853 100644
--- a/src/amdgpu_pixmap.h
+++ b/src/amdgpu_pixmap.h
@@ -107,6 +107,7 @@ enum {
        AMDGPU_CREATE_PIXMAP_DRI2    = 0x08000000,
        AMDGPU_CREATE_PIXMAP_LINEAR  = 0x04000000,
        AMDGPU_CREATE_PIXMAP_SCANOUT = 0x02000000,
+       AMDGPU_CREATE_PIXMAP_GTT     = 0x01000000,
 };
 
 extern Bool amdgpu_pixmap_init(ScreenPtr screen);
-- 
2.1.4

_______________________________________________
xorg-driver-ati mailing list
xorg-driver-ati@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-driver-ati

Reply via email to