ReactOS  0.4.14-dev-390-g34947ad
ddenable.c File Reference
#include "framebuf.h"
Include dependency graph for ddenable.c:

Go to the source code of this file.

Functions

VOID APIENTRY DrvDisableDirectDraw (IN DHPDEV dhpdev)
 
BOOL APIENTRY DrvEnableDirectDraw (IN DHPDEV dhpdev, OUT DD_CALLBACKS *pCallBacks, OUT DD_SURFACECALLBACKS *pSurfaceCallBacks, OUT DD_PALETTECALLBACKS *pPaletteCallBacks)
 
BOOL APIENTRY DrvGetDirectDrawInfo (IN DHPDEV dhpdev, OUT DD_HALINFO *pHalInfo, OUT DWORD *pdwNumHeaps, OUT VIDEOMEMORY *pvmList, OUT DWORD *pdwNumFourCCCodes, OUT DWORD *pdwFourCC)
 

Function Documentation

◆ DrvDisableDirectDraw()

VOID APIENTRY DrvDisableDirectDraw ( IN DHPDEV  dhpdev)

Definition at line 24 of file ddenable.c.

25 {
26  PPDEV ppdev = (PPDEV)dhpdev;
27  ppdev->bDDInitialized = FALSE;
28  /* Add Clean up code here if we need it
29  when we shout down directx interface */
30 }
struct _PDEV * PPDEV
Definition: framebuf.h:33
BOOL bDDInitialized
Definition: framebuf.h:66

◆ DrvEnableDirectDraw()

BOOL APIENTRY DrvEnableDirectDraw ( IN DHPDEV  dhpdev,
OUT DD_CALLBACKS pCallBacks,
OUT DD_SURFACECALLBACKS pSurfaceCallBacks,
OUT DD_PALETTECALLBACKS pPaletteCallBacks 
)

Definition at line 33 of file ddenable.c.

