Merge pull request #10 from Sonicadvance1/Fix-AdrenoBlitRotate
[Android] Fix Adreno v53 development drivers rotating framebuffer
This commit is contained in:
commit
23e64001dd
|
@ -1299,10 +1299,15 @@ void Renderer::Swap(u32 xfbAddr, u32 fbWidth, u32 fbHeight,const EFBRectangle& r
|
||||||
UpdateDrawRectangle(s_backbuffer_width, s_backbuffer_height);
|
UpdateDrawRectangle(s_backbuffer_width, s_backbuffer_height);
|
||||||
TargetRectangle flipped_trc = GetTargetRectangle();
|
TargetRectangle flipped_trc = GetTargetRectangle();
|
||||||
|
|
||||||
|
if (DriverDetails::HasBug(DriverDetails::BUG_ROTATEDFRAMEBUFFER))
|
||||||
|
{
|
||||||
|
std::swap(flipped_trc.left, flipped_trc.right);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
// Flip top and bottom for some reason; TODO: Fix the code to suck less?
|
// Flip top and bottom for some reason; TODO: Fix the code to suck less?
|
||||||
int tmp = flipped_trc.top;
|
std::swap(flipped_trc.top, flipped_trc.bottom);
|
||||||
flipped_trc.top = flipped_trc.bottom;
|
}
|
||||||
flipped_trc.bottom = tmp;
|
|
||||||
|
|
||||||
GL_REPORT_ERRORD();
|
GL_REPORT_ERRORD();
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,7 @@ namespace DriverDetails
|
||||||
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, -1, BUG_BROKENSWAP, -1.0, 46.0, true},
|
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, -1, BUG_BROKENSWAP, -1.0, 46.0, true},
|
||||||
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, -1, BUG_BROKENBUFFERSTREAM, -1.0, -1.0, true},
|
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, -1, BUG_BROKENBUFFERSTREAM, -1.0, -1.0, true},
|
||||||
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, -1, BUG_BROKENTEXTURESIZE, -1.0, -1.0, true},
|
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, -1, BUG_BROKENTEXTURESIZE, -1.0, -1.0, true},
|
||||||
|
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, -1, BUG_ROTATEDFRAMEBUFFER, 53.0, -1.0, true},
|
||||||
{OS_ALL, VENDOR_ARM, DRIVER_ARM_T6XX, -1, BUG_BROKENBUFFERSTREAM, -1.0, -1.0, true},
|
{OS_ALL, VENDOR_ARM, DRIVER_ARM_T6XX, -1, BUG_BROKENBUFFERSTREAM, -1.0, -1.0, true},
|
||||||
{OS_ALL, VENDOR_MESA, DRIVER_NOUVEAU, -1, BUG_BROKENUBO, 900, 916, true},
|
{OS_ALL, VENDOR_MESA, DRIVER_NOUVEAU, -1, BUG_BROKENUBO, 900, 916, true},
|
||||||
{OS_ALL, VENDOR_MESA, DRIVER_R600, -1, BUG_BROKENUBO, 900, 913, true},
|
{OS_ALL, VENDOR_MESA, DRIVER_R600, -1, BUG_BROKENUBO, 900, 913, true},
|
||||||
|
|
|
@ -165,6 +165,15 @@ namespace DriverDetails
|
||||||
// TODO: some windows AMD driver/gpu combination seems also affected
|
// TODO: some windows AMD driver/gpu combination seems also affected
|
||||||
// but as they all support pinned memory, it doesn't matter
|
// but as they all support pinned memory, it doesn't matter
|
||||||
BUG_BROKENUNSYNCMAPPING,
|
BUG_BROKENUNSYNCMAPPING,
|
||||||
|
// Bug: Adreno now rotates the framebuffer on blit a full 180 degrees
|
||||||
|
// Affected devices: Adreno
|
||||||
|
// Started Version: v53 (dev drivers)
|
||||||
|
// Ended Version: -1
|
||||||
|
// Qualcomm is a super pro company that has recently updated their development drivers
|
||||||
|
// These drivers are available to the Nexus 5 and report as v53
|
||||||
|
// Qualcomm in their infinite wisdom thought it was a good idea to rotate the framebuffer 180 degrees on glBlit
|
||||||
|
// This bug allows us to work around that rotation by rotating it the right way around again.
|
||||||
|
BUG_ROTATEDFRAMEBUFFER,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Initializes our internal vendor, device family, and driver version
|
// Initializes our internal vendor, device family, and driver version
|
||||||
|
|
Loading…
Reference in New Issue