summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Clark <robdclark@gmail.com>2013-03-06 22:19:50 -0500
committerRob Clark <robdclark@gmail.com>2013-03-25 16:01:22 -0400
commit29f1a057b48089ddbea4aa022dc04fca5467ca0a (patch)
treeacd7f1daafe1a9976ec815c7088fe6faa0aa0c68
parentb3b7feca46a6e8de93e6bf7b0b7bd5fce2fd247f (diff)
dri2: allocate DRI2 buffers in SMI
Attempt to use the fast stacked-memory for render target buffers.
-rw-r--r--src/msm-dri2.c3
-rw-r--r--src/msm-exa.c13
-rw-r--r--src/msm.h2
3 files changed, 15 insertions, 3 deletions
diff --git a/src/msm-dri2.c b/src/msm-dri2.c
index 4bb081f..c58efdf 100644
--- a/src/msm-dri2.c
+++ b/src/msm-dri2.c
@@ -76,7 +76,8 @@ createpix(DrawablePtr pDraw)
{
ScreenPtr pScreen = pDraw->pScreen;
return pScreen->CreatePixmap(pScreen,
- pDraw->width, pDraw->height, pDraw->depth, 0);
+ pDraw->width, pDraw->height, pDraw->depth,
+ CREATE_PIXMAP_USAGE_DRI2);
}
/**
diff --git a/src/msm-exa.c b/src/msm-exa.c
index 2e156d3..4b7e358 100644
--- a/src/msm-exa.c
+++ b/src/msm-exa.c
@@ -907,8 +907,17 @@ MSMCreatePixmap2(ScreenPtr pScreen, int width, int height,
if (!size)
return priv;
- priv->bo = fd_bo_new(pMsm->dev, size,
- DRM_FREEDRENO_GEM_TYPE_KMEM);
+ if (usage_hint & CREATE_PIXMAP_USAGE_DRI2) {
+ priv->bo = fd_bo_new(pMsm->dev, size,
+ DRM_FREEDRENO_GEM_TYPE_KMEM |
+ DRM_FREEDRENO_GEM_TYPE_SMI);
+ ErrorF("bo=%p\n", priv->bo);
+ }
+
+ if (!priv->bo) {
+ priv->bo = fd_bo_new(pMsm->dev, size,
+ DRM_FREEDRENO_GEM_TYPE_KMEM);
+ }
if (priv->bo)
return priv;
diff --git a/src/msm.h b/src/msm.h
index b28f226..dae99a9 100644
--- a/src/msm.h
+++ b/src/msm.h
@@ -41,6 +41,8 @@
#include <freedreno_drmif.h>
#include <freedreno_ringbuffer.h>
+#define CREATE_PIXMAP_USAGE_DRI2 0x10000000
+
#ifndef ARRAY_SIZE
# define ARRAY_SIZE(a) (sizeof((a)) / (sizeof(*(a))))
#endif