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