mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 11:53:21 +00:00
implemented DdCreateD3DBuffer callbacks and some cleanup
svn path=/trunk/; revision=32550
This commit is contained in:
parent
e8678dcf3a
commit
5a081cfc0a
1 changed files with 98 additions and 55 deletions
|
@ -139,7 +139,7 @@ DdLock(LPDDHAL_LOCKDATA Lock)
|
|||
/* Call win32k */
|
||||
return NtGdiDdLock((HANDLE)Lock->lpDDSurface->hDDSurface,
|
||||
(PDD_LOCKDATA)Lock,
|
||||
(HANDLE)Lock->lpDDSurface->hDC);
|
||||
(HANDLE)Lock->lpDDSurface->hDC);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -312,10 +312,10 @@ DdCreateSurface(LPDDHAL_CREATESURFACEDATA pCreateSurface)
|
|||
* we create the size activate this IF when you start doing the optimze and please also
|
||||
* take report from user which value they got here
|
||||
*/
|
||||
#if 0
|
||||
#if 1
|
||||
{
|
||||
char buffer[1024]; \
|
||||
sprintf ( buffer, "Function %s : Optimze max to %d Surface ? (%s:%d)\n", __FUNCTION__,SurfaceCount,__FILE__,__LINE__ );
|
||||
sprintf ( buffer, "Function %s : Optimze max to %d Surface ? (%s:%d)\n", __FUNCTION__, (int)SurfaceCount,__FILE__,__LINE__ );
|
||||
OutputDebugStringA(buffer);
|
||||
}
|
||||
#endif
|
||||
|
@ -761,7 +761,6 @@ DvpGetVideoPortInputFormats(LPDDHAL_GETVPORTINPUTFORMATDATA pDvdGetVideoPortInpu
|
|||
return NtGdiDvpGetVideoPortInputFormats(pDvdGetVideoPortInputFormat->lpVideoPort->hDDVideoPort, (PDD_GETVPORTINPUTFORMATDATA) pDvdGetVideoPortInputFormat);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*
|
||||
|
@ -786,7 +785,6 @@ DvpGetVideoPortOutputFormats(LPDDHAL_GETVPORTLINEDATA pDvdGetVideoPortOutputForm
|
|||
return NtGdiDvpGetVideoPortLine(pDvdGetVideoPortOutputFormat->lpVideoPort->hDDVideoPort, (PDD_GETVPORTLINEDATA)pDvdGetVideoPortOutputFormat);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*
|
||||
|
@ -857,7 +855,6 @@ DdColorControl(LPDDHAL_COLORCONTROLDATA pDdColorControl)
|
|||
return NtGdiDdColorControl( (HANDLE) pDdColorControl->lpDDSurface->hDDSurface, (PDD_COLORCONTROLDATA) &pDdColorControl);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*
|
||||
|
@ -882,9 +879,6 @@ DdFlipToGDISurface(LPDDHAL_FLIPTOGDISURFACEDATA pDdFlipToGDISurface)
|
|||
return NtGdiDdFlipToGDISurface( GetDdHandle(pDdFlipToGDISurface->lpDD->hDD), (PDD_FLIPTOGDISURFACEDATA) &pDdFlipToGDISurface);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* TODO */
|
||||
DWORD
|
||||
WINAPI
|
||||
|
@ -1239,7 +1233,6 @@ D3dContextCreate(LPD3DHAL_CONTEXTCREATEDATA pdcci)
|
|||
(D3DNTHAL_CONTEXTCREATEI *)pdcci);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*
|
||||
|
@ -1262,24 +1255,73 @@ DdCanCreateD3DBuffer(LPDDHAL_CANCREATESURFACEDATA CanCreateD3DBuffer)
|
|||
}
|
||||
|
||||
|
||||
/* TODO : finish all fixme */
|
||||
/*
|
||||
* @implemented
|
||||
*
|
||||
* DdCreateD3DBuffer
|
||||
*/
|
||||
DWORD
|
||||
WINAPI
|
||||
DdCreateD3DBuffer(LPDDHAL_CREATESURFACEDATA pCreateSurface)
|
||||
{
|
||||
|
||||
HANDLE puhSurface = 0;
|
||||
DDRAWI_DDRAWSURFACE_GBL *pSurfGBL;
|
||||
DDRAWI_DDRAWSURFACE_LCL *pSurfLcl;
|
||||
DD_SURFACE_GLOBAL puSurfaceGlobalData;
|
||||
DD_SURFACE_MORE puSurfaceMoreData;
|
||||
DD_SURFACE_LOCAL puSurfaceLocalData;
|
||||
DWORD retValue;
|
||||
|
||||
memset(&puSurfaceGlobalData, 0, sizeof(DD_SURFACE_GLOBAL) );
|
||||
memset(&puSurfaceMoreData, 0, sizeof(DD_SURFACE_MORE) ) ;
|
||||
memset(&puSurfaceLocalData, 0, sizeof(DD_SURFACE_LOCAL) );
|
||||
/* Zero all local memory pointer */
|
||||
RtlZeroMemory(&puSurfaceGlobalData, sizeof(DD_SURFACE_GLOBAL) );
|
||||
RtlZeroMemory(&puSurfaceMoreData, sizeof(DD_SURFACE_MORE) ) ;
|
||||
RtlZeroMemory(&puSurfaceLocalData, sizeof(DD_SURFACE_LOCAL) );
|
||||
|
||||
/* FIXME convert the struct to right ones and setup for syscall, then retranslated the info back to pCreateSurface */
|
||||
pCreateSurface->dwSCnt = 1;
|
||||
pSurfLcl = pCreateSurface->lplpSList[0];
|
||||
pSurfGBL = pSurfLcl->lpGbl;
|
||||
|
||||
/* FIXME not supported yet */
|
||||
return 0;
|
||||
/* Convert DDRAWI_DDRAWSURFACE_GBL to DD_SURFACE_GLOBAL */
|
||||
puSurfaceGlobalData.wWidth = pSurfGBL->wWidth;
|
||||
puSurfaceGlobalData.wHeight = pSurfGBL->wHeight;
|
||||
puSurfaceGlobalData.dwLinearSize = pSurfGBL->dwLinearSize;
|
||||
puSurfaceGlobalData.fpVidMem = pSurfGBL->fpVidMem;
|
||||
puSurfaceGlobalData.dwBlockSizeX = pSurfGBL->dwBlockSizeX;
|
||||
puSurfaceGlobalData.dwBlockSizeY = pSurfGBL->dwBlockSizeY;
|
||||
|
||||
/* Convert DDRAWI_DDRAWSURFACE_MORE to DD_SURFACE_MORE */
|
||||
puSurfaceMoreData.dwSurfaceHandle = pSurfLcl->lpSurfMore->dwSurfaceHandle;
|
||||
puSurfaceMoreData.ddsCapsEx.dwCaps2 = pSurfLcl->lpSurfMore->ddsCapsEx.dwCaps2;
|
||||
puSurfaceMoreData.ddsCapsEx.dwCaps3 = pSurfLcl->lpSurfMore->ddsCapsEx.dwCaps3;
|
||||
puSurfaceMoreData.ddsCapsEx.dwCaps4 = pSurfLcl->lpSurfMore->ddsCapsEx.dwCaps4;
|
||||
|
||||
/* Convert DDRAWI_DDRAWSURFACE_LCL to DD_SURFACE_LOCAL */
|
||||
puSurfaceLocalData.dwFlags = pSurfLcl->dwFlags;
|
||||
puSurfaceLocalData.ddsCaps.dwCaps = pSurfLcl->ddsCaps.dwCaps;
|
||||
|
||||
/* Call win32k */
|
||||
retValue = NtGdiDdCreateD3DBuffer( GetDdHandle(pCreateSurface->lpDD->hDD),
|
||||
(HANDLE*)&pSurfLcl->hDDSurface,
|
||||
pCreateSurface->lpDDSurfaceDesc,
|
||||
&puSurfaceGlobalData,
|
||||
&puSurfaceLocalData,
|
||||
&puSurfaceMoreData,
|
||||
(DD_CREATESURFACEDATA *) pCreateSurface,
|
||||
&puhSurface);
|
||||
|
||||
/* Setup surface handle if we got one back */
|
||||
if ( puhSurface != NULL )
|
||||
{
|
||||
pCreateSurface->lplpSList[0]->hDDSurface = (ULONG_PTR)puhSurface;
|
||||
}
|
||||
|
||||
/* Convert DD_SURFACE_GLOBAL to DDRAWI_DDRAWSURFACE_GBL */
|
||||
pSurfGBL->dwLinearSize = puSurfaceGlobalData.dwLinearSize;
|
||||
pSurfGBL->fpVidMem = puSurfaceGlobalData.fpVidMem;
|
||||
pSurfGBL->dwBlockSizeX = puSurfaceGlobalData.dwBlockSizeX;
|
||||
pSurfGBL->dwBlockSizeY = puSurfaceGlobalData.dwBlockSizeY;
|
||||
|
||||
return retValue;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1294,6 +1336,7 @@ DdDestroyD3DBuffer(LPDDHAL_DESTROYSURFACEDATA pDestroySurface)
|
|||
DWORD retValue = 0;
|
||||
if ( pDestroySurface->lpDDSurface->hDDSurface)
|
||||
{
|
||||
/* Call win32k */
|
||||
retValue = NtGdiDdDestroyD3DBuffer((HANDLE)pDestroySurface->lpDDSurface->hDDSurface);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue