wined3d: Only set D3D caps when GL was loaded successfully.
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 4b5a8c0..ddb7102 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -3457,8 +3457,7 @@
/* Fill the ddraw caps structure */
pCaps->DirectDrawCaps.Caps = WINEDDCAPS_GDI |
WINEDDCAPS_PALETTE |
- blit_caps |
- WINEDDCAPS_3D; /* TODO: Make conditional */
+ blit_caps;
pCaps->DirectDrawCaps.Caps2 = WINEDDCAPS2_CERTIFIED |
WINEDDCAPS2_NOPAGELOCKREQUIRED |
WINEDDCAPS2_PRIMARYGAMMA |
@@ -3483,12 +3482,18 @@
WINEDDSCAPS_PRIMARYSURFACE |
WINEDDSCAPS_SYSTEMMEMORY |
WINEDDSCAPS_VIDEOMEMORY |
- WINEDDSCAPS_VISIBLE |
- WINEDDSCAPS_3DDEVICE | /* TODO: Make conditional */
- WINEDDSCAPS_MIPMAP | /* TODO: Make conditional */
- WINEDDSCAPS_TEXTURE | /* TODO: Make conditional */
- WINEDDSCAPS_ZBUFFER; /* TODO: Make conditional */
+ WINEDDSCAPS_VISIBLE;
pCaps->DirectDrawCaps.StrideAlign = 0; /* TODO: SURFACE_ALIGNMENT */
+
+ /* Set D3D caps if OpenGL is available. */
+ if(Adapters[Adapter].opengl) {
+ pCaps->DirectDrawCaps.ddsCaps |=WINEDDSCAPS_3DDEVICE |
+ WINEDDSCAPS_MIPMAP |
+ WINEDDSCAPS_TEXTURE |
+ WINEDDSCAPS_ZBUFFER;
+ pCaps->DirectDrawCaps.Caps |= WINEDDCAPS_3D;
+ }
+
return WINED3D_OK;
}