From 7acc64eb0a9102e4a10468e1917dee679049da07 Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Tue, 7 Jan 2014 07:56:30 -0600 Subject: [PATCH] [Android] Reenable the bug for dynamic UBO array member accesses. 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. --- Source/Core/VideoCommon/DriverDetails.cpp | 2 +- Source/Core/VideoCommon/DriverDetails.h | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Source/Core/VideoCommon/DriverDetails.cpp b/Source/Core/VideoCommon/DriverDetails.cpp index 4ab09b065f..3a3aa3b179 100644 --- a/Source/Core/VideoCommon/DriverDetails.cpp +++ b/Source/Core/VideoCommon/DriverDetails.cpp @@ -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}, diff --git a/Source/Core/VideoCommon/DriverDetails.h b/Source/Core/VideoCommon/DriverDetails.h index cd4644be2d..721447b979 100644 --- a/Source/Core/VideoCommon/DriverDetails.h +++ b/Source/Core/VideoCommon/DriverDetails.h @@ -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