mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-14 21:37:52 -07:00
Software: Fix bad backbuffer size
MAX_XFB_WIDTH/HEIGHT are the largest XFB sizes seen in practice, but do not make sense to use for the backbuffer size, which should be the size of the window. The old code created screenshots with a size of 720x540 on NTSC games when "Dump Frames at Internal Resolution" is unchecked; now, the window size is used.
This commit is contained in:
parent
51671921c4
commit
4a4244f04d
@ -27,7 +27,8 @@
|
||||
namespace SW
|
||||
{
|
||||
SWRenderer::SWRenderer(std::unique_ptr<SWOGLWindow> window)
|
||||
: ::Renderer(static_cast<int>(MAX_XFB_WIDTH), static_cast<int>(MAX_XFB_HEIGHT), 1.0f,
|
||||
: ::Renderer(static_cast<int>(std::max(window->GetContext()->GetBackBufferWidth(), 1u)),
|
||||
static_cast<int>(std::max(window->GetContext()->GetBackBufferHeight(), 1u)), 1.0f,
|
||||
AbstractTextureFormat::RGBA8),
|
||||
m_window(std::move(window))
|
||||
{
|
||||
@ -56,6 +57,18 @@ SWRenderer::CreateFramebuffer(AbstractTexture* color_attachment, AbstractTexture
|
||||
static_cast<SWTexture*>(depth_attachment));
|
||||
}
|
||||
|
||||
void SWRenderer::BindBackbuffer(const ClearColor& clear_color)
|
||||
{
|
||||
// Look for framebuffer resizes
|
||||
if (!m_surface_resized.TestAndClear())
|
||||
return;
|
||||
|
||||
GLContext* context = m_window->GetContext();
|
||||
context->Update();
|
||||
m_backbuffer_width = context->GetBackBufferWidth();
|
||||
m_backbuffer_height = context->GetBackBufferHeight();
|
||||
}
|
||||
|
||||
class SWShader final : public AbstractShader
|
||||
{
|
||||
public:
|
||||
|
@ -27,6 +27,8 @@ public:
|
||||
std::unique_ptr<AbstractFramebuffer>
|
||||
CreateFramebuffer(AbstractTexture* color_attachment, AbstractTexture* depth_attachment) override;
|
||||
|
||||
void BindBackbuffer(const ClearColor& clear_color = {}) override;
|
||||
|
||||
std::unique_ptr<AbstractShader> CreateShaderFromSource(ShaderStage stage,
|
||||
std::string_view source) override;
|
||||
std::unique_ptr<AbstractShader> CreateShaderFromBinary(ShaderStage stage, const void* data,
|
||||
|
Loading…
Reference in New Issue
Block a user