mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 09:13:01 +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 */
|
/* Call win32k */
|
||||||
return NtGdiDdLock((HANDLE)Lock->lpDDSurface->hDDSurface,
|
return NtGdiDdLock((HANDLE)Lock->lpDDSurface->hDDSurface,
|
||||||
(PDD_LOCKDATA)Lock,
|
(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
|
* 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
|
* take report from user which value they got here
|
||||||
*/
|
*/
|
||||||
#if 0
|
#if 1
|
||||||
{
|
{
|
||||||
char buffer[1024]; \
|
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);
|
OutputDebugStringA(buffer);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -761,7 +761,6 @@ DvpGetVideoPortInputFormats(LPDDHAL_GETVPORTINPUTFORMATDATA pDvdGetVideoPortInpu
|
||||||
return NtGdiDvpGetVideoPortInputFormats(pDvdGetVideoPortInputFormat->lpVideoPort->hDDVideoPort, (PDD_GETVPORTINPUTFORMATDATA) pDvdGetVideoPortInputFormat);
|
return NtGdiDvpGetVideoPortInputFormats(pDvdGetVideoPortInputFormat->lpVideoPort->hDDVideoPort, (PDD_GETVPORTINPUTFORMATDATA) pDvdGetVideoPortInputFormat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*
|
*
|
||||||
|
@ -786,7 +785,6 @@ DvpGetVideoPortOutputFormats(LPDDHAL_GETVPORTLINEDATA pDvdGetVideoPortOutputForm
|
||||||
return NtGdiDvpGetVideoPortLine(pDvdGetVideoPortOutputFormat->lpVideoPort->hDDVideoPort, (PDD_GETVPORTLINEDATA)pDvdGetVideoPortOutputFormat);
|
return NtGdiDvpGetVideoPortLine(pDvdGetVideoPortOutputFormat->lpVideoPort->hDDVideoPort, (PDD_GETVPORTLINEDATA)pDvdGetVideoPortOutputFormat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*
|
*
|
||||||
|
@ -857,7 +855,6 @@ DdColorControl(LPDDHAL_COLORCONTROLDATA pDdColorControl)
|
||||||
return NtGdiDdColorControl( (HANDLE) pDdColorControl->lpDDSurface->hDDSurface, (PDD_COLORCONTROLDATA) &pDdColorControl);
|
return NtGdiDdColorControl( (HANDLE) pDdColorControl->lpDDSurface->hDDSurface, (PDD_COLORCONTROLDATA) &pDdColorControl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*
|
*
|
||||||
|
@ -882,9 +879,6 @@ DdFlipToGDISurface(LPDDHAL_FLIPTOGDISURFACEDATA pDdFlipToGDISurface)
|
||||||
return NtGdiDdFlipToGDISurface( GetDdHandle(pDdFlipToGDISurface->lpDD->hDD), (PDD_FLIPTOGDISURFACEDATA) &pDdFlipToGDISurface);
|
return NtGdiDdFlipToGDISurface( GetDdHandle(pDdFlipToGDISurface->lpDD->hDD), (PDD_FLIPTOGDISURFACEDATA) &pDdFlipToGDISurface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* TODO */
|
/* TODO */
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
|
@ -1239,7 +1233,6 @@ D3dContextCreate(LPD3DHAL_CONTEXTCREATEDATA pdcci)
|
||||||
(D3DNTHAL_CONTEXTCREATEI *)pdcci);
|
(D3DNTHAL_CONTEXTCREATEI *)pdcci);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*
|
*
|
||||||
|
@ -1262,24 +1255,73 @@ DdCanCreateD3DBuffer(LPDDHAL_CANCREATESURFACEDATA CanCreateD3DBuffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* TODO : finish all fixme */
|
/*
|
||||||
|
* @implemented
|
||||||
|
*
|
||||||
|
* DdCreateD3DBuffer
|
||||||
|
*/
|
||||||
DWORD
|
DWORD
|
||||||
WINAPI
|
WINAPI
|
||||||
DdCreateD3DBuffer(LPDDHAL_CREATESURFACEDATA pCreateSurface)
|
DdCreateD3DBuffer(LPDDHAL_CREATESURFACEDATA pCreateSurface)
|
||||||
{
|
{
|
||||||
|
HANDLE puhSurface = 0;
|
||||||
|
DDRAWI_DDRAWSURFACE_GBL *pSurfGBL;
|
||||||
|
DDRAWI_DDRAWSURFACE_LCL *pSurfLcl;
|
||||||
DD_SURFACE_GLOBAL puSurfaceGlobalData;
|
DD_SURFACE_GLOBAL puSurfaceGlobalData;
|
||||||
DD_SURFACE_MORE puSurfaceMoreData;
|
DD_SURFACE_MORE puSurfaceMoreData;
|
||||||
DD_SURFACE_LOCAL puSurfaceLocalData;
|
DD_SURFACE_LOCAL puSurfaceLocalData;
|
||||||
|
DWORD retValue;
|
||||||
|
|
||||||
memset(&puSurfaceGlobalData, 0, sizeof(DD_SURFACE_GLOBAL) );
|
/* Zero all local memory pointer */
|
||||||
memset(&puSurfaceMoreData, 0, sizeof(DD_SURFACE_MORE) ) ;
|
RtlZeroMemory(&puSurfaceGlobalData, sizeof(DD_SURFACE_GLOBAL) );
|
||||||
memset(&puSurfaceLocalData, 0, sizeof(DD_SURFACE_LOCAL) );
|
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 */
|
/* Convert DDRAWI_DDRAWSURFACE_GBL to DD_SURFACE_GLOBAL */
|
||||||
return 0;
|
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;
|
DWORD retValue = 0;
|
||||||
if ( pDestroySurface->lpDDSurface->hDDSurface)
|
if ( pDestroySurface->lpDDSurface->hDDSurface)
|
||||||
{
|
{
|
||||||
|
/* Call win32k */
|
||||||
retValue = NtGdiDdDestroyD3DBuffer((HANDLE)pDestroySurface->lpDDSurface->hDDSurface);
|
retValue = NtGdiDdDestroyD3DBuffer((HANDLE)pDestroySurface->lpDDSurface->hDDSurface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue