mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-28 16:49:58 -06:00
Videosoftware realxfb: Fixed a few bugs while testing Zelda: Collectors Edition
* Don't force a frame to be progressive if it's already progressive. * Don't assume the framebuffer will be 640 pixels wide * Remember to offset the Luma channel by 16.
This commit is contained in:
@ -225,19 +225,21 @@ void VideoSoftware::Video_EndField()
|
||||
return;
|
||||
}
|
||||
if (!g_SWVideoConfig.bHwRasterizer) {
|
||||
u32 xfbAddr = s_beginFieldArgs.xfbAddr;
|
||||
if (s_beginFieldArgs.field != FIELD_PROGRESSIVE) {
|
||||
// Force Progressive
|
||||
xfbAddr = VideoInterface::GetXFBAddressTop();
|
||||
|
||||
// Force Progressive
|
||||
u32 xfbAddr = VideoInterface::GetXFBAddressTop();
|
||||
|
||||
// All drivers make an assumption that the two fields are interleaved in the framebuffer
|
||||
// Give a warning if this isn't true.
|
||||
if (xfbAddr + 1280 != VideoInterface::GetXFBAddressBottom()) {
|
||||
WARN_LOG(VIDEO, "Feilds are not interleaved in XFB as expected.");
|
||||
// All drivers make an assumption that the two fields are interleaved in the framebuffer
|
||||
// Give a warning if this isn't true.
|
||||
if (xfbAddr + 1280 != VideoInterface::GetXFBAddressBottom()) {
|
||||
WARN_LOG(VIDEO, "Feilds are not interleaved in XFB as expected.");
|
||||
}
|
||||
}
|
||||
|
||||
EfbInterface::yuv422_packed *xfb = (EfbInterface::yuv422_packed *) Memory::GetPointer(xfbAddr);
|
||||
|
||||
SWRenderer::UpdateColorTexture(xfb);
|
||||
SWRenderer::UpdateColorTexture(xfb, s_beginFieldArgs.fbWidth, s_beginFieldArgs.fbHeight);
|
||||
}
|
||||
|
||||
// Idealy we would just move all the opengl contex stuff to the CPU thread, but this gets
|
||||
|
Reference in New Issue
Block a user