mirror of
https://github.com/reactos/reactos.git
synced 2025-05-29 05:58:13 +00:00
Implement frist HEL Callback
HelDdCanCreateSurface Fix minors bugs there and there svn path=/trunk/; revision=21525
This commit is contained in:
parent
80e1facc71
commit
a93dd3afa9
6 changed files with 71 additions and 10 deletions
|
@ -37,6 +37,7 @@
|
|||
<directory name="soft">
|
||||
<file>ddraw_hel.c</file>
|
||||
<file>surface_hel.c</file>
|
||||
<file>surface_callbacks_hel.c</file>
|
||||
</directory>
|
||||
|
||||
<directory name="thunks">
|
||||
|
|
|
@ -22,8 +22,16 @@ HRESULT Hal_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDS
|
|||
|
||||
|
||||
mDdCanCreateSurface.lpDD = &This->mDDrawGlobal;
|
||||
mDdCanCreateSurface.CanCreateSurface = This->mCallbacks.HALDD.CanCreateSurface;
|
||||
|
||||
|
||||
if (This->mDDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_CANCREATESURFACE)
|
||||
{
|
||||
mDdCanCreateSurface.CanCreateSurface = This->mCallbacks.HALDD.CanCreateSurface;
|
||||
}
|
||||
else
|
||||
{
|
||||
mDdCanCreateSurface.CanCreateSurface = This->mCallbacks.HELDD.CanCreateSurface;
|
||||
}
|
||||
|
||||
mDdCreateSurface.lpDD = &This->mDDrawGlobal;
|
||||
mDdCreateSurface.CreateSurface = This->mCallbacks.HALDD.CreateSurface;
|
||||
|
||||
|
@ -335,15 +343,22 @@ HRESULT Hal_DDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface, LPRECT prect, LPDDSURF
|
|||
Lock.Lock = This->owner->mCallbacks.HALDDSurface.Lock;
|
||||
Lock.dwFlags = flags;
|
||||
Lock.lpDDSurface = This->Surf->mpPrimaryLocals[0];
|
||||
Lock.lpDD = &This->owner->mDDrawGlobal;
|
||||
// FIXME lpSurfData
|
||||
//Lock.lpSurfData =
|
||||
Lock.lpDD = &This->owner->mDDrawGlobal;
|
||||
Lock.lpSurfData = NULL;
|
||||
|
||||
if (This->owner->mCallbacks.HALDDSurface.Lock(&Lock)!= DDHAL_DRIVER_NOTHANDLED)
|
||||
if (This->owner->mCallbacks.HALDDSurface.Lock(&Lock)!= DDHAL_DRIVER_HANDLED)
|
||||
{
|
||||
return Lock.ddRVal;
|
||||
}
|
||||
// FIXME LPDDSURFACEDESC2
|
||||
|
||||
RtlZeroMemory(pDDSD,sizeof(DDSURFACEDESC2));
|
||||
memcpy(pDDSD,&This->Surf->mddsdPrimary,sizeof(DDSURFACEDESC));
|
||||
pDDSD->dwSize = sizeof(DDSURFACEDESC2);
|
||||
|
||||
pDDSD->lpSurface = Lock.lpSurfData;
|
||||
|
||||
|
||||
// FIXME some things is wrong it does not show the data on screen ??
|
||||
|
||||
return DD_OK;
|
||||
}
|
||||
|
|
|
@ -10,10 +10,11 @@
|
|||
|
||||
#include "rosdraw.h"
|
||||
|
||||
static const DDPIXELFORMAT pixelformats[] =
|
||||
const DDPIXELFORMAT pixelformats[] =
|
||||
{
|
||||
/* 8bpp paletted */
|
||||
{ sizeof(DDPIXELFORMAT), DDPF_RGB|DDPF_PALETTEINDEXED8, 0, { 8 } },
|
||||
{ sizeof(DDPIXELFORMAT), DDPF_RGB, 0, { 24 }, { 0xFF0000 },
|
||||
{ 0x00FF00 }, { 0x0000FF } },
|
||||
/* 15bpp 5/5/5 */
|
||||
{ sizeof(DDPIXELFORMAT), DDPF_RGB, 0, { 16 }, { 0x7C00 }, { 0x3E0 },
|
||||
{ 0x1F } },
|
||||
|
@ -28,6 +29,37 @@ static const DDPIXELFORMAT pixelformats[] =
|
|||
{ 0x00FF00 }, { 0x0000FF } }
|
||||
};
|
||||
|
||||
const DWORD pixelformatsCount = sizeof(pixelformats) / sizeof(DDPIXELFORMAT);
|
||||
|
||||
/* more surface format not adding it */
|
||||
/* 4 bit paletted 0 */
|
||||
// sizeof(DDPIXELFORMAT), DDPF_RGB | DDPF_PALETTEINDEXED4, 0, 4, 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
///* 8bpp paletted 1 */
|
||||
//{sizeof(DDPIXELFORMAT), DDPF_RGB|DDPF_PALETTEINDEXED8, 0, 8, 0, 0, 0, 0},
|
||||
|
||||
///* 15bpp 5:5:5 RGB 2 */
|
||||
//{sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 16, 0x7c00, 0x03e0, 0x001f, 0},
|
||||
|
||||
///* 15bpp 1:5:5:5 ARGB 3 */
|
||||
//{sizeof(DDPIXELFORMAT), DDPF_RGB | DDPF_ALPHAPIXELS, 0, 16, 0x7c00, 0x03e0, 0x001f, 0x8000},
|
||||
|
||||
///* 16bpp 5:6:5 RGB 4 */
|
||||
//{sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 16, 0xf800, 0x07e0, 0x001f, 0}
|
||||
|
||||
///* 16bpp 4:4:4:4 ARGB 5 */
|
||||
//{sizeof(DDPIXELFORMAT), DDPF_RGB | DDPF_ALPHAPIXELS,´0, 16, 0x0f00, 0x00f0, 0x000f, 0xf000},
|
||||
|
||||
/* 24bpp 8/8/8 RGB 6 */
|
||||
// {sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 24 , 0x00FF0000, 0x0000FF00 , 0x000000FF, 0 },
|
||||
|
||||
/* 32bpp 8:8:8 RGB 7 */
|
||||
// {sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 32, 0x00ff0000, 0x0000ff00, 0x000000ff, 0},
|
||||
|
||||
/* 32bpp 8:8:8:8 ARGB 8*/
|
||||
// {sizeof(DDPIXELFORMAT), DDPF_RGB | DDPF_ALPHAPIXELS, 0, 32, 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
@ -625,7 +657,7 @@ HRESULT WINAPI Main_DirectDraw_EnumDisplayModes(LPDIRECTDRAW7 iface, DWORD dwFla
|
|||
break;
|
||||
|
||||
case 32:
|
||||
memcpy(&desc_callback.ddpfPixelFormat,&pixelformats[3],sizeof(DDPIXELFORMAT));
|
||||
memcpy(&desc_callback.ddpfPixelFormat,&pixelformats[4],sizeof(DDPIXELFORMAT));
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
|
@ -187,6 +187,10 @@ HRESULT Hel_DDrawSurface_GetBltStatus(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags)
|
|||
HRESULT Hel_DDrawSurface_Flip(LPDIRECTDRAWSURFACE7 iface, LPDIRECTDRAWSURFACE7 override, DWORD dwFlags);
|
||||
HRESULT Hel_DDrawSurface_UpdateOverlayDisplay (LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags);
|
||||
|
||||
/* HEL CALLBACK */
|
||||
DWORD CALLBACK HelDdCanCreateSurface(LPDDHAL_CANCREATESURFACEDATA pccsd);
|
||||
|
||||
|
||||
/* Setting for HEL should be move to ros special reg key ? */
|
||||
|
||||
/* setup how much graphic memory should hel be limit, set it now to 64MB */
|
||||
|
|
|
@ -18,6 +18,11 @@ HRESULT Hel_DirectDraw_Initialize (LPDIRECTDRAW7 iface)
|
|||
|
||||
This->HELMemoryAvilable = HEL_GRAPHIC_MEMORY_MAX;
|
||||
|
||||
|
||||
This->mCallbacks.HELDD.dwFlags = DDHAL_CB32_CANCREATESURFACE;
|
||||
This->mCallbacks.HELDD.CanCreateSurface = HelDdCanCreateSurface;
|
||||
|
||||
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -56,3 +56,7 @@ HRESULT Hel_DDrawSurface_UpdateOverlayDisplay (LPDIRECTDRAWSURFACE7 iface, DWORD
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue