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 11, 2024
1 parent e8ff7c7 commit 0b3f523
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 9 deletions.
15 changes: 11 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,13 @@ 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_bShadersNeedUpdate = true;
}
}

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

Expand Down Expand Up @@ -157,7 +164,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 +252,7 @@ void CRPBaseRenderer::MarkDirty()
*/
void CRPBaseRenderer::Updateshaders()
{
if (m_shadersNeedUpdate)
if (m_bShadersNeedUpdate)
{
if (m_shaderPreset)
{
Expand All @@ -263,7 +270,7 @@ void CRPBaseRenderer::Updateshaders()
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 @@ -116,7 +116,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 @@ -335,7 +335,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 @@ -302,7 +302,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 0b3f523

Please sign in to comment.