mirror of
https://github.com/reactos/reactos.git
synced 2024-07-21 11:48:04 +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"
|
#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;
|
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)
|
if (pCallBacks !=NULL)
|
||||||
{
|
{
|
||||||
memset(pCallBacks,0,sizeof(DD_CALLBACKS));
|
memset(pCallBacks,0,sizeof(DD_CALLBACKS));
|
||||||
|
|
||||||
/* FILL pCallBacks with hal stuff */
|
/* 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)
|
if (pSurfaceCallBacks !=NULL)
|
||||||
|
@ -55,15 +108,23 @@ DrvEnableDirectDraw(
|
||||||
memset(pSurfaceCallBacks,0,sizeof(DD_SURFACECALLBACKS));
|
memset(pSurfaceCallBacks,0,sizeof(DD_SURFACECALLBACKS));
|
||||||
|
|
||||||
/* FILL pSurfaceCallBacks with hal stuff */
|
/* 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)
|
if (pPaletteCallBacks !=NULL)
|
||||||
{
|
{
|
||||||
memset(pPaletteCallBacks,0,sizeof(DD_PALETTECALLBACKS));
|
memset(pPaletteCallBacks,0,sizeof(DD_PALETTECALLBACKS));
|
||||||
|
|
||||||
/* FILL pPaletteCallBacks with hal stuff */
|
/* 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;
|
ppdev->bDDInitialized = TRUE;
|
||||||
return ppdev->bDDInitialized;
|
return ppdev->bDDInitialized;
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,6 +64,8 @@ typedef struct _PDEV
|
||||||
|
|
||||||
/* DirectX Support */
|
/* DirectX Support */
|
||||||
BOOL bDDInitialized;
|
BOOL bDDInitialized;
|
||||||
|
DDPIXELFORMAT ddpfDisplay;
|
||||||
|
DDHALINFO dxHalInfo;
|
||||||
} PDEV, *PPDEV;
|
} PDEV, *PPDEV;
|
||||||
|
|
||||||
#define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
|
#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 DEVICE_NAME L"framebuf"
|
||||||
#define ALLOC_TAG TAG('F','B','U','F')
|
#define ALLOC_TAG TAG('F','B','U','F')
|
||||||
|
|
||||||
|
DWORD CALLBACK
|
||||||
|
DdCanCreateSurface( LPDDHAL_CANCREATESURFACEDATA pccsd );
|
||||||
|
|
||||||
|
DWORD CALLBACK
|
||||||
|
DdCreateSurface(PDD_CREATESURFACEDATA lpCreateSurface);
|
||||||
|
|
||||||
VOID STDCALL
|
VOID STDCALL
|
||||||
DrvDisableDirectDraw(
|
DrvDisableDirectDraw(
|
||||||
IN DHPDEV dhpdev);
|
IN DHPDEV dhpdev);
|
||||||
|
|
Loading…
Reference in a new issue