2 * Direct3D wine internal interface main
4 * Copyright 2002-2003 The wine-d3d team
5 * Copyright 2002-2003 Raphael Junqueira
6 * Copyright 2004 Jason Edmeades
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
26 #include "wined3d_private.h"
28 WINE_DEFAULT_DEBUG_CHANNEL(wine_d3d
);
31 void (*wine_tsx11_lock_ptr
)(void) = NULL
;
32 void (*wine_tsx11_unlock_ptr
)(void) = NULL
;
33 int vs_mode
= VS_HW
; /* Hardware by default */
34 int ps_mode
= PS_NONE
; /* Disabled by default */
36 IWineD3D
* WINAPI
WineDirect3DCreate(UINT SDKVersion
, UINT dxVersion
, IUnknown
*parent
) {
37 IWineD3DImpl
* object
= HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, sizeof(IWineD3DImpl
));
38 object
->lpVtbl
= &IWineD3D_Vtbl
;
39 object
->dxVersion
= dxVersion
;
41 object
->parent
= parent
;
43 TRACE("Created WineD3D object @ %p for d3d%d support\n", object
, dxVersion
);
45 return (IWineD3D
*)object
;
48 /* At process attach */
49 BOOL WINAPI
DllMain(HINSTANCE hInstDLL
, DWORD fdwReason
, LPVOID lpv
)
51 TRACE("WineD3D DLLMain Reason=%ld\n", fdwReason
);
52 if (fdwReason
== DLL_PROCESS_ATTACH
)
56 DWORD size
= sizeof(buffer
);
59 DisableThreadLibraryCalls(hInstDLL
);
61 mod
= GetModuleHandleA( "winex11.drv" );
64 wine_tsx11_lock_ptr
= (void *)GetProcAddress( mod
, "wine_tsx11_lock" );
65 wine_tsx11_unlock_ptr
= (void *)GetProcAddress( mod
, "wine_tsx11_unlock" );
67 /* @@ Wine registry key: HKCU\Software\Wine\Direct3D */
68 if ( !RegOpenKeyA( HKEY_CURRENT_USER
, "Software\\Wine\\Direct3D", &hkey
) )
70 if ( !RegQueryValueExA( hkey
, "VertexShaderMode", 0, NULL
, buffer
, &size
) )
72 if (!strcmp(buffer
,"none"))
74 TRACE("Disable vertex shaders\n");
77 else if (!strcmp(buffer
,"emulation"))
79 TRACE("Force SW vertex shaders\n");
83 if ( !RegQueryValueExA( hkey
, "PixelShaderMode", 0, NULL
, buffer
, &size
) )
85 if (!strcmp(buffer
,"enabled"))
87 TRACE("Allow pixel shaders\n");
93 TRACE("Allow HW vertex shaders\n");
94 if (ps_mode
== PS_NONE
)
95 TRACE("Disable pixel shaders\n");