diff options
Diffstat (limited to 'extra/xf86-video-intel/0003-uxa-Remove-hook-for-CompositeRectangles.patch')
-rw-r--r-- | extra/xf86-video-intel/0003-uxa-Remove-hook-for-CompositeRectangles.patch | 255 |
1 files changed, 0 insertions, 255 deletions
diff --git a/extra/xf86-video-intel/0003-uxa-Remove-hook-for-CompositeRectangles.patch b/extra/xf86-video-intel/0003-uxa-Remove-hook-for-CompositeRectangles.patch deleted file mode 100644 index c1c4d55e8..000000000 --- a/extra/xf86-video-intel/0003-uxa-Remove-hook-for-CompositeRectangles.patch +++ /dev/null @@ -1,255 +0,0 @@ -From b669f171adece9df7f0c340c664b70e94118a55e Mon Sep 17 00:00:00 2001 -From: Chris Wilson <chris@chris-wilson.co.uk> -Date: Fri, 23 Mar 2012 14:56:06 +0000 -Subject: [PATCH 3/5] uxa: Remove hook for CompositeRectangles - -It was broken and not flushing damage correctly. With the -improvements made to the kernel, it is no longer a significant advantage -per se and not worth its additional complexity. - -Reported-by: Tilman Sauerbeck <tilman@code-monkey.de> -Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=32547 -Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> ---- - uxa/uxa-priv.h | 1 - - uxa/uxa-render.c | 189 ------------------------------------------------------ - uxa/uxa.c | 4 -- - 3 files changed, 194 deletions(-) - -diff --git a/uxa/uxa-priv.h b/uxa/uxa-priv.h -index 0de45f5..b24ec4f 100644 ---- a/uxa/uxa-priv.h -+++ b/uxa/uxa-priv.h -@@ -123,7 +123,6 @@ typedef struct { - BitmapToRegionProcPtr SavedBitmapToRegion; - #ifdef RENDER - CompositeProcPtr SavedComposite; -- CompositeRectsProcPtr SavedCompositeRects; - TrianglesProcPtr SavedTriangles; - GlyphsProcPtr SavedGlyphs; - TrapezoidsProcPtr SavedTrapezoids; -diff --git a/uxa/uxa-render.c b/uxa/uxa-render.c -index 877b286..1e88c5d 100644 ---- a/uxa/uxa-render.c -+++ b/uxa/uxa-render.c -@@ -947,195 +947,6 @@ uxa_acquire_mask(ScreenPtr screen, - out_x, out_y); - } - --static Bool --_pixman_region_init_rectangles(pixman_region16_t *region, -- int num_rects, -- xRectangle *rects, -- int tx, int ty) --{ -- pixman_box16_t stack_boxes[64], *boxes = stack_boxes; -- pixman_bool_t ret; -- int i; -- -- if (num_rects > sizeof(stack_boxes) / sizeof(stack_boxes[0])) { -- boxes = malloc(sizeof(pixman_box16_t) * num_rects); -- if (boxes == NULL) -- return FALSE; -- } -- -- for (i = 0; i < num_rects; i++) { -- boxes[i].x1 = rects[i].x + tx; -- boxes[i].y1 = rects[i].y + ty; -- boxes[i].x2 = rects[i].x + tx + rects[i].width; -- boxes[i].y2 = rects[i].y + ty + rects[i].height; -- } -- -- ret = pixman_region_init_rects(region, boxes, num_rects); -- -- if (boxes != stack_boxes) -- free(boxes); -- -- return ret; --} -- --void --uxa_solid_rects (CARD8 op, -- PicturePtr dst, -- xRenderColor *color, -- int num_rects, -- xRectangle *rects) --{ -- ScreenPtr screen = dst->pDrawable->pScreen; -- uxa_screen_t *uxa_screen = uxa_get_screen(screen); -- PixmapPtr dst_pixmap, src_pixmap = NULL; -- pixman_region16_t region; -- pixman_box16_t *boxes, *extents; -- PicturePtr src; -- int dst_x, dst_y; -- int num_boxes; -- -- if (!pixman_region_not_empty(dst->pCompositeClip)) -- return; -- -- if (uxa_screen->info->flags & UXA_USE_GLAMOR) { -- int ok; -- -- uxa_picture_prepare_access(dst, UXA_GLAMOR_ACCESS_RW); -- ok = glamor_composite_rects_nf(op, dst, color, -- num_rects, rects); -- uxa_picture_finish_access(dst, UXA_GLAMOR_ACCESS_RW); -- -- if (!ok) -- goto fallback; -- -- return; -- } -- -- if (dst->alphaMap) -- goto fallback; -- -- dst_pixmap = uxa_get_offscreen_pixmap(dst->pDrawable, &dst_x, &dst_y); -- if (!dst_pixmap) -- goto fallback; -- -- if (!_pixman_region_init_rectangles(®ion, -- num_rects, rects, -- dst->pDrawable->x, dst->pDrawable->y)) -- goto fallback; -- -- if (!pixman_region_intersect(®ion, ®ion, dst->pCompositeClip)) { -- pixman_region_fini(®ion); -- return; -- } -- -- pixman_region_translate(®ion, dst_x, dst_y); -- boxes = pixman_region_rectangles(®ion, &num_boxes); -- extents = pixman_region_extents (®ion); -- -- if (op == PictOpClear) -- color->red = color->green = color->blue = color->alpha = 0; -- if (color->alpha >= 0xff00 && op == PictOpOver) { -- color->alpha = 0xffff; -- op = PictOpSrc; -- } -- -- /* Using GEM, the relocation costs outweigh the advantages of the blitter */ -- if (num_boxes == 1 && (op == PictOpSrc || op == PictOpClear)) { -- CARD32 pixel; -- --try_solid: -- if (uxa_screen->info->check_solid && -- !uxa_screen->info->check_solid(&dst_pixmap->drawable, GXcopy, FB_ALLONES)) -- goto err_region; -- -- if (!uxa_get_pixel_from_rgba(&pixel, -- color->red, -- color->green, -- color->blue, -- color->alpha, -- dst->format)) -- goto err_region; -- -- if (!uxa_screen->info->prepare_solid(dst_pixmap, GXcopy, FB_ALLONES, pixel)) -- goto err_region; -- -- while (num_boxes--) { -- uxa_screen->info->solid(dst_pixmap, -- boxes->x1, boxes->y1, -- boxes->x2, boxes->y2); -- boxes++; -- } -- -- uxa_screen->info->done_solid(dst_pixmap); -- } else { -- int error; -- -- src = CreateSolidPicture(0, color, &error); -- if (!src) -- goto err_region; -- -- if (!uxa_screen->info->check_composite(op, src, NULL, dst, -- extents->x2 - extents->x1, -- extents->y2 - extents->y1)) { -- if (op == PictOpSrc || op == PictOpClear) { -- FreePicture(src, 0); -- goto try_solid; -- } -- -- goto err_src; -- } -- -- if (!uxa_screen->info->check_composite_texture || -- !uxa_screen->info->check_composite_texture(screen, src)) { -- PicturePtr solid; -- int src_off_x, src_off_y; -- -- solid = uxa_acquire_solid(screen, src->pSourcePict); -- if (!solid) -- goto err_src; -- FreePicture(src, 0); -- -- src = solid; -- src_pixmap = uxa_get_offscreen_pixmap(src->pDrawable, -- &src_off_x, &src_off_y); -- if (!src_pixmap) -- goto err_src; -- } -- -- if (!uxa_screen->info->prepare_composite(op, src, NULL, dst, src_pixmap, NULL, dst_pixmap)) -- goto err_src; -- -- while (num_boxes--) { -- uxa_screen->info->composite(dst_pixmap, -- 0, 0, 0, 0, -- boxes->x1, -- boxes->y1, -- boxes->x2 - boxes->x1, -- boxes->y2 - boxes->y1); -- boxes++; -- } -- -- uxa_screen->info->done_composite(dst_pixmap); -- FreePicture(src, 0); -- } -- -- /* XXX xserver-1.8: CompositeRects is not tracked by Damage, so we must -- * manually append the damaged regions ourselves. -- */ -- pixman_region_translate(®ion, -dst_x, -dst_y); -- DamageRegionAppend(dst->pDrawable, ®ion); -- -- pixman_region_fini(®ion); -- return; -- --err_src: -- FreePicture(src, 0); --err_region: -- pixman_region_fini(®ion); --fallback: -- uxa_screen->SavedCompositeRects(op, dst, color, num_rects, rects); --} -- - static int - uxa_try_driver_composite(CARD8 op, - PicturePtr pSrc, -diff --git a/uxa/uxa.c b/uxa/uxa.c -index eb2ae03..b4a1da6 100644 ---- a/uxa/uxa.c -+++ b/uxa/uxa.c -@@ -407,7 +407,6 @@ static Bool uxa_close_screen(int i, ScreenPtr pScreen) - #ifdef RENDER - if (ps) { - ps->Composite = uxa_screen->SavedComposite; -- ps->CompositeRects = uxa_screen->SavedCompositeRects; - ps->Glyphs = uxa_screen->SavedGlyphs; - ps->Trapezoids = uxa_screen->SavedTrapezoids; - ps->AddTraps = uxa_screen->SavedAddTraps; -@@ -536,9 +535,6 @@ Bool uxa_driver_init(ScreenPtr screen, uxa_driver_t * uxa_driver) - uxa_screen->SavedComposite = ps->Composite; - ps->Composite = uxa_composite; - -- uxa_screen->SavedCompositeRects = ps->CompositeRects; -- ps->CompositeRects = uxa_solid_rects; -- - uxa_screen->SavedGlyphs = ps->Glyphs; - ps->Glyphs = uxa_glyphs; - --- -1.7.10 - |