summaryrefslogtreecommitdiff
path: root/src/i830_uxa.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2010-05-29 17:35:00 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2010-05-31 14:03:42 +0100
commit5fff430046db2030f89e49beb66c6476dc3fcd4c (patch)
tree4bb8c0a526a6a57983428f14f56f6be26322dcda /src/i830_uxa.c
parentd31abccd41c417338aac7c681e8bc6bd187b1843 (diff)
uxa: Mega-Glyphs!
Rewrite glyph rendering to avoid the intermediate buffer, accumulating the glyph rectangles directly in the backend composite routines. And modify the glyph cache routines to fully utilise the allocated size of the tiled buffer on older hardware. To do this we alias all glyph sizes into the same texture using a technique suggested by Keith Packard. PineView: 885/856-> 1150/1110 kglyph/s (aa/rgb) Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/i830_uxa.c')
-rw-r--r--src/i830_uxa.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/i830_uxa.c b/src/i830_uxa.c
index 208de07e..eb21fb56 100644
--- a/src/i830_uxa.c
+++ b/src/i830_uxa.c
@@ -936,6 +936,7 @@ i830_uxa_create_pixmap(ScreenPtr screen, int w, int h, int depth,
if (depth == 1)
return fbCreatePixmap(screen, w, h, depth, usage);
+
if (usage == CREATE_PIXMAP_USAGE_GLYPH_PICTURE && w <= 32 && h <= 32)
return fbCreatePixmap(screen, w, h, depth, usage);
@@ -1134,6 +1135,9 @@ Bool i830_uxa_init(ScreenPtr screen)
intel->uxa_driver->finish_access = i830_uxa_finish_access;
intel->uxa_driver->pixmap_is_offscreen = i830_uxa_pixmap_is_offscreen;
+ screen->CreatePixmap = i830_uxa_create_pixmap;
+ screen->DestroyPixmap = i830_uxa_destroy_pixmap;
+
if (!uxa_driver_init(screen, intel->uxa_driver)) {
xf86DrvMsg(scrn->scrnIndex, X_ERROR,
"UXA initialization failed\n");
@@ -1141,9 +1145,6 @@ Bool i830_uxa_init(ScreenPtr screen)
return FALSE;
}
- screen->CreatePixmap = i830_uxa_create_pixmap;
- screen->DestroyPixmap = i830_uxa_destroy_pixmap;
-
uxa_set_fallback_debug(screen, intel->fallback_debug);
return TRUE;