38 {
39  PPDEV ppdev = (PPDEV)dhpdev;
40 
41  if (ppdev->bDDInitialized)
42  {
43  return TRUE;
44  }
45 
46  /* Setup pixel format */
47  ppdev->ddpfDisplay.dwSize = sizeof( DDPIXELFORMAT );
48  ppdev->ddpfDisplay.dwFourCC = 0;
49 
50  ppdev->ddpfDisplay.dwRBitMask = ppdev->RedMask;
51  ppdev->ddpfDisplay.dwGBitMask = ppdev->GreenMask;
52  ppdev->ddpfDisplay.dwBBitMask = ppdev->BlueMask;
53 
55  ppdev->ddpfDisplay.dwRGBAlphaBitMask = 0;
56  ppdev->ddpfDisplay.dwFlags = DDPF_RGB;
57 
58  ppdev->pvmList = NULL;
59 
60  switch(ppdev->iDitherFormat)
61  {
62  case BMF_8BPP:
64  break;
65 
66  case BMF_16BPP:
67  switch(ppdev->RedMask)
68  {
69  case 0x7C00:
70  ppdev->ddpfDisplay.dwRGBAlphaBitMask = 0x8000;
71  break;
72 
73  default:
74  break;
75  }
76  break;
77 
78  case BMF_24BPP:
79  break;
80 
81  case BMF_32BPP:
82  ppdev->ddpfDisplay.dwRGBAlphaBitMask = 0xff000000;
83  break;
84 
85  default:
86  /* FIXME unknown pixel bits */
87  ppdev->ddpfDisplay.dwRGBBitCount=0;
88  break;
89  }
90 
91  if (pCallBacks !=NULL)
92  {
93  memset(pCallBacks,0,sizeof(DD_CALLBACKS));
94 
95  /* FILL pCallBacks with hal stuff */
96  pCallBacks->dwSize = sizeof(DDHAL_DDCALLBACKS);
99 
100  /* Fill in the HAL Callback flags */
102  }
103 
104  if (pSurfaceCallBacks !=NULL)
105  {
107 
108  /* FILL pSurfaceCallBacks with hal stuff */
109  // pSurfaceCallBacks.dwSize = sizeof(DDHAL_DDSURFACECALLBACKS);
110  // pSurfaceCallBacks.DestroySurface = DdDestroySurface;
111  // pSurfaceCallBacks.Lock = DdLock;
112  // pSurfaceCallBacks.Blt = DdBlt;
113 
114  // pSurfaceCallBacks->dwFlags = DDHAL_SURFCB32_DESTROYSURFACE | DDHAL_SURFCB32_LOCK | DDHAL_SURFCB32_BLT ;
115  }
116 
117  if (pPaletteCallBacks !=NULL)
118  {
120  /* FILL pPaletteCallBacks with hal stuff */
121  /* We will not support this callback in the framebuf.dll */
122  }
123 
124 
125  /* Fixme fill the ppdev->dxHalInfo with the info we need */
126  ppdev->bDDInitialized = TRUE;
127  return ppdev->bDDInitialized;
128 }
#define BMF_24BPP
Definition: winddi.h:359
#define TRUE
Definition: types.h:120
DWORD dwFlags
Definition: ddraw.h:1071
#define BMF_32BPP
Definition: winddi.h:360
DWORD iDitherFormat
Definition: framebuf.h:61
ULONG GreenMask
Definition: framebuf.h:44
DDPIXELFORMAT ddpfDisplay
Definition: framebuf.h:67
struct _DDHAL_DDCALLBACKS DDHAL_DDCALLBACKS
#define DDHAL_CB32_CANCREATESURFACE
Definition: ddrawi.h:658
DWORD(WINAPI * PDD_CANCREATESURFACE)(PDD_CANCREATESURFACEDATA)
Definition: ddrawint.h:462
DWORD(WINAPI * PDD_CREATESURFACE)(PDD_CREATESURFACEDATA)
Definition: ddrawint.h:432
struct _DDPIXELFORMAT DDPIXELFORMAT
DWORD CALLBACK DdCanCreateSurface(LPDDHAL_CANCREATESURFACEDATA pccsd)
Definition: dd.c:26
ULONG BlueMask
Definition: framebuf.h:45
BYTE BitsPerPixel
Definition: framebuf.h:42
DWORD dwGBitMask
Definition: ddraw.h:1094
smooth NULL
Definition: ftsmooth.c:416
_Out_ DD_CALLBACKS _Out_ DD_SURFACECALLBACKS _Out_ DD_PALETTECALLBACKS * pPaletteCallBacks
Definition: winddi.h:4217
#define BMF_16BPP
Definition: winddi.h:358
DWORD CALLBACK DdCreateSurface(PDD_CREATESURFACEDATA pcsd)
Definition: dd.c:70
DWORD dwRGBBitCount
Definition: ddraw.h:1075
VIDEOMEMORY * pvmList
Definition: framebuf.h:65
#define DDPF_RGB
Definition: ddraw.h:507
DWORD dwRBitMask
Definition: ddraw.h:1085
#define DDPF_PALETTEINDEXED8
Definition: ddraw.h:506
ULONG RedMask
Definition: framebuf.h:43
struct _PDEV * PPDEV
Definition: framebuf.h:33
_Out_ DD_CALLBACKS * pCallBacks
Definition: winddi.h:4217
DWORD dwFourCC
Definition: ddraw.h:1072
_Out_ DD_CALLBACKS _Out_ DD_SURFACECALLBACKS * pSurfaceCallBacks
Definition: winddi.h:4217
DWORD dwBBitMask
Definition: ddraw.h:1106
#define DDHAL_CB32_CREATESURFACE
Definition: ddrawi.h:654
Definition: xlate.c:10
BOOL bDDInitialized
Definition: framebuf.h:66
#define memset(x, y, z)
Definition: compat.h:39
DWORD dwSize
Definition: ddraw.h:1070
DWORD dwRGBAlphaBitMask
Definition: ddraw.h:1113

◆ DrvGetDirectDrawInfo()

BOOL APIENTRY DrvGetDirectDrawInfo ( IN DHPDEV  dhpdev,
OUT DD_HALINFO pHalInfo,
OUT DWORD pdwNumHeaps,
OUT VIDEOMEMORY pvmList,
OUT DWORD pdwNumFourCCCodes,
OUT DWORD pdwFourCC 
)

Definition at line 131 of file ddenable.c.

