diff options
Diffstat (limited to 'xorg-server/hw/xgl/xgl.h')
-rw-r--r-- | xorg-server/hw/xgl/xgl.h | 1474 |
1 files changed, 0 insertions, 1474 deletions
diff --git a/xorg-server/hw/xgl/xgl.h b/xorg-server/hw/xgl/xgl.h deleted file mode 100644 index 03dc90c70..000000000 --- a/xorg-server/hw/xgl/xgl.h +++ /dev/null @@ -1,1474 +0,0 @@ -/* - * Copyright © 2004 David Reveman - * - * 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 - * David Reveman not be used in advertising or publicity pertaining to - * distribution of the software without specific, written prior permission. - * David Reveman makes no representations about the suitability of this - * software for any purpose. It is provided "as is" without express or - * implied warranty. - * - * DAVID REVEMAN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN - * NO EVENT SHALL DAVID REVEMAN 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: David Reveman <davidr@novell.com> - */ - -#ifndef _XGL_H_ -#define _XGL_H_ - -#include <xgl-config.h> - -#include <X11/X.h> -#define NEED_EVENTS -#include <X11/Xproto.h> -#include <X11/Xos.h> -#include <glitz.h> - -#include "scrnintstr.h" -#include "pixmapstr.h" -#include "windowstr.h" -#include "servermd.h" -#include "mi.h" -#include "dix.h" -#include "damage.h" -#include "gc.h" -#include "micmap.h" -/* I'd like gc.h to provide this */ -typedef struct _GCFuncs *GCFuncsPtr; - -#ifdef RENDER -#include "mipict.h" -#else -#ifdef XV -#undef XV /* Xv implementation require RENDER */ -#endif -#endif - -#ifdef XV -#define XGL_XV_FORMAT_YUY2 0 -#define XGL_XV_FORMAT_YV12 1 -#define XGL_XV_FORMAT_RGB 2 -#define XGL_XV_FORMAT_NUM 3 -#endif - -/* For the modules. We should decide what the actual version numbering should - * be. - */ -#define VERSION "0.0.1" - -extern WindowPtr *WindowTable; - -#define XGL_DEFAULT_PBO_MASK 0 - -typedef struct _xglSizeConstraint { - int minWidth; - int minHeight; - int aboveWidth; - int aboveHeight; -} xglSizeConstraintRec, *xglSizeConstraintPtr; - -typedef struct _xglAccelInfo { - Bool enabled; - Bool pbuffer; - xglSizeConstraintRec size; -} xglAccelInfoRec, *xglAccelInfoPtr; - -typedef struct _xglScreenAccelInfo { - xglAccelInfoRec pixmap; - xglAccelInfoRec window; - xglAccelInfoRec glx; - xglAccelInfoRec xv; -} xglScreenAccelInfoRec, *xglScreenAccelInfoPtr; - -typedef struct _xglScreenInfo { - glitz_drawable_t *drawable; - unsigned int depth; - unsigned int width; - unsigned int height; - unsigned int widthMm; - unsigned int heightMm; - int geometryDataType; - int geometryUsage; - Bool yInverted; - int pboMask; - Bool lines; - xglScreenAccelInfoRec accel; -} xglScreenInfoRec, *xglScreenInfoPtr; - -extern xglScreenInfoRec xglScreenInfo; - -typedef struct _xglPixelFormat { - CARD8 depth, bitsPerRGB; - glitz_pixel_masks_t masks; -} xglPixelFormatRec, *xglPixelFormatPtr; - -typedef struct _xglVisual { - struct _xglVisual *next; - VisualID vid; - xglPixelFormatPtr pPixel; - Bool pbuffer; - struct { - glitz_drawable_format_t *drawable; - glitz_format_t *surface; - } format; -} xglVisualRec, *xglVisualPtr; - -extern xglVisualPtr xglVisuals; - -#define xglAreaAvailable 0 -#define xglAreaDivided 1 -#define xglAreaOccupied 2 - -typedef struct _xglRootArea *xglRootAreaPtr; - -typedef struct _xglArea { - int state; - int level; - int x, y; - int width, height; - struct _xglArea *pArea[4]; - xglRootAreaPtr pRoot; - pointer closure; - DevUnion devPrivate; -} xglAreaRec, *xglAreaPtr; - -typedef struct _xglAreaFuncs { - Bool (*Create) (xglAreaPtr pArea); - - Bool (*MoveIn) (xglAreaPtr pArea, - pointer closure); - - void (*MoveOut) (xglAreaPtr pArea, - pointer closure); - - int (*CompareScore) (xglAreaPtr pArea, - pointer closure1, - pointer closure2); - -} xglAreaFuncsRec, *xglAreaFuncsPtr; - -typedef struct _xglRootArea { - int maxLevel; - int width, height; - xglAreaPtr pArea; - xglAreaFuncsPtr funcs; - int devPrivateSize; - pointer closure; -} xglRootAreaRec; - -typedef struct xglGeometry { - glitz_buffer_t *buffer; - pointer *data; - Bool broken; - glitz_fixed16_16_t xOff, yOff; - int dataType; - int usage; - int size, endOffset; - glitz_geometry_type_t type; - glitz_geometry_format_t f; - int first, width, count; - glitz_multi_array_t *array; -} xglGeometryRec, *xglGeometryPtr; - -#ifdef RENDER -typedef struct _xglFBox { - glitz_float_t x1, y1, x2, y2; -} xglFBoxRec; - -typedef union _xglBox { - BoxRec sBox; - xglFBoxRec fBox; -} xglBoxRec, *xglBoxPtr; - -typedef struct _xglRange { - int first; - unsigned int count; -} xglRangeRec, *xglRangePtr; - -typedef struct _xglGlyphTexture { - PicturePtr pMask; - glitz_pixel_format_t pixel; - glitz_geometry_format_t format; - int geometryDataType; -} xglGlyphTextureRec, *xglGlyphTexturePtr; - -typedef struct _xglGlyphArea { - unsigned long serial; - union { - xglBoxRec box; - xglRangeRec range; - } u; -} xglGlyphAreaRec, *xglGlyphAreaPtr; - -typedef struct _xglGlyphCache { - ScreenPtr pScreen; - int depth; - xglRootAreaRec rootArea; - union { - xglGlyphTextureRec texture; - xglGeometryRec geometry; - } u; -} xglGlyphCacheRec, *xglGlyphCachePtr; - -typedef struct _xglGlyph { - xglAreaPtr pArea; -} xglGlyphRec, *xglGlyphPtr; - -extern DevPrivateKey xglGlyphPrivateKey; - -#define XGL_GET_GLYPH_PRIV(pScreen, pGlyph) ((xglGlyphPtr) \ - dixLookupPrivate(GetGlyphPrivatesForScreen (pGlyph, pScreen), \ - xglGlyphPrivateKey)) - -#define XGL_GLYPH_PRIV(pScreen, pGlyph) \ - xglGlyphPtr pGlyphPriv = XGL_GET_GLYPH_PRIV (pScreen, pGlyph) - -#endif - -typedef struct _xglScreen { - xglVisualPtr pVisual; - -#ifdef GLXEXT - xglVisualPtr pGlxVisual; -#endif - -#ifdef XV - xglVisualRec pXvVisual[XGL_XV_FORMAT_NUM]; -#endif - - xglVisualPtr rootVisual; - glitz_drawable_t *drawable; - glitz_surface_t *surface; - PixmapPtr pScreenPixmap; - unsigned long features; - int geometryUsage; - int geometryDataType; - Bool yInverted; - int pboMask; - Bool lines; - xglGeometryRec scratchGeometry; - xglScreenAccelInfoRec accel; - -#ifdef RENDER - xglGlyphCacheRec glyphCache[33]; - PicturePtr pSolidAlpha; - struct _trapInfo { - PicturePtr pMask; - glitz_geometry_format_t format; - } trapInfo; -#endif - - GetImageProcPtr GetImage; - GetSpansProcPtr GetSpans; - CreateWindowProcPtr CreateWindow; - DestroyWindowProcPtr DestroyWindow; - ChangeWindowAttributesProcPtr ChangeWindowAttributes; - CopyWindowProcPtr CopyWindow; - CreateGCProcPtr CreateGC; - CloseScreenProcPtr CloseScreen; - SetWindowPixmapProcPtr SetWindowPixmap; - BitmapToRegionProcPtr BitmapToRegion; - -#ifdef RENDER - CompositeProcPtr Composite; - GlyphsProcPtr Glyphs; - TrapezoidsProcPtr Trapezoids; - AddTrapsProcPtr AddTraps; - AddTrianglesProcPtr AddTriangles; - ChangePictureProcPtr ChangePicture; - ChangePictureTransformProcPtr ChangePictureTransform; - ChangePictureFilterProcPtr ChangePictureFilter; - - RealizeGlyphProcPtr RealizeGlyph; - UnrealizeGlyphProcPtr UnrealizeGlyph; -#endif -} xglScreenRec, *xglScreenPtr; - -extern DevPrivateKey xglScreenPrivateKey; - -#define XGL_GET_SCREEN_PRIV(pScreen) ((xglScreenPtr) \ - dixLookupPrivate(&(pScreen)->devPrivates, xglScreenPrivateKey)) - -#define XGL_SET_SCREEN_PRIV(pScreen, v) \ - dixSetPrivate(&(pScreen)->devPrivates, xglScreenPrivateKey, v) - -#define XGL_SCREEN_PRIV(pScreen) \ - xglScreenPtr pScreenPriv = XGL_GET_SCREEN_PRIV (pScreen) - -#define XGL_SCREEN_WRAP(field, wrapper) \ - pScreenPriv->field = pScreen->field; \ - pScreen->field = wrapper - -#define XGL_SCREEN_UNWRAP(field) \ - pScreen->field = pScreenPriv->field - -#ifdef RENDER -#define XGL_PICTURE_SCREEN_WRAP(field, wrapper) \ - pScreenPriv->field = pPictureScreen->field; \ - pPictureScreen->field = wrapper - -#define XGL_PICTURE_SCREEN_UNWRAP(field) \ - pPictureScreen->field = pScreenPriv->field -#endif - -#define xglGCSoftwareDrawableFlag (1L << 0) -#define xglGCBadFunctionFlag (1L << 1) -#define xglGCPlaneMaskFlag (1L << 2) - -typedef struct _xglGC { - glitz_surface_t *fg; - glitz_surface_t *bg; - glitz_format_id_t id; - glitz_operator_t op; - unsigned long flags; - GCFuncsPtr funcs; - GCOpsPtr ops; -} xglGCRec, *xglGCPtr; - -extern DevPrivateKey xglGCPrivateKey; - -#define XGL_GET_GC_PRIV(pGC) ((xglGCPtr) \ - dixLookupPrivate(&(pGC)->devPrivates, xglGCPrivateKey)) - -#define XGL_GC_PRIV(pGC) \ - xglGCPtr pGCPriv = XGL_GET_GC_PRIV (pGC) - -#define XGL_GC_WRAP(field, wrapper) \ - pGCPriv->field = pGC->field; \ - pGC->field = wrapper - -#define XGL_GC_UNWRAP(field) \ - pGC->field = pGCPriv->field - - -#define xglPCFillMask (1L << 0) -#define xglPCFilterMask (1L << 1) -#define xglPCTransformMask (1L << 2) -#define xglPCComponentAlphaMask (1L << 3) -#define xglPCDitherMask (1L << 4) - -#define xglPFFilterMask (1L << 8) - -#define xglPixmapTargetNo 0 -#define xglPixmapTargetOut 1 -#define xglPixmapTargetIn 2 - -#ifdef XV - -typedef struct _xglXvPort { - PixmapPtr pPixmap; - PicturePtr pSrc; - PicturePtr pDst; -} xglXvPortRec, *xglXvPortPtr; - -#endif - -typedef struct _xglPixmap { - xglVisualPtr pVisual; - glitz_surface_t *surface; - glitz_drawable_t *drawable; - glitz_buffer_t *buffer; - int target; - Bool acceleratedTile; - pointer bits; - int stride; - DamagePtr pDamage; - BoxRec damageBox; - RegionRec bitRegion; - Bool allBits; - unsigned long pictureMask; - xglGeometryPtr pGeometry; - -#ifdef XV - xglXvPortPtr pPortPriv; -#endif - -} xglPixmapRec, *xglPixmapPtr; - -extern DevPrivateKey xglPixmapPrivateKey; - -#define XGL_GET_PIXMAP_PRIV(pPixmap) ((xglPixmapPtr) \ - dixLookupPrivate(&(pPixmap)->devPrivates, xglPixmapPrivateKey)) - -#define XGL_PIXMAP_PRIV(pPixmap) \ - xglPixmapPtr pPixmapPriv = XGL_GET_PIXMAP_PRIV (pPixmap) - -#define XGL_PICTURE_CHANGES(pictureMask) (pictureMask & 0x0000ffff) -#define XGL_PICTURE_FAILURES(pictureMask) (pictureMask & 0xffff0000) - -typedef struct _xglWin { - PixmapPtr pPixmap; -} xglWinRec, *xglWinPtr; - -extern DevPrivateKey xglWinPrivateKey; - -#define XGL_GET_WINDOW_PRIV(pWin) ((xglWinPtr) \ - dixLookupPrivate(&(pWin)->devPrivates, xglWinPrivateKey)) - -#define XGL_WINDOW_PRIV(pWin) \ - xglWinPtr pWinPriv = XGL_GET_WINDOW_PRIV (pWin) - -#define XGL_GET_WINDOW_PIXMAP(pWin) \ - (XGL_GET_WINDOW_PRIV((WindowPtr) (pWin))->pPixmap) - - -#define XGL_GET_DRAWABLE_PIXMAP(pDrawable) \ - (((pDrawable)->type == DRAWABLE_WINDOW)? \ - XGL_GET_WINDOW_PIXMAP (pDrawable): \ - (PixmapPtr) (pDrawable)) - -#define XGL_DRAWABLE_PIXMAP(pDrawable) \ - PixmapPtr pPixmap = XGL_GET_DRAWABLE_PIXMAP (pDrawable) - -#define XGL_GET_DRAWABLE_PIXMAP_PRIV(pDrawable) \ - XGL_GET_PIXMAP_PRIV (XGL_GET_DRAWABLE_PIXMAP (pDrawable)) - -#define XGL_DRAWABLE_PIXMAP_PRIV(pDrawable) \ - xglPixmapPtr pPixmapPriv = XGL_GET_DRAWABLE_PIXMAP_PRIV (pDrawable) - -#ifdef COMPOSITE -#define __XGL_OFF_X_WIN(pPix) (-(pPix)->screen_x) -#define __XGL_OFF_Y_WIN(pPix) (-(pPix)->screen_y) -#else -#define __XGL_OFF_X_WIN(pPix) (0) -#define __XGL_OFF_Y_WIN(pPix) (0) -#endif - -#define XGL_GET_DRAWABLE(pDrawable, pSurface, xOff, yOff) \ - { \ - PixmapPtr _pPix; \ - if ((pDrawable)->type != DRAWABLE_PIXMAP) { \ - _pPix = XGL_GET_WINDOW_PIXMAP (pDrawable); \ - (xOff) = __XGL_OFF_X_WIN (_pPix); \ - (yOff) = __XGL_OFF_Y_WIN (_pPix); \ - } else { \ - _pPix = (PixmapPtr) (pDrawable); \ - (yOff) = (xOff) = 0; \ - } \ - (pSurface) = XGL_GET_PIXMAP_PRIV (_pPix)->surface; \ - } - -#define XGL_DEFAULT_DPI 96 - -#define XGL_SW_FAILURE_STRING "software fall-back failure" - -#define MIN(a,b) ((a) < (b) ? (a) : (b)) -#define MAX(a,b) ((a) > (b) ? (a) : (b)) - -#define POWER_OF_TWO(v) ((v & (v - 1)) == 0) - -#define MOD(a,b) ((a) < 0 ? ((b) - ((-(a) - 1) % (b))) - 1 : (a) % (b)) - -#define FIXED_TO_FLOAT(f) (((glitz_float_t) (f)) / 65536) -#define FLOAT_TO_FIXED(f) ((int) ((f) * 65536)) - -#define BOX_NOTEMPTY(pBox) \ - (((pBox)->x2 - (pBox)->x1) > 0 && \ - ((pBox)->y2 - (pBox)->y1) > 0) - - -/* xglinput.c */ - -int -xglMouseProc (DeviceIntPtr pDevice, - int onoff); - -int -xglKeybdProc (DeviceIntPtr pDevice, - int onoff); - -void -xglBell (int volume, - DeviceIntPtr pDev, - pointer ctrl, - int something); - -void -xglKbdCtrl (DeviceIntPtr pDevice, - KeybdCtrl *ctrl); - -void -xglInitInput (int argc, char **argv); - - -/* xgloutput.c */ - -void -xglSetPixmapFormats (ScreenInfo *pScreenInfo); - -void -xglSetRootClip (ScreenPtr pScreen, - Bool enable); - - -/* xglcmap.c */ - -void -xglSetVisualTypes (int depth, - int visuals, - int redSize, - int greenSize, - int blueSize); - -Bool -xglHasVisualTypes (xglVisualPtr pVisual, - int depth); - -glitz_format_t * -xglFindBestSurfaceFormat (ScreenPtr pScreen, - xglPixelFormatPtr pPixel); - -void -xglInitVisuals (ScreenPtr pScreen); - -xglVisualPtr -xglFindVisualWithDepth (ScreenPtr pScreen, - int depth); - -xglVisualPtr -xglFindVisualWithId (ScreenPtr pScreen, - int vid); - -void -xglClearVisualTypes (void); - - -/* xglparse.c */ - -char * -xglParseFindNext (char *cur, - char *delim, - char *save, - char *last); - -void -xglParseScreen (char *arg); - -void -xglUseMsg (void); - -int -xglProcessArgument (int argc, - char **argv, - int i); - - -/* xglscreen.c */ - -Bool -xglScreenInit (ScreenPtr pScreen); - -Bool -xglFinishScreenInit (ScreenPtr pScreen); - -Bool -xglCloseScreen (int index, - ScreenPtr pScreen); - -void -xglCreateSolidAlphaPicture (ScreenPtr pScreen); - - -/* xglarea.c */ - -Bool -xglRootAreaInit (xglRootAreaPtr pRoot, - int maxLevel, - int width, - int height, - int devPrivateSize, - xglAreaFuncsPtr funcs, - pointer closure); - -void -xglRootAreaFini (xglRootAreaPtr pRoot); - -void -xglLeaveArea (xglAreaPtr pArea); - -void -xglWithdrawArea (xglAreaPtr pArea); - -Bool -xglFindArea (xglAreaPtr pArea, - int width, - int height, - Bool kickOut, - pointer closure); - - -/* xglgeometry.c */ - -#define GEOMETRY_DATA_TYPE_SHORT 0 -#define GEOMETRY_DATA_TYPE_FLOAT 1 - -typedef struct _xglDataTypeInfo { - glitz_data_type_t type; - int size; -} xglDataTypeInfoRec, *xglDataTypeInfoPtr; - -extern xglDataTypeInfoRec xglGeometryDataTypes[2]; - -#define DEFAULT_GEOMETRY_DATA_TYPE GEOMETRY_DATA_TYPE_FLOAT - -#define GEOMETRY_USAGE_STREAM 0 -#define GEOMETRY_USAGE_STATIC 1 -#define GEOMETRY_USAGE_DYNAMIC 2 -#define GEOMETRY_USAGE_SYSMEM 3 - -#define DEFAULT_GEOMETRY_USAGE GEOMETRY_USAGE_SYSMEM - -#define GEOMETRY_INIT(pScreen, pGeometry, _type, _usage, _size) \ - { \ - (pGeometry)->type = _type; \ - (pGeometry)->usage = _usage; \ - (pGeometry)->dataType = DEFAULT_GEOMETRY_DATA_TYPE; \ - (pGeometry)->usage = _usage; \ - (pGeometry)->size = 0; \ - (pGeometry)->endOffset = 0; \ - (pGeometry)->data = (pointer) 0; \ - (pGeometry)->buffer = NULL; \ - (pGeometry)->broken = FALSE; \ - (pGeometry)->xOff = 0; \ - (pGeometry)->yOff = 0; \ - (pGeometry)->array = NULL; \ - (pGeometry)->first = 0; \ - (pGeometry)->count = 0; \ - if (_type == GLITZ_GEOMETRY_TYPE_VERTEX) \ - { \ - (pGeometry)->width = 2; \ - (pGeometry)->f.vertex.type = \ - xglGeometryDataTypes[(pGeometry)->dataType].type; \ - (pGeometry)->f.vertex.bytes_per_vertex = (pGeometry)->width * \ - xglGeometryDataTypes[(pGeometry)->dataType].size; \ - (pGeometry)->f.vertex.primitive = GLITZ_PRIMITIVE_QUADS; \ - (pGeometry)->f.vertex.attributes = 0; \ - (pGeometry)->f.vertex.src.type = GLITZ_DATA_TYPE_FLOAT; \ - (pGeometry)->f.vertex.src.size = GLITZ_COORDINATE_SIZE_X; \ - (pGeometry)->f.vertex.src.offset = 0; \ - (pGeometry)->f.vertex.mask.type = GLITZ_DATA_TYPE_FLOAT; \ - (pGeometry)->f.vertex.mask.size = GLITZ_COORDINATE_SIZE_X; \ - (pGeometry)->f.vertex.mask.offset = 0; \ - } \ - else \ - { \ - (pGeometry)->width = 0; \ - (pGeometry)->f.bitmap.scanline_order = \ - GLITZ_PIXEL_SCANLINE_ORDER_TOP_DOWN; \ - (pGeometry)->f.bitmap.bytes_per_line = 0; \ - (pGeometry)->f.bitmap.pad = GLYPHPADBYTES; \ - } \ - if (_size) \ - xglGeometryResize (pScreen, pGeometry, _size); \ - } - -#define GEOMETRY_UNINIT(pGeometry) \ - { \ - if ((pGeometry)->array) \ - glitz_multi_array_destroy ((pGeometry)->array); \ - if ((pGeometry)->buffer) \ - glitz_buffer_destroy ((pGeometry)->buffer); \ - if ((pGeometry)->data) \ - xfree ((pGeometry)->data); \ - } - -#define GEOMETRY_SET_BUFFER(pGeometry, _buffer) \ - { \ - glitz_buffer_reference (_buffer); \ - if ((pGeometry)->buffer) \ - glitz_buffer_destroy ((pGeometry)->buffer); \ - (pGeometry)->buffer = _buffer; \ - } - -#define GEOMETRY_SET_MULTI_ARRAY(pGeometry, _array) \ - { \ - glitz_multi_array_reference (_array); \ - if ((pGeometry)->array) \ - glitz_multi_array_destroy ((pGeometry)->array); \ - (pGeometry)->array = _array; \ - } - -#define GEOMETRY_RESIZE(pScreen, pGeometry, size) \ - xglGeometryResize (pScreen, pGeometry, size) - -#define GEOMETRY_SET_TRANSLATE(pGeometry, _x, _y) \ - { \ - (pGeometry)->xOff = (_x) << 16; \ - (pGeometry)->yOff = (_y) << 16; \ - } - -#define GEOMETRY_TRANSLATE(pGeometry, tx, ty) \ - { \ - (pGeometry)->xOff += (tx) << 16; \ - (pGeometry)->yOff += (ty) << 16; \ - } - -#define GEOMETRY_TRANSLATE_FIXED(pGeometry, ftx, fty) \ - { \ - (pGeometry)->xOff += (ftx); \ - (pGeometry)->yOff += (fty); \ - } - -#define GEOMETRY_SET_VERTEX_PRIMITIVE(pGeometry, _primitive) \ - (pGeometry)->f.vertex.primitive = _primitive - -#define GEOMETRY_SET_VERTEX_DATA_TYPE(pGeometry, _type) \ - { \ - (pGeometry)->dataType = _type; \ - (pGeometry)->f.vertex.type = xglGeometryDataTypes[_type].type; \ - (pGeometry)->f.vertex.bytes_per_vertex = (pGeometry)->width * \ - xglGeometryDataTypes[_type].size; \ - } - -#define GEOMETRY_ADD_BOX(pScreen, pGeometry, pBox, nBox) \ - xglGeometryAddBox (pScreen, pGeometry, pBox, nBox, \ - (pGeometry)->endOffset) - -#define GEOMETRY_ADD_REGION_AT(pScreen, pGeometry, pRegion, offset) \ - xglGeometryAddBox (pScreen, pGeometry, \ - REGION_RECTS (pRegion), \ - REGION_NUM_RECTS (pRegion), \ - offset) - -#define GEOMETRY_ADD_REGION(pScreen, pGeometry, pRegion) \ - xglGeometryAddBox (pScreen, pGeometry, \ - REGION_RECTS (pRegion), \ - REGION_NUM_RECTS (pRegion), \ - (pGeometry)->endOffset) - -#define GEOMETRY_ADD_SPAN(pScreen, pGeometry, ppt, pwidth, n) \ - xglGeometryAddSpan (pScreen, pGeometry, ppt, pwidth, n, \ - (pGeometry)->endOffset) - -#define GEOMETRY_ADD_LINE(pScreen, pGeometry, loop, mode, npt, ppt) \ - xglGeometryAddLine (pScreen, pGeometry, loop, mode, npt, ppt, \ - (pGeometry)->endOffset) - -#define GEOMETRY_ADD_SEGMENT(pScreen, pGeometry, nsegInit, pSegInit) \ - xglGeometryAddSegment (pScreen, pGeometry, nsegInit, pSegInit, \ - (pGeometry)->endOffset) - -#define GEOMETRY_FOR_GLYPH(pScreen, pGeometry, nGlyph, ppciInit, pglyphBase) \ - xglGeometryForGlyph (pScreen, pGeometry, nGlyph, ppciInit, pglyphBase); - -#define GEOMETRY_ADD_TRAPEZOID(pScreen, pGeometry, pTrap, nTrap) \ - xglGeometryAddTrapezoid (pScreen, pGeometry, pTrap, nTrap, \ - (pGeometry)->endOffset) - -#define GEOMETRY_ADD_TRAP(pScreen, pGeometry, pTrap, nTrap) \ - xglGeometryAddTrap (pScreen, pGeometry, pTrap, nTrap, \ - (pGeometry)->endOffset) - -#define GEOMETRY_GET_FORMAT(pGeometry, format) \ - xglGeometryGetFormat (pGeometry, format) - -#define GEOMETRY_ENABLE(pGeometry, surface) \ - xglSetGeometry (pGeometry, surface) - -#define GEOMETRY_DISABLE(surface) \ - glitz_set_geometry (surface, GLITZ_GEOMETRY_TYPE_NONE, NULL, NULL) - -void -xglGeometryResize (ScreenPtr pScreen, - xglGeometryPtr pGeometry, - int size); - -void -xglGeometryAddBox (ScreenPtr pScreen, - xglGeometryPtr pGeometry, - BoxPtr pBox, - int nBox, - int offset); - -void -xglGeometryAddSpan (ScreenPtr pScreen, - xglGeometryPtr pGeometry, - DDXPointPtr ppt, - int *pwidth, - int n, - int offset); - -void -xglGeometryAddLine (ScreenPtr pScreen, - xglGeometryPtr pGeometry, - int loop, - int mode, - int npt, - DDXPointPtr ppt, - int offset); - -void -xglGeometryAddSegment (ScreenPtr pScreen, - xglGeometryPtr pGeometry, - int nsegInit, - xSegment *pSegInit, - int offset); - -void -xglGeometryForGlyph (ScreenPtr pScreen, - xglGeometryPtr pGeometry, - unsigned int nGlyph, - CharInfoPtr *ppciInit, - pointer pglyphBase); - -void -xglGeometryAddTrapezoid (ScreenPtr pScreen, - xglGeometryPtr pGeometry, - xTrapezoid *pTrap, - int nTrap, - int offset); - -void -xglGeometryAddTrap (ScreenPtr pScreen, - xglGeometryPtr pGeometry, - xTrap *pTrap, - int nTrap, - int offset); - -xglGeometryPtr -xglGetScratchGeometryWithSize (ScreenPtr pScreen, - int size); - -xglGeometryPtr -xglGetScratchVertexGeometryWithType (ScreenPtr pScreen, - int type, - int count); - -xglGeometryPtr -xglGetScratchVertexGeometry (ScreenPtr pScreen, - int count); - -Bool -xglSetGeometry (xglGeometryPtr pGeometry, - glitz_surface_t *surface); - - -/* xglpixmap.c */ - -#define XGL_PIXMAP_USAGE_HINT_STREAM_DRAW 1 -#define XGL_PIXMAP_USAGE_HINT_STREAM_READ 2 -#define XGL_PIXMAP_USAGE_HINT_STREAM_COPY 3 -#define XGL_PIXMAP_USAGE_HINT_STATIC_DRAW 4 -#define XGL_PIXMAP_USAGE_HINT_STATIC_READ 5 -#define XGL_PIXMAP_USAGE_HINT_STATIC_COPY 6 -#define XGL_PIXMAP_USAGE_HINT_DYNAMIC_DRAW 7 -#define XGL_PIXMAP_USAGE_HINT_DYNAMIC_READ 8 -#define XGL_PIXMAP_USAGE_HINT_DYNAMIC_COPY 9 - -#define XGL_PIXMAP_USAGE_HINT_DEFAULT XGL_PIXMAP_USAGE_HINT_STREAM_DRAW - -PixmapPtr -xglCreatePixmap (ScreenPtr pScreen, - int width, - int height, - int depth, - unsigned usage_hint); - -void -xglFiniPixmap (PixmapPtr pPixmap); - -Bool -xglDestroyPixmap (PixmapPtr pPixmap); - -Bool -xglModifyPixmapHeader (PixmapPtr pPixmap, - int width, - int height, - int depth, - int bitsPerPixel, - int devKind, - pointer pPixData); - -void -xglSetPixmapVisual (PixmapPtr pPixmap, - xglVisualPtr pVisual); - -RegionPtr -xglPixmapToRegion (PixmapPtr pPixmap); - -xglGeometryPtr -xglPixmapToGeometry (PixmapPtr pPixmap, - int xOff, - int yOff); - -Bool -xglCreatePixmapSurface (PixmapPtr pPixmap); - -Bool -xglAllocatePixmapBits (PixmapPtr pPixmap, int hint); - -Bool -xglMapPixmapBits (PixmapPtr pPixmap); - -Bool -xglUnmapPixmapBits (PixmapPtr pPixmap); - -Bool -xglCheckPixmapSize (PixmapPtr pPixmap, - xglSizeConstraintPtr pSize); - -void -xglEnablePixmapAccel (PixmapPtr pPixmap, - xglAccelInfoPtr pAccel); - - -/* xglsync.c */ - -Bool -xglSyncBits (DrawablePtr pDrawable, - BoxPtr pExtents); - -void -xglSyncDamageBoxBits (DrawablePtr pDrawable); - -Bool -xglSyncSurface (DrawablePtr pDrawable); - -Bool -xglPrepareTarget (DrawablePtr pDrawable); - -void -xglAddSurfaceDamage (DrawablePtr pDrawable, - RegionPtr pRegion); - -void -xglAddCurrentSurfaceDamage (DrawablePtr pDrawable); - -void -xglAddBitDamage (DrawablePtr pDrawable, - RegionPtr pRegion); - -void -xglAddCurrentBitDamage (DrawablePtr pDrawable); - - -/* xglsolid.c */ - -Bool -xglSolid (DrawablePtr pDrawable, - glitz_operator_t op, - glitz_surface_t *solid, - xglGeometryPtr pGeometry, - int x, - int y, - int width, - int height, - BoxPtr pBox, - int nBox); - -Bool -xglSolidGlyph (DrawablePtr pDrawable, - GCPtr pGC, - int x, - int y, - unsigned int nGlyph, - CharInfoPtr *ppci, - pointer pglyphBase); - - -/* xgltile.c */ - -xglGeometryPtr -xglTiledBoxGeometry (PixmapPtr pTile, - int tileX, - int tileY, - BoxPtr pBox, - int nBox); - -Bool -xglTile (DrawablePtr pDrawable, - glitz_operator_t op, - PixmapPtr pTile, - int tileX, - int tileY, - xglGeometryPtr pGeometry, - int x, - int y, - int width, - int height, - BoxPtr pBox, - int nBox); - - -/* xglcopy.c */ - -Bool -xglCopy (DrawablePtr pSrc, - DrawablePtr pDst, - int dx, - int dy, - BoxPtr pBox, - int nBox); - -void -xglCopyProc (DrawablePtr pSrc, - DrawablePtr pDst, - GCPtr pGC, - BoxPtr pBox, - int nBox, - int dx, - int dy, - Bool reverse, - Bool upsidedown, - Pixel bitplane, - void *closure); - - -/* xglfill.c */ - -Bool -xglFill (DrawablePtr pDrawable, - GCPtr pGC, - xglGeometryPtr pGeometry, - int x, - int y, - int width, - int height, - BoxPtr pBox, - int nBox); - -void -xglFillSpan (DrawablePtr pDrawable, - GCPtr pGC, - int n, - DDXPointPtr ppt, - int *pwidth); - -void -xglFillRect (DrawablePtr pDrawable, - GCPtr pGC, - int nrect, - xRectangle *prect); - -Bool -xglFillLine (DrawablePtr pDrawable, - GCPtr pGC, - int mode, - int npt, - DDXPointPtr ppt); - -Bool -xglFillSegment (DrawablePtr pDrawable, - GCPtr pGC, - int nsegInit, - xSegment *pSegInit); - -Bool -xglFillGlyph (DrawablePtr pDrawable, - GCPtr pGC, - int x, - int y, - unsigned int nglyph, - CharInfoPtr *ppciInit, - pointer pglyphBase); - - -/* xglwindow.c */ - -Bool -xglCreateWindow (WindowPtr pWin); - -Bool -xglDestroyWindow (WindowPtr pWin); - -Bool -xglChangeWindowAttributes (WindowPtr pWin, - unsigned long mask); - -void -xglCopyWindow (WindowPtr pWin, - DDXPointRec ptOldOrg, - RegionPtr prgnSrc); - -PixmapPtr -xglGetWindowPixmap (WindowPtr pWin); - -void -xglSetWindowPixmap (WindowPtr pWin, - PixmapPtr pPixmap); - - -/* xglget.c */ - -void -xglGetImage (DrawablePtr pDrawable, - int x, - int y, - int w, - int h, - unsigned int format, - unsigned long planeMask, - char *d); - -void -xglGetSpans (DrawablePtr pDrawable, - int wMax, - DDXPointPtr ppt, - int *pwidth, - int nspans, - char *pchardstStart); - - -/* xglgc.c */ - -Bool -xglCreateGC (GCPtr pGC); - -void -xglDestroyGC (GCPtr pGC); - -void -xglValidateGC (GCPtr pGC, - unsigned long changes, - DrawablePtr pDrawable); - -void -xglFillSpans (DrawablePtr pDrawable, - GCPtr pGC, - int nspans, - DDXPointPtr ppt, - int *pwidth, - int fSorted); - -void -xglSetSpans (DrawablePtr pDrawable, - GCPtr pGC, - char *psrc, - DDXPointPtr ppt, - int *pwidth, - int nspans, - int fSorted); - -void -xglPutImage (DrawablePtr pDrawable, - GCPtr pGC, - int depth, - int x, - int y, - int w, - int h, - int leftPad, - int format, - char *bits); - -RegionPtr -xglCopyArea (DrawablePtr pSrc, - DrawablePtr pDst, - GCPtr pGC, - int srcX, - int srcY, - int w, - int h, - int dstX, - int dstY); - -RegionPtr -xglCopyPlane (DrawablePtr pSrc, - DrawablePtr pDst, - GCPtr pGC, - int srcX, - int srcY, - int w, - int h, - int dstX, - int dstY, - unsigned long bitPlane); - -void -xglPolyPoint (DrawablePtr pDrawable, - GCPtr pGC, - int mode, - int npt, - DDXPointPtr pptInit); - -void -xglPolylines (DrawablePtr pDrawable, - GCPtr pGC, - int mode, - int npt, - DDXPointPtr ppt); - -void -xglPolySegment (DrawablePtr pDrawable, - GCPtr pGC, - int nsegInit, - xSegment *pSegInit); - -void -xglPolyArc (DrawablePtr pDrawable, - GCPtr pGC, - int narcs, - xArc *pArcs); - -void -xglPolyFillRect (DrawablePtr pDrawable, - GCPtr pGC, - int nrect, - xRectangle *prect); - -void -xglPolyFillArc (DrawablePtr pDrawable, - GCPtr pGC, - int narcs, - xArc *pArcs); - -void -xglImageGlyphBlt (DrawablePtr pDrawable, - GCPtr pGC, - int x, - int y, - unsigned int nglyph, - CharInfoPtr *ppci, - pointer pglyphBase); - -void -xglPolyGlyphBlt (DrawablePtr pDrawable, - GCPtr pGC, - int x, - int y, - unsigned int nglyph, - CharInfoPtr *ppci, - pointer pglyphBase); -void -xglPushPixels (GCPtr pGC, - PixmapPtr pBitmap, - DrawablePtr pDrawable, - int w, - int h, - int x, - int y); - - -#ifdef MITSHM - -/* xglshm.c */ - -void -xglShmPutImage (DrawablePtr pDrawable, - GCPtr pGC, - int depth, - unsigned int format, - int w, - int h, - int sx, - int sy, - int sw, - int sh, - int dx, - int dy, - char *data); - -#endif - - -#ifdef RENDER - -/* xglpict.c */ - -void -xglComposite (CARD8 op, - PicturePtr pSrc, - PicturePtr pMask, - PicturePtr pDst, - INT16 xSrc, - INT16 ySrc, - INT16 xMask, - INT16 yMask, - INT16 xDst, - INT16 yDst, - CARD16 width, - CARD16 height); - -void -xglAddTriangles (PicturePtr pDst, - INT16 xOff, - INT16 yOff, - int ntri, - xTriangle *tris); - -void -xglChangePicture (PicturePtr pPicture, - Mask mask); - -int -xglChangePictureTransform (PicturePtr pPicture, - PictTransform *transform); - -int -xglChangePictureFilter (PicturePtr pPicture, - int filter, - xFixed *params, - int nparams); - -PicturePtr -xglCreateDevicePicture (pointer data); - -Bool -xglSyncPicture (ScreenPtr pScreen, - PicturePtr pPicture, - INT16 x, - INT16 y, - CARD16 width, - CARD16 height, - INT16 *xOff, - INT16 *yOff); - -Bool -xglPictureInit (ScreenPtr pScreen); - -void -xglPictureClipExtents (PicturePtr pPicture, - BoxPtr extents); - - -/* xglcompose.c */ - -Bool -xglCompositeGeneral (CARD8 op, - PicturePtr pSrc, - PicturePtr pMask, - PicturePtr pDst, - xglGeometryPtr pGeometry, - INT16 xSrc, - INT16 ySrc, - INT16 xMask, - INT16 yMask, - INT16 xDst, - INT16 yDst, - CARD16 width, - CARD16 height); - - -/* xglglyph.c */ - -Bool -xglRealizeGlyph (ScreenPtr pScreen, - GlyphPtr pGlyph); - -void -xglUnrealizeGlyph (ScreenPtr pScreen, - GlyphPtr pGlyph); - -Bool -xglInitGlyphCache (xglGlyphCachePtr pCache, - ScreenPtr pScreen, - PictFormatPtr format); - -void -xglFiniGlyphCache (xglGlyphCachePtr pCache); - -void -xglGlyphs (CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, - INT16 ySrc, - int nlist, - GlyphListPtr list, - GlyphPtr *glyphs); - - -/* xgltrap.c */ - -void -xglTrapezoids (CARD8 op, - PicturePtr pSrc, - PicturePtr pDst, - PictFormatPtr maskFormat, - INT16 xSrc, - INT16 ySrc, - int nTrap, - xTrapezoid *traps); - -void -xglAddTraps (PicturePtr pDst, - INT16 xOff, - INT16 yOff, - int nTrap, - xTrap *traps); - -#endif - -#ifdef XGL_MODULAR - -/* xglloader.c */ - -typedef struct _xglSymbol { - void **ptr; - const char *name; -} xglSymbolRec, *xglSymbolPtr; - -void * -xglLoadModule (const char *name, - int flag); - -void -xglUnloadModule (void *handle); - -Bool -xglLookupSymbols (void *handle, - xglSymbolPtr sym, - int nSym); - -#endif - - -/* xglxv.c */ - -#ifdef XV - -Bool -xglXvScreenInit (ScreenPtr pScreen); - -#endif - - -/* xglhash.c */ - -typedef struct _xglHashTable *xglHashTablePtr; - -Bool -xglLoadHashFuncs (void *handle); - -xglHashTablePtr -xglNewHashTable (void); - -void -xglDeleteHashTable (xglHashTablePtr pTable); - -void * -xglHashLookup (const xglHashTablePtr pTable, - unsigned int key); - -void -xglHashInsert (xglHashTablePtr pTable, - unsigned int key, - void *data); - -void -xglHashRemove (xglHashTablePtr pTable, - unsigned int key); - -unsigned int -xglHashFirstEntry (xglHashTablePtr pTable); - -unsigned int -xglHashNextEntry (const xglHashTablePtr pTable, - unsigned int key); - -unsigned int -xglHashFindFreeKeyBlock (xglHashTablePtr pTable, - unsigned int numKeys); - -#endif /* _XGL_H_ */ |