mirror of
https://github.com/reactos/reactos.git
synced 2024-07-08 21:55:08 +00:00
Framebuf drv
Implement : DdCanCreateSurface Stub : DdCreateSurface adding struct ddpfDisplay and dxHalInfo ddpfDisplay are being filld but not use dxHalInfo are not fill it is rater large work getting it right svn path=/trunk/; revision=23080
This commit is contained in:
parent
4b2f6b62b4
commit
0d759ca707
|
@ -22,3 +22,55 @@
|
|||
|
||||
#include "framebuf.h"
|
||||
|
||||
|
||||
DWORD CALLBACK
|
||||
DdCanCreateSurface(LPDDHAL_CANCREATESURFACEDATA pccsd)
|
||||
{
|
||||
|
||||
/* We do not support 3d buffer so we fail here */
|
||||
if ((pccsd->lpDDSurfaceDesc->ddsCaps.dwCaps & DDSCAPS_ZBUFFER) &&
|
||||
(pccsd->lpDDSurfaceDesc->ddsCaps.dwCaps & DDSCAPS_VIDEOMEMORY))
|
||||
{
|
||||
pccsd->ddRVal = DDERR_INVALIDPIXELFORMAT;
|
||||
return DDHAL_DRIVER_HANDLED;
|
||||
}
|
||||
|
||||
|
||||
/* Check if another pixel format or not, we fail for now */
|
||||
if (pccsd->bIsDifferentPixelFormat)
|
||||
{
|
||||
/* check the fourcc diffent FOURCC, but we only support BMP for now */
|
||||
//if(pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwFlags & DDPF_FOURCC)
|
||||
//{
|
||||
// /* We do not support other pixel format */
|
||||
// switch (pccsd->lpDDSurfaceDesc->ddpfPixelFormat.dwFourCC)
|
||||
// {
|
||||
// default:
|
||||
// pccsd->ddRVal = DDERR_INVALIDPIXELFORMAT;
|
||||
// return DDHAL_DRIVER_HANDLED;
|
||||
// }
|
||||
//}
|
||||
// /* check the texture support, we do not support testure for now */
|
||||
//else if((pccsd->lpDDSurfaceDesc->ddsCaps.dwCaps & DDSCAPS_TEXTURE))
|
||||
//{
|
||||
// /* We do not support texture surface */
|
||||
// pccsd->ddRVal = DDERR_INVALIDPIXELFORMAT;
|
||||
// return DDHAL_DRIVER_HANDLED;
|
||||
//}
|
||||
|
||||
/* Fail */
|
||||
pccsd->ddRVal = DDERR_INVALIDPIXELFORMAT;
|
||||
return DDHAL_DRIVER_HANDLED;
|
||||
}
|
||||
|
||||
pccsd->ddRVal = DD_OK;
|
||||
return DDHAL_DRIVER_HANDLED;
|
||||
}
|
||||
|
||||
DWORD CALLBACK
|
||||
DdCreateSurface(PDD_CREATESURFACEDATA lpCreateSurface)
|
||||
{
|
||||
lpCreateSurface->ddRVal = DDERR_GENERIC;
|
||||
return DDHAL_DRIVER_NOTHANDLED;
|
||||
}
|
||||
|
||||
|
|
|
@ -43,11 +43,64 @@ DrvEnableDirectDraw(
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
/* Setup pixel format */
|
||||
ppdev->ddpfDisplay.dwSize = sizeof( DDPIXELFORMAT );
|
||||
ppdev->ddpfDisplay.dwFourCC = 0;
|
||||
|
||||
ppdev->ddpfDisplay.dwRBitMask = ppdev->RedMask;
|
||||
ppdev->ddpfDisplay.dwGBitMask = ppdev->GreenMask;
|
||||
ppdev->ddpfDisplay.dwBBitMask = ppdev->BlueMask;
|
||||
|
||||
switch(ppdev->BitsPerPixel)
|
||||
{
|
||||
case BMF_8BPP:
|
||||
ppdev->ddpfDisplay.dwRGBAlphaBitMask = 0;
|
||||
ppdev->ddpfDisplay.dwRGBBitCount=8;
|
||||
ppdev->ddpfDisplay.dwFlags = DDPF_RGB | DDPF_PALETTEINDEXED8;
|
||||
break;
|
||||
|
||||
case BMF_16BPP:
|
||||
ppdev->ddpfDisplay.dwRGBBitCount=16;
|
||||
switch(ppdev->RedMask)
|
||||
{
|
||||
case 0x7C00:
|
||||
ppdev->ddpfDisplay.dwRGBAlphaBitMask = 0x8000;
|
||||
break;
|
||||
|
||||
default:
|
||||
ppdev->ddpfDisplay.dwRGBAlphaBitMask = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case BMF_24BPP:
|
||||
ppdev->ddpfDisplay.dwRGBAlphaBitMask = 0;
|
||||
ppdev->ddpfDisplay.dwRGBBitCount=24;
|
||||
break;
|
||||
|
||||
case BMF_32BPP:
|
||||
ppdev->ddpfDisplay.dwRGBAlphaBitMask = 0xff000000;
|
||||
ppdev->ddpfDisplay.dwRGBBitCount=32;
|
||||
break;
|
||||
default:
|
||||
/* FIXME unknown pixelformat */
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
//InitDDHAL(ppdev);
|
||||
|
||||
|
||||
if (pCallBacks !=NULL)
|
||||
{
|
||||
memset(pCallBacks,0,sizeof(DD_CALLBACKS));
|
||||
|
||||
/* FILL pCallBacks with hal stuff */
|
||||
pCallBacks->dwSize = sizeof(DDHAL_DDCALLBACKS);
|
||||
pCallBacks->CanCreateSurface = (PDD_CANCREATESURFACE)DdCanCreateSurface;
|
||||
pCallBacks->CreateSurface = (PDD_CREATESURFACE)DdCreateSurface;
|
||||
|
||||
/* Fill in the HAL Callback flags */
|
||||
pCallBacks->dwFlags = DDHAL_CB32_CANCREATESURFACE | DDHAL_CB32_CREATESURFACE;
|
||||
}
|
||||
|
||||
if (pSurfaceCallBacks !=NULL)
|
||||
|
@ -55,15 +108,23 @@ DrvEnableDirectDraw(
|
|||
memset(pSurfaceCallBacks,0,sizeof(DD_SURFACECALLBACKS));
|
||||
|
||||
/* FILL pSurfaceCallBacks with hal stuff */
|
||||
// pSurfaceCallBacks.dwSize = sizeof(DDHAL_DDSURFACECALLBACKS);
|
||||
// pSurfaceCallBacks.DestroySurface = DdDestroySurface;
|
||||
// pSurfaceCallBacks.Lock = DdLock;
|
||||
// pSurfaceCallBacks.Blt = DdBlt;
|
||||
|
||||
// pSurfaceCallBacks->dwFlags = DDHAL_SURFCB32_DESTROYSURFACE | DDHAL_SURFCB32_LOCK | DDHAL_SURFCB32_BLT ;
|
||||
}
|
||||
|
||||
if (pPaletteCallBacks !=NULL)
|
||||
{
|
||||
memset(pPaletteCallBacks,0,sizeof(DD_PALETTECALLBACKS));
|
||||
|
||||
/* FILL pPaletteCallBacks with hal stuff */
|
||||
/* We will not support this callback in the framebuf.dll */
|
||||
}
|
||||
|
||||
|
||||
/* Fixme fill the ppdev->dxHalInfo with the info we need */
|
||||
ppdev->bDDInitialized = TRUE;
|
||||
return ppdev->bDDInitialized;
|
||||
}
|
||||
|
|
|
@ -64,6 +64,8 @@ typedef struct _PDEV
|
|||
|
||||
/* DirectX Support */
|
||||
BOOL bDDInitialized;
|
||||
DDPIXELFORMAT ddpfDisplay;
|
||||
DDHALINFO dxHalInfo;
|
||||
} PDEV, *PPDEV;
|
||||
|
||||
#define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
|
||||
|
@ -71,6 +73,12 @@ typedef struct _PDEV
|
|||
#define DEVICE_NAME L"framebuf"
|
||||
#define ALLOC_TAG TAG('F','B','U','F')
|
||||
|
||||
DWORD CALLBACK
|
||||
DdCanCreateSurface( LPDDHAL_CANCREATESURFACEDATA pccsd );
|
||||
|
||||
DWORD CALLBACK
|
||||
DdCreateSurface(PDD_CREATESURFACEDATA lpCreateSurface);
|
||||
|
||||
VOID STDCALL
|
||||
DrvDisableDirectDraw(
|
||||
IN DHPDEV dhpdev);
|
||||
|
|
Loading…
Reference in a new issue