b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/*
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * Copyright (c) 1998-2001 by The XFree86 Project, Inc.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync *
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * Permission is hereby granted, free of charge, to any person obtaining a
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * copy of this software and associated documentation files (the "Software"),
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * to deal in the Software without restriction, including without limitation
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * the rights to use, copy, modify, merge, publish, distribute, sublicense,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * and/or sell copies of the Software, and to permit persons to whom the
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * Software is furnished to do so, subject to the following conditions:
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync *
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * The above copyright notice and this permission notice shall be included in
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * all copies or substantial portions of the Software.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync *
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * OTHER DEALINGS IN THE SOFTWARE.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync *
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * Except as contained in this notice, the name of the copyright holder(s)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * and author(s) shall not be used in advertising or otherwise to promote
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * the sale, use or other dealings in this Software without prior written
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync * authorization from the copyright holder(s) and author(s).
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#ifndef _XF86FBMAN_H
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define _XF86FBMAN_H
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include "scrnintstr.h"
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include "regionstr.h"
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define FAVOR_AREA_THEN_WIDTH 0
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define FAVOR_AREA_THEN_HEIGHT 1
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define FAVOR_WIDTH_THEN_AREA 2
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define FAVOR_HEIGHT_THEN_AREA 3
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define PRIORITY_LOW 0
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define PRIORITY_NORMAL 1
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define PRIORITY_EXTREME 2
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _FBArea {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ScreenPtr pScreen;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync BoxRec box;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int granularity;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync void (*MoveAreaCallback)(struct _FBArea*, struct _FBArea*);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync void (*RemoveAreaCallback)(struct _FBArea*);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync DevUnion devPrivate;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} FBArea, *FBAreaPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _FBLinear {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ScreenPtr pScreen;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int size;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int offset;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int granularity;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync void (*MoveLinearCallback)(struct _FBLinear*, struct _FBLinear*);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync void (*RemoveLinearCallback)(struct _FBLinear*);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync DevUnion devPrivate;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} FBLinear, *FBLinearPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef void (*FreeBoxCallbackProcPtr)(ScreenPtr, RegionPtr, pointer);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef void (*MoveAreaCallbackProcPtr)(FBAreaPtr, FBAreaPtr);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef void (*RemoveAreaCallbackProcPtr)(FBAreaPtr);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef void (*MoveLinearCallbackProcPtr)(FBLinearPtr, FBLinearPtr);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef void (*RemoveLinearCallbackProcPtr)(FBLinearPtr);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync FBAreaPtr (*AllocateOffscreenArea)(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int w, int h,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int granularity,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync MoveAreaCallbackProcPtr moveCB,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync RemoveAreaCallbackProcPtr removeCB,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync pointer privData);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync void (*FreeOffscreenArea)(FBAreaPtr area);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool (*ResizeOffscreenArea)(FBAreaPtr area, int w, int h);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool (*QueryLargestOffscreenArea)(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int *width, int *height,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int granularity,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int preferences,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int priority);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool (*RegisterFreeBoxCallback)(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync FreeBoxCallbackProcPtr FreeBoxCallback,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync pointer devPriv);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/* linear functions */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync FBLinearPtr (*AllocateOffscreenLinear)(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int size,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int granularity,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync MoveLinearCallbackProcPtr moveCB,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync RemoveLinearCallbackProcPtr removeCB,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync pointer privData);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync void (*FreeOffscreenLinear)(FBLinearPtr area);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool (*ResizeOffscreenLinear)(FBLinearPtr area, int size);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool (*QueryLargestOffscreenLinear)(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int *size,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int granularity,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int priority);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool (*PurgeOffscreenAreas) (ScreenPtr);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} FBManagerFuncs, *FBManagerFuncsPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool xf86RegisterOffscreenManager(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync FBManagerFuncsPtr funcs
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncxf86InitFBManagerRegion(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync RegionPtr ScreenRegion
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncxf86InitFBManagerArea(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int PixalArea,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int Verbosity
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncxf86InitFBManager(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync BoxPtr FullBox
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncxf86InitFBManagerLinear(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int offset,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int size
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncxf86FBManagerRunning(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ScreenPtr pScreen
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT FBAreaPtr
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncxf86AllocateOffscreenArea (
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int w, int h,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int granularity,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync MoveAreaCallbackProcPtr moveCB,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync RemoveAreaCallbackProcPtr removeCB,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync pointer privData
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT FBAreaPtr
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncxf86AllocateLinearOffscreenArea (
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int length,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int granularity,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync MoveAreaCallbackProcPtr moveCB,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync RemoveAreaCallbackProcPtr removeCB,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync pointer privData
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT FBLinearPtr
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncxf86AllocateOffscreenLinear (
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int length,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int granularity,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync MoveLinearCallbackProcPtr moveCB,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync RemoveLinearCallbackProcPtr removeCB,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync pointer privData
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void xf86FreeOffscreenArea(FBAreaPtr area);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT void xf86FreeOffscreenLinear(FBLinearPtr area);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncxf86ResizeOffscreenArea(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync FBAreaPtr resize,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int w, int h
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncxf86ResizeOffscreenLinear(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync FBLinearPtr resize,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int size
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncxf86RegisterFreeBoxCallback(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync FreeBoxCallbackProcPtr FreeBoxCallback,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync pointer devPriv
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncxf86PurgeUnlockedOffscreenAreas(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ScreenPtr pScreen
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncxf86QueryLargestOffscreenArea(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int *width, int *height,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int granularity,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int preferences,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int priority
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern _X_EXPORT Bool
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncxf86QueryLargestOffscreenLinear(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ScreenPtr pScreen,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int *size,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int granularity,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int priority
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif /* _XF86FBMAN_H */