VirtualBox

source: vbox/trunk/src/VBox/Additions/WINNT/Graphics/Display/dd.c@ 3383

Last change on this file since 3383 was 3383, checked in by vboxsync, 18 years ago

typo

File size: 8.7 KB
Line 
1/******************************Module*Header**********************************\
2*
3* **************************
4* * DirectDraw SAMPLE CODE *
5* **************************
6*
7* Module Name: ddenable.c
8*
9* Content:
10*
11* Copyright (c) 1994-1998 3Dlabs Inc. Ltd. All rights reserved.
12* Copyright (c) 1995-1999 Microsoft Corporation. All rights reserved.
13\*****************************************************************************/
14
15#include "driver.h"
16#include "dd.h"
17
18#if 0
19static DWORD APIENTRY DdCreateSurface(PDD_CREATESURFACEDATA lpCreateSurface);
20#endif
21
22/**
23 * DrvGetDirectDrawInfo
24 *
25 * The DrvGetDirectDrawInfo function returns the capabilities of the graphics hardware.
26 *
27 * Parameters:
28 *
29 * dhpdev
30 * Handle to the PDEV returned by the driver’s DrvEnablePDEV routine.
31 * pHalInfo
32 * Points to a DD_HALINFO structure in which the driver should return the hardware capabilities that it supports.
33 * pdwNumHeaps
34 * Points to the location in which the driver should return the number of VIDEOMEMORY structures pointed to by pvmList.
35 * pvmList
36 * Points to an array of VIDEOMEMORY structures in which the driver should return information about each display memory chunk that it controls. The driver should ignore this parameter when it is NULL.
37 * pdwNumFourCCCodes
38 * Points to the location in which the driver should return the number of DWORDs pointed to by pdwFourCC.
39 * pdwFourCC
40 * Points to an array of DWORDs in which the driver should return information about each FOURCC that it supports. The driver should ignore this parameter when it is NULL.
41 *
42 * Return Value:
43 *
44 * DrvGetDirectDrawInfo returns TRUE if it succeeds; otherwise, it returns FALSE.
45 *
46 */
47BOOL APIENTRY DrvGetDirectDrawInfo(
48 DHPDEV dhpdev,
49 DD_HALINFO *pHalInfo,
50 DWORD *pdwNumHeaps,
51 VIDEOMEMORY *pvmList,
52 DWORD *pdwNumFourCCCodes,
53 DWORD *pdwFourCC
54 )
55{
56 PPDEV pDev = (PPDEV)dhpdev;
57
58 DISPDBG((0, "%s: %p, %p, %p, %p, %p. %p\n", __FUNCTION__, dhpdev, pHalInfo, pdwNumHeaps, pvmList, pdwNumFourCCCodes, pdwFourCC));
59
60 *pdwNumFourCCCodes = 0;
61 *pdwNumHeaps = 0;
62
63 /* Setup the HAL driver caps. */
64 pHalInfo->dwSize = sizeof(DD_HALINFO);
65 pHalInfo->dwFlags = 0;
66
67 if (!(pvmList && pdwFourCC))
68 {
69 /* Create primary surface attributes */
70 pHalInfo->vmiData.pvPrimary = pDev->pjScreen;
71 pHalInfo->vmiData.fpPrimary = 0;
72 pHalInfo->vmiData.dwDisplayWidth = pDev->cxScreen;
73 pHalInfo->vmiData.dwDisplayHeight = pDev->cyScreen;
74 pHalInfo->vmiData.lDisplayPitch = pDev->lDeltaScreen;
75 pHalInfo->vmiData.ddpfDisplay.dwSize = sizeof(DDPIXELFORMAT);
76 pHalInfo->vmiData.ddpfDisplay.dwFlags = DDPF_RGB;
77 pHalInfo->vmiData.ddpfDisplay.dwRGBBitCount = pDev->ulBitCount;
78 DISPDBG((0, "pvPrimary %x\n", pHalInfo->vmiData.pvPrimary));
79 DISPDBG((0, "fpPrimary %x\n", pHalInfo->vmiData.fpPrimary));
80 DISPDBG((0, "dwDisplayWidth %x\n", pHalInfo->vmiData.dwDisplayWidth));
81 DISPDBG((0, "dwDisplayHeight %x\n", pHalInfo->vmiData.dwDisplayHeight));
82 DISPDBG((0, "lDisplayPitch %x\n", pHalInfo->vmiData.lDisplayPitch));
83 DISPDBG((0, "dwRGBBitCount %x\n", pHalInfo->vmiData.ddpfDisplay.dwRGBBitCount));
84
85 if (pDev->ulBitmapType == BMF_8BPP)
86 {
87 pHalInfo->vmiData.ddpfDisplay.dwFlags |= DDPF_PALETTEINDEXED8;
88 DISPDBG((0, "DDPF_PALETTEINDEXED8\n"));
89 }
90
91 pHalInfo->vmiData.ddpfDisplay.dwRBitMask = pDev->flRed;
92 pHalInfo->vmiData.ddpfDisplay.dwGBitMask = pDev->flGreen;
93 pHalInfo->vmiData.ddpfDisplay.dwBBitMask = pDev->flBlue;
94
95 pHalInfo->vmiData.dwOffscreenAlign = 4;
96 pHalInfo->vmiData.dwZBufferAlign = 4;
97 pHalInfo->vmiData.dwTextureAlign = 4;
98 }
99 pHalInfo->ddCaps.dwSize = sizeof(DDNTCORECAPS);
100 pHalInfo->ddCaps.dwVidMemTotal = pDev->cScreenSize;
101 pHalInfo->ddCaps.dwVidMemFree = pDev->cScreenSize;
102
103 pHalInfo->ddCaps.dwCaps = DDCAPS_NOHARDWARE; /* ??? */
104 pHalInfo->ddCaps.dwCaps2 = DDCAPS2_CERTIFIED;
105
106 pHalInfo->ddCaps.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_VIDEOMEMORY;
107
108#if 0
109 /* DX5 and up */
110 pHalInfo->GetDriverInfo = DdGetDriverInfo;
111 pHalInfo->dwFlags |= DDHALINFO_GETDRIVERINFOSET;
112#endif
113
114 /* No 3D capabilities */
115#if 0
116 if (pHalInfo->lpD3DGlobalDriverData)
117 {
118 LPD3DHAL_GLOBALDRIVERDATA lpD3DGlobalDriverData = (LPD3DHAL_GLOBALDRIVERDATA)pHalInfo->lpD3DGlobalDriverData;
119 lpD3DGlobalDriverData->dwSize = sizeof(D3DHAL_GLOBALDRIVERDATA);
120 }
121#endif
122
123 return TRUE;
124}
125
126/**
127 * DrvEnableDirectDraw
128 *
129 * The DrvEnableDirectDraw function enables hardware for DirectDraw use.
130 *
131 * Parameters
132 *
133 * dhpdev
134 * Handle to the PDEV returned by the driver’s DrvEnablePDEV routine.
135 * pCallBacks
136 * Points to the DD_CALLBACKS structure to be initialized by the driver.
137 * pSurfaceCallBacks
138 * Points to the DD_SURFACECALLBACKS structure to be initialized by the driver.
139 * pPaletteCallBacks
140 * Points to the DD_PALETTECALLBACKS structure to be initialized by the driver.
141 *
142 * Return Value
143 *
144 * DrvEnableDirectDraw returns TRUE if it succeeds; otherwise, it returns FALSE.
145 *
146 */
147BOOL APIENTRY DrvEnableDirectDraw(
148 DHPDEV dhpdev,
149 DD_CALLBACKS *pCallBacks,
150 DD_SURFACECALLBACKS *pSurfaceCallBacks,
151 DD_PALETTECALLBACKS *pPaletteCallBacks
152 )
153{
154 DISPDBG((0, "%s: %p, %p, %p, %p\n", __FUNCTION__, dhpdev, pCallBacks, pSurfaceCallBacks, pPaletteCallBacks));
155
156 // Fill in the HAL Callback pointers
157 memset(&pCallBacks, 0, sizeof(DD_CALLBACKS));
158 pCallBacks->dwSize = sizeof(DD_CALLBACKS);
159 pCallBacks->dwFlags = 0;
160
161 /*
162 pCallBacks->dwFlags = DDHAL_CB32_CREATESURFACE;
163 pCallBacks->CreateSurface = DdCreateSurface;
164 pCallBacks->CanCreateSurface = DdCanCreateSurface;
165 pCallBacks->WaitForVerticalBlank = DdWaitForVerticalBlank;
166 pCallBacks->GetScanLine = DdGetScanLine;
167 pCallBacks->MapMemory = DdMapMemory;
168 DDHAL_CB32_CANCREATESURFACE | DDHAL_CB32_WAITFORVERTICALBLANK | DDHAL_CB32_MAPMEMORY | DDHAL_CB32_GETSCANLINE
169 */
170 /* Note: pCallBacks->SetMode & pCallBacks->DestroyDriver are unused in Windows 2000 and up */
171
172 // Fill in the Surface Callback pointers
173 memset(&pSurfaceCallBacks, 0, sizeof(DD_SURFACECALLBACKS));
174 pSurfaceCallBacks->dwSize = sizeof(DD_SURFACECALLBACKS);
175 pSurfaceCallBacks->dwFlags = 0;
176
177 /*
178 pSurfaceCallBacks->dwFlags = DDHAL_SURFCB32_DESTROYSURFACE | DDHAL_SURFCB32_LOCK;
179 pSurfaceCallBacks->DestroySurface = DdDestroySurface;
180 pSurfaceCallBacks->Lock = DdLock;
181 pSurfaceCallBacks->Flip = DdFlip;
182 pSurfaceCallBacks->GetBltStatus = DdGetBltStatus;
183 pSurfaceCallBacks->GetFlipStatus = DdGetFlipStatus;
184 pSurfaceCallBacks->Blt = DdBlt;
185 DDHAL_SURFCB32_FLIP | DDHAL_SURFCB32_BLT | DDHAL_SURFCB32_GETBLTSTATUS | DDHAL_SURFCB32_GETFLIPSTATUS;
186 */
187
188// pSurfaceCallBacks.SetColorKey = DdSetColorKey;
189// pSurfaceCallBacks.dwFlags |= DDHAL_SURFCB32_SETCOLORKEY;
190
191 memset(&pPaletteCallBacks, 0, sizeof(DD_PALETTECALLBACKS));
192 pPaletteCallBacks->dwSize = sizeof(DD_PALETTECALLBACKS);
193 pPaletteCallBacks->dwFlags = 0;
194
195 return TRUE;
196}
197
198/**
199 * DrvDisableDirectDraw
200 *
201 * The DrvDisableDirectDraw function disables hardware for DirectDraw use.
202 *
203 * Parameters
204 *
205 * dhpdev
206 * Handle to the PDEV returned by the driver’s DrvEnablePDEV routine.
207 *
208 */
209VOID APIENTRY DrvDisableDirectDraw( DHPDEV dhpdev)
210{
211 DISPDBG((0, "%s: %p\n", __FUNCTION__, dhpdev));
212}
213
214
215#if 0
216/**
217 * DdCreateSurface
218 *
219 * The DdCreateSurface callback function creates a DirectDraw surface.
220 *
221 * lpCreateSurface
222 * Points to a DD_CREATESURFACEDATA structure that contains the information required to create a surface.
223 *
224 * Return Value
225 *
226 * DdCreateSurface returns one of the following callback codes:
227 * DDHAL_DRIVER_HANDLED
228 * DDHAL_DRIVER_NOTHANDLED
229 *
230 */
231static DWORD APIENTRY DdCreateSurface(PDD_CREATESURFACEDATA lpCreateSurface)
232{
233 lpCreateSurface->lpDD->fpVidMem = DDHAL_PLEASEALLOC_USERMEM;
234
235 return DDHAL_DRIVER_NOTHANDLED;
236}
237#endif
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette