www.pudn.com > DualDisplay.rar > dispconfig.h


/****************************************************************************** 
** Copyright (C) 2004. Intel Corporation. All Rights Reserved.  
** 
** The source code contained or described herein and all documents related to the 
** source code ("Material") are owned by Intel Corporation or its suppliers or  
** licensors. Title to the Material remains with Intel Corporation or its suppliers 
** and licensors. The Material contains trade secrets and proprietary and  
** confidential information of Intel or its suppliers and licensors. The Material  
** is protected by worldwide copyright and trade secret laws and treaty provisions. 
** No part of the Material may be used, copied, reproduced, modified, published,  
** uploaded, posted, transmitted, distributed, or disclosed in any way without  
** Intel’s prior express written permission. 
**  
** No license under any patent, copyright, trade secret or other intellectual  
** property right is granted to or conferred upon you by disclosure or delivery  
** of the Materials, either expressly, by implication, inducement, estoppel or  
** otherwise. Any license under such intellectual property rights must be express  
** and approved by Intel in writing. 
******************************************************************************/ 
#if !defined (__DISPCONFIG_H__) 
#define __DISPCONFIG_H__ 
 
// This file defines the escapes and structures of the Marathon Display Configuration 
// Application Programming Interface (API) 
 
// Marathon Display Configuraiton Escapes 
#define DRVESC_DISPLAY_CONFIG_BASE (100000 + 1000) 
 
#define DRVESC_CONFIG_DISPLAYSYSTEM		(DRVESC_DISPLAY_CONFIG_BASE+0) 
/* 
	Escape Usage: 
	    ExtEscape(hdcMarathon,  
				  DRVESC_CONFIG_DISPLAYSYSTEM,  
				  sizeof(DISPCFG_DISPLAY_SYSTEM), 
				  (LPSTR) &sDisplayConfig, // pointer to DISPCFG_DISPLAY_SYSTEM stucture 
				  0, 
				  NULL); 
 
*/ 
#define DRVESC_CREATE_OFFSCREENSURFACE	(DRVESC_DISPLAY_CONFIG_BASE+1) 
/* 
	Escape Usage: 
	    ExtEscape(hdcMarathon,  
				  DRVESC_CREATE_OFFSCREENSURFACE,  
				  sizeof(DISPCFG_CREATE_SURFACE), 
				  (LPSTR) &sCreateSurface, // pointer to DISPCFG_CREATE_SURFACE stucture 
				  0, 
				  NULL); 
 
*/ 
 
#define DRVESC_GET_SURFACEINFO			(DRVESC_DISPLAY_CONFIG_BASE+2) 
/* 
	Escape Usage: 
	    ExtEscape(hdcMarathon,  
				  DRVESC_GET_SURFACEINFO,  
				  sizeof(DISPCFG_GET_SURFACE_INFO), 
				  (LPSTR) &sSurfaceSelect, // pointer to DISPCFG_GET_SURFACE_INFO stucture 
				  sizeof(DISPCFG_GET_SURFACE_INFO), 
				  (LPSTR) &sSurfaceInfo, // pointer to DISPCFG_GET_SURFACE_INFO stucture 
				  ); 
*/ 
 
#define DRVESC_DIRTY					(DRVESC_DISPLAY_CONFIG_BASE+3) 
/* 
	Escape Usage: 
	    ExtEscape(hdcMarathon,  
				  DRVESC_DIRTY, 
				  0, 
				  NULL, 
				  sizeof(BOOL), 
				  (LPSTR) &bIsDirty);	// pointer to BOOL that will indicate if the Marathon 
										// surface has been updated 
*/ 
 
// #define DRVESC_RESREVED				(DRVESC_DISPLAY_CONFIG_BASE+4) 
 
#define DRVESC_ACQUIRE_DUALDISPLAY		(DRVESC_DISPLAY_CONFIG_BASE+5) 
/* 
	Escape Usage: 
	    ExtEscape(hdcMarathon,  
				  DRVESC_ACQUIRE_DUALDISPLAY, 
				  sizeof(DISPCFG_ACQUIRE_LOCK), 
				  (LPSTR) &In,	// DISPCFG_ACQUIRE_LOCK struct 
				  sizeof(DISPCFG_ACQUIRE_LOCK), 
				  (LPSTR) &Out,	// DISPCFG_ACQUIRE_LOCK struct 
				  ); 
*/ 
 
// Marathon Display Configuration defines/enumerations 
 
