Handle VideoSoftware's present fallback better
Not a good idea to abuse bSupportsPostProcessing
This commit is contained in:
parent
26e00c3bb4
commit
f158ff300b
|
@ -29,6 +29,11 @@ bool NullGfx::IsHeadless() const
|
|||
return true;
|
||||
}
|
||||
|
||||
bool NullGfx::SupportsUtilityDrawing() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
std::unique_ptr<AbstractTexture> NullGfx::CreateTexture(const TextureConfig& config,
|
||||
[[maybe_unused]] std::string_view name)
|
||||
{
|
||||
|
|
|
@ -15,6 +15,7 @@ public:
|
|||
~NullGfx() override;
|
||||
|
||||
bool IsHeadless() const override;
|
||||
virtual bool SupportsUtilityDrawing() const override;
|
||||
|
||||
std::unique_ptr<AbstractTexture> CreateTexture(const TextureConfig& config,
|
||||
std::string_view name) override;
|
||||
|
|
|
@ -27,6 +27,11 @@ bool SWGfx::IsHeadless() const
|
|||
return m_window->IsHeadless();
|
||||
}
|
||||
|
||||
bool SWGfx::SupportsUtilityDrawing() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
std::unique_ptr<AbstractTexture> SWGfx::CreateTexture(const TextureConfig& config,
|
||||
[[maybe_unused]] std::string_view name)
|
||||
{
|
||||
|
|
|
@ -15,6 +15,7 @@ public:
|
|||
SWGfx(std::unique_ptr<SWOGLWindow> window);
|
||||
|
||||
bool IsHeadless() const override;
|
||||
virtual bool SupportsUtilityDrawing() const override;
|
||||
|
||||
std::unique_ptr<AbstractTexture> CreateTexture(const TextureConfig& config,
|
||||
std::string_view name) override;
|
||||
|
|
|
@ -59,6 +59,9 @@ public:
|
|||
|
||||
virtual bool IsHeadless() const = 0;
|
||||
|
||||
// Does the backend support drawing a UI or doing post-processing
|
||||
virtual bool SupportsUtilityDrawing() const { return true; }
|
||||
|
||||
virtual void SetPipeline(const AbstractPipeline* pipeline) {}
|
||||
virtual void SetScissorRect(const MathUtil::Rectangle<int>& rc) {}
|
||||
virtual void SetTexture(u32 index, const AbstractTexture* texture) {}
|
||||
|
|
|
@ -393,12 +393,6 @@ void Presenter::RenderXFBToScreen(const MathUtil::Rectangle<int>& target_rc,
|
|||
const AbstractTexture* source_texture,
|
||||
const MathUtil::Rectangle<int>& source_rc)
|
||||
{
|
||||
if (!g_ActiveConfig.backend_info.bSupportsPostProcessing)
|
||||
{
|
||||
g_gfx->ShowImage(source_texture, source_rc);
|
||||
return;
|
||||
}
|
||||
|
||||
if (g_ActiveConfig.stereo_mode == StereoMode::QuadBuffer &&
|
||||
g_ActiveConfig.backend_info.bUsesExplictQuadBuffering)
|
||||
{
|
||||
|
@ -463,6 +457,14 @@ void Presenter::Present()
|
|||
{
|
||||
m_last_xfb_id = m_xfb_entry->id;
|
||||
|
||||
if (!g_gfx->SupportsUtilityDrawing())
|
||||
{
|
||||
// Video Software doesn't support Drawing a UI or doing post-processing
|
||||
// So just Show the XFB
|
||||
g_gfx->ShowImage(m_xfb_entry->texture.get(), m_xfb_rect);
|
||||
return;
|
||||
}
|
||||
|
||||
// Since we use the common pipelines here and draw vertices if a batch is currently being
|
||||
// built by the vertex loader, we end up trampling over its pointer, as we share the buffer
|
||||
// with the loader, and it has not been unmapped yet. Force a pipeline flush to avoid this.
|
||||
|
|
Loading…
Reference in New Issue