[PATCH] rootless: Delete dead remnants of rootless acceleration.
Jeremy Huddleston
jeremyhu at apple.com
Wed Jul 14 14:13:21 PDT 2010
Reviewed-by: Jeremy Huddleston <jeremyhu at apple.com>
On Jul 14, 2010, at 13:49, Jamey Sharp wrote:
> Jeremy deleted rootlessAccelInit's implementation in 2008 in commit
> 587c010a1cd733fded4d49dc339df0634bda8be6. Delete its prototype and the
> remaining commented-out call to it.
>
> It still makes sense for the rootless GC ops to relax the planemask,
> but
> that's independent of the size of the operation, so quit checking the
> thresholds there.
>
> FillBytes and CompositePixels are not called anywhere, so delete
> everything related to both.
>
> Signed-off-by: Jamey Sharp <jamey at minilop.net>
> Cc: Jeremy Huddleston <jeremyhu at apple.com>
> Cc: Jon TURNEY <jon.turney at dronecode.org.uk>
> ---
> hw/xquartz/xpr/xprFrame.c | 4 --
> hw/xquartz/xpr/xprScreen.c | 6 ---
> hw/xwin/win.h | 10 ------
> hw/xwin/winscrinit.c | 4 --
> hw/xwin/winwin32rootless.c | 22 ------------
> miext/rootless/README.txt | 41 +----------------------
> miext/rootless/rootless.h | 69
> ---------------------------------------
> miext/rootless/rootlessCommon.c | 2 -
> miext/rootless/rootlessGC.c | 57 +++++
> +--------------------------
> 9 files changed, 11 insertions(+), 204 deletions(-)
>
> diff --git a/hw/xquartz/xpr/xprFrame.c b/hw/xquartz/xpr/xprFrame.c
> index 9f5d8a6..7b938c1 100644
> --- a/hw/xquartz/xpr/xprFrame.c
> +++ b/hw/xquartz/xpr/xprFrame.c
> @@ -457,8 +457,6 @@ static RootlessFrameProcsRec xprRootlessProcs = {
> xprHideWindow,
> xprUpdateColormap,
> xp_copy_bytes,
> - xp_fill_bytes,
> - xp_composite_pixels,
> xprCopyWindow
> };
>
> @@ -474,8 +472,6 @@ xprInit(ScreenPtr pScreen)
> TA_SERVER();
>
> rootless_CopyBytes_threshold = xp_copy_bytes_threshold;
> - rootless_FillBytes_threshold = xp_fill_bytes_threshold;
> - rootless_CompositePixels_threshold = xp_composite_area_threshold;
> rootless_CopyWindow_threshold = xp_scroll_area_threshold;
>
> return TRUE;
> diff --git a/hw/xquartz/xpr/xprScreen.c b/hw/xquartz/xpr/xprScreen.c
> index 87e97d4..c03a82d 100644
> --- a/hw/xquartz/xpr/xprScreen.c
> +++ b/hw/xquartz/xpr/xprScreen.c
> @@ -367,12 +367,6 @@ xprAddScreen(int index, ScreenPtr pScreen)
> static Bool
> xprSetupScreen(int index, ScreenPtr pScreen)
> {
> - // Initialize accelerated rootless drawing
> - // Note that this must be done before DamageSetup().
> -
> - // These are crashing ugly... better to be stable and not crash
> for now.
> - //RootlessAccelInit(pScreen);
> -
> #ifdef DAMAGE
> // The Damage extension needs to wrap underneath the
> // generic rootless layer, so do it now.
> diff --git a/hw/xwin/win.h b/hw/xwin/win.h
> index 8c4b67f..1b1358c 100644
> --- a/hw/xwin/win.h
> +++ b/hw/xwin/win.h
> @@ -1377,16 +1377,6 @@ winMWExtWMCopyBytes (unsigned int width,
> unsigned int height,
> void *dst, unsigned int dstRowBytes);
>
> void
> -winMWExtWMFillBytes (unsigned int width, unsigned int height,
> unsigned int value,
> - void *dst, unsigned int dstRowBytes);
> -
> -int
> -winMWExtWMCompositePixels (unsigned int width, unsigned int height,
> unsigned int function,
> - void *src[2], unsigned int srcRowBytes[2],
> - void *mask, unsigned int maskRowBytes,
> - void *dst[2], unsigned int dstRowBytes[2]);
> -
> -void
> winMWExtWMCopyWindow (RootlessFrameID wid, int dstNrects, const
> BoxRec *dstRects,
> int dx, int dy);
> #endif
> diff --git a/hw/xwin/winscrinit.c b/hw/xwin/winscrinit.c
> index 1b40933..178a1e4 100644
> --- a/hw/xwin/winscrinit.c
> +++ b/hw/xwin/winscrinit.c
> @@ -61,8 +61,6 @@ winMWExtWMProcs = {
> NULL,//winMWExtWMUpdateColorMap,
>
> NULL,//winMWExtWMCopyBytes,
> - NULL,//winMWExtWMFillBytes,
> - NULL,//winMWExtWMCompositePixels,
> winMWExtWMCopyWindow
> };
> #endif
> @@ -463,8 +461,6 @@ winFinishScreenInitFB (int index,
> winDebug ("winScreenInit - MultiWindowExtWM - RootlessInit
> returned\n");
>
> rootless_CopyBytes_threshold = 0;
> - rootless_FillBytes_threshold = 0;
> - rootless_CompositePixels_threshold = 0;
> /* FIXME: How many? Profiling needed? */
> rootless_CopyWindow_threshold = 1;
>
> diff --git a/hw/xwin/winwin32rootless.c b/hw/xwin/winwin32rootless.c
> index 9749861..fbe4191 100755
> --- a/hw/xwin/winwin32rootless.c
> +++ b/hw/xwin/winwin32rootless.c
> @@ -1007,28 +1007,6 @@ winMWExtWMCopyBytes (unsigned int width,
> unsigned int height,
> }
>
> void
> -winMWExtWMFillBytes (unsigned int width, unsigned int height,
> unsigned int value,
> - void *dst, unsigned int dstRowBytes)
> -{
> -#if CYGMULTIWINDOW_DEBUG
> - winDebug ("winMWExtWMFillBytes - Not implemented\n");
> -#endif
> -}
> -
> -int
> -winMWExtWMCompositePixels (unsigned int width, unsigned int height,
> unsigned int function,
> - void *src[2], unsigned int srcRowBytes[2],
> - void *mask, unsigned int maskRowBytes,
> - void *dst[2], unsigned int dstRowBytes[2])
> -{
> -#if CYGMULTIWINDOW_DEBUG
> - winDebug ("winMWExtWMCompositePixels - Not implemented\n");
> -#endif
> - return 0;
> -}
> -
> -
> -void
> winMWExtWMCopyWindow (RootlessFrameID wid, int nDstRects, const
> BoxRec *pDstRects,
> int nDx, int nDy)
> {
> diff --git a/miext/rootless/README.txt b/miext/rootless/README.txt
> index 7ec5c41..754715d 100644
> --- a/miext/rootless/README.txt
> +++ b/miext/rootless/README.txt
> @@ -102,8 +102,7 @@ rootlessConfig.h:
> offset that is applied to all screens when converting from
> screen-local to global coordinates.
>
> - o rootless_CopyBytes_threshold, rootless_FillBytes_threshold,
> - rootless_CompositePixels_threshold,
> rootless_CopyWindow_threshold:
> + o rootless_CopyBytes_threshold, rootless_CopyWindow_threshold:
> The minimum number of bytes or pixels for which to use the
> rootless
> implementation's respective acceleration function. The
> rootless
> acceleration functions are all optional so these will only
> be used
> @@ -322,44 +321,6 @@ typedef void (*RootlessCopyBytesProc)
> void *dst, unsigned int dstRowBytes);
>
> /*
> - * Fill memory with 32-bit pattern. (Optional)
> - *
> - * width Bytes to fill per row
> - * height Number of rows
> - * value 32-bit pattern to fill with
> - * dst Destination data
> - * dstRowBytes Width of destination in bytes
> - */
> -typedef void (*RootlessFillBytesProc)
> - (unsigned int width, unsigned int height, unsigned int value,
> - void *dst, unsigned int dstRowBytes);
> -
> -/*
> - * Composite pixels from source and mask to destination. (Optional)
> - *
> - * width, height Size of area to composite to in pizels
> - * function Composite function built with
> RL_COMPOSITE_FUNCTION
> - * src Source data
> - * srcRowBytes Width of source in bytes (Passing NULL means
> source
> - * is a single pixel.
> - * mask Mask data
> - * maskRowBytes Width of mask in bytes
> - * dst Destination data
> - * dstRowBytes Width of destination in bytes
> - *
> - * For src and dst, the first element of the array is the color
> data. If
> - * the second element is non-null it implies there is alpha data
> (which
> - * may be meshed or planar). Data without alpha is assumed to be
> opaque.
> - *
> - * An X11 error code is returned.
> - */
> -typedef int (*RootlessCompositePixelsProc)
> - (unsigned int width, unsigned int height, unsigned int function,
> - void *src[2], unsigned int srcRowBytes[2],
> - void *mask, unsigned int maskRowBytes,
> - void *dst[2], unsigned int dstRowBytes[2]);
> -
> -/*
> * Copy area in frame to another part of frame. (Optional)
> *
> * wid Frame id
> diff --git a/miext/rootless/rootless.h b/miext/rootless/rootless.h
> index 359d6c1..e5c2379 100644
> --- a/miext/rootless/rootless.h
> +++ b/miext/rootless/rootless.h
> @@ -82,30 +82,8 @@ extern int rootlessGlobalOffsetY;
> /* The minimum number of bytes or pixels for which to use the
> implementation's accelerated functions. */
> extern unsigned int rootless_CopyBytes_threshold;
> -extern unsigned int rootless_FillBytes_threshold;
> -extern unsigned int rootless_CompositePixels_threshold;
> extern unsigned int rootless_CopyWindow_threshold;
>
> -/* Operations used by CompositePixels */
> -enum rl_composite_op_enum {
> - RL_COMPOSITE_SRC = 0,
> - RL_COMPOSITE_OVER,
> -};
> -
> -/* Data formats for depth field and composite functions */
> -enum rl_depth_enum {
> - RL_DEPTH_NIL = 0, /* null source when compositing */
> - RL_DEPTH_ARGB8888,
> - RL_DEPTH_RGB555,
> - RL_DEPTH_A8, /* for masks when compositing */
> - RL_DEPTH_INDEX8,
> -};
> -
> -/* Macro to form the composite function for CompositePixels */
> -#define RL_COMPOSITE_FUNCTION(op, src_depth, mask_depth,
> dest_depth) \
> - (((op) << 24) | ((src_depth) << 16) \
> - | ((mask_depth) << 8) | ((dest_depth) << 0))
> -
> /* Gravity for window contents during resizing */
> enum rl_gravity_enum {
> RL_GRAVITY_NONE = 0, /* no gravity, fill everything */
> @@ -292,44 +270,6 @@ typedef void (*RootlessCopyBytesProc)
> void *dst, unsigned int dstRowBytes);
>
> /*
> - * Fill memory with 32-bit pattern. (Optional)
> - *
> - * width Bytes to fill per row
> - * height Number of rows
> - * value 32-bit pattern to fill with
> - * dst Destination data
> - * dstRowBytes Width of destination in bytes
> - */
> -typedef void (*RootlessFillBytesProc)
> - (unsigned int width, unsigned int height, unsigned int value,
> - void *dst, unsigned int dstRowBytes);
> -
> -/*
> - * Composite pixels from source and mask to destination. (Optional)
> - *
> - * width, height Size of area to composite to in pizels
> - * function Composite function built with
> RL_COMPOSITE_FUNCTION
> - * src Source data
> - * srcRowBytes Width of source in bytes (Passing NULL means
> source
> - * is a single pixel.
> - * mask Mask data
> - * maskRowBytes Width of mask in bytes
> - * dst Destination data
> - * dstRowBytes Width of destination in bytes
> - *
> - * For src and dst, the first element of the array is the color
> data. If
> - * the second element is non-null it implies there is alpha data
> (which
> - * may be meshed or planar). Data without alpha is assumed to be
> opaque.
> - *
> - * An X11 error code is returned.
> - */
> -typedef int (*RootlessCompositePixelsProc)
> - (unsigned int width, unsigned int height, unsigned int function,
> - void *src[2], unsigned int srcRowBytes[2],
> - void *mask, unsigned int maskRowBytes,
> - void *dst[2], unsigned int dstRowBytes[2]);
> -
> -/*
> * Copy area in frame to another part of frame. (Optional)
> *
> * wid Frame id
> @@ -374,8 +314,6 @@ typedef struct _RootlessFrameProcs {
>
> /* Optional acceleration functions */
> RootlessCopyBytesProc CopyBytes;
> - RootlessFillBytesProc FillBytes;
> - RootlessCompositePixelsProc CompositePixels;
> RootlessCopyWindowProc CopyWindow;
> } RootlessFrameProcsRec, *RootlessFrameProcsPtr;
>
> @@ -386,13 +324,6 @@ typedef struct _RootlessFrameProcs {
> Bool RootlessInit(ScreenPtr pScreen, RootlessFrameProcsPtr procs);
>
> /*
> - * Initialize acceleration for rootless mode on a given screen.
> - * Note: RootlessAccelInit() must be called before DamageSetup()
> - * and RootlessInit() must be called afterwards.
> - */
> -Bool RootlessAccelInit(ScreenPtr pScreen);
> -
> -/*
> * Return the frame ID for the physical window displaying the given
> window.
> *
> * create If true and the window has no frame, attempt to
> create one
> diff --git a/miext/rootless/rootlessCommon.c b/miext/rootless/
> rootlessCommon.c
> index 219844a..cae73f6 100644
> --- a/miext/rootless/rootlessCommon.c
> +++ b/miext/rootless/rootlessCommon.c
> @@ -40,8 +40,6 @@
> #include "colormapst.h"
>
> unsigned int rootless_CopyBytes_threshold = 0;
> -unsigned int rootless_FillBytes_threshold = 0;
> -unsigned int rootless_CompositePixels_threshold = 0;
> unsigned int rootless_CopyWindow_threshold = 0;
> int rootlessGlobalOffsetX = 0;
> int rootlessGlobalOffsetY = 0;
> diff --git a/miext/rootless/rootlessGC.c b/miext/rootless/rootlessGC.c
> index 63f24ce..f6e905b 100644
> --- a/miext/rootless/rootlessGC.c
> +++ b/miext/rootless/rootlessGC.c
> @@ -141,9 +141,6 @@ static const GCOps rootlessGCOps = {
> };
>
> /*
> - There are two issues we must contend with when drawing. These are
> - controlled with ROOTLESS_PROTECT_ALPHA and RootlessAccelInit().
> -
> If ROOTLESS_PROTECT_ALPHA is set, we have to make sure that the
> alpha
> channel of the on screen windows is always opaque. fb makes this
> harder
> than it would otherwise be by noticing that a planemask of
> 0x00ffffff
> @@ -164,21 +161,8 @@ static const GCOps rootlessGCOps = {
> can do this when drawing op is GXcopy. We can also do this when
> copying
> from another window since its alpha channel must also be opaque.
>
> - The other issue to consider is that the rootless implementation
> may
> - provide accelerated drawing functions if RootlessAccelInit() is
> called.For
> - some drawing primitives we swap in rootless acceleration
> functions, which
> - use the accelerated drawing functions where possible.
> -
> - Where both alpha protection and acceleration is used, it is even
> a bigger
> - win to relax the planemask to all ones because most accelerated
> drawing
> - functions can only be used in this case. However, even if we
> can't set
> - the planemask to all ones, we can still use the accelerated
> - CompositePixels function for GXcopy if it is a forward copy.
> This is
> - mainly intended for copying from pixmaps to windows. The
> CompositePixels
> - operation used sets alpha to 0xFF during the copy.
> -
> - The three macros below are used to implement this, potentially
> accelerated
> - drawing ops look something like this:
> + The three macros below are used to implement this. Drawing ops
> that can
> + potentially have their planemask relaxed look like:
>
> OP {
> GC_SAVE(gc);
> @@ -278,16 +262,6 @@ canAccelFill(DrawablePtr pDraw, GCPtr pGC)
> return canAccelBlit(pDraw, pGC);
> }
>
> -static unsigned int
> -boxBytes(DrawablePtr pDraw, BoxRec *box)
> -{
> - unsigned int pixels;
> -
> - pixels = (box->x2 - box->x1) * (box->y2 - box->y1);
> -
> - return pixels * (pDraw->bitsPerPixel >> 3);
> -}
> -
>
> /*
> * Screen function to create a graphics context
> @@ -448,8 +422,7 @@ RootlessFillSpans(DrawablePtr dst, GCPtr pGC,
> int nInit,
>
> RootlessStartDrawing((WindowPtr) dst);
>
> - if (canAccelFill(dst, pGC) &&
> - boxBytes(dst, &box) >= rootless_FillBytes_threshold)
> + if (canAccelFill(dst, pGC))
> {
> GC_UNSET_PM(pGC, dst);
> }
> @@ -555,15 +528,11 @@ RootlessCopyArea(DrawablePtr pSrc, DrawablePtr
> dst, GCPtr pGC,
> RL_DEBUG_MSG("copy area start (src 0x%x, dst 0x%x)", pSrc, dst);
>
> if (pSrc->type == DRAWABLE_WINDOW &&
> IsFramedWindow((WindowPtr)pSrc)) {
> - unsigned int bytes;
> -
> /* If both source and dest are windows, and we're doing
> a simple copy operation, we can remove the alpha-protecting
> planemask (since source has opaque alpha as well) */
>
> - bytes = w * h * (pSrc->depth >> 3);
> -
> - if (bytes >= rootless_CopyBytes_threshold &&
> canAccelBlit(pSrc, pGC))
> + if (canAccelBlit(pSrc, pGC))
> {
> GC_UNSET_PM(pGC, dst);
> }
> @@ -1035,8 +1004,7 @@ static void RootlessFillPolygon(DrawablePtr
> dst, GCPtr pGC,
>
> RootlessStartDrawing((WindowPtr) dst);
>
> - if (canAccelFill(dst, pGC) &&
> - boxBytes(dst, &box) >= rootless_FillBytes_threshold)
> + if (canAccelFill(dst, pGC))
> {
> GC_UNSET_PM(pGC, dst);
> }
> @@ -1088,8 +1056,7 @@ static void RootlessPolyFillRect(DrawablePtr
> dst, GCPtr pGC,
>
> RootlessStartDrawing((WindowPtr) dst);
>
> - if (canAccelFill(dst, pGC) &&
> - boxBytes(dst, &box) >= rootless_FillBytes_threshold)
> + if (canAccelFill(dst, pGC))
> {
> GC_UNSET_PM(pGC, dst);
> }
> @@ -1141,8 +1108,7 @@ static void RootlessPolyFillArc(DrawablePtr
> dst, GCPtr pGC,
>
> RootlessStartDrawing((WindowPtr) dst);
>
> - if (canAccelFill(dst, pGC) &&
> - boxBytes(dst, &box) >= rootless_FillBytes_threshold)
> + if (canAccelFill(dst, pGC))
> {
> GC_UNSET_PM(pGC, dst);
> }
> @@ -1192,8 +1158,7 @@ static void RootlessImageText8(DrawablePtr
> dst, GCPtr pGC,
>
> RootlessStartDrawing((WindowPtr) dst);
>
> - if (canAccelFill(dst, pGC) &&
> - boxBytes(dst, &box) >= rootless_FillBytes_threshold)
> + if (canAccelFill(dst, pGC))
> {
> GC_UNSET_PM(pGC, dst);
> }
> @@ -1280,8 +1245,7 @@ static void RootlessImageText16(DrawablePtr
> dst, GCPtr pGC,
>
> RootlessStartDrawing((WindowPtr) dst);
>
> - if (canAccelFill(dst, pGC) &&
> - boxBytes(dst, &box) >= rootless_FillBytes_threshold)
> + if (canAccelFill(dst, pGC))
> {
> GC_UNSET_PM(pGC, dst);
> }
> @@ -1379,8 +1343,7 @@ static void RootlessImageGlyphBlt(DrawablePtr
> dst, GCPtr pGC,
>
> RootlessStartDrawing((WindowPtr) dst);
>
> - if (canAccelFill(dst, pGC) &&
> - boxBytes(dst, &box) >= rootless_FillBytes_threshold)
> + if (canAccelFill(dst, pGC))
> {
> GC_UNSET_PM(pGC, dst);
> }
> --
> 1.7.0
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3333 bytes
Desc: not available
URL: <http://lists.x.org/archives/xorg-devel/attachments/20100714/156add48/attachment.bin>
More information about the xorg-devel
mailing list