// typs of surfaces 
typedef enum _DCFG_DISPLAY_SURFACE_ { 
    DCFG_DESKTOP,			// Desktop surface 
    DCFG_SECONDARYSURFACE,	// Seconadary display surface 
} DCFG_DISPLAY_SURFACE; 
 
typedef enum _DCFG_LCD_SOURCE_ { 
    DCFG_SOURCE_MARATHON, 
    DCFG_SOURCE_XSCALE, 
    DCFG_SOURCE_NOT_APPLICABLE, 
} DCFG_LCD_SOURCE; 
 
// Format of pixels feed into Marathon's LCD-IN from XScale LCD Controller 
typedef enum _DCFG_LCD_IN_FORMAT_ { 
    DCFG_LCD_IN_555, 
    DCFG_LCD_IN_556, 
    DCFG_LCD_IN_565, 
    DCFG_LCD_IN_655, 
    DCFG_LCD_IN_665, 
    DCFG_LCD_IN_666, 
    DCFG_FORMAT_NOT_APPLICABLE,		// Format not applicable when Marathon is source 
} DCFG_LCD_IN_FORMAT; 
 
// Marathon Display Configuration Sturctures 
 
// Describes the surface that a display stream is connected to 
typedef struct _DCFG_CONNECT_SURFACE_ { 
    DCFG_DISPLAY_SURFACE     eSurface;	// Surface to connect to 
 
    // Border Color & Refresh Rate fields only valid if surface DCFG_SECONDARYSURFACE 
    ULONG	ulBorderColor;	// Border color if required 
    ULONG	ulRefreshRate;	// Recommendation only 
	ULONG	ulPhysRotation;	// orination of primary Display, in degrees 
} DCFG_CONNECT_SURFACE; 
 
// Controls configuration of a LCD_SWITCH port 
typedef struct _DCFG_SWITCH_LCD_ {    
    BOOL                bValid;			// TRUE - program switch with following params, FALSE - do not         
    BOOL                bActivate;		// Enable/Disable the LCD output   
    DCFG_LCD_SOURCE		eLcdSource;		 
    DCFG_LCD_IN_FORMAT	eXScaleFormat;    // Only valid if eLcdSource == DCFG_SOURCE_XSCALE 
} DCFG_SWITCH_LCD; 
 
 
typedef struct _DISPCFG_DISPLAY_SYSTEM_ 
{ 
    BOOL					bSet;	// Get/Set Parameters in this structure 
    DCFG_SWITCH_LCD			sLcdInternal;	 
    DCFG_SWITCH_LCD			sLcdExternal; 
    DCFG_CONNECT_SURFACE	sConnectSurface;	// Surface to connect to Marathon 
} DISPCFG_DISPLAY_SYSTEM; 
 
// Create/destroy off-screen display surface 
 
typedef struct _DISPCFG_CREATE_SURFACE_ 
{ 
	WORD wWidth; 
	WORD wHeight; 
} DISPCFG_CREATE_SURFACE; 
 
typedef struct _SURFACE_PHYSICAL_VIEW_ 
{ 
    ULONG  ulPhysAddress;	// Physical address 
 
    ULONG  ulWidth;         // Width in pixels 
    ULONG  ulHeight;        // Height in pixels 
    ULONG  ulStride;        // Stride in bytes 
    ULONG  ulBpp;           // Bits Per Pixel 
   
    /* This bool indicates the driver has changed the shape and orientation 
	   of the frame buffer. The driver does this so that the frame buffer is correctly  
	   aligned for displaying to an external display. */ 
 
    BOOL   bDriverRealigned; 
    LONG   lPhysicalRotation;          // Rotation angle of the frame buffer contents. 
 
} SURFACE_PHYSICAL_VIEW; 
 
typedef struct _DISPCFG_GET_SURFACE_INFO_ 
{ 
    DCFG_DISPLAY_SURFACE    eDisplaySurface;		// Surface to return information 
    SURFACE_PHYSICAL_VIEW   sPhysSurfaceInfo;		// Surface information 
 
} DISPCFG_GET_SURFACE_INFO; 
 
// Acquireing this interface is only required for calls to set the state 
typedef struct _DISPCFG_ACQUIRE_LOCK_ 
{ 
	BOOL bAcquire;	// We are trying to acquire the interface 
	BOOL bRelease;	// We are releasing the interface 
	BOOL bSuccess;	// The returned succes or error 
 
} DISPCFG_ACQUIRE_LOCK; 
 
#endif // #if !defined (__DISPCONFIG_H__)