📄 halcaps.cpp
字号:
/*
* $Workfile: halcaps.cpp $
* $Revision: 2 $
* $Date: 4/07/00 9:11a $
* $Modtime: 4/07/00 8:59a $
* $Author: Sarma $
*
* DESCRIPTION:
* Setting of Direct Draw driver Capabilities is done here.
*
* Copyright (c) 1998 National Semiconductor Corporation.
* All Rights Reserved.
*
* This software is the confidential and proprietary information of National
* Semiconductor Corporation. ("Confidential Information").
* You shall not disclose such Confidential Information and shall use it only
* in accordance with the terms of the license agreement you entered into
* with National Semiconductor Corporation.
* This code is supplied as is.
*
*/
/*
*$Log: /CE/Platform/Nsc/Drivers/Video/gxvideo/ddraw/halcaps.cpp $
*
* 2 4/07/00 9:11a Sarma
* Removed Cyrix Corporation from the legal/confidentail information. Also
* added for files not containing this info.
*
*$History: halcaps.cpp $
*
* ***************** Version 2 *****************
* User: Sarma Date: 4/07/00 Time: 9:11a
* Updated in $/CE/Platform/Nsc/Drivers/Video/gxvideo/ddraw
* Removed Cyrix Corporation from the legal/confidentail information. Also
* added for files not containing this info.
*
*/
#include "precomp.h"
#ifdef DD_SUPPORT
/*DWORD fourCC[] = {
FOURCC_YUY2,
FOURCC_YVYU,
FOURCC_UYVY,
FOURCC_EMMA
};
#define MAX_FOURCC sizeof(fourCC)/sizeof(DWORD)
*/
extern DWORD fourCC[4];
DWORD dwConnectionCaps =
// DDVPCONNECT_INVERTPOLARITY |
DDVPCONNECT_DISCARDSVREFDATA |
// DDVPCONNECT_HALFLINE |
DDVPCONNECT_INTERLACED |
// DDVPCONNECT_SHAREEVEN |
// DDVPCONNECT_SHAREODD |
DDVPCONNECT_VACT |
// DDVPCONNECT_DOUBLECLOCK |
0;
// callbacks from the DIRECTDRAW object
DDHAL_DDCALLBACKS cbDDCallbacks =
{
sizeof( DDHAL_DDCALLBACKS ), // dwSize
DDHAL_CB32_DESTROYDRIVER | // dwFlags
DDHAL_CB32_CREATESURFACE |
DDHAL_CB32_SETCOLORKEY |
DDHAL_CB32_SETMODE |
DDHAL_CB32_WAITFORVERTICALBLANK |
DDHAL_CB32_CANCREATESURFACE |
DDHAL_CB32_CREATEPALETTE |
DDHAL_CB32_GETSCANLINE |
DDHAL_CB32_SETEXCLUSIVEMODE |
DDHAL_CB32_FLIPTOGDISURFACE |
0,
HalDestroyDriver, // DestroyDriver
HalCreateSurface, // ullas - DDGPECreateSurface, // CreateSurface
DDGPESetColorKeyDrv, // SetColorKey
DDGPESetMode, // SetMode
HalWaitForVerticalBlank, // WaitForVerticalBlank
HalCanCreateSurface, // CanCreateSurface
DDGPECreatePalette, // CreatePalette
HalGetScanLine, // GetScanLine
HalSetExclusiveMode, // SetExclusiveMode
HalFlipToGDISurface // ullas - DDGPEFlipToGDISurface // FlipToGDISurface
};
// callbacks from the DIRECTDRAWCOLORCONTROL pseudo object
DDHAL_DDCOLORCONTROLCALLBACKS ColorControlCallbacks =
{
sizeof(DDHAL_DDCOLORCONTROLCALLBACKS),
0, // DDHAL_COLOR_COLORCONTROL,
0 // &HalColorControl
};
// callbacks from the DIRECTDRAWEXEBUF psuedo object
DDHAL_DDEXEBUFCALLBACKS cbDDExeBufCallbacks =
{
sizeof( DDHAL_DDEXEBUFCALLBACKS ), // dwSize
DDHAL_EXEBUFCB32_CANCREATEEXEBUF |
DDHAL_EXEBUFCB32_CREATEEXEBUF |
DDHAL_EXEBUFCB32_DESTROYEXEBUF |
DDHAL_EXEBUFCB32_LOCKEXEBUF |
DDHAL_EXEBUFCB32_UNLOCKEXEBUF, // dwFlags
HalCanCreateSurface, // CanCreateExecuteBuffer
DDGPECreateExecuteBuffer, // CreateExecuteBuffer
DDGPEDestroyExecuteBuffer, // DestroyExecuteBuffer
DDGPELock, // Lock
DDGPEUnlock // Unlock
};
// callbacks from the DIRECTDRAWKERNEL psuedo object
DDHAL_DDKERNELCALLBACKS KernelCallbacks =
{
sizeof(DDHAL_DDKERNELCALLBACKS),
// DDHAL_KERNEL_SYNCSURFACEDATA |
// DDHAL_KERNEL_SYNCVIDEOPORTDATA |
0,
// &HalSyncSurfaceData,
// &HalSyncVideoPortData
0
};
// callbacks from the DIRECTDRAWMISCELLANEOUS object
DDHAL_DDMISCELLANEOUSCALLBACKS MiscellaneousCallbacks =
{
sizeof(DDHAL_DDMISCELLANEOUSCALLBACKS),
// DDHAL_MISCCB32_GETAVAILDRIVERMEMORY |
// DDHAL_MISCCB32_UPDATENONLOCALHEAP |
// DDHAL_MISCCB32_GETHEAPALIGNMENT |
// DDHAL_MISCCB32_GETSYSMEMBLTSTATUS |
0,
0, //HalGetAvailDriverMemory,
0, //HalUpdateNonLocalHeap,
0, //HalGetHeapAlignment,
0 //HalGetSysmemBltStatus
};
// callbacks from the DIRECTDRAWPALETTE object
DDHAL_DDPALETTECALLBACKS cbDDPaletteCallbacks =
{
sizeof( DDHAL_DDPALETTECALLBACKS ), // dwSize
DDHAL_PALCB32_DESTROYPALETTE | // dwFlags
DDHAL_PALCB32_SETENTRIES |
0,
DDGPEDestroyPalette, // DestroyPalette
DDGPESetEntries // SetEntries
};
// callbacks from the DIRECTDRAWSURFACE object
DDHAL_DDSURFACECALLBACKS cbDDSurfaceCallbacks =
{
sizeof( DDHAL_DDSURFACECALLBACKS ), // dwSize
DDHAL_SURFCB32_DESTROYSURFACE | // dwFlags
DDHAL_SURFCB32_FLIP |
DDHAL_SURFCB32_SETCLIPLIST |
DDHAL_SURFCB32_LOCK |
DDHAL_SURFCB32_UNLOCK |
DDHAL_SURFCB32_BLT |
DDHAL_SURFCB32_SETCOLORKEY |
// DDHAL_SURFCB32_ADDATTACHEDSURFACE |
DDHAL_SURFCB32_GETBLTSTATUS |
DDHAL_SURFCB32_GETFLIPSTATUS |
DDHAL_SURFCB32_UPDATEOVERLAY |
DDHAL_SURFCB32_SETOVERLAYPOSITION |
//DDHAL_SURFCB32_RESERVED4 |
DDHAL_SURFCB32_SETPALETTE |
0,
// DDGPEDestroySurface, // DestroySurface
HalDestroySurface,
HalFlip, // Flip
HalSetClipList, // SetClipList
// DDGPELock, // Lock
DDGPELock, //HalLock, // Lock
DDGPEUnlock, //HalUnlock, //ullas - DDGPEUnlock, // Unlock
DDGPEBlt, //HalBlt, //ullas - DDGPEBlt, // Blt
HalSetColorKey, //ullas - DDGPESetColorKey, // SetColorKey
HalAddAttachedSurface, // AddAttachedSurface
HalGetBltStatus, // GetBltStatus
// DDGPEGetFlipStatus, // GetFlipStatus
HalGetFlipStatus, // GetFlipStatus
HalUpdateOverlay, // UpdateOverlay
HalSetOverlayPosition, // SetOverlayPosition
NULL, // reserved4
DDGPESetPalette, // SetPalette
};
DDHAL_DDHALMEMORYCALLBACKS HalMemoryCallbacks =
{
sizeof(DDHAL_DDHALMEMORYCALLBACKS),
// DDHAL_KERNEL_HALGETVIDMEM |
//DDHAL_KERNEL_HALSETSURFACEDESC |
0,
// &HalGetVidMem,
// &HalSetSurfaceDesc
};
//#ifdef VIDEOPORT_SUPPORT
// callbacks from the DIRECTDRAWVIDEOPORT pseudo object
DDHAL_DDVIDEOPORTCALLBACKS VideoPortCallbacks =
{
sizeof(DDHAL_DDVIDEOPORTCALLBACKS),
DDHAL_VPORT32_CANCREATEVIDEOPORT |
DDHAL_VPORT32_CREATEVIDEOPORT |
DDHAL_VPORT32_FLIP |
DDHAL_VPORT32_GETBANDWIDTH |
DDHAL_VPORT32_GETINPUTFORMATS |
DDHAL_VPORT32_GETOUTPUTFORMATS |
DDHAL_VPORT32_GETFIELD |
DDHAL_VPORT32_GETLINE |
DDHAL_VPORT32_GETCONNECT |
DDHAL_VPORT32_DESTROY |
DDHAL_VPORT32_GETFLIPSTATUS |
DDHAL_VPORT32_UPDATE |
DDHAL_VPORT32_WAITFORSYNC |
DDHAL_VPORT32_GETSIGNALSTATUS |
//DDHAL_VPORT32_COLORCONTROL |
0,
&HalCanCreateVideoPort,
&HalCreateVideoPort,
&HalFlipVideoPort,
&HalGetVideoPortBandwidth,
&HalGetVideoPortInputFormats,
&HalGetVideoPortOutputFormats,
NULL, //lpReserved1
&HalGetVideoPortField,
&HalGetVideoPortLine,
&HalGetVideoPortConnectInfo,
&HalDestroyVideoPort,
&HalGetVideoPortFlipStatus,
&HalUpdateVideoPort,
&HalWaitForVideoPortSync,
&HalGetVideoSignalStatus,
0, //&HalColorControl,
};
//#endif // VIDEOPORT_SUPPORT
const DDVIDEOPORTCAPS VideoPortCaps =
{
sizeof(DDVIDEOPORTCAPS), // size of the DDVIDEOPORTCAPS structure
DDVPD_WIDTH |
DDVPD_HEIGHT |
DDVPD_ID |
DDVPD_CAPS |
DDVPD_FX |
DDVPD_AUTOFLIP |
DDVPD_ALIGN |
0,
768, // VP max width (limited by FF24)
768, // max VBI data width (limited by FF24)
1024, // VP max height (limited by FF24)
0, // VP ID (0 - (dwMaxVideoPorts-1))
DDVPCAPS_AUTOFLIP | // MPC2 supports 2 autoflip buffers
DDVPCAPS_INTERLACED |
DDVPCAPS_NONINTERLACED |
DDVPCAPS_READBACKFIELD |
DDVPCAPS_READBACKLINE | //
// DDVPCAPS_SHAREABLE | // MPC2 doesn't support this
DDVPCAPS_SKIPEVENFIELDS | // when does FF00_5 start dropping ?BJT
DDVPCAPS_SKIPODDFIELDS | // when does FF00_5 start dropping ?BJT
// DDVPCAPS_SYNCMASTER | // MPC2 doesn't support this
DDVPCAPS_VBISURFACE | // MPC2 places VBI data in same surface
// DDVPCAPS_COLORCONTROL | // MPC2 doesn't support this. SP does.
0,
// DDVPFX_CROPTOPDATA | // We don't know VBI size without being told
DDVPFX_CROPX |
DDVPFX_CROPY |
DDVPFX_INTERLEAVE |
// DDVPFX_MIRRORLEFTRIGHT | // MPC2 doesn't support this
// DDVPFX_MIRRORUPDOWN | // MPC2 doesn't support this
// DDVPFX_PRESHRINKX | // MPC2 can't arbitrarily shrink
// DDVPFX_PRESHRINKY | // MPC2 can't arbitrarily shrink
DDVPFX_PRESHRINKXS | // MPC2 shrinks by byte/pixel dropping
DDVPFX_PRESHRINKYS | // MPC2 shrinks by byte/pixel dropping
DDVPFX_PRESHRINKXB | // down to 1/2, 1/4, 1/8 or 1/16
DDVPFX_PRESHRINKYB | // as above
// DDVPFX_PRESTRETCHX | // MPC2 never stretches
// DDVPFX_PRESTRETCHY | // MPC2 never stretches
// DDVPFX_PRESTRETCHXN | // MPC2 never stretches
// DDVPFX_PRESTRETCHYN | // MPC2 never stretches
// DDVPFX_VBICONVERT | // MPC2 doesn't have special VBI conversion
// DDVPFX_VBINOSCALE | // TBD: MPC2 has some VBI support
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -