Video Backends: Remove the right of the xfb region for games where the

VI stride does not match the VI width
This commit is contained in:
iwubcode
2017-09-29 00:31:08 -05:00
parent a129a53e56
commit 4964fc87ae
10 changed files with 31 additions and 27 deletions

View File

@ -90,7 +90,7 @@ void SWOGLWindow::PrintText(const std::string& text, int x, int y, u32 color)
m_text.push_back({text, x, y, color});
}
void SWOGLWindow::ShowImage(AbstractTexture* image, float aspect)
void SWOGLWindow::ShowImage(AbstractTexture* image, const EFBRectangle& xfb_region)
{
SW::SWTexture* sw_image = static_cast<SW::SWTexture*>(image);
GLInterface->Update(); // just updates the render window position and the backbuffer size
@ -103,6 +103,8 @@ void SWOGLWindow::ShowImage(AbstractTexture* image, float aspect)
glActiveTexture(GL_TEXTURE9);
glBindTexture(GL_TEXTURE_2D, m_image_texture);
// TODO: Apply xfb_region
glPixelStorei(GL_UNPACK_ALIGNMENT, 4); // 4-byte pixel alignment
glPixelStorei(GL_UNPACK_ROW_LENGTH, sw_image->GetConfig().width);

View File

@ -9,6 +9,7 @@
#include <vector>
#include "Common/CommonTypes.h"
#include "VideoCommon/VideoCommon.h"
class AbstractTexture;
@ -23,7 +24,7 @@ public:
void PrintText(const std::string& text, int x, int y, u32 color);
// Image to show, will be swapped immediately
void ShowImage(AbstractTexture* image, float aspect);
void ShowImage(AbstractTexture* image, const EFBRectangle& xfb_region);
int PeekMessages();

View File

@ -43,13 +43,13 @@ void SWRenderer::RenderText(const std::string& pstr, int left, int top, u32 colo
}
// Called on the GPU thread
void SWRenderer::SwapImpl(AbstractTexture* texture, const EFBRectangle& rc, u64 ticks, float Gamma)
void SWRenderer::SwapImpl(AbstractTexture* texture, const EFBRectangle& xfb_region, u64 ticks, float Gamma)
{
OSD::DoCallbacks(OSD::CallbackType::OnFrame);
DrawDebugText();
SWOGLWindow::s_instance->ShowImage(texture, 1.0);
SWOGLWindow::s_instance->ShowImage(texture, xfb_region);
UpdateActiveConfig();
}