📄 struct.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 + -