diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 07edde1325f..eff95040c9c 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -1733,6 +1733,16 @@ HRESULT WINAPI IWineD3DDeviceImpl_Init3D(IWineD3DDevice *iface, WINED3DPRESENT_P } + /* Determine shader mode to use based on GL caps */ + if (GL_SUPPORT(ARB_SHADING_LANGUAGE_100) && wined3d_settings.glslRequested + && (wined3d_settings.vs_mode == VS_HW || wined3d_settings.ps_mode == PS_HW)) + wined3d_settings.shader_mode = SHADER_GLSL; + else if ((GL_SUPPORT(ARB_VERTEX_PROGRAM) && wined3d_settings.vs_mode == VS_HW) || + (GL_SUPPORT(ARB_FRAGMENT_PROGRAM) && wined3d_settings.ps_mode == PS_HW)) + wined3d_settings.shader_mode = SHADER_ARB; + else + wined3d_settings.shader_mode = SHADER_SW; + /* Initialize the current view state */ This->modelview_valid = 1; This->proj_valid = 0; diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index 0bb55891f84..ec9c5d76664 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -1696,16 +1696,6 @@ HRESULT WINAPI IWineD3DImpl_GetDeviceCaps(IWineD3D *iface, UINT Adapter, WINED3D *pCaps->MaxStreams = MAX_STREAMS; *pCaps->MaxStreamStride = 1024; - /* Determine shader mode to use based on GL caps */ - if (GL_SUPPORT(ARB_SHADING_LANGUAGE_100) && wined3d_settings.glslRequested - && (wined3d_settings.vs_mode == VS_HW || wined3d_settings.ps_mode == PS_HW)) - wined3d_settings.shader_mode = SHADER_GLSL; - else if ((GL_SUPPORT(ARB_VERTEX_PROGRAM) && wined3d_settings.vs_mode == VS_HW) || - (GL_SUPPORT(ARB_FRAGMENT_PROGRAM) && wined3d_settings.ps_mode == PS_HW)) - wined3d_settings.shader_mode = SHADER_ARB; - else - wined3d_settings.shader_mode = SHADER_SW; - if (wined3d_settings.vs_mode == VS_HW && wined3d_settings.shader_mode == SHADER_GLSL && DeviceType != WINED3DDEVTYPE_REF) { *pCaps->VertexShaderVersion = D3DVS_VERSION(3,0);