ReactOS  0.4.14-dev-115-g4576127
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 
13 static 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 
58 static 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 
133 typedef struct _VGALOGPALETTE
134 {
138 } VGALOGPALETTE;
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 
189 DrvEnableDriver(IN ULONG EngineVersion,
190  IN ULONG SizeOfDED,
191  OUT PDRVENABLEDATA DriveEnableData)
192 {
193  DPRINT("DrvEnableDriver called...\n");
194 
195  vgaPreCalc();
196 
197  VGADDI_InitializeOffScreenMem((SCREEN_X * SCREEN_Y) >> 3, 65536 - ((SCREEN_X * SCREEN_Y) >> 3));
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,
254  IN HANDLE Driver)
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 
285 // DrvCompletePDEV
286 // DESCRIPTION
287 // Called after initialization of PDEV is complete. Supplies
288 // a reference to the GDI handle for the PDEV.
289 
292  IN HDEV Dev)
293 {
294  ((PPDEV) PDev)->GDIDevHandle = Dev; // Handle to the DC
295 }
296 
297 
300  IN BOOL Enable)
301 {
302  PPDEV ppdev = (PPDEV)DPev;
303  ULONG returnedDataLength;
304 
305  if (Enable)
306  {
307  /* Reenable our graphics mode */
308  if (!InitPointer(ppdev))
309  {
310  /* Failed to set pointer */
311  return FALSE;
312  }
313 
314  if (!VGAInitialized)
315  {
316  if (!InitVGA(ppdev, FALSE))
317  {
318  /* Failed to initialize the VGA */
319  return FALSE;
320  }
322  }
323  }
324  else
325  {
326  /* Go back to last known mode */
327  DPRINT( "ppdev: %x, KMDriver: %x", ppdev, ppdev->KMDriver );
328  if (EngDeviceIoControl(ppdev->KMDriver, IOCTL_VIDEO_RESET_DEVICE, NULL, 0, NULL, 0, &returnedDataLength))
329  {
330  /* Failed to go back to mode */
331  return FALSE;
332  }
334  }
335  return TRUE;
336 }
337 
338 
341 {
342  PPDEV ppdev = (PPDEV)PDev;
343 
344  /* EngDeletePalette(devinfoVGA.hpalDefault); */
345  if (ppdev->pjPreallocSSBBuffer)
347 
348  if (ppdev->pucDIB4ToVGAConvBuffer)
350 
351  DPRINT("Freeing PDEV\n");
352  EngFreeMem(PDev);
353 }
354 
355 
358 {
359  PPDEV ppdev = (PPDEV)PDev;
360  PDEVSURF pdsurf = ppdev->AssociatedSurf;
361 
362  DPRINT("KMDriver: %x\n", ppdev->KMDriver);
363  DeinitVGA(ppdev);
364  /* EngFreeMem(pdsurf->BankSelectInfo); */
365 
366  if (pdsurf->BankInfo != NULL)
367  EngFreeMem(pdsurf->BankInfo);
368  if (pdsurf->BankInfo2RW != NULL)
369  EngFreeMem(pdsurf->BankInfo2RW);
370  if (pdsurf->BankBufferPlane0 != NULL)
371  EngFreeMem(pdsurf->BankBufferPlane0);
372  if (ppdev->pPointerAttributes != NULL)
374 
375  /* free any pending saved screen bit blocks */
376 #if 0
377  pSSB = pdsurf->ssbList;
378  while (pSSB != (PSAVED_SCREEN_BITS) NULL)
379  {
380  /* Point to the next saved screen bits block */
381  pSSBNext = (PSAVED_SCREEN_BITS) pSSB->pvNextSSB;
382 
383  /* Free the current block */
384  EngFreeMem(pSSB);
385  pSSB = pSSBNext;
386  }
387 #endif
389  /* EngFreeMem(pdsurf); */ /* free the surface */
390 }
391 
392 
393 static VOID
395 {
396  if (!(ppdev->fl & DRIVER_OFFSCREEN_REFRESHED))
397  return;
398 
399  /* set up rect to right of visible screen */
400  ppdev->SavedBitsRight.left = ppdev->sizeSurf.cx;
401  ppdev->SavedBitsRight.top = 0;
402  ppdev->SavedBitsRight.right = ppdev->sizeMem.cx - PLANAR_PELS_PER_CPU_ADDRESS;
403  ppdev->SavedBitsRight.bottom = ppdev->sizeSurf.cy;
404 
405  if ((ppdev->SavedBitsRight.right <= ppdev->SavedBitsRight.left) ||
406  (ppdev->SavedBitsRight.bottom <= ppdev->SavedBitsRight.top))
407  {
408  ppdev->SavedBitsRight.left = 0;
409  ppdev->SavedBitsRight.top = 0;
410  ppdev->SavedBitsRight.right = 0;
411  ppdev->SavedBitsRight.bottom = 0;
412  }
413 
414  /* set up rect below visible screen */
415  ppdev->SavedBitsBottom.left = 0;
416  ppdev->SavedBitsBottom.top = ppdev->sizeSurf.cy;
417  ppdev->SavedBitsBottom.right = ppdev->sizeMem.cx - PLANAR_PELS_PER_CPU_ADDRESS;
418  ppdev->SavedBitsBottom.bottom = ppdev->sizeMem.cy - ppdev->NumScansUsedByPointer;
419 
420  if ((ppdev->SavedBitsBottom.right <= ppdev->SavedBitsBottom.left) ||
421  (ppdev->SavedBitsBottom.bottom <= ppdev->SavedBitsBottom.top))
422  {
423  ppdev->SavedBitsBottom.left = 0;
424  ppdev->SavedBitsBottom.top = 0;
425  ppdev->SavedBitsBottom.right = 0;
426  ppdev->SavedBitsBottom.bottom = 0;
427  }
428 
429  ppdev->BitsSaved = FALSE;
430 }
431 
432 
435 {
436  PPDEV ppdev = (PPDEV)PDev;
437  PDEVSURF pdsurf;
438  DHSURF dhsurf;
439  HSURF hsurf;
440 
441  DPRINT("DrvEnableSurface() called\n");
442 
443  /* Initialize the VGA */
444  if (!VGAInitialized)
445  {
446  if (!InitVGA(ppdev, TRUE))
447  goto error_done;
449  }
450 
451  /* dhsurf is of type DEVSURF, which is the drivers specialized surface type */
452  dhsurf = (DHSURF)EngAllocMem(0, sizeof(DEVSURF), ALLOC_TAG);
453  if (dhsurf == (DHSURF) 0)
454  goto error_done;
455 
456  pdsurf = (PDEVSURF) dhsurf;
457  pdsurf->ident = DEVSURF_IDENT;
458  pdsurf->flSurf = 0;
459  pdsurf->Format = BMF_PHYSDEVICE;
460  pdsurf->jReserved1 = 0;
461  pdsurf->jReserved2 = 0;
462  pdsurf->ppdev = ppdev;
463  pdsurf->sizeSurf.cx = ppdev->sizeSurf.cx;
464  pdsurf->sizeSurf.cy = ppdev->sizeSurf.cy;
465  pdsurf->NextPlane = 0;
466  pdsurf->Scan0 = ppdev->fbScreen;
467  pdsurf->BitmapStart = ppdev->fbScreen;
468  pdsurf->StartBmp = ppdev->fbScreen;
469  pdsurf->BankInfo = NULL;
470  pdsurf->BankInfo2RW = NULL;
471  pdsurf->BankBufferPlane0 = NULL;
472 
473 /* pdsurf->Conv = &ConvertBuffer[0]; */
474 
475  if (!InitPointer(ppdev))
476  {
477  DPRINT1("DrvEnablePDEV failed bInitPointer\n");
478  goto error_clean;
479  }
480 
481 /* if (!SetUpBanking(pdsurf, ppdev))
482  {
483  DPRINT1("DrvEnablePDEV failed SetUpBanking\n");
484  goto error_clean;
485  } BANKING CODE UNIMPLEMENTED */
486 
487  if ((hsurf = EngCreateDeviceSurface(dhsurf, ppdev->sizeSurf, BMF_4BPP)) ==
488  (HSURF)0)
489  {
490  /* Call to EngCreateDeviceSurface failed */
491  DPRINT("EngCreateDeviceSurface call failed\n");
492  goto error_clean;
493  }
494 
495  InitSavedBits(ppdev);
496 
499  {
500  DPRINT("Successfully associated surface\n");
501  ppdev->SurfHandle = hsurf;
502  ppdev->AssociatedSurf = pdsurf;
503 
504  /* Set up an empty saved screen block list */
505  pdsurf->ssbList = NULL;
506 
507  return hsurf;
508  }
509  DPRINT("EngAssociateSurface() failed\n");
510  EngDeleteSurface(hsurf);
511 
512 error_clean:
513  EngFreeMem(dhsurf);
514 
515 error_done:
516  return (HSURF)0;
517 }
518 
519 
522  IN ULONG DataSize,
523  OUT PDEVMODEW DM)
524 {
525  DWORD NumModes;
526  DWORD ModeSize;
527  DWORD OutputSize;
528  DWORD OutputModes = DataSize / (sizeof(DEVMODEW) + DRIVER_EXTRA_SIZE);
529  PVIDEO_MODE_INFORMATION VideoModeInformation, VideoTemp;
530 
531  NumModes = getAvailableModes(Driver,
532  (PVIDEO_MODE_INFORMATION *) &VideoModeInformation,
533  &ModeSize);
534 
535  if (NumModes == 0)
536  return 0;
537 
538  if (DM == NULL)
539  {
540  OutputSize = NumModes * (sizeof(DEVMODEW) + DRIVER_EXTRA_SIZE);
541  }
542  else
543  {
544  OutputSize=0;
545  VideoTemp = VideoModeInformation;
546 
547  do
548  {
549  if (VideoTemp->Length != 0)
550  {
551  if (OutputModes == 0)
552  break;
553 
554  memset(DM, 0, sizeof(DEVMODEW));
555  memcpy(DM->dmDeviceName, DLL_NAME, sizeof(DLL_NAME));
556 
557  DM->dmSpecVersion = DM_SPECVERSION;
558  DM->dmDriverVersion = DM_SPECVERSION;
559  DM->dmSize = sizeof(DEVMODEW);
560  DM->dmDriverExtra = DRIVER_EXTRA_SIZE;
561  DM->dmBitsPerPel = VideoTemp->NumberOfPlanes *
562  VideoTemp->BitsPerPlane;
563  DM->dmPelsWidth = VideoTemp->VisScreenWidth;
564  DM->dmPelsHeight = VideoTemp->VisScreenHeight;
565  DM->dmDisplayFrequency = VideoTemp->Frequency;
566  DM->dmDisplayFlags = 0;
567 
568  DM->dmFields = DM_BITSPERPEL |
569  DM_PELSWIDTH |
570  DM_PELSHEIGHT |
573 
574  /* next DEVMODE entry */
575  OutputModes--;
576 
577  DM = (PDEVMODEW) ( ((ULONG_PTR)DM) + sizeof(DEVMODEW) + DRIVER_EXTRA_SIZE);
578 
579  OutputSize += (sizeof(DEVMODEW) + DRIVER_EXTRA_SIZE);
580  }
581 
582  VideoTemp = (PVIDEO_MODE_INFORMATION)(((PUCHAR)VideoTemp) + ModeSize);
583 
584  } while (--NumModes);
585  }
586  return OutputSize;
587 }
588 
590 {
591  va_list ap;
592  va_start(ap, Format);
593  EngDebugPrint("VGADDI", (PCHAR)Format, ap);
594  va_end(ap);
595  return 0;
596 }
597 
598 /* EOF */
#define INDEX_DrvStrokePath
Definition: winddi.h:430
signed char * PCHAR
Definition: retypes.h:7
#define GCAPS_ALTERNATEFILL
Definition: winddi.h:325
PVOID StartBmp
Definition: vgaddi.h:181
#define IN
Definition: typedefs.h:38
ENGAPI VOID APIENTRY EngDebugPrint(_In_z_ PCHAR StandardPrefix, _In_z_ PCHAR DebugMessage, _In_ va_list ap)
Definition: debug.c:19
HSURF SurfHandle
Definition: vgaddi.h:110
#define TRUE
Definition: types.h:120
#define INDEX_DrvTransparentBlt
Definition: winddi.h:490
#define INDEX_DrvCompletePDEV
Definition: winddi.h:417
typedef DHPDEV(APIENTRY FN_DrvEnablePDEV)(_In_ DEVMODEW *pdm
VOID APIENTRY DrvDisableDriver(VOID)
Definition: enable.c:215
#define DEVSURF_IDENT
Definition: vgaddi.h:240
struct _devicemodeW * PDEVMODEW
ENGAPI BOOL APIENTRY EngDeleteSurface(_In_ _Post_ptr_invalid_ HSURF hsurf)
Definition: surface.c:564
#define SCREEN_X
Definition: vgavideo.h:2
struct _SAVED_SCREEN_BITS * PSAVED_SCREEN_BITS
#define INDEX_DrvSwapBuffers
Definition: winddi.h:472
ULONG NTAPI DrvGetModes(HANDLE hDriver, ULONG cjSize, DEVMODEW *pdm)
Definition: enable.c:374
struct _VGALOGPALETTE VGALOGPALETTE
#define INDEX_DrvQueryTrueTypeOutline
Definition: winddi.h:465
#define HOOK_TRANSPARENTBLT
Definition: winddi.h:1434
PALETTEENTRY PaletteEntry[16]
Definition: enable.c:137
#define DRIVER_EXTRA_SIZE
Definition: driver.h:71
#define INDEX_DrvGetModes
Definition: winddi.h:457
PVOID Scan0
Definition: vgaddi.h:179
#define EngFreeMem
Definition: polytest.cpp:56
#define GCAPS_MONO_DITHER
Definition: winddi.h:333
#define INDEX_DrvQueryFontCaps
Definition: winddi.h:460
unsigned char * PUCHAR
Definition: retypes.h:3
#define INDEX_DrvSetPixelFormat
Definition: winddi.h:470
HSURF NTAPI DrvEnableSurface(DHPDEV dhpdev)
Definition: enable.c:200
#define INDEX_DrvEnablePDEV
Definition: winddi.h:416
BYTE jReserved2
Definition: vgaddi.h:174
_In_ ULONGLONG _In_ ULONGLONG _In_ BOOLEAN Enable
Definition: ntddpcm.h:140
BOOL NTAPI DrvAssertMode(DHPDEV dhpdev, BOOL bEnable)
Definition: enable.c:302
#define DLL_NAME
Definition: driver.h:73
VOID APIENTRY DrvDisablePDEV(IN DHPDEV dhpdev)
Definition: enable.c:150
PUCHAR pucDIB4ToVGAConvBuffer
Definition: vgaddi.h:130
#define IOCTL_VIDEO_RESET_DEVICE
Definition: ntddvdeo.h:137
FN_DrvLineTo DrvLineTo
_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)
PSAVED_SCREEN_BITS ssbList
Definition: vgaddi.h:226
ULONG cPlanes
Definition: winddi.h:885
WCHAR DeviceName[]
Definition: adapter.cpp:21
PVOID AssociatedSurf
Definition: vgaddi.h:111
#define SCREEN_Y
Definition: vgavideo.h:3
#define DT_RASDISPLAY
Definition: wingdi.h:707
#define INDEX_DrvUnloadFontFile
Definition: winddi.h:462
static DRVFN FuncList[]
Definition: enable.c:13
#define INDEX_DrvFillPath
Definition: winddi.h:431
#define HELVE_LOGFONT
Definition: enable.c:168
#define SYSTM_LOGFONT
Definition: enable.c:167
#define INDEX_DrvLoadFontFile
Definition: winddi.h:461
#define GCAPS_DITHERONREALIZE
Definition: winddi.h:342
FN_DrvTransparentBlt DrvTransparentBlt
#define DM_PELSWIDTH
Definition: wingdi.h:1268
uint32_t ULONG_PTR
Definition: typedefs.h:63
#define INDEX_DrvResetPDEV
Definition: winddi.h:423
#define GCAPS_COLOR_DITHER
Definition: winddi.h:328
#define ALLOC_TAG
Definition: btrfs_drv.h:91
#define INDEX_DrvGetTrueTypeFile
Definition: winddi.h:466
#define INDEX_DrvQueryFontData
Definition: winddi.h:444
FN_DrvPaint DrvPaint
struct _VIDEO_MODE_INFORMATION * PVIDEO_MODE_INFORMATION
#define GDI_DRIVER_VERSION
Definition: winddi.h:109
#define va_end(ap)
Definition: acmsvcex.h:90
PBANK_INFO BankInfo
Definition: vgaddi.h:198
unsigned int BOOL
Definition: ntddk_ex.h:94
#define TC_SCROLLBLT
Definition: wingdi.h:822
#define GCAPS_WINDINGFILL
Definition: winddi.h:326
struct _DEVINFO DEVINFO
HPALETTE hpalDefault
Definition: winddi.h:398
ULONG ulHorzRes
Definition: winddi.h:882
SIZEL sizeSurf
Definition: vgaddi.h:136
smooth NULL
Definition: ftsmooth.c:416
LONG cx
Definition: windef.h:319
char * va_list
Definition: acmsvcex.h:78
void DPRINT(...)
Definition: polytest.cpp:61
#define INDEX_DrvQueryTrueTypeTable
Definition: winddi.h:464
#define INDEX_DrvAssertMode
Definition: winddi.h:421
PBYTE fbScreen
Definition: vgaddi.h:137
#define HOOK_LINETO
Definition: winddi.h:1428
const VGALOGPALETTE VGApalette
Definition: enable.c:140
BOOL InitPointer(PPDEV ppdev)
Definition: pointer.c:143
_In_ PCUNICODE_STRING _In_ PVOID Driver
Definition: cmfuncs.h:32
#define INDEX_DrvQueryFontTree
Definition: winddi.h:443
BOOL APIENTRY DrvEnableDriver(ULONG iEngineVersion, ULONG cj, PDRVENABLEDATA pded)
Definition: enable.c:50
typedef HSURF(APIENTRY FN_DrvEnableSurface)(_In_ DHPDEV dhpdev)
#define DDI_DRIVER_VERSION_NT4
Definition: winddi.h:535
CONST CHAR * PCCH
Definition: ntbasedef.h:399
PUCHAR pjPreallocSSBBuffer
Definition: vgaddi.h:125
HANDLE KMDriver
Definition: vgaddi.h:108
#define HOOK_BITBLT
Definition: winddi.h:1420
#define COURI_LOGFONT
Definition: enable.c:169
#define TC_RA_ABLE
Definition: wingdi.h:819
#define INDEX_DrvLineTo
Definition: winddi.h:447
unsigned long DWORD
Definition: ntddk_ex.h:95
PVOID BitmapStart
Definition: vgaddi.h:205
#define INDEX_DrvQueryFont
Definition: winddi.h:442
USHORT NumEntries
Definition: enable.c:136
FN_DrvCopyBits DrvCopyBits
#define HT_FLAG_ADDITIVE_PRIMS
Definition: winddi.h:827
IDENT ident
Definition: vgaddi.h:165
#define INDEX_DrvPaint
Definition: winddi.h:433
VOID VGADDI_InitializeOffScreenMem(IN ULONG Start, IN ULONG Length)
Definition: offscreen.c:164
void * EngAllocMem(int zero, unsigned long size, int tag=0)
Definition: polytest.cpp:70
struct _PDEV * PPDEV
#define INDEX_DrvRealizeBrush
Definition: winddi.h:428
#define INDEX_DrvSetPointerShape
Definition: winddi.h:445
Definition: framebuf.h:33
struct _DEVSURF * PDEVSURF
ENGAPI BOOL APIENTRY EngAssociateSurface(_In_ HSURF hsurf, _In_ HDEV hdev, _In_ FLONG flHooks)
Definition: surface.c:428
#define PRIMARY_ORDER_CBA
Definition: winddi.h:785
#define DM_SPECVERSION
Definition: wingdi.h:1242
#define INDEX_DrvQueryFontFile
Definition: winddi.h:467
DWORD NTAPI getAvailableModes(HANDLE, PVIDEO_MODE_INFORMATION *, DWORD *)
Definition: screen.c:507
#define FL_ZERO_MEMORY
Definition: polytest.cpp:58
BYTE Format
Definition: vgaddi.h:172
#define GCAPS_OPAQUERECT
Definition: winddi.h:331
#define INDEX_DrvSetPalette
Definition: winddi.h:438
#define DM_DISPLAYFREQUENCY
Definition: wingdi.h:1271
Definition: xlate.c:9
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
PPDEV ppdev
Definition: vgaddi.h:175
ULONG cBitsPixel
Definition: winddi.h:884
#define INDEX_DrvDisableSurface
Definition: winddi.h:420
#define DRIVER_OFFSCREEN_REFRESHED
Definition: vgaddi.h:250
FN_DrvMovePointer DrvMovePointer
ULONG NextPlane
Definition: vgaddi.h:178
#define INDEX_DrvDitherColor
Definition: winddi.h:429
#define HOOK_COPYBITS
Definition: winddi.h:1429
DHPDEV APIENTRY DrvEnablePDEV(IN DEVMODEW *pdm, IN LPWSTR pwszLogAddress, IN ULONG cPat, OUT HSURF *phsurfPatterns, IN ULONG cjCaps, OUT ULONG *pdevcaps, IN ULONG cjDevInfo, OUT DEVINFO *pdi, IN HDEV hdev, IN LPWSTR pwszDeviceName, IN HANDLE hDriver)
Definition: enable.c:78
#define INDEX_DrvBitBlt
Definition: winddi.h:434
#define INDEX_DrvEnableSurface
Definition: winddi.h:419
FN_DrvSetPointerShape DrvSetPointerShape
BOOLEAN(* PFN)(PARGS)
Definition: parse.h:47
DEVINFO devinfoVGA
Definition: enable.c:171
PVIDEO_POINTER_ATTRIBUTES pPointerAttributes
Definition: driver.h:45
VOID APIENTRY DrvCompletePDEV(IN DHPDEV dhpdev, IN HDEV hdev)
Definition: enable.c:132
static VOID InitSavedBits(IN PPDEV ppdev)
Definition: enable.c:394
HDEV GDIDevHandle
Definition: vgaddi.h:109
unsigned short USHORT
Definition: pedump.c:61
#define DM_PELSHEIGHT
Definition: wingdi.h:1269
BOOL DeinitVGA(PPDEV ppdev)
Definition: screen.c:112
SIZEL sizeSurf
Definition: vgaddi.h:176
VOID vgaPreCalc()
Definition: vgavideo.c:58
#define PLANAR_PELS_PER_CPU_ADDRESS
Definition: vgaddi.h:251
ULONG flSurf
Definition: vgaddi.h:166
#define va_start(ap, A)
Definition: acmsvcex.h:91
static GDIINFO gaulCap
Definition: enable.c:58
#define INDEX_DrvTextOut
Definition: winddi.h:439
#define INDEX_DrvDisablePDEV
Definition: winddi.h:418
#define INDEX_DrvMovePointer
Definition: winddi.h:446
#define DPRINT1
Definition: precomp.h:8
#define HT_PATSIZE_4x4_M
Definition: winddi.h:792
PVOID BankBufferPlane0
Definition: vgaddi.h:208
_Must_inspect_result_ ENGAPI HSURF APIENTRY EngCreateDeviceSurface(_In_ DHSURF dhsurf, _In_ SIZEL sizl, _In_ ULONG iFormatCompat)
Definition: surface.c:388
void int int ULONGLONG int va_list * ap
Definition: winesup.h:32
#define OUT
Definition: typedefs.h:39
#define DM
Definition: ftp_var.h:26
static BOOL VGAInitialized
Definition: enable.c:11
unsigned int ULONG
Definition: retypes.h:1
#define BMF_PHYSDEVICE
Definition: vgaddi.h:234
#define HOOK_PAINT
Definition: winddi.h:1424
#define DM_BITSPERPEL
Definition: wingdi.h:1267
struct _devicemodeW DEVMODEW
BYTE jReserved1
Definition: vgaddi.h:173
#define INDEX_DrvCopyBits
Definition: winddi.h:435
USHORT ident
Definition: enable.c:135
#define GCAPS_HORIZSTRIKE
Definition: winddi.h:329
ULONG ulVertRes
Definition: winddi.h:883
WCHAR * LPWSTR
Definition: xmlstorage.h:184
struct _GDIINFO GDIINFO
BOOL InitVGA(PPDEV ppdev, BOOL bFirst)
Definition: screen.c:134
#define HT_FORMAT_4BPP_IRGB
Definition: winddi.h:818
#define INDEX_DrvStretchBlt
Definition: winddi.h:436
#define memset(x, y, z)
Definition: compat.h:39
LONG cy
Definition: windef.h:320
VOID NTAPI DrvDisableSurface(DHPDEV dhpdev)
Definition: enable.c:287
Definition: winddi.h:529
ULONG DbgPrint(PCCH Format,...)
Definition: enable.c:589
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
Definition: ndis.h:4751
#define DM_DISPLAYFLAGS
Definition: wingdi.h:1270
#define APIENTRY
Definition: api.h:79
FN_DrvBitBlt DrvBitBlt
PBANK_INFO BankInfo2RW
Definition: vgaddi.h:200