119 lines
4.0 KiB
C
119 lines
4.0 KiB
C
/*
|
|
* Copyright 1997 through 2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org
|
|
*
|
|
* 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 Marc Aurele La France not be used in advertising or
|
|
* publicity pertaining to distribution of the software without specific,
|
|
* written prior permission. Marc Aurele La France makes no representations
|
|
* about the suitability of this software for any purpose. It is provided
|
|
* "as-is" without express or implied warranty.
|
|
*
|
|
* MARC AURELE LA FRANCE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
|
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
|
|
* EVENT SHALL MARC AURELE LA FRANCE 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.
|
|
*/
|
|
|
|
|
|
#ifndef __MIBANK_H__
|
|
#define __MIBANK_H__ 1
|
|
|
|
#include "scrnintstr.h"
|
|
|
|
/*
|
|
* Banking external interface.
|
|
*/
|
|
|
|
/*
|
|
* This is the banking function type. The return value is normally zero.
|
|
* Non-zero returns can be used to implement the likes of scanline interleave,
|
|
* etc.
|
|
*/
|
|
typedef int miBankProc(
|
|
ScreenPtr /*pScreen*/,
|
|
unsigned int /*iBank*/
|
|
);
|
|
|
|
typedef miBankProc *miBankProcPtr;
|
|
|
|
typedef struct _miBankInfo
|
|
{
|
|
/*
|
|
* Banking refers to the use of one or more apertures (in the server's
|
|
* address space) to access various parts of a potentially larger hardware
|
|
* frame buffer.
|
|
*
|
|
* Three different banking schemes are supported:
|
|
*
|
|
* Single banking is indicated when pBankA and pBankB are equal and all
|
|
* three miBankProcPtr's point to the same function. Here, both reads and
|
|
* writes through the aperture access the same hardware location.
|
|
*
|
|
* Shared banking is indicated when pBankA and pBankB are equal but the
|
|
* source and destination functions differ. Here reads through the
|
|
* aperture do not necessarily access the same hardware location as writes.
|
|
*
|
|
* Double banking is indicated when pBankA and pBankB differ. Here two
|
|
* independent apertures are used to provide read/write access to
|
|
* potentially different hardware locations.
|
|
*
|
|
* Any other combination will result in no banking.
|
|
*/
|
|
miBankProcPtr SetSourceBank; /* Set pBankA bank number */
|
|
miBankProcPtr SetDestinationBank; /* Set pBankB bank number */
|
|
miBankProcPtr SetSourceAndDestinationBanks; /* Set both bank numbers */
|
|
|
|
pointer pBankA; /* First aperture location */
|
|
pointer pBankB; /* First or second aperture location */
|
|
|
|
/*
|
|
* BankSize is in units of sizeof(char) and is the size of each bank.
|
|
*/
|
|
unsigned long BankSize;
|
|
|
|
/*
|
|
* nBankDepth is the colour depth associated with the maximum number of a
|
|
* pixel's bits that are simultaneously accessible through the frame buffer
|
|
* aperture.
|
|
*/
|
|
unsigned int nBankDepth;
|
|
} miBankInfoRec, *miBankInfoPtr;
|
|
|
|
Bool
|
|
miInitializeBanking(
|
|
ScreenPtr /*pScreen*/,
|
|
unsigned int /*xsize*/,
|
|
unsigned int /*ysize*/,
|
|
unsigned int /*width*/,
|
|
miBankInfoPtr /*pBankInfo*/
|
|
);
|
|
|
|
Bool
|
|
miModifyBanking(
|
|
ScreenPtr /*pScreen*/,
|
|
miBankInfoPtr /*pBankInfo*/
|
|
);
|
|
|
|
/*
|
|
* This function determines the minimum screen width, given a initial estimate
|
|
* and various screen attributes. DDX needs to determine this width before
|
|
* initializing the screen.
|
|
*/
|
|
int
|
|
miScanLineWidth(
|
|
unsigned int /*xsize*/,
|
|
unsigned int /*ysize*/,
|
|
unsigned int /*width*/,
|
|
unsigned long /*BankSize*/,
|
|
PixmapFormatRec * /*pBankFormat*/,
|
|
unsigned int /*nWidthUnit*/
|
|
);
|
|
|
|
#endif /* __MIBANK_H__ */
|