void CWinRenderer::Render(DWORD flags, CD3DTexture* target) { if (!m_renderBuffers[m_iYV12RenderBuffer].loaded) { if (!m_renderBuffers[m_iYV12RenderBuffer].UploadBuffer()) return; } UpdateVideoFilter(); switch (m_renderMethod) { case RENDER_DXVA: RenderHW(flags, target); break; case RENDER_PS: RenderPS(target); break; case RENDER_SW: RenderSW(target); break; default: return; } if (m_bUseHQScaler) RenderHQ(target); DX::Windowing().ApplyStateBlock(); }
void CWinRenderer::Render(DWORD flags, CD3DTexture* target) { CRenderBuffer& buf = m_renderBuffers[m_iYV12RenderBuffer]; if (!buf.loaded) { if (!buf.UploadBuffer()) return; } AVColorPrimaries srcPrim = GetSrcPrimaries(buf.primaries, buf.GetWidth(), buf.GetHeight()); if (srcPrim != m_srcPrimaries) { m_srcPrimaries = srcPrim; m_bFilterInitialized = false; } bool toneMap = false; if (m_videoSettings.m_ToneMapMethod != VS_TONEMAPMETHOD_OFF) { if (buf.hasLightMetadata || (buf.hasDisplayMetadata && buf.displayMetadata.has_luminance)) toneMap = true; } if (toneMap != m_toneMapping) { m_outputShader.reset(); m_bFilterInitialized = false; } m_toneMapping = toneMap; UpdateVideoFilter(); switch (m_renderMethod) { case RENDER_DXVA: RenderHW(flags, target); break; case RENDER_PS: RenderPS(target); break; case RENDER_SW: RenderSW(target); break; default: return; } if (m_bUseHQScaler) RenderHQ(target); DX::Windowing()->ApplyStateBlock(); }