From 22f7cbc32b70a89d55c79bbea39fb10c50a310ec Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 9 Jul 2009 23:56:22 -0700 Subject: uxa: Tell the driver when we're just going to immediately map the pixmap. This lets the driver allocate a nice idle buffer object instead of a busy one, reducing runtime of firefox-20090601 on my G45 from 50.7 (+/- .41%) to 48.4 (+/- 1.1%). --- src/i830_uxa.c | 5 ++++- uxa/uxa-render.c | 3 ++- uxa/uxa.h | 10 ++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/i830_uxa.c b/src/i830_uxa.c index 2050c485..3212582a 100644 --- a/src/i830_uxa.c +++ b/src/i830_uxa.c @@ -635,7 +635,10 @@ i830_uxa_create_pixmap (ScreenPtr screen, int w, int h, int depth, unsigned usag return NullPixmap; } - bo = drm_intel_bo_alloc_for_render(i830->bufmgr, "pixmap", size, 0); + if (usage == UXA_CREATE_PIXMAP_FOR_MAP) + bo = drm_intel_bo_alloc(i830->bufmgr, "pixmap", size, 0); + else + bo = drm_intel_bo_alloc_for_render(i830->bufmgr, "pixmap", size, 0); if (!bo) { fbDestroyPixmap (pixmap); return NullPixmap; diff --git a/uxa/uxa-render.c b/uxa/uxa-render.c index 02373b0b..13128ed7 100644 --- a/uxa/uxa-render.c +++ b/uxa/uxa-render.c @@ -822,7 +822,8 @@ uxa_create_alpha_picture (ScreenPtr pScreen, } pPixmap = (*pScreen->CreatePixmap) (pScreen, width, height, - pPictFormat->depth, 0); + pPictFormat->depth, + UXA_CREATE_PIXMAP_FOR_MAP); if (!pPixmap) return 0; pPicture = CreatePicture (0, &pPixmap->drawable, pPictFormat, diff --git a/uxa/uxa.h b/uxa/uxa.h index 8f6f896c..d5f5b9c4 100644 --- a/uxa/uxa.h +++ b/uxa/uxa.h @@ -505,6 +505,16 @@ typedef struct _UxaDriver { /** @} */ +/** @name UXA CreatePixmap hint flags + * @{ + */ +/** + * Flag to hint that the first operation on the pixmap will be a + * prepare_access. + */ +#define UXA_CREATE_PIXMAP_FOR_MAP 0x20000000 +/** @} */ + uxa_driver_t * uxa_driver_alloc(void); -- cgit v1.2.1