⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 struct.h

📁 Lido PXA270平台开发板的最新BSP,包括源代码
💻 H
字号:
/***************************************************************************
 * Name        : struct.h
 * Title       : MBX WinCE driver GPE class
 * Author(s)   : Imagination Technologies
 * Created	   : 6th January 2003
 *
 * Copyright   : 2003 by Imagination Technologies. All rights reserved.
 *             : No part of this software, either material or conceptual 
 *             : may be copied or distributed, transmitted, transcribed,
 *             : stored in a retrieval system or translated into any 
 *             : human or computer language in any form by any means,
 *             : electronic, mechanical, manual or other-wise, or 
 *             : disclosed to third parties without the express written
 *             : permission of Imagination Technologies Limited, Unit 8,
 *             : HomePark Industrial Estate, King's Langley, Hertfordshire,
 *             : WD4 8LZ, U.K.
 *
 * Description : MBX WinCE driver GPE class.
 *
 * Platform    : WinCE
 *
 * Modifications:-
 * $Log: struct.h $
 *
 *  --- Revision Logs Removed --- 
 *
 *  --- Revision Logs Removed --- 
 *
 *  --- Revision Logs Removed --- 
 *
 *  --- Revision Logs Removed --- 
 *
 *  --- Revision Logs Removed --- 
 *
 *  --- Revision Logs Removed --- 
 *
 *  --- Revision Logs Removed --- 
 *
 ****************************************************************************/

#pragma once

#ifdef CACHE_SURFACES

typedef struct t_MBX1_2DSTATE
{
	// This is a record of the state of the 2D blitter HW. We use this
	// information to minimise slaveport writes (unnecessary state changes etc.)

	// DST

	// Destination cannot be cached because SyncWithHost does a fill blt.
	//	PVOID  pvDstLinAddr;

	// SRC
	PVOID  pvSrcLinAddr;
	LONG   lSrcLeftOffset;
	LONG   lSrcTopOffset;

	// PAT
	PVOID  pvPatLinAddr;

	// MASK
	PVOID  pvMaskLinAddr;
  
} MBX1_2DSTATE, *PMBX1_2DSTATE;

#endif // #ifdef CACHE_SURFACES

typedef enum {
	eSrcPalette		=0x00000001L,
	ePatPalette		=0x00000002L
} PALETTE_TYPE;


typedef struct _mbxcbinfo
{
	ULONG	*pulLinAddr;
	ULONG	ulPhysAddr;
} MBXCBINFO;


typedef struct _callbacks
{
	MBXCBINFO	sStripeComplete;
	MBXCBINFO	sBltComplete;
	MBXCBINFO	sGAPIComplete;
} CALLBACKS;


typedef union _pal1space
{
	BYTE	p[MBX2D_PATPAL_BYTEALIGN];
	struct
	{
		RGBQUAD pal[256];
		ULONG ulBltComplete;
		ULONG ulStripeComplete;
		ULONG ulGAPIComplete;
	};
} PAL1SPACE, *PPAL1SPACE;


#define	MAX_PATTERN_BUFFER_SIZE		(16*16*4)


typedef union _pal2space
{
	BYTE	p[MBX2D_PATPAL_BYTEALIGN];
	struct
	{
		RGBQUAD pal[256];
		PBYTE	pbuf[MAX_PATTERN_BUFFER_SIZE];
	};
} PAL2SPACE, *PPAL2SPACE;


typedef struct _smallsurfs
{
//	PAL1SPACE	src;
//	PAL2SPACE	pat;
	RGBQUAD		aSrcPal[256];
	RGBQUAD		aPatPal[256];
	BYTE		byPatBuf[MAX_PATTERN_BUFFER_SIZE];
	ULONG		ulBltComplete;
	ULONG		ulStripeComplete;
	ULONG		ulGAPIComplete;
} SMALLSURFS, * PSMALLSURFS;


#define MBX2D_PALETTE_SIZE		(256 * sizeof (RGBQUAD))

