ReactOS 0.4.15-dev-7953-g1f49173
enable.c
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS VGA display driver
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: win32ss/drivers/displays/vga/main/enable.c
5 * PURPOSE:
6 * PROGRAMMERS:
7 */
8
9#include <vgaddi.h>
10
12
13static DRVFN FuncList[] =
14{
15 /* Required Display driver fuctions */
30
31#if 0
32 /* Optional Display driver functions */
33 {INDEX_, },
34 {INDEX_DescribePixelFormat, (PFN) VGADDIDescribePixelFormat},
35 {INDEX_DrvDitherColor, (PFN) VGADDIDitherColor},
36 {INDEX_DrvFillPath, (PFN) VGADDIFillPath},
37 {INDEX_DrvGetTrueTypeFile, (PFN) VGADDIGetTrueTypeFile},
38 {INDEX_DrvLoadFontFile, (PFN) VGADDILoadFontFile},
39 {INDEX_DrvQueryFont, (PFN) VGADDIQueryFont},
40 {INDEX_DrvQueryFontCaps, (PFN) VGADDIQueryFontCaps},
41 {INDEX_DrvQueryFontData, (PFN) VGADDIQueryFontData},
42 {INDEX_DrvQueryFontFile, (PFN) VGADDIQueryFontFile},
43 {INDEX_DrvQueryFontTree, (PFN) VGADDIQueryFontTree},
44 {INDEX_DrvQueryTrueTypeOutline, (PFN) VGADDIQueryTrueTypeOutline},
45 {INDEX_DrvQueryTrueTypeTable, (PFN) VGADDIQueryTrueTypeTable},
46 {INDEX_DrvRealizeBrush, (PFN) VGADDIRealizeBrush},
47 {INDEX_DrvResetPDEV, (PFN) VGADDIResetPDEV},
48 {INDEX_DrvSetPalette, (PFN) VGADDISetPalette},
49 {INDEX_DrvSetPixelFormat, (PFN) VGADDISetPixelFormat},
50 {INDEX_DrvStretchBlt, (PFN) VGADDIStretchBlt},
51 {INDEX_DrvStrokePath, (PFN) VGADDIStrokePath},
52 {INDEX_DrvSwapBuffers, (PFN) VGADDISwapBuffers},
53 {INDEX_DrvTextOut, (PFN) VGADDITextOut},
54 {INDEX_DrvUnloadFontFile, (PFN) VGADDIUnloadFontFile},
55#endif
56};
57
58static GDIINFO gaulCap = {
59 GDI_DRIVER_VERSION, // ulVersion
60 DT_RASDISPLAY, // ulTechnology
61 0, // ulHorzSize
62 0, // ulVertSize
63 0, // ulHorzRes (filled in at initialization)
64 0, // ulVertRes (filled in at initialization)
65 4, // cBitsPixel
66 1, // cPlanes
67 16, // ulNumColors
68 0, // flRaster (DDI reserved field)
69
70 96, // ulLogPixelsX (must be set to 96 according to MSDN)
71 96, // ulLogPixelsY (must be set to 96 according to MSDN)
72
73 TC_RA_ABLE | TC_SCROLLBLT, // flTextCaps
74
75 6, // ulDACRed
76 6, // ulDACGreen
77 6, // ulDACBlue
78
79 0x0024, // ulAspectX (one-to-one aspect ratio)
80 0x0024, // ulAspectY
81 0x0033, // ulAspectXY
82
83 1, // xStyleStep
84 1, // yStyleSte;
85 3, // denStyleStep
86
87 { 0, 0 }, // ptlPhysOffset
88 { 0, 0 }, // szlPhysSize
89
90 0, // ulNumPalReg (win3.1 16 color drivers say 0 too)
91
92// These fields are for halftone initialization.
93
94 { // ciDevice, ColorInfo
95 { 6700, 3300, 0 }, // Red
96 { 2100, 7100, 0 }, // Green
97 { 1400, 800, 0 }, // Blue
98 { 1750, 3950, 0 }, // Cyan
99 { 4050, 2050, 0 }, // Magenta
100 { 4400, 5200, 0 }, // Yellow
101 { 3127, 3290, 0 }, // AlignmentWhite
102 20000, // RedGamma
103 20000, // GreenGamma
104 20000, // BlueGamma
105 0, 0, 0, 0, 0, 0
106 },
107
108 0, // ulDevicePelsDPI
109 PRIMARY_ORDER_CBA, // ulPrimaryOrder
110 HT_PATSIZE_4x4_M, // ulHTPatternSize
111 HT_FORMAT_4BPP_IRGB, // ulHTOutputFormat
112 HT_FLAG_ADDITIVE_PRIMS, // flHTFlags
113
114 0, // ulVRefresh
115 8, // ulBltAlignment
116 0, // ulPanningHorzRes
117 0, // ulPanningVertRes
118
119 0, // xPanningAlignment
120 0, // yPanningAlignment
121 0, // cxHTPat
122 0, // cyHTPat
123 NULL, // pHTPatA
124 NULL, // pHTPatB
125 NULL, // pHTPatC
126 0, // flShadeBlend
127 0, // ulPhysicalPixelCharacteristics
128 0 // ulPhysicalPixelGamma
129};
130
131// Palette for VGA
132
133typedef struct _VGALOGPALETTE
134{
139
141{
142
143 0x400, // driver version
144 16, // num entries
145 {
146 { 0x00, 0x00, 0x00, 0x00 }, // 0
147 { 0x80, 0x00, 0x00, 0x00 }, // 1
148 { 0x00, 0x80, 0x00, 0x00 }, // 2
149 { 0x80, 0x80, 0x00, 0x00 }, // 3
150 { 0x00, 0x00, 0x80, 0x00 }, // 4
151 { 0x80, 0x00, 0x80, 0x00 }, // 5
152 { 0x00, 0x80, 0x80, 0x00 }, // 6
153 { 0x80, 0x80, 0x80, 0x00 }, // 7
154 { 0xc0, 0xc0, 0xc0, 0x00 }, // 8
155 { 0xff, 0x00, 0x00, 0x00 }, // 9
156 { 0x00, 0xff, 0x00, 0x00 }, // 10
157 { 0xff, 0xff, 0x00, 0x00 }, // 11
158 { 0x00, 0x00, 0xff, 0x00 }, // 12
159 { 0xff, 0x00, 0xff, 0x00 }, // 13
160 { 0x00, 0xff, 0xff, 0x00 }, // 14
161 { 0xff, 0xff, 0xff, 0x00 } // 15
162 }
163};
164
165// Devinfo structure passed back to the engine in DrvEnablePDEV
166
167#define SYSTM_LOGFONT {16,7,0,0,700,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,VARIABLE_PITCH | FF_DONTCARE, L"System"}
168#define HELVE_LOGFONT {12,9,0,0,400,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_STROKE_PRECIS,PROOF_QUALITY,VARIABLE_PITCH | FF_DONTCARE, L"MS Sans Serif"}
169#define COURI_LOGFONT {12,9,0,0,400,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_STROKE_PRECIS,PROOF_QUALITY,FIXED_PITCH | FF_DONTCARE, L"Courier"}
170
172{
175 ), // Graphics capabilities
176
177 SYSTM_LOGFONT, // Default font description
178 HELVE_LOGFONT, // ANSI variable font description
179 COURI_LOGFONT, // ANSI fixed font description
180 0, // Count of device fonts
181 BMF_4BPP, // preferred DIB format
182 8, // Width of color dither
183 8, // Height of color dither
184 NULL, // Default palette to use for this device
185 0 // flGraphicsCaps2
186};
187
190 IN ULONG SizeOfDED,
191 OUT PDRVENABLEDATA DriveEnableData)
192{
193 DPRINT("DrvEnableDriver called...\n");
194
195 vgaPreCalc();
196
198
199 DriveEnableData->pdrvfn = FuncList;
200 DriveEnableData->c = sizeof(FuncList) / sizeof(DRVFN);
201 DriveEnableData->iDriverVersion = DDI_DRIVER_VERSION_NT4;
202
203 return TRUE;
204}
205
206// DrvDisableDriver
207// DESCRIPTION:
208// This function is called by the KMGDI at exit. It should cleanup.
209// ARGUMENTS:
210// NONE
211// RETURNS:
212// NONE
213
216{
217 return;
218}
219
220// ----------------------------------------------- Driver Implementation
221
222
223// DrvEnablePDEV
224// DESCRIPTION:
225// This function is called after DrvEnableDriver to get information
226// about the mode that is to be used. This function just returns
227// information, and should not yet initialize the mode.
228// ARGUMENTS:
229// IN DEVMODEW * DM Describes the mode requested
230// IN LPWSTR LogAddress
231// IN ULONG PatternCount number of patterns expected
232// OUT HSURF * SurfPatterns array to contain pattern handles
233// IN ULONG GDIInfoSize the size of the GDIInfo object passed in
234// OUT ULONG * GDIInfo GDI Info object
235// IN ULONG DevInfoSize the size of the DevInfo object passed in
236// OUT ULONG * DevInfo Device Info object
237// IN LPWSTR DevDataFile ignore
238// IN LPWSTR DeviceName Device name
239// IN HANDLE Driver handle to KM driver
240// RETURNS:
241// DHPDEV a handle to a DPev object
242
245 IN LPWSTR LogAddress,
246 IN ULONG PatternCount,
247 OUT HSURF *SurfPatterns,
248 IN ULONG GDIInfoSize,
249 OUT ULONG *GDIInfo,
250 IN ULONG DevInfoSize,
251 OUT DEVINFO *DevInfo,
252 IN HDEV Dev,
255{
256 PPDEV PDev;
257
258 PDev = EngAllocMem(FL_ZERO_MEMORY, sizeof(PDEV), ALLOC_TAG);
259 if (PDev == NULL)
260 {
261 DPRINT1("EngAllocMem failed for PDEV\n");
262 return NULL;
263 }
264 PDev->KMDriver = Driver;
265 DPRINT( "PDev: %x, Driver: %x\n", PDev, PDev->KMDriver );
266
269 if (sizeof(GDIINFO) < GDIInfoSize)
270 GDIInfoSize = sizeof(GDIINFO);
271 memcpy(GDIInfo, &gaulCap, GDIInfoSize);
272 DM->dmBitsPerPel = gaulCap.cBitsPixel * gaulCap.cPlanes;
273 DM->dmPelsWidth = gaulCap.ulHorzRes;
274 DM->dmPelsHeight = gaulCap.ulVertRes;
275
277 if (sizeof(DEVINFO) < DevInfoSize)
278 DevInfoSize = sizeof(DEVINFO);
279 memcpy(DevInfo, &devinfoVGA, DevInfoSize);
280
281 return (DHPDEV) PDev;
282}
283
284// DrvCompletePDEV
285// DESCRIPTION
286// Called after initialization of PDEV is complete. Supplies
287// a reference to the GDI handle for the PDEV.
288
291 IN HDEV Dev)
292{
293 ((PPDEV) PDev)->GDIDevHandle = Dev; // Handle to the DC
294}
295
298 IN BOOL Enable)
299{
300 PPDEV ppdev = (PPDEV)DPev;
301 ULONG returnedDataLength;
302
303 if (Enable)
304 {
305 /* Reenable our graphics mode */
306 if (!InitPointer(ppdev))
307 {
308 /* Failed to set pointer */
309 return FALSE;
310 }
311
312 if (!VGAInitialized)
313 {
314 if (!InitVGA(ppdev, FALSE))
315 {
316 /* Failed to initialize the VGA */
317 return FALSE;
318 }
320 }
321 }
322 else
323 {
324 /* Go back to last known mode */
325 DPRINT("ppdev: %p, KMDriver: %p\n", ppdev, ppdev->KMDriver);
326 if (EngDeviceIoControl(ppdev->KMDriver, IOCTL_VIDEO_RESET_DEVICE, NULL, 0, NULL, 0, &returnedDataLength))
327 {
328 /* Failed to go back to mode */
329 return FALSE;
330 }
332 }
333 return TRUE;
334}
335
338{
339 PPDEV ppdev = (PPDEV)PDev;
340
341 /* EngDeletePalette(devinfoVGA.hpalDefault); */
342 if (ppdev->pjPreallocSSBBuffer)
344
345 if (ppdev->pucDIB4ToVGAConvBuffer)
347
348 DPRINT("Freeing PDEV\n");
349 EngFreeMem(PDev);
350}
351
354{
355 PPDEV ppdev = (PPDEV)PDev;
356 PDEVSURF pdsurf = ppdev->AssociatedSurf;
357
358 DPRINT("KMDriver: %x\n", ppdev->KMDriver);
359 DeinitVGA(ppdev);
360 /* EngFreeMem(pdsurf->BankSelectInfo); */
361
362 if (pdsurf->BankInfo != NULL)
363 EngFreeMem(pdsurf->BankInfo);
364 if (pdsurf->BankInfo2RW != NULL)
365 EngFreeMem(pdsurf->BankInfo2RW);
366 if (pdsurf->BankBufferPlane0 != NULL)
368 if (ppdev->pPointerAttributes != NULL)
370
371 /* free any pending saved screen bit blocks */
372#if 0
373 pSSB = pdsurf->ssbList;
374 while (pSSB != NULL)
375 {
376 /* Point to the next saved screen bits block */
377 pSSBNext = (PSAVED_SCREEN_BITS) pSSB->pvNextSSB;
378
379 /* Free the current block */
380 EngFreeMem(pSSB);
381 pSSB = pSSBNext;
382 }
383#endif
385 /* EngFreeMem(pdsurf); */ /* free the surface */
386}
387
388static VOID
390{
391 if (!(ppdev->fl & DRIVER_OFFSCREEN_REFRESHED))
392 return;
393
394 /* set up rect to right of visible screen */
395 ppdev->SavedBitsRight.left = ppdev->sizeSurf.cx;
396 ppdev->SavedBitsRight.top = 0;
397 ppdev->SavedBitsRight.right = ppdev->sizeMem.cx - PLANAR_PELS_PER_CPU_ADDRESS;
398 ppdev->SavedBitsRight.bottom = ppdev->sizeSurf.cy;
399
400 if ((ppdev->SavedBitsRight.right <= ppdev->SavedBitsRight.left) ||
401 (ppdev->SavedBitsRight.bottom <= ppdev->SavedBitsRight.top))
402 {
403 ppdev->SavedBitsRight.left = 0;
404 ppdev->SavedBitsRight.top = 0;
405 ppdev->SavedBitsRight.right = 0;
406 ppdev->SavedBitsRight.bottom = 0;
407 }
408
409 /* set up rect below visible screen */
410 ppdev->SavedBitsBottom.left = 0;
411 ppdev->SavedBitsBottom.top = ppdev->sizeSurf.cy;
412 ppdev->SavedBitsBottom.right = ppdev->sizeMem.cx - PLANAR_PELS_PER_CPU_ADDRESS;
413 ppdev->SavedBitsBottom.bottom = ppdev->sizeMem.cy - ppdev->NumScansUsedByPointer;
414
415 if ((ppdev->SavedBitsBottom.right <= ppdev->SavedBitsBottom.left) ||
416 (ppdev->SavedBitsBottom.bottom <= ppdev->SavedBitsBottom.top))
417 {
418 ppdev->SavedBitsBottom.left = 0;
419 ppdev->SavedBitsBottom.top = 0;
420 ppdev->SavedBitsBottom.right = 0;
421 ppdev->SavedBitsBottom.bottom = 0;
422 }
423
424 ppdev->BitsSaved = FALSE;
425}
426
429{
430 PPDEV ppdev = (PPDEV)PDev;
431 PDEVSURF pdsurf;
432 DHSURF dhsurf;
433 HSURF hsurf;
434
435 DPRINT("DrvEnableSurface() called\n");
436
437 /* Initialize the VGA */
438 if (!VGAInitialized)
439 {
440 if (!InitVGA(ppdev, TRUE))
441 goto error_done;
443 }
444
445 /* dhsurf is of type DEVSURF, which is the drivers specialized surface type */
446 dhsurf = (DHSURF)EngAllocMem(0, sizeof(DEVSURF), ALLOC_TAG);
447 if (dhsurf == NULL)
448 goto error_done;
449
450 pdsurf = (PDEVSURF) dhsurf;
451 pdsurf->ident = DEVSURF_IDENT;
452 pdsurf->flSurf = 0;
453 pdsurf->Format = BMF_PHYSDEVICE;
454 pdsurf->jReserved1 = 0;
455 pdsurf->jReserved2 = 0;
456 pdsurf->ppdev = ppdev;
457 pdsurf->sizeSurf.cx = ppdev->sizeSurf.cx;
458 pdsurf->sizeSurf.cy = ppdev->sizeSurf.cy;
459 pdsurf->NextPlane = 0;
460 pdsurf->Scan0 = ppdev->fbScreen;
461 pdsurf->BitmapStart = ppdev->fbScreen;
462 pdsurf->StartBmp = ppdev->fbScreen;
463 pdsurf->BankInfo = NULL;
464 pdsurf->BankInfo2RW = NULL;
465 pdsurf->BankBufferPlane0 = NULL;
466
467/* pdsurf->Conv = &ConvertBuffer[0]; */
468
469 if (!InitPointer(ppdev))
470 {
471 DPRINT1("DrvEnablePDEV failed bInitPointer\n");
472 goto error_clean;
473 }
474
475/* if (!SetUpBanking(pdsurf, ppdev))
476 {
477 DPRINT1("DrvEnablePDEV failed SetUpBanking\n");
478 goto error_clean;
479 } BANKING CODE UNIMPLEMENTED */
480
481 if ((hsurf = EngCreateDeviceSurface(dhsurf, ppdev->sizeSurf, BMF_4BPP)) ==
482 NULL)
483 {
484 /* Call to EngCreateDeviceSurface failed */
485 DPRINT("EngCreateDeviceSurface call failed\n");
486 goto error_clean;
487 }
488
489 InitSavedBits(ppdev);
490
493 {
494 DPRINT("Successfully associated surface\n");
495 ppdev->SurfHandle = hsurf;
496 ppdev->AssociatedSurf = pdsurf;
497
498 /* Set up an empty saved screen block list */
499 pdsurf->ssbList = NULL;
500
501 return hsurf;
502 }
503 DPRINT("EngAssociateSurface() failed\n");
504 EngDeleteSurface(hsurf);
505
506error_clean:
507 EngFreeMem(dhsurf);
508
509error_done:
510 return NULL;
511}
512
517{
518 DWORD NumModes;
519 DWORD ModeSize;
520 DWORD OutputSize;
521 DWORD OutputModes = DataSize / (sizeof(DEVMODEW) + DRIVER_EXTRA_SIZE);
522 PVIDEO_MODE_INFORMATION VideoModeInformation, VideoTemp;
523
524 NumModes = getAvailableModes(Driver,
525 (PVIDEO_MODE_INFORMATION *) &VideoModeInformation,
526 &ModeSize);
527
528 if (NumModes == 0)
529 return 0;
530
531 if (DM == NULL)
532 {
533 OutputSize = NumModes * (sizeof(DEVMODEW) + DRIVER_EXTRA_SIZE);
534 }
535 else
536 {
537 OutputSize=0;
538 VideoTemp = VideoModeInformation;
539
540 do
541 {
542 if (VideoTemp->Length != 0)
543 {
544 if (OutputModes == 0)
545 break;
546
547 memset(DM, 0, sizeof(DEVMODEW));
548 memcpy(DM->dmDeviceName, DLL_NAME, sizeof(DLL_NAME));
549
550 DM->dmSpecVersion = DM_SPECVERSION;
551 DM->dmDriverVersion = DM_SPECVERSION;
552 DM->dmSize = sizeof(DEVMODEW);
553 DM->dmDriverExtra = DRIVER_EXTRA_SIZE;
554 DM->dmBitsPerPel = VideoTemp->NumberOfPlanes *
555 VideoTemp->BitsPerPlane;
556 DM->dmPelsWidth = VideoTemp->VisScreenWidth;
557 DM->dmPelsHeight = VideoTemp->VisScreenHeight;
558 DM->dmDisplayFrequency = VideoTemp->Frequency;
559 DM->dmDisplayFlags = 0;
560
561 DM->dmFields = DM_BITSPERPEL |
566
567 /* next DEVMODE entry */
568 OutputModes--;
569
570 DM = (PDEVMODEW) ( ((ULONG_PTR)DM) + sizeof(DEVMODEW) + DRIVER_EXTRA_SIZE);
571
572 OutputSize += (sizeof(DEVMODEW) + DRIVER_EXTRA_SIZE);
573 }
574
575 VideoTemp = (PVIDEO_MODE_INFORMATION)(((PUCHAR)VideoTemp) + ModeSize);
576
577 } while (--NumModes);
578 }
579 return OutputSize;
580}
581
583{
584 va_list ap;
586 EngDebugPrint("VGADDI", (PCHAR)Format, ap);
587 va_end(ap);
588 return 0;
589}
590
591/* EOF */
char * va_list
Definition: acmsvcex.h:78
#define va_end(ap)
Definition: acmsvcex.h:90
#define va_start(ap, A)
Definition: acmsvcex.h:91
#define DPRINT1
Definition: precomp.h:8
#define ALLOC_TAG
Definition: btrfs_drv.h:87
#define SCREEN_X
Definition: vgavideo.h:2
#define SCREEN_Y
Definition: vgavideo.h:3
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define APIENTRY
Definition: api.h:79
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
struct _PDEV * PPDEV
#define DM
Definition: ftp_var.h:26
#define DbgPrint
Definition: hal.h:12
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
Definition: ndis.h:4755
CONST CHAR * PCCH
Definition: ntbasedef.h:392
_In_ ULONGLONG _In_ ULONGLONG _In_ BOOLEAN Enable
Definition: ntddpcm.h:142
struct _VIDEO_MODE_INFORMATION * PVIDEO_MODE_INFORMATION
#define IOCTL_VIDEO_RESET_DEVICE
Definition: ntddvdeo.h:206
VOID VGADDI_InitializeOffScreenMem(IN ULONG Start, IN ULONG Length)
Definition: offscreen.c:164
unsigned short USHORT
Definition: pedump.c:61
#define EngFreeMem
Definition: polytest.cpp:56
#define FL_ZERO_MEMORY
Definition: polytest.cpp:58
void * EngAllocMem(int zero, unsigned long size, int tag=0)
Definition: polytest.cpp:70
#define memset(x, y, z)
Definition: compat.h:39
#define DPRINT
Definition: sndvol32.h:71
HPALETTE hpalDefault
Definition: winddi.h:398
BYTE jReserved2
Definition: vgaddi.h:174
PBANK_INFO BankInfo
Definition: vgaddi.h:198
PBANK_INFO BankInfo2RW
Definition: vgaddi.h:200
PPDEV ppdev
Definition: vgaddi.h:175
PVOID BankBufferPlane0
Definition: vgaddi.h:208
PVOID StartBmp
Definition: vgaddi.h:181
PSAVED_SCREEN_BITS ssbList
Definition: vgaddi.h:226
PVOID BitmapStart
Definition: vgaddi.h:205
PVOID Scan0
Definition: vgaddi.h:179
ULONG NextPlane
Definition: vgaddi.h:178
BYTE Format
Definition: vgaddi.h:172
SIZEL sizeSurf
Definition: vgaddi.h:176
BYTE jReserved1
Definition: vgaddi.h:173
ULONG flSurf
Definition: vgaddi.h:166
IDENT ident
Definition: vgaddi.h:165
Definition: winddi.h:529
ULONG cBitsPixel
Definition: winddi.h:884
ULONG ulVertRes
Definition: winddi.h:883
ULONG ulHorzRes
Definition: winddi.h:882
ULONG cPlanes
Definition: winddi.h:885
Definition: framebuf.h:34
SIZEL sizeSurf
Definition: vgaddi.h:136
HDEV GDIDevHandle
Definition: vgaddi.h:109
PBYTE fbScreen
Definition: vgaddi.h:137
PVIDEO_POINTER_ATTRIBUTES pPointerAttributes
Definition: vgaddi.h:117
PUCHAR pucDIB4ToVGAConvBuffer
Definition: vgaddi.h:130
PUCHAR pjPreallocSSBBuffer
Definition: vgaddi.h:125
PVOID AssociatedSurf
Definition: vgaddi.h:111
HSURF SurfHandle
Definition: vgaddi.h:110
HANDLE KMDriver
Definition: vgaddi.h:108
LONG cx
Definition: kdterminal.h:27
LONG cy
Definition: kdterminal.h:28
PALETTEENTRY PaletteEntry[16]
Definition: enable.c:137
USHORT NumEntries
Definition: enable.c:136
USHORT ident
Definition: enable.c:135
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define IN
Definition: typedefs.h:39
unsigned char * PUCHAR
Definition: typedefs.h:53
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
char * PCHAR
Definition: typedefs.h:51
BOOL InitPointer(PPDEV ppdev)
Definition: pointer.c:143
#define BMF_PHYSDEVICE
Definition: vgaddi.h:234
#define DLL_NAME
Definition: vgaddi.h:247
struct _SAVED_SCREEN_BITS * PSAVED_SCREEN_BITS
#define PLANAR_PELS_PER_CPU_ADDRESS
Definition: vgaddi.h:251
#define DRIVER_OFFSCREEN_REFRESHED
Definition: vgaddi.h:250
#define DRIVER_EXTRA_SIZE
Definition: vgaddi.h:245
struct _DEVSURF * PDEVSURF
#define DEVSURF_IDENT
Definition: vgaddi.h:240
VOID vgaPreCalc()
Definition: vgavideo.c:58
_Must_inspect_result_ _In_ WDFDRIVER Driver
Definition: wdfcontrol.h:83
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
Definition: wdfdevice.h:3275
static DRVFN FuncList[]
Definition: enable.c:13
#define COURI_LOGFONT
Definition: enable.c:169
const VGALOGPALETTE VGApalette
Definition: enable.c:140
struct _VGALOGPALETTE VGALOGPALETTE
static BOOL VGAInitialized
Definition: enable.c:11
#define HELVE_LOGFONT
Definition: enable.c:168
#define SYSTM_LOGFONT
Definition: enable.c:167
static VOID InitSavedBits(IN PPDEV ppdev)
Definition: enable.c:389
static GDIINFO gaulCap
Definition: enable.c:58
DEVINFO devinfoVGA
Definition: enable.c:171
DWORD getAvailableModes(IN HANDLE Driver, OUT PVIDEO_MODE_INFORMATION *modeInformation, OUT DWORD *ModeSize)
Definition: screen.c:38
BOOL InitVGA(PPDEV ppdev, BOOL bFirst)
Definition: screen.c:134
BOOL DeinitVGA(PPDEV ppdev)
Definition: screen.c:112
#define INDEX_DrvSetPointerShape
Definition: winddi.h:445
#define INDEX_DrvBitBlt
Definition: winddi.h:434
#define INDEX_DrvLineTo
Definition: winddi.h:447
#define GCAPS_OPAQUERECT
Definition: winddi.h:331
#define DDI_DRIVER_VERSION_NT4
Definition: winddi.h:535
#define INDEX_DrvStretchBlt
Definition: winddi.h:436
#define INDEX_DrvQueryFontData
Definition: winddi.h:444
#define INDEX_DrvStrokePath
Definition: winddi.h:430
LONG_PTR(APIENTRY * PFN)()
Definition: winddi.h:133
typedef DHPDEV(APIENTRY FN_DrvEnablePDEV)(_In_ DEVMODEW *pdm
struct _DEVINFO DEVINFO
#define GCAPS_WINDINGFILL
Definition: winddi.h:326
ENGAPI BOOL APIENTRY EngDeleteSurface(_In_ _Post_ptr_invalid_ HSURF hsurf)
Definition: surface.c:567
#define INDEX_DrvQueryFont
Definition: winddi.h:442
#define INDEX_DrvDisableSurface
Definition: winddi.h:420
#define HOOK_TRANSPARENTBLT
Definition: winddi.h:1434
#define HT_PATSIZE_4x4_M
Definition: winddi.h:792
FN_DrvPaint DrvPaint
#define INDEX_DrvMovePointer
Definition: winddi.h:446
#define INDEX_DrvSwapBuffers
Definition: winddi.h:472
#define GCAPS_MONO_DITHER
Definition: winddi.h:333
struct _GDIINFO GDIINFO
#define INDEX_DrvFillPath
Definition: winddi.h:431
FN_DrvCopyBits DrvCopyBits
#define GCAPS_HORIZSTRIKE
Definition: winddi.h:329
FN_DrvBitBlt DrvBitBlt
#define HOOK_PAINT
Definition: winddi.h:1424
FN_DrvSetPointerShape DrvSetPointerShape
#define HT_FLAG_ADDITIVE_PRIMS
Definition: winddi.h:827
#define INDEX_DrvGetTrueTypeFile
Definition: winddi.h:466
ENGAPI VOID APIENTRY EngDebugPrint(_In_z_ PCHAR StandardPrefix, _In_z_ PCHAR DebugMessage, _In_ va_list ap)
Definition: debug.c:19
#define INDEX_DrvPaint
Definition: winddi.h:433
FN_DrvGetModes DrvGetModes
#define INDEX_DrvLoadFontFile
Definition: winddi.h:461
#define INDEX_DrvCompletePDEV
Definition: winddi.h:417
FN_DrvTransparentBlt DrvTransparentBlt
_Must_inspect_result_ ENGAPI HSURF APIENTRY EngCreateDeviceSurface(_In_ DHSURF dhsurf, _In_ SIZEL sizl, _In_ ULONG iFormatCompat)
Definition: surface.c:391
#define INDEX_DrvSetPalette
Definition: winddi.h:438
#define INDEX_DrvQueryFontTree
Definition: winddi.h:443
FN_DrvEnableSurface DrvEnableSurface
#define INDEX_DrvEnablePDEV
Definition: winddi.h:416
#define GDI_DRIVER_VERSION
Definition: winddi.h:109
#define HOOK_BITBLT
Definition: winddi.h:1420
#define INDEX_DrvSetPixelFormat
Definition: winddi.h:470
FN_DrvMovePointer DrvMovePointer
#define INDEX_DrvQueryFontFile
Definition: winddi.h:467
#define INDEX_DrvCopyBits
Definition: winddi.h:435
ENGAPI BOOL APIENTRY EngAssociateSurface(_In_ HSURF hsurf, _In_ HDEV hdev, _In_ FLONG flHooks)
Definition: surface.c:431
typedef HSURF(APIENTRY FN_DrvEnableSurface)(_In_ DHPDEV dhpdev)
#define INDEX_DrvTransparentBlt
Definition: winddi.h:490
#define INDEX_DrvUnloadFontFile
Definition: winddi.h:462
#define INDEX_DrvRealizeBrush
Definition: winddi.h:428
#define PRIMARY_ORDER_CBA
Definition: winddi.h:785
FN_DrvCompletePDEV DrvCompletePDEV
#define PAL_INDEXED
Definition: winddi.h:1561
#define GCAPS_ALTERNATEFILL
Definition: winddi.h:325
#define INDEX_DrvAssertMode
Definition: winddi.h:421
#define GCAPS_DITHERONREALIZE
Definition: winddi.h:342
#define INDEX_DrvQueryTrueTypeOutline
Definition: winddi.h:465
#define INDEX_DrvResetPDEV
Definition: winddi.h:423
#define HT_FORMAT_4BPP_IRGB
Definition: winddi.h:818
#define INDEX_DrvQueryFontCaps
Definition: winddi.h:460
#define HOOK_COPYBITS
Definition: winddi.h:1429
#define HOOK_LINETO
Definition: winddi.h:1428
FN_DrvLineTo DrvLineTo
FN_DrvEnablePDEV DrvEnablePDEV
#define INDEX_DrvDitherColor
Definition: winddi.h:429
#define GCAPS_COLOR_DITHER
Definition: winddi.h:328
FN_DrvDisableDriver DrvDisableDriver
FN_DrvEnableDriver DrvEnableDriver
FN_DrvAssertMode DrvAssertMode
#define BMF_4BPP
Definition: winddi.h:356
_Must_inspect_result_ ENGAPI HPALETTE APIENTRY EngCreatePalette(_In_ ULONG iMode, _In_ ULONG cColors, _In_ ULONG *pulColors, _In_ FLONG flRed, _In_ FLONG flGreen, _In_ FLONG flBlue)
FN_DrvDisableSurface DrvDisableSurface
#define INDEX_DrvTextOut
Definition: winddi.h:439
FN_DrvDisablePDEV DrvDisablePDEV
#define INDEX_DrvQueryTrueTypeTable
Definition: winddi.h:464
#define INDEX_DrvEnableSurface
Definition: winddi.h:419
#define INDEX_DrvDisablePDEV
Definition: winddi.h:418
#define INDEX_DrvGetModes
Definition: winddi.h:457
void int int ULONGLONG int va_list * ap
Definition: winesup.h:36
#define DM_DISPLAYFREQUENCY
Definition: wingdi.h:1272
#define TC_RA_ABLE
Definition: wingdi.h:820
#define DT_RASDISPLAY
Definition: wingdi.h:708
#define DM_PELSWIDTH
Definition: wingdi.h:1269
struct _devicemodeW * PDEVMODEW
struct _devicemodeW DEVMODEW
#define DM_BITSPERPEL
Definition: wingdi.h:1268
#define TC_SCROLLBLT
Definition: wingdi.h:823
#define DM_SPECVERSION
Definition: wingdi.h:1243
#define DM_PELSHEIGHT
Definition: wingdi.h:1270
#define DM_DISPLAYFLAGS
Definition: wingdi.h:1271
WCHAR * LPWSTR
Definition: xmlstorage.h:184