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

📄 halcaps.c

📁 Lido PXA270平台开发板的最新BSP,包括源代码
💻 C
字号:
/******************************************************************************
<module>
* Name         : halcaps.c
* Title        : DDraw Hal Caps info
* Author(s)    : Imagination Technologies
* Created      : 26 May 2004
*
* Copyright    : 2004 by Imagination Technologies Limited.
*                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  : DDraw Hal Caps info
*
* Platform     : Windows CE
*
 $Log: halcaps.c $
********************************************************************************/

#include "ddraw_headers.h"
#include "overlay.h"

/*****************************************************************************
	Driver Data Structure
*****************************************************************************/
PDXHALDATA gpsDriverData = NULL;

/*****************************************************************************
	Texture/FourCC surface formats
*****************************************************************************/

/*	FourCC's that we support */
DWORD pdwHALFourCCs[] = 
{
	HALFOURCC_UYVY,	
	HALFOURCC_UYNV,
	HALFOURCC_YUY2,
	HALFOURCC_YUNV,
	HALFOURCC_YVYU,	
	HALFOURCC_VYUY,	
	HALFOURCC_IMC2,	
	HALFOURCC_YV12,	
	HALFOURCC_0888,

	/*
		PowerVR proprietry 8x8 pixel-block-based 2bpp compressed format
	*/
	HALFOURCC_PVRTC2,

	/*
		PowerVR proprietry 8x8 pixel-block-based 4bpp compressed format
	*/
	HALFOURCC_PVRTC4,

	/*
		1-bit alpha format	
	*/
	HALFOURCC_A1
};

/* Number of FourCC formats supported */
DWORD dwHALNumFourCCs = sizeof(pdwHALFourCCs) / sizeof(*pdwHALFourCCs);

/*****************************************************************************
	DirectDraw Caps
*****************************************************************************/

/*
	DirectDraw core caps structure.
*/
DDCORECAPS sHALDDCoreCaps =
{
	sizeof(DDCORECAPS),							/* dwSize */

	DDCAPS_GDI |								/* dwCaps */
	DDCAPS_3D |
	DDCAPS_ALPHA |
	DDCAPS_BLT |
	DDCAPS_BLTCOLORFILL |
	DDCAPS_BLTFOURCC |
	DDCAPS_BLTSTRETCH |
	DDCAPS_CANCLIP |
	DDCAPS_CANCLIPSTRETCHED |
	DDCAPS_COLORKEY |
	DDCAPS_COLORKEYHWASSIST |
#ifdef SUPPORT_OVERLAY
	DDCAPS_OVERLAY |
	DDCAPS_OVERLAYFOURCC |
	DDCAPS_OVERLAYSTRETCH |
#endif
	// DDCAPS_PALETTE | /* palette support for more than just the primary surface? */
	DDCAPS_READSCANLINE |
	DDCAPS_VBI |
	0,

	//DDCAPS2_CERTIFIED |						/* dwCaps2 */
	//DDCAPS2_COLORCONTROLPRIMARY |
	DDCAPS2_CANFLIPODDEVEN |
	DDCAPS2_CANBOBHARDWARE |
	DDCAPS2_WIDESURFACES |
	DDCAPS2_CANRENDERWINDOWED |
	DDCAPS2_COPYFOURCC |
	DDCAPS2_FLIPINTERVAL |
	DDCAPS2_FLIPNOVSYNC |
	DDCAPS2_PRIMARYGAMMA |
	0,

	DDCKEYCAPS_DESTBLT |						/* dwCKeyCaps */
	DDCKEYCAPS_SRCBLT |	
#ifdef SUPPORT_OVERLAY
	DDCKEYCAPS_DESTOVERLAY |
	DDCKEYCAPS_DESTOVERLAYONEACTIVE |
	DDCKEYCAPS_NOCOSTOVERLAY|
#endif
	0,

	DDFXCAPS_BLTARITHSTRETCHY |					/* dwFXCaps */
	DDFXCAPS_BLTSHRINKX |
	DDFXCAPS_BLTSHRINKY |
	DDFXCAPS_BLTSTRETCHX |
	DDFXCAPS_BLTSTRETCHY |
    DDFXCAPS_BLTROTATION90 |
#ifdef SUPPORT_OVERLAY
	DDFXCAPS_OVERLAYARITHSTRETCHY |
	DDFXCAPS_OVERLAYSHRINKX |
	DDFXCAPS_OVERLAYSHRINKY |
	DDFXCAPS_OVERLAYSTRETCHX |
	DDFXCAPS_OVERLAYSTRETCHY |
#endif
	0,

	DDFXALPHACAPS_BLTALPHAPIXELS |				/* dwFXAlphaCaps */
	0,

	0,/* may add later! */						/* dwPalCaps */
	0,											/* dwSVCaps */
	DDBD_4 | DDBD_8,							/* dwAlphaBltConstBitDepths */
	DDBD_4 | DDBD_8,							/* dwAlphaBltPixelBitDepths */
	0,											/* dwAlphaBltSurfaceBitDepths */
	0,											/* dwAlphaOverlayConstBitDepths */
	0,											/* dwAlphaOverlayPixelBitDepths */
	0,											/* dwAlphaOverlaySurfaceBitDepths */
	DDBD_16 | DDBD_24,							/* dwZBufferBitDepths */

	0,											/* dwVidMemTotal - set at runtime */
	0,											/* dwVidMemFree  - ditto */

#ifdef SUPPORT_OVERLAY
	1,											/* dwMaxVisibleOverlays */
#else
	0,											/* dwMaxVisibleOverlays */
#endif
	0,											/* dwCurrVisibleOverlays */

	sizeof(pdwHALFourCCs) / 
	sizeof(*pdwHALFourCCs),						/* dwNumFourCCCodes */

	0,											/* dwAlignBoundarySrc */
	0,											/* dwAlignSizeSrc */
	0,											/* dwAlignBoundaryDest */
	0,											/* dwAlignSizeDest */
	0,											/* dwAlignStrideAlign */

	{											/* dwRops */
		0,
		0,
		0,
		0,
		0,
		0,
		1 << ((SRCCOPY >> 16) & 0x1F),
		0
	},

	{											/* ddsCaps */
		DDSCAPS_BACKBUFFER |					/* dwCaps */
		DDSCAPS_COMPLEX |
		DDSCAPS_FLIP |
		DDSCAPS_FRONTBUFFER |
		DDSCAPS_LOCALVIDMEM |
		DDSCAPS_OFFSCREENPLAIN |
		DDSCAPS_PRIMARYSURFACE |
		DDSCAPS_VIDEOMEMORY |

#ifdef SUPPORT_OVERLAY
		DDSCAPS_OVERLAY |
		DDSCAPS_HWCODEC |
#endif
		0
	},

	125,									    /* dwMinOverlayStretch */		
	8000,										/* dwMaxOverlayStretch */
	0,											/* dwMinLiveVideoStretch */
	0,											/* dwMaxLiveVideoStretch */
	125,										/* dwMinHwCodecStretch */
	8000,										/* dwMaxHwCodecStretch */

	0,0,0,										/* dwReserved1/2/3 */
												/* dwSVBCaps */
	0,

	DDCKEYCAPS_SRCBLT,							/* dwSVBCKeyCaps */
	0,											/* dwSVBFXCaps */

	{											/* dwSVBRops */
		0,
		0,
		0,
		0,
		0,
		0,
		1 << ((SRCCOPY >> 16) & 0x1F),
		0
	},

	0,											/* dwVSBCaps */
	0,											/* dwVSBCKeyCaps */
	0,											/* dwVSBFXCaps */

	{											/* dwVSBRops */
		0,
		0,
		0,
		0,
		0,
		0,
		0,
		0
	},

	0,											/* dwSSBCaps */
	0,											/* dwSSBCKeyCaps */
	0,											/* dwSSBFXCaps */

	{											/* dwSSBRops */
		0,
		0,
		0,
		0,
		0,
		0,
		0,
		0
	},

	0,											/* dwMaxVideoPorts */
	0,											/* dwCurrVideoPorts */

	DDCAPS2_WIDESURFACES |						/* dwSVBCaps2 */
	DDCAPS2_COPYFOURCC |
	0
};
/*
	DirectDraw more caps structure.
*/
DDMORECAPS sMoreCaps = 
{
   sizeof(DDMORECAPS),					/* dwSize */

   DDALPHACAPS_BLTALPHAPIXELS	|		/* dwAlphaCaps */
   DDALPHACAPS_BLTNONPREMULT	|
   DDALPHACAPS_BLTARGBSCALE1F	|
   DDALPHACAPS_BLTALPHAFILL		|
   DDALPHACAPS_BLTALPHAANDARGBSCALING ,

   0,									/* dwSVBAlphaCaps */ 
   0,									/* dwVSBAlphaCaps */ 
   0,									/* dwSSBAlphaCaps */  
   0,									/* dwFilterCaps */ 
   0,									/* dwSVBFilterCaps */ 
   0,									/* dwVSBFilterCaps */ 
   0,									/* dwSSBFilterCaps */  
   0,									/* dwTransformCaps */ 
   0,									/* dwSVBTransformCaps */ 
   0,									/* dwVSBTransformCaps */ 
   0,									/* dwSSBTransformCaps */ 
   0,									/* dwBltAffineMinifyLimit */  
   0									/* dwOverlayAffineMinifyLimit */  
};


/*****************************************************************************
	DirectDraw Callbacks
*****************************************************************************/

/* DD basic callbacks */
DDHAL_DDCALLBACKS sHALDDCallbacks =
{
	sizeof(DDHAL_DDCALLBACKS),					/* dwSize */

	DDHAL_CB32_CANCREATESURFACE |				/* dwFlags */
	DDHAL_CB32_CREATESURFACE |
	DDHAL_CB32_DESTROYDRIVER |
	DDHAL_CB32_WAITFORVERTICALBLANK |
	DDHAL_CB32_GETSCANLINE |
	DDHAL_CB32_SETEXCLUSIVEMODE |
	0,

	HALDestroyDriver,							/* DestroyDriver */
	HALCreateSurface,							/* CreateSurface */
	NULL,										/* SetColorKey */
	NULL,										/* SetMode */
	HALWaitForVerticalBlank,					/* WaitForVerticalBlank */
	HALCanCreateSurface,						/* CanCreateSurface */
	NULL,										/* CreatePalette */
	HALGetScanLine,								/* GetScanLine */
	HALSetExclusiveMode,						/* SetExclusiveMode */
	NULL										/* FlipToGDISurface */
};

/* DD Surface callbacks */
DDHAL_DDSURFACECALLBACKS sHALDDSurfaceCallbacks = 
{
	sizeof(DDHAL_DDSURFACECALLBACKS),			/* dwSize */

	DDHAL_SURFCB32_LOCK |						/* dwFlags */
	DDHAL_SURFCB32_UNLOCK |
	DDHAL_SURFCB32_BLT |
	DDHAL_SURFCB32_FLIP |
	DDHAL_SURFCB32_SETCOLORKEY |
	DDHAL_SURFCB32_GETBLTSTATUS |
	DDHAL_SURFCB32_GETFLIPSTATUS |
	DDHAL_SURFCB32_DESTROYSURFACE |
#ifdef SUPPORT_OVERLAY
	DDHAL_SURFCB32_UPDATEOVERLAY |    
	DDHAL_SURFCB32_SETOVERLAYPOSITION |
#endif
	0,

	HALDestroySurface,							/* DestroySurface */
	HALFlip,									/* Flip */

	NULL,										/* SetClipList */

	HALLock,									/* Lock */
	HALUnlock,									/* Unlock */
	HALBlt,										/* Blt */
	HALSetColorKey,								/* SetColorKey */

	NULL,										/* AddAttachedSurface */

	HALGetBltStatus,							/* GetBltStatus */
	HALGetFlipStatus,							/* GetFlipStatus */

#ifdef SUPPORT_OVERLAY
	HALUpdateOverlay,							/* UpdateOverlay */
	HALSetOverlayPosition,						/* SetOverlayPosition */
#else
	NULL,										/* UpdateOverlay */
	NULL,										/* SetOverlayPosition */
#endif
	NULL,										/* reserved4 */
	NULL										/* SetPalette */
};

/* DD palette callback table */
DDHAL_DDPALETTECALLBACKS sHALDDPaletteCallbacks =
{
	sizeof(DDHAL_DDPALETTECALLBACKS),			/* dwSize */

	0,											/* dwFlags */

	NULL,										/* DestroyPalette */
	NULL										/* SetEntries */
};

/*****************************************************************************
<function>
 FUNCTION	: HALGetDriverInfo
    
 PURPOSE	: Query for extra info

 PARAMETERS	: LPDDHAL_GETDRIVERINFODATA data structure
 			  
 RETURNS	: DDHAL return code
<function/>
*****************************************************************************/
DWORD HALGetDriverInfo(LPDDHAL_GETDRIVERINFODATA Param)
{
	DWORD dwSize;
	HAL_DPF((DPF_ENTER(L"HalGetDriverInfo")));

	if(IsEqualIID(&(Param->guidInfo), &GUID_DDMoreCaps))
	{
		dwSize = Param->dwExpectedSize;

		DPFL4("Requesting MORECAPS caps");

		if (sizeof(DDMORECAPS) < dwSize)
		{
			dwSize = sizeof(DDMORECAPS);
		}

		memcpy(Param->lpvData,&sMoreCaps, dwSize);

		Param->dwActualSize = sizeof(DDMORECAPS);

		Param->ddRVal = DD_OK;
	}
	else
	{
		Param->ddRVal = DDERR_CURRENTLYNOTAVAIL;
	}

	HAL_DPF((DPF_EXIT(L"HalGetDriverInfo"));
	return DDHAL_DRIVER_HANDLED; 
}
/*****************************************************************************
  End of file (halcaps.c)
*****************************************************************************/

⌨️ 快捷键说明

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