138 {
139  PPDEV ppdev = (PPDEV)dhpdev;
140  LONG i;
141  DWORD heap = 1; /* we always alloc one heap */
142  BOOL bDDrawHeap = FALSE;
143 
144  if (ppdev == NULL)
145  return FALSE;
146 
147  /* check so pHalInfo, pdwNumHeaps, pdwNumFourCCCodes is not NULL
148  pdwFourCC and pvmList can be null
149  */
150 
151  if (pHalInfo == NULL)
152  return FALSE;
153 
154  if (pdwNumHeaps == NULL)
155  return FALSE;
156 
157  if (pdwNumFourCCCodes == NULL)
158  return FALSE;
159 
160  /* Setup heap */
161  if ( (ppdev->ScreenWidth < ppdev->MemWidth) || (ppdev->ScreenHeight < ppdev->MemHeight))
162  {
163  bDDrawHeap = TRUE;
164  heap++;
165  }
166 
167  ppdev->dwHeap = heap;
168  *pdwNumHeaps = heap;
169 
170  /* We do not support other fourcc */
171  *pdwNumFourCCCodes = 0;
172 
173 
174  /*
175  check see if pvmList and pdwFourCC are frist call
176  or frist. Secon call we fill in pHalInfo info
177  */
178 
179  if(!(pvmList && pdwFourCC))
180  {
181 
183  pHalInfo->dwSize = sizeof(DD_HALINFO);
184 
187 
188  pHalInfo->ddCaps.dwFXCaps = DDFXCAPS_BLTSTRETCHY | DDFXCAPS_BLTSTRETCHX |
193 
195 
197 
199 
200  pHalInfo->ddCaps.dwSVBCaps = DDCAPS_BLT;
201  pHalInfo->ddCaps.ddsCaps.dwCaps |= DDSCAPS_LOCALVIDMEM | DDSCAPS_NONLOCALVIDMEM;
202 
203  /* Calc how much memmory is left on the video cards memmory */
204  pHalInfo->ddCaps.dwVidMemTotal = (ppdev->MemHeight - ppdev->ScreenHeight) * ppdev->ScreenDelta;
205 
206  /* fill in some basic info that we need */
207  pHalInfo->vmiData.pvPrimary = ppdev->ScreenPtr;
208  pHalInfo->vmiData.dwDisplayWidth = ppdev->ScreenWidth;
209  pHalInfo->vmiData.dwDisplayHeight = ppdev->ScreenHeight;
210  pHalInfo->vmiData.lDisplayPitch = ppdev->ScreenDelta;
211  pHalInfo->vmiData.ddpfDisplay.dwSize = sizeof(DDPIXELFORMAT);
212  pHalInfo->vmiData.ddpfDisplay.dwFlags = DDPF_RGB;
213  pHalInfo->vmiData.ddpfDisplay.dwRGBBitCount = ppdev->BitsPerPixel;
214  pHalInfo->vmiData.ddpfDisplay.dwRBitMask = ppdev->RedMask;
215  pHalInfo->vmiData.ddpfDisplay.dwGBitMask = ppdev->GreenMask;
216  pHalInfo->vmiData.ddpfDisplay.dwBBitMask = ppdev->BlueMask;
217  pHalInfo->vmiData.dwOffscreenAlign = 4;
218 
219  if ( ppdev->BitsPerPixel == 8 )
220  {
221  pHalInfo->vmiData.ddpfDisplay.dwFlags |= DDPF_PALETTEINDEXED8;
222  }
223 
224  /* FIXME
225  Config the rops we do not doing that yet
226  for we need write the rops table
227  */
228  for(i=0;i<DD_ROP_SPACE;i++ )
229  {
230  // pHALInfo->ddCaps.dwSVBRops[i] = rops[i];
231  // pHALInfo->ddCaps.dwRops[i] = rops[i];
232  }
233  }
234 
235  /* Now build pvmList info */
236  if(pvmList)
237  {
238  ppdev->pvmList = pvmList;
239 
240  if (bDDrawHeap)
241  {
243  pvmList->fpStart = ppdev->ScreenHeight * ppdev->ScreenDelta;
244  pvmList->fpEnd = ppdev->MemHeight * ppdev->ScreenDelta - 1;
245  pvmList->ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
246  pvmList++;
247  }
248 
249  pvmList->fpStart = 0;
250  pvmList->fpEnd = (ppdev->MemHeight * ppdev->ScreenDelta) - 1;
252  pvmList->ddsCaps.dwCaps = DDSCAPS_FRONTBUFFER | DDSCAPS_BACKBUFFER ;
253  pvmList->ddsCapsAlt.dwCaps = DDSCAPS_FRONTBUFFER | DDSCAPS_BACKBUFFER;
254 
255  pvmList = ppdev->pvmList;
256  }
257 
258  return TRUE;
259 }
#define DDFXCAPS_BLTSHRINKY
Definition: ddraw.h:415
#define TRUE
Definition: types.h:120
ULONG ScreenHeight
Definition: framebuf.h:40
#define DDFXCAPS_BLTSHRINKXN
Definition: ddraw.h:414
#define DDCAPS2_NONLOCALVIDMEM
Definition: ddraw.h:371
#define DDCAPS_READSCANLINE
Definition: ddraw.h:346
DWORD dwFlags
Definition: ddrawint.h:1128
ULONG GreenMask
Definition: framebuf.h:44
#define DDSCAPS_NONLOCALVIDMEM
Definition: ddraw.h:277
#define DDFXCAPS_BLTSHRINKYN
Definition: ddraw.h:416
#define DDCAPS_BLTSTRETCH
Definition: ddraw.h:338
#define DDCAPS2_NONLOCALVIDMEMCAPS
Definition: ddraw.h:372
#define DDCAPS_BLTCOLORFILL
Definition: ddraw.h:355
#define DDSCAPS_FLIP
Definition: ddraw.h:253
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
ULONG BlueMask
Definition: framebuf.h:45
unsigned int BOOL
Definition: ntddk_ex.h:94
long LONG
Definition: pedump.c:60
BYTE BitsPerPixel
Definition: framebuf.h:42
#define DDCAPS_BLT
Definition: ddraw.h:335
_Out_ DD_HALINFO _Out_ DWORD _Out_ VIDEOMEMORY * pvmList
Definition: winddi.h:4226
smooth NULL
Definition: ftsmooth.c:416
#define DDSCAPS_FRONTBUFFER
Definition: ddraw.h:254
#define DD_ROP_SPACE
Definition: ddraw.h:200
VIDEOMEMORY * pvmList
Definition: framebuf.h:65
#define DDPF_RGB
Definition: ddraw.h:507
#define VIDMEM_ISNONLOCAL
Definition: ddrawi.h:211
#define DDCAPS_BLTQUEUE
Definition: ddraw.h:336
unsigned long DWORD
Definition: ntddk_ex.h:95
#define VIDMEM_ISWC
Definition: ddrawi.h:212
ULONG MemWidth
Definition: framebuf.h:63
#define DDFXCAPS_BLTSTRETCHXN
Definition: ddraw.h:418
_Out_ DD_HALINFO * pHalInfo
Definition: winddi.h:4226
#define DDPF_PALETTEINDEXED8
Definition: ddraw.h:506
ULONG RedMask
Definition: framebuf.h:43
struct _PDEV * PPDEV
#define DDCAPS_COLORKEY
Definition: ddraw.h:351
Definition: framebuf.h:33
#define DDSCAPS_LOCALVIDMEM
Definition: ddraw.h:276
PVOID ScreenPtr
Definition: framebuf.h:47
#define DDFXCAPS_BLTSTRETCHX
Definition: ddraw.h:417
#define DDFXCAPS_BLTSHRINKX
Definition: ddraw.h:413
_Out_ DD_HALINFO _Out_ DWORD _Out_ VIDEOMEMORY _Out_ DWORD * pdwNumFourCCCodes
Definition: winddi.h:4226
#define DDCAPS_CANBLTSYSMEM
Definition: ddraw.h:360
struct _DD_HALINFO DD_HALINFO
ULONG MemHeight
Definition: framebuf.h:62
#define DDSCAPS_BACKBUFFER
Definition: ddraw.h:251
_Out_ DD_HALINFO _Out_ DWORD _Out_ VIDEOMEMORY _Out_ DWORD _Out_ DWORD * pdwFourCC
Definition: winddi.h:4226
#define DDFXCAPS_BLTSTRETCHYN
Definition: ddraw.h:420
#define DDCKEYCAPS_SRCBLTCLRSPACE
Definition: ddraw.h:491
#define DDSCAPS_PRIMARYSURFACE
Definition: ddraw.h:258
#define DDFXCAPS_BLTMIRRORUPDOWN
Definition: ddraw.h:410
#define DDFXCAPS_BLTMIRRORLEFTRIGHT
Definition: ddraw.h:409
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:261
#define DDSCAPS_OFFSCREENPLAIN
Definition: ddraw.h:255
#define DDFXCAPS_BLTSTRETCHY
Definition: ddraw.h:419
_Out_ DD_HALINFO _Out_ DWORD * pdwNumHeaps
Definition: winddi.h:4226
#define VIDMEM_ISLINEAR
Definition: ddrawi.h:208
ULONG ScreenDelta
Definition: framebuf.h:41
DWORD dwHeap
Definition: framebuf.h:64
#define DDCKEYCAPS_SRCBLT
Definition: ddraw.h:490
ULONG ScreenWidth
Definition: framebuf.h:39