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