* Sync up to trunk head (r64959).
[reactos.git] / dll / directx / d3d9 / d3d9_callbacks.c
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS ReactX
4 * FILE: dll/directx/d3d9/d3d9_callbacks.c
5 * PURPOSE: Direct3D9's callback functions
6 * PROGRAMERS: Gregor Gullwi <gbrunmar (dot) ros (at) gmail (dot) com>
7 */
8 #include "d3d9_common.h"
9 #include "d3d9_callbacks.h"
10 #include <d3d9.h>
11 #include <dll/directx/d3d8thk.h>
12 #include "d3d9_private.h"
13 #include "ddrawi.h"
14
15 DWORD WINAPI D3d9GetAvailDriverMemory(LPD3D9_GETAVAILDRIVERMEMORYDATA pData)
16 {
17 DWORD Ret = FALSE;
18 DDHAL_GETAVAILDRIVERMEMORYDATA Data;
19 ZeroMemory(&Data, sizeof(Data));
20
21 if (D3D9_GETAVAILDRIVERMEMORY_TYPE_ALL == pData->dwMemoryType)
22 {
23 Data.DDSCaps.dwCaps = DDSCAPS_VIDEOMEMORY;
24 }
25 else if (D3D9_GETAVAILDRIVERMEMORY_TYPE_LOCAL == pData->dwMemoryType)
26 {
27 Data.DDSCaps.dwCaps = DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM;
28 }
29 else if (D3D9_GETAVAILDRIVERMEMORY_TYPE_NONLOCAL == pData->dwMemoryType)
30 {
31 Data.DDSCaps.dwCaps = DDSCAPS_VIDEOMEMORY | DDSCAPS_NONLOCALVIDMEM;
32 }
33
34 if (Data.DDSCaps.dwCaps != 0)
35 {
36 if (0 == pData->dwTextureType)
37 Data.DDSCaps.dwCaps |= DDSCAPS_TEXTURE;
38
39 if (pData->dwTextureType & D3D9_TEXTURETYPE_HALSURFACE)
40 Data.DDSCaps.dwCaps |= DDSCAPS_TEXTURE | DDSCAPS_3DDEVICE;
41
42 if (pData->dwTextureType & D3D9_TEXTURETYPE_BACKBUFFER)
43 Data.DDSCaps.dwCaps |= DDSCAPS_ZBUFFER;
44
45 Ret = OsThunkDdGetAvailDriverMemory(pData->pUnknown6BC->hDirectDrawLocal, (DD_GETAVAILDRIVERMEMORYDATA*)&Data);
46 pData->dwFree = Data.dwFree;
47 }
48
49 return Ret;
50 }