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
|
@ -207,65 +207,36 @@ DWORD STDCALL NtGdiDdCreateSurface(
|
|||
pMore = &phsurface->More;
|
||||
pGlobal = &phsurface->Global;
|
||||
|
||||
|
||||
/* FIXME we only support one surface for now */
|
||||
phsurface->CreateSurfaceData.dwSCnt = 1;
|
||||
|
||||
|
||||
phsurface->lcllist[0] = 0;
|
||||
phsurface->lcllist[1] = 0;
|
||||
phsurface->CreateSurfaceData.lplpSList = (PDD_SURFACE_LOCAL *) &phsurface->lcllist;
|
||||
|
||||
i = 0;
|
||||
// for (i = 0; i < phsurface->CreateSurfaceData.dwSCnt; i++)
|
||||
//{
|
||||
phsurface->lcl.hDDSurface = (ULONG_PTR)myhSurface[i];
|
||||
phsurface->lcl.ddsCaps.dwCaps = pLocal->ddsCaps.dwCaps;
|
||||
phsurface->lcl.dwFlags =pLocal->dwFlags;
|
||||
|
||||
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)
|
||||
for (i = 0; i < phsurface->CreateSurfaceData.dwSCnt; i++)
|
||||
{
|
||||
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[i] = (PDD_SURFACE_LOCAL)pLocal;
|
||||
pLocal->lpGbl = pGlobal;
|
||||
pLocal->lpSurfMore = pMore;
|
||||
|
||||
phsurface->lcllist[0] = (PDD_SURFACE_LOCAL)&phsurface->lcl;
|
||||
/* FIXME count up everthing to next position */
|
||||
// }
|
||||
/* FIXME ?
|
||||
pLocal->lpAttachList;
|
||||
pLocal->lpAttachListFrom;
|
||||
*/
|
||||
|
||||
/* FIXME a countup to next pLocal, pMore, pGlobal */
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* FIXME support for more that one surface */
|
||||
|
||||
DPRINT1("setup CreateSurfaceData \n");
|
||||
/* setup DD_CREATESURFACEDATA CreateSurfaceData for the driver */
|
||||
phsurface->lcl.lpGbl = &phsurface->gpl;
|
||||
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.lplpSList = (PDD_SURFACE_LOCAL *) &phsurface->lcllist;
|
||||
phsurface->CreateSurfaceData.lpDDSurfaceDesc = &phsurface->desc;
|
||||
phsurface->CreateSurfaceData.CreateSurface = NULL;
|
||||
phsurface->CreateSurfaceData.ddRVal = DDERR_GENERIC;
|
||||
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 */
|
||||
DPRINT1("DDHAL_CB32_CREATESURFACE\n");
|
||||
if ((pDirectDraw->DD.dwFlags & DDHAL_CB32_CREATESURFACE))
|
||||
{
|
||||
DPRINT1("0x%04x",pDirectDraw->DD.CreateSurface);
|
||||
|
|
Loading…
Reference in a new issue