Skip to content

Commit

Permalink
[Windows] Add render method information to debug OSD
Browse files Browse the repository at this point in the history
  • Loading branch information
CrystalP committed Jun 10, 2023
1 parent 5b79de7 commit a3e939f
Show file tree
Hide file tree
Showing 11 changed files with 43 additions and 3 deletions.
1 change: 1 addition & 0 deletions xbmc/cores/VideoPlayer/VideoRenderers/DebugInfo.h
Expand Up @@ -24,6 +24,7 @@ struct DEBUG_INFO_VIDEO
std::string metaPrim;
std::string metaLight;
std::string shader;
std::string shader2;
};

struct DEBUG_INFO_RENDER
Expand Down
1 change: 1 addition & 0 deletions xbmc/cores/VideoPlayer/VideoRenderers/DebugRenderer.cpp
Expand Up @@ -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.shader2, 0., 5000000.);
m_adapter->AddSubtitle(render.renderFlags, 0., 5000000.);
m_adapter->AddSubtitle(render.videoOutput, 0., 5000000.);
}
Expand Down
1 change: 1 addition & 0 deletions xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/DXVAHD.h
Expand Up @@ -123,6 +123,7 @@ class CProcessorHD : public ID3DResource
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();
Expand Down
Expand Up @@ -723,5 +723,14 @@ DEBUG_INFO_VIDEO CRendererBase::GetDebugInfo(int idx)
if (m_outputShader)
info.shader = m_outputShader->GetDebugInfo();

info.shader2 = StringUtils::Format("Render method: {}", m_renderMethodName);

std::string rmInfo = GetRenderMethodDebugInfo();
if (!rmInfo.empty())
{
info.shader2.append(", ");
info.shader2.append(rmInfo);
}

return info;
}
2 changes: 2 additions & 0 deletions xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererBase.h
Expand Up @@ -155,6 +155,7 @@ class CRendererBase
virtual void CheckVideoParameters();
virtual void OnViewSizeChanged() {}
virtual void OnOutputReset() {}
virtual std::string GetRenderMethodDebugInfo() const { return {}; }

bool m_toneMapping = false;
bool m_useDithering = false;
Expand Down Expand Up @@ -188,4 +189,5 @@ class CRendererBase
DXGI_HDR_METADATA_HDR10 m_lastHdr10 = {};
HDR_TYPE m_HdrType = HDR_TYPE::HDR_NONE_SDR;
bool m_AutoSwitchHDR = false;
std::string m_renderMethodName{"NA"};
};
15 changes: 15 additions & 0 deletions xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererDXVA.cpp
Expand Up @@ -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();
Expand Down Expand Up @@ -295,6 +300,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() ? "enabled" : "OFF");
}
return {};
}

CRendererDXVA::CRenderBufferImpl::CRenderBufferImpl(AVPixelFormat av_pix_format, unsigned width, unsigned height)
: CRenderBuffer(av_pix_format, width, height)
{
Expand Down
3 changes: 2 additions & 1 deletion xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererDXVA.h
Expand Up @@ -37,11 +37,12 @@ class CRendererDXVA : public CRendererHQ
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]);
Expand Down
Expand Up @@ -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)
Expand Down
Expand Up @@ -39,7 +39,7 @@ class CRendererShaders : public CRendererHQ
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;
Expand Down
Expand Up @@ -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)
Expand Down
Expand Up @@ -28,7 +28,7 @@ class CRendererSoftware : public CRendererBase
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;
Expand Down

0 comments on commit a3e939f

Please sign in to comment.