diff options
author | marha <marha@users.sourceforge.net> | 2010-08-18 09:35:37 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2010-08-18 09:35:37 +0000 |
commit | 2aa7bcf37f00b7884ae166d62db81493ea37934a (patch) | |
tree | e7ad3e04c09c56538993c8a42a53adce5743d9a7 | |
parent | 2744e12e38280c4877311f129d5a5db509b75026 (diff) | |
download | vcxsrv-2aa7bcf37f00b7884ae166d62db81493ea37934a.tar.gz vcxsrv-2aa7bcf37f00b7884ae166d62db81493ea37934a.tar.bz2 vcxsrv-2aa7bcf37f00b7884ae166d62db81493ea37934a.zip |
libxext libx11 libxcb libXinerama libXau pixman xserver git update 18/10/2010
524 files changed, 3978 insertions, 3708 deletions
diff --git a/libX11/configure.ac b/libX11/configure.ac index e720748bd..9eb41d019 100644 --- a/libX11/configure.ac +++ b/libX11/configure.ac @@ -30,6 +30,7 @@ XORG_ENABLE_SPECS XORG_WITH_XMLTO(0.0.20)
XORG_WITH_FOP
XORG_CHECK_SGML_DOCTOOLS(1.5)
+XORG_PROG_RAWCPP
# Checks for programs.
AC_PROG_LIBTOOL
diff --git a/libX11/man/BitmapBitOrder.man b/libX11/man/BitmapBitOrder.man new file mode 100644 index 000000000..0a59afe46 --- /dev/null +++ b/libX11/man/BitmapBitOrder.man @@ -0,0 +1 @@ +.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
diff --git a/libX11/man/BitmapPad.man b/libX11/man/BitmapPad.man new file mode 100644 index 000000000..0a59afe46 --- /dev/null +++ b/libX11/man/BitmapPad.man @@ -0,0 +1 @@ +.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
diff --git a/libX11/man/BitmapUnit.man b/libX11/man/BitmapUnit.man new file mode 100644 index 000000000..0a59afe46 --- /dev/null +++ b/libX11/man/BitmapUnit.man @@ -0,0 +1 @@ +.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
diff --git a/libX11/man/BlackPixel.man b/libX11/man/BlackPixel.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/BlackPixel.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/CellsOfScreen.man b/libX11/man/CellsOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/CellsOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/ClientWhitePointOfCCC.man b/libX11/man/ClientWhitePointOfCCC.man new file mode 100644 index 000000000..5feb8b936 --- /dev/null +++ b/libX11/man/ClientWhitePointOfCCC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/DisplayOfCCC.__libmansuffix__
diff --git a/libX11/man/ConnectionNumber.man b/libX11/man/ConnectionNumber.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/ConnectionNumber.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DefaultColormap.man b/libX11/man/DefaultColormap.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/DefaultColormap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DefaultColormapOfScreen.man b/libX11/man/DefaultColormapOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/DefaultColormapOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/DefaultDepth.man b/libX11/man/DefaultDepth.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/DefaultDepth.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DefaultDepthOfScreen.man b/libX11/man/DefaultDepthOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/DefaultDepthOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/DefaultGC.man b/libX11/man/DefaultGC.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/DefaultGC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DefaultGCOfScreen.man b/libX11/man/DefaultGCOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/DefaultGCOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/DefaultRootWindow.man b/libX11/man/DefaultRootWindow.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/DefaultRootWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DefaultScreen.man b/libX11/man/DefaultScreen.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/DefaultScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DefaultScreenOfDisplay.man b/libX11/man/DefaultScreenOfDisplay.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/DefaultScreenOfDisplay.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DefaultVisual.man b/libX11/man/DefaultVisual.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/DefaultVisual.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DefaultVisualOfScreen.man b/libX11/man/DefaultVisualOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/DefaultVisualOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/DisplayCells.man b/libX11/man/DisplayCells.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/DisplayCells.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DisplayHeight.man b/libX11/man/DisplayHeight.man new file mode 100644 index 000000000..0a59afe46 --- /dev/null +++ b/libX11/man/DisplayHeight.man @@ -0,0 +1 @@ +.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
diff --git a/libX11/man/DisplayHeightMM.man b/libX11/man/DisplayHeightMM.man new file mode 100644 index 000000000..0a59afe46 --- /dev/null +++ b/libX11/man/DisplayHeightMM.man @@ -0,0 +1 @@ +.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
diff --git a/libX11/man/DisplayOfScreen.man b/libX11/man/DisplayOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/DisplayOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/DisplayPlanes.man b/libX11/man/DisplayPlanes.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/DisplayPlanes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DisplayString.man b/libX11/man/DisplayString.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/DisplayString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DisplayWidth.man b/libX11/man/DisplayWidth.man new file mode 100644 index 000000000..0a59afe46 --- /dev/null +++ b/libX11/man/DisplayWidth.man @@ -0,0 +1 @@ +.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
diff --git a/libX11/man/DisplayWidthMM.man b/libX11/man/DisplayWidthMM.man new file mode 100644 index 000000000..0a59afe46 --- /dev/null +++ b/libX11/man/DisplayWidthMM.man @@ -0,0 +1 @@ +.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
diff --git a/libX11/man/DoesBackingStore.man b/libX11/man/DoesBackingStore.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/DoesBackingStore.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/DoesSaveUnders.man b/libX11/man/DoesSaveUnders.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/DoesSaveUnders.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/EventMaskOfScreen.man b/libX11/man/EventMaskOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/EventMaskOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/HeightMMOfScreen.man b/libX11/man/HeightMMOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/HeightMMOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/HeightOfScreen.man b/libX11/man/HeightOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/HeightOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/IsFunctionKey.man b/libX11/man/IsFunctionKey.man new file mode 100644 index 000000000..2867ce2ad --- /dev/null +++ b/libX11/man/IsFunctionKey.man @@ -0,0 +1 @@ +.so man__libmansuffix__/IsCursorKey.__libmansuffix__
diff --git a/libX11/man/IsKeypadKey.man b/libX11/man/IsKeypadKey.man new file mode 100644 index 000000000..2867ce2ad --- /dev/null +++ b/libX11/man/IsKeypadKey.man @@ -0,0 +1 @@ +.so man__libmansuffix__/IsCursorKey.__libmansuffix__
diff --git a/libX11/man/IsMiscFunctionKey.man b/libX11/man/IsMiscFunctionKey.man new file mode 100644 index 000000000..2867ce2ad --- /dev/null +++ b/libX11/man/IsMiscFunctionKey.man @@ -0,0 +1 @@ +.so man__libmansuffix__/IsCursorKey.__libmansuffix__
diff --git a/libX11/man/IsModifierKey.man b/libX11/man/IsModifierKey.man new file mode 100644 index 000000000..2867ce2ad --- /dev/null +++ b/libX11/man/IsModifierKey.man @@ -0,0 +1 @@ +.so man__libmansuffix__/IsCursorKey.__libmansuffix__
diff --git a/libX11/man/IsPFKey.man b/libX11/man/IsPFKey.man new file mode 100644 index 000000000..2867ce2ad --- /dev/null +++ b/libX11/man/IsPFKey.man @@ -0,0 +1 @@ +.so man__libmansuffix__/IsCursorKey.__libmansuffix__
diff --git a/libX11/man/IsPrivateKeypadKey.man b/libX11/man/IsPrivateKeypadKey.man new file mode 100644 index 000000000..2867ce2ad --- /dev/null +++ b/libX11/man/IsPrivateKeypadKey.man @@ -0,0 +1 @@ +.so man__libmansuffix__/IsCursorKey.__libmansuffix__
diff --git a/libX11/man/LastKnownRequestProcessed.man b/libX11/man/LastKnownRequestProcessed.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/LastKnownRequestProcessed.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/Makefile.am b/libX11/man/Makefile.am index b1bed16c3..ac3f25ea2 100644 --- a/libX11/man/Makefile.am +++ b/libX11/man/Makefile.am @@ -2,34 +2,47 @@ SUBDIRS = xkb libmandir = $(LIB_MAN_DIR)
-LIB_MAN_DIR_SUFFIX = $(LIB_MAN_DIR:@mandir@/man%=%)
-
libman_PRE = \
+ $(all_shadows:=.man) \
+ $(file_shadows:=.man) \
AllPlanes.man \
BlackPixelOfScreen.man \
DisplayOfCCC.man \
ImageByteOrder.man \
IsCursorKey.man \
+ XAddConnectionWatch.man \
+ XAddHost.man \
XAllocClassHint.man \
+ XAllocColor.man \
XAllocIconSize.man \
- XAllocStandardColormap.man \
XAllocSizeHints.man \
+ XAllocStandardColormap.man \
XAllocWMHints.man \
- XAddHost.man \
- XAllocColor.man \
XAllowEvents.man \
XAnyEvent.man \
XButtonEvent.man \
XChangeKeyboardControl.man \
XChangeKeyboardMapping.man \
- XClientMessageEvent.man \
XChangePointerControl.man \
XChangeSaveSet.man \
XChangeWindowAttributes.man \
- XCreateWindowEvent.man \
XCirculateEvent.man \
XCirculateRequestEvent.man \
XClearArea.man \
+ XClientMessageEvent.man \
+ XcmsAllocColor.man \
+ XcmsCCCOfColormap.man \
+ XcmsCIELabQueryMaxC.man \
+ XcmsCIELuvQueryMaxC.man \
+ XcmsColor.man \
+ XcmsConvertColors.man \
+ XcmsCreateCCC.man \
+ XcmsDefaultCCC.man \
+ XcmsQueryBlack.man \
+ XcmsQueryColor.man \
+ XcmsSetWhitePoint.man \
+ XcmsStoreColor.man \
+ XcmsTekHVCQueryMaxC.man \
XColormapEvent.man \
XConfigureEvent.man \
XConfigureRequestEvent.man \
@@ -40,14 +53,14 @@ libman_PRE = \ XCreateFontSet.man \
XCreateGC.man \
XCreateIC.man \
- XInitImage.man \
XCreateOC.man \
XCreatePixmap.man \
XCreateRegion.man \
+ XCreateWindowEvent.man \
XCreateWindow.man \
XCrossingEvent.man \
- XDestroyWindowEvent.man \
XDefineCursor.man \
+ XDestroyWindowEvent.man \
XDestroyWindow.man \
XDrawArc.man \
XDrawImageString.man \
@@ -57,96 +70,106 @@ libman_PRE = \ XDrawString.man \
XDrawText.man \
XEmptyRegion.man \
- XrmEnumerateDatabase.man \
- XExtentsOfFontSet.man \
XErrorEvent.man \
XExposeEvent.man \
- XFocusChangeEvent.man \
- XFilterEvent.man \
- XFontSetExtents.man \
+ XExtentsOfFontSet.man \
XFillRectangle.man \
+ XFilterEvent.man \
XFlush.man \
+ XFocusChangeEvent.man \
+ XFontSetExtents.man \
XFontsOfFontSet.man \
XFree.man \
- XGraphicsExposeEvent.man \
- XGravityEvent.man \
- XrmGetFileDatabase.man \
- XrmGetResource.man \
XGetEventData.man \
XGetVisualInfo.man \
XGetWindowAttributes.man \
XGetWindowProperty.man \
XGetXCBConnection.man \
XGrabButton.man \
- XGrabKey.man \
XGrabKeyboard.man \
+ XGrabKey.man \
XGrabPointer.man \
XGrabServer.man \
+ XGraphicsExposeEvent.man \
+ XGravityEvent.man \
XIconifyWindow.man \
XIfEvent.man \
- XrmInitialize.man \
+ XInitImage.man \
+ XInitThreads.man \
XInstallColormap.man \
- XAddConnectionWatch.man \
- XIntersectRegion.man \
XInternAtom.man \
+ XIntersectRegion.man \
XKeymapEvent.man \
XListFonts.man \
XLoadFont.man \
XLookupKeysym.man \
- XrmMergeDatabases.man \
XMapEvent.man \
XMapRequestEvent.man \
XMapWindow.man \
+ XmbDrawImageString.man \
+ XmbDrawString.man \
+ XmbDrawText.man \
+ XmbLookupString.man \
+ XmbResetIC.man \
+ XmbTextEscapement.man \
+ XmbTextExtents.man \
+ XmbTextListToTextProperty.man \
+ XmbTextPerCharExtents.man \
XNextEvent.man \
XNoOp.man \
XOpenDisplay.man \
XOpenIM.man \
XOpenOM.man \
- XPropertyEvent.man \
XParseGeometry.man \
XPolygonRegion.man \
+ XPropertyEvent.man \
XPutBackEvent.man \
XPutImage.man \
- XrmPutResource.man \
XQueryBestSize.man \
XQueryColor.man \
XQueryExtension.man \
XQueryPointer.man \
XQueryTree.man \
- XReparentEvent.man \
- XResourceManagerString.man \
- XResizeRequestEvent.man \
XRaiseWindow.man \
XReadBitmapFile.man \
XRecolorCursor.man \
+ XReparentEvent.man \
XReparentWindow.man \
- XSelectionClearEvent.man \
+ XResizeRequestEvent.man \
+ XResourceManagerString.man \
+ XrmEnumerateDatabase.man \
+ XrmGetFileDatabase.man \
+ XrmGetResource.man \
+ XrmInitialize.man \
+ XrmMergeDatabases.man \
+ XrmPutResource.man \
+ XrmUniqueQuark.man \
XSaveContext.man \
- XSelectionEvent.man \
- XSetICFocus.man \
- XSetICValues.man \
XSelectInput.man \
- XStringListToTextProperty.man \
+ XSelectionClearEvent.man \
+ XSelectionEvent.man \
XSelectionRequestEvent.man \
+ XSendEvent.man \
XSetArcMode.man \
XSetClipOrigin.man \
XSetCloseDownMode.man \
XSetCommand.man \
XSetErrorHandler.man \
XSetEventQueueOwner.man \
- XSendEvent.man \
XSetFillStyle.man \
XSetFont.man \
XSetFontPath.man \
+ XSetICFocus.man \
+ XSetICValues.man \
XSetInputFocus.man \
XSetLineAttributes.man \
XSetPointerMapping.man \
XSetScreenSaver.man \
XSetSelectionOwner.man \
XSetState.man \
- XSetTransientForHint.man \
XSetTextProperty.man \
XSetTile.man \
+ XSetTransientForHint.man \
XSetWMClientMachine.man \
XSetWMColormapWindows.man \
XSetWMIconName.man \
@@ -155,45 +178,21 @@ libman_PRE = \ XSetWMProtocols.man \
XStoreBytes.man \
XStoreColors.man \
+ XStringListToTextProperty.man \
XStringToKeysym.man \
XSupportsLocale.man \
XSynchronize.man \
- XmbTextListToTextProperty.man \
XTextExtents.man \
XTextWidth.man \
- XInitThreads.man \
XTranslateCoordinates.man \
- XrmUniqueQuark.man \
XUnmapEvent.man \
XUnmapWindow.man \
XVaCreateNestedList.man \
XVisibilityEvent.man \
- XWarpPointer.man \
- XcmsCCCOfColormap.man \
- XcmsAllocColor.man \
- XcmsConvertColors.man \
- XcmsColor.man \
- XcmsCreateCCC.man \
- XcmsDefaultCCC.man \
- XcmsCIELabQueryMaxC.man \
- XcmsCIELuvQueryMaxC.man \
- XcmsQueryBlack.man \
- XcmsQueryColor.man \
- XcmsStoreColor.man \
- XcmsSetWhitePoint.man \
- XcmsTekHVCQueryMaxC.man \
- XmbDrawImageString.man \
- XmbDrawString.man \
- XmbDrawText.man \
- XmbLookupString.man \
- XmbResetIC.man \
- XmbTextEscapement.man \
- XmbTextExtents.man \
- XmbTextPerCharExtents.man
+ XWarpPointer.man
filemandir = $(FILE_MAN_DIR)
fileman_PRE = Compose.man
-FILE_MAN_DIR_SUFFIX = $(FILE_MAN_DIR:@mandir@/man%=%)
if MANPAGES
libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@) \
@@ -1076,580 +1075,9 @@ XmbTextPerCharExtents_shadows = \ XwcTextPerCharExtents \
Xutf8TextPerCharExtents
-AllPlanes_shadowmen = $(AllPlanes_shadows:=.@LIB_MAN_SUFFIX@)
-$(AllPlanes_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/AllPlanes.$(LIB_MAN_SUFFIX)" > $@
-
-BlackPixelOfScreen_shadowmen = $(BlackPixelOfScreen_shadows:=.@LIB_MAN_SUFFIX@)
-$(BlackPixelOfScreen_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/BlackPixelOfScreen.$(LIB_MAN_SUFFIX)" > $@
-
-DisplayOfCCC_shadowmen = $(DisplayOfCCC_shadows:=.@LIB_MAN_SUFFIX@)
-$(DisplayOfCCC_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/DisplayOfCCC.$(LIB_MAN_SUFFIX)" > $@
-
-ImageByteOrder_shadowmen = $(ImageByteOrder_shadows:=.@LIB_MAN_SUFFIX@)
-$(ImageByteOrder_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/ImageByteOrder.$(LIB_MAN_SUFFIX)" > $@
-
-IsCursorKey_shadowmen = $(IsCursorKey_shadows:=.@LIB_MAN_SUFFIX@)
-$(IsCursorKey_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/IsCursorKey.$(LIB_MAN_SUFFIX)" > $@
-
-XAllocClassHint_shadowmen = $(XAllocClassHint_shadows:=.@LIB_MAN_SUFFIX@)
-$(XAllocClassHint_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XAllocClassHint.$(LIB_MAN_SUFFIX)" > $@
-
-XAllocIconSize_shadowmen = $(XAllocIconSize_shadows:=.@LIB_MAN_SUFFIX@)
-$(XAllocIconSize_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XAllocIconSize.$(LIB_MAN_SUFFIX)" > $@
-
-XAllocStandardColormap_shadowmen = $(XAllocStandardColormap_shadows:=.@LIB_MAN_SUFFIX@)
-$(XAllocStandardColormap_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XAllocStandardColormap.$(LIB_MAN_SUFFIX)" > $@
-
-XAllocSizeHints_shadowmen = $(XAllocSizeHints_shadows:=.@LIB_MAN_SUFFIX@)
-$(XAllocSizeHints_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XAllocSizeHints.$(LIB_MAN_SUFFIX)" > $@
-
-XAllocWMHints_shadowmen = $(XAllocWMHints_shadows:=.@LIB_MAN_SUFFIX@)
-$(XAllocWMHints_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XAllocWMHints.$(LIB_MAN_SUFFIX)" > $@
-
-XAddHost_shadowmen = $(XAddHost_shadows:=.@LIB_MAN_SUFFIX@)
-$(XAddHost_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XAddHost.$(LIB_MAN_SUFFIX)" > $@
-
-XAllocColor_shadowmen = $(XAllocColor_shadows:=.@LIB_MAN_SUFFIX@)
-$(XAllocColor_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XAllocColor.$(LIB_MAN_SUFFIX)" > $@
-
-XAnyEvent_shadowmen = $(XAnyEvent_shadows:=.@LIB_MAN_SUFFIX@)
-$(XAnyEvent_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XAnyEvent.$(LIB_MAN_SUFFIX)" > $@
-
-XButtonEvent_shadowmen = $(XButtonEvent_shadows:=.@LIB_MAN_SUFFIX@)
-$(XButtonEvent_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XButtonEvent.$(LIB_MAN_SUFFIX)" > $@
-
-XChangeKeyboardControl_shadowmen = $(XChangeKeyboardControl_shadows:=.@LIB_MAN_SUFFIX@)
-$(XChangeKeyboardControl_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XChangeKeyboardControl.$(LIB_MAN_SUFFIX)" > $@
-
-XChangeKeyboardMapping_shadowmen = $(XChangeKeyboardMapping_shadows:=.@LIB_MAN_SUFFIX@)
-$(XChangeKeyboardMapping_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XChangeKeyboardMapping.$(LIB_MAN_SUFFIX)" > $@
-
-XChangePointerControl_shadowmen = $(XChangePointerControl_shadows:=.@LIB_MAN_SUFFIX@)
-$(XChangePointerControl_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XChangePointerControl.$(LIB_MAN_SUFFIX)" > $@
-
-XChangeSaveSet_shadowmen = $(XChangeSaveSet_shadows:=.@LIB_MAN_SUFFIX@)
-$(XChangeSaveSet_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XChangeSaveSet.$(LIB_MAN_SUFFIX)" > $@
-
-XChangeWindowAttributes_shadowmen = $(XChangeWindowAttributes_shadows:=.@LIB_MAN_SUFFIX@)
-$(XChangeWindowAttributes_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XChangeWindowAttributes.$(LIB_MAN_SUFFIX)" > $@
-
-XClearArea_shadowmen = $(XClearArea_shadows:=.@LIB_MAN_SUFFIX@)
-$(XClearArea_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XClearArea.$(LIB_MAN_SUFFIX)" > $@
-
-XConfigureWindow_shadowmen = $(XConfigureWindow_shadows:=.@LIB_MAN_SUFFIX@)
-$(XConfigureWindow_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XConfigureWindow.$(LIB_MAN_SUFFIX)" > $@
-
-XCopyArea_shadowmen = $(XCopyArea_shadows:=.@LIB_MAN_SUFFIX@)
-$(XCopyArea_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XCopyArea.$(LIB_MAN_SUFFIX)" > $@
-
-XCreateColormap_shadowmen = $(XCreateColormap_shadows:=.@LIB_MAN_SUFFIX@)
-$(XCreateColormap_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XCreateColormap.$(LIB_MAN_SUFFIX)" > $@
-
-XCreateFontCursor_shadowmen = $(XCreateFontCursor_shadows:=.@LIB_MAN_SUFFIX@)
-$(XCreateFontCursor_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XCreateFontCursor.$(LIB_MAN_SUFFIX)" > $@
-
-XCreateFontSet_shadowmen = $(XCreateFontSet_shadows:=.@LIB_MAN_SUFFIX@)
-$(XCreateFontSet_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XCreateFontSet.$(LIB_MAN_SUFFIX)" > $@
-
-XCreateGC_shadowmen = $(XCreateGC_shadows:=.@LIB_MAN_SUFFIX@)
-$(XCreateGC_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XCreateGC.$(LIB_MAN_SUFFIX)" > $@
-
-XCreateIC_shadowmen = $(XCreateIC_shadows:=.@LIB_MAN_SUFFIX@)
-$(XCreateIC_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XCreateIC.$(LIB_MAN_SUFFIX)" > $@
-
-XInitImage_shadowmen = $(XInitImage_shadows:=.@LIB_MAN_SUFFIX@)
-$(XInitImage_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XInitImage.$(LIB_MAN_SUFFIX)" > $@
-
-XCreateOC_shadowmen = $(XCreateOC_shadows:=.@LIB_MAN_SUFFIX@)
-$(XCreateOC_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XCreateOC.$(LIB_MAN_SUFFIX)" > $@
-
-XCreatePixmap_shadowmen = $(XCreatePixmap_shadows:=.@LIB_MAN_SUFFIX@)
-$(XCreatePixmap_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XCreatePixmap.$(LIB_MAN_SUFFIX)" > $@
-
-XCreateRegion_shadowmen = $(XCreateRegion_shadows:=.@LIB_MAN_SUFFIX@)
-$(XCreateRegion_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XCreateRegion.$(LIB_MAN_SUFFIX)" > $@
-
-XCreateWindow_shadowmen = $(XCreateWindow_shadows:=.@LIB_MAN_SUFFIX@)
-$(XCreateWindow_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XCreateWindow.$(LIB_MAN_SUFFIX)" > $@
-
-XDefineCursor_shadowmen = $(XDefineCursor_shadows:=.@LIB_MAN_SUFFIX@)
-$(XDefineCursor_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XDefineCursor.$(LIB_MAN_SUFFIX)" > $@
-
-XDestroyWindow_shadowmen = $(XDestroyWindow_shadows:=.@LIB_MAN_SUFFIX@)
-$(XDestroyWindow_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XDestroyWindow.$(LIB_MAN_SUFFIX)" > $@
-
-XDrawArc_shadowmen = $(XDrawArc_shadows:=.@LIB_MAN_SUFFIX@)
-$(XDrawArc_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XDrawArc.$(LIB_MAN_SUFFIX)" > $@
-
-XDrawImageString_shadowmen = $(XDrawImageString_shadows:=.@LIB_MAN_SUFFIX@)
-$(XDrawImageString_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XDrawImageString.$(LIB_MAN_SUFFIX)" > $@
-
-XDrawLine_shadowmen = $(XDrawLine_shadows:=.@LIB_MAN_SUFFIX@)
-$(XDrawLine_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XDrawLine.$(LIB_MAN_SUFFIX)" > $@
-
-XDrawPoint_shadowmen = $(XDrawPoint_shadows:=.@LIB_MAN_SUFFIX@)
-$(XDrawPoint_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XDrawPoint.$(LIB_MAN_SUFFIX)" > $@
-
-XDrawRectangle_shadowmen = $(XDrawRectangle_shadows:=.@LIB_MAN_SUFFIX@)
-$(XDrawRectangle_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XDrawRectangle.$(LIB_MAN_SUFFIX)" > $@
-
-XDrawString_shadowmen = $(XDrawString_shadows:=.@LIB_MAN_SUFFIX@)
-$(XDrawString_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XDrawString.$(LIB_MAN_SUFFIX)" > $@
-
-XDrawText_shadowmen = $(XDrawText_shadows:=.@LIB_MAN_SUFFIX@)
-$(XDrawText_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XDrawText.$(LIB_MAN_SUFFIX)" > $@
-
-XEmptyRegion_shadowmen = $(XEmptyRegion_shadows:=.@LIB_MAN_SUFFIX@)
-$(XEmptyRegion_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XEmptyRegion.$(LIB_MAN_SUFFIX)" > $@
-
-XFillRectangle_shadowmen = $(XFillRectangle_shadows:=.@LIB_MAN_SUFFIX@)
-$(XFillRectangle_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XFillRectangle.$(LIB_MAN_SUFFIX)" > $@
-
-XFlush_shadowmen = $(XFlush_shadows:=.@LIB_MAN_SUFFIX@)
-$(XFlush_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XFlush.$(LIB_MAN_SUFFIX)" > $@
-
-XFontsOfFontSet_shadowmen = $(XFontsOfFontSet_shadows:=.@LIB_MAN_SUFFIX@)
-$(XFontsOfFontSet_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XFontsOfFontSet.$(LIB_MAN_SUFFIX)" > $@
-
-XGraphicsExposeEvent_shadowmen = $(XGraphicsExposeEvent_shadows:=.@LIB_MAN_SUFFIX@)
-$(XGraphicsExposeEvent_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XGraphicsExposeEvent.$(LIB_MAN_SUFFIX)" > $@
-
-XrmGetFileDatabase_shadowmen = $(XrmGetFileDatabase_shadows:=.@LIB_MAN_SUFFIX@)
-$(XrmGetFileDatabase_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XrmGetFileDatabase.$(LIB_MAN_SUFFIX)" > $@
-
-XrmGetResource_shadowmen = $(XrmGetResource_shadows:=.@LIB_MAN_SUFFIX@)
-$(XrmGetResource_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XrmGetResource.$(LIB_MAN_SUFFIX)" > $@
-
-XGetEventData_shadowmen = $(XGetEventData_shadows:=.@LIB_MAN_SUFFIX@)
-$(XGetEventData_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XGetEventData.$(LIB_MAN_SUFFIX)" > $@
-
-XGetVisualInfo_shadowmen = $(XGetVisualInfo_shadows:=.@LIB_MAN_SUFFIX@)
-$(XGetVisualInfo_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XGetVisualInfo.$(LIB_MAN_SUFFIX)" > $@
-
-XGetWindowAttributes_shadowmen = $(XGetWindowAttributes_shadows:=.@LIB_MAN_SUFFIX@)
-$(XGetWindowAttributes_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XGetWindowAttributes.$(LIB_MAN_SUFFIX)" > $@
-
-XGetWindowProperty_shadowmen = $(XGetWindowProperty_shadows:=.@LIB_MAN_SUFFIX@)
-$(XGetWindowProperty_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XGetWindowProperty.$(LIB_MAN_SUFFIX)" > $@
-
-XGrabButton_shadowmen = $(XGrabButton_shadows:=.@LIB_MAN_SUFFIX@)
-$(XGrabButton_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XGrabButton.$(LIB_MAN_SUFFIX)" > $@
-
-XGrabKey_shadowmen = $(XGrabKey_shadows:=.@LIB_MAN_SUFFIX@)
-$(XGrabKey_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XGrabKey.$(LIB_MAN_SUFFIX)" > $@
-
-XGrabKeyboard_shadowmen = $(XGrabKeyboard_shadows:=.@LIB_MAN_SUFFIX@)
-$(XGrabKeyboard_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XGrabKeyboard.$(LIB_MAN_SUFFIX)" > $@
-
-XGrabPointer_shadowmen = $(XGrabPointer_shadows:=.@LIB_MAN_SUFFIX@)
-$(XGrabPointer_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XGrabPointer.$(LIB_MAN_SUFFIX)" > $@
-
-XGrabServer_shadowmen = $(XGrabServer_shadows:=.@LIB_MAN_SUFFIX@)
-$(XGrabServer_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XGrabServer.$(LIB_MAN_SUFFIX)" > $@
-
-XIconifyWindow_shadowmen = $(XIconifyWindow_shadows:=.@LIB_MAN_SUFFIX@)
-$(XIconifyWindow_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XIconifyWindow.$(LIB_MAN_SUFFIX)" > $@
-
-XIfEvent_shadowmen = $(XIfEvent_shadows:=.@LIB_MAN_SUFFIX@)
-$(XIfEvent_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XIfEvent.$(LIB_MAN_SUFFIX)" > $@
-
-XrmInitialize_shadowmen = $(XrmInitialize_shadows:=.@LIB_MAN_SUFFIX@)
-$(XrmInitialize_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XrmInitialize.$(LIB_MAN_SUFFIX)" > $@
-
-XInstallColormap_shadowmen = $(XInstallColormap_shadows:=.@LIB_MAN_SUFFIX@)
-$(XInstallColormap_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XInstallColormap.$(LIB_MAN_SUFFIX)" > $@
-
-XAddConnectionWatch_shadowmen = $(XAddConnectionWatch_shadows:=.@LIB_MAN_SUFFIX@)
-$(XAddConnectionWatch_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XAddConnectionWatch.$(LIB_MAN_SUFFIX)" > $@
-
-XIntersectRegion_shadowmen = $(XIntersectRegion_shadows:=.@LIB_MAN_SUFFIX@)
-$(XIntersectRegion_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XIntersectRegion.$(LIB_MAN_SUFFIX)" > $@
-
-XInternAtom_shadowmen = $(XInternAtom_shadows:=.@LIB_MAN_SUFFIX@)
-$(XInternAtom_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XInternAtom.$(LIB_MAN_SUFFIX)" > $@
-
-XListFonts_shadowmen = $(XListFonts_shadows:=.@LIB_MAN_SUFFIX@)
-$(XListFonts_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XListFonts.$(LIB_MAN_SUFFIX)" > $@
-
-XLoadFont_shadowmen = $(XLoadFont_shadows:=.@LIB_MAN_SUFFIX@)
-$(XLoadFont_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XLoadFont.$(LIB_MAN_SUFFIX)" > $@
-
-XLookupKeysym_shadowmen = $(XLookupKeysym_shadows:=.@LIB_MAN_SUFFIX@)
-$(XLookupKeysym_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XLookupKeysym.$(LIB_MAN_SUFFIX)" > $@
-
-XrmMergeDatabases_shadowmen = $(XrmMergeDatabases_shadows:=.@LIB_MAN_SUFFIX@)
-$(XrmMergeDatabases_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XrmMergeDatabases.$(LIB_MAN_SUFFIX)" > $@
-
-XMapEvent_shadowmen = $(XMapEvent_shadows:=.@LIB_MAN_SUFFIX@)
-$(XMapEvent_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XMapEvent.$(LIB_MAN_SUFFIX)" > $@
-
-XMapWindow_shadowmen = $(XMapWindow_shadows:=.@LIB_MAN_SUFFIX@)
-$(XMapWindow_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XMapWindow.$(LIB_MAN_SUFFIX)" > $@
-
-XNextEvent_shadowmen = $(XNextEvent_shadows:=.@LIB_MAN_SUFFIX@)
-$(XNextEvent_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XNextEvent.$(LIB_MAN_SUFFIX)" > $@
-
-XOpenDisplay_shadowmen = $(XOpenDisplay_shadows:=.@LIB_MAN_SUFFIX@)
-$(XOpenDisplay_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XOpenDisplay.$(LIB_MAN_SUFFIX)" > $@
-
-XOpenIM_shadowmen = $(XOpenIM_shadows:=.@LIB_MAN_SUFFIX@)
-$(XOpenIM_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XOpenIM.$(LIB_MAN_SUFFIX)" > $@
-
-XOpenOM_shadowmen = $(XOpenOM_shadows:=.@LIB_MAN_SUFFIX@)
-$(XOpenOM_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XOpenOM.$(LIB_MAN_SUFFIX)" > $@
-
-XParseGeometry_shadowmen = $(XParseGeometry_shadows:=.@LIB_MAN_SUFFIX@)
-$(XParseGeometry_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XParseGeometry.$(LIB_MAN_SUFFIX)" > $@
-
-XPolygonRegion_shadowmen = $(XPolygonRegion_shadows:=.@LIB_MAN_SUFFIX@)
-$(XPolygonRegion_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XPolygonRegion.$(LIB_MAN_SUFFIX)" > $@
-
-XPutImage_shadowmen = $(XPutImage_shadows:=.@LIB_MAN_SUFFIX@)
-$(XPutImage_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XPutImage.$(LIB_MAN_SUFFIX)" > $@
-
-XrmPutResource_shadowmen = $(XrmPutResource_shadows:=.@LIB_MAN_SUFFIX@)
-$(XrmPutResource_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XrmPutResource.$(LIB_MAN_SUFFIX)" > $@
-
-XQueryBestSize_shadowmen = $(XQueryBestSize_shadows:=.@LIB_MAN_SUFFIX@)
-$(XQueryBestSize_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XQueryBestSize.$(LIB_MAN_SUFFIX)" > $@
-
-XQueryColor_shadowmen = $(XQueryColor_shadows:=.@LIB_MAN_SUFFIX@)
-$(XQueryColor_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XQueryColor.$(LIB_MAN_SUFFIX)" > $@
-
-XQueryExtension_shadowmen = $(XQueryExtension_shadows:=.@LIB_MAN_SUFFIX@)
-$(XQueryExtension_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XQueryExtension.$(LIB_MAN_SUFFIX)" > $@
-
-XResourceManagerString_shadowmen = $(XResourceManagerString_shadows:=.@LIB_MAN_SUFFIX@)
-$(XResourceManagerString_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XResourceManagerString.$(LIB_MAN_SUFFIX)" > $@
-
-XRaiseWindow_shadowmen = $(XRaiseWindow_shadows:=.@LIB_MAN_SUFFIX@)
-$(XRaiseWindow_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XRaiseWindow.$(LIB_MAN_SUFFIX)" > $@
-
-XReadBitmapFile_shadowmen = $(XReadBitmapFile_shadows:=.@LIB_MAN_SUFFIX@)
-$(XReadBitmapFile_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XReadBitmapFile.$(LIB_MAN_SUFFIX)" > $@
-
-XRecolorCursor_shadowmen = $(XRecolorCursor_shadows:=.@LIB_MAN_SUFFIX@)
-$(XRecolorCursor_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XRecolorCursor.$(LIB_MAN_SUFFIX)" > $@
-
-XSaveContext_shadowmen = $(XSaveContext_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSaveContext_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSaveContext.$(LIB_MAN_SUFFIX)" > $@
-
-XSetICFocus_shadowmen = $(XSetICFocus_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetICFocus_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetICFocus.$(LIB_MAN_SUFFIX)" > $@
-
-XSetICValues_shadowmen = $(XSetICValues_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetICValues_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetICValues.$(LIB_MAN_SUFFIX)" > $@
-
-XStringListToTextProperty_shadowmen = $(XStringListToTextProperty_shadows:=.@LIB_MAN_SUFFIX@)
-$(XStringListToTextProperty_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XStringListToTextProperty.$(LIB_MAN_SUFFIX)" > $@
-
-XSetArcMode_shadowmen = $(XSetArcMode_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetArcMode_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetArcMode.$(LIB_MAN_SUFFIX)" > $@
-
-XSetClipOrigin_shadowmen = $(XSetClipOrigin_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetClipOrigin_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetClipOrigin.$(LIB_MAN_SUFFIX)" > $@
-
-XSetCloseDownMode_shadowmen = $(XSetCloseDownMode_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetCloseDownMode_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetCloseDownMode.$(LIB_MAN_SUFFIX)" > $@
-
-XSetCommand_shadowmen = $(XSetCommand_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetCommand_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetCommand.$(LIB_MAN_SUFFIX)" > $@
-
-XSetErrorHandler_shadowmen = $(XSetErrorHandler_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetErrorHandler_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetErrorHandler.$(LIB_MAN_SUFFIX)" > $@
-
-XSendEvent_shadowmen = $(XSendEvent_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSendEvent_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSendEvent.$(LIB_MAN_SUFFIX)" > $@
-
-XSetFillStyle_shadowmen = $(XSetFillStyle_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetFillStyle_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetFillStyle.$(LIB_MAN_SUFFIX)" > $@
-
-XSetFontPath_shadowmen = $(XSetFontPath_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetFontPath_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetFontPath.$(LIB_MAN_SUFFIX)" > $@
-
-XSetInputFocus_shadowmen = $(XSetInputFocus_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetInputFocus_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetInputFocus.$(LIB_MAN_SUFFIX)" > $@
-
-XSetLineAttributes_shadowmen = $(XSetLineAttributes_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetLineAttributes_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetLineAttributes.$(LIB_MAN_SUFFIX)" > $@
-
-XSetPointerMapping_shadowmen = $(XSetPointerMapping_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetPointerMapping_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetPointerMapping.$(LIB_MAN_SUFFIX)" > $@
-
-XSetScreenSaver_shadowmen = $(XSetScreenSaver_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetScreenSaver_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetScreenSaver.$(LIB_MAN_SUFFIX)" > $@
-
-XSetSelectionOwner_shadowmen = $(XSetSelectionOwner_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetSelectionOwner_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetSelectionOwner.$(LIB_MAN_SUFFIX)" > $@
-
-XSetState_shadowmen = $(XSetState_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetState_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetState.$(LIB_MAN_SUFFIX)" > $@
-
-XSetTransientForHint_shadowmen = $(XSetTransientForHint_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetTransientForHint_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetTransientForHint.$(LIB_MAN_SUFFIX)" > $@
-
-XSetTextProperty_shadowmen = $(XSetTextProperty_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetTextProperty_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetTextProperty.$(LIB_MAN_SUFFIX)" > $@
-
-XSetTile_shadowmen = $(XSetTile_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetTile_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetTile.$(LIB_MAN_SUFFIX)" > $@
-
-XSetWMClientMachine_shadowmen = $(XSetWMClientMachine_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetWMClientMachine_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetWMClientMachine.$(LIB_MAN_SUFFIX)" > $@
-
-XSetWMColormapWindows_shadowmen = $(XSetWMColormapWindows_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetWMColormapWindows_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetWMColormapWindows.$(LIB_MAN_SUFFIX)" > $@
-
-XSetWMIconName_shadowmen = $(XSetWMIconName_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetWMIconName_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetWMIconName.$(LIB_MAN_SUFFIX)" > $@
-
-XSetWMName_shadowmen = $(XSetWMName_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetWMName_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetWMName.$(LIB_MAN_SUFFIX)" > $@
-
-XSetWMProperties_shadowmen = $(XSetWMProperties_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetWMProperties_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetWMProperties.$(LIB_MAN_SUFFIX)" > $@
-
-XSetWMProtocols_shadowmen = $(XSetWMProtocols_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSetWMProtocols_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSetWMProtocols.$(LIB_MAN_SUFFIX)" > $@
-
-XStoreBytes_shadowmen = $(XStoreBytes_shadows:=.@LIB_MAN_SUFFIX@)
-$(XStoreBytes_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XStoreBytes.$(LIB_MAN_SUFFIX)" > $@
-
-XStoreColors_shadowmen = $(XStoreColors_shadows:=.@LIB_MAN_SUFFIX@)
-$(XStoreColors_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XStoreColors.$(LIB_MAN_SUFFIX)" > $@
-
-XStringToKeysym_shadowmen = $(XStringToKeysym_shadows:=.@LIB_MAN_SUFFIX@)
-$(XStringToKeysym_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XStringToKeysym.$(LIB_MAN_SUFFIX)" > $@
-
-XSupportsLocale_shadowmen = $(XSupportsLocale_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSupportsLocale_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSupportsLocale.$(LIB_MAN_SUFFIX)" > $@
-
-XSynchronize_shadowmen = $(XSynchronize_shadows:=.@LIB_MAN_SUFFIX@)
-$(XSynchronize_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XSynchronize.$(LIB_MAN_SUFFIX)" > $@
-
-XmbTextListToTextProperty_shadowmen = $(XmbTextListToTextProperty_shadows:=.@LIB_MAN_SUFFIX@)
-$(XmbTextListToTextProperty_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XmbTextListToTextProperty.$(LIB_MAN_SUFFIX)" > $@
-
-XTextExtents_shadowmen = $(XTextExtents_shadows:=.@LIB_MAN_SUFFIX@)
-$(XTextExtents_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XTextExtents.$(LIB_MAN_SUFFIX)" > $@
-
-XTextWidth_shadowmen = $(XTextWidth_shadows:=.@LIB_MAN_SUFFIX@)
-$(XTextWidth_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XTextWidth.$(LIB_MAN_SUFFIX)" > $@
-
-XInitThreads_shadowmen = $(XInitThreads_shadows:=.@LIB_MAN_SUFFIX@)
-$(XInitThreads_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XInitThreads.$(LIB_MAN_SUFFIX)" > $@
-
-XrmUniqueQuark_shadowmen = $(XrmUniqueQuark_shadows:=.@LIB_MAN_SUFFIX@)
-$(XrmUniqueQuark_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XrmUniqueQuark.$(LIB_MAN_SUFFIX)" > $@
-
-XUnmapWindow_shadowmen = $(XUnmapWindow_shadows:=.@LIB_MAN_SUFFIX@)
-$(XUnmapWindow_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XUnmapWindow.$(LIB_MAN_SUFFIX)" > $@
-
-XcmsCCCOfColormap_shadowmen = $(XcmsCCCOfColormap_shadows:=.@LIB_MAN_SUFFIX@)
-$(XcmsCCCOfColormap_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsCCCOfColormap.$(LIB_MAN_SUFFIX)" > $@
-
-XcmsAllocColor_shadowmen = $(XcmsAllocColor_shadows:=.@LIB_MAN_SUFFIX@)
-$(XcmsAllocColor_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsAllocColor.$(LIB_MAN_SUFFIX)" > $@
-
-XcmsColor_shadowmen = $(XcmsColor_shadows:=.@LIB_MAN_SUFFIX@)
-$(XcmsColor_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsColor.$(LIB_MAN_SUFFIX)" > $@
-
-XcmsCreateCCC_shadowmen = $(XcmsCreateCCC_shadows:=.@LIB_MAN_SUFFIX@)
-$(XcmsCreateCCC_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsCreateCCC.$(LIB_MAN_SUFFIX)" > $@
-
-XcmsCIELabQueryMaxC_shadowmen = $(XcmsCIELabQueryMaxC_shadows:=.@LIB_MAN_SUFFIX@)
-$(XcmsCIELabQueryMaxC_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsCIELabQueryMaxC.$(LIB_MAN_SUFFIX)" > $@
-
-XcmsCIELuvQueryMaxC_shadowmen = $(XcmsCIELuvQueryMaxC_shadows:=.@LIB_MAN_SUFFIX@)
-$(XcmsCIELuvQueryMaxC_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsCIELuvQueryMaxC.$(LIB_MAN_SUFFIX)" > $@
-
-XcmsQueryBlack_shadowmen = $(XcmsQueryBlack_shadows:=.@LIB_MAN_SUFFIX@)
-$(XcmsQueryBlack_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsQueryBlack.$(LIB_MAN_SUFFIX)" > $@
-
-XcmsQueryColor_shadowmen = $(XcmsQueryColor_shadows:=.@LIB_MAN_SUFFIX@)
-$(XcmsQueryColor_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsQueryColor.$(LIB_MAN_SUFFIX)" > $@
-
-XcmsStoreColor_shadowmen = $(XcmsStoreColor_shadows:=.@LIB_MAN_SUFFIX@)
-$(XcmsStoreColor_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsStoreColor.$(LIB_MAN_SUFFIX)" > $@
-
-XcmsSetWhitePoint_shadowmen = $(XcmsSetWhitePoint_shadows:=.@LIB_MAN_SUFFIX@)
-$(XcmsSetWhitePoint_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsSetWhitePoint.$(LIB_MAN_SUFFIX)" > $@
-
-XcmsTekHVCQueryMaxC_shadowmen = $(XcmsTekHVCQueryMaxC_shadows:=.@LIB_MAN_SUFFIX@)
-$(XcmsTekHVCQueryMaxC_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XcmsTekHVCQueryMaxC.$(LIB_MAN_SUFFIX)" > $@
-
-XmbDrawImageString_shadowmen = $(XmbDrawImageString_shadows:=.@LIB_MAN_SUFFIX@)
-$(XmbDrawImageString_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XmbDrawImageString.$(LIB_MAN_SUFFIX)" > $@
-
-XmbDrawString_shadowmen = $(XmbDrawString_shadows:=.@LIB_MAN_SUFFIX@)
-$(XmbDrawString_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XmbDrawString.$(LIB_MAN_SUFFIX)" > $@
-
-XmbDrawText_shadowmen = $(XmbDrawText_shadows:=.@LIB_MAN_SUFFIX@)
-$(XmbDrawText_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XmbDrawText.$(LIB_MAN_SUFFIX)" > $@
-
-XmbLookupString_shadowmen = $(XmbLookupString_shadows:=.@LIB_MAN_SUFFIX@)
-$(XmbLookupString_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XmbLookupString.$(LIB_MAN_SUFFIX)" > $@
-
-XmbResetIC_shadowmen = $(XmbResetIC_shadows:=.@LIB_MAN_SUFFIX@)
-$(XmbResetIC_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XmbResetIC.$(LIB_MAN_SUFFIX)" > $@
-
-XmbTextEscapement_shadowmen = $(XmbTextEscapement_shadows:=.@LIB_MAN_SUFFIX@)
-$(XmbTextEscapement_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XmbTextEscapement.$(LIB_MAN_SUFFIX)" > $@
-
-XmbTextExtents_shadowmen = $(XmbTextExtents_shadows:=.@LIB_MAN_SUFFIX@)
-$(XmbTextExtents_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XmbTextExtents.$(LIB_MAN_SUFFIX)" > $@
-
-XmbTextPerCharExtents_shadowmen = $(XmbTextPerCharExtents_shadows:=.@LIB_MAN_SUFFIX@)
-$(XmbTextPerCharExtents_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/XmbTextPerCharExtents.$(LIB_MAN_SUFFIX)" > $@
-
-file_shadows = \
+file_shadows = \
$(Compose_shadows)
Compose_shadows = \
XCompose
-Compose_shadowmen = $(Compose_shadows:=.@FILE_MAN_SUFFIX@)
-$(Compose_shadowmen):
- $(AM_V_GEN)echo ".so man$(FILE_MAN_DIR_SUFFIX)/Compose.$(FILE_MAN_SUFFIX)" > $@
diff --git a/libX11/man/MaxCmapsOfScreen.man b/libX11/man/MaxCmapsOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/MaxCmapsOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/MinCmapsOfScreen.man b/libX11/man/MinCmapsOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/MinCmapsOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/NextRequest.man b/libX11/man/NextRequest.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/NextRequest.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/PlanesOfScreen.man b/libX11/man/PlanesOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/PlanesOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/ProtocolRevision.man b/libX11/man/ProtocolRevision.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/ProtocolRevision.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/ProtocolVersion.man b/libX11/man/ProtocolVersion.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/ProtocolVersion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/QLength.man b/libX11/man/QLength.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/QLength.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/RootWindow.man b/libX11/man/RootWindow.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/RootWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/RootWindowOfScreen.man b/libX11/man/RootWindowOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/RootWindowOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/ScreenCount.man b/libX11/man/ScreenCount.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/ScreenCount.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/ScreenNumberOfCCC.man b/libX11/man/ScreenNumberOfCCC.man new file mode 100644 index 000000000..5feb8b936 --- /dev/null +++ b/libX11/man/ScreenNumberOfCCC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/DisplayOfCCC.__libmansuffix__
diff --git a/libX11/man/ScreenOfDisplay.man b/libX11/man/ScreenOfDisplay.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/ScreenOfDisplay.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/ScreenWhitePointOfCCC.man b/libX11/man/ScreenWhitePointOfCCC.man new file mode 100644 index 000000000..5feb8b936 --- /dev/null +++ b/libX11/man/ScreenWhitePointOfCCC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/DisplayOfCCC.__libmansuffix__
diff --git a/libX11/man/ServerVendor.man b/libX11/man/ServerVendor.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/ServerVendor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/VendorRelease.man b/libX11/man/VendorRelease.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/VendorRelease.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/VisualOfCCC.man b/libX11/man/VisualOfCCC.man new file mode 100644 index 000000000..5feb8b936 --- /dev/null +++ b/libX11/man/VisualOfCCC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/DisplayOfCCC.__libmansuffix__
diff --git a/libX11/man/WhitePixel.man b/libX11/man/WhitePixel.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/WhitePixel.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/WhitePixelOfScreen.man b/libX11/man/WhitePixelOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/WhitePixelOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/WidthMMOfScreen.man b/libX11/man/WidthMMOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/WidthMMOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/WidthOfScreen.man b/libX11/man/WidthOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/WidthOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/XActivateScreenSaver.man b/libX11/man/XActivateScreenSaver.man new file mode 100644 index 000000000..35198d594 --- /dev/null +++ b/libX11/man/XActivateScreenSaver.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetScreenSaver.__libmansuffix__
diff --git a/libX11/man/XAddHosts.man b/libX11/man/XAddHosts.man new file mode 100644 index 000000000..8efac194e --- /dev/null +++ b/libX11/man/XAddHosts.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddHost.__libmansuffix__
diff --git a/libX11/man/XAddPixel.man b/libX11/man/XAddPixel.man new file mode 100644 index 000000000..8fe560159 --- /dev/null +++ b/libX11/man/XAddPixel.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInitImage.__libmansuffix__
diff --git a/libX11/man/XAddToSaveSet.man b/libX11/man/XAddToSaveSet.man new file mode 100644 index 000000000..0ea6bfcfc --- /dev/null +++ b/libX11/man/XAddToSaveSet.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeSaveSet.__libmansuffix__
diff --git a/libX11/man/XAllocColorCells.man b/libX11/man/XAllocColorCells.man new file mode 100644 index 000000000..843a17fc9 --- /dev/null +++ b/libX11/man/XAllocColorCells.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocColor.__libmansuffix__
diff --git a/libX11/man/XAllocColorPlanes.man b/libX11/man/XAllocColorPlanes.man new file mode 100644 index 000000000..843a17fc9 --- /dev/null +++ b/libX11/man/XAllocColorPlanes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocColor.__libmansuffix__
diff --git a/libX11/man/XAllocNamedColor.man b/libX11/man/XAllocNamedColor.man new file mode 100644 index 000000000..843a17fc9 --- /dev/null +++ b/libX11/man/XAllocNamedColor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocColor.__libmansuffix__
diff --git a/libX11/man/XArc.man b/libX11/man/XArc.man new file mode 100644 index 000000000..71f63e1e2 --- /dev/null +++ b/libX11/man/XArc.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawArc.__libmansuffix__
diff --git a/libX11/man/XAutoRepeatOff.man b/libX11/man/XAutoRepeatOff.man new file mode 100644 index 000000000..528cea2d7 --- /dev/null +++ b/libX11/man/XAutoRepeatOff.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__
diff --git a/libX11/man/XAutoRepeatOn.man b/libX11/man/XAutoRepeatOn.man new file mode 100644 index 000000000..528cea2d7 --- /dev/null +++ b/libX11/man/XAutoRepeatOn.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__
diff --git a/libX11/man/XBaseFontNameListOfFontSet.man b/libX11/man/XBaseFontNameListOfFontSet.man new file mode 100644 index 000000000..48ea35b67 --- /dev/null +++ b/libX11/man/XBaseFontNameListOfFontSet.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__
diff --git a/libX11/man/XBell.man b/libX11/man/XBell.man new file mode 100644 index 000000000..528cea2d7 --- /dev/null +++ b/libX11/man/XBell.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__
diff --git a/libX11/man/XChangeActivePointerGrab.man b/libX11/man/XChangeActivePointerGrab.man new file mode 100644 index 000000000..93259b8c3 --- /dev/null +++ b/libX11/man/XChangeActivePointerGrab.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGrabPointer.__libmansuffix__
diff --git a/libX11/man/XChangeGC.man b/libX11/man/XChangeGC.man new file mode 100644 index 000000000..dec9f1eb7 --- /dev/null +++ b/libX11/man/XChangeGC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateGC.__libmansuffix__
diff --git a/libX11/man/XChangeProperty.man b/libX11/man/XChangeProperty.man new file mode 100644 index 000000000..e265d7d69 --- /dev/null +++ b/libX11/man/XChangeProperty.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetWindowProperty.__libmansuffix__
diff --git a/libX11/man/XChar2b.man b/libX11/man/XChar2b.man new file mode 100644 index 000000000..8b44e8513 --- /dev/null +++ b/libX11/man/XChar2b.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLoadFont.__libmansuffix__
diff --git a/libX11/man/XCharStruct.man b/libX11/man/XCharStruct.man new file mode 100644 index 000000000..8b44e8513 --- /dev/null +++ b/libX11/man/XCharStruct.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLoadFont.__libmansuffix__
diff --git a/libX11/man/XCheckIfEvent.man b/libX11/man/XCheckIfEvent.man new file mode 100644 index 000000000..5970130fb --- /dev/null +++ b/libX11/man/XCheckIfEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XIfEvent.__libmansuffix__
diff --git a/libX11/man/XCheckMaskEvent.man b/libX11/man/XCheckMaskEvent.man new file mode 100644 index 000000000..f421b8caa --- /dev/null +++ b/libX11/man/XCheckMaskEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XNextEvent.__libmansuffix__
diff --git a/libX11/man/XCheckTypedEvent.man b/libX11/man/XCheckTypedEvent.man new file mode 100644 index 000000000..f421b8caa --- /dev/null +++ b/libX11/man/XCheckTypedEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XNextEvent.__libmansuffix__
diff --git a/libX11/man/XCheckTypedWindowEvent.man b/libX11/man/XCheckTypedWindowEvent.man new file mode 100644 index 000000000..f421b8caa --- /dev/null +++ b/libX11/man/XCheckTypedWindowEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XNextEvent.__libmansuffix__
diff --git a/libX11/man/XCheckWindowEvent.man b/libX11/man/XCheckWindowEvent.man new file mode 100644 index 000000000..f421b8caa --- /dev/null +++ b/libX11/man/XCheckWindowEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XNextEvent.__libmansuffix__
diff --git a/libX11/man/XCirculateSubwindows.man b/libX11/man/XCirculateSubwindows.man new file mode 100644 index 000000000..61d7a2348 --- /dev/null +++ b/libX11/man/XCirculateSubwindows.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XRaiseWindow.__libmansuffix__
diff --git a/libX11/man/XCirculateSubwindowsDown.man b/libX11/man/XCirculateSubwindowsDown.man new file mode 100644 index 000000000..61d7a2348 --- /dev/null +++ b/libX11/man/XCirculateSubwindowsDown.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XRaiseWindow.__libmansuffix__
diff --git a/libX11/man/XCirculateSubwindowsUp.man b/libX11/man/XCirculateSubwindowsUp.man new file mode 100644 index 000000000..61d7a2348 --- /dev/null +++ b/libX11/man/XCirculateSubwindowsUp.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XRaiseWindow.__libmansuffix__
diff --git a/libX11/man/XClassHint.man b/libX11/man/XClassHint.man new file mode 100644 index 000000000..fc953a21b --- /dev/null +++ b/libX11/man/XClassHint.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocClassHint.__libmansuffix__
diff --git a/libX11/man/XClearWindow.man b/libX11/man/XClearWindow.man new file mode 100644 index 000000000..ca4582acc --- /dev/null +++ b/libX11/man/XClearWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XClearArea.__libmansuffix__
diff --git a/libX11/man/XClipBox.man b/libX11/man/XClipBox.man new file mode 100644 index 000000000..06c8f86f2 --- /dev/null +++ b/libX11/man/XClipBox.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XPolygonRegion.__libmansuffix__
diff --git a/libX11/man/XCloseDisplay.man b/libX11/man/XCloseDisplay.man new file mode 100644 index 000000000..6e5e6c03a --- /dev/null +++ b/libX11/man/XCloseDisplay.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenDisplay.__libmansuffix__
diff --git a/libX11/man/XCloseIM.man b/libX11/man/XCloseIM.man new file mode 100644 index 000000000..6d302b9cd --- /dev/null +++ b/libX11/man/XCloseIM.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenIM.__libmansuffix__
diff --git a/libX11/man/XCloseOM.man b/libX11/man/XCloseOM.man new file mode 100644 index 000000000..d7e1adb03 --- /dev/null +++ b/libX11/man/XCloseOM.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenOM.__libmansuffix__
diff --git a/libX11/man/XColor.man b/libX11/man/XColor.man new file mode 100644 index 000000000..7a214a7a8 --- /dev/null +++ b/libX11/man/XColor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateColormap.__libmansuffix__
diff --git a/libX11/man/XCompose.man b/libX11/man/XCompose.man new file mode 100644 index 000000000..09e458290 --- /dev/null +++ b/libX11/man/XCompose.man @@ -0,0 +1 @@ +.so man__filemansuffix__/Compose.__filemansuffix__
diff --git a/libX11/man/XContextDependentDrawing.man b/libX11/man/XContextDependentDrawing.man new file mode 100644 index 000000000..48ea35b67 --- /dev/null +++ b/libX11/man/XContextDependentDrawing.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__
diff --git a/libX11/man/XContextualDrawing.man b/libX11/man/XContextualDrawing.man new file mode 100644 index 000000000..48ea35b67 --- /dev/null +++ b/libX11/man/XContextualDrawing.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__
diff --git a/libX11/man/XConvertCase.man b/libX11/man/XConvertCase.man new file mode 100644 index 000000000..9126b791f --- /dev/null +++ b/libX11/man/XConvertCase.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStringToKeysym.__libmansuffix__
diff --git a/libX11/man/XConvertSelection.man b/libX11/man/XConvertSelection.man new file mode 100644 index 000000000..c8e52aa34 --- /dev/null +++ b/libX11/man/XConvertSelection.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetSelectionOwner.__libmansuffix__
diff --git a/libX11/man/XCopyColormapAndFree.man b/libX11/man/XCopyColormapAndFree.man new file mode 100644 index 000000000..7a214a7a8 --- /dev/null +++ b/libX11/man/XCopyColormapAndFree.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateColormap.__libmansuffix__
diff --git a/libX11/man/XCopyGC.man b/libX11/man/XCopyGC.man new file mode 100644 index 000000000..dec9f1eb7 --- /dev/null +++ b/libX11/man/XCopyGC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateGC.__libmansuffix__
diff --git a/libX11/man/XCopyPlane.man b/libX11/man/XCopyPlane.man new file mode 100644 index 000000000..9e6488817 --- /dev/null +++ b/libX11/man/XCopyPlane.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCopyArea.__libmansuffix__
diff --git a/libX11/man/XCreateBitmapFromData.man b/libX11/man/XCreateBitmapFromData.man new file mode 100644 index 000000000..9631570d0 --- /dev/null +++ b/libX11/man/XCreateBitmapFromData.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XReadBitmapFile.__libmansuffix__
diff --git a/libX11/man/XCreateGlyphCursor.man b/libX11/man/XCreateGlyphCursor.man new file mode 100644 index 000000000..1023b0611 --- /dev/null +++ b/libX11/man/XCreateGlyphCursor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateFontCursor.__libmansuffix__
diff --git a/libX11/man/XCreateImage.man b/libX11/man/XCreateImage.man new file mode 100644 index 000000000..8fe560159 --- /dev/null +++ b/libX11/man/XCreateImage.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInitImage.__libmansuffix__
diff --git a/libX11/man/XCreatePixmapCursor.man b/libX11/man/XCreatePixmapCursor.man new file mode 100644 index 000000000..1023b0611 --- /dev/null +++ b/libX11/man/XCreatePixmapCursor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateFontCursor.__libmansuffix__
diff --git a/libX11/man/XCreatePixmapFromBitmapData.man b/libX11/man/XCreatePixmapFromBitmapData.man new file mode 100644 index 000000000..9631570d0 --- /dev/null +++ b/libX11/man/XCreatePixmapFromBitmapData.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XReadBitmapFile.__libmansuffix__
diff --git a/libX11/man/XCreateSimpleWindow.man b/libX11/man/XCreateSimpleWindow.man new file mode 100644 index 000000000..11440c64e --- /dev/null +++ b/libX11/man/XCreateSimpleWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateWindow.__libmansuffix__
diff --git a/libX11/man/XDefaultString.man b/libX11/man/XDefaultString.man new file mode 100644 index 000000000..d73114782 --- /dev/null +++ b/libX11/man/XDefaultString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__
diff --git a/libX11/man/XDeleteContext.man b/libX11/man/XDeleteContext.man new file mode 100644 index 000000000..60c71a492 --- /dev/null +++ b/libX11/man/XDeleteContext.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSaveContext.__libmansuffix__
diff --git a/libX11/man/XDeleteModifiermapEntry.man b/libX11/man/XDeleteModifiermapEntry.man new file mode 100644 index 000000000..013c70a95 --- /dev/null +++ b/libX11/man/XDeleteModifiermapEntry.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
diff --git a/libX11/man/XDeleteProperty.man b/libX11/man/XDeleteProperty.man new file mode 100644 index 000000000..e265d7d69 --- /dev/null +++ b/libX11/man/XDeleteProperty.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetWindowProperty.__libmansuffix__
diff --git a/libX11/man/XDestroyIC.man b/libX11/man/XDestroyIC.man new file mode 100644 index 000000000..652aa0330 --- /dev/null +++ b/libX11/man/XDestroyIC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateIC.__libmansuffix__
diff --git a/libX11/man/XDestroyImage.man b/libX11/man/XDestroyImage.man new file mode 100644 index 000000000..8fe560159 --- /dev/null +++ b/libX11/man/XDestroyImage.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInitImage.__libmansuffix__
diff --git a/libX11/man/XDestroyOC.man b/libX11/man/XDestroyOC.man new file mode 100644 index 000000000..ece6d5ce7 --- /dev/null +++ b/libX11/man/XDestroyOC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateOC.__libmansuffix__
diff --git a/libX11/man/XDestroyRegion.man b/libX11/man/XDestroyRegion.man new file mode 100644 index 000000000..9e7e7d197 --- /dev/null +++ b/libX11/man/XDestroyRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateRegion.__libmansuffix__
diff --git a/libX11/man/XDestroySubwindows.man b/libX11/man/XDestroySubwindows.man new file mode 100644 index 000000000..e81bc7ace --- /dev/null +++ b/libX11/man/XDestroySubwindows.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDestroyWindow.__libmansuffix__
diff --git a/libX11/man/XDirectionalDependentDrawing.man b/libX11/man/XDirectionalDependentDrawing.man new file mode 100644 index 000000000..48ea35b67 --- /dev/null +++ b/libX11/man/XDirectionalDependentDrawing.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__
diff --git a/libX11/man/XDisableAccessControl.man b/libX11/man/XDisableAccessControl.man new file mode 100644 index 000000000..8efac194e --- /dev/null +++ b/libX11/man/XDisableAccessControl.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddHost.__libmansuffix__
diff --git a/libX11/man/XDisplayKeycodes.man b/libX11/man/XDisplayKeycodes.man new file mode 100644 index 000000000..013c70a95 --- /dev/null +++ b/libX11/man/XDisplayKeycodes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
diff --git a/libX11/man/XDisplayMotionBufferSize.man b/libX11/man/XDisplayMotionBufferSize.man new file mode 100644 index 000000000..708dee7c8 --- /dev/null +++ b/libX11/man/XDisplayMotionBufferSize.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSendEvent.__libmansuffix__
diff --git a/libX11/man/XDisplayName.man b/libX11/man/XDisplayName.man new file mode 100644 index 000000000..608900365 --- /dev/null +++ b/libX11/man/XDisplayName.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetErrorHandler.__libmansuffix__
diff --git a/libX11/man/XDisplayOfIM.man b/libX11/man/XDisplayOfIM.man new file mode 100644 index 000000000..6d302b9cd --- /dev/null +++ b/libX11/man/XDisplayOfIM.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenIM.__libmansuffix__
diff --git a/libX11/man/XDisplayOfOM.man b/libX11/man/XDisplayOfOM.man new file mode 100644 index 000000000..d7e1adb03 --- /dev/null +++ b/libX11/man/XDisplayOfOM.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenOM.__libmansuffix__
diff --git a/libX11/man/XDrawArcs.man b/libX11/man/XDrawArcs.man new file mode 100644 index 000000000..71f63e1e2 --- /dev/null +++ b/libX11/man/XDrawArcs.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawArc.__libmansuffix__
diff --git a/libX11/man/XDrawImageString16.man b/libX11/man/XDrawImageString16.man new file mode 100644 index 000000000..e2de3d0ae --- /dev/null +++ b/libX11/man/XDrawImageString16.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawImageString.__libmansuffix__
diff --git a/libX11/man/XDrawLines.man b/libX11/man/XDrawLines.man new file mode 100644 index 000000000..a361976a0 --- /dev/null +++ b/libX11/man/XDrawLines.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawLine.__libmansuffix__
diff --git a/libX11/man/XDrawPoints.man b/libX11/man/XDrawPoints.man new file mode 100644 index 000000000..268cdcd97 --- /dev/null +++ b/libX11/man/XDrawPoints.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawPoint.__libmansuffix__
diff --git a/libX11/man/XDrawRectangles.man b/libX11/man/XDrawRectangles.man new file mode 100644 index 000000000..0def1f675 --- /dev/null +++ b/libX11/man/XDrawRectangles.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawRectangle.__libmansuffix__
diff --git a/libX11/man/XDrawSegments.man b/libX11/man/XDrawSegments.man new file mode 100644 index 000000000..a361976a0 --- /dev/null +++ b/libX11/man/XDrawSegments.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawLine.__libmansuffix__
diff --git a/libX11/man/XDrawString16.man b/libX11/man/XDrawString16.man new file mode 100644 index 000000000..15a747f8b --- /dev/null +++ b/libX11/man/XDrawString16.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawString.__libmansuffix__
diff --git a/libX11/man/XDrawText16.man b/libX11/man/XDrawText16.man new file mode 100644 index 000000000..cee50e8da --- /dev/null +++ b/libX11/man/XDrawText16.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawText.__libmansuffix__
diff --git a/libX11/man/XEnableAccessControl.man b/libX11/man/XEnableAccessControl.man new file mode 100644 index 000000000..8efac194e --- /dev/null +++ b/libX11/man/XEnableAccessControl.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddHost.__libmansuffix__
diff --git a/libX11/man/XEqualRegion.man b/libX11/man/XEqualRegion.man new file mode 100644 index 000000000..19b5dac0b --- /dev/null +++ b/libX11/man/XEqualRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XEmptyRegion.__libmansuffix__
diff --git a/libX11/man/XEvent.man b/libX11/man/XEvent.man new file mode 100644 index 000000000..cda915d19 --- /dev/null +++ b/libX11/man/XEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAnyEvent.__libmansuffix__
diff --git a/libX11/man/XEventsQueued.man b/libX11/man/XEventsQueued.man new file mode 100644 index 000000000..170707ae0 --- /dev/null +++ b/libX11/man/XEventsQueued.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFlush.__libmansuffix__
diff --git a/libX11/man/XExtendedMaxRequestSize.man b/libX11/man/XExtendedMaxRequestSize.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/XExtendedMaxRequestSize.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/XFetchBuffer.man b/libX11/man/XFetchBuffer.man new file mode 100644 index 000000000..c399f1c19 --- /dev/null +++ b/libX11/man/XFetchBuffer.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStoreBytes.__libmansuffix__
diff --git a/libX11/man/XFetchBytes.man b/libX11/man/XFetchBytes.man new file mode 100644 index 000000000..c399f1c19 --- /dev/null +++ b/libX11/man/XFetchBytes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStoreBytes.__libmansuffix__
diff --git a/libX11/man/XFetchName.man b/libX11/man/XFetchName.man new file mode 100644 index 000000000..6b4fc7e7d --- /dev/null +++ b/libX11/man/XFetchName.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMName.__libmansuffix__
diff --git a/libX11/man/XFillArc.man b/libX11/man/XFillArc.man new file mode 100644 index 000000000..10ca9226e --- /dev/null +++ b/libX11/man/XFillArc.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFillRectangle.__libmansuffix__
diff --git a/libX11/man/XFillArcs.man b/libX11/man/XFillArcs.man new file mode 100644 index 000000000..10ca9226e --- /dev/null +++ b/libX11/man/XFillArcs.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFillRectangle.__libmansuffix__
diff --git a/libX11/man/XFillPolygon.man b/libX11/man/XFillPolygon.man new file mode 100644 index 000000000..10ca9226e --- /dev/null +++ b/libX11/man/XFillPolygon.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFillRectangle.__libmansuffix__
diff --git a/libX11/man/XFillRectangles.man b/libX11/man/XFillRectangles.man new file mode 100644 index 000000000..10ca9226e --- /dev/null +++ b/libX11/man/XFillRectangles.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFillRectangle.__libmansuffix__
diff --git a/libX11/man/XFindContext.man b/libX11/man/XFindContext.man new file mode 100644 index 000000000..60c71a492 --- /dev/null +++ b/libX11/man/XFindContext.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSaveContext.__libmansuffix__
diff --git a/libX11/man/XFontProp.man b/libX11/man/XFontProp.man new file mode 100644 index 000000000..8b44e8513 --- /dev/null +++ b/libX11/man/XFontProp.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLoadFont.__libmansuffix__
diff --git a/libX11/man/XFontStruct.man b/libX11/man/XFontStruct.man new file mode 100644 index 000000000..8b44e8513 --- /dev/null +++ b/libX11/man/XFontStruct.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLoadFont.__libmansuffix__
diff --git a/libX11/man/XForceScreenSaver.man b/libX11/man/XForceScreenSaver.man new file mode 100644 index 000000000..35198d594 --- /dev/null +++ b/libX11/man/XForceScreenSaver.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetScreenSaver.__libmansuffix__
diff --git a/libX11/man/XFreeColormap.man b/libX11/man/XFreeColormap.man new file mode 100644 index 000000000..7a214a7a8 --- /dev/null +++ b/libX11/man/XFreeColormap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateColormap.__libmansuffix__
diff --git a/libX11/man/XFreeColors.man b/libX11/man/XFreeColors.man new file mode 100644 index 000000000..843a17fc9 --- /dev/null +++ b/libX11/man/XFreeColors.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocColor.__libmansuffix__
diff --git a/libX11/man/XFreeCursor.man b/libX11/man/XFreeCursor.man new file mode 100644 index 000000000..2600d2f3b --- /dev/null +++ b/libX11/man/XFreeCursor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XRecolorCursor.__libmansuffix__
diff --git a/libX11/man/XFreeEventData.man b/libX11/man/XFreeEventData.man new file mode 100644 index 000000000..cf44d9698 --- /dev/null +++ b/libX11/man/XFreeEventData.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetEventData.__libmansuffix__
diff --git a/libX11/man/XFreeExtensionList.man b/libX11/man/XFreeExtensionList.man new file mode 100644 index 000000000..d5ffc5c35 --- /dev/null +++ b/libX11/man/XFreeExtensionList.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XQueryExtension.__libmansuffix__
diff --git a/libX11/man/XFreeFont.man b/libX11/man/XFreeFont.man new file mode 100644 index 000000000..8b44e8513 --- /dev/null +++ b/libX11/man/XFreeFont.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLoadFont.__libmansuffix__
diff --git a/libX11/man/XFreeFontInfo.man b/libX11/man/XFreeFontInfo.man new file mode 100644 index 000000000..5c6200765 --- /dev/null +++ b/libX11/man/XFreeFontInfo.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XListFonts.__libmansuffix__
diff --git a/libX11/man/XFreeFontNames.man b/libX11/man/XFreeFontNames.man new file mode 100644 index 000000000..5c6200765 --- /dev/null +++ b/libX11/man/XFreeFontNames.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XListFonts.__libmansuffix__
diff --git a/libX11/man/XFreeFontPath.man b/libX11/man/XFreeFontPath.man new file mode 100644 index 000000000..49b4723ce --- /dev/null +++ b/libX11/man/XFreeFontPath.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetFontPath.__libmansuffix__
diff --git a/libX11/man/XFreeFontSet.man b/libX11/man/XFreeFontSet.man new file mode 100644 index 000000000..cda2771c0 --- /dev/null +++ b/libX11/man/XFreeFontSet.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateFontSet.__libmansuffix__
diff --git a/libX11/man/XFreeGC.man b/libX11/man/XFreeGC.man new file mode 100644 index 000000000..dec9f1eb7 --- /dev/null +++ b/libX11/man/XFreeGC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateGC.__libmansuffix__
diff --git a/libX11/man/XFreeModifierMap.man b/libX11/man/XFreeModifierMap.man new file mode 100644 index 000000000..013c70a95 --- /dev/null +++ b/libX11/man/XFreeModifierMap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
diff --git a/libX11/man/XFreePixmap.man b/libX11/man/XFreePixmap.man new file mode 100644 index 000000000..36a302413 --- /dev/null +++ b/libX11/man/XFreePixmap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreatePixmap.__libmansuffix__
diff --git a/libX11/man/XFreeStringList.man b/libX11/man/XFreeStringList.man new file mode 100644 index 000000000..70c3debc2 --- /dev/null +++ b/libX11/man/XFreeStringList.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStringListToTextProperty.__libmansuffix__
diff --git a/libX11/man/XGCValues.man b/libX11/man/XGCValues.man new file mode 100644 index 000000000..dec9f1eb7 --- /dev/null +++ b/libX11/man/XGCValues.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateGC.__libmansuffix__
diff --git a/libX11/man/XGContextFromGC.man b/libX11/man/XGContextFromGC.man new file mode 100644 index 000000000..dec9f1eb7 --- /dev/null +++ b/libX11/man/XGContextFromGC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateGC.__libmansuffix__
diff --git a/libX11/man/XGenericEventCookie.man b/libX11/man/XGenericEventCookie.man new file mode 100644 index 000000000..cf44d9698 --- /dev/null +++ b/libX11/man/XGenericEventCookie.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetEventData.__libmansuffix__
diff --git a/libX11/man/XGetAtomName.man b/libX11/man/XGetAtomName.man new file mode 100644 index 000000000..6c0495121 --- /dev/null +++ b/libX11/man/XGetAtomName.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInternAtom.__libmansuffix__
diff --git a/libX11/man/XGetAtomNames.man b/libX11/man/XGetAtomNames.man new file mode 100644 index 000000000..6c0495121 --- /dev/null +++ b/libX11/man/XGetAtomNames.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInternAtom.__libmansuffix__
diff --git a/libX11/man/XGetClassHint.man b/libX11/man/XGetClassHint.man new file mode 100644 index 000000000..fc953a21b --- /dev/null +++ b/libX11/man/XGetClassHint.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocClassHint.__libmansuffix__
diff --git a/libX11/man/XGetCommand.man b/libX11/man/XGetCommand.man new file mode 100644 index 000000000..706fb1e1f --- /dev/null +++ b/libX11/man/XGetCommand.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetCommand.__libmansuffix__
diff --git a/libX11/man/XGetErrorDatabaseText.man b/libX11/man/XGetErrorDatabaseText.man new file mode 100644 index 000000000..608900365 --- /dev/null +++ b/libX11/man/XGetErrorDatabaseText.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetErrorHandler.__libmansuffix__
diff --git a/libX11/man/XGetErrorText.man b/libX11/man/XGetErrorText.man new file mode 100644 index 000000000..608900365 --- /dev/null +++ b/libX11/man/XGetErrorText.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetErrorHandler.__libmansuffix__
diff --git a/libX11/man/XGetFontPath.man b/libX11/man/XGetFontPath.man new file mode 100644 index 000000000..49b4723ce --- /dev/null +++ b/libX11/man/XGetFontPath.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetFontPath.__libmansuffix__
diff --git a/libX11/man/XGetFontProperty.man b/libX11/man/XGetFontProperty.man new file mode 100644 index 000000000..8b44e8513 --- /dev/null +++ b/libX11/man/XGetFontProperty.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLoadFont.__libmansuffix__
diff --git a/libX11/man/XGetGCValues.man b/libX11/man/XGetGCValues.man new file mode 100644 index 000000000..dec9f1eb7 --- /dev/null +++ b/libX11/man/XGetGCValues.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateGC.__libmansuffix__
diff --git a/libX11/man/XGetGeometry.man b/libX11/man/XGetGeometry.man new file mode 100644 index 000000000..df77346fb --- /dev/null +++ b/libX11/man/XGetGeometry.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetWindowAttributes.__libmansuffix__
diff --git a/libX11/man/XGetICValues.man b/libX11/man/XGetICValues.man new file mode 100644 index 000000000..a80dcff32 --- /dev/null +++ b/libX11/man/XGetICValues.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetICValues.__libmansuffix__
diff --git a/libX11/man/XGetIMValues.man b/libX11/man/XGetIMValues.man new file mode 100644 index 000000000..6d302b9cd --- /dev/null +++ b/libX11/man/XGetIMValues.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenIM.__libmansuffix__
diff --git a/libX11/man/XGetIconName.man b/libX11/man/XGetIconName.man new file mode 100644 index 000000000..e315e4495 --- /dev/null +++ b/libX11/man/XGetIconName.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMIconName.__libmansuffix__
diff --git a/libX11/man/XGetIconSizes.man b/libX11/man/XGetIconSizes.man new file mode 100644 index 000000000..edc8882fb --- /dev/null +++ b/libX11/man/XGetIconSizes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocIconSize.__libmansuffix__
diff --git a/libX11/man/XGetImage.man b/libX11/man/XGetImage.man new file mode 100644 index 000000000..d17774846 --- /dev/null +++ b/libX11/man/XGetImage.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XPutImage.__libmansuffix__
diff --git a/libX11/man/XGetInputFocus.man b/libX11/man/XGetInputFocus.man new file mode 100644 index 000000000..c6c1bbb04 --- /dev/null +++ b/libX11/man/XGetInputFocus.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetInputFocus.__libmansuffix__
diff --git a/libX11/man/XGetKeyboardControl.man b/libX11/man/XGetKeyboardControl.man new file mode 100644 index 000000000..528cea2d7 --- /dev/null +++ b/libX11/man/XGetKeyboardControl.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__
diff --git a/libX11/man/XGetKeyboardMapping.man b/libX11/man/XGetKeyboardMapping.man new file mode 100644 index 000000000..013c70a95 --- /dev/null +++ b/libX11/man/XGetKeyboardMapping.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
diff --git a/libX11/man/XGetModifierMapping.man b/libX11/man/XGetModifierMapping.man new file mode 100644 index 000000000..013c70a95 --- /dev/null +++ b/libX11/man/XGetModifierMapping.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
diff --git a/libX11/man/XGetMotionEvents.man b/libX11/man/XGetMotionEvents.man new file mode 100644 index 000000000..708dee7c8 --- /dev/null +++ b/libX11/man/XGetMotionEvents.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSendEvent.__libmansuffix__
diff --git a/libX11/man/XGetOCValues.man b/libX11/man/XGetOCValues.man new file mode 100644 index 000000000..ece6d5ce7 --- /dev/null +++ b/libX11/man/XGetOCValues.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateOC.__libmansuffix__
diff --git a/libX11/man/XGetOMValues.man b/libX11/man/XGetOMValues.man new file mode 100644 index 000000000..d7e1adb03 --- /dev/null +++ b/libX11/man/XGetOMValues.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenOM.__libmansuffix__
diff --git a/libX11/man/XGetPixel.man b/libX11/man/XGetPixel.man new file mode 100644 index 000000000..8fe560159 --- /dev/null +++ b/libX11/man/XGetPixel.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInitImage.__libmansuffix__
diff --git a/libX11/man/XGetPointerControl.man b/libX11/man/XGetPointerControl.man new file mode 100644 index 000000000..f4e744322 --- /dev/null +++ b/libX11/man/XGetPointerControl.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangePointerControl.__libmansuffix__
diff --git a/libX11/man/XGetPointerMapping.man b/libX11/man/XGetPointerMapping.man new file mode 100644 index 000000000..9fc1407c5 --- /dev/null +++ b/libX11/man/XGetPointerMapping.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetPointerMapping.__libmansuffix__
diff --git a/libX11/man/XGetRGBColormaps.man b/libX11/man/XGetRGBColormaps.man new file mode 100644 index 000000000..a36aee4fe --- /dev/null +++ b/libX11/man/XGetRGBColormaps.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocStandardColormap.__libmansuffix__
diff --git a/libX11/man/XGetScreenSaver.man b/libX11/man/XGetScreenSaver.man new file mode 100644 index 000000000..35198d594 --- /dev/null +++ b/libX11/man/XGetScreenSaver.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetScreenSaver.__libmansuffix__
diff --git a/libX11/man/XGetSelectionOwner.man b/libX11/man/XGetSelectionOwner.man new file mode 100644 index 000000000..c8e52aa34 --- /dev/null +++ b/libX11/man/XGetSelectionOwner.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetSelectionOwner.__libmansuffix__
diff --git a/libX11/man/XGetSubImage.man b/libX11/man/XGetSubImage.man new file mode 100644 index 000000000..d17774846 --- /dev/null +++ b/libX11/man/XGetSubImage.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XPutImage.__libmansuffix__
diff --git a/libX11/man/XGetTextProperty.man b/libX11/man/XGetTextProperty.man new file mode 100644 index 000000000..1d04e4fc3 --- /dev/null +++ b/libX11/man/XGetTextProperty.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetTextProperty.__libmansuffix__
diff --git a/libX11/man/XGetTransientForHint.man b/libX11/man/XGetTransientForHint.man new file mode 100644 index 000000000..df25fc239 --- /dev/null +++ b/libX11/man/XGetTransientForHint.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetTransientForHint.__libmansuffix__
diff --git a/libX11/man/XGetWMClientMachine.man b/libX11/man/XGetWMClientMachine.man new file mode 100644 index 000000000..cd7c2f074 --- /dev/null +++ b/libX11/man/XGetWMClientMachine.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMClientMachine.__libmansuffix__
diff --git a/libX11/man/XGetWMColormapWindows.man b/libX11/man/XGetWMColormapWindows.man new file mode 100644 index 000000000..5b0f489ce --- /dev/null +++ b/libX11/man/XGetWMColormapWindows.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMColormapWindows.__libmansuffix__
diff --git a/libX11/man/XGetWMHints.man b/libX11/man/XGetWMHints.man new file mode 100644 index 000000000..e066f6d95 --- /dev/null +++ b/libX11/man/XGetWMHints.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocWMHints.__libmansuffix__
diff --git a/libX11/man/XGetWMIconName.man b/libX11/man/XGetWMIconName.man new file mode 100644 index 000000000..e315e4495 --- /dev/null +++ b/libX11/man/XGetWMIconName.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMIconName.__libmansuffix__
diff --git a/libX11/man/XGetWMName.man b/libX11/man/XGetWMName.man new file mode 100644 index 000000000..6b4fc7e7d --- /dev/null +++ b/libX11/man/XGetWMName.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMName.__libmansuffix__
diff --git a/libX11/man/XGetWMNormalHints.man b/libX11/man/XGetWMNormalHints.man new file mode 100644 index 000000000..94ebb6295 --- /dev/null +++ b/libX11/man/XGetWMNormalHints.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocSizeHints.__libmansuffix__
diff --git a/libX11/man/XGetWMProtocols.man b/libX11/man/XGetWMProtocols.man new file mode 100644 index 000000000..565aad646 --- /dev/null +++ b/libX11/man/XGetWMProtocols.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMProtocols.__libmansuffix__
diff --git a/libX11/man/XGetWMSizeHints.man b/libX11/man/XGetWMSizeHints.man new file mode 100644 index 000000000..94ebb6295 --- /dev/null +++ b/libX11/man/XGetWMSizeHints.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocSizeHints.__libmansuffix__
diff --git a/libX11/man/XHostAddress.man b/libX11/man/XHostAddress.man new file mode 100644 index 000000000..8efac194e --- /dev/null +++ b/libX11/man/XHostAddress.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddHost.__libmansuffix__
diff --git a/libX11/man/XIMOfIC.man b/libX11/man/XIMOfIC.man new file mode 100644 index 000000000..652aa0330 --- /dev/null +++ b/libX11/man/XIMOfIC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateIC.__libmansuffix__
diff --git a/libX11/man/XIconSize.man b/libX11/man/XIconSize.man new file mode 100644 index 000000000..edc8882fb --- /dev/null +++ b/libX11/man/XIconSize.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocIconSize.__libmansuffix__
diff --git a/libX11/man/XInsertModifiermapEntry.man b/libX11/man/XInsertModifiermapEntry.man new file mode 100644 index 000000000..013c70a95 --- /dev/null +++ b/libX11/man/XInsertModifiermapEntry.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
diff --git a/libX11/man/XInternAtoms.man b/libX11/man/XInternAtoms.man new file mode 100644 index 000000000..6c0495121 --- /dev/null +++ b/libX11/man/XInternAtoms.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInternAtom.__libmansuffix__
diff --git a/libX11/man/XInternalConnectionNumbers.man b/libX11/man/XInternalConnectionNumbers.man new file mode 100644 index 000000000..4a3cc1380 --- /dev/null +++ b/libX11/man/XInternalConnectionNumbers.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddConnectionWatch.__libmansuffix__
diff --git a/libX11/man/XKeyEvent.man b/libX11/man/XKeyEvent.man new file mode 100644 index 000000000..41e30bbe3 --- /dev/null +++ b/libX11/man/XKeyEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XButtonEvent.__libmansuffix__
diff --git a/libX11/man/XKeyboardControl.man b/libX11/man/XKeyboardControl.man new file mode 100644 index 000000000..528cea2d7 --- /dev/null +++ b/libX11/man/XKeyboardControl.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__
diff --git a/libX11/man/XKeycodeToKeysym.man b/libX11/man/XKeycodeToKeysym.man new file mode 100644 index 000000000..9126b791f --- /dev/null +++ b/libX11/man/XKeycodeToKeysym.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStringToKeysym.__libmansuffix__
diff --git a/libX11/man/XKeysymToKeycode.man b/libX11/man/XKeysymToKeycode.man new file mode 100644 index 000000000..9126b791f --- /dev/null +++ b/libX11/man/XKeysymToKeycode.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStringToKeysym.__libmansuffix__
diff --git a/libX11/man/XKeysymToString.man b/libX11/man/XKeysymToString.man new file mode 100644 index 000000000..9126b791f --- /dev/null +++ b/libX11/man/XKeysymToString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStringToKeysym.__libmansuffix__
diff --git a/libX11/man/XKillClient.man b/libX11/man/XKillClient.man new file mode 100644 index 000000000..a94379149 --- /dev/null +++ b/libX11/man/XKillClient.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetCloseDownMode.__libmansuffix__
diff --git a/libX11/man/XListDepths.man b/libX11/man/XListDepths.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/XListDepths.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/XListExtensions.man b/libX11/man/XListExtensions.man new file mode 100644 index 000000000..d5ffc5c35 --- /dev/null +++ b/libX11/man/XListExtensions.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XQueryExtension.__libmansuffix__
diff --git a/libX11/man/XListFontsWithInfo.man b/libX11/man/XListFontsWithInfo.man new file mode 100644 index 000000000..5c6200765 --- /dev/null +++ b/libX11/man/XListFontsWithInfo.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XListFonts.__libmansuffix__
diff --git a/libX11/man/XListHosts.man b/libX11/man/XListHosts.man new file mode 100644 index 000000000..8efac194e --- /dev/null +++ b/libX11/man/XListHosts.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddHost.__libmansuffix__
diff --git a/libX11/man/XListInstalledColormaps.man b/libX11/man/XListInstalledColormaps.man new file mode 100644 index 000000000..7b18ab38b --- /dev/null +++ b/libX11/man/XListInstalledColormaps.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInstallColormap.__libmansuffix__
diff --git a/libX11/man/XListPixmapFormats.man b/libX11/man/XListPixmapFormats.man new file mode 100644 index 000000000..0a59afe46 --- /dev/null +++ b/libX11/man/XListPixmapFormats.man @@ -0,0 +1 @@ +.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
diff --git a/libX11/man/XListProperties.man b/libX11/man/XListProperties.man new file mode 100644 index 000000000..e265d7d69 --- /dev/null +++ b/libX11/man/XListProperties.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetWindowProperty.__libmansuffix__
diff --git a/libX11/man/XLoadQueryFont.man b/libX11/man/XLoadQueryFont.man new file mode 100644 index 000000000..8b44e8513 --- /dev/null +++ b/libX11/man/XLoadQueryFont.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLoadFont.__libmansuffix__
diff --git a/libX11/man/XLocaleOfFontSet.man b/libX11/man/XLocaleOfFontSet.man new file mode 100644 index 000000000..48ea35b67 --- /dev/null +++ b/libX11/man/XLocaleOfFontSet.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__
diff --git a/libX11/man/XLocaleOfIM.man b/libX11/man/XLocaleOfIM.man new file mode 100644 index 000000000..6d302b9cd --- /dev/null +++ b/libX11/man/XLocaleOfIM.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenIM.__libmansuffix__
diff --git a/libX11/man/XLocaleOfOM.man b/libX11/man/XLocaleOfOM.man new file mode 100644 index 000000000..d7e1adb03 --- /dev/null +++ b/libX11/man/XLocaleOfOM.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenOM.__libmansuffix__
diff --git a/libX11/man/XLockDisplay.man b/libX11/man/XLockDisplay.man new file mode 100644 index 000000000..bc8bb0205 --- /dev/null +++ b/libX11/man/XLockDisplay.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInitThreads.__libmansuffix__
diff --git a/libX11/man/XLookupColor.man b/libX11/man/XLookupColor.man new file mode 100644 index 000000000..d1aad2b4a --- /dev/null +++ b/libX11/man/XLookupColor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XQueryColor.__libmansuffix__
diff --git a/libX11/man/XLookupString.man b/libX11/man/XLookupString.man new file mode 100644 index 000000000..23156fe74 --- /dev/null +++ b/libX11/man/XLookupString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLookupKeysym.__libmansuffix__
diff --git a/libX11/man/XLowerWindow.man b/libX11/man/XLowerWindow.man new file mode 100644 index 000000000..61d7a2348 --- /dev/null +++ b/libX11/man/XLowerWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XRaiseWindow.__libmansuffix__
diff --git a/libX11/man/XMapRaised.man b/libX11/man/XMapRaised.man new file mode 100644 index 000000000..ab771f83f --- /dev/null +++ b/libX11/man/XMapRaised.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XMapWindow.__libmansuffix__
diff --git a/libX11/man/XMapSubwindows.man b/libX11/man/XMapSubwindows.man new file mode 100644 index 000000000..ab771f83f --- /dev/null +++ b/libX11/man/XMapSubwindows.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XMapWindow.__libmansuffix__
diff --git a/libX11/man/XMappingEvent.man b/libX11/man/XMappingEvent.man new file mode 100644 index 000000000..c0a031b46 --- /dev/null +++ b/libX11/man/XMappingEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XMapEvent.__libmansuffix__
diff --git a/libX11/man/XMaskEvent.man b/libX11/man/XMaskEvent.man new file mode 100644 index 000000000..f421b8caa --- /dev/null +++ b/libX11/man/XMaskEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XNextEvent.__libmansuffix__
diff --git a/libX11/man/XMatchVisualInfo.man b/libX11/man/XMatchVisualInfo.man new file mode 100644 index 000000000..0b12bf69d --- /dev/null +++ b/libX11/man/XMatchVisualInfo.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetVisualInfo.__libmansuffix__
diff --git a/libX11/man/XMaxRequestSize.man b/libX11/man/XMaxRequestSize.man new file mode 100644 index 000000000..963c4fe94 --- /dev/null +++ b/libX11/man/XMaxRequestSize.man @@ -0,0 +1 @@ +.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/XModifierKeymap.man b/libX11/man/XModifierKeymap.man new file mode 100644 index 000000000..013c70a95 --- /dev/null +++ b/libX11/man/XModifierKeymap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
diff --git a/libX11/man/XMotionEvent.man b/libX11/man/XMotionEvent.man new file mode 100644 index 000000000..41e30bbe3 --- /dev/null +++ b/libX11/man/XMotionEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XButtonEvent.__libmansuffix__
diff --git a/libX11/man/XMoveResizeWindow.man b/libX11/man/XMoveResizeWindow.man new file mode 100644 index 000000000..5fbc49488 --- /dev/null +++ b/libX11/man/XMoveResizeWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XConfigureWindow.__libmansuffix__
diff --git a/libX11/man/XMoveWindow.man b/libX11/man/XMoveWindow.man new file mode 100644 index 000000000..5fbc49488 --- /dev/null +++ b/libX11/man/XMoveWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XConfigureWindow.__libmansuffix__
diff --git a/libX11/man/XNewModifiermap.man b/libX11/man/XNewModifiermap.man new file mode 100644 index 000000000..013c70a95 --- /dev/null +++ b/libX11/man/XNewModifiermap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
diff --git a/libX11/man/XNoExposeEvent.man b/libX11/man/XNoExposeEvent.man new file mode 100644 index 000000000..c986c219c --- /dev/null +++ b/libX11/man/XNoExposeEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGraphicsExposeEvent.__libmansuffix__
diff --git a/libX11/man/XOMOfOC.man b/libX11/man/XOMOfOC.man new file mode 100644 index 000000000..ece6d5ce7 --- /dev/null +++ b/libX11/man/XOMOfOC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateOC.__libmansuffix__
diff --git a/libX11/man/XOffsetRegion.man b/libX11/man/XOffsetRegion.man new file mode 100644 index 000000000..630c1f2c8 --- /dev/null +++ b/libX11/man/XOffsetRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XIntersectRegion.__libmansuffix__
diff --git a/libX11/man/XParseColor.man b/libX11/man/XParseColor.man new file mode 100644 index 000000000..d1aad2b4a --- /dev/null +++ b/libX11/man/XParseColor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XQueryColor.__libmansuffix__
diff --git a/libX11/man/XPeekEvent.man b/libX11/man/XPeekEvent.man new file mode 100644 index 000000000..f421b8caa --- /dev/null +++ b/libX11/man/XPeekEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XNextEvent.__libmansuffix__
diff --git a/libX11/man/XPeekIfEvent.man b/libX11/man/XPeekIfEvent.man new file mode 100644 index 000000000..5970130fb --- /dev/null +++ b/libX11/man/XPeekIfEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XIfEvent.__libmansuffix__
diff --git a/libX11/man/XPending.man b/libX11/man/XPending.man new file mode 100644 index 000000000..170707ae0 --- /dev/null +++ b/libX11/man/XPending.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFlush.__libmansuffix__
diff --git a/libX11/man/XPixmapFormatValues.man b/libX11/man/XPixmapFormatValues.man new file mode 100644 index 000000000..0a59afe46 --- /dev/null +++ b/libX11/man/XPixmapFormatValues.man @@ -0,0 +1 @@ +.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
diff --git a/libX11/man/XPoint.man b/libX11/man/XPoint.man new file mode 100644 index 000000000..268cdcd97 --- /dev/null +++ b/libX11/man/XPoint.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawPoint.__libmansuffix__
diff --git a/libX11/man/XPointInRegion.man b/libX11/man/XPointInRegion.man new file mode 100644 index 000000000..19b5dac0b --- /dev/null +++ b/libX11/man/XPointInRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XEmptyRegion.__libmansuffix__
diff --git a/libX11/man/XProcessInternalConnection.man b/libX11/man/XProcessInternalConnection.man new file mode 100644 index 000000000..4a3cc1380 --- /dev/null +++ b/libX11/man/XProcessInternalConnection.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddConnectionWatch.__libmansuffix__
diff --git a/libX11/man/XPutPixel.man b/libX11/man/XPutPixel.man new file mode 100644 index 000000000..8fe560159 --- /dev/null +++ b/libX11/man/XPutPixel.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInitImage.__libmansuffix__
diff --git a/libX11/man/XQueryBestCursor.man b/libX11/man/XQueryBestCursor.man new file mode 100644 index 000000000..2600d2f3b --- /dev/null +++ b/libX11/man/XQueryBestCursor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XRecolorCursor.__libmansuffix__
diff --git a/libX11/man/XQueryBestStipple.man b/libX11/man/XQueryBestStipple.man new file mode 100644 index 000000000..171150340 --- /dev/null +++ b/libX11/man/XQueryBestStipple.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XQueryBestSize.__libmansuffix__
diff --git a/libX11/man/XQueryBestTile.man b/libX11/man/XQueryBestTile.man new file mode 100644 index 000000000..171150340 --- /dev/null +++ b/libX11/man/XQueryBestTile.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XQueryBestSize.__libmansuffix__
diff --git a/libX11/man/XQueryColors.man b/libX11/man/XQueryColors.man new file mode 100644 index 000000000..d1aad2b4a --- /dev/null +++ b/libX11/man/XQueryColors.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XQueryColor.__libmansuffix__
diff --git a/libX11/man/XQueryFont.man b/libX11/man/XQueryFont.man new file mode 100644 index 000000000..8b44e8513 --- /dev/null +++ b/libX11/man/XQueryFont.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLoadFont.__libmansuffix__
diff --git a/libX11/man/XQueryKeymap.man b/libX11/man/XQueryKeymap.man new file mode 100644 index 000000000..528cea2d7 --- /dev/null +++ b/libX11/man/XQueryKeymap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__
diff --git a/libX11/man/XQueryTextExtents.man b/libX11/man/XQueryTextExtents.man new file mode 100644 index 000000000..36be9d3c7 --- /dev/null +++ b/libX11/man/XQueryTextExtents.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XTextExtents.__libmansuffix__
diff --git a/libX11/man/XQueryTextExtents16.man b/libX11/man/XQueryTextExtents16.man new file mode 100644 index 000000000..36be9d3c7 --- /dev/null +++ b/libX11/man/XQueryTextExtents16.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XTextExtents.__libmansuffix__
diff --git a/libX11/man/XReadBitmapFileData.man b/libX11/man/XReadBitmapFileData.man new file mode 100644 index 000000000..9631570d0 --- /dev/null +++ b/libX11/man/XReadBitmapFileData.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XReadBitmapFile.__libmansuffix__
diff --git a/libX11/man/XRebindKeysym.man b/libX11/man/XRebindKeysym.man new file mode 100644 index 000000000..23156fe74 --- /dev/null +++ b/libX11/man/XRebindKeysym.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLookupKeysym.__libmansuffix__
diff --git a/libX11/man/XReconfigureWMWindow.man b/libX11/man/XReconfigureWMWindow.man new file mode 100644 index 000000000..799989ad0 --- /dev/null +++ b/libX11/man/XReconfigureWMWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XIconifyWindow.__libmansuffix__
diff --git a/libX11/man/XRectInRegion.man b/libX11/man/XRectInRegion.man new file mode 100644 index 000000000..19b5dac0b --- /dev/null +++ b/libX11/man/XRectInRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XEmptyRegion.__libmansuffix__
diff --git a/libX11/man/XRectangle.man b/libX11/man/XRectangle.man new file mode 100644 index 000000000..0def1f675 --- /dev/null +++ b/libX11/man/XRectangle.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawRectangle.__libmansuffix__
diff --git a/libX11/man/XRefreshKeyboardMapping.man b/libX11/man/XRefreshKeyboardMapping.man new file mode 100644 index 000000000..23156fe74 --- /dev/null +++ b/libX11/man/XRefreshKeyboardMapping.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLookupKeysym.__libmansuffix__
diff --git a/libX11/man/XRegisterIMInstantiateCallback.man b/libX11/man/XRegisterIMInstantiateCallback.man new file mode 100644 index 000000000..6d302b9cd --- /dev/null +++ b/libX11/man/XRegisterIMInstantiateCallback.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenIM.__libmansuffix__
diff --git a/libX11/man/XRemoveConnectionWatch.man b/libX11/man/XRemoveConnectionWatch.man new file mode 100644 index 000000000..4a3cc1380 --- /dev/null +++ b/libX11/man/XRemoveConnectionWatch.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddConnectionWatch.__libmansuffix__
diff --git a/libX11/man/XRemoveFromSaveSet.man b/libX11/man/XRemoveFromSaveSet.man new file mode 100644 index 000000000..0ea6bfcfc --- /dev/null +++ b/libX11/man/XRemoveFromSaveSet.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeSaveSet.__libmansuffix__
diff --git a/libX11/man/XRemoveHost.man b/libX11/man/XRemoveHost.man new file mode 100644 index 000000000..8efac194e --- /dev/null +++ b/libX11/man/XRemoveHost.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddHost.__libmansuffix__
diff --git a/libX11/man/XRemoveHosts.man b/libX11/man/XRemoveHosts.man new file mode 100644 index 000000000..8efac194e --- /dev/null +++ b/libX11/man/XRemoveHosts.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddHost.__libmansuffix__
diff --git a/libX11/man/XResetScreenSaver.man b/libX11/man/XResetScreenSaver.man new file mode 100644 index 000000000..35198d594 --- /dev/null +++ b/libX11/man/XResetScreenSaver.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetScreenSaver.__libmansuffix__
diff --git a/libX11/man/XResizeWindow.man b/libX11/man/XResizeWindow.man new file mode 100644 index 000000000..5fbc49488 --- /dev/null +++ b/libX11/man/XResizeWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XConfigureWindow.__libmansuffix__
diff --git a/libX11/man/XRestackWindows.man b/libX11/man/XRestackWindows.man new file mode 100644 index 000000000..61d7a2348 --- /dev/null +++ b/libX11/man/XRestackWindows.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XRaiseWindow.__libmansuffix__
diff --git a/libX11/man/XRotateBuffers.man b/libX11/man/XRotateBuffers.man new file mode 100644 index 000000000..c399f1c19 --- /dev/null +++ b/libX11/man/XRotateBuffers.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStoreBytes.__libmansuffix__
diff --git a/libX11/man/XRotateWindowProperties.man b/libX11/man/XRotateWindowProperties.man new file mode 100644 index 000000000..e265d7d69 --- /dev/null +++ b/libX11/man/XRotateWindowProperties.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetWindowProperty.__libmansuffix__
diff --git a/libX11/man/XScreenNumberOfScreen.man b/libX11/man/XScreenNumberOfScreen.man new file mode 100644 index 000000000..c69be9763 --- /dev/null +++ b/libX11/man/XScreenNumberOfScreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/XScreenResourceString.man b/libX11/man/XScreenResourceString.man new file mode 100644 index 000000000..5bb47cead --- /dev/null +++ b/libX11/man/XScreenResourceString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XResourceManagerString.__libmansuffix__
diff --git a/libX11/man/XSegment.man b/libX11/man/XSegment.man new file mode 100644 index 000000000..a361976a0 --- /dev/null +++ b/libX11/man/XSegment.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawLine.__libmansuffix__
diff --git a/libX11/man/XSetAccessControl.man b/libX11/man/XSetAccessControl.man new file mode 100644 index 000000000..8efac194e --- /dev/null +++ b/libX11/man/XSetAccessControl.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAddHost.__libmansuffix__
diff --git a/libX11/man/XSetAfterFunction.man b/libX11/man/XSetAfterFunction.man new file mode 100644 index 000000000..f37afee4a --- /dev/null +++ b/libX11/man/XSetAfterFunction.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSynchronize.__libmansuffix__
diff --git a/libX11/man/XSetBackground.man b/libX11/man/XSetBackground.man new file mode 100644 index 000000000..137df8ee5 --- /dev/null +++ b/libX11/man/XSetBackground.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetState.__libmansuffix__
diff --git a/libX11/man/XSetClassHint.man b/libX11/man/XSetClassHint.man new file mode 100644 index 000000000..fc953a21b --- /dev/null +++ b/libX11/man/XSetClassHint.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocClassHint.__libmansuffix__
diff --git a/libX11/man/XSetClipMask.man b/libX11/man/XSetClipMask.man new file mode 100644 index 000000000..5393e9b2a --- /dev/null +++ b/libX11/man/XSetClipMask.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetClipOrigin.__libmansuffix__
diff --git a/libX11/man/XSetClipRectangles.man b/libX11/man/XSetClipRectangles.man new file mode 100644 index 000000000..5393e9b2a --- /dev/null +++ b/libX11/man/XSetClipRectangles.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetClipOrigin.__libmansuffix__
diff --git a/libX11/man/XSetDashes.man b/libX11/man/XSetDashes.man new file mode 100644 index 000000000..6193102c0 --- /dev/null +++ b/libX11/man/XSetDashes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetLineAttributes.__libmansuffix__
diff --git a/libX11/man/XSetFillRule.man b/libX11/man/XSetFillRule.man new file mode 100644 index 000000000..aa575baab --- /dev/null +++ b/libX11/man/XSetFillRule.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetFillStyle.__libmansuffix__
diff --git a/libX11/man/XSetForeground.man b/libX11/man/XSetForeground.man new file mode 100644 index 000000000..137df8ee5 --- /dev/null +++ b/libX11/man/XSetForeground.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetState.__libmansuffix__
diff --git a/libX11/man/XSetFunction.man b/libX11/man/XSetFunction.man new file mode 100644 index 000000000..137df8ee5 --- /dev/null +++ b/libX11/man/XSetFunction.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetState.__libmansuffix__
diff --git a/libX11/man/XSetGraphicsExposure.man b/libX11/man/XSetGraphicsExposure.man new file mode 100644 index 000000000..9d4203f44 --- /dev/null +++ b/libX11/man/XSetGraphicsExposure.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetArcMode.__libmansuffix__
diff --git a/libX11/man/XSetIMValues.man b/libX11/man/XSetIMValues.man new file mode 100644 index 000000000..6d302b9cd --- /dev/null +++ b/libX11/man/XSetIMValues.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenIM.__libmansuffix__
diff --git a/libX11/man/XSetIOErrorHandler.man b/libX11/man/XSetIOErrorHandler.man new file mode 100644 index 000000000..608900365 --- /dev/null +++ b/libX11/man/XSetIOErrorHandler.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetErrorHandler.__libmansuffix__
diff --git a/libX11/man/XSetIconName.man b/libX11/man/XSetIconName.man new file mode 100644 index 000000000..e315e4495 --- /dev/null +++ b/libX11/man/XSetIconName.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMIconName.__libmansuffix__
diff --git a/libX11/man/XSetIconSizes.man b/libX11/man/XSetIconSizes.man new file mode 100644 index 000000000..edc8882fb --- /dev/null +++ b/libX11/man/XSetIconSizes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocIconSize.__libmansuffix__
diff --git a/libX11/man/XSetLocaleModifiers.man b/libX11/man/XSetLocaleModifiers.man new file mode 100644 index 000000000..046f97fe3 --- /dev/null +++ b/libX11/man/XSetLocaleModifiers.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSupportsLocale.__libmansuffix__
diff --git a/libX11/man/XSetModifierMapping.man b/libX11/man/XSetModifierMapping.man new file mode 100644 index 000000000..013c70a95 --- /dev/null +++ b/libX11/man/XSetModifierMapping.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
diff --git a/libX11/man/XSetOCValues.man b/libX11/man/XSetOCValues.man new file mode 100644 index 000000000..ece6d5ce7 --- /dev/null +++ b/libX11/man/XSetOCValues.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateOC.__libmansuffix__
diff --git a/libX11/man/XSetOMValues.man b/libX11/man/XSetOMValues.man new file mode 100644 index 000000000..d7e1adb03 --- /dev/null +++ b/libX11/man/XSetOMValues.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenOM.__libmansuffix__
diff --git a/libX11/man/XSetPlaneMask.man b/libX11/man/XSetPlaneMask.man new file mode 100644 index 000000000..137df8ee5 --- /dev/null +++ b/libX11/man/XSetPlaneMask.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetState.__libmansuffix__
diff --git a/libX11/man/XSetRGBColormaps.man b/libX11/man/XSetRGBColormaps.man new file mode 100644 index 000000000..a36aee4fe --- /dev/null +++ b/libX11/man/XSetRGBColormaps.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocStandardColormap.__libmansuffix__
diff --git a/libX11/man/XSetRegion.man b/libX11/man/XSetRegion.man new file mode 100644 index 000000000..9e7e7d197 --- /dev/null +++ b/libX11/man/XSetRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateRegion.__libmansuffix__
diff --git a/libX11/man/XSetStipple.man b/libX11/man/XSetStipple.man new file mode 100644 index 000000000..7c434f5cc --- /dev/null +++ b/libX11/man/XSetStipple.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetTile.__libmansuffix__
diff --git a/libX11/man/XSetSubwindowMode.man b/libX11/man/XSetSubwindowMode.man new file mode 100644 index 000000000..9d4203f44 --- /dev/null +++ b/libX11/man/XSetSubwindowMode.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetArcMode.__libmansuffix__
diff --git a/libX11/man/XSetTSOrigin.man b/libX11/man/XSetTSOrigin.man new file mode 100644 index 000000000..7c434f5cc --- /dev/null +++ b/libX11/man/XSetTSOrigin.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetTile.__libmansuffix__
diff --git a/libX11/man/XSetWMHints.man b/libX11/man/XSetWMHints.man new file mode 100644 index 000000000..e066f6d95 --- /dev/null +++ b/libX11/man/XSetWMHints.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocWMHints.__libmansuffix__
diff --git a/libX11/man/XSetWMNormalHints.man b/libX11/man/XSetWMNormalHints.man new file mode 100644 index 000000000..94ebb6295 --- /dev/null +++ b/libX11/man/XSetWMNormalHints.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocSizeHints.__libmansuffix__
diff --git a/libX11/man/XSetWMSizeHints.man b/libX11/man/XSetWMSizeHints.man new file mode 100644 index 000000000..94ebb6295 --- /dev/null +++ b/libX11/man/XSetWMSizeHints.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocSizeHints.__libmansuffix__
diff --git a/libX11/man/XSetWindowAttributes.man b/libX11/man/XSetWindowAttributes.man new file mode 100644 index 000000000..11440c64e --- /dev/null +++ b/libX11/man/XSetWindowAttributes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XCreateWindow.__libmansuffix__
diff --git a/libX11/man/XSetWindowBackground.man b/libX11/man/XSetWindowBackground.man new file mode 100644 index 000000000..1c1160ec3 --- /dev/null +++ b/libX11/man/XSetWindowBackground.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__
diff --git a/libX11/man/XSetWindowBackgroundPixmap.man b/libX11/man/XSetWindowBackgroundPixmap.man new file mode 100644 index 000000000..1c1160ec3 --- /dev/null +++ b/libX11/man/XSetWindowBackgroundPixmap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__
diff --git a/libX11/man/XSetWindowBorder.man b/libX11/man/XSetWindowBorder.man new file mode 100644 index 000000000..1c1160ec3 --- /dev/null +++ b/libX11/man/XSetWindowBorder.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__
diff --git a/libX11/man/XSetWindowBorderPixmap.man b/libX11/man/XSetWindowBorderPixmap.man new file mode 100644 index 000000000..1c1160ec3 --- /dev/null +++ b/libX11/man/XSetWindowBorderPixmap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__
diff --git a/libX11/man/XSetWindowBorderWidth.man b/libX11/man/XSetWindowBorderWidth.man new file mode 100644 index 000000000..5fbc49488 --- /dev/null +++ b/libX11/man/XSetWindowBorderWidth.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XConfigureWindow.__libmansuffix__
diff --git a/libX11/man/XSetWindowColormap.man b/libX11/man/XSetWindowColormap.man new file mode 100644 index 000000000..1c1160ec3 --- /dev/null +++ b/libX11/man/XSetWindowColormap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__
diff --git a/libX11/man/XShrinkRegion.man b/libX11/man/XShrinkRegion.man new file mode 100644 index 000000000..630c1f2c8 --- /dev/null +++ b/libX11/man/XShrinkRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XIntersectRegion.__libmansuffix__
diff --git a/libX11/man/XSizeHints.man b/libX11/man/XSizeHints.man new file mode 100644 index 000000000..94ebb6295 --- /dev/null +++ b/libX11/man/XSizeHints.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocSizeHints.__libmansuffix__
diff --git a/libX11/man/XStandardColormap.man b/libX11/man/XStandardColormap.man new file mode 100644 index 000000000..a36aee4fe --- /dev/null +++ b/libX11/man/XStandardColormap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocStandardColormap.__libmansuffix__
diff --git a/libX11/man/XStoreBuffer.man b/libX11/man/XStoreBuffer.man new file mode 100644 index 000000000..c399f1c19 --- /dev/null +++ b/libX11/man/XStoreBuffer.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStoreBytes.__libmansuffix__
diff --git a/libX11/man/XStoreColor.man b/libX11/man/XStoreColor.man new file mode 100644 index 000000000..f185b7e60 --- /dev/null +++ b/libX11/man/XStoreColor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStoreColors.__libmansuffix__
diff --git a/libX11/man/XStoreName.man b/libX11/man/XStoreName.man new file mode 100644 index 000000000..6b4fc7e7d --- /dev/null +++ b/libX11/man/XStoreName.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMName.__libmansuffix__
diff --git a/libX11/man/XStoreNamedColor.man b/libX11/man/XStoreNamedColor.man new file mode 100644 index 000000000..f185b7e60 --- /dev/null +++ b/libX11/man/XStoreNamedColor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStoreColors.__libmansuffix__
diff --git a/libX11/man/XSubImage.man b/libX11/man/XSubImage.man new file mode 100644 index 000000000..8fe560159 --- /dev/null +++ b/libX11/man/XSubImage.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInitImage.__libmansuffix__
diff --git a/libX11/man/XSubtractRegion.man b/libX11/man/XSubtractRegion.man new file mode 100644 index 000000000..630c1f2c8 --- /dev/null +++ b/libX11/man/XSubtractRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XIntersectRegion.__libmansuffix__
diff --git a/libX11/man/XSync.man b/libX11/man/XSync.man new file mode 100644 index 000000000..170707ae0 --- /dev/null +++ b/libX11/man/XSync.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XFlush.__libmansuffix__
diff --git a/libX11/man/XTextExtents16.man b/libX11/man/XTextExtents16.man new file mode 100644 index 000000000..36be9d3c7 --- /dev/null +++ b/libX11/man/XTextExtents16.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XTextExtents.__libmansuffix__
diff --git a/libX11/man/XTextItem.man b/libX11/man/XTextItem.man new file mode 100644 index 000000000..cee50e8da --- /dev/null +++ b/libX11/man/XTextItem.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawText.__libmansuffix__
diff --git a/libX11/man/XTextItem16.man b/libX11/man/XTextItem16.man new file mode 100644 index 000000000..cee50e8da --- /dev/null +++ b/libX11/man/XTextItem16.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDrawText.__libmansuffix__
diff --git a/libX11/man/XTextProperty.man b/libX11/man/XTextProperty.man new file mode 100644 index 000000000..70c3debc2 --- /dev/null +++ b/libX11/man/XTextProperty.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStringListToTextProperty.__libmansuffix__
diff --git a/libX11/man/XTextPropertyToStringList.man b/libX11/man/XTextPropertyToStringList.man new file mode 100644 index 000000000..70c3debc2 --- /dev/null +++ b/libX11/man/XTextPropertyToStringList.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XStringListToTextProperty.__libmansuffix__
diff --git a/libX11/man/XTextWidth16.man b/libX11/man/XTextWidth16.man new file mode 100644 index 000000000..e0e845a85 --- /dev/null +++ b/libX11/man/XTextWidth16.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XTextWidth.__libmansuffix__
diff --git a/libX11/man/XTimeCoord.man b/libX11/man/XTimeCoord.man new file mode 100644 index 000000000..708dee7c8 --- /dev/null +++ b/libX11/man/XTimeCoord.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSendEvent.__libmansuffix__
diff --git a/libX11/man/XUndefineCursor.man b/libX11/man/XUndefineCursor.man new file mode 100644 index 000000000..55aeaca40 --- /dev/null +++ b/libX11/man/XUndefineCursor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XDefineCursor.__libmansuffix__
diff --git a/libX11/man/XUngrabButton.man b/libX11/man/XUngrabButton.man new file mode 100644 index 000000000..d82a48eb5 --- /dev/null +++ b/libX11/man/XUngrabButton.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGrabButton.__libmansuffix__
diff --git a/libX11/man/XUngrabKey.man b/libX11/man/XUngrabKey.man new file mode 100644 index 000000000..55923cdec --- /dev/null +++ b/libX11/man/XUngrabKey.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGrabKey.__libmansuffix__
diff --git a/libX11/man/XUngrabKeyboard.man b/libX11/man/XUngrabKeyboard.man new file mode 100644 index 000000000..0e7379418 --- /dev/null +++ b/libX11/man/XUngrabKeyboard.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGrabKeyboard.__libmansuffix__
diff --git a/libX11/man/XUngrabPointer.man b/libX11/man/XUngrabPointer.man new file mode 100644 index 000000000..93259b8c3 --- /dev/null +++ b/libX11/man/XUngrabPointer.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGrabPointer.__libmansuffix__
diff --git a/libX11/man/XUngrabServer.man b/libX11/man/XUngrabServer.man new file mode 100644 index 000000000..2427493cf --- /dev/null +++ b/libX11/man/XUngrabServer.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGrabServer.__libmansuffix__
diff --git a/libX11/man/XUninstallColormap.man b/libX11/man/XUninstallColormap.man new file mode 100644 index 000000000..7b18ab38b --- /dev/null +++ b/libX11/man/XUninstallColormap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInstallColormap.__libmansuffix__
diff --git a/libX11/man/XUnionRectWithRegion.man b/libX11/man/XUnionRectWithRegion.man new file mode 100644 index 000000000..630c1f2c8 --- /dev/null +++ b/libX11/man/XUnionRectWithRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XIntersectRegion.__libmansuffix__
diff --git a/libX11/man/XUnionRegion.man b/libX11/man/XUnionRegion.man new file mode 100644 index 000000000..630c1f2c8 --- /dev/null +++ b/libX11/man/XUnionRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XIntersectRegion.__libmansuffix__
diff --git a/libX11/man/XUniqueContext.man b/libX11/man/XUniqueContext.man new file mode 100644 index 000000000..60c71a492 --- /dev/null +++ b/libX11/man/XUniqueContext.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSaveContext.__libmansuffix__
diff --git a/libX11/man/XUnloadFont.man b/libX11/man/XUnloadFont.man new file mode 100644 index 000000000..8b44e8513 --- /dev/null +++ b/libX11/man/XUnloadFont.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XLoadFont.__libmansuffix__
diff --git a/libX11/man/XUnlockDisplay.man b/libX11/man/XUnlockDisplay.man new file mode 100644 index 000000000..bc8bb0205 --- /dev/null +++ b/libX11/man/XUnlockDisplay.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XInitThreads.__libmansuffix__
diff --git a/libX11/man/XUnmapSubwindows.man b/libX11/man/XUnmapSubwindows.man new file mode 100644 index 000000000..86b768e8e --- /dev/null +++ b/libX11/man/XUnmapSubwindows.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XUnmapWindow.__libmansuffix__
diff --git a/libX11/man/XUnregisterIMInstantiateCallback.man b/libX11/man/XUnregisterIMInstantiateCallback.man new file mode 100644 index 000000000..6d302b9cd --- /dev/null +++ b/libX11/man/XUnregisterIMInstantiateCallback.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XOpenIM.__libmansuffix__
diff --git a/libX11/man/XUnsetICFocus.man b/libX11/man/XUnsetICFocus.man new file mode 100644 index 000000000..034ffb47d --- /dev/null +++ b/libX11/man/XUnsetICFocus.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetICFocus.__libmansuffix__
diff --git a/libX11/man/XVisualIDFromVisual.man b/libX11/man/XVisualIDFromVisual.man new file mode 100644 index 000000000..0b12bf69d --- /dev/null +++ b/libX11/man/XVisualIDFromVisual.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetVisualInfo.__libmansuffix__
diff --git a/libX11/man/XVisualInfo.man b/libX11/man/XVisualInfo.man new file mode 100644 index 000000000..0b12bf69d --- /dev/null +++ b/libX11/man/XVisualInfo.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetVisualInfo.__libmansuffix__
diff --git a/libX11/man/XWMGeometry.man b/libX11/man/XWMGeometry.man new file mode 100644 index 000000000..9ad74b7ba --- /dev/null +++ b/libX11/man/XWMGeometry.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XParseGeometry.__libmansuffix__
diff --git a/libX11/man/XWMHints.man b/libX11/man/XWMHints.man new file mode 100644 index 000000000..e066f6d95 --- /dev/null +++ b/libX11/man/XWMHints.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XAllocWMHints.__libmansuffix__
diff --git a/libX11/man/XWindowAttributes.man b/libX11/man/XWindowAttributes.man new file mode 100644 index 000000000..df77346fb --- /dev/null +++ b/libX11/man/XWindowAttributes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XGetWindowAttributes.__libmansuffix__
diff --git a/libX11/man/XWindowChanges.man b/libX11/man/XWindowChanges.man new file mode 100644 index 000000000..5fbc49488 --- /dev/null +++ b/libX11/man/XWindowChanges.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XConfigureWindow.__libmansuffix__
diff --git a/libX11/man/XWindowEvent.man b/libX11/man/XWindowEvent.man new file mode 100644 index 000000000..f421b8caa --- /dev/null +++ b/libX11/man/XWindowEvent.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XNextEvent.__libmansuffix__
diff --git a/libX11/man/XWithdrawWindow.man b/libX11/man/XWithdrawWindow.man new file mode 100644 index 000000000..799989ad0 --- /dev/null +++ b/libX11/man/XWithdrawWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XIconifyWindow.__libmansuffix__
diff --git a/libX11/man/XWriteBitmapFile.man b/libX11/man/XWriteBitmapFile.man new file mode 100644 index 000000000..9631570d0 --- /dev/null +++ b/libX11/man/XWriteBitmapFile.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XReadBitmapFile.__libmansuffix__
diff --git a/libX11/man/XXorRegion.man b/libX11/man/XXorRegion.man new file mode 100644 index 000000000..630c1f2c8 --- /dev/null +++ b/libX11/man/XXorRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XIntersectRegion.__libmansuffix__
diff --git a/libX11/man/XcmsAllocNamedColor.man b/libX11/man/XcmsAllocNamedColor.man new file mode 100644 index 000000000..e8e02c0af --- /dev/null +++ b/libX11/man/XcmsAllocNamedColor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsAllocColor.__libmansuffix__
diff --git a/libX11/man/XcmsCIELab.man b/libX11/man/XcmsCIELab.man new file mode 100644 index 000000000..ddce73e37 --- /dev/null +++ b/libX11/man/XcmsCIELab.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsColor.__libmansuffix__
diff --git a/libX11/man/XcmsCIELabQueryMaxL.man b/libX11/man/XcmsCIELabQueryMaxL.man new file mode 100644 index 000000000..ae4d10014 --- /dev/null +++ b/libX11/man/XcmsCIELabQueryMaxL.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsCIELabQueryMaxC.__libmansuffix__
diff --git a/libX11/man/XcmsCIELabQueryMaxLC.man b/libX11/man/XcmsCIELabQueryMaxLC.man new file mode 100644 index 000000000..ae4d10014 --- /dev/null +++ b/libX11/man/XcmsCIELabQueryMaxLC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsCIELabQueryMaxC.__libmansuffix__
diff --git a/libX11/man/XcmsCIELabQueryMinL.man b/libX11/man/XcmsCIELabQueryMinL.man new file mode 100644 index 000000000..ae4d10014 --- /dev/null +++ b/libX11/man/XcmsCIELabQueryMinL.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsCIELabQueryMaxC.__libmansuffix__
diff --git a/libX11/man/XcmsCIELuv.man b/libX11/man/XcmsCIELuv.man new file mode 100644 index 000000000..ddce73e37 --- /dev/null +++ b/libX11/man/XcmsCIELuv.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsColor.__libmansuffix__
diff --git a/libX11/man/XcmsCIELuvQueryMaxL.man b/libX11/man/XcmsCIELuvQueryMaxL.man new file mode 100644 index 000000000..96b9c7f1d --- /dev/null +++ b/libX11/man/XcmsCIELuvQueryMaxL.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsCIELuvQueryMaxC.__libmansuffix__
diff --git a/libX11/man/XcmsCIELuvQueryMaxLC.man b/libX11/man/XcmsCIELuvQueryMaxLC.man new file mode 100644 index 000000000..96b9c7f1d --- /dev/null +++ b/libX11/man/XcmsCIELuvQueryMaxLC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsCIELuvQueryMaxC.__libmansuffix__
diff --git a/libX11/man/XcmsCIELuvQueryMinL.man b/libX11/man/XcmsCIELuvQueryMinL.man new file mode 100644 index 000000000..96b9c7f1d --- /dev/null +++ b/libX11/man/XcmsCIELuvQueryMinL.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsCIELuvQueryMaxC.__libmansuffix__
diff --git a/libX11/man/XcmsCIEXYZ.man b/libX11/man/XcmsCIEXYZ.man new file mode 100644 index 000000000..ddce73e37 --- /dev/null +++ b/libX11/man/XcmsCIEXYZ.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsColor.__libmansuffix__
diff --git a/libX11/man/XcmsCIEuvY.man b/libX11/man/XcmsCIEuvY.man new file mode 100644 index 000000000..ddce73e37 --- /dev/null +++ b/libX11/man/XcmsCIEuvY.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsColor.__libmansuffix__
diff --git a/libX11/man/XcmsCIExyY.man b/libX11/man/XcmsCIExyY.man new file mode 100644 index 000000000..ddce73e37 --- /dev/null +++ b/libX11/man/XcmsCIExyY.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsColor.__libmansuffix__
diff --git a/libX11/man/XcmsFreeCCC.man b/libX11/man/XcmsFreeCCC.man new file mode 100644 index 000000000..8d43dee20 --- /dev/null +++ b/libX11/man/XcmsFreeCCC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsCreateCCC.__libmansuffix__
diff --git a/libX11/man/XcmsLookupColor.man b/libX11/man/XcmsLookupColor.man new file mode 100644 index 000000000..60500d85e --- /dev/null +++ b/libX11/man/XcmsLookupColor.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsQueryColor.__libmansuffix__
diff --git a/libX11/man/XcmsPad.man b/libX11/man/XcmsPad.man new file mode 100644 index 000000000..ddce73e37 --- /dev/null +++ b/libX11/man/XcmsPad.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsColor.__libmansuffix__
diff --git a/libX11/man/XcmsQueryBlue.man b/libX11/man/XcmsQueryBlue.man new file mode 100644 index 000000000..16213132b --- /dev/null +++ b/libX11/man/XcmsQueryBlue.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsQueryBlack.__libmansuffix__
diff --git a/libX11/man/XcmsQueryColors.man b/libX11/man/XcmsQueryColors.man new file mode 100644 index 000000000..60500d85e --- /dev/null +++ b/libX11/man/XcmsQueryColors.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsQueryColor.__libmansuffix__
diff --git a/libX11/man/XcmsQueryGreen.man b/libX11/man/XcmsQueryGreen.man new file mode 100644 index 000000000..16213132b --- /dev/null +++ b/libX11/man/XcmsQueryGreen.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsQueryBlack.__libmansuffix__
diff --git a/libX11/man/XcmsQueryRed.man b/libX11/man/XcmsQueryRed.man new file mode 100644 index 000000000..16213132b --- /dev/null +++ b/libX11/man/XcmsQueryRed.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsQueryBlack.__libmansuffix__
diff --git a/libX11/man/XcmsQueryWhite.man b/libX11/man/XcmsQueryWhite.man new file mode 100644 index 000000000..16213132b --- /dev/null +++ b/libX11/man/XcmsQueryWhite.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsQueryBlack.__libmansuffix__
diff --git a/libX11/man/XcmsRGB.man b/libX11/man/XcmsRGB.man new file mode 100644 index 000000000..ddce73e37 --- /dev/null +++ b/libX11/man/XcmsRGB.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsColor.__libmansuffix__
diff --git a/libX11/man/XcmsRGBi.man b/libX11/man/XcmsRGBi.man new file mode 100644 index 000000000..ddce73e37 --- /dev/null +++ b/libX11/man/XcmsRGBi.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsColor.__libmansuffix__
diff --git a/libX11/man/XcmsSetCCCOfColormap.man b/libX11/man/XcmsSetCCCOfColormap.man new file mode 100644 index 000000000..862869ffe --- /dev/null +++ b/libX11/man/XcmsSetCCCOfColormap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsCCCOfColormap.__libmansuffix__
diff --git a/libX11/man/XcmsSetWhiteAdjustProc.man b/libX11/man/XcmsSetWhiteAdjustProc.man new file mode 100644 index 000000000..1b224cccb --- /dev/null +++ b/libX11/man/XcmsSetWhiteAdjustProc.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsSetWhitePoint.__libmansuffix__
diff --git a/libX11/man/XcmsStoreColors.man b/libX11/man/XcmsStoreColors.man new file mode 100644 index 000000000..356624062 --- /dev/null +++ b/libX11/man/XcmsStoreColors.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsStoreColor.__libmansuffix__
diff --git a/libX11/man/XcmsTekHVC.man b/libX11/man/XcmsTekHVC.man new file mode 100644 index 000000000..ddce73e37 --- /dev/null +++ b/libX11/man/XcmsTekHVC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsColor.__libmansuffix__
diff --git a/libX11/man/XcmsTekHVCQueryMaxV.man b/libX11/man/XcmsTekHVCQueryMaxV.man new file mode 100644 index 000000000..0893603c7 --- /dev/null +++ b/libX11/man/XcmsTekHVCQueryMaxV.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsTekHVCQueryMaxC.__libmansuffix__
diff --git a/libX11/man/XcmsTekHVCQueryMaxVC.man b/libX11/man/XcmsTekHVCQueryMaxVC.man new file mode 100644 index 000000000..0893603c7 --- /dev/null +++ b/libX11/man/XcmsTekHVCQueryMaxVC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsTekHVCQueryMaxC.__libmansuffix__
diff --git a/libX11/man/XcmsTekHVCQueryMaxVSamples.man b/libX11/man/XcmsTekHVCQueryMaxVSamples.man new file mode 100644 index 000000000..0893603c7 --- /dev/null +++ b/libX11/man/XcmsTekHVCQueryMaxVSamples.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsTekHVCQueryMaxC.__libmansuffix__
diff --git a/libX11/man/XcmsTekHVCQueryMinV.man b/libX11/man/XcmsTekHVCQueryMinV.man new file mode 100644 index 000000000..0893603c7 --- /dev/null +++ b/libX11/man/XcmsTekHVCQueryMinV.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XcmsTekHVCQueryMaxC.__libmansuffix__
diff --git a/libX11/man/XmbSetWMProperties.man b/libX11/man/XmbSetWMProperties.man new file mode 100644 index 000000000..24e3c41af --- /dev/null +++ b/libX11/man/XmbSetWMProperties.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMProperties.__libmansuffix__
diff --git a/libX11/man/XmbTextPropertyToTextList.man b/libX11/man/XmbTextPropertyToTextList.man new file mode 100644 index 000000000..d73114782 --- /dev/null +++ b/libX11/man/XmbTextPropertyToTextList.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__
diff --git a/libX11/man/XrmCombineDatabase.man b/libX11/man/XrmCombineDatabase.man new file mode 100644 index 000000000..7630c51e8 --- /dev/null +++ b/libX11/man/XrmCombineDatabase.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmMergeDatabases.__libmansuffix__
diff --git a/libX11/man/XrmCombineFileDatabase.man b/libX11/man/XrmCombineFileDatabase.man new file mode 100644 index 000000000..7630c51e8 --- /dev/null +++ b/libX11/man/XrmCombineFileDatabase.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmMergeDatabases.__libmansuffix__
diff --git a/libX11/man/XrmDestroyDatabase.man b/libX11/man/XrmDestroyDatabase.man new file mode 100644 index 000000000..2dc1243ec --- /dev/null +++ b/libX11/man/XrmDestroyDatabase.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__
diff --git a/libX11/man/XrmGetDatabase.man b/libX11/man/XrmGetDatabase.man new file mode 100644 index 000000000..2dc1243ec --- /dev/null +++ b/libX11/man/XrmGetDatabase.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__
diff --git a/libX11/man/XrmGetStringDatabase.man b/libX11/man/XrmGetStringDatabase.man new file mode 100644 index 000000000..2dc1243ec --- /dev/null +++ b/libX11/man/XrmGetStringDatabase.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__
diff --git a/libX11/man/XrmLocaleOfDatabase.man b/libX11/man/XrmLocaleOfDatabase.man new file mode 100644 index 000000000..2dc1243ec --- /dev/null +++ b/libX11/man/XrmLocaleOfDatabase.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__
diff --git a/libX11/man/XrmOptionDescRec.man b/libX11/man/XrmOptionDescRec.man new file mode 100644 index 000000000..cbff21629 --- /dev/null +++ b/libX11/man/XrmOptionDescRec.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmInitialize.__libmansuffix__
diff --git a/libX11/man/XrmOptionKind.man b/libX11/man/XrmOptionKind.man new file mode 100644 index 000000000..cbff21629 --- /dev/null +++ b/libX11/man/XrmOptionKind.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmInitialize.__libmansuffix__
diff --git a/libX11/man/XrmParseCommand.man b/libX11/man/XrmParseCommand.man new file mode 100644 index 000000000..cbff21629 --- /dev/null +++ b/libX11/man/XrmParseCommand.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmInitialize.__libmansuffix__
diff --git a/libX11/man/XrmPermStringToQuark.man b/libX11/man/XrmPermStringToQuark.man new file mode 100644 index 000000000..8f5733ea4 --- /dev/null +++ b/libX11/man/XrmPermStringToQuark.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__
diff --git a/libX11/man/XrmPutFileDatabase.man b/libX11/man/XrmPutFileDatabase.man new file mode 100644 index 000000000..2dc1243ec --- /dev/null +++ b/libX11/man/XrmPutFileDatabase.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__
diff --git a/libX11/man/XrmPutLineResource.man b/libX11/man/XrmPutLineResource.man new file mode 100644 index 000000000..6011ae5fd --- /dev/null +++ b/libX11/man/XrmPutLineResource.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmPutResource.__libmansuffix__
diff --git a/libX11/man/XrmPutStringResource.man b/libX11/man/XrmPutStringResource.man new file mode 100644 index 000000000..6011ae5fd --- /dev/null +++ b/libX11/man/XrmPutStringResource.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmPutResource.__libmansuffix__
diff --git a/libX11/man/XrmQGetResource.man b/libX11/man/XrmQGetResource.man new file mode 100644 index 000000000..19ab8bff8 --- /dev/null +++ b/libX11/man/XrmQGetResource.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmGetResource.__libmansuffix__
diff --git a/libX11/man/XrmQGetSearchList.man b/libX11/man/XrmQGetSearchList.man new file mode 100644 index 000000000..19ab8bff8 --- /dev/null +++ b/libX11/man/XrmQGetSearchList.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmGetResource.__libmansuffix__
diff --git a/libX11/man/XrmQGetSearchResource.man b/libX11/man/XrmQGetSearchResource.man new file mode 100644 index 000000000..19ab8bff8 --- /dev/null +++ b/libX11/man/XrmQGetSearchResource.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmGetResource.__libmansuffix__
diff --git a/libX11/man/XrmQPutResource.man b/libX11/man/XrmQPutResource.man new file mode 100644 index 000000000..6011ae5fd --- /dev/null +++ b/libX11/man/XrmQPutResource.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmPutResource.__libmansuffix__
diff --git a/libX11/man/XrmQPutStringResource.man b/libX11/man/XrmQPutStringResource.man new file mode 100644 index 000000000..6011ae5fd --- /dev/null +++ b/libX11/man/XrmQPutStringResource.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmPutResource.__libmansuffix__
diff --git a/libX11/man/XrmQuarkToString.man b/libX11/man/XrmQuarkToString.man new file mode 100644 index 000000000..8f5733ea4 --- /dev/null +++ b/libX11/man/XrmQuarkToString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__
diff --git a/libX11/man/XrmSetDatabase.man b/libX11/man/XrmSetDatabase.man new file mode 100644 index 000000000..2dc1243ec --- /dev/null +++ b/libX11/man/XrmSetDatabase.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__
diff --git a/libX11/man/XrmStringToBindingQuarkList.man b/libX11/man/XrmStringToBindingQuarkList.man new file mode 100644 index 000000000..8f5733ea4 --- /dev/null +++ b/libX11/man/XrmStringToBindingQuarkList.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__
diff --git a/libX11/man/XrmStringToQuark.man b/libX11/man/XrmStringToQuark.man new file mode 100644 index 000000000..8f5733ea4 --- /dev/null +++ b/libX11/man/XrmStringToQuark.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__
diff --git a/libX11/man/XrmStringToQuarkList.man b/libX11/man/XrmStringToQuarkList.man new file mode 100644 index 000000000..8f5733ea4 --- /dev/null +++ b/libX11/man/XrmStringToQuarkList.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__
diff --git a/libX11/man/XrmValue.man b/libX11/man/XrmValue.man new file mode 100644 index 000000000..cbff21629 --- /dev/null +++ b/libX11/man/XrmValue.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XrmInitialize.__libmansuffix__
diff --git a/libX11/man/Xutf8DrawImageString.man b/libX11/man/Xutf8DrawImageString.man new file mode 100644 index 000000000..ce965eb55 --- /dev/null +++ b/libX11/man/Xutf8DrawImageString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbDrawImageString.__libmansuffix__
diff --git a/libX11/man/Xutf8DrawString.man b/libX11/man/Xutf8DrawString.man new file mode 100644 index 000000000..dad556159 --- /dev/null +++ b/libX11/man/Xutf8DrawString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbDrawString.__libmansuffix__
diff --git a/libX11/man/Xutf8DrawText.man b/libX11/man/Xutf8DrawText.man new file mode 100644 index 000000000..6588ec558 --- /dev/null +++ b/libX11/man/Xutf8DrawText.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbDrawText.__libmansuffix__
diff --git a/libX11/man/Xutf8LookupString.man b/libX11/man/Xutf8LookupString.man new file mode 100644 index 000000000..3d2805b88 --- /dev/null +++ b/libX11/man/Xutf8LookupString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbLookupString.__libmansuffix__
diff --git a/libX11/man/Xutf8ResetIC.man b/libX11/man/Xutf8ResetIC.man new file mode 100644 index 000000000..a2336ccfa --- /dev/null +++ b/libX11/man/Xutf8ResetIC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbResetIC.__libmansuffix__
diff --git a/libX11/man/Xutf8SetWMProperties.man b/libX11/man/Xutf8SetWMProperties.man new file mode 100644 index 000000000..24e3c41af --- /dev/null +++ b/libX11/man/Xutf8SetWMProperties.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XSetWMProperties.__libmansuffix__
diff --git a/libX11/man/Xutf8TextEscapement.man b/libX11/man/Xutf8TextEscapement.man new file mode 100644 index 000000000..e63373fb0 --- /dev/null +++ b/libX11/man/Xutf8TextEscapement.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextEscapement.__libmansuffix__
diff --git a/libX11/man/Xutf8TextExtents.man b/libX11/man/Xutf8TextExtents.man new file mode 100644 index 000000000..f5a3c260f --- /dev/null +++ b/libX11/man/Xutf8TextExtents.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextExtents.__libmansuffix__
diff --git a/libX11/man/Xutf8TextListToTextProperty.man b/libX11/man/Xutf8TextListToTextProperty.man new file mode 100644 index 000000000..d73114782 --- /dev/null +++ b/libX11/man/Xutf8TextListToTextProperty.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__
diff --git a/libX11/man/Xutf8TextPerCharExtents.man b/libX11/man/Xutf8TextPerCharExtents.man new file mode 100644 index 000000000..41db614d9 --- /dev/null +++ b/libX11/man/Xutf8TextPerCharExtents.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextPerCharExtents.__libmansuffix__
diff --git a/libX11/man/Xutf8TextPropertyToTextList.man b/libX11/man/Xutf8TextPropertyToTextList.man new file mode 100644 index 000000000..d73114782 --- /dev/null +++ b/libX11/man/Xutf8TextPropertyToTextList.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__
diff --git a/libX11/man/XwcDrawImageString.man b/libX11/man/XwcDrawImageString.man new file mode 100644 index 000000000..ce965eb55 --- /dev/null +++ b/libX11/man/XwcDrawImageString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbDrawImageString.__libmansuffix__
diff --git a/libX11/man/XwcDrawString.man b/libX11/man/XwcDrawString.man new file mode 100644 index 000000000..dad556159 --- /dev/null +++ b/libX11/man/XwcDrawString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbDrawString.__libmansuffix__
diff --git a/libX11/man/XwcDrawText.man b/libX11/man/XwcDrawText.man new file mode 100644 index 000000000..6588ec558 --- /dev/null +++ b/libX11/man/XwcDrawText.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbDrawText.__libmansuffix__
diff --git a/libX11/man/XwcFreeStringList.man b/libX11/man/XwcFreeStringList.man new file mode 100644 index 000000000..d73114782 --- /dev/null +++ b/libX11/man/XwcFreeStringList.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__
diff --git a/libX11/man/XwcLookupString.man b/libX11/man/XwcLookupString.man new file mode 100644 index 000000000..3d2805b88 --- /dev/null +++ b/libX11/man/XwcLookupString.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbLookupString.__libmansuffix__
diff --git a/libX11/man/XwcResetIC.man b/libX11/man/XwcResetIC.man new file mode 100644 index 000000000..a2336ccfa --- /dev/null +++ b/libX11/man/XwcResetIC.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbResetIC.__libmansuffix__
diff --git a/libX11/man/XwcTextEscapement.man b/libX11/man/XwcTextEscapement.man new file mode 100644 index 000000000..e63373fb0 --- /dev/null +++ b/libX11/man/XwcTextEscapement.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextEscapement.__libmansuffix__
diff --git a/libX11/man/XwcTextExtents.man b/libX11/man/XwcTextExtents.man new file mode 100644 index 000000000..f5a3c260f --- /dev/null +++ b/libX11/man/XwcTextExtents.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextExtents.__libmansuffix__
diff --git a/libX11/man/XwcTextListToTextProperty.man b/libX11/man/XwcTextListToTextProperty.man new file mode 100644 index 000000000..d73114782 --- /dev/null +++ b/libX11/man/XwcTextListToTextProperty.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__
diff --git a/libX11/man/XwcTextPerCharExtents.man b/libX11/man/XwcTextPerCharExtents.man new file mode 100644 index 000000000..41db614d9 --- /dev/null +++ b/libX11/man/XwcTextPerCharExtents.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextPerCharExtents.__libmansuffix__
diff --git a/libX11/man/XwcTextPropertyToTextList.man b/libX11/man/XwcTextPropertyToTextList.man new file mode 100644 index 000000000..d73114782 --- /dev/null +++ b/libX11/man/XwcTextPropertyToTextList.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__
diff --git a/libX11/man/xkb/Makefile.am b/libX11/man/xkb/Makefile.am index e385d445e..c5d970074 100644 --- a/libX11/man/xkb/Makefile.am +++ b/libX11/man/xkb/Makefile.am @@ -1,7 +1,5 @@ libmandir = $(LIB_MAN_DIR)
-LIB_MAN_DIR_SUFFIX = $(LIB_MAN_DIR:@mandir@/man%=%)
-
libman_PRE = \
XkbActionCtrls.man \
XkbAddDeviceLedInfo.man \
diff --git a/libXau/Makefile.am b/libXau/Makefile.am index 3ff7c03a9..f74f1bf93 100644 --- a/libXau/Makefile.am +++ b/libXau/Makefile.am @@ -1,3 +1,5 @@ +SUBDIRS=man
+
lib_LTLIBRARIES = libXau.la
AM_CFLAGS = $(XAU_CFLAGS) $(CWARNFLAGS)
@@ -48,39 +50,8 @@ $(LINTLIB): $(libXau_la_SOURCES) $(LINT) -y -oXau -x $(ALL_LINT_FLAGS) $(libXau_la_SOURCES)
endif MAKE_LINT_LIB
-LIB_MAN_DIR_SUFFIX = $(LIB_MAN_DIR:@mandir@/man%=%)
-
-libmandir = $(LIB_MAN_DIR)
-libman_PRE = Xau.man
-BUILT_SOURCES = $(Xau_shadows:=.@LIB_MAN_SUFFIX@)
-CLEANFILES = $(libman_DATA) $(BUILT_SOURCES) $(lintlib_DATA)
-libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@) \
- $(Xau_shadows:=.@LIB_MAN_SUFFIX@)
-
+CLEANFILES = $(lintlib_DATA)
MAINTAINERCLEANFILES = ChangeLog INSTALL
-EXTRA_DIST = $(libman_PRE)
-
-Xau_shadows = \
- XauFileName \
- XauReadAuth \
- XauLockAuth \
- XauUnlockAuth \
- XauWriteAuth \
- XauDisposeAuth \
- XauGetAuthByAddr \
- XauGetBestAuthByAddr
-
-Xau_shadows_man = $(Xau_shadows:=.@LIB_MAN_SUFFIX@)
-$(Xau_shadows_man):
- $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/Xau.$(LIB_MAN_SUFFIX) > $@
-
-XORGRELSTRING = @PACKAGE_STRING@
- XORGMANNAME = X Version 11
-
-Xau.$(LIB_MAN_SUFFIX): $(srcdir)/Xau.man
- $(AM_V_GEN)$(SED) \
- -e 's/__xorgversion__/"$(XORGRELSTRING)" "$(XORGMANNAME)"/' \
- < $(srcdir)/Xau.man > Xau.$(LIB_MAN_SUFFIX)
.PHONY: ChangeLog INSTALL
diff --git a/libXau/configure.ac b/libXau/configure.ac index 98e0184d6..ae37e62b3 100644 --- a/libXau/configure.ac +++ b/libXau/configure.ac @@ -28,10 +28,10 @@ AM_MAINTAINER_MODE AM_CONFIG_HEADER(config.h)
-# Require xorg-macros: XORG_DEFAULT_OPTIONS
+# Require X.Org macros 1.8 or later for MAN_SUBSTS set by XORG_MANPAGE_SECTIONS
m4_ifndef([XORG_MACROS_VERSION],
- [m4_fatal([must install xorg-macros 1.4 or later before running autoconf/autogen])])
-XORG_MACROS_VERSION(1.4)
+ [m4_fatal([must install xorg-macros 1.8 or later before running autoconf/autogen])])
+XORG_MACROS_VERSION(1.8)
XORG_DEFAULT_OPTIONS
AC_PROG_CC
@@ -75,4 +75,5 @@ LINT_FLAGS="${LINT_FLAGS} ${XAU_CFLAGS}" AC_OUTPUT([Makefile
+ man/Makefile
xau.pc])
diff --git a/libXau/man/Makefile.am b/libXau/man/Makefile.am new file mode 100644 index 000000000..694c376b0 --- /dev/null +++ b/libXau/man/Makefile.am @@ -0,0 +1,47 @@ +#
+# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice (including the next
+# paragraph) shall be included in all copies or substantial portions of the
+# Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+#
+
+libmandir = $(LIB_MAN_DIR)
+
+libman_PRE = \
+ Xau.man \
+ XauDisposeAuth.man \
+ XauFileName.man \
+ XauGetAuthByAddr.man \
+ XauGetBestAuthByAddr.man \
+ XauLockAuth.man \
+ XauReadAuth.man \
+ XauUnlockAuth.man \
+ XauWriteAuth.man
+
+libman_DATA = $(libman_PRE:man=$(LIB_MAN_SUFFIX))
+
+EXTRA_DIST = $(libman_PRE)
+
+CLEANFILES = $(libman_DATA)
+
+# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
+SUFFIXES = .$(LIB_MAN_SUFFIX) .man
+
+.man.$(LIB_MAN_SUFFIX):
+ $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
diff --git a/libXau/Xau.man b/libXau/man/Xau.man index 2cea88c22..0688f49ef 100644 --- a/libXau/Xau.man +++ b/libXau/man/Xau.man @@ -2,33 +2,33 @@ .\" $XdotOrg$
.\"
.\" Copyright (c) 1994 X Consortium
-.\"
+.\"
.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
.\" Software furnished to do so, subject to the following conditions:
-.\"
+.\"
.\" The above copyright notice and this permission notice shall be included in
.\" all copies or substantial portions of the Software.
-.\"
+.\"
.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-.\" WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-.\" OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+.\" WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+.\" OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
.\" SOFTWARE.
-.\"
-.\" Except as contained in this notice, the name of the X Consortium shall not
-.\" be used in advertising or otherwise to promote the sale, use or other
-.\" dealing in this Software without prior written authorization from the
+.\"
+.\" Except as contained in this notice, the name of the X Consortium shall not
+.\" be used in advertising or otherwise to promote the sale, use or other
+.\" dealing in this Software without prior written authorization from the
.\" X Consortium.
.\"
.\" $XFree86: xc/doc/man/Xau/Xau.man,v 1.2 2001/01/27 18:20:19 dawes Exp $
.\"
-.TH Xau 3 __xorgversion__
+.TH Xau __libmansuffix__ __xorgversion__
.SH NAME
Xau library: XauFileName, XauReadAuth, XauLockAuth, XauUnlockAuth,
XauWriteAuth, XauDisposeAuth,
@@ -51,11 +51,11 @@ typedef struct xauth { } Xauth;
.HP
-char *XauFileName (void);
+char *XauFileName (void);
.HP
-Xauth *XauReadAuth (FILE *\fIauth_file\fP\^);
+Xauth *XauReadAuth (FILE *\fIauth_file\fP\^);
.HP
-int XauWriteAuth (FILE *\fIauth_file\fP, Xauth *\fIauth\fP\^);
+int XauWriteAuth (FILE *\fIauth_file\fP, Xauth *\fIauth\fP\^);
.HP
Xauth *XauGetAuthByAddr (unsigned short \fIfamily\fP\^, unsigned short
\fIaddress_length\fP\^, const char *\fIaddress\fP\^, unsigned short
@@ -65,14 +65,14 @@ Xauth *XauGetAuthByAddr (unsigned short \fIfamily\fP\^, unsigned short Xauth *XauGetBestAuthByAddr (unsigned short \fIfamily\fP\^, unsigned short
\fIaddress_length\fP\^, const char *\fIaddress\fP\^, unsigned short
\fInumber_length\fP\^, const char *\fInumber\fP\^, int \fItypes_length\fP\^,
-char **\fItypes\fR\^, const int *\fItype_lengths\fR\^);
+char **\fItypes\fR\^, const int *\fItype_lengths\fR\^);
.HP
int XauLockAuth (const char *\fIfile_name\fP\^, int \fIretries\fP\^, int
-\fItimeout\fP\^, long \fIdead\fP\^);
+\fItimeout\fP\^, long \fIdead\fP\^);
.HP
-int XauUnlockAuth (const char *\fIfile_name\fP\^);
+int XauUnlockAuth (const char *\fIfile_name\fP\^);
.HP
-int XauDisposeAuth (Xauth *\fIauth\fP\^);
+int XauDisposeAuth (Xauth *\fIauth\fP\^);
.ft R
.SH DESCRIPTION
.PP
@@ -124,7 +124,7 @@ results: .fi
.PP
-\fBXauUnlockAuth\fP undoes the work of \fIXauLockAuth\fP by unlinking both
+\fBXauUnlockAuth\fP undoes the work of \fIXauLockAuth\fP by unlinking both
the ``-c'' and ``-l'' file names.
.PP
\fBXauDisposeAuth\fP frees storage allocated to hold an authorization entry.
diff --git a/libXau/man/XauDisposeAuth.man b/libXau/man/XauDisposeAuth.man new file mode 100644 index 000000000..d20306a06 --- /dev/null +++ b/libXau/man/XauDisposeAuth.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xau.__libmansuffix__
diff --git a/libXau/man/XauFileName.man b/libXau/man/XauFileName.man new file mode 100644 index 000000000..d20306a06 --- /dev/null +++ b/libXau/man/XauFileName.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xau.__libmansuffix__
diff --git a/libXau/man/XauGetAuthByAddr.man b/libXau/man/XauGetAuthByAddr.man new file mode 100644 index 000000000..d20306a06 --- /dev/null +++ b/libXau/man/XauGetAuthByAddr.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xau.__libmansuffix__
diff --git a/libXau/man/XauGetBestAuthByAddr.man b/libXau/man/XauGetBestAuthByAddr.man new file mode 100644 index 000000000..d20306a06 --- /dev/null +++ b/libXau/man/XauGetBestAuthByAddr.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xau.__libmansuffix__
diff --git a/libXau/man/XauLockAuth.man b/libXau/man/XauLockAuth.man new file mode 100644 index 000000000..d20306a06 --- /dev/null +++ b/libXau/man/XauLockAuth.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xau.__libmansuffix__
diff --git a/libXau/man/XauReadAuth.man b/libXau/man/XauReadAuth.man new file mode 100644 index 000000000..d20306a06 --- /dev/null +++ b/libXau/man/XauReadAuth.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xau.__libmansuffix__
diff --git a/libXau/man/XauUnlockAuth.man b/libXau/man/XauUnlockAuth.man new file mode 100644 index 000000000..d20306a06 --- /dev/null +++ b/libXau/man/XauUnlockAuth.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xau.__libmansuffix__
diff --git a/libXau/man/XauWriteAuth.man b/libXau/man/XauWriteAuth.man new file mode 100644 index 000000000..d20306a06 --- /dev/null +++ b/libXau/man/XauWriteAuth.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xau.__libmansuffix__
diff --git a/libXext/man/Makefile.am b/libXext/man/Makefile.am index 0b4288882..0d7c1bba5 100644 --- a/libXext/man/Makefile.am +++ b/libXext/man/Makefile.am @@ -1,74 +1,85 @@ libmandir = $(LIB_MAN_DIR)
-LIB_MAN_DIR_SUFFIX = $(LIB_MAN_DIR:@mandir@/man%=%)
-
-libman_PRE = \
- DBE.man \
- DPMSCapable.man \
- DPMSDisable.man \
- DPMSEnable.man \
- DPMSForceLevel.man \
- DPMSGetTimeouts.man \
- DPMSGetVersion.man \
- DPMSInfo.man \
- DPMSQueryExtension.man \
- DPMSSetTimeouts.man \
- XShape.man \
- XShm.man \
- XcupGetReservedColormapEntries.man \
- XcupQueryVersion.man \
- XcupStoreColors.man \
- XdbeAllocateBackBufferName.man \
- XdbeBeginIdiom.man \
- XdbeDeallocateBackBufferName.man \
- XdbeEndIdiom.man \
- XdbeFreeVisualInfo.man \
- XdbeGetBackBufferAttributes.man \
- XdbeGetVisualInfo.man \
- XdbeQueryExtension.man \
- XdbeSwapBuffers.man \
- Xevi.man \
+libman_PRE = \
+ $(all_shadows:=.man) \
+ DBE.man \
+ DPMSCapable.man \
+ DPMSDisable.man \
+ DPMSEnable.man \
+ DPMSForceLevel.man \
+ DPMSGetTimeouts.man \
+ DPMSGetVersion.man \
+ DPMSInfo.man \
+ DPMSQueryExtension.man \
+ DPMSSetTimeouts.man \
+ XShape.man \
+ XShm.man \
+ XcupGetReservedColormapEntries.man \
+ XcupQueryVersion.man \
+ XcupStoreColors.man \
+ XdbeAllocateBackBufferName.man \
+ XdbeBeginIdiom.man \
+ XdbeDeallocateBackBufferName.man \
+ XdbeEndIdiom.man \
+ XdbeFreeVisualInfo.man \
+ XdbeGetBackBufferAttributes.man \
+ XdbeGetVisualInfo.man \
+ XdbeQueryExtension.man \
+ XdbeSwapBuffers.man \
+ Xevi.man \
Xmbuf.man
-XShape_man_aliases = XShapeQueryExtension XShapeQueryVersion XShapeCombineRegion XShapeCombineRectangles XShapeCombineMask XShapeCombineShape XShapeOffsetShape XShapeQueryExtents XShapeSelectInput XShapeInputSelected XShapeGetRectangles
-
-XShm_man_aliases = XShmQueryExtension XShmQueryVersion XShmPixmapFormat XShmAttach XShmDetach XShmCreateImage XShmPutImage XShmGetImage XShmCreatePixmap XShmGetEventBase
-
-Xmbuf_man_aliases = XmbufQueryExtension XmbufGetVersion XmbufCreateBuffers XmbufDestroyBuffers XmbufDisplayBuffers XmbufGetWindowAttributes XmbufChangeWindowAttributes XmbufGetBufferAttributes XmbufChangeBufferAttributes XmbufGetScreenInfo XmbufCreateStereoWindow
-
-Xevi_man_aliases = XeviQueryVersion XeviGetVisualInfo XeviQueryExtension
-
-all_aliases = $(XShape_man_aliases) $(XShm_man_aliases) $(Xmbuf_man_aliases) $(Xevi_man_aliases)
-
-libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@) \
- $(all_aliases:=.@LIB_MAN_SUFFIX@)
+XShape_shadows = \
+ XShapeQueryExtension \
+ XShapeQueryVersion \
+ XShapeCombineRegion \
+ XShapeCombineRectangles \
+ XShapeCombineMask \
+ XShapeCombineShape \
+ XShapeOffsetShape \
+ XShapeQueryExtents \
+ XShapeSelectInput \
+ XShapeInputSelected \
+ XShapeGetRectangles
+
+XShm_shadows = \
+ XShmQueryExtension \
+ XShmQueryVersion \
+ XShmPixmapFormat \
+ XShmAttach \
+ XShmDetach \
+ XShmCreateImage \
+ XShmPutImage \
+ XShmGetImage \
+ XShmCreatePixmap \
+ XShmGetEventBase
+
+Xmbuf_shadows = \
+ XmbufQueryExtension \
+ XmbufGetVersion \
+ XmbufCreateBuffers \
+ XmbufDestroyBuffers \
+ XmbufDisplayBuffers \
+ XmbufGetWindowAttributes \
+ XmbufChangeWindowAttributes \
+ XmbufGetBufferAttributes \
+ XmbufChangeBufferAttributes \
+ XmbufGetScreenInfo \
+ XmbufCreateStereoWindow
+
+Xevi_shadows = \
+ XeviQueryVersion \
+ XeviGetVisualInfo \
+ XeviQueryExtension
+
+all_shadows = $(XShape_shadows) $(XShm_shadows) $(Xmbuf_shadows) $(Xevi_shadows)
+
+libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@)
EXTRA_DIST = $(libman_PRE)
CLEANFILES = $(libman_DATA)
-# Generate man page shadow files (Replaces InstallManPageAliases from Imake)
-
-XShape_shadowmen = $(XShape_man_aliases:=.@LIB_MAN_SUFFIX@)
-
-$(XShape_shadowmen):
- $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XShape.$(LIB_MAN_SUFFIX) > $@
-
-XShm_shadowmen = $(XShm_man_aliases:=.@LIB_MAN_SUFFIX@)
-
-$(XShm_shadowmen):
- $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/XShm.$(LIB_MAN_SUFFIX) > $@
-
-Xmbuf_shadowmen = $(Xmbuf_man_aliases:=.@LIB_MAN_SUFFIX@)
-
-$(Xmbuf_shadowmen):
- $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/Xmbuf.$(LIB_MAN_SUFFIX) > $@
-
-Xevi_shadowmen = $(Xevi_man_aliases:=.@LIB_MAN_SUFFIX@)
-
-$(Xevi_shadowmen):
- $(AM_V_GEN)echo .so man$(LIB_MAN_DIR_SUFFIX)/Xevi.$(LIB_MAN_SUFFIX) > $@
-
SUFFIXES = .$(LIB_MAN_SUFFIX) .man
# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
diff --git a/libXext/man/XShapeCombineMask.man b/libXext/man/XShapeCombineMask.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeCombineMask.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShapeCombineRectangles.man b/libXext/man/XShapeCombineRectangles.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeCombineRectangles.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShapeCombineRegion.man b/libXext/man/XShapeCombineRegion.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeCombineRegion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShapeCombineShape.man b/libXext/man/XShapeCombineShape.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeCombineShape.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShapeGetRectangles.man b/libXext/man/XShapeGetRectangles.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeGetRectangles.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShapeInputSelected.man b/libXext/man/XShapeInputSelected.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeInputSelected.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShapeOffsetShape.man b/libXext/man/XShapeOffsetShape.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeOffsetShape.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShapeQueryExtension.man b/libXext/man/XShapeQueryExtension.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeQueryExtension.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShapeQueryExtents.man b/libXext/man/XShapeQueryExtents.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeQueryExtents.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShapeQueryVersion.man b/libXext/man/XShapeQueryVersion.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeQueryVersion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShapeSelectInput.man b/libXext/man/XShapeSelectInput.man new file mode 100644 index 000000000..033600bd9 --- /dev/null +++ b/libXext/man/XShapeSelectInput.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShmAttach.man b/libXext/man/XShmAttach.man new file mode 100644 index 000000000..d2725373c --- /dev/null +++ b/libXext/man/XShmAttach.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShm.__libmansuffix__
diff --git a/libXext/man/XShmCreateImage.man b/libXext/man/XShmCreateImage.man new file mode 100644 index 000000000..d2725373c --- /dev/null +++ b/libXext/man/XShmCreateImage.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShm.__libmansuffix__
diff --git a/libXext/man/XShmCreatePixmap.man b/libXext/man/XShmCreatePixmap.man new file mode 100644 index 000000000..d2725373c --- /dev/null +++ b/libXext/man/XShmCreatePixmap.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShm.__libmansuffix__
diff --git a/libXext/man/XShmDetach.man b/libXext/man/XShmDetach.man new file mode 100644 index 000000000..d2725373c --- /dev/null +++ b/libXext/man/XShmDetach.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShm.__libmansuffix__
diff --git a/libXext/man/XShmGetEventBase.man b/libXext/man/XShmGetEventBase.man new file mode 100644 index 000000000..d2725373c --- /dev/null +++ b/libXext/man/XShmGetEventBase.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShm.__libmansuffix__
diff --git a/libXext/man/XShmGetImage.man b/libXext/man/XShmGetImage.man new file mode 100644 index 000000000..d2725373c --- /dev/null +++ b/libXext/man/XShmGetImage.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShm.__libmansuffix__
diff --git a/libXext/man/XShmPixmapFormat.man b/libXext/man/XShmPixmapFormat.man new file mode 100644 index 000000000..d2725373c --- /dev/null +++ b/libXext/man/XShmPixmapFormat.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShm.__libmansuffix__
diff --git a/libXext/man/XShmPutImage.man b/libXext/man/XShmPutImage.man new file mode 100644 index 000000000..d2725373c --- /dev/null +++ b/libXext/man/XShmPutImage.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShm.__libmansuffix__
diff --git a/libXext/man/XShmQueryExtension.man b/libXext/man/XShmQueryExtension.man new file mode 100644 index 000000000..d2725373c --- /dev/null +++ b/libXext/man/XShmQueryExtension.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShm.__libmansuffix__
diff --git a/libXext/man/XShmQueryVersion.man b/libXext/man/XShmQueryVersion.man new file mode 100644 index 000000000..d2725373c --- /dev/null +++ b/libXext/man/XShmQueryVersion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/XShm.__libmansuffix__
diff --git a/libXext/man/XeviGetVisualInfo.man b/libXext/man/XeviGetVisualInfo.man new file mode 100644 index 000000000..dae44c178 --- /dev/null +++ b/libXext/man/XeviGetVisualInfo.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xevi.__libmansuffix__
diff --git a/libXext/man/XeviQueryExtension.man b/libXext/man/XeviQueryExtension.man new file mode 100644 index 000000000..dae44c178 --- /dev/null +++ b/libXext/man/XeviQueryExtension.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xevi.__libmansuffix__
diff --git a/libXext/man/XeviQueryVersion.man b/libXext/man/XeviQueryVersion.man new file mode 100644 index 000000000..dae44c178 --- /dev/null +++ b/libXext/man/XeviQueryVersion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xevi.__libmansuffix__
diff --git a/libXext/man/XmbufChangeBufferAttributes.man b/libXext/man/XmbufChangeBufferAttributes.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufChangeBufferAttributes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXext/man/XmbufChangeWindowAttributes.man b/libXext/man/XmbufChangeWindowAttributes.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufChangeWindowAttributes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXext/man/XmbufCreateBuffers.man b/libXext/man/XmbufCreateBuffers.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufCreateBuffers.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXext/man/XmbufCreateStereoWindow.man b/libXext/man/XmbufCreateStereoWindow.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufCreateStereoWindow.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXext/man/XmbufDestroyBuffers.man b/libXext/man/XmbufDestroyBuffers.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufDestroyBuffers.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXext/man/XmbufDisplayBuffers.man b/libXext/man/XmbufDisplayBuffers.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufDisplayBuffers.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXext/man/XmbufGetBufferAttributes.man b/libXext/man/XmbufGetBufferAttributes.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufGetBufferAttributes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXext/man/XmbufGetScreenInfo.man b/libXext/man/XmbufGetScreenInfo.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufGetScreenInfo.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXext/man/XmbufGetVersion.man b/libXext/man/XmbufGetVersion.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufGetVersion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXext/man/XmbufGetWindowAttributes.man b/libXext/man/XmbufGetWindowAttributes.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufGetWindowAttributes.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXext/man/XmbufQueryExtension.man b/libXext/man/XmbufQueryExtension.man new file mode 100644 index 000000000..2a25ca646 --- /dev/null +++ b/libXext/man/XmbufQueryExtension.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXinerama/man/Makefile.am b/libXinerama/man/Makefile.am index 7d8cc3dec..312a14b93 100644 --- a/libXinerama/man/Makefile.am +++ b/libXinerama/man/Makefile.am @@ -23,32 +23,23 @@ libmandir = $(LIB_MAN_DIR)
-LIB_MAN_DIR_SUFFIX = $(LIB_MAN_DIR:@mandir@/man%=%)
-
-libman_PRE = Xinerama.man
-
-BUILT_SOURCES = $(Xinerama_shadowmen)
+libman_PRE = \
+ Xinerama.man \
+ $(Xinerama_shadows:=.man)
+
+Xinerama_shadows = \
+ XineramaQueryExtension \
+ XineramaQueryVersion \
+ XineramaIsActive \
+ XineramaQueryScreens
EXTRA_DIST = $(libman_PRE)
+CLEANFILES = $(libman_DATA)
-CLEANFILES = $(libman_DATA) $(BUILT_SOURCES)
-
-libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@) \
- $(Xinerama_shadowmen)
+libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@)
SUFFIXES = .$(LIB_MAN_SUFFIX) .man
+# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
.man.$(LIB_MAN_SUFFIX):
$(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
-
-# Generate man page shadow files (Replaces InstallManPageAliases from Imake)
-
-Xinerama_shadows = \
- XineramaQueryExtension \
- XineramaQueryVersion \
- XineramaIsActive \
- XineramaQueryScreens
-
-Xinerama_shadowmen = $(Xinerama_shadows:=.@LIB_MAN_SUFFIX@)
-$(Xinerama_shadowmen):
- $(AM_V_GEN)echo ".so man$(LIB_MAN_DIR_SUFFIX)/Xinerama.$(LIB_MAN_SUFFIX)" > $@
diff --git a/libXinerama/man/XineramaIsActive.man b/libXinerama/man/XineramaIsActive.man new file mode 100644 index 000000000..a4f83321b --- /dev/null +++ b/libXinerama/man/XineramaIsActive.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xinerama.__libmansuffix__
diff --git a/libXinerama/man/XineramaQueryExtension.man b/libXinerama/man/XineramaQueryExtension.man new file mode 100644 index 000000000..a4f83321b --- /dev/null +++ b/libXinerama/man/XineramaQueryExtension.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xinerama.__libmansuffix__
diff --git a/libXinerama/man/XineramaQueryScreens.man b/libXinerama/man/XineramaQueryScreens.man new file mode 100644 index 000000000..a4f83321b --- /dev/null +++ b/libXinerama/man/XineramaQueryScreens.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xinerama.__libmansuffix__
diff --git a/libXinerama/man/XineramaQueryVersion.man b/libXinerama/man/XineramaQueryVersion.man new file mode 100644 index 000000000..a4f83321b --- /dev/null +++ b/libXinerama/man/XineramaQueryVersion.man @@ -0,0 +1 @@ +.so man__libmansuffix__/Xinerama.__libmansuffix__
diff --git a/libxcb/NEWS b/libxcb/NEWS index 457059877..eaa31e885 100644 --- a/libxcb/NEWS +++ b/libxcb/NEWS @@ -1,414 +1,423 @@ -Release 1.6 (2010-04-09) -======================== -- darwin: xnu doesn't support poll on ttys on the master side -- Fix descriptor leak on memory error path -- Support xcb_discard_reply -- Open the X11 socket with close-on-exec flag -- Fix authentication on hpux and Hurd - -Release 1.5 (2009-12-03) -======================== -- setsockopt(SO_KEEPALIVE) on TCP display connections -- Add DRI2 support -- Fix check dependency -- Cygwin build fix: Add -no-undefined to libtool flags - -Release 1.4 (2009-07-15) -======================== -* Add majorCode, minorCode and resourceID fields to X generic error -* Fix precedence bug: wrong length for big-requests preceded by sync -* Fix libxcb-randr version info - -Release 1.3 (2009-05-29) -======================== -* Copy full IPv4 mapping (Bug #20665) -* Fix XID allocation -* Use poll() instead of select() when available -* Fix local socket connection on Hurd -* Fix XDM-AUTHORIZATION-1 -* Disable Nagle on TCP socket - -Release 1.2 (2009-02-17) -======================== -* Stop packaging auto-generated C files into tarball. - -Release 1.1.93 (2008-12-11) -=========================== -Enhancements: -* Apple: Enable support for launchd DISPLAY socket -* Treat XIDs the same as other cardinal values. - -Release 1.1.92 (2008-11-01) -=========================== -Enhancements: -* Added small fix to support trailing fixed fields; also warning for non-pad fixed fields -* Fixed overly aggressive warning about fixed field following variable -* Added generation of extern "C" for compatibility with C++ -* Remove libxcb-xlib and xcbxlib.h. -* Inline _xcb_lock_io, _xcb_unlock_io, and _xcb_wait_io. -* Track 64-bit sequence numbers internally. -* Use sequence number ranges in pending replies -* Remove duplicate XCB_EXTENSION calls for Composite extension -* Factorize m4 macros and add one to set X extensions -* Allow compile-time setting for XCB queue buffer size -* Support handing off socket write permission to external code. -* Add support for the abstract socket namespace under Linux - -Bug fixes: -* Fix tiny memory leak in read_packet -* Fix some fd leaks in _xcb_open_*() - -Release 1.1 (2007-11-04) -======================== - -This release requires xcb-proto 1.1, due to the addition of the -extension-multiword attribute to the XML schema. - -This release contains several important bug fixes, summarized below. It -also contains a patch much like Novell's libxcb-sloppy-lock.diff. -Rationale from the commit message follows. The patch and this rationale -were authored by Jamey Sharp <jamey@minilop.net>, with agreement from -Josh Triplett <josh@freedesktop.org>. - - I strongly opposed proposals like this one for a long time. - Originally I had a very good reason: libX11, when compiled to use - XCB, would crash soon after a locking correctness violation, so it - was better to have an informative assert failure than a mystifying - crash soon after. - - It took some time for me to realize that I'd changed the libX11 - implementation (for unrelated reasons) so that it could survive most - invalid locking situations, as long as it wasn't actually being used - from multiple threads concurrently. - - The other thing that has changed is that most of the code with - incorrect locking has now been fixed. The value of the assert is - accordingly lower. - - However, remaining broken callers do need to be fixed. That's why - libXCB will still noisily print a stacktrace (if possible) on each - assertion failure, even when assert isn't actually invoked to - abort() the program; and that's why aborting is still default. This - environment variable is provided only for use as a temporary - workaround for broken applications. - -Enhancements: -* Print a backtrace, if possible, on locking assertion failures. -* Skip abort() on locking assertions if LIBXCB_ALLOW_SLOPPY_LOCK is set. -* xcb_poll_for_event: Return already-read events before reading again. -* Output a configuration summary at the end of ./configure. - -Bug fixes: -* Don't hold the xlib-xcb lock while sleeping: that allows deadlock. -* Allow unix:<screen> style display names again. -* Bug #9119: test xcb_popcount -* Fix unit tests for FreeBSD -* NetBSD doesn't have AI_ADDRCONFIG: use it only if it's available. -* Require libXau >= 0.99.2; earlier versions have a broken .pc file -* Use substitition variables in xcb-xinerama.pc.in -* Update autogen.sh to one that does objdir != srcdir -* Add tools/* and autogen.sh to EXTRA_DIST. -* Doxygen can now be fully disabled if desired. - -Documentation improvements: -* Many fixes and updates to the tutorial. -* Iterators, requests, and replies get partial Doxygen documentation. - - -Release 1.0 (2006-11-23) -======================== - -The "Thanksgiving" release: We feel thankful to have it released. Five years -have passed since XCB's initial commit on September 3rd, 2001: - <http://gitweb.freedesktop.org/?p=xcb.git;a=commit;h=09e54c4a3c> - -* Support IPv6. XCB now supports displays with IPv6 addresses, with or without - enclosing square brackets, or with hosts which resolve to IPv6 addresses, by - using getaddrinfo instead of gethostbyname, and by including support for - authentication for such connections. This allows such displays as "::1:1.1". - -* XCB now uses the libpthread-stubs, to properly support optional use of - pthreads even on platforms which do not have all the necessary pthread stubs - in libc or otherwise available by default. - -* Switch from the old AM_PATH_CHECK macro to pkg-config. check 0.9.4 is now - required to build XCB's unit tests. The version that we were requiring was - not actually new enough to let our unit tests compile, and the AM_PATH_CHECK - macro is now considered deprecated. We know that versions of check using - pkg-config are new enough to work, and the check dependency was optional - anyway, so we've dropped support for older versions. - -* Provide a xcb_prefetch_maximum_request_length counterpart to - xcb_get_maximum_request_length. - -* Fix Bug #5958: zero out padding bytes in requests. - -* Change xcb_connect to pass the display number to _xcb_get_auth_info, which - passes it to get_authptr. This allows get_authptr to stop hacking the - display number out of the sockaddrs of various address families, such as - port - X_TCP_PORT, or the number after the last X in the UNIX socket path. - -* Remove --with-opt and --with-debug options from configure.ac; configure - supports the use of custom CFLAGS, so please use that instead. - -* Reove support for the <localfield> tag in protocol descriptions, since they - no longer use it, and since new protocol descriptions should not need it - either. - -* xcb-proto has no libraries or headers, so don't use XCBPROTO_CFLAGS or - XCBPROTO_LIBS. - -* XCB builds which use xdmcp now include it in Requires.private, to support - static linking. - -* Replace "long" with uint32_t when used for a 32-bit quantity - -* Various enhancements to the generation of documentation with Doxygen: - * Check for doxygen in configure.ac - * Fix some Doxygen warnings. - * Install documentation. - * Handle out-of-tree builds, with srcdir != builddir. xcb.doxygen now gets - generated from xcb.doxygen.in, so that it can use top_builddir and - top_srcdir to find source and to output documentation. - * Fill in PROJECT_NUMBER from @VERSION@, now that we have it readily - available via autoconf. - - -Release 1.0 RC3 (2006-11-02) -============================ - -Note: Version 0.9.4 of the test suite tool "check" provides a broken -version of the AM_PATH_CHECK macro, which causes autoconf to fail due to -insufficient quoting on the macro names it prints in its deprecation -message. We have written a patch to fix this problem, available at: -<http://bugs.debian.org/cgi-bin/bugreport.cgi/check-m4-am-path-check-use-quadrigraphs-in-macro-names-to-unbreak-autoconf.patch?bug=395466;msg=20;att=1> -Version 0.9.4-2 of the Debian package for check includes this patch. -Users of other distributions who want to re-autotool libxcb will need to -apply this patch, use an older version of check, or wait for a fixed -upstream version. This bug does not affect users who use the distributed -tarballs and do not re-autotool. - -* Add library support for xcb-xinerama, using new protocol description - from xcb-proto. -* In the generated protocol code, define and use constants for opcode - numbers rather than hard-coding them. -* In the API conversion script, match only XCB-namespaced XID generators - when converting to xcb_generate_id. -* Quit treating xproto specially in Makefile.am: handle it like all the - extensions. -* Generate Doxygen documentation comments in the protocol stubs, and - provide a Doxygen config file for building HTML documentation for XCB. -* Add note to xcbxlib.h that nothing except Xlib/XCB should use it. -* Extend test suite to test xcb_parse_display with NULL argument and - display in $DISPLAY. - - -Release 1.0 RC2 (2006-10-07) -============================ - -API changes ------------ - -In our announcement of XCB 1.0 RC1, we proposed two API changes for -community feedback: - - We would greatly appreciate API review in this final release - candidate period. We've had some limited feedback that our attempts - to impose static type safety on XIDs in C pose more a hindrance than - a help, so we would appreciate discussion over whether this - constitutes a "serious issue with the API". Some question also - remains of whether xcb_poll_for_event should have the out-parameter - 'error', now that XCB has a more uniform mechanism for reporting - connection errors. Speak now on these points or leave us alone. ;-) - -Since we've received feedback agreeing with our proposed changes, and no -objections or requests to keep the existing API, we made both changes -and bumped the soname to libxcb.so.1.0.0 in preparation for the release -of XCB 1.0. - -* Remove XID wrapper structures and replace them with uint32_t typedefs. - XID union types like xcb_drawable_t and xcb_fontable_t also become - uint32_t typedefs. The API conversion script now replaces xcb_*_new - with calls directly to xcb_generate_id. This change makes - xcb_generate_id part of the client API rather than the extension API, - so move xcb_generate_id from xcbext.h to xcb.h. - -* Remove the 'int *error' out-parameter for xcb_poll_for_event. - xcb_poll_for_event now shuts down the xcb_connection_t on fatal - errors; use xcb_connection_has_error to check. - -The Xlib-specific API in libxcb-xlib also changed: - -* Stop exposing the XCB IO lock for Xlib's benefit, by removing - xcb_get_io_lock from the Xlib-specific XCB API; instead, libxcb-xlib - now provides xcb_xlib_lock and xcb_xlib_unlock. - -Code generation changes ------------------------ - -* The code generator no longer implicitly imports xproto for extensions. - xcb-proto 1.0 RC2 includes the corresponding change to explicitly - import xproto in extensions that need it - -* The generated protocol headers now declare "struct foo", "union foo" - or "enum foo", not just the typedef "foo" of an unnamed - struct/union/enum type. - -Bug Fixes ---------- - -* Make Plan 7 'checked' requests work correctly. - -Documentation improvements --------------------------- - -* Document xcb_generate_id. - -* Tutorial enhancements. - - -Release 1.0 RC1 (2006-09-25) -============================ - -The Great XCB Renaming ----------------------- - -Rename API to follow a new naming convention: - -* XCB_CONSTANTS_UPPERCASE_WITH_UNDERSCORES -* xcb_functions_lowercase_with_underscores -* xcb_types_lowercase_with_underscores_and_suffix_t -* expand all abbreviations like "req", "rep", and "iter" - -Word boundaries for the names in the protocol descriptions fall: - -* Wherever the protocol descriptions already have an underscore -* Between a lowercase letter and a subsequent uppercase letter -* Before the last uppercase letter in a string of uppercase letters - followed by a lowercase letter (such as in LSBFirst between LSB and - First) -* Before and after a string of digits (with exceptions for sized types - like xcb_char2b_t and xcb_glx_float32_t to match the stdint.h - convention) - -Also fix up some particular naming issues: - -* Rename shape_op and shape_kind to drop the "shape_" prefix, since - otherwise these types end up as xcb_shape_shape_{op,kind}_t. -* Remove leading underscores from enums in the GLX protocol description, - previously needed to ensure a word separator, but now redundant. - -This renaming breaks code written for the previous API naming -convention. The scripts in XCB's tools directory will convert code -written for the old API to use the new API; they work well enough that -we used them to convert the non-program-generated code in XCB, and when -run on the old program-generated code, they almost exactly reproduce the -new program-generated code (modulo whitespace and bugs in the old code -generator). - -Authors: Vincent Torri, Thomas Hunger, Josh Triplett - -In addition to the API renaming, the library SONAMEs have changed to -libxcb.so and libxcb-extname.so. The library major version remains at 0, -to become version 1 before 1.0 is released; the SONAME lowercasing means -that this will not conflict with XCB 0.9 libraries. - -The header files have moved from /usr/include/X11/XCB/ to -/usr/include/xcb/. The XML-XCB protocol descriptions have moved to -/usr/share/xcb, with extension descriptions no longer relegated to an -extensions/ subdirectory. The API conversion script api_conv.pl will fix -references to the header files, and packages using pkg-config will -automatically use the new library names. - -Error handling Plan 7 ---------------------- - -All request functions now come in an "unchecked" and "checked" variant. -The checked variant allows callers to handle errors inline where they -obtain the reply, or by calling xcb_request_check for requests with no -reply. The unchecked variant uses the event queue for errors. Requests -with replies default to checked, because the caller must already make a -function call to retrieve the reply and can see the error at that time; -the unchecked variant uses the suffix _unchecked. Requests without -replies default to unchecked, because the caller will not necessarily -expect to handle a response, and the checked variant uses the suffix -_checked. - -Connection error handling -------------------------- - -Fatal connection errors now put the xcb_connection_t object into an -error state, at which point all further operations on that connection -will fail. Callers can use the new xcb_connection_has_error function to -check for this state in a connection. Functions that return a -connection, such as the xcb_connect function, may instead return an -xcb_connection_t already in an error state. - -In the future we expect to add additional API for getting more -information about the error condition that caused the connection to get -into an error state. - -Smaller API changes -------------------- - -All functions that have been marked 'deprecated' up to now have been -removed for this release. After XCB 1.0 is released, functions marked -'deprecated' will be preserved until the end of time to maintain -compatibility. - -XCB no longer provides a sync function. Most callers of this function -should use xcb_flush instead, which usually provides the intended -functionality and does not require a round-trip to the server. If you -really need this functionality, either use xcb_get_input_focus like sync -used to do, or use the xcb_aux_sync function from the xcb-aux library in -xcb-util. However, note that we do not consider the libraries in -xcb-util remotely stable yet. - -XCB no longer provides xcb_[extension_name]_init functions for each -extension. These functions previously caused XCB to issue and process a -QueryExtension request. Callers should now directly call -xcb_get_extension_data on the xcb_[extension_name]_id, or use -xcb_prefetch_extension_data if they do not need to force a round-trip -immediately. - -The compatibility functions in xcbxlib.h, provided solely for use by -Xlib/XCB, now exist in a separate library libxcb-xlib. We don't want to -have to change the libxcb soname if we later change or remove the Xlib -compatibility functions, and nothing except Xlib/XCB should ever use -them. (Applications which use Xlib/XCB do not need this library either; -Xlib/XCB only uses it internally.) - -The descriptions of several extensions have been updated to match the -latest versions implemented in the X.org X server. - -GIT Repository split --------------------- - -Previously, several XCB-related projects all existed under the umbrella -of a single monolithic GIT repository with per-project subdirectories. -We have split this repository into individual per-project repositories. - -Josh Triplett and Jamey Sharp wrote a tool called git-split to -accomplish this repository split. git-split reconstructs the history of -a sub-project previously stored in a subdirectory of a larger -repository. It constructs new commit objects based on the existing tree -objects for the subtree in each commit, and discards commits which do -not affect the history of the sub-project, as well as merges made -unnecessary due to these discarded commits. - -We would like to acknowledge the work of the gobby team in creating a -collaborative editor which greatly aided the development of git-split -(as well as these release notes). - -Build and implementation fixes ------------------------------- - -XCB no longer needs proto/x11 from X.org; the XCB header xproto.h -provides the definitions from X.h, named according to XCB conventions. - -XCB should now build with non-GNU implementations of Make. - -XCB properly handles 32-bit wrap of sequence numbers, and thus now -supports issuing more than 2**32 requests in one connection. - -Fixed bugs #7001, #7261. +Release 1.7 (2010-08-13)
+========================
+- Always wake up readers after writing
+- Get rid of PATH_MAX and MAXPATHLEN
+- Add ~ operator support in code generator
+- xcb_open: Improve protocol/host parsing
+- xcb_connect_to_display_with_auth_info: Fix memory leak
+- Report which extensions are being built
+
+Release 1.6 (2010-04-09)
+========================
+- darwin: xnu doesn't support poll on ttys on the master side
+- Fix descriptor leak on memory error path
+- Support xcb_discard_reply
+- Open the X11 socket with close-on-exec flag
+- Fix authentication on hpux and Hurd
+
+Release 1.5 (2009-12-03)
+========================
+- setsockopt(SO_KEEPALIVE) on TCP display connections
+- Add DRI2 support
+- Fix check dependency
+- Cygwin build fix: Add -no-undefined to libtool flags
+
+Release 1.4 (2009-07-15)
+========================
+* Add majorCode, minorCode and resourceID fields to X generic error
+* Fix precedence bug: wrong length for big-requests preceded by sync
+* Fix libxcb-randr version info
+
+Release 1.3 (2009-05-29)
+========================
+* Copy full IPv4 mapping (Bug #20665)
+* Fix XID allocation
+* Use poll() instead of select() when available
+* Fix local socket connection on Hurd
+* Fix XDM-AUTHORIZATION-1
+* Disable Nagle on TCP socket
+
+Release 1.2 (2009-02-17)
+========================
+* Stop packaging auto-generated C files into tarball.
+
+Release 1.1.93 (2008-12-11)
+===========================
+Enhancements:
+* Apple: Enable support for launchd DISPLAY socket
+* Treat XIDs the same as other cardinal values.
+
+Release 1.1.92 (2008-11-01)
+===========================
+Enhancements:
+* Added small fix to support trailing fixed fields; also warning for non-pad fixed fields
+* Fixed overly aggressive warning about fixed field following variable
+* Added generation of extern "C" for compatibility with C++
+* Remove libxcb-xlib and xcbxlib.h.
+* Inline _xcb_lock_io, _xcb_unlock_io, and _xcb_wait_io.
+* Track 64-bit sequence numbers internally.
+* Use sequence number ranges in pending replies
+* Remove duplicate XCB_EXTENSION calls for Composite extension
+* Factorize m4 macros and add one to set X extensions
+* Allow compile-time setting for XCB queue buffer size
+* Support handing off socket write permission to external code.
+* Add support for the abstract socket namespace under Linux
+
+Bug fixes:
+* Fix tiny memory leak in read_packet
+* Fix some fd leaks in _xcb_open_*()
+
+Release 1.1 (2007-11-04)
+========================
+
+This release requires xcb-proto 1.1, due to the addition of the
+extension-multiword attribute to the XML schema.
+
+This release contains several important bug fixes, summarized below. It
+also contains a patch much like Novell's libxcb-sloppy-lock.diff.
+Rationale from the commit message follows. The patch and this rationale
+were authored by Jamey Sharp <jamey@minilop.net>, with agreement from
+Josh Triplett <josh@freedesktop.org>.
+
+ I strongly opposed proposals like this one for a long time.
+ Originally I had a very good reason: libX11, when compiled to use
+ XCB, would crash soon after a locking correctness violation, so it
+ was better to have an informative assert failure than a mystifying
+ crash soon after.
+
+ It took some time for me to realize that I'd changed the libX11
+ implementation (for unrelated reasons) so that it could survive most
+ invalid locking situations, as long as it wasn't actually being used
+ from multiple threads concurrently.
+
+ The other thing that has changed is that most of the code with
+ incorrect locking has now been fixed. The value of the assert is
+ accordingly lower.
+
+ However, remaining broken callers do need to be fixed. That's why
+ libXCB will still noisily print a stacktrace (if possible) on each
+ assertion failure, even when assert isn't actually invoked to
+ abort() the program; and that's why aborting is still default. This
+ environment variable is provided only for use as a temporary
+ workaround for broken applications.
+
+Enhancements:
+* Print a backtrace, if possible, on locking assertion failures.
+* Skip abort() on locking assertions if LIBXCB_ALLOW_SLOPPY_LOCK is set.
+* xcb_poll_for_event: Return already-read events before reading again.
+* Output a configuration summary at the end of ./configure.
+
+Bug fixes:
+* Don't hold the xlib-xcb lock while sleeping: that allows deadlock.
+* Allow unix:<screen> style display names again.
+* Bug #9119: test xcb_popcount
+* Fix unit tests for FreeBSD
+* NetBSD doesn't have AI_ADDRCONFIG: use it only if it's available.
+* Require libXau >= 0.99.2; earlier versions have a broken .pc file
+* Use substitition variables in xcb-xinerama.pc.in
+* Update autogen.sh to one that does objdir != srcdir
+* Add tools/* and autogen.sh to EXTRA_DIST.
+* Doxygen can now be fully disabled if desired.
+
+Documentation improvements:
+* Many fixes and updates to the tutorial.
+* Iterators, requests, and replies get partial Doxygen documentation.
+
+
+Release 1.0 (2006-11-23)
+========================
+
+The "Thanksgiving" release: We feel thankful to have it released. Five years
+have passed since XCB's initial commit on September 3rd, 2001:
+ <http://gitweb.freedesktop.org/?p=xcb.git;a=commit;h=09e54c4a3c>
+
+* Support IPv6. XCB now supports displays with IPv6 addresses, with or without
+ enclosing square brackets, or with hosts which resolve to IPv6 addresses, by
+ using getaddrinfo instead of gethostbyname, and by including support for
+ authentication for such connections. This allows such displays as "::1:1.1".
+
+* XCB now uses the libpthread-stubs, to properly support optional use of
+ pthreads even on platforms which do not have all the necessary pthread stubs
+ in libc or otherwise available by default.
+
+* Switch from the old AM_PATH_CHECK macro to pkg-config. check 0.9.4 is now
+ required to build XCB's unit tests. The version that we were requiring was
+ not actually new enough to let our unit tests compile, and the AM_PATH_CHECK
+ macro is now considered deprecated. We know that versions of check using
+ pkg-config are new enough to work, and the check dependency was optional
+ anyway, so we've dropped support for older versions.
+
+* Provide a xcb_prefetch_maximum_request_length counterpart to
+ xcb_get_maximum_request_length.
+
+* Fix Bug #5958: zero out padding bytes in requests.
+
+* Change xcb_connect to pass the display number to _xcb_get_auth_info, which
+ passes it to get_authptr. This allows get_authptr to stop hacking the
+ display number out of the sockaddrs of various address families, such as
+ port - X_TCP_PORT, or the number after the last X in the UNIX socket path.
+
+* Remove --with-opt and --with-debug options from configure.ac; configure
+ supports the use of custom CFLAGS, so please use that instead.
+
+* Reove support for the <localfield> tag in protocol descriptions, since they
+ no longer use it, and since new protocol descriptions should not need it
+ either.
+
+* xcb-proto has no libraries or headers, so don't use XCBPROTO_CFLAGS or
+ XCBPROTO_LIBS.
+
+* XCB builds which use xdmcp now include it in Requires.private, to support
+ static linking.
+
+* Replace "long" with uint32_t when used for a 32-bit quantity
+
+* Various enhancements to the generation of documentation with Doxygen:
+ * Check for doxygen in configure.ac
+ * Fix some Doxygen warnings.
+ * Install documentation.
+ * Handle out-of-tree builds, with srcdir != builddir. xcb.doxygen now gets
+ generated from xcb.doxygen.in, so that it can use top_builddir and
+ top_srcdir to find source and to output documentation.
+ * Fill in PROJECT_NUMBER from @VERSION@, now that we have it readily
+ available via autoconf.
+
+
+Release 1.0 RC3 (2006-11-02)
+============================
+
+Note: Version 0.9.4 of the test suite tool "check" provides a broken
+version of the AM_PATH_CHECK macro, which causes autoconf to fail due to
+insufficient quoting on the macro names it prints in its deprecation
+message. We have written a patch to fix this problem, available at:
+<http://bugs.debian.org/cgi-bin/bugreport.cgi/check-m4-am-path-check-use-quadrigraphs-in-macro-names-to-unbreak-autoconf.patch?bug=395466;msg=20;att=1>
+Version 0.9.4-2 of the Debian package for check includes this patch.
+Users of other distributions who want to re-autotool libxcb will need to
+apply this patch, use an older version of check, or wait for a fixed
+upstream version. This bug does not affect users who use the distributed
+tarballs and do not re-autotool.
+
+* Add library support for xcb-xinerama, using new protocol description
+ from xcb-proto.
+* In the generated protocol code, define and use constants for opcode
+ numbers rather than hard-coding them.
+* In the API conversion script, match only XCB-namespaced XID generators
+ when converting to xcb_generate_id.
+* Quit treating xproto specially in Makefile.am: handle it like all the
+ extensions.
+* Generate Doxygen documentation comments in the protocol stubs, and
+ provide a Doxygen config file for building HTML documentation for XCB.
+* Add note to xcbxlib.h that nothing except Xlib/XCB should use it.
+* Extend test suite to test xcb_parse_display with NULL argument and
+ display in $DISPLAY.
+
+
+Release 1.0 RC2 (2006-10-07)
+============================
+
+API changes
+-----------
+
+In our announcement of XCB 1.0 RC1, we proposed two API changes for
+community feedback:
+
+ We would greatly appreciate API review in this final release
+ candidate period. We've had some limited feedback that our attempts
+ to impose static type safety on XIDs in C pose more a hindrance than
+ a help, so we would appreciate discussion over whether this
+ constitutes a "serious issue with the API". Some question also
+ remains of whether xcb_poll_for_event should have the out-parameter
+ 'error', now that XCB has a more uniform mechanism for reporting
+ connection errors. Speak now on these points or leave us alone. ;-)
+
+Since we've received feedback agreeing with our proposed changes, and no
+objections or requests to keep the existing API, we made both changes
+and bumped the soname to libxcb.so.1.0.0 in preparation for the release
+of XCB 1.0.
+
+* Remove XID wrapper structures and replace them with uint32_t typedefs.
+ XID union types like xcb_drawable_t and xcb_fontable_t also become
+ uint32_t typedefs. The API conversion script now replaces xcb_*_new
+ with calls directly to xcb_generate_id. This change makes
+ xcb_generate_id part of the client API rather than the extension API,
+ so move xcb_generate_id from xcbext.h to xcb.h.
+
+* Remove the 'int *error' out-parameter for xcb_poll_for_event.
+ xcb_poll_for_event now shuts down the xcb_connection_t on fatal
+ errors; use xcb_connection_has_error to check.
+
+The Xlib-specific API in libxcb-xlib also changed:
+
+* Stop exposing the XCB IO lock for Xlib's benefit, by removing
+ xcb_get_io_lock from the Xlib-specific XCB API; instead, libxcb-xlib
+ now provides xcb_xlib_lock and xcb_xlib_unlock.
+
+Code generation changes
+-----------------------
+
+* The code generator no longer implicitly imports xproto for extensions.
+ xcb-proto 1.0 RC2 includes the corresponding change to explicitly
+ import xproto in extensions that need it
+
+* The generated protocol headers now declare "struct foo", "union foo"
+ or "enum foo", not just the typedef "foo" of an unnamed
+ struct/union/enum type.
+
+Bug Fixes
+---------
+
+* Make Plan 7 'checked' requests work correctly.
+
+Documentation improvements
+--------------------------
+
+* Document xcb_generate_id.
+
+* Tutorial enhancements.
+
+
+Release 1.0 RC1 (2006-09-25)
+============================
+
+The Great XCB Renaming
+----------------------
+
+Rename API to follow a new naming convention:
+
+* XCB_CONSTANTS_UPPERCASE_WITH_UNDERSCORES
+* xcb_functions_lowercase_with_underscores
+* xcb_types_lowercase_with_underscores_and_suffix_t
+* expand all abbreviations like "req", "rep", and "iter"
+
+Word boundaries for the names in the protocol descriptions fall:
+
+* Wherever the protocol descriptions already have an underscore
+* Between a lowercase letter and a subsequent uppercase letter
+* Before the last uppercase letter in a string of uppercase letters
+ followed by a lowercase letter (such as in LSBFirst between LSB and
+ First)
+* Before and after a string of digits (with exceptions for sized types
+ like xcb_char2b_t and xcb_glx_float32_t to match the stdint.h
+ convention)
+
+Also fix up some particular naming issues:
+
+* Rename shape_op and shape_kind to drop the "shape_" prefix, since
+ otherwise these types end up as xcb_shape_shape_{op,kind}_t.
+* Remove leading underscores from enums in the GLX protocol description,
+ previously needed to ensure a word separator, but now redundant.
+
+This renaming breaks code written for the previous API naming
+convention. The scripts in XCB's tools directory will convert code
+written for the old API to use the new API; they work well enough that
+we used them to convert the non-program-generated code in XCB, and when
+run on the old program-generated code, they almost exactly reproduce the
+new program-generated code (modulo whitespace and bugs in the old code
+generator).
+
+Authors: Vincent Torri, Thomas Hunger, Josh Triplett
+
+In addition to the API renaming, the library SONAMEs have changed to
+libxcb.so and libxcb-extname.so. The library major version remains at 0,
+to become version 1 before 1.0 is released; the SONAME lowercasing means
+that this will not conflict with XCB 0.9 libraries.
+
+The header files have moved from /usr/include/X11/XCB/ to
+/usr/include/xcb/. The XML-XCB protocol descriptions have moved to
+/usr/share/xcb, with extension descriptions no longer relegated to an
+extensions/ subdirectory. The API conversion script api_conv.pl will fix
+references to the header files, and packages using pkg-config will
+automatically use the new library names.
+
+Error handling Plan 7
+---------------------
+
+All request functions now come in an "unchecked" and "checked" variant.
+The checked variant allows callers to handle errors inline where they
+obtain the reply, or by calling xcb_request_check for requests with no
+reply. The unchecked variant uses the event queue for errors. Requests
+with replies default to checked, because the caller must already make a
+function call to retrieve the reply and can see the error at that time;
+the unchecked variant uses the suffix _unchecked. Requests without
+replies default to unchecked, because the caller will not necessarily
+expect to handle a response, and the checked variant uses the suffix
+_checked.
+
+Connection error handling
+-------------------------
+
+Fatal connection errors now put the xcb_connection_t object into an
+error state, at which point all further operations on that connection
+will fail. Callers can use the new xcb_connection_has_error function to
+check for this state in a connection. Functions that return a
+connection, such as the xcb_connect function, may instead return an
+xcb_connection_t already in an error state.
+
+In the future we expect to add additional API for getting more
+information about the error condition that caused the connection to get
+into an error state.
+
+Smaller API changes
+-------------------
+
+All functions that have been marked 'deprecated' up to now have been
+removed for this release. After XCB 1.0 is released, functions marked
+'deprecated' will be preserved until the end of time to maintain
+compatibility.
+
+XCB no longer provides a sync function. Most callers of this function
+should use xcb_flush instead, which usually provides the intended
+functionality and does not require a round-trip to the server. If you
+really need this functionality, either use xcb_get_input_focus like sync
+used to do, or use the xcb_aux_sync function from the xcb-aux library in
+xcb-util. However, note that we do not consider the libraries in
+xcb-util remotely stable yet.
+
+XCB no longer provides xcb_[extension_name]_init functions for each
+extension. These functions previously caused XCB to issue and process a
+QueryExtension request. Callers should now directly call
+xcb_get_extension_data on the xcb_[extension_name]_id, or use
+xcb_prefetch_extension_data if they do not need to force a round-trip
+immediately.
+
+The compatibility functions in xcbxlib.h, provided solely for use by
+Xlib/XCB, now exist in a separate library libxcb-xlib. We don't want to
+have to change the libxcb soname if we later change or remove the Xlib
+compatibility functions, and nothing except Xlib/XCB should ever use
+them. (Applications which use Xlib/XCB do not need this library either;
+Xlib/XCB only uses it internally.)
+
+The descriptions of several extensions have been updated to match the
+latest versions implemented in the X.org X server.
+
+GIT Repository split
+--------------------
+
+Previously, several XCB-related projects all existed under the umbrella
+of a single monolithic GIT repository with per-project subdirectories.
+We have split this repository into individual per-project repositories.
+
+Josh Triplett and Jamey Sharp wrote a tool called git-split to
+accomplish this repository split. git-split reconstructs the history of
+a sub-project previously stored in a subdirectory of a larger
+repository. It constructs new commit objects based on the existing tree
+objects for the subtree in each commit, and discards commits which do
+not affect the history of the sub-project, as well as merges made
+unnecessary due to these discarded commits.
+
+We would like to acknowledge the work of the gobby team in creating a
+collaborative editor which greatly aided the development of git-split
+(as well as these release notes).
+
+Build and implementation fixes
+------------------------------
+
+XCB no longer needs proto/x11 from X.org; the XCB header xproto.h
+provides the definitions from X.h, named according to XCB conventions.
+
+XCB should now build with non-GNU implementations of Make.
+
+XCB properly handles 32-bit wrap of sequence numbers, and thus now
+supports issuing more than 2**32 requests in one connection.
+
+Fixed bugs #7001, #7261.
diff --git a/libxcb/configure.ac b/libxcb/configure.ac index ef71ad886..173755c2a 100644 --- a/libxcb/configure.ac +++ b/libxcb/configure.ac @@ -3,7 +3,7 @@ AC_PREREQ(2.57)
AC_INIT([libxcb],
- 1.6,
+ 1.7,
[xcb@lists.freedesktop.org])
AC_CONFIG_SRCDIR([xcb.pc.in])
AM_INIT_AUTOMAKE([foreign dist-bzip2])
diff --git a/pixman/configure.ac b/pixman/configure.ac index ae7b4ee15..be1690b3b 100644 --- a/pixman/configure.ac +++ b/pixman/configure.ac @@ -600,13 +600,23 @@ AC_SUBST(DEP_CFLAGS) AC_SUBST(DEP_LIBS)
dnl =====================================
-dnl posix_memalign
+dnl posix_memalign, sigaction, alarm
AC_CHECK_FUNC(posix_memalign, have_posix_memalign=yes, have_posix_memalign=no)
if test x$have_posix_memalign = xyes; then
AC_DEFINE(HAVE_POSIX_MEMALIGN, 1, [Whether we have posix_memalign()])
fi
+AC_CHECK_FUNC(sigaction, have_sigaction=yes, have_sigaction=no)
+if test x$have_sigaction = xyes; then
+ AC_DEFINE(HAVE_SIGACTION, 1, [Whether we have sigaction()])
+fi
+
+AC_CHECK_FUNC(alarm, have_alarm=yes, have_alarm=no)
+if test x$have_alarm = xyes; then
+ AC_DEFINE(HAVE_ALARM, 1, [Whether we have alarm()])
+fi
+
dnl =====================================
dnl Thread local storage
diff --git a/pixman/pixman/pixman-arm-neon-asm.S b/pixman/pixman/pixman-arm-neon-asm.S index 51bc347bc..18dca54ef 100644 --- a/pixman/pixman/pixman-arm-neon-asm.S +++ b/pixman/pixman/pixman-arm-neon-asm.S @@ -1,1713 +1,1806 @@ -/* - * Copyright © 2009 Nokia Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Author: Siarhei Siamashka (siarhei.siamashka@nokia.com) - */ - -/* - * This file contains implementations of NEON optimized pixel processing - * functions. There is no full and detailed tutorial, but some functions - * (those which are exposing some new or interesting features) are - * extensively commented and can be used as examples. - * - * You may want to have a look at the comments for following functions: - * - pixman_composite_over_8888_0565_asm_neon - * - pixman_composite_over_n_8_0565_asm_neon - */ - -/* Prevent the stack from becoming executable for no reason... */ -#if defined(__linux__) && defined(__ELF__) -.section .note.GNU-stack,"",%progbits -#endif - - .text - .fpu neon - .arch armv7a - .object_arch armv4 - .eabi_attribute 10, 0 /* suppress Tag_FP_arch */ - .eabi_attribute 12, 0 /* suppress Tag_Advanced_SIMD_arch */ - .arm - .altmacro - -#include "pixman-arm-neon-asm.h" - -/* Global configuration options and preferences */ - -/* - * The code can optionally make use of unaligned memory accesses to improve - * performance of handling leading/trailing pixels for each scanline. - * Configuration variable RESPECT_STRICT_ALIGNMENT can be set to 0 for - * example in linux if unaligned memory accesses are not configured to - * generate.exceptions. - */ -.set RESPECT_STRICT_ALIGNMENT, 1 - -/* - * Set default prefetch type. There is a choice between the following options: - * - * PREFETCH_TYPE_NONE (may be useful for the ARM cores where PLD is set to work - * as NOP to workaround some HW bugs or for whatever other reason) - * - * PREFETCH_TYPE_SIMPLE (may be useful for simple single-issue ARM cores where - * advanced prefetch intruduces heavy overhead) - * - * PREFETCH_TYPE_ADVANCED (useful for superscalar cores such as ARM Cortex-A8 - * which can run ARM and NEON instructions simultaneously so that extra ARM - * instructions do not add (many) extra cycles, but improve prefetch efficiency) - * - * Note: some types of function can't support advanced prefetch and fallback - * to simple one (those which handle 24bpp pixels) - */ -.set PREFETCH_TYPE_DEFAULT, PREFETCH_TYPE_ADVANCED - -/* Prefetch distance in pixels for simple prefetch */ -.set PREFETCH_DISTANCE_SIMPLE, 64 - -/* - * Implementation of pixman_composite_over_8888_0565_asm_neon - * - * This function takes a8r8g8b8 source buffer, r5g6b5 destination buffer and - * performs OVER compositing operation. Function fast_composite_over_8888_0565 - * from pixman-fast-path.c does the same in C and can be used as a reference. - * - * First we need to have some NEON assembly code which can do the actual - * operation on the pixels and provide it to the template macro. - * - * Template macro quite conveniently takes care of emitting all the necessary - * code for memory reading and writing (including quite tricky cases of - * handling unaligned leading/trailing pixels), so we only need to deal with - * the data in NEON registers. - * - * NEON registers allocation in general is recommented to be the following: - * d0, d1, d2, d3 - contain loaded source pixel data - * d4, d5, d6, d7 - contain loaded destination pixels (if they are needed) - * d24, d25, d26, d27 - contain loading mask pixel data (if mask is used) - * d28, d29, d30, d31 - place for storing the result (destination pixels) - * - * As can be seen above, four 64-bit NEON registers are used for keeping - * intermediate pixel data and up to 8 pixels can be processed in one step - * for 32bpp formats (16 pixels for 16bpp, 32 pixels for 8bpp). - * - * This particular function uses the following registers allocation: - * d0, d1, d2, d3 - contain loaded source pixel data - * d4, d5 - contain loaded destination pixels (they are needed) - * d28, d29 - place for storing the result (destination pixels) - */ - -/* - * Step one. We need to have some code to do some arithmetics on pixel data. - * This is implemented as a pair of macros: '*_head' and '*_tail'. When used - * back-to-back, they take pixel data from {d0, d1, d2, d3} and {d4, d5}, - * perform all the needed calculations and write the result to {d28, d29}. - * The rationale for having two macros and not just one will be explained - * later. In practice, any single monolitic function which does the work can - * be split into two parts in any arbitrary way without affecting correctness. - * - * There is one special trick here too. Common template macro can optionally - * make our life a bit easier by doing R, G, B, A color components - * deinterleaving for 32bpp pixel formats (and this feature is used in - * 'pixman_composite_over_8888_0565_asm_neon' function). So it means that - * instead of having 8 packed pixels in {d0, d1, d2, d3} registers, we - * actually use d0 register for blue channel (a vector of eight 8-bit - * values), d1 register for green, d2 for red and d3 for alpha. This - * simple conversion can be also done with a few NEON instructions: - * - * Packed to planar conversion: - * vuzp.8 d0, d1 - * vuzp.8 d2, d3 - * vuzp.8 d1, d3 - * vuzp.8 d0, d2 - * - * Planar to packed conversion: - * vzip.8 d0, d2 - * vzip.8 d1, d3 - * vzip.8 d2, d3 - * vzip.8 d0, d1 - * - * But pixel can be loaded directly in planar format using VLD4.8 NEON - * instruction. It is 1 cycle slower than VLD1.32, so this is not always - * desirable, that's why deinterleaving is optional. - * - * But anyway, here is the code: - */ -.macro pixman_composite_over_8888_0565_process_pixblock_head - /* convert 8 r5g6b5 pixel data from {d4, d5} to planar 8-bit format - and put data into d6 - red, d7 - green, d30 - blue */ - vshrn.u16 d6, q2, #8 - vshrn.u16 d7, q2, #3 - vsli.u16 q2, q2, #5 - vsri.u8 d6, d6, #5 - vmvn.8 d3, d3 /* invert source alpha */ - vsri.u8 d7, d7, #6 - vshrn.u16 d30, q2, #2 - /* now do alpha blending, storing results in 8-bit planar format - into d16 - red, d19 - green, d18 - blue */ - vmull.u8 q10, d3, d6 - vmull.u8 q11, d3, d7 - vmull.u8 q12, d3, d30 - vrshr.u16 q13, q10, #8 - vrshr.u16 q3, q11, #8 - vrshr.u16 q15, q12, #8 - vraddhn.u16 d20, q10, q13 - vraddhn.u16 d23, q11, q3 - vraddhn.u16 d22, q12, q15 -.endm - -.macro pixman_composite_over_8888_0565_process_pixblock_tail - /* ... continue alpha blending */ - vqadd.u8 d16, d2, d20 - vqadd.u8 q9, q0, q11 - /* convert the result to r5g6b5 and store it into {d28, d29} */ - vshll.u8 q14, d16, #8 - vshll.u8 q8, d19, #8 - vshll.u8 q9, d18, #8 - vsri.u16 q14, q8, #5 - vsri.u16 q14, q9, #11 -.endm - -/* - * OK, now we got almost everything that we need. Using the above two - * macros, the work can be done right. But now we want to optimize - * it a bit. ARM Cortex-A8 is an in-order core, and benefits really - * a lot from good code scheduling and software pipelining. - * - * Let's construct some code, which will run in the core main loop. - * Some pseudo-code of the main loop will look like this: - * head - * while (...) { - * tail - * head - * } - * tail - * - * It may look a bit weird, but this setup allows to hide instruction - * latencies better and also utilize dual-issue capability more - * efficiently (make pairs of load-store and ALU instructions). - * - * So what we need now is a '*_tail_head' macro, which will be used - * in the core main loop. A trivial straightforward implementation - * of this macro would look like this: - * - * pixman_composite_over_8888_0565_process_pixblock_tail - * vst1.16 {d28, d29}, [DST_W, :128]! - * vld1.16 {d4, d5}, [DST_R, :128]! - * vld4.32 {d0, d1, d2, d3}, [SRC]! - * pixman_composite_over_8888_0565_process_pixblock_head - * cache_preload 8, 8 - * - * Now it also got some VLD/VST instructions. We simply can't move from - * processing one block of pixels to the other one with just arithmetics. - * The previously processed data needs to be written to memory and new - * data needs to be fetched. Fortunately, this main loop does not deal - * with partial leading/trailing pixels and can load/store a full block - * of pixels in a bulk. Additionally, destination buffer is already - * 16 bytes aligned here (which is good for performance). - * - * New things here are DST_R, DST_W, SRC and MASK identifiers. These - * are the aliases for ARM registers which are used as pointers for - * accessing data. We maintain separate pointers for reading and writing - * destination buffer (DST_R and DST_W). - * - * Another new thing is 'cache_preload' macro. It is used for prefetching - * data into CPU L2 cache and improve performance when dealing with large - * images which are far larger than cache size. It uses one argument - * (actually two, but they need to be the same here) - number of pixels - * in a block. Looking into 'pixman-arm-neon-asm.h' can provide some - * details about this macro. Moreover, if good performance is needed - * the code from this macro needs to be copied into '*_tail_head' macro - * and mixed with the rest of code for optimal instructions scheduling. - * We are actually doing it below. - * - * Now after all the explanations, here is the optimized code. - * Different instruction streams (originaling from '*_head', '*_tail' - * and 'cache_preload' macro) use different indentation levels for - * better readability. Actually taking the code from one of these - * indentation levels and ignoring a few VLD/VST instructions would - * result in exactly the code from '*_head', '*_tail' or 'cache_preload' - * macro! - */ - -#if 1 - -.macro pixman_composite_over_8888_0565_process_pixblock_tail_head - vqadd.u8 d16, d2, d20 - vld1.16 {d4, d5}, [DST_R, :128]! - vqadd.u8 q9, q0, q11 - vshrn.u16 d6, q2, #8 - vld4.8 {d0, d1, d2, d3}, [SRC]! - vshrn.u16 d7, q2, #3 - vsli.u16 q2, q2, #5 - vshll.u8 q14, d16, #8 - PF add PF_X, PF_X, #8 - vshll.u8 q8, d19, #8 - PF tst PF_CTL, #0xF - vsri.u8 d6, d6, #5 - PF addne PF_X, PF_X, #8 - vmvn.8 d3, d3 - PF subne PF_CTL, PF_CTL, #1 - vsri.u8 d7, d7, #6 - vshrn.u16 d30, q2, #2 - vmull.u8 q10, d3, d6 - PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] - vmull.u8 q11, d3, d7 - vmull.u8 q12, d3, d30 - PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift] - vsri.u16 q14, q8, #5 - PF cmp PF_X, ORIG_W - vshll.u8 q9, d18, #8 - vrshr.u16 q13, q10, #8 - PF subge PF_X, PF_X, ORIG_W - vrshr.u16 q3, q11, #8 - vrshr.u16 q15, q12, #8 - PF subges PF_CTL, PF_CTL, #0x10 - vsri.u16 q14, q9, #11 - PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! - vraddhn.u16 d20, q10, q13 - vraddhn.u16 d23, q11, q3 - PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! - vraddhn.u16 d22, q12, q15 - vst1.16 {d28, d29}, [DST_W, :128]! -.endm - -#else - -/* If we did not care much about the performance, we would just use this... */ -.macro pixman_composite_over_8888_0565_process_pixblock_tail_head - pixman_composite_over_8888_0565_process_pixblock_tail - vst1.16 {d28, d29}, [DST_W, :128]! - vld1.16 {d4, d5}, [DST_R, :128]! - vld4.32 {d0, d1, d2, d3}, [SRC]! - pixman_composite_over_8888_0565_process_pixblock_head - cache_preload 8, 8 -.endm - -#endif - -/* - * And now the final part. We are using 'generate_composite_function' macro - * to put all the stuff together. We are specifying the name of the function - * which we want to get, number of bits per pixel for the source, mask and - * destination (0 if unused, like mask in this case). Next come some bit - * flags: - * FLAG_DST_READWRITE - tells that the destination buffer is both read - * and written, for write-only buffer we would use - * FLAG_DST_WRITEONLY flag instead - * FLAG_DEINTERLEAVE_32BPP - tells that we prefer to work with planar data - * and separate color channels for 32bpp format. - * The next things are: - * - the number of pixels processed per iteration (8 in this case, because - * that's the maximum what can fit into four 64-bit NEON registers). - * - prefetch distance, measured in pixel blocks. In this case it is 5 times - * by 8 pixels. That would be 40 pixels, or up to 160 bytes. Optimal - * prefetch distance can be selected by running some benchmarks. - * - * After that we specify some macros, these are 'default_init', - * 'default_cleanup' here which are empty (but it is possible to have custom - * init/cleanup macros to be able to save/restore some extra NEON registers - * like d8-d15 or do anything else) followed by - * 'pixman_composite_over_8888_0565_process_pixblock_head', - * 'pixman_composite_over_8888_0565_process_pixblock_tail' and - * 'pixman_composite_over_8888_0565_process_pixblock_tail_head' - * which we got implemented above. - * - * The last part is the NEON registers allocation scheme. - */ -generate_composite_function \ - pixman_composite_over_8888_0565_asm_neon, 32, 0, 16, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_over_8888_0565_process_pixblock_head, \ - pixman_composite_over_8888_0565_process_pixblock_tail, \ - pixman_composite_over_8888_0565_process_pixblock_tail_head, \ - 28, /* dst_w_basereg */ \ - 4, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 24 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_over_n_0565_process_pixblock_head - /* convert 8 r5g6b5 pixel data from {d4, d5} to planar 8-bit format - and put data into d6 - red, d7 - green, d30 - blue */ - vshrn.u16 d6, q2, #8 - vshrn.u16 d7, q2, #3 - vsli.u16 q2, q2, #5 - vsri.u8 d6, d6, #5 - vsri.u8 d7, d7, #6 - vshrn.u16 d30, q2, #2 - /* now do alpha blending, storing results in 8-bit planar format - into d16 - red, d19 - green, d18 - blue */ - vmull.u8 q10, d3, d6 - vmull.u8 q11, d3, d7 - vmull.u8 q12, d3, d30 - vrshr.u16 q13, q10, #8 - vrshr.u16 q3, q11, #8 - vrshr.u16 q15, q12, #8 - vraddhn.u16 d20, q10, q13 - vraddhn.u16 d23, q11, q3 - vraddhn.u16 d22, q12, q15 -.endm - -.macro pixman_composite_over_n_0565_process_pixblock_tail - /* ... continue alpha blending */ - vqadd.u8 d16, d2, d20 - vqadd.u8 q9, q0, q11 - /* convert the result to r5g6b5 and store it into {d28, d29} */ - vshll.u8 q14, d16, #8 - vshll.u8 q8, d19, #8 - vshll.u8 q9, d18, #8 - vsri.u16 q14, q8, #5 - vsri.u16 q14, q9, #11 -.endm - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_over_n_0565_process_pixblock_tail_head - pixman_composite_over_n_0565_process_pixblock_tail - vld1.16 {d4, d5}, [DST_R, :128]! - vst1.16 {d28, d29}, [DST_W, :128]! - pixman_composite_over_n_0565_process_pixblock_head -.endm - -.macro pixman_composite_over_n_0565_init - add DUMMY, sp, #ARGS_STACK_OFFSET - vld1.32 {d3[0]}, [DUMMY] - vdup.8 d0, d3[0] - vdup.8 d1, d3[1] - vdup.8 d2, d3[2] - vdup.8 d3, d3[3] - vmvn.8 d3, d3 /* invert source alpha */ -.endm - -generate_composite_function \ - pixman_composite_over_n_0565_asm_neon, 0, 0, 16, \ - FLAG_DST_READWRITE, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_over_n_0565_init, \ - default_cleanup, \ - pixman_composite_over_n_0565_process_pixblock_head, \ - pixman_composite_over_n_0565_process_pixblock_tail, \ - pixman_composite_over_n_0565_process_pixblock_tail_head, \ - 28, /* dst_w_basereg */ \ - 4, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 24 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_src_8888_0565_process_pixblock_head - vshll.u8 q8, d1, #8 - vshll.u8 q14, d2, #8 - vshll.u8 q9, d0, #8 -.endm - -.macro pixman_composite_src_8888_0565_process_pixblock_tail - vsri.u16 q14, q8, #5 - vsri.u16 q14, q9, #11 -.endm - -.macro pixman_composite_src_8888_0565_process_pixblock_tail_head - vsri.u16 q14, q8, #5 - PF add PF_X, PF_X, #8 - PF tst PF_CTL, #0xF - vld4.8 {d0, d1, d2, d3}, [SRC]! - PF addne PF_X, PF_X, #8 - PF subne PF_CTL, PF_CTL, #1 - vsri.u16 q14, q9, #11 - PF cmp PF_X, ORIG_W - PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] - vshll.u8 q8, d1, #8 - vst1.16 {d28, d29}, [DST_W, :128]! - PF subge PF_X, PF_X, ORIG_W - PF subges PF_CTL, PF_CTL, #0x10 - vshll.u8 q14, d2, #8 - PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! - vshll.u8 q9, d0, #8 -.endm - -generate_composite_function \ - pixman_composite_src_8888_0565_asm_neon, 32, 0, 16, \ - FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_src_8888_0565_process_pixblock_head, \ - pixman_composite_src_8888_0565_process_pixblock_tail, \ - pixman_composite_src_8888_0565_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_src_0565_8888_process_pixblock_head - vshrn.u16 d30, q0, #8 - vshrn.u16 d29, q0, #3 - vsli.u16 q0, q0, #5 - vmov.u8 d31, #255 - vsri.u8 d30, d30, #5 - vsri.u8 d29, d29, #6 - vshrn.u16 d28, q0, #2 -.endm - -.macro pixman_composite_src_0565_8888_process_pixblock_tail -.endm - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_src_0565_8888_process_pixblock_tail_head - pixman_composite_src_0565_8888_process_pixblock_tail - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! - vld1.16 {d0, d1}, [SRC]! - pixman_composite_src_0565_8888_process_pixblock_head - cache_preload 8, 8 -.endm - -generate_composite_function \ - pixman_composite_src_0565_8888_asm_neon, 16, 0, 32, \ - FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_src_0565_8888_process_pixblock_head, \ - pixman_composite_src_0565_8888_process_pixblock_tail, \ - pixman_composite_src_0565_8888_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_add_8000_8000_process_pixblock_head - vqadd.u8 q14, q0, q2 - vqadd.u8 q15, q1, q3 -.endm - -.macro pixman_composite_add_8000_8000_process_pixblock_tail -.endm - -.macro pixman_composite_add_8000_8000_process_pixblock_tail_head - vld1.8 {d0, d1, d2, d3}, [SRC]! - PF add PF_X, PF_X, #32 - PF tst PF_CTL, #0xF - vld1.8 {d4, d5, d6, d7}, [DST_R, :128]! - PF addne PF_X, PF_X, #32 - PF subne PF_CTL, PF_CTL, #1 - vst1.8 {d28, d29, d30, d31}, [DST_W, :128]! - PF cmp PF_X, ORIG_W - PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] - PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift] - PF subge PF_X, PF_X, ORIG_W - PF subges PF_CTL, PF_CTL, #0x10 - vqadd.u8 q14, q0, q2 - PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! - PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! - vqadd.u8 q15, q1, q3 -.endm - -generate_composite_function \ - pixman_composite_add_8000_8000_asm_neon, 8, 0, 8, \ - FLAG_DST_READWRITE, \ - 32, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_add_8000_8000_process_pixblock_head, \ - pixman_composite_add_8000_8000_process_pixblock_tail, \ - pixman_composite_add_8000_8000_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_add_8888_8888_process_pixblock_tail_head - vld1.8 {d0, d1, d2, d3}, [SRC]! - PF add PF_X, PF_X, #8 - PF tst PF_CTL, #0xF - vld1.8 {d4, d5, d6, d7}, [DST_R, :128]! - PF addne PF_X, PF_X, #8 - PF subne PF_CTL, PF_CTL, #1 - vst1.8 {d28, d29, d30, d31}, [DST_W, :128]! - PF cmp PF_X, ORIG_W - PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] - PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift] - PF subge PF_X, PF_X, ORIG_W - PF subges PF_CTL, PF_CTL, #0x10 - vqadd.u8 q14, q0, q2 - PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! - PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! - vqadd.u8 q15, q1, q3 -.endm - -generate_composite_function \ - pixman_composite_add_8888_8888_asm_neon, 32, 0, 32, \ - FLAG_DST_READWRITE, \ - 8, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_add_8000_8000_process_pixblock_head, \ - pixman_composite_add_8000_8000_process_pixblock_tail, \ - pixman_composite_add_8888_8888_process_pixblock_tail_head - -generate_composite_function_single_scanline \ - pixman_composite_scanline_add_asm_neon, 32, 0, 32, \ - FLAG_DST_READWRITE, \ - 8, /* number of pixels, processed in a single block */ \ - default_init, \ - default_cleanup, \ - pixman_composite_add_8000_8000_process_pixblock_head, \ - pixman_composite_add_8000_8000_process_pixblock_tail, \ - pixman_composite_add_8888_8888_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_over_8888_8888_process_pixblock_head - vmvn.8 d24, d3 /* get inverted alpha */ - /* do alpha blending */ - vmull.u8 q8, d24, d4 - vmull.u8 q9, d24, d5 - vmull.u8 q10, d24, d6 - vmull.u8 q11, d24, d7 -.endm - -.macro pixman_composite_over_8888_8888_process_pixblock_tail - vrshr.u16 q14, q8, #8 - vrshr.u16 q15, q9, #8 - vrshr.u16 q12, q10, #8 - vrshr.u16 q13, q11, #8 - vraddhn.u16 d28, q14, q8 - vraddhn.u16 d29, q15, q9 - vraddhn.u16 d30, q12, q10 - vraddhn.u16 d31, q13, q11 - vqadd.u8 q14, q0, q14 - vqadd.u8 q15, q1, q15 -.endm - -.macro pixman_composite_over_8888_8888_process_pixblock_tail_head - vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! - vrshr.u16 q14, q8, #8 - PF add PF_X, PF_X, #8 - PF tst PF_CTL, #0xF - vrshr.u16 q15, q9, #8 - vrshr.u16 q12, q10, #8 - vrshr.u16 q13, q11, #8 - PF addne PF_X, PF_X, #8 - PF subne PF_CTL, PF_CTL, #1 - vraddhn.u16 d28, q14, q8 - vraddhn.u16 d29, q15, q9 - PF cmp PF_X, ORIG_W - vraddhn.u16 d30, q12, q10 - vraddhn.u16 d31, q13, q11 - vqadd.u8 q14, q0, q14 - vqadd.u8 q15, q1, q15 - vld4.8 {d0, d1, d2, d3}, [SRC]! - PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] - vmvn.8 d22, d3 - PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift] - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! - PF subge PF_X, PF_X, ORIG_W - vmull.u8 q8, d22, d4 - PF subges PF_CTL, PF_CTL, #0x10 - vmull.u8 q9, d22, d5 - PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! - vmull.u8 q10, d22, d6 - PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! - vmull.u8 q11, d22, d7 -.endm - -generate_composite_function \ - pixman_composite_over_8888_8888_asm_neon, 32, 0, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_over_8888_8888_process_pixblock_head, \ - pixman_composite_over_8888_8888_process_pixblock_tail, \ - pixman_composite_over_8888_8888_process_pixblock_tail_head - -generate_composite_function_single_scanline \ - pixman_composite_scanline_over_asm_neon, 32, 0, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - default_init, \ - default_cleanup, \ - pixman_composite_over_8888_8888_process_pixblock_head, \ - pixman_composite_over_8888_8888_process_pixblock_tail, \ - pixman_composite_over_8888_8888_process_pixblock_tail_head - -/******************************************************************************/ - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_over_n_8888_process_pixblock_tail_head - pixman_composite_over_8888_8888_process_pixblock_tail - vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! - pixman_composite_over_8888_8888_process_pixblock_head -.endm - -.macro pixman_composite_over_n_8888_init - add DUMMY, sp, #ARGS_STACK_OFFSET - vld1.32 {d3[0]}, [DUMMY] - vdup.8 d0, d3[0] - vdup.8 d1, d3[1] - vdup.8 d2, d3[2] - vdup.8 d3, d3[3] -.endm - -generate_composite_function \ - pixman_composite_over_n_8888_asm_neon, 0, 0, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_over_n_8888_init, \ - default_cleanup, \ - pixman_composite_over_8888_8888_process_pixblock_head, \ - pixman_composite_over_8888_8888_process_pixblock_tail, \ - pixman_composite_over_n_8888_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_over_reverse_n_8888_process_pixblock_tail_head - vrshr.u16 q14, q8, #8 - PF add PF_X, PF_X, #8 - PF tst PF_CTL, #0xF - vrshr.u16 q15, q9, #8 - vrshr.u16 q12, q10, #8 - vrshr.u16 q13, q11, #8 - PF addne PF_X, PF_X, #8 - PF subne PF_CTL, PF_CTL, #1 - vraddhn.u16 d28, q14, q8 - vraddhn.u16 d29, q15, q9 - PF cmp PF_X, ORIG_W - vraddhn.u16 d30, q12, q10 - vraddhn.u16 d31, q13, q11 - vqadd.u8 q14, q0, q14 - vqadd.u8 q15, q1, q15 - vld4.8 {d0, d1, d2, d3}, [DST_R, :128]! - vmvn.8 d22, d3 - PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift] - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! - PF subge PF_X, PF_X, ORIG_W - vmull.u8 q8, d22, d4 - PF subges PF_CTL, PF_CTL, #0x10 - vmull.u8 q9, d22, d5 - vmull.u8 q10, d22, d6 - PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! - vmull.u8 q11, d22, d7 -.endm - -.macro pixman_composite_over_reverse_n_8888_init - add DUMMY, sp, #ARGS_STACK_OFFSET - vld1.32 {d7[0]}, [DUMMY] - vdup.8 d4, d7[0] - vdup.8 d5, d7[1] - vdup.8 d6, d7[2] - vdup.8 d7, d7[3] -.endm - -generate_composite_function \ - pixman_composite_over_reverse_n_8888_asm_neon, 0, 0, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_over_reverse_n_8888_init, \ - default_cleanup, \ - pixman_composite_over_8888_8888_process_pixblock_head, \ - pixman_composite_over_8888_8888_process_pixblock_tail, \ - pixman_composite_over_reverse_n_8888_process_pixblock_tail_head, \ - 28, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 4, /* src_basereg */ \ - 24 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_over_n_8_0565_process_pixblock_head - /* in */ - vmull.u8 q0, d24, d8 - vmull.u8 q1, d24, d9 - vmull.u8 q6, d24, d10 - vmull.u8 q7, d24, d11 - vrshr.u16 q10, q0, #8 - vrshr.u16 q11, q1, #8 - vrshr.u16 q12, q6, #8 - vrshr.u16 q13, q7, #8 - vraddhn.u16 d0, q0, q10 - vraddhn.u16 d1, q1, q11 - vraddhn.u16 d2, q6, q12 - vraddhn.u16 d3, q7, q13 - - vshrn.u16 d6, q2, #8 - vshrn.u16 d7, q2, #3 - vsli.u16 q2, q2, #5 - vsri.u8 d6, d6, #5 - vmvn.8 d3, d3 - vsri.u8 d7, d7, #6 - vshrn.u16 d30, q2, #2 - /* now do alpha blending */ - vmull.u8 q10, d3, d6 - vmull.u8 q11, d3, d7 - vmull.u8 q12, d3, d30 - vrshr.u16 q13, q10, #8 - vrshr.u16 q3, q11, #8 - vrshr.u16 q15, q12, #8 - vraddhn.u16 d20, q10, q13 - vraddhn.u16 d23, q11, q3 - vraddhn.u16 d22, q12, q15 -.endm - -.macro pixman_composite_over_n_8_0565_process_pixblock_tail - vqadd.u8 d16, d2, d20 - vqadd.u8 q9, q0, q11 - /* convert to r5g6b5 */ - vshll.u8 q14, d16, #8 - vshll.u8 q8, d19, #8 - vshll.u8 q9, d18, #8 - vsri.u16 q14, q8, #5 - vsri.u16 q14, q9, #11 -.endm - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_over_n_8_0565_process_pixblock_tail_head - pixman_composite_over_n_8_0565_process_pixblock_tail - vst1.16 {d28, d29}, [DST_W, :128]! - vld1.16 {d4, d5}, [DST_R, :128]! - vld1.8 {d24}, [MASK]! - cache_preload 8, 8 - pixman_composite_over_n_8_0565_process_pixblock_head -.endm - -/* - * This function needs a special initialization of solid mask. - * Solid source pixel data is fetched from stack at ARGS_STACK_OFFSET - * offset, split into color components and replicated in d8-d11 - * registers. Additionally, this function needs all the NEON registers, - * so it has to save d8-d15 registers which are callee saved according - * to ABI. These registers are restored from 'cleanup' macro. All the - * other NEON registers are caller saved, so can be clobbered freely - * without introducing any problems. - */ -.macro pixman_composite_over_n_8_0565_init - add DUMMY, sp, #ARGS_STACK_OFFSET - vpush {d8-d15} - vld1.32 {d11[0]}, [DUMMY] - vdup.8 d8, d11[0] - vdup.8 d9, d11[1] - vdup.8 d10, d11[2] - vdup.8 d11, d11[3] -.endm - -.macro pixman_composite_over_n_8_0565_cleanup - vpop {d8-d15} -.endm - -generate_composite_function \ - pixman_composite_over_n_8_0565_asm_neon, 0, 8, 16, \ - FLAG_DST_READWRITE, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_over_n_8_0565_init, \ - pixman_composite_over_n_8_0565_cleanup, \ - pixman_composite_over_n_8_0565_process_pixblock_head, \ - pixman_composite_over_n_8_0565_process_pixblock_tail, \ - pixman_composite_over_n_8_0565_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_src_0565_0565_process_pixblock_head -.endm - -.macro pixman_composite_src_0565_0565_process_pixblock_tail -.endm - -.macro pixman_composite_src_0565_0565_process_pixblock_tail_head - vst1.16 {d0, d1, d2, d3}, [DST_W, :128]! - vld1.16 {d0, d1, d2, d3}, [SRC]! - cache_preload 16, 16 -.endm - -generate_composite_function \ - pixman_composite_src_0565_0565_asm_neon, 16, 0, 16, \ - FLAG_DST_WRITEONLY, \ - 16, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_src_0565_0565_process_pixblock_head, \ - pixman_composite_src_0565_0565_process_pixblock_tail, \ - pixman_composite_src_0565_0565_process_pixblock_tail_head, \ - 0, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 0 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_src_n_8_process_pixblock_head -.endm - -.macro pixman_composite_src_n_8_process_pixblock_tail -.endm - -.macro pixman_composite_src_n_8_process_pixblock_tail_head - vst1.8 {d0, d1, d2, d3}, [DST_W, :128]! -.endm - -.macro pixman_composite_src_n_8_init - add DUMMY, sp, #ARGS_STACK_OFFSET - vld1.32 {d0[0]}, [DUMMY] - vsli.u64 d0, d0, #8 - vsli.u64 d0, d0, #16 - vsli.u64 d0, d0, #32 - vorr d1, d0, d0 - vorr q1, q0, q0 -.endm - -.macro pixman_composite_src_n_8_cleanup -.endm - -generate_composite_function \ - pixman_composite_src_n_8_asm_neon, 0, 0, 8, \ - FLAG_DST_WRITEONLY, \ - 32, /* number of pixels, processed in a single block */ \ - 0, /* prefetch distance */ \ - pixman_composite_src_n_8_init, \ - pixman_composite_src_n_8_cleanup, \ - pixman_composite_src_n_8_process_pixblock_head, \ - pixman_composite_src_n_8_process_pixblock_tail, \ - pixman_composite_src_n_8_process_pixblock_tail_head, \ - 0, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 0 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_src_n_0565_process_pixblock_head -.endm - -.macro pixman_composite_src_n_0565_process_pixblock_tail -.endm - -.macro pixman_composite_src_n_0565_process_pixblock_tail_head - vst1.16 {d0, d1, d2, d3}, [DST_W, :128]! -.endm - -.macro pixman_composite_src_n_0565_init - add DUMMY, sp, #ARGS_STACK_OFFSET - vld1.32 {d0[0]}, [DUMMY] - vsli.u64 d0, d0, #16 - vsli.u64 d0, d0, #32 - vorr d1, d0, d0 - vorr q1, q0, q0 -.endm - -.macro pixman_composite_src_n_0565_cleanup -.endm - -generate_composite_function \ - pixman_composite_src_n_0565_asm_neon, 0, 0, 16, \ - FLAG_DST_WRITEONLY, \ - 16, /* number of pixels, processed in a single block */ \ - 0, /* prefetch distance */ \ - pixman_composite_src_n_0565_init, \ - pixman_composite_src_n_0565_cleanup, \ - pixman_composite_src_n_0565_process_pixblock_head, \ - pixman_composite_src_n_0565_process_pixblock_tail, \ - pixman_composite_src_n_0565_process_pixblock_tail_head, \ - 0, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 0 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_src_n_8888_process_pixblock_head -.endm - -.macro pixman_composite_src_n_8888_process_pixblock_tail -.endm - -.macro pixman_composite_src_n_8888_process_pixblock_tail_head - vst1.32 {d0, d1, d2, d3}, [DST_W, :128]! -.endm - -.macro pixman_composite_src_n_8888_init - add DUMMY, sp, #ARGS_STACK_OFFSET - vld1.32 {d0[0]}, [DUMMY] - vsli.u64 d0, d0, #32 - vorr d1, d0, d0 - vorr q1, q0, q0 -.endm - -.macro pixman_composite_src_n_8888_cleanup -.endm - -generate_composite_function \ - pixman_composite_src_n_8888_asm_neon, 0, 0, 32, \ - FLAG_DST_WRITEONLY, \ - 8, /* number of pixels, processed in a single block */ \ - 0, /* prefetch distance */ \ - pixman_composite_src_n_8888_init, \ - pixman_composite_src_n_8888_cleanup, \ - pixman_composite_src_n_8888_process_pixblock_head, \ - pixman_composite_src_n_8888_process_pixblock_tail, \ - pixman_composite_src_n_8888_process_pixblock_tail_head, \ - 0, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 0 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_src_8888_8888_process_pixblock_head -.endm - -.macro pixman_composite_src_8888_8888_process_pixblock_tail -.endm - -.macro pixman_composite_src_8888_8888_process_pixblock_tail_head - vst1.32 {d0, d1, d2, d3}, [DST_W, :128]! - vld1.32 {d0, d1, d2, d3}, [SRC]! - cache_preload 8, 8 -.endm - -generate_composite_function \ - pixman_composite_src_8888_8888_asm_neon, 32, 0, 32, \ - FLAG_DST_WRITEONLY, \ - 8, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_src_8888_8888_process_pixblock_head, \ - pixman_composite_src_8888_8888_process_pixblock_tail, \ - pixman_composite_src_8888_8888_process_pixblock_tail_head, \ - 0, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 0 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_src_x888_8888_process_pixblock_head - vorr q0, q0, q2 - vorr q1, q1, q2 -.endm - -.macro pixman_composite_src_x888_8888_process_pixblock_tail -.endm - -.macro pixman_composite_src_x888_8888_process_pixblock_tail_head - vst1.32 {d0, d1, d2, d3}, [DST_W, :128]! - vld1.32 {d0, d1, d2, d3}, [SRC]! - vorr q0, q0, q2 - vorr q1, q1, q2 - cache_preload 8, 8 -.endm - -.macro pixman_composite_src_x888_8888_init - vmov.u8 q2, #0xFF - vshl.u32 q2, q2, #24 -.endm - -generate_composite_function \ - pixman_composite_src_x888_8888_asm_neon, 32, 0, 32, \ - FLAG_DST_WRITEONLY, \ - 8, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - pixman_composite_src_x888_8888_init, \ - default_cleanup, \ - pixman_composite_src_x888_8888_process_pixblock_head, \ - pixman_composite_src_x888_8888_process_pixblock_tail, \ - pixman_composite_src_x888_8888_process_pixblock_tail_head, \ - 0, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 0 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_over_n_8_8888_process_pixblock_head - /* expecting deinterleaved source data in {d8, d9, d10, d11} */ - /* d8 - blue, d9 - green, d10 - red, d11 - alpha */ - /* and destination data in {d4, d5, d6, d7} */ - /* mask is in d24 (d25, d26, d27 are unused) */ - - /* in */ - vmull.u8 q0, d24, d8 - vmull.u8 q1, d24, d9 - vmull.u8 q6, d24, d10 - vmull.u8 q7, d24, d11 - vrshr.u16 q10, q0, #8 - vrshr.u16 q11, q1, #8 - vrshr.u16 q12, q6, #8 - vrshr.u16 q13, q7, #8 - vraddhn.u16 d0, q0, q10 - vraddhn.u16 d1, q1, q11 - vraddhn.u16 d2, q6, q12 - vraddhn.u16 d3, q7, q13 - vmvn.8 d24, d3 /* get inverted alpha */ - /* source: d0 - blue, d1 - green, d2 - red, d3 - alpha */ - /* destination: d4 - blue, d5 - green, d6 - red, d7 - alpha */ - /* now do alpha blending */ - vmull.u8 q8, d24, d4 - vmull.u8 q9, d24, d5 - vmull.u8 q10, d24, d6 - vmull.u8 q11, d24, d7 -.endm - -.macro pixman_composite_over_n_8_8888_process_pixblock_tail - vrshr.u16 q14, q8, #8 - vrshr.u16 q15, q9, #8 - vrshr.u16 q12, q10, #8 - vrshr.u16 q13, q11, #8 - vraddhn.u16 d28, q14, q8 - vraddhn.u16 d29, q15, q9 - vraddhn.u16 d30, q12, q10 - vraddhn.u16 d31, q13, q11 - vqadd.u8 q14, q0, q14 - vqadd.u8 q15, q1, q15 -.endm - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_over_n_8_8888_process_pixblock_tail_head - pixman_composite_over_n_8_8888_process_pixblock_tail - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! - vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! - vld1.8 {d24}, [MASK]! - cache_preload 8, 8 - pixman_composite_over_n_8_8888_process_pixblock_head -.endm - -.macro pixman_composite_over_n_8_8888_init - add DUMMY, sp, #ARGS_STACK_OFFSET - vpush {d8-d15} - vld1.32 {d11[0]}, [DUMMY] - vdup.8 d8, d11[0] - vdup.8 d9, d11[1] - vdup.8 d10, d11[2] - vdup.8 d11, d11[3] -.endm - -.macro pixman_composite_over_n_8_8888_cleanup - vpop {d8-d15} -.endm - -generate_composite_function \ - pixman_composite_over_n_8_8888_asm_neon, 0, 8, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_over_n_8_8888_init, \ - pixman_composite_over_n_8_8888_cleanup, \ - pixman_composite_over_n_8_8888_process_pixblock_head, \ - pixman_composite_over_n_8_8888_process_pixblock_tail, \ - pixman_composite_over_n_8_8888_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_head - /* - * 'combine_mask_ca' replacement - * - * input: solid src (n) in {d8, d9, d10, d11} - * dest in {d4, d5, d6, d7 } - * mask in {d24, d25, d26, d27} - * output: updated src in {d0, d1, d2, d3 } - * updated mask in {d24, d25, d26, d3 } - */ - vmull.u8 q0, d24, d8 - vmull.u8 q1, d25, d9 - vmull.u8 q6, d26, d10 - vmull.u8 q7, d27, d11 - vmull.u8 q9, d11, d25 - vmull.u8 q12, d11, d24 - vmull.u8 q13, d11, d26 - vrshr.u16 q8, q0, #8 - vrshr.u16 q10, q1, #8 - vrshr.u16 q11, q6, #8 - vraddhn.u16 d0, q0, q8 - vraddhn.u16 d1, q1, q10 - vraddhn.u16 d2, q6, q11 - vrshr.u16 q11, q12, #8 - vrshr.u16 q8, q9, #8 - vrshr.u16 q6, q13, #8 - vrshr.u16 q10, q7, #8 - vraddhn.u16 d24, q12, q11 - vraddhn.u16 d25, q9, q8 - vraddhn.u16 d26, q13, q6 - vraddhn.u16 d3, q7, q10 - /* - * 'combine_over_ca' replacement - * - * output: updated dest in {d28, d29, d30, d31} - */ - vmvn.8 d24, d24 - vmvn.8 d25, d25 - vmull.u8 q8, d24, d4 - vmull.u8 q9, d25, d5 - vmvn.8 d26, d26 - vmvn.8 d27, d3 - vmull.u8 q10, d26, d6 - vmull.u8 q11, d27, d7 -.endm - -.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_tail - /* ... continue 'combine_over_ca' replacement */ - vrshr.u16 q14, q8, #8 - vrshr.u16 q15, q9, #8 - vrshr.u16 q6, q10, #8 - vrshr.u16 q7, q11, #8 - vraddhn.u16 d28, q14, q8 - vraddhn.u16 d29, q15, q9 - vraddhn.u16 d30, q6, q10 - vraddhn.u16 d31, q7, q11 - vqadd.u8 q14, q0, q14 - vqadd.u8 q15, q1, q15 -.endm - -.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_tail_head - vrshr.u16 q14, q8, #8 - vrshr.u16 q15, q9, #8 - vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! - vrshr.u16 q6, q10, #8 - vrshr.u16 q7, q11, #8 - vraddhn.u16 d28, q14, q8 - vraddhn.u16 d29, q15, q9 - vraddhn.u16 d30, q6, q10 - vraddhn.u16 d31, q7, q11 - vld4.8 {d24, d25, d26, d27}, [MASK]! - vqadd.u8 q14, q0, q14 - vqadd.u8 q15, q1, q15 - cache_preload 8, 8 - pixman_composite_over_n_8888_8888_ca_process_pixblock_head - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! -.endm - -.macro pixman_composite_over_n_8888_8888_ca_init - add DUMMY, sp, #ARGS_STACK_OFFSET - vpush {d8-d15} - vld1.32 {d11[0]}, [DUMMY] - vdup.8 d8, d11[0] - vdup.8 d9, d11[1] - vdup.8 d10, d11[2] - vdup.8 d11, d11[3] -.endm - -.macro pixman_composite_over_n_8888_8888_ca_cleanup - vpop {d8-d15} -.endm - -generate_composite_function \ - pixman_composite_over_n_8888_8888_ca_asm_neon, 0, 32, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_over_n_8888_8888_ca_init, \ - pixman_composite_over_n_8888_8888_ca_cleanup, \ - pixman_composite_over_n_8888_8888_ca_process_pixblock_head, \ - pixman_composite_over_n_8888_8888_ca_process_pixblock_tail, \ - pixman_composite_over_n_8888_8888_ca_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_add_n_8_8_process_pixblock_head - /* expecting source data in {d8, d9, d10, d11} */ - /* d8 - blue, d9 - green, d10 - red, d11 - alpha */ - /* and destination data in {d4, d5, d6, d7} */ - /* mask is in d24, d25, d26, d27 */ - vmull.u8 q0, d24, d11 - vmull.u8 q1, d25, d11 - vmull.u8 q6, d26, d11 - vmull.u8 q7, d27, d11 - vrshr.u16 q10, q0, #8 - vrshr.u16 q11, q1, #8 - vrshr.u16 q12, q6, #8 - vrshr.u16 q13, q7, #8 - vraddhn.u16 d0, q0, q10 - vraddhn.u16 d1, q1, q11 - vraddhn.u16 d2, q6, q12 - vraddhn.u16 d3, q7, q13 - vqadd.u8 q14, q0, q2 - vqadd.u8 q15, q1, q3 -.endm - -.macro pixman_composite_add_n_8_8_process_pixblock_tail -.endm - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_add_n_8_8_process_pixblock_tail_head - pixman_composite_add_n_8_8_process_pixblock_tail - vst1.8 {d28, d29, d30, d31}, [DST_W, :128]! - vld1.8 {d4, d5, d6, d7}, [DST_R, :128]! - vld1.8 {d24, d25, d26, d27}, [MASK]! - cache_preload 32, 32 - pixman_composite_add_n_8_8_process_pixblock_head -.endm - -.macro pixman_composite_add_n_8_8_init - add DUMMY, sp, #ARGS_STACK_OFFSET - vpush {d8-d15} - vld1.32 {d11[0]}, [DUMMY] - vdup.8 d11, d11[3] -.endm - -.macro pixman_composite_add_n_8_8_cleanup - vpop {d8-d15} -.endm - -generate_composite_function \ - pixman_composite_add_n_8_8_asm_neon, 0, 8, 8, \ - FLAG_DST_READWRITE, \ - 32, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_add_n_8_8_init, \ - pixman_composite_add_n_8_8_cleanup, \ - pixman_composite_add_n_8_8_process_pixblock_head, \ - pixman_composite_add_n_8_8_process_pixblock_tail, \ - pixman_composite_add_n_8_8_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_add_8_8_8_process_pixblock_head - /* expecting source data in {d0, d1, d2, d3} */ - /* destination data in {d4, d5, d6, d7} */ - /* mask in {d24, d25, d26, d27} */ - vmull.u8 q8, d24, d0 - vmull.u8 q9, d25, d1 - vmull.u8 q10, d26, d2 - vmull.u8 q11, d27, d3 - vrshr.u16 q0, q8, #8 - vrshr.u16 q1, q9, #8 - vrshr.u16 q12, q10, #8 - vrshr.u16 q13, q11, #8 - vraddhn.u16 d0, q0, q8 - vraddhn.u16 d1, q1, q9 - vraddhn.u16 d2, q12, q10 - vraddhn.u16 d3, q13, q11 - vqadd.u8 q14, q0, q2 - vqadd.u8 q15, q1, q3 -.endm - -.macro pixman_composite_add_8_8_8_process_pixblock_tail -.endm - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_add_8_8_8_process_pixblock_tail_head - pixman_composite_add_8_8_8_process_pixblock_tail - vst1.8 {d28, d29, d30, d31}, [DST_W, :128]! - vld1.8 {d4, d5, d6, d7}, [DST_R, :128]! - vld1.8 {d24, d25, d26, d27}, [MASK]! - vld1.8 {d0, d1, d2, d3}, [SRC]! - cache_preload 32, 32 - pixman_composite_add_8_8_8_process_pixblock_head -.endm - -.macro pixman_composite_add_8_8_8_init -.endm - -.macro pixman_composite_add_8_8_8_cleanup -.endm - -generate_composite_function \ - pixman_composite_add_8_8_8_asm_neon, 8, 8, 8, \ - FLAG_DST_READWRITE, \ - 32, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_add_8_8_8_init, \ - pixman_composite_add_8_8_8_cleanup, \ - pixman_composite_add_8_8_8_process_pixblock_head, \ - pixman_composite_add_8_8_8_process_pixblock_tail, \ - pixman_composite_add_8_8_8_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_add_8888_8888_8888_process_pixblock_head - /* expecting source data in {d0, d1, d2, d3} */ - /* destination data in {d4, d5, d6, d7} */ - /* mask in {d24, d25, d26, d27} */ - vmull.u8 q8, d27, d0 - vmull.u8 q9, d27, d1 - vmull.u8 q10, d27, d2 - vmull.u8 q11, d27, d3 - vrshr.u16 q0, q8, #8 - vrshr.u16 q1, q9, #8 - vrshr.u16 q12, q10, #8 - vrshr.u16 q13, q11, #8 - vraddhn.u16 d0, q0, q8 - vraddhn.u16 d1, q1, q9 - vraddhn.u16 d2, q12, q10 - vraddhn.u16 d3, q13, q11 - vqadd.u8 q14, q0, q2 - vqadd.u8 q15, q1, q3 -.endm - -.macro pixman_composite_add_8888_8888_8888_process_pixblock_tail -.endm - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_add_8888_8888_8888_process_pixblock_tail_head - pixman_composite_add_8888_8888_8888_process_pixblock_tail - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! - vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! - vld4.8 {d24, d25, d26, d27}, [MASK]! - vld4.8 {d0, d1, d2, d3}, [SRC]! - cache_preload 8, 8 - pixman_composite_add_8888_8888_8888_process_pixblock_head -.endm - -generate_composite_function \ - pixman_composite_add_8888_8888_8888_asm_neon, 32, 32, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_add_8888_8888_8888_process_pixblock_head, \ - pixman_composite_add_8888_8888_8888_process_pixblock_tail, \ - pixman_composite_add_8888_8888_8888_process_pixblock_tail_head - -generate_composite_function_single_scanline \ - pixman_composite_scanline_add_mask_asm_neon, 32, 32, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - default_init, \ - default_cleanup, \ - pixman_composite_add_8888_8888_8888_process_pixblock_head, \ - pixman_composite_add_8888_8888_8888_process_pixblock_tail, \ - pixman_composite_add_8888_8888_8888_process_pixblock_tail_head - -/******************************************************************************/ - -.macro pixman_composite_over_8888_n_8888_process_pixblock_head - /* expecting source data in {d0, d1, d2, d3} */ - /* destination data in {d4, d5, d6, d7} */ - /* solid mask is in d15 */ - - /* 'in' */ - vmull.u8 q8, d15, d3 - vmull.u8 q6, d15, d2 - vmull.u8 q5, d15, d1 - vmull.u8 q4, d15, d0 - vrshr.u16 q13, q8, #8 - vrshr.u16 q12, q6, #8 - vrshr.u16 q11, q5, #8 - vrshr.u16 q10, q4, #8 - vraddhn.u16 d3, q8, q13 - vraddhn.u16 d2, q6, q12 - vraddhn.u16 d1, q5, q11 - vraddhn.u16 d0, q4, q10 - vmvn.8 d24, d3 /* get inverted alpha */ - /* now do alpha blending */ - vmull.u8 q8, d24, d4 - vmull.u8 q9, d24, d5 - vmull.u8 q10, d24, d6 - vmull.u8 q11, d24, d7 -.endm - -.macro pixman_composite_over_8888_n_8888_process_pixblock_tail - vrshr.u16 q14, q8, #8 - vrshr.u16 q15, q9, #8 - vrshr.u16 q12, q10, #8 - vrshr.u16 q13, q11, #8 - vraddhn.u16 d28, q14, q8 - vraddhn.u16 d29, q15, q9 - vraddhn.u16 d30, q12, q10 - vraddhn.u16 d31, q13, q11 - vqadd.u8 q14, q0, q14 - vqadd.u8 q15, q1, q15 -.endm - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_over_8888_n_8888_process_pixblock_tail_head - vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! - pixman_composite_over_8888_n_8888_process_pixblock_tail - vld4.8 {d0, d1, d2, d3}, [SRC]! - cache_preload 8, 8 - pixman_composite_over_8888_n_8888_process_pixblock_head - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! -.endm - -.macro pixman_composite_over_8888_n_8888_init - add DUMMY, sp, #48 - vpush {d8-d15} - vld1.32 {d15[0]}, [DUMMY] - vdup.8 d15, d15[3] -.endm - -.macro pixman_composite_over_8888_n_8888_cleanup - vpop {d8-d15} -.endm - -generate_composite_function \ - pixman_composite_over_8888_n_8888_asm_neon, 32, 0, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_over_8888_n_8888_init, \ - pixman_composite_over_8888_n_8888_cleanup, \ - pixman_composite_over_8888_n_8888_process_pixblock_head, \ - pixman_composite_over_8888_n_8888_process_pixblock_tail, \ - pixman_composite_over_8888_n_8888_process_pixblock_tail_head - -/******************************************************************************/ - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_over_8888_8888_8888_process_pixblock_tail_head - vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! - pixman_composite_over_8888_n_8888_process_pixblock_tail - vld4.8 {d0, d1, d2, d3}, [SRC]! - cache_preload 8, 8 - vld4.8 {d12, d13, d14, d15}, [MASK]! - pixman_composite_over_8888_n_8888_process_pixblock_head - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! -.endm - -.macro pixman_composite_over_8888_8888_8888_init - vpush {d8-d15} -.endm - -.macro pixman_composite_over_8888_8888_8888_cleanup - vpop {d8-d15} -.endm - -generate_composite_function \ - pixman_composite_over_8888_8888_8888_asm_neon, 32, 32, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_over_8888_8888_8888_init, \ - pixman_composite_over_8888_8888_8888_cleanup, \ - pixman_composite_over_8888_n_8888_process_pixblock_head, \ - pixman_composite_over_8888_n_8888_process_pixblock_tail, \ - pixman_composite_over_8888_8888_8888_process_pixblock_tail_head \ - 28, /* dst_w_basereg */ \ - 4, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 12 /* mask_basereg */ - -generate_composite_function_single_scanline \ - pixman_composite_scanline_over_mask_asm_neon, 32, 32, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - pixman_composite_over_8888_8888_8888_init, \ - pixman_composite_over_8888_8888_8888_cleanup, \ - pixman_composite_over_8888_n_8888_process_pixblock_head, \ - pixman_composite_over_8888_n_8888_process_pixblock_tail, \ - pixman_composite_over_8888_8888_8888_process_pixblock_tail_head \ - 28, /* dst_w_basereg */ \ - 4, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 12 /* mask_basereg */ - -/******************************************************************************/ - -/* TODO: expand macros and do better instructions scheduling */ -.macro pixman_composite_over_8888_8_8888_process_pixblock_tail_head - vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! - pixman_composite_over_8888_n_8888_process_pixblock_tail - vld4.8 {d0, d1, d2, d3}, [SRC]! - cache_preload 8, 8 - vld1.8 {d15}, [MASK]! - pixman_composite_over_8888_n_8888_process_pixblock_head - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! -.endm - -.macro pixman_composite_over_8888_8_8888_init - vpush {d8-d15} -.endm - -.macro pixman_composite_over_8888_8_8888_cleanup - vpop {d8-d15} -.endm - -generate_composite_function \ - pixman_composite_over_8888_8_8888_asm_neon, 32, 8, 32, \ - FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 5, /* prefetch distance */ \ - pixman_composite_over_8888_8_8888_init, \ - pixman_composite_over_8888_8_8888_cleanup, \ - pixman_composite_over_8888_n_8888_process_pixblock_head, \ - pixman_composite_over_8888_n_8888_process_pixblock_tail, \ - pixman_composite_over_8888_8_8888_process_pixblock_tail_head \ - 28, /* dst_w_basereg */ \ - 4, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 15 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_src_0888_0888_process_pixblock_head -.endm - -.macro pixman_composite_src_0888_0888_process_pixblock_tail -.endm - -.macro pixman_composite_src_0888_0888_process_pixblock_tail_head - vst3.8 {d0, d1, d2}, [DST_W]! - vld3.8 {d0, d1, d2}, [SRC]! - cache_preload 8, 8 -.endm - -generate_composite_function \ - pixman_composite_src_0888_0888_asm_neon, 24, 0, 24, \ - FLAG_DST_WRITEONLY, \ - 8, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_src_0888_0888_process_pixblock_head, \ - pixman_composite_src_0888_0888_process_pixblock_tail, \ - pixman_composite_src_0888_0888_process_pixblock_tail_head, \ - 0, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 0 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_src_0888_8888_rev_process_pixblock_head - vswp d0, d2 -.endm - -.macro pixman_composite_src_0888_8888_rev_process_pixblock_tail -.endm - -.macro pixman_composite_src_0888_8888_rev_process_pixblock_tail_head - vst4.8 {d0, d1, d2, d3}, [DST_W]! - vld3.8 {d0, d1, d2}, [SRC]! - vswp d0, d2 - cache_preload 8, 8 -.endm - -.macro pixman_composite_src_0888_8888_rev_init - veor d3, d3, d3 -.endm - -generate_composite_function \ - pixman_composite_src_0888_8888_rev_asm_neon, 24, 0, 32, \ - FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - pixman_composite_src_0888_8888_rev_init, \ - default_cleanup, \ - pixman_composite_src_0888_8888_rev_process_pixblock_head, \ - pixman_composite_src_0888_8888_rev_process_pixblock_tail, \ - pixman_composite_src_0888_8888_rev_process_pixblock_tail_head, \ - 0, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 0 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_src_0888_0565_rev_process_pixblock_head - vshll.u8 q8, d1, #8 - vshll.u8 q9, d2, #8 -.endm - -.macro pixman_composite_src_0888_0565_rev_process_pixblock_tail - vshll.u8 q14, d0, #8 - vsri.u16 q14, q8, #5 - vsri.u16 q14, q9, #11 -.endm - -.macro pixman_composite_src_0888_0565_rev_process_pixblock_tail_head - vshll.u8 q14, d0, #8 - vld3.8 {d0, d1, d2}, [SRC]! - vsri.u16 q14, q8, #5 - vsri.u16 q14, q9, #11 - vshll.u8 q8, d1, #8 - vst1.16 {d28, d29}, [DST_W, :128]! - vshll.u8 q9, d2, #8 -.endm - -generate_composite_function \ - pixman_composite_src_0888_0565_rev_asm_neon, 24, 0, 16, \ - FLAG_DST_WRITEONLY, \ - 8, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_src_0888_0565_rev_process_pixblock_head, \ - pixman_composite_src_0888_0565_rev_process_pixblock_tail, \ - pixman_composite_src_0888_0565_rev_process_pixblock_tail_head, \ - 28, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 0 /* mask_basereg */ - -/******************************************************************************/ - -.macro pixman_composite_src_pixbuf_8888_process_pixblock_head - vmull.u8 q8, d3, d0 - vmull.u8 q9, d3, d1 - vmull.u8 q10, d3, d2 -.endm - -.macro pixman_composite_src_pixbuf_8888_process_pixblock_tail - vrshr.u16 q11, q8, #8 - vswp d3, d31 - vrshr.u16 q12, q9, #8 - vrshr.u16 q13, q10, #8 - vraddhn.u16 d30, q11, q8 - vraddhn.u16 d29, q12, q9 - vraddhn.u16 d28, q13, q10 -.endm - -.macro pixman_composite_src_pixbuf_8888_process_pixblock_tail_head - vrshr.u16 q11, q8, #8 - vswp d3, d31 - vrshr.u16 q12, q9, #8 - vrshr.u16 q13, q10, #8 - vld4.8 {d0, d1, d2, d3}, [SRC]! - vraddhn.u16 d30, q11, q8 - PF add PF_X, PF_X, #8 - PF tst PF_CTL, #0xF - PF addne PF_X, PF_X, #8 - PF subne PF_CTL, PF_CTL, #1 - vraddhn.u16 d29, q12, q9 - vraddhn.u16 d28, q13, q10 - vmull.u8 q8, d3, d0 - vmull.u8 q9, d3, d1 - vmull.u8 q10, d3, d2 - vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! - PF cmp PF_X, ORIG_W - PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] - PF subge PF_X, PF_X, ORIG_W - PF subges PF_CTL, PF_CTL, #0x10 - PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! -.endm - -generate_composite_function \ - pixman_composite_src_pixbuf_8888_asm_neon, 32, 0, 32, \ - FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \ - 8, /* number of pixels, processed in a single block */ \ - 10, /* prefetch distance */ \ - default_init, \ - default_cleanup, \ - pixman_composite_src_pixbuf_8888_process_pixblock_head, \ - pixman_composite_src_pixbuf_8888_process_pixblock_tail, \ - pixman_composite_src_pixbuf_8888_process_pixblock_tail_head, \ - 28, /* dst_w_basereg */ \ - 0, /* dst_r_basereg */ \ - 0, /* src_basereg */ \ - 0 /* mask_basereg */ +/*
+ * Copyright © 2009 Nokia Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Author: Siarhei Siamashka (siarhei.siamashka@nokia.com)
+ */
+
+/*
+ * This file contains implementations of NEON optimized pixel processing
+ * functions. There is no full and detailed tutorial, but some functions
+ * (those which are exposing some new or interesting features) are
+ * extensively commented and can be used as examples.
+ *
+ * You may want to have a look at the comments for following functions:
+ * - pixman_composite_over_8888_0565_asm_neon
+ * - pixman_composite_over_n_8_0565_asm_neon
+ */
+
+/* Prevent the stack from becoming executable for no reason... */
+#if defined(__linux__) && defined(__ELF__)
+.section .note.GNU-stack,"",%progbits
+#endif
+
+ .text
+ .fpu neon
+ .arch armv7a
+ .object_arch armv4
+ .eabi_attribute 10, 0 /* suppress Tag_FP_arch */
+ .eabi_attribute 12, 0 /* suppress Tag_Advanced_SIMD_arch */
+ .arm
+ .altmacro
+
+#include "pixman-arm-neon-asm.h"
+
+/* Global configuration options and preferences */
+
+/*
+ * The code can optionally make use of unaligned memory accesses to improve
+ * performance of handling leading/trailing pixels for each scanline.
+ * Configuration variable RESPECT_STRICT_ALIGNMENT can be set to 0 for
+ * example in linux if unaligned memory accesses are not configured to
+ * generate.exceptions.
+ */
+.set RESPECT_STRICT_ALIGNMENT, 1
+
+/*
+ * Set default prefetch type. There is a choice between the following options:
+ *
+ * PREFETCH_TYPE_NONE (may be useful for the ARM cores where PLD is set to work
+ * as NOP to workaround some HW bugs or for whatever other reason)
+ *
+ * PREFETCH_TYPE_SIMPLE (may be useful for simple single-issue ARM cores where
+ * advanced prefetch intruduces heavy overhead)
+ *
+ * PREFETCH_TYPE_ADVANCED (useful for superscalar cores such as ARM Cortex-A8
+ * which can run ARM and NEON instructions simultaneously so that extra ARM
+ * instructions do not add (many) extra cycles, but improve prefetch efficiency)
+ *
+ * Note: some types of function can't support advanced prefetch and fallback
+ * to simple one (those which handle 24bpp pixels)
+ */
+.set PREFETCH_TYPE_DEFAULT, PREFETCH_TYPE_ADVANCED
+
+/* Prefetch distance in pixels for simple prefetch */
+.set PREFETCH_DISTANCE_SIMPLE, 64
+
+/*
+ * Implementation of pixman_composite_over_8888_0565_asm_neon
+ *
+ * This function takes a8r8g8b8 source buffer, r5g6b5 destination buffer and
+ * performs OVER compositing operation. Function fast_composite_over_8888_0565
+ * from pixman-fast-path.c does the same in C and can be used as a reference.
+ *
+ * First we need to have some NEON assembly code which can do the actual
+ * operation on the pixels and provide it to the template macro.
+ *
+ * Template macro quite conveniently takes care of emitting all the necessary
+ * code for memory reading and writing (including quite tricky cases of
+ * handling unaligned leading/trailing pixels), so we only need to deal with
+ * the data in NEON registers.
+ *
+ * NEON registers allocation in general is recommented to be the following:
+ * d0, d1, d2, d3 - contain loaded source pixel data
+ * d4, d5, d6, d7 - contain loaded destination pixels (if they are needed)
+ * d24, d25, d26, d27 - contain loading mask pixel data (if mask is used)
+ * d28, d29, d30, d31 - place for storing the result (destination pixels)
+ *
+ * As can be seen above, four 64-bit NEON registers are used for keeping
+ * intermediate pixel data and up to 8 pixels can be processed in one step
+ * for 32bpp formats (16 pixels for 16bpp, 32 pixels for 8bpp).
+ *
+ * This particular function uses the following registers allocation:
+ * d0, d1, d2, d3 - contain loaded source pixel data
+ * d4, d5 - contain loaded destination pixels (they are needed)
+ * d28, d29 - place for storing the result (destination pixels)
+ */
+
+/*
+ * Step one. We need to have some code to do some arithmetics on pixel data.
+ * This is implemented as a pair of macros: '*_head' and '*_tail'. When used
+ * back-to-back, they take pixel data from {d0, d1, d2, d3} and {d4, d5},
+ * perform all the needed calculations and write the result to {d28, d29}.
+ * The rationale for having two macros and not just one will be explained
+ * later. In practice, any single monolitic function which does the work can
+ * be split into two parts in any arbitrary way without affecting correctness.
+ *
+ * There is one special trick here too. Common template macro can optionally
+ * make our life a bit easier by doing R, G, B, A color components
+ * deinterleaving for 32bpp pixel formats (and this feature is used in
+ * 'pixman_composite_over_8888_0565_asm_neon' function). So it means that
+ * instead of having 8 packed pixels in {d0, d1, d2, d3} registers, we
+ * actually use d0 register for blue channel (a vector of eight 8-bit
+ * values), d1 register for green, d2 for red and d3 for alpha. This
+ * simple conversion can be also done with a few NEON instructions:
+ *
+ * Packed to planar conversion:
+ * vuzp.8 d0, d1
+ * vuzp.8 d2, d3
+ * vuzp.8 d1, d3
+ * vuzp.8 d0, d2
+ *
+ * Planar to packed conversion:
+ * vzip.8 d0, d2
+ * vzip.8 d1, d3
+ * vzip.8 d2, d3
+ * vzip.8 d0, d1
+ *
+ * But pixel can be loaded directly in planar format using VLD4.8 NEON
+ * instruction. It is 1 cycle slower than VLD1.32, so this is not always
+ * desirable, that's why deinterleaving is optional.
+ *
+ * But anyway, here is the code:
+ */
+.macro pixman_composite_over_8888_0565_process_pixblock_head
+ /* convert 8 r5g6b5 pixel data from {d4, d5} to planar 8-bit format
+ and put data into d6 - red, d7 - green, d30 - blue */
+ vshrn.u16 d6, q2, #8
+ vshrn.u16 d7, q2, #3
+ vsli.u16 q2, q2, #5
+ vsri.u8 d6, d6, #5
+ vmvn.8 d3, d3 /* invert source alpha */
+ vsri.u8 d7, d7, #6
+ vshrn.u16 d30, q2, #2
+ /* now do alpha blending, storing results in 8-bit planar format
+ into d16 - red, d19 - green, d18 - blue */
+ vmull.u8 q10, d3, d6
+ vmull.u8 q11, d3, d7
+ vmull.u8 q12, d3, d30
+ vrshr.u16 q13, q10, #8
+ vrshr.u16 q3, q11, #8
+ vrshr.u16 q15, q12, #8
+ vraddhn.u16 d20, q10, q13
+ vraddhn.u16 d23, q11, q3
+ vraddhn.u16 d22, q12, q15
+.endm
+
+.macro pixman_composite_over_8888_0565_process_pixblock_tail
+ /* ... continue alpha blending */
+ vqadd.u8 d16, d2, d20
+ vqadd.u8 q9, q0, q11
+ /* convert the result to r5g6b5 and store it into {d28, d29} */
+ vshll.u8 q14, d16, #8
+ vshll.u8 q8, d19, #8
+ vshll.u8 q9, d18, #8
+ vsri.u16 q14, q8, #5
+ vsri.u16 q14, q9, #11
+.endm
+
+/*
+ * OK, now we got almost everything that we need. Using the above two
+ * macros, the work can be done right. But now we want to optimize
+ * it a bit. ARM Cortex-A8 is an in-order core, and benefits really
+ * a lot from good code scheduling and software pipelining.
+ *
+ * Let's construct some code, which will run in the core main loop.
+ * Some pseudo-code of the main loop will look like this:
+ * head
+ * while (...) {
+ * tail
+ * head
+ * }
+ * tail
+ *
+ * It may look a bit weird, but this setup allows to hide instruction
+ * latencies better and also utilize dual-issue capability more
+ * efficiently (make pairs of load-store and ALU instructions).
+ *
+ * So what we need now is a '*_tail_head' macro, which will be used
+ * in the core main loop. A trivial straightforward implementation
+ * of this macro would look like this:
+ *
+ * pixman_composite_over_8888_0565_process_pixblock_tail
+ * vst1.16 {d28, d29}, [DST_W, :128]!
+ * vld1.16 {d4, d5}, [DST_R, :128]!
+ * vld4.32 {d0, d1, d2, d3}, [SRC]!
+ * pixman_composite_over_8888_0565_process_pixblock_head
+ * cache_preload 8, 8
+ *
+ * Now it also got some VLD/VST instructions. We simply can't move from
+ * processing one block of pixels to the other one with just arithmetics.
+ * The previously processed data needs to be written to memory and new
+ * data needs to be fetched. Fortunately, this main loop does not deal
+ * with partial leading/trailing pixels and can load/store a full block
+ * of pixels in a bulk. Additionally, destination buffer is already
+ * 16 bytes aligned here (which is good for performance).
+ *
+ * New things here are DST_R, DST_W, SRC and MASK identifiers. These
+ * are the aliases for ARM registers which are used as pointers for
+ * accessing data. We maintain separate pointers for reading and writing
+ * destination buffer (DST_R and DST_W).
+ *
+ * Another new thing is 'cache_preload' macro. It is used for prefetching
+ * data into CPU L2 cache and improve performance when dealing with large
+ * images which are far larger than cache size. It uses one argument
+ * (actually two, but they need to be the same here) - number of pixels
+ * in a block. Looking into 'pixman-arm-neon-asm.h' can provide some
+ * details about this macro. Moreover, if good performance is needed
+ * the code from this macro needs to be copied into '*_tail_head' macro
+ * and mixed with the rest of code for optimal instructions scheduling.
+ * We are actually doing it below.
+ *
+ * Now after all the explanations, here is the optimized code.
+ * Different instruction streams (originaling from '*_head', '*_tail'
+ * and 'cache_preload' macro) use different indentation levels for
+ * better readability. Actually taking the code from one of these
+ * indentation levels and ignoring a few VLD/VST instructions would
+ * result in exactly the code from '*_head', '*_tail' or 'cache_preload'
+ * macro!
+ */
+
+#if 1
+
+.macro pixman_composite_over_8888_0565_process_pixblock_tail_head
+ vqadd.u8 d16, d2, d20
+ vld1.16 {d4, d5}, [DST_R, :128]!
+ vqadd.u8 q9, q0, q11
+ vshrn.u16 d6, q2, #8
+ vld4.8 {d0, d1, d2, d3}, [SRC]!
+ vshrn.u16 d7, q2, #3
+ vsli.u16 q2, q2, #5
+ vshll.u8 q14, d16, #8
+ PF add PF_X, PF_X, #8
+ vshll.u8 q8, d19, #8
+ PF tst PF_CTL, #0xF
+ vsri.u8 d6, d6, #5
+ PF addne PF_X, PF_X, #8
+ vmvn.8 d3, d3
+ PF subne PF_CTL, PF_CTL, #1
+ vsri.u8 d7, d7, #6
+ vshrn.u16 d30, q2, #2
+ vmull.u8 q10, d3, d6
+ PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
+ vmull.u8 q11, d3, d7
+ vmull.u8 q12, d3, d30
+ PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift]
+ vsri.u16 q14, q8, #5
+ PF cmp PF_X, ORIG_W
+ vshll.u8 q9, d18, #8
+ vrshr.u16 q13, q10, #8
+ PF subge PF_X, PF_X, ORIG_W
+ vrshr.u16 q3, q11, #8
+ vrshr.u16 q15, q12, #8
+ PF subges PF_CTL, PF_CTL, #0x10
+ vsri.u16 q14, q9, #11
+ PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
+ vraddhn.u16 d20, q10, q13
+ vraddhn.u16 d23, q11, q3
+ PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
+ vraddhn.u16 d22, q12, q15
+ vst1.16 {d28, d29}, [DST_W, :128]!
+.endm
+
+#else
+
+/* If we did not care much about the performance, we would just use this... */
+.macro pixman_composite_over_8888_0565_process_pixblock_tail_head
+ pixman_composite_over_8888_0565_process_pixblock_tail
+ vst1.16 {d28, d29}, [DST_W, :128]!
+ vld1.16 {d4, d5}, [DST_R, :128]!
+ vld4.32 {d0, d1, d2, d3}, [SRC]!
+ pixman_composite_over_8888_0565_process_pixblock_head
+ cache_preload 8, 8
+.endm
+
+#endif
+
+/*
+ * And now the final part. We are using 'generate_composite_function' macro
+ * to put all the stuff together. We are specifying the name of the function
+ * which we want to get, number of bits per pixel for the source, mask and
+ * destination (0 if unused, like mask in this case). Next come some bit
+ * flags:
+ * FLAG_DST_READWRITE - tells that the destination buffer is both read
+ * and written, for write-only buffer we would use
+ * FLAG_DST_WRITEONLY flag instead
+ * FLAG_DEINTERLEAVE_32BPP - tells that we prefer to work with planar data
+ * and separate color channels for 32bpp format.
+ * The next things are:
+ * - the number of pixels processed per iteration (8 in this case, because
+ * that's the maximum what can fit into four 64-bit NEON registers).
+ * - prefetch distance, measured in pixel blocks. In this case it is 5 times
+ * by 8 pixels. That would be 40 pixels, or up to 160 bytes. Optimal
+ * prefetch distance can be selected by running some benchmarks.
+ *
+ * After that we specify some macros, these are 'default_init',
+ * 'default_cleanup' here which are empty (but it is possible to have custom
+ * init/cleanup macros to be able to save/restore some extra NEON registers
+ * like d8-d15 or do anything else) followed by
+ * 'pixman_composite_over_8888_0565_process_pixblock_head',
+ * 'pixman_composite_over_8888_0565_process_pixblock_tail' and
+ * 'pixman_composite_over_8888_0565_process_pixblock_tail_head'
+ * which we got implemented above.
+ *
+ * The last part is the NEON registers allocation scheme.
+ */
+generate_composite_function \
+ pixman_composite_over_8888_0565_asm_neon, 32, 0, 16, \
+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
+ 8, /* number of pixels, processed in a single block */ \
+ 5, /* prefetch distance */ \
+ default_init, \
+ default_cleanup, \
+ pixman_composite_over_8888_0565_process_pixblock_head, \
+ pixman_composite_over_8888_0565_process_pixblock_tail, \
+ pixman_composite_over_8888_0565_process_pixblock_tail_head, \
+ 28, /* dst_w_basereg */ \
+ 4, /* dst_r_basereg */ \
+ 0, /* src_basereg */ \
+ 24 /* mask_basereg */
+
+/******************************************************************************/
+
+.macro pixman_composite_over_n_0565_process_pixblock_head
+ /* convert 8 r5g6b5 pixel data from {d4, d5} to planar 8-bit format
+ and put data into d6 - red, d7 - green, d30 - blue */
+ vshrn.u16 d6, q2, #8
+ vshrn.u16 d7, q2, #3
+ vsli.u16 q2, q2, #5
+ vsri.u8 d6, d6, #5
+ vsri.u8 d7, d7, #6
+ vshrn.u16 d30, q2, #2
+ /* now do alpha blending, storing results in 8-bit planar format
+ into d16 - red, d19 - green, d18 - blue */
+ vmull.u8 q10, d3, d6
+ vmull.u8 q11, d3, d7
+ vmull.u8 q12, d3, d30
+ vrshr.u16 q13, q10, #8
+ vrshr.u16 q3, q11, #8
+ vrshr.u16 q15, q12, #8
+ vraddhn.u16 d20, q10, q13
+ vraddhn.u16 d23, q11, q3
+ vraddhn.u16 d22, q12, q15
+.endm
+
+.macro pixman_composite_over_n_0565_process_pixblock_tail
+ /* ... continue alpha blending */
+ vqadd.u8 d16, d2, d20
+ vqadd.u8 q9, q0, q11
+ /* convert the result to r5g6b5 and store it into {d28, d29} */
+ vshll.u8 q14, d16, #8
+ vshll.u8 q8, d19, #8
+ vshll.u8 q9, d18, #8
+ vsri.u16 q14, q8, #5
+ vsri.u16 q14, q9, #11
+.endm
+
+/* TODO: expand macros and do better instructions scheduling */
+.macro pixman_composite_over_n_0565_process_pixblock_tail_head
+ pixman_composite_over_n_0565_process_pixblock_tail
+ vld1.16 {d4, d5}, [DST_R, :128]!
+ vst1.16 {d28, d29}, [DST_W, :128]!
+ pixman_composite_over_n_0565_process_pixblock_head
+.endm
+
+.macro pixman_composite_over_n_0565_init
+ add DUMMY, sp, #ARGS_STACK_OFFSET
+ vld1.32 {d3[0]}, [DUMMY]
+ vdup.8 d0, d3[0]
+ vdup.8 d1, d3[1]
+ vdup.8 d2, d3[2]
+ vdup.8 d3, d3[3]
+ vmvn.8 d3, d3 /* invert source alpha */
+.endm
+
+generate_composite_function \
+ pixman_composite_over_n_0565_asm_neon, 0, 0, 16, \
+ FLAG_DST_READWRITE, \
+ 8, /* number of pixels, processed in a single block */ \
+ 5, /* prefetch distance */ \
+ pixman_composite_over_n_0565_init, \
+ default_cleanup, \
+ pixman_composite_over_n_0565_process_pixblock_head, \
+ pixman_composite_over_n_0565_process_pixblock_tail, \
+ pixman_composite_over_n_0565_process_pixblock_tail_head, \
+ 28, /* dst_w_basereg */ \
+ 4, /* dst_r_basereg */ \
+ 0, /* src_basereg */ \
+ 24 /* mask_basereg */
+
+/******************************************************************************/
+
+.macro pixman_composite_src_8888_0565_process_pixblock_head
+ vshll.u8 q8, d1, #8
+ vshll.u8 q14, d2, #8
+ vshll.u8 q9, d0, #8
+.endm
+
+.macro pixman_composite_src_8888_0565_process_pixblock_tail
+ vsri.u16 q14, q8, #5
+ vsri.u16 q14, q9, #11
+.endm
+
+.macro pixman_composite_src_8888_0565_process_pixblock_tail_head
+ vsri.u16 q14, q8, #5
+ PF add PF_X, PF_X, #8
+ PF tst PF_CTL, #0xF
+ vld4.8 {d0, d1, d2, d3}, [SRC]!
+ PF addne PF_X, PF_X, #8
+ PF subne PF_CTL, PF_CTL, #1
+ vsri.u16 q14, q9, #11
+ PF cmp PF_X, ORIG_W
+ PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
+ vshll.u8 q8, d1, #8
+ vst1.16 {d28, d29}, [DST_W, :128]!
+ PF subge PF_X, PF_X, ORIG_W
+ PF subges PF_CTL, PF_CTL, #0x10
+ vshll.u8 q14, d2, #8
+ PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
+ vshll.u8 q9, d0, #8
+.endm
+
+generate_composite_function \
+ pixman_composite_src_8888_0565_asm_neon, 32, 0, 16, \
+ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
+ 8, /* number of pixels, processed in a single block */ \
+ 10, /* prefetch distance */ \
+ default_init, \
+ default_cleanup, \
+ pixman_composite_src_8888_0565_process_pixblock_head, \
+ pixman_composite_src_8888_0565_process_pixblock_tail, \
+ pixman_composite_src_8888_0565_process_pixblock_tail_head
+
+/******************************************************************************/
+
+.macro pixman_composite_src_0565_8888_process_pixblock_head
+ vshrn.u16 d30, q0, #8
+ vshrn.u16 d29, q0, #3
+ vsli.u16 q0, q0, #5
+ vmov.u8 d31, #255
+ vsri.u8 d30, d30, #5
+ vsri.u8 d29, d29, #6
+ vshrn.u16 d28, q0, #2
+.endm
+
+.macro pixman_composite_src_0565_8888_process_pixblock_tail
+.endm
+
+/* TODO: expand macros and do better instructions scheduling */
+.macro pixman_composite_src_0565_8888_process_pixblock_tail_head
+ pixman_composite_src_0565_8888_process_pixblock_tail
+ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]!
+ vld1.16 {d0, d1}, [SRC]!
+ pixman_composite_src_0565_8888_process_pixblock_head
+ cache_preload 8, 8
+.endm
+
+generate_composite_function \
+ pixman_composite_src_0565_8888_asm_neon, 16, 0, 32, \
+ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
+ 8, /* number of pixels, processed in a single block */ \
+ 10, /* prefetch distance */ \
+ default_init, \
+ default_cleanup, \
+ pixman_composite_src_0565_8888_process_pixblock_head, \
+ pixman_composite_src_0565_8888_process_pixblock_tail, \
+ pixman_composite_src_0565_8888_process_pixblock_tail_head
+
+/******************************************************************************/
+
+.macro pixman_composite_add_8000_8000_process_pixblock_head
+ vqadd.u8 q14, q0, q2
+ vqadd.u8 q15, q1, q3
+.endm
+
+.macro pixman_composite_add_8000_8000_process_pixblock_tail
+.endm
+
+.macro pixman_composite_add_8000_8000_process_pixblock_tail_head
+ vld1.8 {d0, d1, d2, d3}, [SRC]!
+ PF add PF_X, PF_X, #32
+ PF tst PF_CTL, #0xF
+ vld1.8 {d4, d5, d6, d7}, [DST_R, :128]!
+ PF addne PF_X, PF_X, #32
+ PF subne PF_CTL, PF_CTL, #1
+ vst1.8 {d28, d29, d30, d31}, [DST_W, :128]!
+ PF cmp PF_X, ORIG_W
+ PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
+ PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift]
+ PF subge PF_X, PF_X, ORIG_W
+ PF subges PF_CTL, PF_CTL, #0x10
+ vqadd.u8 q14, q0, q2
+ PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
+ PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
+ vqadd.u8 q15, q1, q3
+.endm
+
+generate_composite_function \
+ pixman_composite_add_8000_8000_asm_neon, 8, 0, 8, \
+ FLAG_DST_READWRITE, \
+ 32, /* number of pixels, processed in a single block */ \
+ 10, /* prefetch distance */ \
+ default_init, \
+ default_cleanup, \
+ pixman_composite_add_8000_8000_process_pixblock_head, \
+ pixman_composite_add_8000_8000_process_pixblock_tail, \
+ pixman_composite_add_8000_8000_process_pixblock_tail_head
+
+/******************************************************************************/
+
+.macro pixman_composite_add_8888_8888_process_pixblock_tail_head
+ vld1.8 {d0, d1, d2, d3}, [SRC]!
+ PF add PF_X, PF_X, #8
+ PF tst PF_CTL, #0xF
+ vld1.8 {d4, d5, d6, d7}, [DST_R, :128]!
+ PF addne PF_X, PF_X, #8
+ PF subne PF_CTL, PF_CTL, #1
+ vst1.8 {d28, d29, d30, d31}, [DST_W, :128]!
+ PF cmp PF_X, ORIG_W
+ PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
+ PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift]
+ PF subge PF_X, PF_X, ORIG_W
+ PF subges PF_CTL, PF_CTL, #0x10
+ vqadd.u8 q14, q0, q2
+ PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
+ PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
+ vqadd.u8 q15, q1, q3
+.endm
+
+generate_composite_function \
+ pixman_composite_add_8888_8888_asm_neon, 32, 0, 32, \
+ FLAG_DST_READWRITE, \
+ 8, /* number of pixels, processed in a single block */ \
+ 10, /* prefetch distance */ \
+ default_init, \
+ default_cleanup, \
+ pixman_composite_add_8000_8000_process_pixblock_head, \
+ pixman_composite_add_8000_8000_process_pixblock_tail, \
+ pixman_composite_add_8888_8888_process_pixblock_tail_head
+
+generate_composite_function_single_scanline \
+ pixman_composite_scanline_add_asm_neon, 32, 0, 32, \
+ FLAG_DST_READWRITE, \
+ 8, /* number of pixels, processed in a single block */ \
+ default_init, \
+ default_cleanup, \
+ pixman_composite_add_8000_8000_process_pixblock_head, \
+ pixman_composite_add_8000_8000_process_pixblock_tail, \
+ pixman_composite_add_8888_8888_process_pixblock_tail_head
+
+/******************************************************************************/
+
+.macro pixman_composite_out_reverse_8888_8888_process_pixblock_head
+ vmvn.8 d24, d3 /* get inverted alpha */
+ /* do alpha blending */
+ vmull.u8 q8, d24, d4
+ vmull.u8 q9, d24, d5
+ vmull.u8 q10, d24, d6
+ vmull.u8 q11, d24, d7
+.endm
+
+.macro pixman_composite_out_reverse_8888_8888_process_pixblock_tail
+ vrshr.u16 q14, q8, #8
+ vrshr.u16 q15, q9, #8
+ vrshr.u16 q12, q10, #8
+ vrshr.u16 q13, q11, #8
+ vraddhn.u16 d28, q14, q8
+ vraddhn.u16 d29, q15, q9
+ vraddhn.u16 d30, q12, q10
+ vraddhn.u16 d31, q13, q11
+.endm
+
+.macro pixman_composite_out_reverse_8888_8888_process_pixblock_tail_head
+ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]!
+ vrshr.u16 q14, q8, #8
+ PF add PF_X, PF_X, #8
+ PF tst PF_CTL, #0xF
+ vrshr.u16 q15, q9, #8
+ vrshr.u16 q12, q10, #8
+ vrshr.u16 q13, q11, #8
+ PF addne PF_X, PF_X, #8
+ PF subne PF_CTL, PF_CTL, #1
+ vraddhn.u16 d28, q14, q8
+ vraddhn.u16 d29, q15, q9
+ PF cmp PF_X, ORIG_W
+ vraddhn.u16 d30, q12, q10
+ vraddhn.u16 d31, q13, q11
+ vld4.8 {d0, d1, d2, d3}, [SRC]!
+ PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
+ vmvn.8 d22, d3
+ PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift]
+ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]!
+ PF subge PF_X, PF_X, ORIG_W
+ vmull.u8 q8, d22, d4
+ PF subges PF_CTL, PF_CTL, #0x10
+ vmull.u8 q9, d22, d5
+ PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
+ vmull.u8 q10, d22, d6
+ PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
+ vmull.u8 q11, d22, d7
+.endm
+
+generate_composite_function_single_scanline \
+ pixman_composite_scanline_out_reverse_asm_neon, 32, 0, 32, \
+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
+ 8, /* number of pixels, processed in a single block */ \
+ default_init, \
+ default_cleanup, \
+ pixman_composite_out_reverse_8888_8888_process_pixblock_head, \
+ pixman_composite_out_reverse_8888_8888_process_pixblock_tail, \
+ pixman_composite_out_reverse_8888_8888_process_pixblock_tail_head
+
+/******************************************************************************/
+
+.macro pixman_composite_over_8888_8888_process_pixblock_head
+ pixman_composite_out_reverse_8888_8888_process_pixblock_head
+.endm
+
+.macro pixman_composite_over_8888_8888_process_pixblock_tail
+ pixman_composite_out_reverse_8888_8888_process_pixblock_tail
+ vqadd.u8 q14, q0, q14
+ vqadd.u8 q15, q1, q15
+.endm
+
+.macro pixman_composite_over_8888_8888_process_pixblock_tail_head
+ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]!
+ vrshr.u16 q14, q8, #8
+ PF add PF_X, PF_X, #8
+ PF tst PF_CTL, #0xF
+ vrshr.u16 q15, q9, #8
+ vrshr.u16 q12, q10, #8
+ vrshr.u16 q13, q11, #8
+ PF addne PF_X, PF_X, #8
+ PF subne PF_CTL, PF_CTL, #1
+ vraddhn.u16 d28, q14, q8
+ vraddhn.u16 d29, q15, q9
+ PF cmp PF_X, ORIG_W
+ vraddhn.u16 d30, q12, q10
+ vraddhn.u16 d31, q13, q11
+ vqadd.u8 q14, q0, q14
+ vqadd.u8 q15, q1, q15
+ vld4.8 {d0, d1, d2, d3}, [SRC]!
+ PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
+ vmvn.8 d22, d3
+ PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift]
+ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]!
+ PF subge PF_X, PF_X, ORIG_W
+ vmull.u8 q8, d22, d4
+ PF subges PF_CTL, PF_CTL, #0x10
+ vmull.u8 q9, d22, d5
+ PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
+ vmull.u8 q10, d22, d6
+ PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
+ vmull.u8 q11, d22, d7
+.endm
+
+generate_composite_function \
+ pixman_composite_over_8888_8888_asm_neon, 32, 0, 32, \
+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
+ 8, /* number of pixels, processed in a single block */ \
+ 5, /* prefetch distance */ \
+ default_init, \
+ default_cleanup, \
+ pixman_composite_over_8888_8888_process_pixblock_head, \
+ pixman_composite_over_8888_8888_process_pixblock_tail, \
+ pixman_composite_over_8888_8888_process_pixblock_tail_head
+
+generate_composite_function_single_scanline \
+ pixman_composite_scanline_over_asm_neon, 32, 0, 32, \
+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
+ 8, /* number of pixels, processed in a single block */ \
+ default_init, \
+ default_cleanup, \
+ pixman_composite_over_8888_8888_process_pixblock_head, \
+ pixman_composite_over_8888_8888_process_pixblock_tail, \
+ pixman_composite_over_8888_8888_process_pixblock_tail_head
+
+/******************************************************************************/
+
+/* TODO: expand macros and do better instructions scheduling */
+.macro pixman_composite_over_n_8888_process_pixblock_tail_head
+ pixman_composite_over_8888_8888_process_pixblock_tail
+ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]!
+ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]!
+ pixman_composite_over_8888_8888_process_pixblock_head
+.endm
+
+.macro pixman_composite_over_n_8888_init
+ add DUMMY, sp, #ARGS_STACK_OFFSET
+ vld1.32 {d3[0]}, [DUMMY]
+ vdup.8 d0, d3[0]
+ vdup.8 d1, d3[1]
+ vdup.8 d2, d3[2]
+ vdup.8 d3, d3[3]
+.endm
+
+generate_composite_function \
+ pixman_composite_over_n_8888_asm_neon, 0, 0, 32, \
+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
+ 8, /* number of pixels, processed in a single block */ \
+ 5, /* prefetch distance */ \
+ pixman_composite_over_n_8888_init, \
+ default_cleanup, \
+ pixman_composite_over_8888_8888_process_pixblock_head, \
+ pixman_composite_over_8888_8888_process_pixblock_tail, \
+ pixman_composite_over_n_8888_process_pixblock_tail_head
+
+/******************************************************************************/
+
+.macro pixman_composite_over_reverse_n_8888_process_pixblock_tail_head
+ vrshr.u16 q14, q8, #8
+ PF add PF_X, PF_X, #8
+ PF tst PF_CTL, #0xF
+ vrshr.u16 q15, q9, #8
+ vrshr.u16 q12, q10, #8
+ vrshr.u16 q13, q11, #8
+ PF addne PF_X, PF_X, #8
+ PF subne PF_CTL, PF_CTL, #1
+ vraddhn.u16 d28, q14, q8
+ vraddhn.u16 d29, q15, q9
+ PF cmp PF_X, ORIG_W
+ vraddhn.u16 d30, q12, q10
+ vraddhn.u16 d31, q13, q11
+ vqadd.u8 q14, q0, q14
+ vqadd.u8 q15, q1, q15
+ vld4.8 {d0, d1, d2, d3}, [DST_R, :128]!
+ vmvn.8 d22, d3
+ PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift]
+ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]!
+ PF subge PF_X, PF_X, ORIG_W
+ vmull.u8 q8, d22, d4
+ PF subges PF_CTL, PF_CTL, #0x10
+ vmull.u8 q9, d22, d5
+ vmull.u8 q10, d22, d6
+ PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
+ vmull.u8 q11, d22, d7
+.endm
+
+.macro pixman_composite_over_reverse_n_8888_init
+ add DUMMY, sp, #ARGS_STACK_OFFSET
+ vld1.32 {d7[0]}, [DUMMY]
+ vdup.8 d4, d7[0]
+ vdup.8 d5, d7[1]
+ vdup.8 d6, d7[2]
+ vdup.8 d7, d7[3]
+.endm
+
+generate_composite_function \
+ pixman_composite_over_reverse_n_8888_asm_neon, 0, 0, 32, \
+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
+ 8, /* number of pixels, processed in a single block */ \
+ 5, /* prefetch distance */ \
+ pixman_composite_over_reverse_n_8888_init, \
+ default_cleanup, \
+ pixman_composite_over_8888_8888_process_pixblock_head, \
+ pixman_composite_over_8888_8888_process_pixblock_tail, \
+ pixman_composite_over_reverse_n_8888_process_pixblock_tail_head, \
+ 28, /* dst_w_basereg */ \
+ 0, /* dst_r_basereg */ \
+ 4, /* src_basereg */ \
+ 24 /* mask_basereg */
+
+/******************************************************************************/
+
+.macro pixman_composite_over_n_8_0565_process_pixblock_head
+ /* in */
+ vmull.u8 q0, d24, d8
+ vmull.u8 q1, d24, d9
+ vmull.u8 q6, d24, d10
+ vmull.u8 q7, d24, d11
+ vrshr.u16 q10, q0, #8
+ vrshr.u16 q11, q1, #8
+ vrshr.u16 q12, q6, #8
+ vrshr.u16 q13, q7, #8
+ vraddhn.u16 d0, q0, q10
+ vraddhn.u16 d1, q1, q11
+ vraddhn.u16 d2, q6, q12
+ vraddhn.u16 d3, q7, q13
+
+ vshrn.u16 d6, q2, #8
+ vshrn.u16 d7, q2, #3
+ vsli.u16 q2, q2, #5
+ vsri.u8 d6, d6, #5
+ vmvn.8 d3, d3
+ vsri.u8 d7, d7, #6
+ vshrn.u16 d30, q2, #2
+ /* now do alpha blending */
+ vmull.u8 q10, d3, d6
+ vmull.u8 q11, d3, d7
+ vmull.u8 q12, d3, d30
+ vrshr.u16 q13, q10, #8
+ vrshr.u16 q3, q11, #8
+ vrshr.u16 q15, q12, #8
+ vraddhn.u16 d20, q10, q13
+ vraddhn.u16 d23, q11, q3
+ vraddhn.u16 d22, q12, q15
+.endm
+
+.macro pixman_composite_over_n_8_0565_process_pixblock_tail
+ vqadd.u8 d16, d2, d20
+ vqadd.u8 q9, q0, q11
+ /* convert to r5g6b5 */
+ vshll.u8 q14, d16, #8
+ vshll.u8 q8, d19, #8
+ vshll.u8 q9, d18, #8
+ vsri.u16 q14, q8, #5
+ vsri.u16 q14, q9, #11
+.endm
+
+/* TODO: expand macros and do better instructions scheduling */
+.macro pixman_composite_over_n_8_0565_process_pixblock_tail_head
+ pixman_composite_over_n_8_0565_process_pixblock_tail
+ vst1.16 {d28, d29}, [DST_W, :128]!
+ vld1.16 {d4, d5}, [DST_R, :128]!
+ vld1.8 {d24}, [MASK]!
+ cache_preload 8, 8
+ pixman_composite_over_n_8_0565_process_pixblock_head
+.endm
+
+/*
+ * This function needs a special initialization of solid mask.
+ * Solid source pixel data is fetched from stack at ARGS_STACK_OFFSET
+ * offset, split into color components and replicated in d8-d11
+ * registers. Additionally, this function needs all the NEON registers,
+ * so it has to save d8-d15 registers which are callee saved according
+ * to ABI. These registers are restored from 'cleanup' macro. All the
+ * other NEON registers are caller saved, so can be clobbered freely
+ * without introducing any problems.
+ */
+.macro pixman_composite_over_n_8_0565_init
+ add DUMMY, sp, #ARGS_STACK_OFFSET
+ vpush {d8-d15}
+ vld1.32 {d11[0]}, [DUMMY]
+ vdup.8 d8, d11[0]
+ vdup.8 d9, d11[1]
+ vdup.8 d10, d11[2]
+ vdup.8 d11, d11[3]
+.endm
+
+.macro pixman_composite_over_n_8_0565_cleanup
+ vpop {d8-d15}
+.endm
+
+generate_composite_function \
+ pixman_composite_over_n_8_0565_asm_neon, 0, 8, 16, \
+ FLAG_DST_READWRITE, \
+ 8, /* number of pixels, processed in a single block */ \
+ 5, /* prefetch distance */ \
+ pixman_composite_over_n_8_0565_init, \
+ pixman_composite_over_n_8_0565_cleanup, \
+ pixman_composite_over_n_8_0565_process_pixblock_head, \
+ pixman_composite_over_n_8_0565_process_pixblock_tail, \
+ pixman_composite_over_n_8_0565_process_pixblock_tail_head
+
+/******************************************************************************/
+
+.macro pixman_composite_src_0565_0565_process_pixblock_head
+.endm
+
+.macro pixman_composite_src_0565_0565_process_pixblock_tail
+.endm
+
+.macro pixman_composite_src_0565_0565_process_pixblock_tail_head
+ vst1.16 {d0, d1, d2, d3}, [DST_W, :128]!
+ vld1.16 {d0, d1, d2, d3}, [SRC]!
+ cache_preload 16, 16
+.endm
+
+generate_composite_function \
+ pixman_composite_src_0565_0565_asm_neon, 16, 0, 16, \
+ FLAG_DST_WRITEONLY, \
+ 16, /* number of pixels, processed in a single block */ \
+ 10, /* prefetch distance */ \
+ default_init, \
+ default_cleanup, \
+ pixman_composite_src_0565_0565_process_pixblock_head, \
+ pixman_composite_src_0565_0565_process_pixblock_tail, \
+ pixman_composite_src_0565_0565_process_pixblock_tail_head, \
+ 0, /* dst_w_basereg */ \
+ 0, /* dst_r_basereg */ \
+ 0, /* src_basereg */ \
+ 0 /* mask_basereg */
+
+/******************************************************************************/
+
+.macro pixman_composite_src_n_8_process_pixblock_head
+.endm
+
+.macro pixman_composite_src_n_8_process_pixblock_tail
+.endm
+
+.macro pixman_composite_src_n_8_process_pixblock_tail_head
+ vst1.8 {d0, d1, d2, d3}, [DST_W, :128]!
+.endm
+
+.macro pixman_composite_src_n_8_init
+ add DUMMY, sp, #ARGS_STACK_OFFSET
+ vld1.32 {d0[0]}, [DUMMY]
+ vsli.u64 d0, d0, #8
+ vsli.u64 d0, d0, #16
+ vsli.u64 d0, d0, #32
+ vorr d1, d0, d0
+ vorr q1, q0, q0
+.endm
+
+.macro pixman_composite_src_n_8_cleanup
+.endm
+
+generate_composite_function \
+ pixman_composite_src_n_8_asm_neon, 0, 0, 8, \
+ FLAG_DST_WRITEONLY, \
+ 32, /* number of pixels, processed in a single block */ \
+ 0, /* prefetch distance */ \
+ pixman_composite_src_n_8_init, \
+ pixman_composite_src_n_8_cleanup, \
+ pixman_composite_src_n_8_process_pixblock_head, \
+ pixman_composite_src_n_8_process_pixblock_tail, \
+ pixman_composite_src_n_8_process_pixblock_tail_head, \
+ 0, /* dst_w_basereg */ \
+ 0, /* dst_r_basereg */ \
+ 0, /* src_basereg */ \
+ 0 /* mask_basereg */
+
+/******************************************************************************/
+
+.macro pixman_composite_src_n_0565_process_pixblock_head
+.endm
+
+.macro pixman_composite_src_n_0565_process_pixblock_tail
+.endm
+
+.macro pixman_composite_src_n_0565_process_pixblock_tail_head
+ vst1.16 {d0, d1, d2, d3}, [DST_W, :128]!
+.endm
+
+.macro pixman_composite_src_n_0565_init
+ add DUMMY, sp, #ARGS_STACK_OFFSET
+ vld1.32 {d0[0]}, [DUMMY]
+ vsli.u64 d0, d0, #16
+ vsli.u64 d0, d0, #32
+ vorr d1, d0, d0
+ vorr q1, q0, q0
+.endm
+
+.macro pixman_composite_src_n_0565_cleanup
+.endm
+
+generate_composite_function \
+ pixman_composite_src_n_0565_asm_neon, 0, 0, 16, \
+ FLAG_DST_WRITEONLY, \
+ 16, /* number of pixels, processed in a single block */ \
+ 0, /* prefetch distance */ \
+ pixman_composite_src_n_0565_init, \
+ pixman_composite_src_n_0565_cleanup, \
+ pixman_composite_src_n_0565_process_pixblock_head, \
+ pixman_composite_src_n_0565_process_pixblock_tail, \
+ pixman_composite_src_n_0565_process_pixblock_tail_head, \
+ 0, /* dst_w_basereg */ \
+ 0, /* dst_r_basereg */ \
+ 0, /* src_basereg */ \
+ 0 /* mask_basereg */
+
+/******************************************************************************/
+
+.macro pixman_composite_src_n_8888_process_pixblock_head
+.endm
+
+.macro pixman_composite_src_n_8888_process_pixblock_tail
+.endm
+
+.macro pixman_composite_src_n_8888_process_pixblock_tail_head
+ vst1.32 {d0, d1, d2, d3}, [DST_W, :128]!
+.endm
+
+.macro pixman_composite_src_n_8888_init
+ add DUMMY, sp, #ARGS_STACK_OFFSET
+ vld1.32 {d0[0]}, [DUMMY]
+ vsli.u64 d0, d0, #32
+ vorr d1, d0, d0
+ vorr q1, q0, q0
+.endm
+
+.macro pixman_composite_src_n_8888_cleanup
+.endm
+
+generate_composite_function \
+ pixman_composite_src_n_8888_asm_neon, 0, 0, 32, \
+ FLAG_DST_WRITEONLY, \
+ 8, /* number of pixels, processed in a single block */ \
+ 0, /* prefetch distance */ \
+ pixman_composite_src_n_8888_init, \
+ pixman_composite_src_n_8888_cleanup, \
+ pixman_composite_src_n_8888_process_pixblock_head, \
+ pixman_composite_src_n_8888_process_pixblock_tail, \
+ pixman_composite_src_n_8888_process_pixblock_tail_head, \
+ 0, /* dst_w_basereg */ \
+ 0, /* dst_r_basereg */ \
+ 0, /* src_basereg */ \
+ 0 /* mask_basereg */
+
+/******************************************************************************/
+
+.macro pixman_composite_src_8888_8888_process_pixblock_head
+.endm
+
+.macro pixman_composite_src_8888_8888_process_pixblock_tail
+.endm
+
+.macro pixman_composite_src_8888_8888_process_pixblock_tail_head
+ vst1.32 {d0, d1, d2, d3}, [DST_W, :128]!
+ vld1.32 {d0, d1, d2, d3}, [SRC]!
+ cache_preload 8, 8
+.endm
+
+generate_composite_function \
+ pixman_composite_src_8888_8888_asm_neon, 32, 0, 32, \
+ FLAG_DST_WRITEONLY, \
+ 8, /* number of pixels, processed in a single block */ \
+ 10, /* prefetch distance */ \
+ default_init, \
+ default_cleanup, \
+ pixman_composite_src_8888_8888_process_pixblock_head, \
+ pixman_composite_src_8888_8888_process_pixblock_tail, \
+ pixman_composite_src_8888_8888_process_pixblock_tail_head, \
+ 0, /* dst_w_basereg */ \
+ 0, /* dst_r_basereg */ \
+ 0, /* src_basereg */ \
+ 0 /* mask_basereg */
+
+/******************************************************************************/
+
+.macro pixman_composite_src_x888_8888_process_pixblock_head
+ vorr q0, q0, q2
+ vorr q1, q1, q2
+.endm
+
+.macro pixman_composite_src_x888_8888_process_pixblock_tail
+.endm
+
+.macro pixman_composite_src_x888_8888_process_pixblock_tail_head
+ vst1.32 {d0, d1, d2, d3}, [DST_W, :128]!
+ vld1.32 {d0, d1, d2, d3}, [SRC]!
+ vorr q0, q0, q2
+ vorr q1, q1, q2
+ cache_preload 8, 8
+.endm
+
+.macro pixman_composite_src_x888_8888_init
+ vmov.u8 q2, #0xFF
+ vshl.u32 q2, q2, #24
+.endm
+
+generate_composite_function \
+ pixman_composite_src_x888_8888_asm_neon, 32, 0, 32, \
+ FLAG_DST_WRITEONLY, \
+ 8, /* number of pixels, processed in a single block */ \
+ 10, /* prefetch distance */ \
+ pixman_composite_src_x888_8888_init, \
+ default_cleanup, \
+ pixman_composite_src_x888_8888_process_pixblock_head, \
+ pixman_composite_src_x888_8888_process_pixblock_tail, \
+ pixman_composite_src_x888_8888_process_pixblock_tail_head, \
+ 0, /* dst_w_basereg */ \
+ 0, /* dst_r_basereg */ \
+ 0, /* src_basereg */ \
+ 0 /* mask_basereg */
+
+/******************************************************************************/
+
+.macro pixman_composite_over_n_8_8888_process_pixblock_head
+ /* expecting deinterleaved source data in {d8, d9, d10, d11} */
+ /* d8 - blue, d9 - green, d10 - red, d11 - alpha */
+ /* and destination data in {d4, d5, d6, d7} */
+ /* mask is in d24 (d25, d26, d27 are unused) */
+
+ /* in */
+ vmull.u8 q0, d24, d8
+ vmull.u8 q1, d24, d9
+ vmull.u8 q6, d24, d10
+ vmull.u8 q7, d24, d11
+ vrshr.u16 q10, q0, #8
+ vrshr.u16 q11, q1, #8
+ vrshr.u16 q12, q6, #8
+ vrshr.u16 q13, q7, #8
+ vraddhn.u16 d0, q0, q10
+ vraddhn.u16 d1, q1, q11
+ vraddhn.u16 d2, q6, q12
+ vraddhn.u16 d3, q7, q13
+ vmvn.8 d24, d3 /* get inverted alpha */
+ /* source: d0 - blue, d1 - green, d2 - red, d3 - alpha */
+ /* destination: d4 - blue, d5 - green, d6 - red, d7 - alpha */
+ /* now do alpha blending */
+ vmull.u8 q8, d24, d4
+ vmull.u8 q9, d24, d5
+ vmull.u8 q10, d24, d6
+ vmull.u8 q11, d24, d7
+.endm
+
+.macro pixman_composite_over_n_8_8888_process_pixblock_tail
+ vrshr.u16 q14, q8, #8
+ vrshr.u16 q15, q9, #8
+ vrshr.u16 q12, q10, #8
+ vrshr.u16 q13, q11, #8
+ vraddhn.u16 d28, q14, q8
+ vraddhn.u16 d29, q15, q9
+ vraddhn.u16 d30, q12, q10
+ vraddhn.u16 d31, q13, q11
+ vqadd.u8 q14, q0, q14
+ vqadd.u8 q15, q1, q15
+.endm
+
+/* TODO: expand macros and do better instructions scheduling */
+.macro pixman_composite_over_n_8_8888_process_pixblock_tail_head
+ pixman_composite_over_n_8_8888_process_pixblock_tail
+ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]!
+ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]!
+ vld1.8 {d24}, [MASK]!
+ cache_preload 8, 8
+ pixman_composite_over_n_8_8888_process_pixblock_head
+.endm
+
+.macro pixman_composite_over_n_8_8888_init
+ add DUMMY, sp, #ARGS_STACK_OFFSET
+ vpush {d8-d15}
+ vld1.32 {d11[0]}, [DUMMY]
+ vdup.8 d8, d11[0]
+ vdup.8 d9, d11[1]
+ vdup.8 d10, d11[2]
+ vdup.8 d11, d11[3]
+.endm
+
+.macro pixman_composite_over_n_8_8888_cleanup
+ vpop {d8-d15}
+.endm
+
+generate_composite_function \
+ pixman_composite_over_n_8_8888_asm_neon, 0, 8, 32, \
+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
+ 8, /* number of pixels, processed in a single block */ \
+ 5, /* prefetch distance */ \
+ pixman_composite_over_n_8_8888_init, \
+ pixman_composite_over_n_8_8888_cleanup, \
+ pixman_composite_over_n_8_8888_process_pixblock_head, \
+ pixman_composite_over_n_8_8888_process_pixblock_tail, \
+ pixman_composite_over_n_8_8888_process_pixblock_tail_head
+
+/******************************************************************************/
+
+.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_head
+ /*
+ * 'combine_mask_ca' replacement
+ *
+ * input: solid src (n) in {d8, d9, d10, d11}
+ * dest in {d4, d5, d6, d7 }
+ * mask in {d24, d25, d26, d27}
+ * output: updated src in {d0, d1, d2, d3 }
+ * updated mask in {d24, d25, d26, d3 }
+ */
+ vmull.u8 q0, d24, d8
+ vmull.u8 q1, d25, d9
+ vmull.u8 q6, d26, d10
+ vmull.u8 q7, d27, d11
+ vmull.u8 q9, d11, d25
+ vmull.u8 q12, d11, d24
+ vmull.u8 q13, d11, d26
+ vrshr.u16 q8, q0, #8
+ vrshr.u16 q10, q1, #8
+ vrshr.u16 q11, q6, #8
+ vraddhn.u16 d0, q0, q8
+ vraddhn.u16 d1, q1, q10
+ vraddhn.u16 d2, q6, q11
+ vrshr.u16 q11, q12, #8
+ vrshr.u16 q8, q9, #8
+ vrshr.u16 q6, q13, #8
+ vrshr.u16 q10, q7, #8
+ vraddhn.u16 d24, q12, q11
+ vraddhn.u16 d25, q9, q8
+ vraddhn.u16 d26, q13, q6
+ vraddhn.u16 d3, q7, q10
+ /*
+ * 'combine_over_ca' replacement
+ *
+ * output: updated dest in {d28, d29, d30, d31}
+ */
+ vmvn.8 d24, d24
+ vmvn.8 d25, d25
+ vmull.u8 q8, d24, d4
+ vmull.u8 q9, d25, d5
+ vmvn.8 d26, d26
+ vmvn.8 d27, d3
+ vmull.u8 q10, d26, d6
+ vmull.u8 q11, d27, d7
+.endm
+
+.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_tail
+ /* ... continue 'combine_over_ca' replacement */
+ vrshr.u16 q14, q8, #8
+ vrshr.u16 q15, q9, #8
+ vrshr.u16 q6, q10, #8
+ vrshr.u16 q7, q11, #8
+ vraddhn.u16 d28, q14, q8
+ vraddhn.u16 d29, q15, q9
+ vraddhn.u16 d30, q6, q10
+ vraddhn.u16 d31, q7, q11
+ vqadd.u8 q14, q0, q14
+ vqadd.u8 q15, q1, q15
+.endm
+
+.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_tail_head
+ vrshr.u16 q14, q8, #8
+ vrshr.u16 q15, q9, #8
+ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]!
+ vrshr.u16 q6, q10, #8
+ vrshr.u16 q7, q11, #8
+ vraddhn.u16 d28, q14, q8
+ vraddhn.u16 d29, q15, q9
+ vraddhn.u16 d30, q6, q10
+ vraddhn.u16 d31, q7, q11
+ vld4.8 {d24, d25, d26, d27}, [MASK]!
+ vqadd.u8 q14, q0, q14
+ vqadd.u8 q15, q1, q15
+ cache_preload 8, 8
+ pixman_composite_over_n_8888_8888_ca_process_pixblock_head
+ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]!
+.endm
+
+.macro pixman_composite_over_n_8888_8888_ca_init
+ add DUMMY, sp, #ARGS_STACK_OFFSET
+ vpush {d8-d15}
+ vld1.32 {d11[0]}, [DUMMY]
+ vdup.8 d8, d11[0]
+ vdup.8 d9, d11[1]
+ vdup.8 d10, d11[2]
+ vdup.8 d11, d11[3]
+.endm
+
+.macro pixman_composite_over_n_8888_8888_ca_cleanup
+ vpop {d8-d15}
+.endm
+
+generate_composite_function \
+ pixman_composite_over_n_8888_8888_ca_asm_neon, 0, 32, 32, \
+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
+ 8, /* number of pixels, processed in a single block */ \
+ 5, /* prefetch distance */ \
+ pixman_composite_over_n_8888_8888_ca_init, \
+ pixman_composite_over_n_8888_8888_ca_cleanup, \
+ pixman_composite_over_n_8888_8888_ca_process_pixblock_head, \
+ pixman_composite_over_n_8888_8888_ca_process_pixblock_tail, \
+ pixman_composite_over_n_8888_8888_ca_process_pixblock_tail_head
+
+/******************************************************************************/
+
+.macro pixman_composite_add_n_8_8_process_pixblock_head
+ /* expecting source data in {d8, d9, d10, d11} */
+ /* d8 - blue, d9 - green, d10 - red, d11 - alpha */
+ /* and destination data in {d4, d5, d6, d7} */
+ /* mask is in d24, d25, d26, d27 */
+ vmull.u8 q0, d24, d11
+ vmull.u8 q1, d25, d11
+ vmull.u8 q6, d26, d11
+ vmull.u8 q7, d27, d11
+ vrshr.u16 q10, q0, #8
+ vrshr.u16 q11, q1, #8
+ vrshr.u16 q12, q6, #8
+ vrshr.u16 q13, q7, #8
+ vraddhn.u16 d0, q0, q10
+ vraddhn.u16 d1, q1, q11
+ vraddhn.u16 d2, q6, q12
+ vraddhn.u16 d3, q7, q13
+ vqadd.u8 q14, q0, q2
+ vqadd.u8 q15, q1, q3
+.endm
+
+.macro pixman_composite_add_n_8_8_process_pixblock_tail
+.endm
+
+/* TODO: expand macros and do better instructions scheduling */
+.macro pixman_composite_add_n_8_8_process_pixblock_tail_head
+ pixman_composite_add_n_8_8_process_pixblock_tail
+ vst1.8 {d28, d29, d30, d31}, [DST_W, :128]!
+ vld1.8 {d4, d5, d6, d7}, [DST_R, :128]!
+ vld1.8 {d24, d25, d26, d27}, [MASK]!
+ cache_preload 32, 32
+ pixman_composite_add_n_8_8_process_pixblock_head
+.endm
+
+.macro pixman_composite_add_n_8_8_init
+ add DUMMY, sp, #ARGS_STACK_OFFSET
+ vpush {d8-d15}
+ vld1.32 {d11[0]}, [DUMMY]
+ vdup.8 d11, d11[3]
+.endm
+
+.macro pixman_composite_add_n_8_8_cleanup
+ vpop {d8-d15}
+.endm
+
+generate_composite_function \
+ pixman_composite_add_n_8_8_asm_neon, 0, 8, 8, \
+ FLAG_DST_READWRITE, \
+ 32, /* number of pixels, processed in a single block */ \
+ 5, /* prefetch distance */ \
+ pixman_composite_add_n_8_8_init, \
+ pixman_composite_add_n_8_8_cleanup, \
+ pixman_composite_add_n_8_8_process_pixblock_head, \
+ pixman_composite_add_n_8_8_process_pixblock_tail, \
+ pixman_composite_add_n_8_8_process_pixblock_tail_head
+
+/******************************************************************************/
+
+.macro pixman_composite_add_8_8_8_process_pixblock_head
+ /* expecting source data in {d0, d1, d2, d3} */
+ /* destination data in {d4, d5, d6, d7} */
+ /* mask in {d24, d25, d26, d27} */
+ vmull.u8 q8, d24, d0
+ vmull.u8 q9, d25, d1
+ vmull.u8 q10, d26, d2
+ vmull.u8 q11, d27, d3
+ vrshr.u16 q0, q8, #8
+ vrshr.u16 q1, q9, #8
+ vrshr.u16 q12, q10, #8
+ vrshr.u16 q13, q11, #8
+ vraddhn.u16 d0, q0, q8
+ vraddhn.u16 d1, q1, q9
+ vraddhn.u16 d2, q12, q10
+ vraddhn.u16 d3, q13, q11
+ vqadd.u8 q14, q0, q2
+ vqadd.u8 q15, q1, q3
+.endm
+
+.macro pixman_composite_add_8_8_8_process_pixblock_tail
+.endm
+
+/* TODO: expand macros and do better instructions scheduling */
+.macro pixman_composite_add_8_8_8_process_pixblock_tail_head
+ pixman_composite_add_8_8_8_process_pixblock_tail
+ vst1.8 {d28, d29, d30, d31}, [DST_W, :128]!
+ vld1.8 {d4, d5, d6, d7}, [DST_R, :128]!
+ vld1.8 {d24, d25, d26, d27}, [MASK]!
+ vld1.8 {d0, d1, d2, d3}, [SRC]!
+ cache_preload 32, 32
+ pixman_composite_add_8_8_8_process_pixblock_head
+.endm
+
+.macro pixman_composite_add_8_8_8_init
+.endm
+
+.macro pixman_composite_add_8_8_8_cleanup
+.endm
+
+generate_composite_function \
+ pixman_composite_add_8_8_8_asm_neon, 8, 8, 8, \
+ FLAG_DST_READWRITE, \
+ 32, /* number of pixels, processed in a single block */ \
+ 5, /* prefetch distance */ \
+ pixman_composite_add_8_8_8_init, \
+ pixman_composite_add_8_8_8_cleanup, \
+ pixman_composite_add_8_8_8_process_pixblock_head, \
+ pixman_composite_add_8_8_8_process_pixblock_tail, \
+ pixman_composite_add_8_8_8_process_pixblock_tail_head
+
+/******************************************************************************/
+
+.macro pixman_composite_add_8888_8888_8888_process_pixblock_head
+ /* expecting source data in {d0, d1, d2, d3} */
+ /* destination data in {d4, d5, d6, d7} */
+ /* mask in {d24, d25, d26, d27} */
+ vmull.u8 q8, d27, d0
+ vmull.u8 q9, d27, d1
+ vmull.u8 q10, d27, d2
+ vmull.u8 q11, d27, d3
+ vrshr.u16 q0, q8, #8
+ vrshr.u16 q1, q9, #8
+ vrshr.u16 q12, q10, #8
+ vrshr.u16 q13, q11, #8
+ vraddhn.u16 d0, q0, q8
+ vraddhn.u16 d1, q1, q9
+ vraddhn.u16 d2, q12, q10
+ vraddhn.u16 d3, q13, q11
+ vqadd.u8 q14, q0, q2
+ vqadd.u8 q15, q1, q3
+.endm
+
+.macro pixman_composite_add_8888_8888_8888_process_pixblock_tail
+.endm
+
+/* TODO: expand macros and do better instructions scheduling */
+.macro pixman_composite_add_8888_8888_8888_process_pixblock_tail_head
+ pixman_composite_add_8888_8888_8888_process_pixblock_tail
+ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]!
+ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]!
+ vld4.8 {d24, d25, d26, d27}, [MASK]!
+ vld4.8 {d0, d1, d2, d3}, [SRC]!
+ cache_preload 8, 8
+ pixman_composite_add_8888_8888_8888_process_pixblock_head
+.endm
+
+generate_composite_function \
+ pixman_composite_add_8888_8888_8888_asm_neon, 32, 32, 32, \
+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
+ 8, /* number of pixels, processed in a single block */ \
+ 10, /* prefetch distance */ \
+ default_init, \
+ default_cleanup, \
+ pixman_composite_add_8888_8888_8888_process_pixblock_head, \
+ pixman_composite_add_8888_8888_8888_process_pixblock_tail, \
+ pixman_composite_add_8888_8888_8888_process_pixblock_tail_head
+
+generate_composite_function_single_scanline \
+ pixman_composite_scanline_add_mask_asm_neon, 32, 32, 32, \
+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
+ 8, /* number of pixels, processed in a single block */ \
+ default_init, \
+ default_cleanup, \
+ pixman_composite_add_8888_8888_8888_process_pixblock_head, \
+ pixman_composite_add_8888_8888_8888_process_pixblock_tail, \
+ pixman_composite_add_8888_8888_8888_process_pixblock_tail_head
+
+/******************************************************************************/
+
+.macro pixman_composite_out_reverse_8888_n_8888_process_pixblock_head
+ /* expecting source data in {d0, d1, d2, d3} */
+ /* destination data in {d4, d5, d6, d7} */
+ /* solid mask is in d15 */
+
+ /* 'in' */
+ vmull.u8 q8, d15, d3
+ vmull.u8 q6, d15, d2
+ vmull.u8 q5, d15, d1
+ vmull.u8 q4, d15, d0
+ vrshr.u16 q13, q8, #8
+ vrshr.u16 q12, q6, #8
+ vrshr.u16 q11, q5, #8
+ vrshr.u16 q10, q4, #8
+ vraddhn.u16 d3, q8, q13
+ vraddhn.u16 d2, q6, q12
+ vraddhn.u16 d1, q5, q11
+ vraddhn.u16 d0, q4, q10
+ vmvn.8 d24, d3 /* get inverted alpha */
+ /* now do alpha blending */
+ vmull.u8 q8, d24, d4
+ vmull.u8 q9, d24, d5
+ vmull.u8 q10, d24, d6
+ vmull.u8 q11, d24, d7
+.endm
+
+.macro pixman_composite_out_reverse_8888_n_8888_process_pixblock_tail
+ vrshr.u16 q14, q8, #8
+ vrshr.u16 q15, q9, #8
+ vrshr.u16 q12, q10, #8
+ vrshr.u16 q13, q11, #8
+ vraddhn.u16 d28, q14, q8
+ vraddhn.u16 d29, q15, q9
+ vraddhn.u16 d30, q12, q10
+ vraddhn.u16 d31, q13, q11
+.endm
+
+.macro pixman_composite_out_reverse_8888_8888_8888_init
+ vpush {d8-d15}
+.endm
+
+.macro pixman_composite_out_reverse_8888_8888_8888_cleanup
+ vpop {d8-d15}
+.endm
+
+/* TODO: expand macros and do better instructions scheduling */
+.macro pixman_composite_out_reverse_8888_8888_8888_process_pixblock_tail_head
+ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]!
+ pixman_composite_out_reverse_8888_n_8888_process_pixblock_tail
+ vld4.8 {d0, d1, d2, d3}, [SRC]!
+ cache_preload 8, 8
+ vld4.8 {d12, d13, d14, d15}, [MASK]!
+ pixman_composite_out_reverse_8888_n_8888_process_pixblock_head
+ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]!
+.endm
+
+generate_composite_function_single_scanline \
+ pixman_composite_scanline_out_reverse_mask_asm_neon, 32, 32, 32, \
+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
+ 8, /* number of pixels, processed in a single block */ \
+ pixman_composite_out_reverse_8888_8888_8888_init, \
+ pixman_composite_out_reverse_8888_8888_8888_cleanup, \
+ pixman_composite_out_reverse_8888_n_8888_process_pixblock_head, \
+ pixman_composite_out_reverse_8888_n_8888_process_pixblock_tail, \
+ pixman_composite_out_reverse_8888_8888_8888_process_pixblock_tail_head \
+ 28, /* dst_w_basereg */ \
+ 4, /* dst_r_basereg */ \
+ 0, /* src_basereg */ \
+ 12 /* mask_basereg */
+
+/******************************************************************************/
+
+.macro pixman_composite_over_8888_n_8888_process_pixblock_head
+ pixman_composite_out_reverse_8888_n_8888_process_pixblock_head
+.endm
+
+.macro pixman_composite_over_8888_n_8888_process_pixblock_tail
+ pixman_composite_out_reverse_8888_n_8888_process_pixblock_tail
+ vqadd.u8 q14, q0, q14
+ vqadd.u8 q15, q1, q15
+.endm
+
+/* TODO: expand macros and do better instructions scheduling */
+.macro pixman_composite_over_8888_n_8888_process_pixblock_tail_head
+ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]!
+ pixman_composite_over_8888_n_8888_process_pixblock_tail
+ vld4.8 {d0, d1, d2, d3}, [SRC]!
+ cache_preload 8, 8
+ pixman_composite_over_8888_n_8888_process_pixblock_head
+ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]!
+.endm
+
+.macro pixman_composite_over_8888_n_8888_init
+ add DUMMY, sp, #48
+ vpush {d8-d15}
+ vld1.32 {d15[0]}, [DUMMY]
+ vdup.8 d15, d15[3]
+.endm
+
+.macro pixman_composite_over_8888_n_8888_cleanup
+ vpop {d8-d15}
+.endm
+
+generate_composite_function \
+ pixman_composite_over_8888_n_8888_asm_neon, 32, 0, 32, \
+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
+ 8, /* number of pixels, processed in a single block */ \
+ 5, /* prefetch distance */ \
+ pixman_composite_over_8888_n_8888_init, \
+ pixman_composite_over_8888_n_8888_cleanup, \
+ pixman_composite_over_8888_n_8888_process_pixblock_head, \
+ pixman_composite_over_8888_n_8888_process_pixblock_tail, \
+ pixman_composite_over_8888_n_8888_process_pixblock_tail_head
+
+/******************************************************************************/
+
+/* TODO: expand macros and do better instructions scheduling */
+.macro pixman_composite_over_8888_8888_8888_process_pixblock_tail_head
+ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]!
+ pixman_composite_over_8888_n_8888_process_pixblock_tail
+ vld4.8 {d0, d1, d2, d3}, [SRC]!
+ cache_preload 8, 8
+ vld4.8 {d12, d13, d14, d15}, [MASK]!
+ pixman_composite_over_8888_n_8888_process_pixblock_head
+ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]!
+.endm
+
+.macro pixman_composite_over_8888_8888_8888_init
+ vpush {d8-d15}
+.endm
+
+.macro pixman_composite_over_8888_8888_8888_cleanup
+ vpop {d8-d15}
+.endm
+
+generate_composite_function \
+ pixman_composite_over_8888_8888_8888_asm_neon, 32, 32, 32, \
+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
+ 8, /* number of pixels, processed in a single block */ \
+ 5, /* prefetch distance */ \
+ pixman_composite_over_8888_8888_8888_init, \
+ pixman_composite_over_8888_8888_8888_cleanup, \
+ pixman_composite_over_8888_n_8888_process_pixblock_head, \
+ pixman_composite_over_8888_n_8888_process_pixblock_tail, \
+ pixman_composite_over_8888_8888_8888_process_pixblock_tail_head \
+ 28, /* dst_w_basereg */ \
+ 4, /* dst_r_basereg */ \
+ 0, /* src_basereg */ \
+ 12 /* mask_basereg */
+
+generate_composite_function_single_scanline \
+ pixman_composite_scanline_over_mask_asm_neon, 32, 32, 32, \
+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
+ 8, /* number of pixels, processed in a single block */ \
+ pixman_composite_over_8888_8888_8888_init, \
+ pixman_composite_over_8888_8888_8888_cleanup, \
+ pixman_composite_over_8888_n_8888_process_pixblock_head, \
+ pixman_composite_over_8888_n_8888_process_pixblock_tail, \
+ pixman_composite_over_8888_8888_8888_process_pixblock_tail_head \
+ 28, /* dst_w_basereg */ \
+ 4, /* dst_r_basereg */ \
+ 0, /* src_basereg */ \
+ 12 /* mask_basereg */
+
+/******************************************************************************/
+
+/* TODO: expand macros and do better instructions scheduling */
+.macro pixman_composite_over_8888_8_8888_process_pixblock_tail_head
+ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]!
+ pixman_composite_over_8888_n_8888_process_pixblock_tail
+ vld4.8 {d0, d1, d2, d3}, [SRC]!
+ cache_preload 8, 8
+ vld1.8 {d15}, [MASK]!
+ pixman_composite_over_8888_n_8888_process_pixblock_head
+ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]!
+.endm
+
+.macro pixman_composite_over_8888_8_8888_init
+ vpush {d8-d15}
+.endm
+
+.macro pixman_composite_over_8888_8_8888_cleanup
+ vpop {d8-d15}
+.endm
+
+generate_composite_function \
+ pixman_composite_over_8888_8_8888_asm_neon, 32, 8, 32, \
+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
+ 8, /* number of pixels, processed in a single block */ \
+ 5, /* prefetch distance */ \
+ pixman_composite_over_8888_8_8888_init, \
+ pixman_composite_over_8888_8_8888_cleanup, \
+ pixman_composite_over_8888_n_8888_process_pixblock_head, \
+ pixman_composite_over_8888_n_8888_process_pixblock_tail, \
+ pixman_composite_over_8888_8_8888_process_pixblock_tail_head \
+ 28, /* dst_w_basereg */ \
+ 4, /* dst_r_basereg */ \
+ 0, /* src_basereg */ \
+ 15 /* mask_basereg */
+
+/******************************************************************************/
+
+.macro pixman_composite_src_0888_0888_process_pixblock_head
+.endm
+
+.macro pixman_composite_src_0888_0888_process_pixblock_tail
+.endm
+
+.macro pixman_composite_src_0888_0888_process_pixblock_tail_head
+ vst3.8 {d0, d1, d2}, [DST_W]!
+ vld3.8 {d0, d1, d2}, [SRC]!
+ cache_preload 8, 8
+.endm
+
+generate_composite_function \
+ pixman_composite_src_0888_0888_asm_neon, 24, 0, 24, \
+ FLAG_DST_WRITEONLY, \
+ 8, /* number of pixels, processed in a single block */ \
+ 10, /* prefetch distance */ \
+ default_init, \
+ default_cleanup, \
+ pixman_composite_src_0888_0888_process_pixblock_head, \
+ pixman_composite_src_0888_0888_process_pixblock_tail, \
+ pixman_composite_src_0888_0888_process_pixblock_tail_head, \
+ 0, /* dst_w_basereg */ \
+ 0, /* dst_r_basereg */ \
+ 0, /* src_basereg */ \
+ 0 /* mask_basereg */
+
+/******************************************************************************/
+
+.macro pixman_composite_src_0888_8888_rev_process_pixblock_head
+ vswp d0, d2
+.endm
+
+.macro pixman_composite_src_0888_8888_rev_process_pixblock_tail
+.endm
+
+.macro pixman_composite_src_0888_8888_rev_process_pixblock_tail_head
+ vst4.8 {d0, d1, d2, d3}, [DST_W]!
+ vld3.8 {d0, d1, d2}, [SRC]!
+ vswp d0, d2
+ cache_preload 8, 8
+.endm
+
+.macro pixman_composite_src_0888_8888_rev_init
+ veor d3, d3, d3
+.endm
+
+generate_composite_function \
+ pixman_composite_src_0888_8888_rev_asm_neon, 24, 0, 32, \
+ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
+ 8, /* number of pixels, processed in a single block */ \
+ 10, /* prefetch distance */ \
+ pixman_composite_src_0888_8888_rev_init, \
+ default_cleanup, \
+ pixman_composite_src_0888_8888_rev_process_pixblock_head, \
+ pixman_composite_src_0888_8888_rev_process_pixblock_tail, \
+ pixman_composite_src_0888_8888_rev_process_pixblock_tail_head, \
+ 0, /* dst_w_basereg */ \
+ 0, /* dst_r_basereg */ \
+ 0, /* src_basereg */ \
+ 0 /* mask_basereg */
+
+/******************************************************************************/
+
+.macro pixman_composite_src_0888_0565_rev_process_pixblock_head
+ vshll.u8 q8, d1, #8
+ vshll.u8 q9, d2, #8
+.endm
+
+.macro pixman_composite_src_0888_0565_rev_process_pixblock_tail
+ vshll.u8 q14, d0, #8
+ vsri.u16 q14, q8, #5
+ vsri.u16 q14, q9, #11
+.endm
+
+.macro pixman_composite_src_0888_0565_rev_process_pixblock_tail_head
+ vshll.u8 q14, d0, #8
+ vld3.8 {d0, d1, d2}, [SRC]!
+ vsri.u16 q14, q8, #5
+ vsri.u16 q14, q9, #11
+ vshll.u8 q8, d1, #8
+ vst1.16 {d28, d29}, [DST_W, :128]!
+ vshll.u8 q9, d2, #8
+.endm
+
+generate_composite_function \
+ pixman_composite_src_0888_0565_rev_asm_neon, 24, 0, 16, \
+ FLAG_DST_WRITEONLY, \
+ 8, /* number of pixels, processed in a single block */ \
+ 10, /* prefetch distance */ \
+ default_init, \
+ default_cleanup, \
+ pixman_composite_src_0888_0565_rev_process_pixblock_head, \
+ pixman_composite_src_0888_0565_rev_process_pixblock_tail, \
+ pixman_composite_src_0888_0565_rev_process_pixblock_tail_head, \
+ 28, /* dst_w_basereg */ \
+ 0, /* dst_r_basereg */ \
+ 0, /* src_basereg */ \
+ 0 /* mask_basereg */
+
+/******************************************************************************/
+
+.macro pixman_composite_src_pixbuf_8888_process_pixblock_head
+ vmull.u8 q8, d3, d0
+ vmull.u8 q9, d3, d1
+ vmull.u8 q10, d3, d2
+.endm
+
+.macro pixman_composite_src_pixbuf_8888_process_pixblock_tail
+ vrshr.u16 q11, q8, #8
+ vswp d3, d31
+ vrshr.u16 q12, q9, #8
+ vrshr.u16 q13, q10, #8
+ vraddhn.u16 d30, q11, q8
+ vraddhn.u16 d29, q12, q9
+ vraddhn.u16 d28, q13, q10
+.endm
+
+.macro pixman_composite_src_pixbuf_8888_process_pixblock_tail_head
+ vrshr.u16 q11, q8, #8
+ vswp d3, d31
+ vrshr.u16 q12, q9, #8
+ vrshr.u16 q13, q10, #8
+ vld4.8 {d0, d1, d2, d3}, [SRC]!
+ vraddhn.u16 d30, q11, q8
+ PF add PF_X, PF_X, #8
+ PF tst PF_CTL, #0xF
+ PF addne PF_X, PF_X, #8
+ PF subne PF_CTL, PF_CTL, #1
+ vraddhn.u16 d29, q12, q9
+ vraddhn.u16 d28, q13, q10
+ vmull.u8 q8, d3, d0
+ vmull.u8 q9, d3, d1
+ vmull.u8 q10, d3, d2
+ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]!
+ PF cmp PF_X, ORIG_W
+ PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
+ PF subge PF_X, PF_X, ORIG_W
+ PF subges PF_CTL, PF_CTL, #0x10
+ PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
+.endm
+
+generate_composite_function \
+ pixman_composite_src_pixbuf_8888_asm_neon, 32, 0, 32, \
+ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
+ 8, /* number of pixels, processed in a single block */ \
+ 10, /* prefetch distance */ \
+ default_init, \
+ default_cleanup, \
+ pixman_composite_src_pixbuf_8888_process_pixblock_head, \
+ pixman_composite_src_pixbuf_8888_process_pixblock_tail, \
+ pixman_composite_src_pixbuf_8888_process_pixblock_tail_head, \
+ 28, /* dst_w_basereg */ \
+ 0, /* dst_r_basereg */ \
+ 0, /* src_basereg */ \
+ 0 /* mask_basereg */
diff --git a/pixman/pixman/pixman-arm-neon.c b/pixman/pixman/pixman-arm-neon.c index 6808b3658..ce049b280 100644 --- a/pixman/pixman/pixman-arm-neon.c +++ b/pixman/pixman/pixman-arm-neon.c @@ -1,352 +1,354 @@ -/* - * Copyright © 2009 ARM Ltd, Movial Creative Technologies Oy - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of ARM Ltd not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. ARM Ltd makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY - * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN - * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING - * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - * - * Author: Ian Rickards (ian.rickards@arm.com) - * Author: Jonathan Morton (jonathan.morton@movial.com) - * Author: Markku Vire (markku.vire@movial.com) - * - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <string.h> -#include "pixman-private.h" -#include "pixman-arm-common.h" - -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_8888_8888, - uint32_t, 1, uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_x888_8888, - uint32_t, 1, uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_0565_0565, - uint16_t, 1, uint16_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_0888_0888, - uint8_t, 3, uint8_t, 3) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_8888_0565, - uint32_t, 1, uint16_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_0565_8888, - uint16_t, 1, uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_0888_8888_rev, - uint8_t, 3, uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_0888_0565_rev, - uint8_t, 3, uint16_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_pixbuf_8888, - uint32_t, 1, uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, add_8000_8000, - uint8_t, 1, uint8_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, add_8888_8888, - uint32_t, 1, uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, over_8888_0565, - uint32_t, 1, uint16_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, over_8888_8888, - uint32_t, 1, uint32_t, 1) - -PIXMAN_ARM_BIND_FAST_PATH_N_DST (neon, over_n_0565, - uint16_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_N_DST (neon, over_n_8888, - uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_N_DST (neon, over_reverse_n_8888, - uint32_t, 1) - -PIXMAN_ARM_BIND_FAST_PATH_N_MASK_DST (neon, over_n_8_0565, - uint8_t, 1, uint16_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_N_MASK_DST (neon, over_n_8_8888, - uint8_t, 1, uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_N_MASK_DST (neon, over_n_8888_8888_ca, - uint32_t, 1, uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_N_MASK_DST (neon, add_n_8_8, - uint8_t, 1, uint8_t, 1) - -PIXMAN_ARM_BIND_FAST_PATH_SRC_N_DST (neon, over_8888_n_8888, - uint32_t, 1, uint32_t, 1) - -PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST (neon, add_8_8_8, - uint8_t, 1, uint8_t, 1, uint8_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST (neon, add_8888_8888_8888, - uint32_t, 1, uint32_t, 1, uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST (neon, over_8888_8_8888, - uint32_t, 1, uint8_t, 1, uint32_t, 1) -PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST (neon, over_8888_8888_8888, - uint32_t, 1, uint32_t, 1, uint32_t, 1) - -void -pixman_composite_src_n_8_asm_neon (int32_t w, - int32_t h, - uint8_t *dst, - int32_t dst_stride, - uint8_t src); - -void -pixman_composite_src_n_0565_asm_neon (int32_t w, - int32_t h, - uint16_t *dst, - int32_t dst_stride, - uint16_t src); - -void -pixman_composite_src_n_8888_asm_neon (int32_t w, - int32_t h, - uint32_t *dst, - int32_t dst_stride, - uint32_t src); - -static pixman_bool_t -pixman_fill_neon (uint32_t *bits, - int stride, - int bpp, - int x, - int y, - int width, - int height, - uint32_t _xor) -{ - /* stride is always multiple of 32bit units in pixman */ - uint32_t byte_stride = stride * sizeof(uint32_t); - - switch (bpp) - { - case 8: - pixman_composite_src_n_8_asm_neon ( - width, - height, - (uint8_t *)(((char *) bits) + y * byte_stride + x), - byte_stride, - _xor & 0xff); - return TRUE; - case 16: - pixman_composite_src_n_0565_asm_neon ( - width, - height, - (uint16_t *)(((char *) bits) + y * byte_stride + x * 2), - byte_stride / 2, - _xor & 0xffff); - return TRUE; - case 32: - pixman_composite_src_n_8888_asm_neon ( - width, - height, - (uint32_t *)(((char *) bits) + y * byte_stride + x * 4), - byte_stride / 4, - _xor); - return TRUE; - default: - return FALSE; - } -} - -static pixman_bool_t -pixman_blt_neon (uint32_t *src_bits, - uint32_t *dst_bits, - int src_stride, - int dst_stride, - int src_bpp, - int dst_bpp, - int src_x, - int src_y, - int dst_x, - int dst_y, - int width, - int height) -{ - if (src_bpp != dst_bpp) - return FALSE; - - switch (src_bpp) - { - case 16: - pixman_composite_src_0565_0565_asm_neon ( - width, height, - (uint16_t *)(((char *) dst_bits) + - dst_y * dst_stride * 4 + dst_x * 2), dst_stride * 2, - (uint16_t *)(((char *) src_bits) + - src_y * src_stride * 4 + src_x * 2), src_stride * 2); - return TRUE; - case 32: - pixman_composite_src_8888_8888_asm_neon ( - width, height, - (uint32_t *)(((char *) dst_bits) + - dst_y * dst_stride * 4 + dst_x * 4), dst_stride, - (uint32_t *)(((char *) src_bits) + - src_y * src_stride * 4 + src_x * 4), src_stride); - return TRUE; - default: - return FALSE; - } -} - -static const pixman_fast_path_t arm_neon_fast_paths[] = -{ - PIXMAN_STD_FAST_PATH (SRC, r5g6b5, null, r5g6b5, neon_composite_src_0565_0565), - PIXMAN_STD_FAST_PATH (SRC, b5g6r5, null, b5g6r5, neon_composite_src_0565_0565), - PIXMAN_STD_FAST_PATH (SRC, a8r8g8b8, null, r5g6b5, neon_composite_src_8888_0565), - PIXMAN_STD_FAST_PATH (SRC, x8r8g8b8, null, r5g6b5, neon_composite_src_8888_0565), - PIXMAN_STD_FAST_PATH (SRC, a8b8g8r8, null, b5g6r5, neon_composite_src_8888_0565), - PIXMAN_STD_FAST_PATH (SRC, x8b8g8r8, null, b5g6r5, neon_composite_src_8888_0565), - PIXMAN_STD_FAST_PATH (SRC, r5g6b5, null, a8r8g8b8, neon_composite_src_0565_8888), - PIXMAN_STD_FAST_PATH (SRC, r5g6b5, null, x8r8g8b8, neon_composite_src_0565_8888), - PIXMAN_STD_FAST_PATH (SRC, b5g6r5, null, a8b8g8r8, neon_composite_src_0565_8888), - PIXMAN_STD_FAST_PATH (SRC, b5g6r5, null, x8b8g8r8, neon_composite_src_0565_8888), - PIXMAN_STD_FAST_PATH (SRC, a8r8g8b8, null, x8r8g8b8, neon_composite_src_8888_8888), - PIXMAN_STD_FAST_PATH (SRC, x8r8g8b8, null, x8r8g8b8, neon_composite_src_8888_8888), - PIXMAN_STD_FAST_PATH (SRC, a8b8g8r8, null, x8b8g8r8, neon_composite_src_8888_8888), - PIXMAN_STD_FAST_PATH (SRC, x8b8g8r8, null, x8b8g8r8, neon_composite_src_8888_8888), - PIXMAN_STD_FAST_PATH (SRC, a8r8g8b8, null, a8r8g8b8, neon_composite_src_8888_8888), - PIXMAN_STD_FAST_PATH (SRC, a8b8g8r8, null, a8b8g8r8, neon_composite_src_8888_8888), - PIXMAN_STD_FAST_PATH (SRC, x8r8g8b8, null, a8r8g8b8, neon_composite_src_x888_8888), - PIXMAN_STD_FAST_PATH (SRC, x8b8g8r8, null, a8b8g8r8, neon_composite_src_x888_8888), - PIXMAN_STD_FAST_PATH (SRC, r8g8b8, null, r8g8b8, neon_composite_src_0888_0888), - PIXMAN_STD_FAST_PATH (SRC, b8g8r8, null, x8r8g8b8, neon_composite_src_0888_8888_rev), - PIXMAN_STD_FAST_PATH (SRC, b8g8r8, null, r5g6b5, neon_composite_src_0888_0565_rev), - PIXMAN_STD_FAST_PATH (SRC, pixbuf, pixbuf, a8r8g8b8, neon_composite_src_pixbuf_8888), - PIXMAN_STD_FAST_PATH (OVER, solid, a8, r5g6b5, neon_composite_over_n_8_0565), - PIXMAN_STD_FAST_PATH (OVER, solid, a8, b5g6r5, neon_composite_over_n_8_0565), - PIXMAN_STD_FAST_PATH (OVER, solid, a8, a8r8g8b8, neon_composite_over_n_8_8888), - PIXMAN_STD_FAST_PATH (OVER, solid, a8, x8r8g8b8, neon_composite_over_n_8_8888), - PIXMAN_STD_FAST_PATH (OVER, solid, a8, a8b8g8r8, neon_composite_over_n_8_8888), - PIXMAN_STD_FAST_PATH (OVER, solid, a8, x8b8g8r8, neon_composite_over_n_8_8888), - PIXMAN_STD_FAST_PATH (OVER, solid, null, r5g6b5, neon_composite_over_n_0565), - PIXMAN_STD_FAST_PATH (OVER, solid, null, a8r8g8b8, neon_composite_over_n_8888), - PIXMAN_STD_FAST_PATH (OVER, solid, null, x8r8g8b8, neon_composite_over_n_8888), - PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8r8g8b8, a8r8g8b8, neon_composite_over_n_8888_8888_ca), - PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8r8g8b8, x8r8g8b8, neon_composite_over_n_8888_8888_ca), - PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8b8g8r8, a8b8g8r8, neon_composite_over_n_8888_8888_ca), - PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8b8g8r8, x8b8g8r8, neon_composite_over_n_8888_8888_ca), - PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid, a8r8g8b8, neon_composite_over_8888_n_8888), - PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid, x8r8g8b8, neon_composite_over_8888_n_8888), - PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, a8, a8r8g8b8, neon_composite_over_8888_8_8888), - PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, a8, x8r8g8b8, neon_composite_over_8888_8_8888), - PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, a8, a8b8g8r8, neon_composite_over_8888_8_8888), - PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, a8, x8b8g8r8, neon_composite_over_8888_8_8888), - PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, a8r8g8b8, a8r8g8b8, neon_composite_over_8888_8888_8888), - PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, r5g6b5, neon_composite_over_8888_0565), - PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, b5g6r5, neon_composite_over_8888_0565), - PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, a8r8g8b8, neon_composite_over_8888_8888), - PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, x8r8g8b8, neon_composite_over_8888_8888), - PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, a8b8g8r8, neon_composite_over_8888_8888), - PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, x8b8g8r8, neon_composite_over_8888_8888), - PIXMAN_STD_FAST_PATH (OVER, x8r8g8b8, null, a8r8g8b8, neon_composite_src_x888_8888), - PIXMAN_STD_FAST_PATH (OVER, x8b8g8r8, null, a8b8g8r8, neon_composite_src_x888_8888), - PIXMAN_STD_FAST_PATH (ADD, solid, a8, a8, neon_composite_add_n_8_8), - PIXMAN_STD_FAST_PATH (ADD, a8, a8, a8, neon_composite_add_8_8_8), - PIXMAN_STD_FAST_PATH (ADD, a8r8g8b8, a8r8g8b8, a8r8g8b8, neon_composite_add_8888_8888_8888), - PIXMAN_STD_FAST_PATH (ADD, a8, null, a8, neon_composite_add_8000_8000), - PIXMAN_STD_FAST_PATH (ADD, a8r8g8b8, null, a8r8g8b8, neon_composite_add_8888_8888), - PIXMAN_STD_FAST_PATH (ADD, a8b8g8r8, null, a8b8g8r8, neon_composite_add_8888_8888), - PIXMAN_STD_FAST_PATH (OVER_REVERSE, solid, null, a8r8g8b8, neon_composite_over_reverse_n_8888), - PIXMAN_STD_FAST_PATH (OVER_REVERSE, solid, null, a8b8g8r8, neon_composite_over_reverse_n_8888), - - { PIXMAN_OP_NONE }, -}; - -static pixman_bool_t -arm_neon_blt (pixman_implementation_t *imp, - uint32_t * src_bits, - uint32_t * dst_bits, - int src_stride, - int dst_stride, - int src_bpp, - int dst_bpp, - int src_x, - int src_y, - int dst_x, - int dst_y, - int width, - int height) -{ - if (!pixman_blt_neon ( - src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp, - src_x, src_y, dst_x, dst_y, width, height)) - - { - return _pixman_implementation_blt ( - imp->delegate, - src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp, - src_x, src_y, dst_x, dst_y, width, height); - } - - return TRUE; -} - -static pixman_bool_t -arm_neon_fill (pixman_implementation_t *imp, - uint32_t * bits, - int stride, - int bpp, - int x, - int y, - int width, - int height, - uint32_t xor) -{ - if (pixman_fill_neon (bits, stride, bpp, x, y, width, height, xor)) - return TRUE; - - return _pixman_implementation_fill ( - imp->delegate, bits, stride, bpp, x, y, width, height, xor); -} - -#define BIND_COMBINE_U(name) \ -void \ -pixman_composite_scanline_##name##_mask_asm_neon (int32_t w, \ - const uint32_t *dst, \ - const uint32_t *src, \ - const uint32_t *mask); \ - \ -void \ -pixman_composite_scanline_##name##_asm_neon (int32_t w, \ - const uint32_t *dst, \ - const uint32_t *src); \ - \ -static void \ -neon_combine_##name##_u (pixman_implementation_t *imp, \ - pixman_op_t op, \ - uint32_t * dest, \ - const uint32_t * src, \ - const uint32_t * mask, \ - int width) \ -{ \ - if (mask) \ - pixman_composite_scanline_##name##_mask_asm_neon (width, dest, \ - src, mask); \ - else \ - pixman_composite_scanline_##name##_asm_neon (width, dest, src); \ -} - -BIND_COMBINE_U (over) -BIND_COMBINE_U (add) - -pixman_implementation_t * -_pixman_implementation_create_arm_neon (void) -{ - pixman_implementation_t *general = _pixman_implementation_create_fast_path (); - pixman_implementation_t *imp = - _pixman_implementation_create (general, arm_neon_fast_paths); - - imp->combine_32[PIXMAN_OP_OVER] = neon_combine_over_u; - imp->combine_32[PIXMAN_OP_ADD] = neon_combine_add_u; - - imp->blt = arm_neon_blt; - imp->fill = arm_neon_fill; - - return imp; -} +/*
+ * Copyright © 2009 ARM Ltd, Movial Creative Technologies Oy
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of ARM Ltd not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. ARM Ltd makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Ian Rickards (ian.rickards@arm.com)
+ * Author: Jonathan Morton (jonathan.morton@movial.com)
+ * Author: Markku Vire (markku.vire@movial.com)
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <string.h>
+#include "pixman-private.h"
+#include "pixman-arm-common.h"
+
+PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_8888_8888,
+ uint32_t, 1, uint32_t, 1)
+PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_x888_8888,
+ uint32_t, 1, uint32_t, 1)
+PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_0565_0565,
+ uint16_t, 1, uint16_t, 1)
+PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_0888_0888,
+ uint8_t, 3, uint8_t, 3)
+PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_8888_0565,
+ uint32_t, 1, uint16_t, 1)
+PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_0565_8888,
+ uint16_t, 1, uint32_t, 1)
+PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_0888_8888_rev,
+ uint8_t, 3, uint32_t, 1)
+PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_0888_0565_rev,
+ uint8_t, 3, uint16_t, 1)
+PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, src_pixbuf_8888,
+ uint32_t, 1, uint32_t, 1)
+PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, add_8000_8000,
+ uint8_t, 1, uint8_t, 1)
+PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, add_8888_8888,
+ uint32_t, 1, uint32_t, 1)
+PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, over_8888_0565,
+ uint32_t, 1, uint16_t, 1)
+PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (neon, over_8888_8888,
+ uint32_t, 1, uint32_t, 1)
+
+PIXMAN_ARM_BIND_FAST_PATH_N_DST (neon, over_n_0565,
+ uint16_t, 1)
+PIXMAN_ARM_BIND_FAST_PATH_N_DST (neon, over_n_8888,
+ uint32_t, 1)
+PIXMAN_ARM_BIND_FAST_PATH_N_DST (neon, over_reverse_n_8888,
+ uint32_t, 1)
+
+PIXMAN_ARM_BIND_FAST_PATH_N_MASK_DST (neon, over_n_8_0565,
+ uint8_t, 1, uint16_t, 1)
+PIXMAN_ARM_BIND_FAST_PATH_N_MASK_DST (neon, over_n_8_8888,
+ uint8_t, 1, uint32_t, 1)
+PIXMAN_ARM_BIND_FAST_PATH_N_MASK_DST (neon, over_n_8888_8888_ca,
+ uint32_t, 1, uint32_t, 1)
+PIXMAN_ARM_BIND_FAST_PATH_N_MASK_DST (neon, add_n_8_8,
+ uint8_t, 1, uint8_t, 1)
+
+PIXMAN_ARM_BIND_FAST_PATH_SRC_N_DST (neon, over_8888_n_8888,
+ uint32_t, 1, uint32_t, 1)
+
+PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST (neon, add_8_8_8,
+ uint8_t, 1, uint8_t, 1, uint8_t, 1)
+PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST (neon, add_8888_8888_8888,
+ uint32_t, 1, uint32_t, 1, uint32_t, 1)
+PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST (neon, over_8888_8_8888,
+ uint32_t, 1, uint8_t, 1, uint32_t, 1)
+PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST (neon, over_8888_8888_8888,
+ uint32_t, 1, uint32_t, 1, uint32_t, 1)
+
+void
+pixman_composite_src_n_8_asm_neon (int32_t w,
+ int32_t h,
+ uint8_t *dst,
+ int32_t dst_stride,
+ uint8_t src);
+
+void
+pixman_composite_src_n_0565_asm_neon (int32_t w,
+ int32_t h,
+ uint16_t *dst,
+ int32_t dst_stride,
+ uint16_t src);
+
+void
+pixman_composite_src_n_8888_asm_neon (int32_t w,
+ int32_t h,
+ uint32_t *dst,
+ int32_t dst_stride,
+ uint32_t src);
+
+static pixman_bool_t
+pixman_fill_neon (uint32_t *bits,
+ int stride,
+ int bpp,
+ int x,
+ int y,
+ int width,
+ int height,
+ uint32_t _xor)
+{
+ /* stride is always multiple of 32bit units in pixman */
+ uint32_t byte_stride = stride * sizeof(uint32_t);
+
+ switch (bpp)
+ {
+ case 8:
+ pixman_composite_src_n_8_asm_neon (
+ width,
+ height,
+ (uint8_t *)(((char *) bits) + y * byte_stride + x),
+ byte_stride,
+ _xor & 0xff);
+ return TRUE;
+ case 16:
+ pixman_composite_src_n_0565_asm_neon (
+ width,
+ height,
+ (uint16_t *)(((char *) bits) + y * byte_stride + x * 2),
+ byte_stride / 2,
+ _xor & 0xffff);
+ return TRUE;
+ case 32:
+ pixman_composite_src_n_8888_asm_neon (
+ width,
+ height,
+ (uint32_t *)(((char *) bits) + y * byte_stride + x * 4),
+ byte_stride / 4,
+ _xor);
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
+static pixman_bool_t
+pixman_blt_neon (uint32_t *src_bits,
+ uint32_t *dst_bits,
+ int src_stride,
+ int dst_stride,
+ int src_bpp,
+ int dst_bpp,
+ int src_x,
+ int src_y,
+ int dst_x,
+ int dst_y,
+ int width,
+ int height)
+{
+ if (src_bpp != dst_bpp)
+ return FALSE;
+
+ switch (src_bpp)
+ {
+ case 16:
+ pixman_composite_src_0565_0565_asm_neon (
+ width, height,
+ (uint16_t *)(((char *) dst_bits) +
+ dst_y * dst_stride * 4 + dst_x * 2), dst_stride * 2,
+ (uint16_t *)(((char *) src_bits) +
+ src_y * src_stride * 4 + src_x * 2), src_stride * 2);
+ return TRUE;
+ case 32:
+ pixman_composite_src_8888_8888_asm_neon (
+ width, height,
+ (uint32_t *)(((char *) dst_bits) +
+ dst_y * dst_stride * 4 + dst_x * 4), dst_stride,
+ (uint32_t *)(((char *) src_bits) +
+ src_y * src_stride * 4 + src_x * 4), src_stride);
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
+static const pixman_fast_path_t arm_neon_fast_paths[] =
+{
+ PIXMAN_STD_FAST_PATH (SRC, r5g6b5, null, r5g6b5, neon_composite_src_0565_0565),
+ PIXMAN_STD_FAST_PATH (SRC, b5g6r5, null, b5g6r5, neon_composite_src_0565_0565),
+ PIXMAN_STD_FAST_PATH (SRC, a8r8g8b8, null, r5g6b5, neon_composite_src_8888_0565),
+ PIXMAN_STD_FAST_PATH (SRC, x8r8g8b8, null, r5g6b5, neon_composite_src_8888_0565),
+ PIXMAN_STD_FAST_PATH (SRC, a8b8g8r8, null, b5g6r5, neon_composite_src_8888_0565),
+ PIXMAN_STD_FAST_PATH (SRC, x8b8g8r8, null, b5g6r5, neon_composite_src_8888_0565),
+ PIXMAN_STD_FAST_PATH (SRC, r5g6b5, null, a8r8g8b8, neon_composite_src_0565_8888),
+ PIXMAN_STD_FAST_PATH (SRC, r5g6b5, null, x8r8g8b8, neon_composite_src_0565_8888),
+ PIXMAN_STD_FAST_PATH (SRC, b5g6r5, null, a8b8g8r8, neon_composite_src_0565_8888),
+ PIXMAN_STD_FAST_PATH (SRC, b5g6r5, null, x8b8g8r8, neon_composite_src_0565_8888),
+ PIXMAN_STD_FAST_PATH (SRC, a8r8g8b8, null, x8r8g8b8, neon_composite_src_8888_8888),
+ PIXMAN_STD_FAST_PATH (SRC, x8r8g8b8, null, x8r8g8b8, neon_composite_src_8888_8888),
+ PIXMAN_STD_FAST_PATH (SRC, a8b8g8r8, null, x8b8g8r8, neon_composite_src_8888_8888),
+ PIXMAN_STD_FAST_PATH (SRC, x8b8g8r8, null, x8b8g8r8, neon_composite_src_8888_8888),
+ PIXMAN_STD_FAST_PATH (SRC, a8r8g8b8, null, a8r8g8b8, neon_composite_src_8888_8888),
+ PIXMAN_STD_FAST_PATH (SRC, a8b8g8r8, null, a8b8g8r8, neon_composite_src_8888_8888),
+ PIXMAN_STD_FAST_PATH (SRC, x8r8g8b8, null, a8r8g8b8, neon_composite_src_x888_8888),
+ PIXMAN_STD_FAST_PATH (SRC, x8b8g8r8, null, a8b8g8r8, neon_composite_src_x888_8888),
+ PIXMAN_STD_FAST_PATH (SRC, r8g8b8, null, r8g8b8, neon_composite_src_0888_0888),
+ PIXMAN_STD_FAST_PATH (SRC, b8g8r8, null, x8r8g8b8, neon_composite_src_0888_8888_rev),
+ PIXMAN_STD_FAST_PATH (SRC, b8g8r8, null, r5g6b5, neon_composite_src_0888_0565_rev),
+ PIXMAN_STD_FAST_PATH (SRC, pixbuf, pixbuf, a8r8g8b8, neon_composite_src_pixbuf_8888),
+ PIXMAN_STD_FAST_PATH (OVER, solid, a8, r5g6b5, neon_composite_over_n_8_0565),
+ PIXMAN_STD_FAST_PATH (OVER, solid, a8, b5g6r5, neon_composite_over_n_8_0565),
+ PIXMAN_STD_FAST_PATH (OVER, solid, a8, a8r8g8b8, neon_composite_over_n_8_8888),
+ PIXMAN_STD_FAST_PATH (OVER, solid, a8, x8r8g8b8, neon_composite_over_n_8_8888),
+ PIXMAN_STD_FAST_PATH (OVER, solid, a8, a8b8g8r8, neon_composite_over_n_8_8888),
+ PIXMAN_STD_FAST_PATH (OVER, solid, a8, x8b8g8r8, neon_composite_over_n_8_8888),
+ PIXMAN_STD_FAST_PATH (OVER, solid, null, r5g6b5, neon_composite_over_n_0565),
+ PIXMAN_STD_FAST_PATH (OVER, solid, null, a8r8g8b8, neon_composite_over_n_8888),
+ PIXMAN_STD_FAST_PATH (OVER, solid, null, x8r8g8b8, neon_composite_over_n_8888),
+ PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8r8g8b8, a8r8g8b8, neon_composite_over_n_8888_8888_ca),
+ PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8r8g8b8, x8r8g8b8, neon_composite_over_n_8888_8888_ca),
+ PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8b8g8r8, a8b8g8r8, neon_composite_over_n_8888_8888_ca),
+ PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8b8g8r8, x8b8g8r8, neon_composite_over_n_8888_8888_ca),
+ PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid, a8r8g8b8, neon_composite_over_8888_n_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid, x8r8g8b8, neon_composite_over_8888_n_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, a8, a8r8g8b8, neon_composite_over_8888_8_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, a8, x8r8g8b8, neon_composite_over_8888_8_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, a8, a8b8g8r8, neon_composite_over_8888_8_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, a8, x8b8g8r8, neon_composite_over_8888_8_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, a8r8g8b8, a8r8g8b8, neon_composite_over_8888_8888_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, r5g6b5, neon_composite_over_8888_0565),
+ PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, b5g6r5, neon_composite_over_8888_0565),
+ PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, a8r8g8b8, neon_composite_over_8888_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, x8r8g8b8, neon_composite_over_8888_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, a8b8g8r8, neon_composite_over_8888_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, x8b8g8r8, neon_composite_over_8888_8888),
+ PIXMAN_STD_FAST_PATH (OVER, x8r8g8b8, null, a8r8g8b8, neon_composite_src_x888_8888),
+ PIXMAN_STD_FAST_PATH (OVER, x8b8g8r8, null, a8b8g8r8, neon_composite_src_x888_8888),
+ PIXMAN_STD_FAST_PATH (ADD, solid, a8, a8, neon_composite_add_n_8_8),
+ PIXMAN_STD_FAST_PATH (ADD, a8, a8, a8, neon_composite_add_8_8_8),
+ PIXMAN_STD_FAST_PATH (ADD, a8r8g8b8, a8r8g8b8, a8r8g8b8, neon_composite_add_8888_8888_8888),
+ PIXMAN_STD_FAST_PATH (ADD, a8, null, a8, neon_composite_add_8000_8000),
+ PIXMAN_STD_FAST_PATH (ADD, a8r8g8b8, null, a8r8g8b8, neon_composite_add_8888_8888),
+ PIXMAN_STD_FAST_PATH (ADD, a8b8g8r8, null, a8b8g8r8, neon_composite_add_8888_8888),
+ PIXMAN_STD_FAST_PATH (OVER_REVERSE, solid, null, a8r8g8b8, neon_composite_over_reverse_n_8888),
+ PIXMAN_STD_FAST_PATH (OVER_REVERSE, solid, null, a8b8g8r8, neon_composite_over_reverse_n_8888),
+
+ { PIXMAN_OP_NONE },
+};
+
+static pixman_bool_t
+arm_neon_blt (pixman_implementation_t *imp,
+ uint32_t * src_bits,
+ uint32_t * dst_bits,
+ int src_stride,
+ int dst_stride,
+ int src_bpp,
+ int dst_bpp,
+ int src_x,
+ int src_y,
+ int dst_x,
+ int dst_y,
+ int width,
+ int height)
+{
+ if (!pixman_blt_neon (
+ src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp,
+ src_x, src_y, dst_x, dst_y, width, height))
+
+ {
+ return _pixman_implementation_blt (
+ imp->delegate,
+ src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp,
+ src_x, src_y, dst_x, dst_y, width, height);
+ }
+
+ return TRUE;
+}
+
+static pixman_bool_t
+arm_neon_fill (pixman_implementation_t *imp,
+ uint32_t * bits,
+ int stride,
+ int bpp,
+ int x,
+ int y,
+ int width,
+ int height,
+ uint32_t xor)
+{
+ if (pixman_fill_neon (bits, stride, bpp, x, y, width, height, xor))
+ return TRUE;
+
+ return _pixman_implementation_fill (
+ imp->delegate, bits, stride, bpp, x, y, width, height, xor);
+}
+
+#define BIND_COMBINE_U(name) \
+void \
+pixman_composite_scanline_##name##_mask_asm_neon (int32_t w, \
+ const uint32_t *dst, \
+ const uint32_t *src, \
+ const uint32_t *mask); \
+ \
+void \
+pixman_composite_scanline_##name##_asm_neon (int32_t w, \
+ const uint32_t *dst, \
+ const uint32_t *src); \
+ \
+static void \
+neon_combine_##name##_u (pixman_implementation_t *imp, \
+ pixman_op_t op, \
+ uint32_t * dest, \
+ const uint32_t * src, \
+ const uint32_t * mask, \
+ int width) \
+{ \
+ if (mask) \
+ pixman_composite_scanline_##name##_mask_asm_neon (width, dest, \
+ src, mask); \
+ else \
+ pixman_composite_scanline_##name##_asm_neon (width, dest, src); \
+}
+
+BIND_COMBINE_U (over)
+BIND_COMBINE_U (add)
+BIND_COMBINE_U (out_reverse)
+
+pixman_implementation_t *
+_pixman_implementation_create_arm_neon (void)
+{
+ pixman_implementation_t *general = _pixman_implementation_create_fast_path ();
+ pixman_implementation_t *imp =
+ _pixman_implementation_create (general, arm_neon_fast_paths);
+
+ imp->combine_32[PIXMAN_OP_OVER] = neon_combine_over_u;
+ imp->combine_32[PIXMAN_OP_ADD] = neon_combine_add_u;
+ imp->combine_32[PIXMAN_OP_OUT_REVERSE] = neon_combine_out_reverse_u;
+
+ imp->blt = arm_neon_blt;
+ imp->fill = arm_neon_fill;
+
+ return imp;
+}
diff --git a/pixman/pixman/pixman-fast-path.c b/pixman/pixman/pixman-fast-path.c index 8165db4c7..6c214fede 100644 --- a/pixman/pixman/pixman-fast-path.c +++ b/pixman/pixman/pixman-fast-path.c @@ -1591,13 +1591,6 @@ fast_composite_scaled_nearest_ ## scale_func_name ## _ ## OP (pixman_implementat if (w & 1) \
{ \
x1 = vx >> 16; \
- vx += unit_x; \
- if (PIXMAN_REPEAT_ ## repeat_mode == PIXMAN_REPEAT_NORMAL) \
- { \
- /* This works because we know that unit_x is positive */ \
- while (vx >= max_vx) \
- vx -= max_vx; \
- } \
s1 = src[x1]; \
\
if (PIXMAN_OP_ ## OP == PIXMAN_OP_OVER) \
diff --git a/pixman/pixman/pixman-image.c b/pixman/pixman/pixman-image.c index 1cce9273d..3020f246c 100644 --- a/pixman/pixman/pixman-image.c +++ b/pixman/pixman/pixman-image.c @@ -101,6 +101,7 @@ _pixman_image_allocate (void) pixman_region32_init (&common->clip_region);
+ common->alpha_count = 0;
common->have_clip_region = FALSE;
common->clip_sources = FALSE;
common->transform = NULL;
@@ -408,12 +409,14 @@ compute_image_info (pixman_image_t *image) }
}
- if (image->common.repeat != PIXMAN_REPEAT_NONE &&
- !PIXMAN_FORMAT_A (image->bits.format) &&
+ if (!PIXMAN_FORMAT_A (image->bits.format) &&
PIXMAN_FORMAT_TYPE (image->bits.format) != PIXMAN_TYPE_GRAY &&
PIXMAN_FORMAT_TYPE (image->bits.format) != PIXMAN_TYPE_COLOR)
{
- flags |= FAST_PATH_IS_OPAQUE;
+ flags |= FAST_PATH_SAMPLES_OPAQUE;
+
+ if (image->common.repeat != PIXMAN_REPEAT_NONE)
+ flags |= FAST_PATH_IS_OPAQUE;
}
if (source_image_needs_out_of_bounds_workaround (&image->bits))
@@ -461,7 +464,7 @@ compute_image_info (pixman_image_t *image) image->common.filter == PIXMAN_FILTER_CONVOLUTION ||
image->common.component_alpha)
{
- flags &= ~FAST_PATH_IS_OPAQUE;
+ flags &= ~(FAST_PATH_IS_OPAQUE | FAST_PATH_SAMPLES_OPAQUE);
}
image->common.flags = flags;
@@ -668,15 +671,41 @@ pixman_image_set_alpha_map (pixman_image_t *image, return_if_fail (!alpha_map || alpha_map->type == BITS);
+ if (alpha_map && common->alpha_count > 0)
+ {
+ /* If this image is being used as an alpha map itself,
+ * then you can't give it an alpha map of its own.
+ */
+ return;
+ }
+
+ if (alpha_map && alpha_map->common.alpha_map)
+ {
+ /* If the image has an alpha map of its own,
+ * then it can't be used as an alpha map itself
+ */
+ return;
+ }
+
if (common->alpha_map != (bits_image_t *)alpha_map)
{
if (common->alpha_map)
+ {
+ common->alpha_map->common.alpha_count--;
+
pixman_image_unref ((pixman_image_t *)common->alpha_map);
+ }
if (alpha_map)
+ {
common->alpha_map = (bits_image_t *)pixman_image_ref (alpha_map);
+
+ common->alpha_map->common.alpha_count++;
+ }
else
+ {
common->alpha_map = NULL;
+ }
}
common->alpha_origin_x = x;
diff --git a/pixman/pixman/pixman-private.h b/pixman/pixman/pixman-private.h index 6774b1514..0a6cbd275 100644 --- a/pixman/pixman/pixman-private.h +++ b/pixman/pixman/pixman-private.h @@ -80,6 +80,7 @@ struct image_common image_type_t type;
int32_t ref_count;
pixman_region32_t clip_region;
+ int32_t alpha_count; /* How many times this image is being used as an alpha map */
pixman_bool_t have_clip_region; /* FALSE if there is no clip */
pixman_bool_t client_clip; /* Whether the source clip was
set by a client */
@@ -570,6 +571,7 @@ _pixman_choose_implementation (void); #define FAST_PATH_BILINEAR_FILTER (1 << 20)
#define FAST_PATH_NO_NORMAL_REPEAT (1 << 21)
#define FAST_PATH_HAS_TRANSFORM (1 << 22)
+#define FAST_PATH_SAMPLES_OPAQUE (1 << 23)
#define FAST_PATH_PAD_REPEAT \
(FAST_PATH_NO_NONE_REPEAT | \
diff --git a/pixman/pixman/pixman.c b/pixman/pixman/pixman.c index 1dbfd83f8..819bb5146 100644 --- a/pixman/pixman/pixman.c +++ b/pixman/pixman/pixman.c @@ -884,6 +884,17 @@ do_composite (pixman_op_t op, if (!analyze_extent (mask, dest_x - mask_x, dest_y - mask_y, extents, &mask_flags))
goto out;
+ /* If the clip is within the source samples, and the samples are opaque,
+ * then the source is effectively opaque.
+ */
+#define BOTH (FAST_PATH_SAMPLES_OPAQUE | FAST_PATH_SAMPLES_COVER_CLIP)
+
+ if ((src_flags & BOTH) == BOTH)
+ src_flags |= FAST_PATH_IS_OPAQUE;
+
+ if ((mask_flags & BOTH) == BOTH)
+ mask_flags |= FAST_PATH_IS_OPAQUE;
+
/*
* Check if we can replace our operator by a simpler one
* if the src or dest are opaque. The output operator should be
diff --git a/pixman/test/Makefile.am b/pixman/test/Makefile.am index efd9cd91a..d3e9d3fa0 100644 --- a/pixman/test/Makefile.am +++ b/pixman/test/Makefile.am @@ -13,6 +13,7 @@ TESTPROGRAMS = \ gradient-crash-test \
trap-crasher \
alphamap \
+ alpha-loop \
scaling-crash-test \
blitters-test \
scaling-test \
@@ -39,6 +40,9 @@ scaling_test_SOURCES = scaling-test.c utils.c utils.h alphamap_LDADD = $(TEST_LDADD)
alphamap_SOURCES = alphamap.c utils.c utils.h
+alpha_loop_LDADD = $(TEST_LDADD)
+alpha_loop_SOURCES = alpha-loop.c utils.c utils.h
+
# GTK using test programs
if HAVE_GTK
diff --git a/pixman/test/alpha-loop.c b/pixman/test/alpha-loop.c new file mode 100644 index 000000000..38fc21f5d --- /dev/null +++ b/pixman/test/alpha-loop.c @@ -0,0 +1,29 @@ +#include <stdio.h>
+#include <stdlib.h>
+#include "utils.h"
+
+#define WIDTH 400
+#define HEIGHT 200
+
+int
+main (int argc, char **argv)
+{
+ uint8_t *alpha = make_random_bytes (WIDTH * HEIGHT);
+ uint32_t *src = (uint32_t *)make_random_bytes (WIDTH * HEIGHT * 4);
+ uint32_t *dest = (uint32_t *)make_random_bytes (WIDTH * HEIGHT * 4);
+
+ pixman_image_t *a = pixman_image_create_bits (PIXMAN_a8, WIDTH, HEIGHT, (uint32_t *)alpha, WIDTH);
+ pixman_image_t *d = pixman_image_create_bits (PIXMAN_a8r8g8b8, WIDTH, HEIGHT, dest, WIDTH * 4);
+ pixman_image_t *s = pixman_image_create_bits (PIXMAN_a2r10g10b10, WIDTH, HEIGHT, src, WIDTH * 4);
+
+ fail_after (5, "Infinite loop detected: 5 seconds without progress\n");
+
+ pixman_image_set_alpha_map (s, a, 0, 0);
+ pixman_image_set_alpha_map (a, s, 0, 0);
+
+ pixman_image_composite (PIXMAN_OP_SRC, s, NULL, d, 0, 0, 0, 0, 0, 0, WIDTH, HEIGHT);
+
+ pixman_image_unref (s);
+
+ return 0;
+}
diff --git a/pixman/test/utils.c b/pixman/test/utils.c index 4b68debff..f5199268b 100644 --- a/pixman/test/utils.c +++ b/pixman/test/utils.c @@ -1,4 +1,9 @@ #include "utils.h"
+#include <signal.h>
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
/* Random number seed
*/
@@ -319,3 +324,31 @@ fuzzer_test_main (const char *test_name, return 0;
}
+
+static const char *global_msg;
+
+static void
+on_alarm (int signo)
+{
+ printf ("%s\n", global_msg);
+ exit (1);
+}
+
+void
+fail_after (int seconds, const char *msg)
+{
+#ifdef HAVE_SIGACTION
+#ifdef HAVE_ALARM
+ struct sigaction action;
+
+ global_msg = msg;
+
+ memset (&action, 0, sizeof (action));
+ action.sa_handler = on_alarm;
+
+ alarm (seconds);
+
+ sigaction (SIGALRM, &action, NULL);
+#endif
+#endif
+}
diff --git a/pixman/test/utils.h b/pixman/test/utils.h index 39b49b2c1..a5b3c91c4 100644 --- a/pixman/test/utils.h +++ b/pixman/test/utils.h @@ -62,3 +62,6 @@ fuzzer_test_main (const char *test_name, uint32_t (*test_function)(int testnum, int verbose),
int argc,
const char *argv[]);
+
+void
+fail_after (int seconds, const char *msg);
diff --git a/xorg-server/Xext/xace.c b/xorg-server/Xext/xace.c index bc621ff85..28c51687c 100644 --- a/xorg-server/Xext/xace.c +++ b/xorg-server/Xext/xace.c @@ -87,7 +87,18 @@ void XaceHookAuditEnd(ClientPtr ptr, int result) */
int XaceHook(int hook, ...)
{
- pointer calldata; /* data passed to callback */
+ union {
+ XaceResourceAccessRec res;
+ XaceDeviceAccessRec dev;
+ XaceSendAccessRec send;
+ XaceReceiveAccessRec recv;
+ XaceClientAccessRec client;
+ XaceExtAccessRec ext;
+ XaceServerAccessRec server;
+ XaceScreenAccessRec screen;
+ XaceAuthAvailRec auth;
+ XaceKeyAvailRec key;
+ } u;
int *prv = NULL; /* points to return value from callback */
va_list ap; /* argument list */
va_start(ap, hook);
@@ -99,117 +110,86 @@ int XaceHook(int hook, ...) */
switch (hook)
{
- case XACE_RESOURCE_ACCESS: {
- XaceResourceAccessRec rec;
- rec.client = va_arg(ap, ClientPtr);
- rec.id = va_arg(ap, XID);
- rec.rtype = va_arg(ap, RESTYPE);
- rec.res = va_arg(ap, pointer);
- rec.ptype = va_arg(ap, RESTYPE);
- rec.parent = va_arg(ap, pointer);
- rec.access_mode = va_arg(ap, Mask);
- rec.status = Success; /* default allow */
- calldata = &rec;
- prv = &rec.status;
+ case XACE_RESOURCE_ACCESS:
+ u.res.client = va_arg(ap, ClientPtr);
+ u.res.id = va_arg(ap, XID);
+ u.res.rtype = va_arg(ap, RESTYPE);
+ u.res.res = va_arg(ap, pointer);
+ u.res.ptype = va_arg(ap, RESTYPE);
+ u.res.parent = va_arg(ap, pointer);
+ u.res.access_mode = va_arg(ap, Mask);
+ u.res.status = Success; /* default allow */
+ prv = &u.res.status;
break;
- }
- case XACE_DEVICE_ACCESS: {
- XaceDeviceAccessRec rec;
- rec.client = va_arg(ap, ClientPtr);
- rec.dev = va_arg(ap, DeviceIntPtr);
- rec.access_mode = va_arg(ap, Mask);
- rec.status = Success; /* default allow */
- calldata = &rec;
- prv = &rec.status;
+ case XACE_DEVICE_ACCESS:
+ u.dev.client = va_arg(ap, ClientPtr);
+ u.dev.dev = va_arg(ap, DeviceIntPtr);
+ u.dev.access_mode = va_arg(ap, Mask);
+ u.dev.status = Success; /* default allow */
+ prv = &u.dev.status;
break;
- }
- case XACE_SEND_ACCESS: {
- XaceSendAccessRec rec;
- rec.client = va_arg(ap, ClientPtr);
- rec.dev = va_arg(ap, DeviceIntPtr);
- rec.pWin = va_arg(ap, WindowPtr);
- rec.events = va_arg(ap, xEventPtr);
- rec.count = va_arg(ap, int);
- rec.status = Success; /* default allow */
- calldata = &rec;
- prv = &rec.status;
+ case XACE_SEND_ACCESS:
+ u.send.client = va_arg(ap, ClientPtr);
+ u.send.dev = va_arg(ap, DeviceIntPtr);
+ u.send.pWin = va_arg(ap, WindowPtr);
+ u.send.events = va_arg(ap, xEventPtr);
+ u.send.count = va_arg(ap, int);
+ u.send.status = Success; /* default allow */
+ prv = &u.send.status;
break;
- }
- case XACE_RECEIVE_ACCESS: {
- XaceReceiveAccessRec rec;
- rec.client = va_arg(ap, ClientPtr);
- rec.pWin = va_arg(ap, WindowPtr);
- rec.events = va_arg(ap, xEventPtr);
- rec.count = va_arg(ap, int);
- rec.status = Success; /* default allow */
- calldata = &rec;
- prv = &rec.status;
+ case XACE_RECEIVE_ACCESS:
+ u.recv.client = va_arg(ap, ClientPtr);
+ u.recv.pWin = va_arg(ap, WindowPtr);
+ u.recv.events = va_arg(ap, xEventPtr);
+ u.recv.count = va_arg(ap, int);
+ u.recv.status = Success; /* default allow */
+ prv = &u.recv.status;
break;
- }
- case XACE_CLIENT_ACCESS: {
- XaceClientAccessRec rec;
- rec.client = va_arg(ap, ClientPtr);
- rec.target = va_arg(ap, ClientPtr);
- rec.access_mode = va_arg(ap, Mask);
- rec.status = Success; /* default allow */
- calldata = &rec;
- prv = &rec.status;
+ case XACE_CLIENT_ACCESS:
+ u.client.client = va_arg(ap, ClientPtr);
+ u.client.target = va_arg(ap, ClientPtr);
+ u.client.access_mode = va_arg(ap, Mask);
+ u.client.status = Success; /* default allow */
+ prv = &u.client.status;
break;
- }
- case XACE_EXT_ACCESS: {
- XaceExtAccessRec rec;
- rec.client = va_arg(ap, ClientPtr);
- rec.ext = va_arg(ap, ExtensionEntry*);
- rec.access_mode = DixGetAttrAccess;
- rec.status = Success; /* default allow */
- calldata = &rec;
- prv = &rec.status;
+ case XACE_EXT_ACCESS:
+ u.ext.client = va_arg(ap, ClientPtr);
+ u.ext.ext = va_arg(ap, ExtensionEntry*);
+ u.ext.access_mode = DixGetAttrAccess;
+ u.ext.status = Success; /* default allow */
+ prv = &u.ext.status;
break;
- }
- case XACE_SERVER_ACCESS: {
- XaceServerAccessRec rec;
- rec.client = va_arg(ap, ClientPtr);
- rec.access_mode = va_arg(ap, Mask);
- rec.status = Success; /* default allow */
- calldata = &rec;
- prv = &rec.status;
+ case XACE_SERVER_ACCESS:
+ u.server.client = va_arg(ap, ClientPtr);
+ u.server.access_mode = va_arg(ap, Mask);
+ u.server.status = Success; /* default allow */
+ prv = &u.server.status;
break;
- }
case XACE_SCREEN_ACCESS:
- case XACE_SCREENSAVER_ACCESS: {
- XaceScreenAccessRec rec;
- rec.client = va_arg(ap, ClientPtr);
- rec.screen = va_arg(ap, ScreenPtr);
- rec.access_mode = va_arg(ap, Mask);
- rec.status = Success; /* default allow */
- calldata = &rec;
- prv = &rec.status;
+ case XACE_SCREENSAVER_ACCESS:
+ u.screen.client = va_arg(ap, ClientPtr);
+ u.screen.screen = va_arg(ap, ScreenPtr);
+ u.screen.access_mode = va_arg(ap, Mask);
+ u.screen.status = Success; /* default allow */
+ prv = &u.screen.status;
break;
- }
- case XACE_AUTH_AVAIL: {
- XaceAuthAvailRec rec;
- rec.client = va_arg(ap, ClientPtr);
- rec.authId = va_arg(ap, XID);
- calldata = &rec;
+ case XACE_AUTH_AVAIL:
+ u.auth.client = va_arg(ap, ClientPtr);
+ u.auth.authId = va_arg(ap, XID);
break;
- }
- case XACE_KEY_AVAIL: {
- XaceKeyAvailRec rec;
- rec.event = va_arg(ap, xEventPtr);
- rec.keybd = va_arg(ap, DeviceIntPtr);
- rec.count = va_arg(ap, int);
- calldata = &rec;
+ case XACE_KEY_AVAIL:
+ u.key.event = va_arg(ap, xEventPtr);
+ u.key.keybd = va_arg(ap, DeviceIntPtr);
+ u.key.count = va_arg(ap, int);
break;
- }
- default: {
+ default:
va_end(ap);
return 0; /* unimplemented hook number */
- }
}
va_end(ap);
/* call callbacks and return result, if any. */
- CallCallbacks(&XaceHooks[hook], calldata);
+ CallCallbacks(&XaceHooks[hook], &u);
return prv ? *prv : Success;
}
diff --git a/xorg-server/Xi/exevents.c b/xorg-server/Xi/exevents.c index 0bc2ecc81..fcb7e584b 100644 --- a/xorg-server/Xi/exevents.c +++ b/xorg-server/Xi/exevents.c @@ -223,6 +223,7 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to) {
classes = to->unused_classes;
to->intfeed = classes->intfeed;
+ classes->intfeed = NULL;
}
i = &to->intfeed;
@@ -258,6 +259,7 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to) {
classes = to->unused_classes;
to->stringfeed = classes->stringfeed;
+ classes->stringfeed = NULL;
}
s = &to->stringfeed;
@@ -293,6 +295,7 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to) {
classes = to->unused_classes;
to->bell = classes->bell;
+ classes->bell = NULL;
}
b = &to->bell;
@@ -329,6 +332,7 @@ DeepCopyFeedbackClasses(DeviceIntPtr from, DeviceIntPtr to) {
classes = to->unused_classes;
to->leds = classes->leds;
+ classes->leds = NULL;
}
l = &to->leds;
@@ -379,6 +383,7 @@ DeepCopyKeyboardClasses(DeviceIntPtr from, DeviceIntPtr to) to->kbdfeed = classes->kbdfeed;
if (!to->kbdfeed)
InitKeyboardDeviceStruct(to, NULL, NULL, NULL);
+ classes->kbdfeed = NULL;
}
k = &to->kbdfeed;
@@ -506,6 +511,7 @@ DeepCopyPointerClasses(DeviceIntPtr from, DeviceIntPtr to) {
classes = to->unused_classes;
to->ptrfeed = classes->ptrfeed;
+ classes->ptrfeed = NULL;
}
p = &to->ptrfeed;
diff --git a/xorg-server/configure.ac b/xorg-server/configure.ac index 50313b616..14b4f1bb2 100644 --- a/xorg-server/configure.ac +++ b/xorg-server/configure.ac @@ -26,8 +26,8 @@ dnl dnl Process this file with autoconf to create configure.
AC_PREREQ(2.57)
-AC_INIT([xorg-server], 1.8.99.905, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2010-07-14"
+AC_INIT([xorg-server], 1.8.99.906, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="2010-08-12"
AC_CONFIG_SRCDIR([Makefile.am])
AM_INIT_AUTOMAKE([foreign dist-bzip2])
AM_MAINTAINER_MODE
diff --git a/xorg-server/dix/devices.c b/xorg-server/dix/devices.c index 42ea9c8d8..ec43f294a 100644 --- a/xorg-server/dix/devices.c +++ b/xorg-server/dix/devices.c @@ -2111,9 +2111,6 @@ ProcChangePointerControl(ClientPtr client) REQUEST(xChangePointerControlReq);
REQUEST_SIZE_MATCH(xChangePointerControlReq);
- if (!mouse->ptrfeed->CtrlProc)
- return BadDevice;
-
ctrl = mouse->ptrfeed->ctrl;
if ((stuff->doAccel != xTrue) && (stuff->doAccel != xFalse)) {
client->errorValue = stuff->doAccel;
@@ -2161,7 +2158,7 @@ ProcChangePointerControl(ClientPtr client) for (dev = inputInfo.devices; dev; dev = dev->next) {
if ((dev == mouse || (!IsMaster(dev) && dev->u.master == mouse)) &&
- dev->ptrfeed && dev->ptrfeed->CtrlProc) {
+ dev->ptrfeed) {
rc = XaceHook(XACE_DEVICE_ACCESS, client, dev, DixManageAccess);
if (rc != Success)
return rc;
@@ -2170,9 +2167,8 @@ ProcChangePointerControl(ClientPtr client) for (dev = inputInfo.devices; dev; dev = dev->next) {
if ((dev == mouse || (!IsMaster(dev) && dev->u.master == mouse)) &&
- dev->ptrfeed && dev->ptrfeed->CtrlProc) {
+ dev->ptrfeed) {
dev->ptrfeed->ctrl = ctrl;
- (*dev->ptrfeed->CtrlProc)(dev, &mouse->ptrfeed->ctrl);
}
}
diff --git a/xorg-server/dix/dixfonts.c b/xorg-server/dix/dixfonts.c index 1c9da1e26..dc4b32cc2 100644 --- a/xorg-server/dix/dixfonts.c +++ b/xorg-server/dix/dixfonts.c @@ -321,10 +321,10 @@ doOpenFont(ClientPtr client, OFclosurePtr c) continue;
}
if (err == Suspended) {
- if (!c->slept) {
- c->slept = TRUE;
- ClientSleep(client, (ClientSleepProcPtr)doOpenFont, (pointer) c);
- }
+ if (!ClientIsAsleep(client))
+ ClientSleep(client, (ClientSleepProcPtr)doOpenFont, c);
+ else
+ goto xinerama_sleep;
return TRUE;
}
break;
@@ -373,8 +373,8 @@ bail: SendErrorToClient(c->client, X_OpenFont, 0,
c->fontid, FontToXError(err));
}
- if (c->slept)
- ClientWakeup(c->client);
+ ClientWakeup(c->client);
+xinerama_sleep:
for (i = 0; i < c->num_fpes; i++) {
FreeFPE(c->fpe_list[i]);
}
@@ -460,7 +460,6 @@ OpenFont(ClientPtr client, XID fid, Mask flags, unsigned lenfname, char *pfontna c->current_fpe = 0;
c->num_fpes = num_fpes;
c->fnamelen = lenfname;
- c->slept = FALSE;
c->flags = flags;
c->non_cachable_font = cached;
@@ -622,12 +621,12 @@ doListFontsAndAliases(ClientPtr client, LFclosurePtr c) c->names);
if (err == Suspended) {
- if (!c->slept) {
- c->slept = TRUE;
+ if (!ClientIsAsleep(client))
ClientSleep(client,
- (ClientSleepProcPtr)doListFontsAndAliases,
- (pointer) c);
- }
+ (ClientSleepProcPtr)doListFontsAndAliases,
+ c);
+ else
+ goto xinerama_sleep;
return TRUE;
}
@@ -650,12 +649,12 @@ doListFontsAndAliases(ClientPtr client, LFclosurePtr c) c->current.patlen, c->current.max_names - c->names->nnames,
&c->current.private);
if (err == Suspended) {
- if (!c->slept) {
+ if (!ClientIsAsleep(client))
ClientSleep(client,
(ClientSleepProcPtr)doListFontsAndAliases,
- (pointer) c);
- c->slept = TRUE;
- }
+ c);
+ else
+ goto xinerama_sleep;
return TRUE;
}
if (err == Successful)
@@ -668,12 +667,12 @@ doListFontsAndAliases(ClientPtr client, LFclosurePtr c) ((pointer) c->client, fpe, &name, &namelen, &tmpname,
&resolvedlen, c->current.private);
if (err == Suspended) {
- if (!c->slept) {
+ if (ClientIsAsleep(client))
ClientSleep(client,
(ClientSleepProcPtr)doListFontsAndAliases,
- (pointer) c);
- c->slept = TRUE;
- }
+ c);
+ else
+ goto xinerama_sleep;
return TRUE;
}
if (err == FontNameAlias) {
@@ -822,8 +821,8 @@ finish: free(bufferStart);
bail:
- if (c->slept)
- ClientWakeup(client);
+ ClientWakeup(client);
+xinerama_sleep:
for (i = 0; i < c->num_fpes; i++)
FreeFPE(c->fpe_list[i]);
free(c->fpe_list);
@@ -881,7 +880,6 @@ ListFonts(ClientPtr client, unsigned char *pattern, unsigned length, c->current.list_started = FALSE;
c->current.private = 0;
c->haveSaved = FALSE;
- c->slept = FALSE;
c->savedName = 0;
doListFontsAndAliases(client, c);
return Success;
@@ -928,11 +926,11 @@ doListFontsWithInfo(ClientPtr client, LFWIclosurePtr c) c->current.max_names, &c->current.private);
if (err == Suspended)
{
- if (!c->slept)
- {
- ClientSleep(client, (ClientSleepProcPtr)doListFontsWithInfo, c);
- c->slept = TRUE;
- }
+ if (!ClientIsAsleep(client))
+ ClientSleep(client,
+ (ClientSleepProcPtr)doListFontsWithInfo, c);
+ else
+ goto xinerama_sleep;
return TRUE;
}
if (err == Successful)
@@ -947,13 +945,11 @@ doListFontsWithInfo(ClientPtr client, LFWIclosurePtr c) &numFonts, c->current.private);
if (err == Suspended)
{
- if (!c->slept)
- {
+ if (!ClientIsAsleep(client))
ClientSleep(client,
- (ClientSleepProcPtr)doListFontsWithInfo,
- c);
- c->slept = TRUE;
- }
+ (ClientSleepProcPtr)doListFontsWithInfo, c);
+ else
+ goto xinerama_sleep;
return TRUE;
}
}
@@ -1098,8 +1094,8 @@ finish: - sizeof(xGenericReply));
WriteSwappedDataToClient(client, length, &finalReply);
bail:
- if (c->slept)
- ClientWakeup(client);
+ ClientWakeup(client);
+xinerama_sleep:
for (i = 0; i < c->num_fpes; i++)
FreeFPE(c->fpe_list[i]);
free(c->reply);
@@ -1154,7 +1150,6 @@ StartListFontsWithInfo(ClientPtr client, int length, unsigned char *pattern, c->current.private = 0;
c->savedNumFonts = 0;
c->haveSaved = FALSE;
- c->slept = FALSE;
c->savedName = 0;
doListFontsWithInfo(client, c);
return Success;
@@ -1181,7 +1176,7 @@ doPolyText(ClientPtr client, PTclosurePtr c) fpe = c->pGC->font->fpe;
(*fpe_functions[fpe->type].client_died) ((pointer) client, fpe);
- if (c->slept)
+ if (ClientIsAsleep(client))
{
/* Client has died, but we cannot bail out right now. We
need to clean up after the work we did when going to
@@ -1198,7 +1193,7 @@ doPolyText(ClientPtr client, PTclosurePtr c) }
/* Make sure our drawable hasn't disappeared while we slept. */
- if (c->slept && c->pDraw)
+ if (ClientIsAsleep(client) && c->pDraw)
{
DrawablePtr pDraw;
dixLookupDrawable(&pDraw, c->did, client, 0, DixWriteAccess);
@@ -1212,7 +1207,7 @@ doPolyText(ClientPtr client, PTclosurePtr c) }
}
- client_state = c->slept ? SLEEPING : NEVER_SLEPT;
+ client_state = ClientIsAsleep(client) ? SLEEPING : NEVER_SLEPT;
while (c->endReq - c->pElt > TextEltHeader)
{
@@ -1295,7 +1290,7 @@ doPolyText(ClientPtr client, PTclosurePtr c) if (lgerr == Suspended)
{
- if (!c->slept) {
+ if (!ClientIsAsleep(client)) {
int len;
GC *pGC;
PTclosurePtr new_closure;
@@ -1368,15 +1363,14 @@ doPolyText(ClientPtr client, PTclosurePtr c) c->pGC = pGC;
ValidateGC(c->pDraw, c->pGC);
- c->slept = TRUE;
- ClientSleep(client,
- (ClientSleepProcPtr)doPolyText,
- (pointer) c);
+ ClientSleep(client, (ClientSleepProcPtr)doPolyText, c);
/* Set up to perform steps 3 and 4 */
client_state = START_SLEEP;
continue; /* on to steps 3 and 4 */
}
+ else
+ goto xinerama_sleep;
return TRUE;
}
else if (lgerr != Successful)
@@ -1419,9 +1413,10 @@ bail: #endif
SendErrorToClient(c->client, c->reqType, 0, 0, err);
}
- if (c->slept)
+ if (ClientIsAsleep(client))
{
ClientWakeup(c->client);
+xinerama_sleep:
ChangeGC(NullClient, c->pGC, clearGCmask, clearGC);
/* Unreference the font from the scratch GC */
@@ -1460,7 +1455,6 @@ PolyText(ClientPtr client, DrawablePtr pDraw, GC *pGC, unsigned char *pElt, local_closure.pGC = pGC;
local_closure.did = did;
local_closure.err = Success;
- local_closure.slept = FALSE;
(void) doPolyText(client, &local_closure);
return Success;
@@ -1485,7 +1479,7 @@ doImageText(ClientPtr client, ITclosurePtr c) }
/* Make sure our drawable hasn't disappeared while we slept. */
- if (c->slept && c->pDraw)
+ if (ClientIsAsleep(client) && c->pDraw)
{
DrawablePtr pDraw;
dixLookupDrawable(&pDraw, c->did, client, 0, DixWriteAccess);
@@ -1502,7 +1496,7 @@ doImageText(ClientPtr client, ITclosurePtr c) lgerr = LoadGlyphs(client, c->pGC->font, c->nChars, c->itemSize, c->data);
if (lgerr == Suspended)
{
- if (!c->slept) {
+ if (!ClientIsAsleep(client)) {
GC *pGC;
unsigned char *data;
ITclosurePtr new_closure;
@@ -1555,9 +1549,10 @@ doImageText(ClientPtr client, ITclosurePtr c) c->pGC = pGC;
ValidateGC(c->pDraw, c->pGC);
- c->slept = TRUE;
- ClientSleep(client, (ClientSleepProcPtr)doImageText, (pointer) c);
+ ClientSleep(client, (ClientSleepProcPtr)doImageText, c);
}
+ else
+ goto xinerama_sleep;
return TRUE;
}
else if (lgerr != Successful)
@@ -1576,9 +1571,10 @@ bail: if (err != Success && c->client != serverClient) {
SendErrorToClient(c->client, c->reqType, 0, 0, err);
}
- if (c->slept)
+ if (ClientIsAsleep(client))
{
ClientWakeup(c->client);
+xinerama_sleep:
ChangeGC(NullClient, c->pGC, clearGCmask, clearGC);
/* Unreference the font from the scratch GC */
@@ -1616,7 +1612,6 @@ ImageText(ClientPtr client, DrawablePtr pDraw, GC *pGC, int nChars, local_closure.itemSize = 2;
}
local_closure.did = did;
- local_closure.slept = FALSE;
(void) doImageText(client, &local_closure);
return Success;
diff --git a/xorg-server/dix/getevents.c b/xorg-server/dix/getevents.c index 3885cd771..559b20b55 100644 --- a/xorg-server/dix/getevents.c +++ b/xorg-server/dix/getevents.c @@ -652,8 +652,8 @@ clipValuators(DeviceIntPtr pDev, int first_valuator, int num_valuators, * events if a DCCE was generated.
* @return The updated @events pointer.
*/
-static EventListPtr
-updateFromMaster(EventListPtr events, DeviceIntPtr dev, int type, int *num_events)
+EventListPtr
+UpdateFromMaster(EventListPtr events, DeviceIntPtr dev, int type, int *num_events)
{
DeviceIntPtr master;
@@ -929,7 +929,7 @@ GetKeyboardValuatorEvents(EventList *events, DeviceIntPtr pDev, int type, num_events = 1;
- events = updateFromMaster(events, pDev, DEVCHANGE_KEYBOARD_EVENT, &num_events);
+ events = UpdateFromMaster(events, pDev, DEVCHANGE_KEYBOARD_EVENT, &num_events);
/* Handle core repeating, via press/release/press/release. */
if (type == KeyPress && key_is_down(pDev, key_code, KEY_POSTED)) {
@@ -1091,7 +1091,7 @@ GetPointerEvents(EventList *events, DeviceIntPtr pDev, int type, int buttons, (type == MotionNotify && num_valuators <= 0))
return 0;
- events = updateFromMaster(events, pDev, DEVCHANGE_POINTER_EVENT, &num_events);
+ events = UpdateFromMaster(events, pDev, DEVCHANGE_POINTER_EVENT, &num_events);
raw = (RawDeviceEvent*)events->event;
events++;
@@ -1206,7 +1206,7 @@ GetProximityEvents(EventList *events, DeviceIntPtr pDev, int type, (num_valuators + first_valuator) > pDev->valuator->numAxes)
return 0;
- events = updateFromMaster(events, pDev, DEVCHANGE_POINTER_EVENT, &num_events);
+ events = UpdateFromMaster(events, pDev, DEVCHANGE_POINTER_EVENT, &num_events);
event = (DeviceEvent *) events->event;
init_event(pDev, event, GetTimeInMillis());
diff --git a/xorg-server/doc/xml/Xserver-spec.xml b/xorg-server/doc/xml/Xserver-spec.xml index a457063bd..c8168f4f0 100644 --- a/xorg-server/doc/xml/Xserver-spec.xml +++ b/xorg-server/doc/xml/Xserver-spec.xml @@ -92,6 +92,13 @@ <authorinitials>efw</authorinitials>
<revremark>Revised for devPrivates changes</revremark>
</revision>
+ <revision>
+ <revnumber>3.5</revnumber>
+ <date>July 2010</date>
+ <authorinitials>ac</authorinitials>
+ <revremark>Revised for Xorg 1.9 devPrivates changes
+ and 1.8 CreateNewResourceType changes</revremark>
+ </revision>
</revhistory>
<legalnotice>
<para>Copyright © 1994 X Consortium, Inc., 2004 X.org Foundation, Inc.</para>
@@ -3753,7 +3760,7 @@ Also included in each GC is support for dynamic devPrivates, which the DDX can use for any purpose (see <xref linkend="wrappers_and_privates"/> below).</para>
<para>
The DIX routines available for manipulating GCs are
-CreateGC, ChangeGC, CopyGC, SetClipRects, SetDashes, and FreeGC.
+CreateGC, ChangeGC, ChangeGCXIDs, CopyGC, SetClipRects, SetDashes, and FreeGC.
<blockquote><programlisting>
GCPtr CreateGC(pDrawable, mask, pval, pStatus)
@@ -3762,10 +3769,17 @@ CreateGC, ChangeGC, CopyGC, SetClipRects, SetDashes, and FreeGC. XID *pval;
int *pStatus;
- int ChangeGC(pGC, mask, pval)
+ int ChangeGC(client, pGC, mask, pUnion)
+ ClientPtr client;
GCPtr pGC;
BITS32 mask;
- XID *pval;
+ ChangeGCValPtr pUnion;
+
+ int ChangeGCXIDs(client, pGC, mask, pC32)
+ ClientPtr client;
+ GCPtr pGC;
+ BITS32 mask;
+ CARD32 *pC32;
int CopyGC(pgcSrc, pgcDst, mask)
GCPtr pgcSrc;
@@ -4808,32 +4822,68 @@ Two new extensibility concepts have been developed for release 4, Wrappers and devPrivates. These replace the R3 GCInterest queues, which were not a
general enough mechanism for many extensions and only provided hooks into a
single data structure. devPrivates have been revised substantially for
-X.org X server relase 1.5.</para>
+X.Org X server release 1.5, and updated again for the 1.9 release.</para>
<section>
<title>devPrivates</title>
<para>
devPrivates provides a way to attach arbitrary private data to various server structures.
Any structure which contains a <structfield>devPrivates</structfield> field of
-type <type>PrivateRec</type> supports this mechanism. Private data can be allocated at
-any time during an object's life cycle and callbacks are available to initialize and clean
-up allocated space.</para>
+type <type>PrivateRec</type> supports this mechanism. Some structures allow
+allocating space for private data after some objects have been created, others
+require all space allocations be registered before any objects of that type
+are created. <filename class="headerfile">Xserver/include/privates.h</filename>
+lists which of these cases applies to each structure containing
+<structfield>devPrivates</structfield>.</para>
+
+<para>
+To request private space, use
+<blockquote><programlisting>
+ Bool dixRegisterPrivateKey(DevPrivateKey key, DevPrivateType type, unsigned size);
+</programlisting></blockquote>
+The first argument is a pointer to a <type>DevPrivateKeyRec</type> which
+will serve as the unique identifier for the private data. Typically this is
+the address of a static <type>DevPrivateKeyRec</type> in your code.
+The second argument is the class of objects for which this key will apply.
+The third argument is the size of the space being requested, or
+<constant>0</constant> to only allocate a pointer that the caller will manage.
+If space is requested, this space will be automatically freed when the object
+is destroyed. Note that a call to <function>dixSetPrivate</function>
+that changes the pointer value may cause the space to be unreachable by the caller, however it will still be automatically freed.
+The function returns <literal>TRUE</literal> unless memory allocation fails.
+If the function is called more than once on the same key, all calls must use
+the same value for <type>size</type> or the server will abort.</para>
+
+<para>
+To request private space and have the server manage the key, use
+<blockquote><programlisting>
+ DevPrivateKey dixCreatePrivateKey(DevPrivateType type, unsigned size);
+</programlisting></blockquote>
+The <parameter>type</parameter> and <parameter>size</parameter> arguments are
+the same as those to <function>dixRegisterPrivateKey</function> but this
+function allocates a <type>DevPrivateKeyRec</type> and returns a pointer to it
+instead of requiring the caller to pass a pointer to an existing structure.
+The server will free it automatically when the privates system is restarted
+at server reset time.</para>
+
<para>
To attach a piece of private data to an object, use:
<blockquote><programlisting>
- int dixSetPrivate(PrivateRec **privates, const DevPrivateKey key, pointer val)
+ void dixSetPrivate(PrivateRec **privates, const DevPrivateKey key, pointer val)
</programlisting></blockquote>
-The first argument is the address of the <structfield>devPrivates</structfield> field
-in the target structure. This field is managed privately by the DIX layer and
-should not be directly modified. The second argument is some address value which
-will serve as the unique identifier for the private data. Typically this is the address
-of some global variable in your code. Only one piece of data with a given key can be attached to an object. However, you
-can use the same key to store data in any object that supports the devPrivates mechanism. The third
-argument is the value to store.</para>
+The first argument is the address of the <structfield>devPrivates</structfield>
+field in the target structure. This field is managed privately by the DIX
+layer and should not be directly modified. The second argument is a pointer
+to the <type>DevPrivateKeyRec</type> which you registered with
+<function>dixRegisterPrivateKey</function> or allocated with
+<function>dixCreatePrivateKey</function>. Only one
+piece of data with a given key can be attached to an object, and in most cases
+each key is specific to the type of object it was registered for. (An
+exception is the PRIVATE_XSELINUX class which applies to multiple object types.)
+The third argument is the value to store.</para>
<para>
-If private data with the given key is already associated with the object, <function>dixSetPrivate</function> will
-overwrite the old value with the new one. Otherwise, new space will be allocated to hold the pointer value.
-The function returns <literal>TRUE</literal> unless memory allocation fails, but note that since memory allocation only
-occurs on the first reference to the private data, all subsequent calls are guaranteed to succeed.</para>
+If private data with the given key is already associated with the object,
+<function>dixSetPrivate</function> will overwrite the old value with the
+new one.</para>
<para>
To look up a piece of private data, use one of:
@@ -4842,56 +4892,22 @@ To look up a piece of private data, use one of: pointer *dixLookupPrivateAddr(PrivateRec **privates, const DevPrivateKey key)
</programlisting></blockquote>
The first argument is the address of the <structfield>devPrivates</structfield> field
-in the target structure. The second argument is the key to look up. If private data with the given key is already associated
-with the object, <function>dixLookupPrivate</function> will return the stored pointer value while <function>dixLookupPrivateAddr</function>
-will return the address of the stored pointer. Otherwise, new space will be first allocated to hold the pointer value
-and it will be initialized to NULL. Both functions return <literal>NULL</literal> if memory allocation fails, but note that
-since memory allocation only occurs on the first reference to the private data, all subsequent calls are guaranteed to succeed.</para>
-
-<para>
-To request pre-allocated private space, use
-<blockquote><programlisting>
- int dixRequestPrivate(const DevPrivateKey key, unsigned size)
-</programlisting></blockquote>
-The first argument is the key for which space is being requested. The second argument is the size of the space being requested.
-After this function has been called,
-future calls to <function>dixLookupPrivate</function> or <function>dixLookupPrivateAddr</function> that cause the private pointer
-to be initially allocated will also allocate <varname>size</varname> bytes of space cleared to zero and initialize the private pointer to point
-to this space instead of <literal>NULL</literal>. This space will be automatically freed. Note that a call to <function>dixSetPrivate</function>
-that changes the pointer value may cause the space to be unreachable by the caller, however it will still be automatically freed.
-The function returns <literal>TRUE</literal> unless memory allocation fails. If the function is called more than once, the largest value
-of <type>size</type> is used.</para>
-
-<para>
-To set callbacks for initializing and cleaning up private space, use
-<blockquote><programlisting>
- typedef struct {
- DevPrivateKey key;
- pointer *value;
- } PrivateCallbackRec;
-
- int dixRegisterPrivateInitFunc(const DevPrivateKey key,
- CallbackProcPtr callback,
- pointer userdata)
- int dixRegisterPrivateDeleteFunc(const DevPrivateKey key,
- CallbackProcPtr callback,
- pointer userdata)
-</programlisting></blockquote>
-The first argument is the key for which the callbacks are being registered. The second argument is the callback function. The third argument
-will be passed as the user data argument to the callback function when it is called. The call data argument to the callback is a pointer to
-a structure of type <type>PrivateCallbackRec</type>.</para>
-<para>
-The init callback is called immediately after new private space has been allocated for the given key. The delete callback is called immediately
-before the private space is freed when the object is being destroyed. The <type>PrivateCallbackRec</type> structure contains the devPrivate key
-and the address of the private pointer. The init callback may be used to initialize any pre-allocated space requested by
-<function>dixRequestPrivate</function>, while the delete callback may be used to free any data stored there. However the callbacks are called even
-if no pre-allocated space was requested.</para>
-
-<para>
-When implementing new server resource objects that support devPrivates, there are three steps to perform:
-Declare a field of type <type>PrivateRec *</type> in your structure;
+in the target structure. The second argument is the key to look up.
+If a non-zero size was given when the key was registered, or if private data
+with the given key is already associated with the object, then
+<function>dixLookupPrivate</function> will return the pointer value
+while <function>dixLookupPrivateAddr</function>
+will return the address of the pointer.</para>
+
+<para>
+When implementing new server resource objects that support devPrivates, there
+are four steps to perform:
+Add a type value to the <type>DevPrivateType</type> enum in
+<filename class="headerfile">Xserver/include/privates.h</filename>,
+declare a field of type <type>PrivateRec *</type> in your structure;
initialize this field to <literal>NULL</literal> when creating any objects; and
-call the <function>dixFreePrivates</function> function, passing in the field value, when freeing any objects.</para>
+when freeing any objects call the <function>dixFreePrivates</function> or
+<function>dixFreeObjectWithPrivates</function> function.</para>
</section>
<section>
<title>Wrappers</title>
diff --git a/xorg-server/doc/xml/xmlrules.in b/xorg-server/doc/xml/xmlrules.in index 667cc2ebb..1222bb5af 100644 --- a/xorg-server/doc/xml/xmlrules.in +++ b/xorg-server/doc/xml/xmlrules.in @@ -48,10 +48,12 @@ xorg.css: $(STYLESHEET_SRCDIR)/xorg.css endif
if HAVE_XMLTO
+if HAVE_XMLTO_TEXT
BUILT_DOC_FILES += $(TXT_FILES)
.xml.txt:
@rm -f $@
$(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) txt $<
+endif
BUILT_DOC_FILES += $(HTML_FILES)
.xml.html:
diff --git a/xorg-server/fb/fbpict.c b/xorg-server/fb/fbpict.c index d6dc30d2c..9e2c35c4b 100644 --- a/xorg-server/fb/fbpict.c +++ b/xorg-server/fb/fbpict.c @@ -332,8 +332,11 @@ create_bits_picture (PicturePtr pict, return image;
}
+static pixman_image_t *
+image_from_pict_internal (PicturePtr pict, Bool has_clip, int *xoff, int *yoff, Bool is_alpha_map);
+
static void
-set_image_properties (pixman_image_t *image, PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
+set_image_properties (pixman_image_t *image, PicturePtr pict, Bool has_clip, int *xoff, int *yoff, Bool is_alpha_map)
{
pixman_repeat_t repeat;
pixman_filter_t filter;
@@ -382,10 +385,13 @@ set_image_properties (pixman_image_t *image, PicturePtr pict, Bool has_clip, int pixman_image_set_repeat (image, repeat);
- if (pict->alphaMap)
+ /* Fetch alpha map unless 'pict' is being used
+ * as the alpha map for this operation
+ */
+ if (pict->alphaMap && !is_alpha_map)
{
int alpha_xoff, alpha_yoff;
- pixman_image_t *alpha_map = image_from_pict (pict->alphaMap, FALSE, &alpha_xoff, &alpha_yoff);
+ pixman_image_t *alpha_map = image_from_pict_internal (pict->alphaMap, FALSE, &alpha_xoff, &alpha_yoff, TRUE);
pixman_image_set_alpha_map (
image, alpha_map, pict->alphaOrigin.x, pict->alphaOrigin.y);
@@ -417,8 +423,8 @@ set_image_properties (pixman_image_t *image, PicturePtr pict, Bool has_clip, int pixman_image_set_source_clipping (image, TRUE);
}
-pixman_image_t *
-image_from_pict (PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
+static pixman_image_t *
+image_from_pict_internal (PicturePtr pict, Bool has_clip, int *xoff, int *yoff, Bool is_alpha_map)
{
pixman_image_t *image = NULL;
@@ -452,11 +458,17 @@ image_from_pict (PicturePtr pict, Bool has_clip, int *xoff, int *yoff) }
if (image)
- set_image_properties (image, pict, has_clip, xoff, yoff);
+ set_image_properties (image, pict, has_clip, xoff, yoff, is_alpha_map);
return image;
}
+pixman_image_t *
+image_from_pict (PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
+{
+ return image_from_pict_internal (pict, has_clip, xoff, yoff, FALSE);
+}
+
void
free_pixman_pict (PicturePtr pict, pixman_image_t *image)
{
diff --git a/xorg-server/hw/xfree86/common/xf86Xinput.c b/xorg-server/hw/xfree86/common/xf86Xinput.c index 845bde87a..8ea50aa94 100644 --- a/xorg-server/hw/xfree86/common/xf86Xinput.c +++ b/xorg-server/hw/xfree86/common/xf86Xinput.c @@ -264,9 +264,6 @@ ApplyAccelerationSettings(DeviceIntPtr dev){ if (i >= 0)
dev->ptrfeed->ctrl.threshold = i;
- /* mostly a no-op anyway */
- (*dev->ptrfeed->CtrlProc)(dev, &dev->ptrfeed->ctrl);
-
xf86Msg(X_CONFIG, "%s: (accel) acceleration factor: %.3f\n",
local->name, ((float)dev->ptrfeed->ctrl.num)/
((float)dev->ptrfeed->ctrl.den));
diff --git a/xorg-server/hw/xfree86/parser/Input.c b/xorg-server/hw/xfree86/parser/Input.c index 8adbee9ae..739e49ba4 100644 --- a/xorg-server/hw/xfree86/parser/Input.c +++ b/xorg-server/hw/xfree86/parser/Input.c @@ -59,6 +59,7 @@ #include <xorg-config.h>
#endif
+#include "os.h"
#include "xf86Parser.h"
#include "xf86tokens.h"
#include "Configint.h"
@@ -102,8 +103,10 @@ xf86parseInputSection (void) case DRIVER:
if (xf86getSubToken (&(ptr->inp_comment)) != STRING)
Error (QUOTE_MSG, "Driver");
- if (strcmp(val.str, "keyboard") == 0)
- ptr->inp_driver = "kbd";
+ if (strcmp(val.str, "keyboard") == 0) {
+ ptr->inp_driver = strdup("kbd");
+ free(val.str);
+ }
else
ptr->inp_driver = val.str;
break;
diff --git a/xorg-server/hw/xfree86/parser/InputClass.c b/xorg-server/hw/xfree86/parser/InputClass.c index 85161c38a..ddf344a0f 100644 --- a/xorg-server/hw/xfree86/parser/InputClass.c +++ b/xorg-server/hw/xfree86/parser/InputClass.c @@ -111,8 +111,10 @@ xf86parseInputClassSection(void) case DRIVER:
if (xf86getSubToken(&(ptr->comment)) != STRING)
Error(QUOTE_MSG, "Driver");
- if (strcmp(val.str, "keyboard") == 0)
- ptr->driver = "kbd";
+ if (strcmp(val.str, "keyboard") == 0) {
+ ptr->driver = strdup("kbd");
+ free(val.str);
+ }
else
ptr->driver = val.str;
break;
diff --git a/xorg-server/hw/xwin/glx/indirect.c b/xorg-server/hw/xwin/glx/indirect.c index 8bc289172..d2ed16e7c 100644 --- a/xorg-server/hw/xwin/glx/indirect.c +++ b/xorg-server/hw/xwin/glx/indirect.c @@ -375,10 +375,12 @@ static __GLXscreen *glxWinScreenProbe(ScreenPtr pScreen); static __GLXcontext *glxWinCreateContext(__GLXscreen *screen,
__GLXconfig *modes,
__GLXcontext *baseShareContext);
-static __GLXdrawable *glxWinCreateDrawable(__GLXscreen *screen,
+static __GLXdrawable *glxWinCreateDrawable(ClientPtr client,
+ __GLXscreen *screen,
DrawablePtr pDraw,
- int type,
XID drawId,
+ int type,
+ XID glxDrawId,
__GLXconfig *conf);
static Bool glxWinRealizeWindow(WindowPtr pWin);
@@ -901,10 +903,12 @@ glxWinDrawableDestroy(__GLXdrawable *base) }
static __GLXdrawable *
-glxWinCreateDrawable(__GLXscreen *screen,
+glxWinCreateDrawable(ClientPtr client,
+ __GLXscreen *screen,
DrawablePtr pDraw,
- int type,
XID drawId,
+ int type,
+ XID glxDrawId,
__GLXconfig *conf)
{
__GLXWinDrawable *glxPriv;
@@ -916,7 +920,7 @@ glxWinCreateDrawable(__GLXscreen *screen, memset(glxPriv, 0, sizeof *glxPriv);
- if(!__glXDrawableInit(&glxPriv->base, screen, pDraw, type, drawId, conf)) {
+ if(!__glXDrawableInit(&glxPriv->base, screen, pDraw, type, glxDrawId, conf)) {
free(glxPriv);
return NULL;
}
diff --git a/xorg-server/include/closestr.h b/xorg-server/include/closestr.h index 2cd67b1d3..a64798608 100644 --- a/xorg-server/include/closestr.h +++ b/xorg-server/include/closestr.h @@ -1,156 +1,151 @@ -/* - -Copyright 1991, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall -not be used in advertising or otherwise to promote the sale, use or -other dealings in this Software without prior written authorization -from The Open Group. - -*/ - - -#ifndef CLOSESTR_H -#define CLOSESTR_H - -#include <X11/Xproto.h> -#include "closure.h" -#include "dix.h" -#include "misc.h" -#include "gcstruct.h" - -/* closure structures */ - -/* OpenFont */ - -typedef struct _OFclosure { - ClientPtr client; - short current_fpe; - short num_fpes; - FontPathElementPtr *fpe_list; - Mask flags; - Bool slept; - -/* XXX -- get these from request buffer instead? */ - char *origFontName; - int origFontNameLen; - XID fontid; - char *fontname; - int fnamelen; - FontPtr non_cachable_font; -} OFclosureRec; - -/* ListFontsWithInfo */ - -#define XLFDMAXFONTNAMELEN 256 -typedef struct _LFWIstate { - char pattern[XLFDMAXFONTNAMELEN]; - int patlen; - int current_fpe; - int max_names; - Bool list_started; - pointer private; -} LFWIstateRec, *LFWIstatePtr; - -typedef struct _LFWIclosure { - ClientPtr client; - int num_fpes; - FontPathElementPtr *fpe_list; - xListFontsWithInfoReply *reply; - int length; - LFWIstateRec current; - LFWIstateRec saved; - int savedNumFonts; - Bool haveSaved; - Bool slept; - char *savedName; -} LFWIclosureRec; - -/* ListFonts */ - -typedef struct _LFclosure { - ClientPtr client; - int num_fpes; - FontPathElementPtr *fpe_list; - FontNamesPtr names; - LFWIstateRec current; - LFWIstateRec saved; - Bool haveSaved; - Bool slept; - char *savedName; - int savedNameLen; -} LFclosureRec; - -/* PolyText */ - -typedef - int (* PolyTextPtr)( - DrawablePtr /* pDraw */, - GCPtr /* pGC */, - int /* x */, - int /* y */, - int /* count */, - void * /* chars or shorts */ - ); - -typedef struct _PTclosure { - ClientPtr client; - DrawablePtr pDraw; - GC *pGC; - unsigned char *pElt; - unsigned char *endReq; - unsigned char *data; - int xorg; - int yorg; - CARD8 reqType; - PolyTextPtr polyText; - int itemSize; - XID did; - int err; - Bool slept; -} PTclosureRec; - -/* ImageText */ - -typedef - void (* ImageTextPtr)( - DrawablePtr /* pDraw */, - GCPtr /* pGC */, - int /* x */, - int /* y */, - int /* count */, - void * /* chars or shorts */ - ); - -typedef struct _ITclosure { - ClientPtr client; - DrawablePtr pDraw; - GC *pGC; - BYTE nChars; - unsigned char *data; - int xorg; - int yorg; - CARD8 reqType; - ImageTextPtr imageText; - int itemSize; - XID did; - Bool slept; -} ITclosureRec; -#endif /* CLOSESTR_H */ +/*
+
+Copyright 1991, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+
+#ifndef CLOSESTR_H
+#define CLOSESTR_H
+
+#include <X11/Xproto.h>
+#include "closure.h"
+#include "dix.h"
+#include "misc.h"
+#include "gcstruct.h"
+
+/* closure structures */
+
+/* OpenFont */
+
+typedef struct _OFclosure {
+ ClientPtr client;
+ short current_fpe;
+ short num_fpes;
+ FontPathElementPtr *fpe_list;
+ Mask flags;
+
+/* XXX -- get these from request buffer instead? */
+ char *origFontName;
+ int origFontNameLen;
+ XID fontid;
+ char *fontname;
+ int fnamelen;
+ FontPtr non_cachable_font;
+} OFclosureRec;
+
+/* ListFontsWithInfo */
+
+#define XLFDMAXFONTNAMELEN 256
+typedef struct _LFWIstate {
+ char pattern[XLFDMAXFONTNAMELEN];
+ int patlen;
+ int current_fpe;
+ int max_names;
+ Bool list_started;
+ pointer private;
+} LFWIstateRec, *LFWIstatePtr;
+
+typedef struct _LFWIclosure {
+ ClientPtr client;
+ int num_fpes;
+ FontPathElementPtr *fpe_list;
+ xListFontsWithInfoReply *reply;
+ int length;
+ LFWIstateRec current;
+ LFWIstateRec saved;
+ int savedNumFonts;
+ Bool haveSaved;
+ char *savedName;
+} LFWIclosureRec;
+
+/* ListFonts */
+
+typedef struct _LFclosure {
+ ClientPtr client;
+ int num_fpes;
+ FontPathElementPtr *fpe_list;
+ FontNamesPtr names;
+ LFWIstateRec current;
+ LFWIstateRec saved;
+ Bool haveSaved;
+ char *savedName;
+ int savedNameLen;
+} LFclosureRec;
+
+/* PolyText */
+
+typedef
+ int (* PolyTextPtr)(
+ DrawablePtr /* pDraw */,
+ GCPtr /* pGC */,
+ int /* x */,
+ int /* y */,
+ int /* count */,
+ void * /* chars or shorts */
+ );
+
+typedef struct _PTclosure {
+ ClientPtr client;
+ DrawablePtr pDraw;
+ GC *pGC;
+ unsigned char *pElt;
+ unsigned char *endReq;
+ unsigned char *data;
+ int xorg;
+ int yorg;
+ CARD8 reqType;
+ PolyTextPtr polyText;
+ int itemSize;
+ XID did;
+ int err;
+} PTclosureRec;
+
+/* ImageText */
+
+typedef
+ void (* ImageTextPtr)(
+ DrawablePtr /* pDraw */,
+ GCPtr /* pGC */,
+ int /* x */,
+ int /* y */,
+ int /* count */,
+ void * /* chars or shorts */
+ );
+
+typedef struct _ITclosure {
+ ClientPtr client;
+ DrawablePtr pDraw;
+ GC *pGC;
+ BYTE nChars;
+ unsigned char *data;
+ int xorg;
+ int yorg;
+ CARD8 reqType;
+ ImageTextPtr imageText;
+ int itemSize;
+ XID did;
+} ITclosureRec;
+#endif /* CLOSESTR_H */
diff --git a/xorg-server/include/input.h b/xorg-server/include/input.h index 33b94fd3e..1930a308b 100644 --- a/xorg-server/include/input.h +++ b/xorg-server/include/input.h @@ -439,6 +439,12 @@ extern void CreateClassesChangedEvent(EventListPtr event, DeviceIntPtr master,
DeviceIntPtr slave,
int type);
+extern EventListPtr UpdateFromMaster(
+ EventListPtr events,
+ DeviceIntPtr pDev,
+ int type,
+ int *num_events);
+
extern _X_EXPORT int GetPointerEvents(
EventListPtr events,
DeviceIntPtr pDev,
diff --git a/xorg-server/include/privates.h b/xorg-server/include/privates.h index 9b578e467..c2b7b43ec 100644 --- a/xorg-server/include/privates.h +++ b/xorg-server/include/privates.h @@ -81,10 +81,10 @@ typedef struct _DevPrivateKeyRec { * you can get the address of the extra space and store whatever data you like
* there.
*
- * You may call dixRegisterPrivate more than once on the same key, but the
+ * You may call dixRegisterPrivateKey more than once on the same key, but the
* size and type must match or the server will abort.
*
- * dixRegisterPrivateIndex returns FALSE if it fails to allocate memory
+ * dixRegisterPrivateKey returns FALSE if it fails to allocate memory
* during its operation.
*/
extern _X_EXPORT Bool
diff --git a/xorg-server/miext/rootless/rootlessCommon.c b/xorg-server/miext/rootless/rootlessCommon.c index e97a53725..4f059801b 100644 --- a/xorg-server/miext/rootless/rootlessCommon.c +++ b/xorg-server/miext/rootless/rootlessCommon.c @@ -92,6 +92,9 @@ IsFramedWindow(WindowPtr pWin) {
WindowPtr top;
+ if (!dixPrivateKeyRegistered(&rootlessWindowPrivateKeyRec))
+ return FALSE;
+
if (!pWin->realized)
return FALSE;
top = TopLevelParent(pWin);
diff --git a/xorg-server/xkb/xkbActions.c b/xorg-server/xkb/xkbActions.c index 24c7341ed..a60b20bbd 100644 --- a/xorg-server/xkb/xkbActions.c +++ b/xorg-server/xkb/xkbActions.c @@ -1332,35 +1332,53 @@ xkbStateNotify sn; return;
}
+/*
+ * The event is injected into the event processing, not the EQ. Thus,
+ * ensure that we restore the master after the event sequence to the
+ * original set of classes. Otherwise, the master remains on the XTEST
+ * classes and drops events that don't fit into the XTEST layout (e.g.
+ * events with more than 2 valuators).
+ *
+ * FIXME: EQ injection in the processing stage is not designed for, so this
+ * is a rather awkward hack. The event list returned by GetPointerEvents()
+ * and friends is always prefixed with a DCE if the last _posted_ device was
+ * different. For normal events, this sequence then resets the master during
+ * the processing stage. Since we inject the PointerKey events in the
+ * processing stage though, we need to manually reset to restore the
+ * previous order, because the events already in the EQ must be sent for the
+ * right device.
+ * So we post-fix the event list we get from GPE with a DCE back to the
+ * previous slave device.
+ *
+ * First one on drinking island wins!
+ */
static void
-XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y)
+InjectPointerKeyEvents(DeviceIntPtr dev, int type, int button, int flags, int num_valuators, int *valuators)
{
+ ScreenPtr pScreen;
EventListPtr events;
int nevents, i;
- DeviceIntPtr ptr;
- ScreenPtr pScreen;
+ DeviceIntPtr ptr, mpointer, lastSlave = NULL;
Bool saveWait;
- int gpe_flags = 0;
- if (IsMaster(dev))
- ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER));
- else if (!dev->u.master)
+ if (IsMaster(dev)) {
+ mpointer = GetMaster(dev, MASTER_POINTER);
+ lastSlave = mpointer->u.lastSlave;
+ ptr = GetXTestDevice(mpointer);
+ } else if (!dev->u.master)
ptr = dev;
else
return;
- if (flags & XkbSA_MoveAbsoluteX || flags & XkbSA_MoveAbsoluteY)
- gpe_flags = POINTER_ABSOLUTE;
- else
- gpe_flags = POINTER_RELATIVE;
- events = InitEventList(GetMaximumEventsNum());
+ events = InitEventList(GetMaximumEventsNum() + 1);
OsBlockSignals();
pScreen = miPointerGetScreen(ptr);
saveWait = miPointerSetWaitForUpdate(pScreen, FALSE);
- nevents = GetPointerEvents(events, ptr,
- MotionNotify, 0,
- gpe_flags, 0, 2, (int[]){x, y});
+ nevents = GetPointerEvents(events, ptr, type, button, flags, 0,
+ num_valuators, valuators);
+ if (IsMaster(dev) && (lastSlave && lastSlave != ptr))
+ UpdateFromMaster(&events[nevents], lastSlave, DEVCHANGE_POINTER_EVENT, &nevents);
miPointerSetWaitForUpdate(pScreen, saveWait);
OsReleaseSignals();
@@ -1368,14 +1386,31 @@ XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y) mieqProcessDeviceEvent(ptr, (InternalEvent*)events[i].event, NULL);
FreeEventList(events, GetMaximumEventsNum());
+
+}
+
+static void
+XkbFakePointerMotion(DeviceIntPtr dev, unsigned flags,int x,int y)
+{
+ int gpe_flags = 0;
+
+ /* ignore attached SDs */
+ if (!IsMaster(dev) && GetMaster(dev, MASTER_POINTER) != NULL)
+ return;
+
+ if (flags & XkbSA_MoveAbsoluteX || flags & XkbSA_MoveAbsoluteY)
+ gpe_flags = POINTER_ABSOLUTE;
+ else
+ gpe_flags = POINTER_RELATIVE;
+
+ InjectPointerKeyEvents(dev, MotionNotify, 0, gpe_flags, 2, (int[]){x, y});
}
void
XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button)
{
- EventListPtr events;
- int nevents, i;
DeviceIntPtr ptr;
+ int down;
/* If dev is a slave device, and the SD is attached, do nothing. If we'd
* post through the attached master pointer we'd get duplicate events.
@@ -1385,24 +1420,18 @@ XkbFakeDeviceButton(DeviceIntPtr dev,Bool press,int button) * if dev is a floating slave, post through the device itself.
*/
- if (IsMaster(dev))
- ptr = GetXTestDevice(GetMaster(dev, MASTER_POINTER));
- else if (!dev->u.master)
+ if (IsMaster(dev)) {
+ DeviceIntPtr mpointer = GetMaster(dev, MASTER_POINTER);
+ ptr = GetXTestDevice(mpointer);
+ } else if (!dev->u.master)
ptr = dev;
else
return;
- events = InitEventList(GetMaximumEventsNum());
- OsBlockSignals();
- nevents = GetPointerEvents(events, ptr,
- press ? ButtonPress : ButtonRelease, button,
- 0 /* flags */, 0 /* first */,
- 0 /* num_val */, NULL);
- OsReleaseSignals();
-
-
- for (i = 0; i < nevents; i++)
- mieqProcessDeviceEvent(ptr, (InternalEvent*)events[i].event, NULL);
+ down = button_is_down(ptr, button, BUTTON_PROCESSED);
+ if (press == down)
+ return;
- FreeEventList(events, GetMaximumEventsNum());
+ InjectPointerKeyEvents(dev, press ? ButtonPress : ButtonRelease,
+ button, 0, 0, NULL);
}
diff --git a/xorg-server/xkeyboard-config/rules/base.extras.xml.in b/xorg-server/xkeyboard-config/rules/base.extras.xml.in index a17205e54..ca4d42c49 100644 --- a/xorg-server/xkeyboard-config/rules/base.extras.xml.in +++ b/xorg-server/xkeyboard-config/rules/base.extras.xml.in @@ -81,6 +81,22 @@ </variant>
</variantList>
</layout>
+ <layout>
+ <configItem>
+ <name>ru</name>
+ <shortDescription>Rus</shortDescription>
+ <description>Russia</description>
+ </configItem>
+ <variantList>
+ <variant>
+ <configItem>
+ <name>chu</name>
+ <description>Church Slavonic</description>
+ <languageList><iso639Id>chu</iso639Id></languageList>
+ </configItem>
+ </variant>
+ </variantList>
+ </layout>
</layoutList>
<optionList/>
</xkbConfigRegistry>
diff --git a/xorg-server/xkeyboard-config/rules/extras/variantsMapping.lst b/xorg-server/xkeyboard-config/rules/extras/variantsMapping.lst index 36af488d1..fd0add719 100644 --- a/xorg-server/xkeyboard-config/rules/extras/variantsMapping.lst +++ b/xorg-server/xkeyboard-config/rules/extras/variantsMapping.lst @@ -1,4 +1,5 @@ rs combiningkeys extras/rs combiningkeys
+ru chu extras/ru chu
ir ave extras/ir ave
us alt-intl-unicode extras/us alt-intl-unicode
us crd extras/us crd
diff --git a/xorg-server/xkeyboard-config/symbols/extras/Makefile.am b/xorg-server/xkeyboard-config/symbols/extras/Makefile.am index 7410ac24f..948060441 100644 --- a/xorg-server/xkeyboard-config/symbols/extras/Makefile.am +++ b/xorg-server/xkeyboard-config/symbols/extras/Makefile.am @@ -1,5 +1,5 @@ symbolsdir = $(xkb_base)/symbols/extras
dist_symbols_DATA = apl \
ir \
- rs \
+ rs ru \
us
diff --git a/xorg-server/xkeyboard-config/symbols/extras/ru b/xorg-server/xkeyboard-config/symbols/extras/ru new file mode 100644 index 000000000..7e2404250 --- /dev/null +++ b/xorg-server/xkeyboard-config/symbols/extras/ru @@ -0,0 +1,59 @@ +// Church Slavonic language layout
+// based on
+// russian standard keyboard
+// Aleksandr Andreev and Yuri Shardt
+// Last Changes 2010/08/01. Contact <aleksandr.andreev@gmail.com>
+
+partial alphanumeric_keys
+xkb_symbols "chu"
+{
+ name[Group1]= "Russia - Church Slavonic";
+ key <TLDE> { [ U0457, U0407, U0482, U20DD ] }; // ї Ї ҂ e.g: а⃝ where the last is a combining ten thousands sign
+ key <AE01> { [ U0461, U0460, U047D, U047C] }; // ѡ Ѡ ѽ Ѽ
+ key <AE02> { [ U0454, U0404, U0465, U0464] }; // є Є ѥ Ѥ
+ key <AE03> { [ U046F, U046E, U0469, U0468] }; // ѯ Ѯ ѩ Ѩ
+ key <AE04> { [ U0471, U0470, U046D, U046C] }; // ѱ Ѱ ѭ Ѭ
+ key <AE05> { [ U0473, U0472, Cyrillic_ya, Cyrillic_YA] }; // ѳ Ѳ я Я (WHERE Я IS I+A, NOT SMALL YUS)
+ key <AE06> { [ U0475, U0474, U0477, U0476] }; // ѵ Ѵ ѷ Ѷ
+ key <AE07> { [ U047B, U047A, UA64D, UA64C] }; // ѻ Ѻ ꙍ Ꙍ
+ key <AE08> { [ U047F, U047E, U046B, U046A] }; // ѿ Ѿ ѫ Ѫ
+ key <AE09> { [ U0455, U0405, parenleft, U002A ] }; // ѕ Ѕ ( *
+ key <AE10> { [ Cyrillic_u, Cyrillic_U, parenright, U0488 ] }; // у У ) NB: for diagraph Ouk, use Cyrillic_o + Cyrillic_u
+ key <AE11> { [ U0483, U0486, U0487, U005F] }; // а҃ а҆ а҇, _ (titlo, psili, pokrytie, underscore)
+ key <AE12> { [ U0301, U0300, U0484, UA67E] }; // а̀ а́ а҄ ꙾ (oxia, varia, kamora, kavyka)
+ key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, U0456 ] };
+ key <AD02> { [ Cyrillic_tse, Cyrillic_TSE, U2DF0 ] };
+ key <AD03> { [ UA64B, UA64A, U2DF9 ] }; // Cyrillic monograph Uk (not U)!
+ key <AD04> { [ Cyrillic_ka, Cyrillic_KA, U2DE6 ] };
+ key <AD05> { [ Cyrillic_ie, Cyrillic_IE, U2DF7 ] };
+ key <AD06> { [ Cyrillic_en, Cyrillic_EN, U2DE9 ] };
+ key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, U2DE2 ] };
+ key <AD08> { [ Cyrillic_sha, Cyrillic_SHA, U2DF2 ] };
+ key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA, U2DF3 ] };
+ key <AD10> { [ Cyrillic_ze, Cyrillic_ZE, U2DE5 ] };
+ key <AD11> { [ Cyrillic_ha, Cyrillic_HA, U2DEF ] };
+ key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN, UA67D ] }; // Payerok
+ key <BKSL> { [backslash, slash, colon, question] }; // \ / : ? (note, for Slavonic question use semicolon
+ key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] };
+ key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <AC03> { [ Cyrillic_ve, Cyrillic_VE, U2DE1 ] };
+ key <AC04> { [ Cyrillic_a, Cyrillic_A, U2DF6 ] };
+ key <AC05> { [ Cyrillic_pe, Cyrillic_PE, U2DEB ] };
+ key <AC06> { [ Cyrillic_er, Cyrillic_ER, U2DEC ] };
+ key <AC07> { [ Cyrillic_o, Cyrillic_O, U2DEA ] };
+ key <AC08> { [ Cyrillic_el, Cyrillic_EL, U2DE7 ] };
+ key <AC09> { [ Cyrillic_de, Cyrillic_DE, U2DE3 ] };
+ key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE, U2DE4 ] };
+ key <AC11> { [ U0463, U0462, U2DFA ] }; // Yat
+ key <AB01> { [ U0467, U0466, U2DFD ] }; // Small Yus
+ key <AB02> { [ Cyrillic_che, Cyrillic_CHE, U2DF1 ] };
+ key <AB03> { [ Cyrillic_es, Cyrillic_ES, U2DED ] };
+ key <AB04> { [ Cyrillic_em, Cyrillic_EM, U2DE8 ] };
+ key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
+ key <AB06> { [ Cyrillic_te, Cyrillic_TE, U2DEE ] };
+ key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
+ key <AB08> { [ Cyrillic_be, Cyrillic_BE, U2DE0 ] };
+ key <AB09> { [ Cyrillic_yu, Cyrillic_YU, U2DFB ] };
+ key <AB10> { [ period, comma, semicolon, exclam ] };
+};
+
diff --git a/xorg-server/xkeyboard-config/symbols/inet b/xorg-server/xkeyboard-config/symbols/inet index 0fd549f76..b3b155bca 100644 --- a/xorg-server/xkeyboard-config/symbols/inet +++ b/xorg-server/xkeyboard-config/symbols/inet @@ -216,7 +216,10 @@ xkb_symbols "evdev" { key <FK13> { [ XF86Tools ] };
key <FK14> { [ XF86Launch5 ] };
- key <FK15> { [ XF86MenuKB ] };
+ key <FK15> { [ XF86Launch6 ] };
+ key <FK16> { [ XF86Launch7 ] };
+ key <FK17> { [ XF86Launch8 ] };
+ key <FK18> { [ XF86Launch9 ] };
};
|