diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2010-05-29 17:35:00 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2010-05-31 14:03:42 +0100 |
commit | 5fff430046db2030f89e49beb66c6476dc3fcd4c (patch) | |
tree | 4bb8c0a526a6a57983428f14f56f6be26322dcda /src/i830_uxa.c | |
parent | d31abccd41c417338aac7c681e8bc6bd187b1843 (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.c | 7 |
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; |