void CWinRenderer::SelectRenderMethod() { if (CONF_FLAGS_FORMAT_MASK(m_flags) == CONF_FLAGS_FORMAT_DXVA) { m_renderMethod = RENDER_DXVA; } else { int requestedMethod = g_guiSettings.GetInt("videoplayer.rendermethod"); CLog::Log(LOGDEBUG, __FUNCTION__": Requested render method: %d", requestedMethod); switch(requestedMethod) { case RENDER_METHOD_AUTO: case RENDER_METHOD_D3D_PS: // Try the pixel shaders support if (m_deviceCaps.PixelShaderVersion >= D3DPS_VERSION(2, 0)) { CTestShader* shader = new CTestShader; if (shader->Create()) { m_renderMethod = RENDER_PS; shader->Release(); break; } else { CLog::Log(LOGNOTICE, "D3D: unable to load test shader - D3D installation is most likely incomplete"); g_application.m_guiDialogKaiToast.QueueNotification(CGUIDialogKaiToast::Warning, "DirectX", g_localizeStrings.Get(2101)); shader->Release(); } } else { CLog::Log(LOGNOTICE, "D3D: graphics adapter does not support Pixel Shaders 2.0"); } CLog::Log(LOGNOTICE, "D3D: falling back to SW mode"); // drop through to software case RENDER_METHOD_SOFTWARE: default: // So we'll do the color conversion in software. m_renderMethod = RENDER_SW; break; } } RenderMethodDetail *rmdet = FindRenderMethod(m_renderMethod); CLog::Log(LOGDEBUG, __FUNCTION__": Selected render method %d: %s", m_renderMethod, rmdet != NULL ? rmdet->name : "unknown"); }