mirror of
https://github.com/reactos/reactos.git
synced 2024-08-01 00:58:16 +00:00
Thank CodeMercenary (CodeMercenary at hotmail dot com) that provide ms ddk example driver code is wrong for how to write a graphice driver with dx support. he gave me input and provide the ddk example code is wrong.
Now I change the desgin after correct infomations so it lead to even less overhead of code. svn path=/trunk/; revision=26157
This commit is contained in:
parent
b7763201df
commit
b54c8f6b9b
|
@ -206,66 +206,37 @@ DWORD STDCALL NtGdiDdCreateSurface(
|
||||||
pLocal = &phsurface->Local;
|
pLocal = &phsurface->Local;
|
||||||
pMore = &phsurface->More;
|
pMore = &phsurface->More;
|
||||||
pGlobal = &phsurface->Global;
|
pGlobal = &phsurface->Global;
|
||||||
|
|
||||||
|
|
||||||
/* FIXME we only support one surface for now */
|
/* FIXME we only support one surface for now */
|
||||||
phsurface->CreateSurfaceData.dwSCnt = 1;
|
phsurface->CreateSurfaceData.dwSCnt = 1;
|
||||||
|
|
||||||
|
for (i = 0; i < phsurface->CreateSurfaceData.dwSCnt; i++)
|
||||||
phsurface->lcllist[0] = 0;
|
{
|
||||||
phsurface->lcllist[1] = 0;
|
phsurface->lcllist[i] = (PDD_SURFACE_LOCAL)pLocal;
|
||||||
phsurface->CreateSurfaceData.lplpSList = (PDD_SURFACE_LOCAL *) &phsurface->lcllist;
|
pLocal->lpGbl = pGlobal;
|
||||||
|
pLocal->lpSurfMore = pMore;
|
||||||
|
|
||||||
i = 0;
|
/* FIXME ?
|
||||||
// for (i = 0; i < phsurface->CreateSurfaceData.dwSCnt; i++)
|
pLocal->lpAttachList;
|
||||||
//{
|
pLocal->lpAttachListFrom;
|
||||||
phsurface->lcl.hDDSurface = (ULONG_PTR)myhSurface[i];
|
*/
|
||||||
phsurface->lcl.ddsCaps.dwCaps = pLocal->ddsCaps.dwCaps;
|
|
||||||
phsurface->lcl.dwFlags =pLocal->dwFlags;
|
/* FIXME a countup to next pLocal, pMore, pGlobal */
|
||||||
|
|
||||||
phsurface->gpl.wWidth = pGlobal->wWidth;
|
}
|
||||||
phsurface->gpl.wHeight = pGlobal->wHeight;
|
|
||||||
phsurface->gpl.lPitch = pGlobal->lPitch;
|
|
||||||
phsurface->gpl.fpVidMem = pGlobal->fpVidMem;
|
|
||||||
phsurface->gpl.dwBlockSizeX = pGlobal->dwBlockSizeX;
|
|
||||||
phsurface->gpl.dwBlockSizeY = pGlobal->dwBlockSizeY;
|
|
||||||
RtlCopyMemory( &phsurface->gpl.ddpfSurface , &pGlobal->ddpfSurface, sizeof(DDPIXELFORMAT));
|
|
||||||
|
|
||||||
/* FIXME more ?? */
|
|
||||||
if (pMore)
|
|
||||||
{
|
|
||||||
phsurface->more.ddsCapsEx.dwCaps2 = pMore->ddsCapsEx.dwCaps2;
|
|
||||||
phsurface->more.ddsCapsEx.dwCaps3 = pMore->ddsCapsEx.dwCaps3;
|
|
||||||
phsurface->more.ddsCapsEx.dwCaps4 = pMore->ddsCapsEx.dwCaps4;
|
|
||||||
phsurface->lcl.dbnOverlayNode.object_int = (LPDDRAWI_DDRAWSURFACE_INT)pMore->dwSurfaceHandle;
|
|
||||||
}
|
|
||||||
|
|
||||||
phsurface->lcllist[0] = (PDD_SURFACE_LOCAL)&phsurface->lcl;
|
|
||||||
/* FIXME count up everthing to next position */
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
/* FIXME support for more that one surface */
|
/* FIXME support for more that one surface */
|
||||||
|
|
||||||
DPRINT1("setup CreateSurfaceData \n");
|
|
||||||
/* setup DD_CREATESURFACEDATA CreateSurfaceData for the driver */
|
/* setup DD_CREATESURFACEDATA CreateSurfaceData for the driver */
|
||||||
phsurface->lcl.lpGbl = &phsurface->gpl;
|
phsurface->CreateSurfaceData.lplpSList = (PDD_SURFACE_LOCAL *) &phsurface->lcllist;
|
||||||
phsurface->lcl.lpSurfMore = &phsurface->more;
|
|
||||||
|
|
||||||
/* FIXME all phsurface->lcl should be in a array then add to lplpSList */
|
|
||||||
//phsurface->CreateSurfaceData.lplpSList = (PDD_SURFACE_LOCAL *)&phsurface->lcl;
|
|
||||||
phsurface->CreateSurfaceData.lpDDSurfaceDesc = &phsurface->desc;
|
phsurface->CreateSurfaceData.lpDDSurfaceDesc = &phsurface->desc;
|
||||||
phsurface->CreateSurfaceData.CreateSurface = NULL;
|
phsurface->CreateSurfaceData.CreateSurface = NULL;
|
||||||
phsurface->CreateSurfaceData.ddRVal = DDERR_GENERIC;
|
phsurface->CreateSurfaceData.ddRVal = DDERR_GENERIC;
|
||||||
phsurface->CreateSurfaceData.lpDD = &pDirectDraw->Global;
|
phsurface->CreateSurfaceData.lpDD = &pDirectDraw->Global;
|
||||||
|
|
||||||
/* is this correct the 3d drv whant this data */
|
|
||||||
// phsurface->lcl.lpGbl->lpDD = &pDirectDraw->Global;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* the CreateSurface crash with lcl convering */
|
/* the CreateSurface crash with lcl convering */
|
||||||
DPRINT1("DDHAL_CB32_CREATESURFACE\n");
|
|
||||||
if ((pDirectDraw->DD.dwFlags & DDHAL_CB32_CREATESURFACE))
|
if ((pDirectDraw->DD.dwFlags & DDHAL_CB32_CREATESURFACE))
|
||||||
{
|
{
|
||||||
DPRINT1("0x%04x",pDirectDraw->DD.CreateSurface);
|
DPRINT1("0x%04x",pDirectDraw->DD.CreateSurface);
|
||||||
|
|
Loading…
Reference in a new issue