Skip to content

Commit

Permalink
[Android] Reenable the bug for dynamic UBO array member accesses.
Browse files Browse the repository at this point in the history
Some information on this bug since this isn't quite true.
Seemingly with the v53 driver, Qualcomm has actually fixed this bug. So we can dynamically access UBO array members.
The issue that is cropping up is actually converting our attribute 'fposmtx' to an integer.
int posmtx = int(fpostmtx);
This line causes some seemingly garbage values to enter in to the posmtx variable.
Not sure exactly why it is failing, probably them just not actually converting the float to an integer and just handling the float directly as a integer.
So the bug is going to stay active with Qualcomm devices until we convert this vertex attribute from a float to a integer.
  • Loading branch information
Sonicadvance1 committed Jan 7, 2014
1 parent 55717ed commit 7acc64e
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 1 deletion.
2 changes: 1 addition & 1 deletion Source/Core/VideoCommon/DriverDetails.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ namespace DriverDetails
// This is a list of all known bugs for each vendor
// We use this to check if the device and driver has a issue
BugInfo m_known_bugs[] = {
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, -1, BUG_NODYNUBOACCESS, 14.0, 46.0, true},
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, -1, BUG_NODYNUBOACCESS, 14.0, -1.0, true},
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, -1, BUG_BROKENCENTROID, 14.0, 46.0, true},
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, -1, BUG_BROKENINFOLOG, -1.0, 46.0, true},
{OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, -1, BUG_ANNIHILATEDUBOS, 41.0, 46.0, true},
Expand Down
5 changes: 5 additions & 0 deletions Source/Core/VideoCommon/DriverDetails.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,11 @@ namespace DriverDetails
// Ended Version: 53
// Accessing UBO array members dynamically causes the Adreno shader compiler to crash
// Errors out with "Internal Error"
// With v53 video drivers, dynamic member access works. But there is a new bug
// The only time we access UBO array members dynamically is with a conversion
// int posmtx = int(fposmtx);
// This line will will posmtx with a seemingly random number and cause issues.
// Bug still active with v53 until we switch to using integers for the fposmtx attribute
BUG_NODYNUBOACCESS = 0,
// Bug: Centroid is broken in shaders
// Affected devices: Qualcomm/Adreno
Expand Down

0 comments on commit 7acc64e

Please sign in to comment.