typedef struct _palinfo
{
	ULONG	ulSrcPaletteSize;		/* in bytes */
	RGBQUAD	*prgbqSrcPalette;
	ULONG ulSrcPalettePhys;
	ULONG	ulPatPaletteSize;		/* in bytes */
	RGBQUAD *prgbqPatPalette;
	ULONG ulPatPalettePhys;
} PALINFO, *PPALINFO;


//#define SLAVEPORT_WRITE2DDW(ulData)	PVRSRVWriteSlavePort(m_sDevData.psUserDevInfo->sDeviceSpecific.sMBX.pvSP2DData, ulData);
//#define SLAVEPORT_WRITE2DDW(ulData)	PVRSRVWriteSlavePort(m_sDevData.psUserDevInfo->sDeviceSpecific.sMBX.pvSP2DData, ulData); \
//									PDUMPSP(PDUMPTAGS_SP_MBX_2D, (LONG)m_sDevData.psUserDevInfo->sDeviceSpecific.sMBX.pvSP2DData, ulData);
#if defined (PDUMP) && defined (DEBUG)
#define SLAVEPORT_WRITE2DDW(ulData)	\
{ \
	 IMG_UINT32 uiTmp = ulData; \
	 PVRSRVWriteSlavePort(&m_sDevData.psDevInfoKM->sDevLocation.sDeviceSpecific.sMBX.s2DSlavePort, uiTmp); \
	 PDUMPSPKM(PDUMPTAGS_SP_MBX_2D, uiTmp); \
}
#else
#define SLAVEPORT_WRITE2DDW(ulData)	\
{ \
	 IMG_UINT32 uiTmp = ulData; \
	PVRSRVWriteSlavePort(&m_sDevData.psDevInfoKM->sDevLocation.sDeviceSpecific.sMBX.s2DSlavePort, uiTmp); \
}
#endif

#if defined (PDUMP) && defined(DEBUG)
#define SLAVEPORT_WRITE2DDW_REPEAT(pulAddr, ulCount)	\
{ \
	 ULONG * pulTmpAddr = pulAddr; \
	 ULONG ulTmpCnt = ulCount; \
	 PVRSRVWriteSlavePortBatch(	&m_sDevData.psDevInfoKM->sDevLocation.sDeviceSpecific.sMBX.s2DSlavePort, \
								pulTmpAddr, \
								ulTmpCnt<<2); \
	 PDUMPSPREPEAT( PDUMPTAGS_SP_MBX_2D,	(LONG)m_sDevData.psDevInfoKM->sDevLocation.sDeviceSpecific.sMBX.s2DSlavePort.pvData, \
											pulTmpAddr, \
											ulTmpCnt ); \
}
#else
#define SLAVEPORT_WRITE2DDW_REPEAT(pulAddr, ulCount)	\
PVRSRVWriteSlavePortBatch(	&m_sDevData.psDevInfoKM->sDevLocation.sDeviceSpecific.sMBX.s2DSlavePort, \
							pulAddr, \
							ulCount<<2);
#endif

#ifdef ENABLE_2D_PROFILE
#define profile_fifo_space_start(local_node)	profile_wait_for_fifo_space_start(local_node)
#define profile_fifo_space_end(local_node)		profile_wait_for_fifo_space_end(local_node)
#else//ENABLE_2D_PROFILE
#define profile_fifo_space_start(local_node)
#define profile_fifo_space_end(local_node)
#endif//ENABLE_2D_PROFILE


#define ACQUIRE_2D_FIFOSPACE(ulSpace)	{\
											profile_fifo_space_start(m_sActiveNode);\
											PVRSRVAcquire2DFifoSpaceBlock (m_sDevData.psDevInfoKM,\
													m_sDevData.psDevInfoKM->sDevLocation.pvRegsBaseKM,\
													(ulSpace)<<2);\
											profile_fifo_space_end(m_sActiveNode);\
										}

// Surfaces flags
#define SRC_PRESENT		0x01
#define FILL_PRESENT	0x02
#define PAT_PRESENT		0x04
#define MASK_PRESENT	0x08
#define CLIP_PRESENT	0x10


// enumeration of possible secondary surface states

typedef enum {
	eSurfRequested,
	eSurfAllocated,
	eSurfInUse,
	eSurfFree
} SURFSTATE;

/********************************** end of file ******************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -