diff options
11 files changed, 43 insertions, 3 deletions
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/DebugInfo.h b/xbmc/cores/VideoPlayer/VideoRenderers/DebugInfo.h index d800c1a837..451386ce66 100644 --- a/xbmc/cores/VideoPlayer/VideoRenderers/DebugInfo.h +++ b/xbmc/cores/VideoPlayer/VideoRenderers/DebugInfo.h @@ -24,6 +24,7 @@ struct DEBUG_INFO_VIDEO std::string metaPrim; std::string metaLight; std::string shader; + std::string render; }; struct DEBUG_INFO_RENDER diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/DebugRenderer.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/DebugRenderer.cpp index 61cdedcc2e..9a8f496f96 100644 --- a/xbmc/cores/VideoPlayer/VideoRenderers/DebugRenderer.cpp +++ b/xbmc/cores/VideoPlayer/VideoRenderers/DebugRenderer.cpp @@ -90,6 +90,7 @@ void CDebugRenderer::SetInfo(DEBUG_INFO_VIDEO& video, DEBUG_INFO_RENDER& render) m_adapter->AddSubtitle(video.metaPrim, 0., 5000000.); m_adapter->AddSubtitle(video.metaLight, 0., 5000000.); m_adapter->AddSubtitle(video.shader, 0., 5000000.); + m_adapter->AddSubtitle(video.render, 0., 5000000.); m_adapter->AddSubtitle(render.renderFlags, 0., 5000000.); m_adapter->AddSubtitle(render.videoOutput, 0., 5000000.); } diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/DXVAHD.h b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/DXVAHD.h index b91f314c45..6fb4e6a226 100644 --- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/DXVAHD.h +++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/DXVAHD.h @@ -123,6 +123,7 @@ public: static bool IsPQ10PassthroughSupported(const DXGI_FORMAT dxgi_format); static bool IsSuperResolutionSuitable(const VideoPicture& picture); void TryEnableVideoSuperResolution(); + bool IsVideoSuperResolutionEnabled() const { return m_superResolutionEnabled; } protected: bool ReInit(); diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererBase.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererBase.cpp index 64b894f64b..bc5d84d47e 100644 --- a/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererBase.cpp +++ b/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererBase.cpp @@ -724,5 +724,14 @@ DEBUG_INFO_VIDEO CRendererBase::GetDebugInfo(int idx) if (m_outputShader) info.shader = m_outputShader->GetDebugInfo(); + info.render = StringUtils::Format("Render method: {}", m_renderMethodName); + + std::string rmInfo = GetRenderMethodDebugInfo(); + if (!rmInfo.empty()) + { + info.render.append(", "); + info.render.append(rmInfo); + } + return info; } diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererBase.h b/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererBase.h index d4f401aaff..43797b42be 100644 --- a/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererBase.h +++ b/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererBase.h @@ -155,6 +155,7 @@ protected: virtual void CheckVideoParameters(); virtual void OnViewSizeChanged() {} virtual void OnOutputReset() {} + virtual std::string GetRenderMethodDebugInfo() const { return {}; } bool m_toneMapping = false; bool m_useDithering = false; @@ -188,4 +189,5 @@ protected: DXGI_HDR_METADATA_HDR10 m_lastHdr10 = {}; HDR_TYPE m_HdrType = HDR_TYPE::HDR_NONE_SDR; bool m_AutoSwitchHDR = false; + std::string m_renderMethodName; }; diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererDXVA.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererDXVA.cpp index 4c073816af..e1031987dd 100644 --- a/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererDXVA.cpp +++ b/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererDXVA.cpp @@ -110,6 +110,11 @@ void CRendererDXVA::GetWeight(std::map<RenderMethod, int>& weights, const VideoP weights[RENDER_DXVA] = weight; } +CRendererDXVA::CRendererDXVA(CVideoSettings& videoSettings) : CRendererHQ(videoSettings) +{ + m_renderMethodName = "DXVA"; +} + CRenderInfo CRendererDXVA::GetRenderInfo() { auto info = __super::GetRenderInfo(); @@ -296,6 +301,16 @@ CRenderBuffer* CRendererDXVA::CreateBuffer() return new CRenderBufferImpl(m_format, m_sourceWidth, m_sourceHeight); } +std::string CRendererDXVA::GetRenderMethodDebugInfo() const +{ + if (m_processor && DX::Windowing()->SupportsVideoSuperResolution()) + { + return StringUtils::Format("Video Super Resolution: {}", + m_processor->IsVideoSuperResolutionEnabled() ? "requested" : "OFF"); + } + return {}; +} + CRendererDXVA::CRenderBufferImpl::CRenderBufferImpl(AVPixelFormat av_pix_format, unsigned width, unsigned height) : CRenderBuffer(av_pix_format, width, height) { diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererDXVA.h b/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererDXVA.h index 0eed9503dc..ea67e7b5f6 100644 --- a/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererDXVA.h +++ b/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererDXVA.h @@ -37,11 +37,12 @@ public: static void GetWeight(std::map<RenderMethod, int>& weights, const VideoPicture& picture); protected: - explicit CRendererDXVA(CVideoSettings& videoSettings) : CRendererHQ(videoSettings) {} + explicit CRendererDXVA(CVideoSettings& videoSettings); void CheckVideoParameters() override; void RenderImpl(CD3DTexture& target, CRect& sourceRect, CPoint(&destPoints)[4], uint32_t flags) override; CRenderBuffer* CreateBuffer() override; + virtual std::string GetRenderMethodDebugInfo() const; private: void FillBuffersSet(CRenderBuffer* (&buffers)[8]); diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererShaders.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererShaders.cpp index 32bce25f96..9e869404a6 100644 --- a/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererShaders.cpp +++ b/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererShaders.cpp @@ -71,6 +71,11 @@ void CRendererShaders::GetWeight(std::map<RenderMethod, int>& weights, const Vid weights[RENDER_PS] = weight; } +CRendererShaders::CRendererShaders(CVideoSettings& videoSettings) : CRendererHQ(videoSettings) +{ + m_renderMethodName = "Pixel Shaders"; +} + bool CRendererShaders::Supports(ESCALINGMETHOD method) const { if (method == VS_SCALINGMETHOD_LINEAR) diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererShaders.h b/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererShaders.h index af4d677aae..fc640d3b83 100644 --- a/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererShaders.h +++ b/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererShaders.h @@ -39,7 +39,7 @@ public: static void GetWeight(std::map<RenderMethod, int>& weights, const VideoPicture& picture); protected: - explicit CRendererShaders(CVideoSettings& videoSettings) : CRendererHQ(videoSettings) {} + explicit CRendererShaders(CVideoSettings& videoSettings); void RenderImpl(CD3DTexture& target, CRect& sourceRect, CPoint(&destPoints)[4], uint32_t flags) override; void CheckVideoParameters() override; void UpdateVideoFilters() override; diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererSoftware.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererSoftware.cpp index 7bc80a178d..0f1b9279d2 100644 --- a/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererSoftware.cpp +++ b/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererSoftware.cpp @@ -39,6 +39,11 @@ void CRendererSoftware::GetWeight(std::map<RenderMethod, int>& weights, const Vi weights[RENDER_SW] = weight; } +CRendererSoftware::CRendererSoftware(CVideoSettings& videoSettings) : CRendererBase(videoSettings) +{ + m_renderMethodName = "Software"; +} + CRendererSoftware::~CRendererSoftware() { if (m_sw_scale_ctx) diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererSoftware.h b/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererSoftware.h index fde19e7d6f..165798b933 100644 --- a/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererSoftware.h +++ b/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererSoftware.h @@ -28,7 +28,7 @@ public: static void GetWeight(std::map<RenderMethod, int>& weights, const VideoPicture& picture); protected: - explicit CRendererSoftware(CVideoSettings& videoSettings) : CRendererBase(videoSettings) {} + explicit CRendererSoftware(CVideoSettings& videoSettings); CRenderBuffer* CreateBuffer() override; void RenderImpl(CD3DTexture& target, CRect& sourceRect, CPoint(&destPoints)[4], uint32_t flags) override; void FinalOutput(CD3DTexture& source, CD3DTexture& target, const CRect& src, const CPoint(&destPoints)[4]) override; |