Skip to content

Commit

Permalink
Update shaders if buffer size has changed
Browse files Browse the repository at this point in the history
  • Loading branch information
KOPRajs committed Apr 16, 2024
1 parent a83764d commit 7a5a138
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 9 deletions.
21 changes: 17 additions & 4 deletions xbmc/cores/RetroPlayer/rendering/VideoRenderers/RPBaseRenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ CRPBaseRenderer::CRPBaseRenderer(const CRenderSettings& renderSettings,
: m_context(context),
m_bufferPool(std::move(bufferPool)),
m_renderSettings(renderSettings),
m_shadersNeedUpdate(true),
m_bShadersNeedUpdate(true),
m_bUseShaderPreset(false)
{
m_bufferPool->RegisterRenderer(this);
Expand Down Expand Up @@ -106,6 +106,15 @@ void CRPBaseRenderer::SetBuffer(IRenderBuffer* buffer)
{
if (m_renderBuffer != buffer)
{
// Check if buffer size has changed
if (m_renderBuffer != nullptr && buffer != nullptr) {
if (m_renderBuffer->GetWidth() != buffer->GetWidth() ||
m_renderBuffer->GetHeight() != buffer->GetHeight() ||
m_renderBuffer->GetFormat() != buffer->GetFormat()) {
m_bShadersNeedUpdate = true;
}
}

if (m_renderBuffer != nullptr)
m_renderBuffer->Release();

Expand Down Expand Up @@ -157,7 +166,7 @@ void CRPBaseRenderer::SetShaderPreset(const std::string& presetPath)
if (presetPath != m_renderSettings.VideoSettings().GetShaderPreset())
{
m_renderSettings.VideoSettings().SetShaderPreset(presetPath);
m_shadersNeedUpdate = true;
m_bShadersNeedUpdate = true;
}
}

Expand Down Expand Up @@ -245,7 +254,7 @@ void CRPBaseRenderer::MarkDirty()
*/
void CRPBaseRenderer::Updateshaders()
{
if (m_shadersNeedUpdate)
if (m_bShadersNeedUpdate)
{
if (m_shaderPreset)
{
Expand All @@ -255,15 +264,19 @@ void CRPBaseRenderer::Updateshaders()
__FUNCTION__);
return;
}

auto sourceWidth = m_renderBuffer->GetWidth();
auto sourceHeight = m_renderBuffer->GetHeight();

CLog::Log(LOGDEBUG, "{} - Video shader source size: {}x{}", __FUNCTION__,
sourceWidth, sourceHeight);

// We need to set this here because m_sourceRect isn't valid on init/pre-init
m_shaderPreset->SetVideoSize(sourceWidth, sourceHeight);
m_bUseShaderPreset =
m_shaderPreset->SetShaderPreset(m_renderSettings.VideoSettings().GetShaderPreset());
}
m_shadersNeedUpdate = false;
m_bShadersNeedUpdate = false;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ class CRPBaseRenderer
void Updateshaders();
std::unique_ptr<SHADER::IShaderPreset> m_shaderPreset;

bool m_shadersNeedUpdate;
bool m_bShadersNeedUpdate;
bool m_bUseShaderPreset;

private:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ void CRPRendererDMA::Render(uint8_t alpha)
SHADER::CShaderTextureGL target(*targetTexture);
if (!m_shaderPreset->RenderUpdate(destPoints, &source, &target))
{
m_shadersNeedUpdate = false;
m_bShadersNeedUpdate = false;
m_bUseShaderPreset = false;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -315,7 +315,7 @@ void CRPRendererOpenGL::Render(uint8_t alpha)
SHADER::CShaderTextureGL target(*targetTexture);
if (!m_shaderPreset->RenderUpdate(destPoints, &source, &target))
{
m_shadersNeedUpdate = false;
m_bShadersNeedUpdate = false;
m_bUseShaderPreset = false;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@ void CRPRendererOpenGLES::Render(uint8_t alpha)
SHADER::CShaderTextureGL target(*targetTexture);
if (!m_shaderPreset->RenderUpdate(destPoints, &source, &target))
{
m_shadersNeedUpdate = false;
m_bShadersNeedUpdate = false;
m_bUseShaderPreset = false;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ void CRPWinRenderer::Render(CD3DTexture& target)
m_targetTexture.SetTexture(target);
if (!m_shaderPreset->RenderUpdate(destPoints, renderBufferTarget, &m_targetTexture))
{
m_shadersNeedUpdate = false;
m_bShadersNeedUpdate = false;
m_bUseShaderPreset = false;
}
}
Expand Down

0 comments on commit 7a5a138

Please sign in to comment.