dolphin/Source/Core/VideoCommon
Ryan Houdek 6d4867e36a Fixes missing objects on Adreno hardware.
This particular bug from our friends over at Qualcomm manifests itself due to our alpha testing code having a conditional if statement in it.
This is a fairly recent breakage this time around, it was introduced in the v95 driver which comes with Android 5.0 on the Nexus 5.

So to break this issue down; In our alpha testing code we have two comparisons that happen and if they are true we will continue rendering, but if
they aren't true we do an early discard and return. This is summed up with a fairly simple if statement.

if (!(condition_1 <logic op> condition_2)) { /* discard and return */ }

This particular issue isn't actually due to the conditions within the if statement, but the negation of the result. This is the particular issue that
causes Qualcomm to fall flat on its face while doing so.

I've got two simple test cases that demonstrate this.
Non-working: http://hastebin.com/evugohixov.avrasm
Working: http://hastebin.com/afimesuwen.avrasm

As one can see, the disassembled output between the two shaders is different even though in reality it should have the same visual result.

I'm currently writing up a simple test program for Qualcomm to enjoy, since they will be asking for one when I tell them about the bug.
It will be tracked in our video driver failure spreadsheet along with the others.
2014-10-29 06:21:03 -05:00
..
AVIDump.cpp Fix timing of AVI files dumped on Linux 2014-10-23 23:34:38 +02:00
AVIDump.h Proper Audio/Video Dumping 2014-10-09 00:06:04 -04:00
BoundingBox.cpp Make some variables static (should probably adjust for coding style too, but I'm not the one who merged code with bad style...) 2014-10-16 17:03:37 -04:00
BoundingBox.h Reimplement Bounding Box calculation using the software renderer. 2014-10-10 12:27:06 +01:00
BPFunctions.cpp Include CommonTypes.h instead of Common.h. 2014-09-08 15:39:58 -04:00
BPFunctions.h Remove some unnecessary semicolons 2014-09-11 13:05:31 -04:00
BPMemory.cpp Include CommonTypes.h instead of Common.h. 2014-09-08 15:39:58 -04:00
BPMemory.h Merge pull request #1308 from kayru/shader_generator_write_opt 2014-10-20 17:15:53 +11:00
BPStructs.cpp Remove old (and now incorrect) error checking code. 2014-10-29 08:53:53 +13:00
BPStructs.h Add the 'desynced GPU thread' mode. 2014-09-28 21:34:29 -04:00
CMakeLists.txt Fix linux build and various warnings. 2014-10-10 12:28:13 +01:00
CommandProcessor.cpp Remove useless STACKALIGN macro. 2014-09-30 01:42:47 -04:00
CommandProcessor.h Add the 'desynced GPU thread' mode. 2014-09-28 21:34:29 -04:00
ConstantManager.h Add missing includes where headers depend on other headers having been included first. 2014-10-21 21:22:16 -04:00
CPMemory.cpp Changes to allow LoadCPReg to work in a preprocess mode which affects a separate state. 2014-09-28 21:25:06 -04:00
CPMemory.h Changes to allow LoadCPReg to work in a preprocess mode which affects a separate state. 2014-09-28 21:25:06 -04:00
DataReader.h Add missing includes where headers depend on other headers having been included first. 2014-10-21 21:22:16 -04:00
Debugger.cpp Core: Remove UpdateFPSDisplay 2014-08-19 10:05:58 -04:00
Debugger.h Remove some unnecessary semicolons 2014-09-11 13:05:31 -04:00
DriverDetails.cpp Change driver details to reflect Qualcomm's changes with their v95 driver. 2014-10-18 02:50:57 -05:00
DriverDetails.h Change driver details to reflect Qualcomm's changes with their v95 driver. 2014-10-18 02:50:57 -05:00
Fifo.cpp VideoCommon: Silence -Wmaybe-uninitialized warnings. 2014-09-30 16:14:18 -04:00
Fifo.h Fifo: Fix tab/space mismatches 2014-10-06 20:04:57 -04:00
FPSCounter.cpp FPSCounter: Initialize members. 2014-07-26 14:37:18 +02:00
FPSCounter.h FPSCounter: Remove redundant destructor. 2014-07-18 12:49:40 +02:00
FramebufferManagerBase.cpp Change a bunch of reference function arguments to pointers. 2014-10-02 03:00:33 -04:00
FramebufferManagerBase.h OGL: force enable postprocessing 2014-10-23 00:21:52 +02:00
HiresTextures.cpp Allow custom textures to load from unicode paths. 2014-09-22 12:51:30 -04:00
HiresTextures.h Remove some unnecessary semicolons 2014-09-11 13:05:31 -04:00
ImageWrite.cpp VideoCommon: Clean up brace placements 2014-08-30 18:06:45 -04:00
ImageWrite.h Include CommonTypes.h instead of Common.h. 2014-09-08 15:39:58 -04:00
IndexGenerator.cpp Include CommonTypes.h instead of Common.h. 2014-09-08 15:39:58 -04:00
IndexGenerator.h Video backends: warn on usage of GL_DRAW_QUADS_2. 2014-05-17 11:55:32 -07:00
LightingShaderGen.h LightingShader: hard code const variable 2014-06-19 16:46:53 +02:00
LookUpTables.h Include CommonTypes.h instead of Common.h. 2014-09-08 15:39:58 -04:00
MainBase.cpp Add a central variable g_want_determinism which controls whether to try to make things deterministic. 2014-09-28 21:34:31 -04:00
MainBase.h Unify three types of non-FIFO requests to the GPU thread around Common::Event and Common::Flag. 2014-08-26 12:43:39 -04:00
NativeVertexFormat.h Add missing includes where headers depend on other headers having been included first. 2014-10-21 21:22:16 -04:00
OnScreenDisplay.cpp Include CommonTypes.h instead of Common.h. 2014-09-08 15:39:58 -04:00
OnScreenDisplay.h Add missing includes where headers depend on other headers having been included first. 2014-10-21 21:22:16 -04:00
OpcodeDecoding.cpp Add the 'desynced GPU thread' mode. 2014-09-28 21:34:29 -04:00
OpcodeDecoding.h Add missing includes where headers depend on other headers having been included first. 2014-10-21 21:22:16 -04:00
PerfQueryBase.cpp clang-modernize -use-nullptr 2014-03-09 21:14:26 +01:00
PerfQueryBase.h Convert all includes to relative paths. 2014-02-18 02:19:10 -05:00
PixelEngine.cpp Get buildbot to compile. 2014-10-10 12:28:15 +01:00
PixelEngine.h Reimplement Bounding Box calculation using the software renderer. 2014-10-10 12:27:06 +01:00
PixelShaderGen.cpp Fixes missing objects on Adreno hardware. 2014-10-29 06:21:03 -05:00
PixelShaderGen.h LightingShader: hard code const variable 2014-06-19 16:46:53 +02:00
PixelShaderManager.cpp GPU: Only load the relevant color components upon writes to the tev color registers. 2014-09-21 10:38:22 +02:00
PixelShaderManager.h GPU: Only load the relevant color components upon writes to the tev color registers. 2014-09-21 10:38:22 +02:00
PostProcessing.cpp Revert "Catch broken configurations inside of the Post Processing shaders." 2014-08-25 14:33:41 +02:00
PostProcessing.h OGL: force enable postprocessing 2014-10-23 00:21:52 +02:00
RenderBase.cpp Move bDumpFrames to SConfig (and it's references) 2014-10-12 23:56:16 -04:00
RenderBase.h Change a bunch of reference function arguments to pointers. 2014-10-02 03:00:33 -04:00
sfont.inc VideoCommon: Start putting common texture decoding code in TextureDecoder_Common 2014-09-04 18:36:53 -07:00
ShaderGenCommon.h Use pointers instead of references in GetUidData to avoid the undefined behavior of *(T *)nullptr (ewwww) 2014-10-21 21:20:05 -04:00
Statistics.cpp Statistics: Reformat stats string 2014-06-27 09:36:50 +02:00
Statistics.h VideoCommon: remove unused stats 2014-06-27 09:35:26 +02:00
TextureCacheBase.cpp Change a bunch of reference function arguments to pointers. 2014-10-02 03:00:33 -04:00
TextureCacheBase.h Change a bunch of reference function arguments to pointers. 2014-10-02 03:00:33 -04:00
TextureConversionShader.cpp Rename Log2 and add IsPow2 to MathUtils for future use 2014-09-08 20:15:45 -07:00
TextureConversionShader.h Include CommonTypes.h instead of Common.h. 2014-09-08 15:39:58 -04:00
TextureDecoder.h Add missing includes where headers depend on other headers having been included first. 2014-10-21 21:22:16 -04:00
TextureDecoder_Common.cpp Fix build failing when disabling precompiled headers. 2014-09-19 18:17:51 -04:00
TextureDecoder_Generic.cpp Fix build failing when disabling precompiled headers. 2014-09-19 18:17:51 -04:00
TextureDecoder_x64.cpp Fix build failing when disabling precompiled headers. 2014-09-19 18:17:51 -04:00
VertexLoader.cpp Remove setting to enable or disable Bounding Box calculation. 2014-10-15 19:02:54 +01:00
VertexLoader.h Switch to an unordered_map as a micro-optimization. 2014-09-28 21:23:29 -04:00
VertexLoader_Color.cpp Mechanical changes to move most CP state to a struct rather than separate globals. 2014-09-28 21:23:29 -04:00
VertexLoader_Color.h Add missing includes where headers depend on other headers having been included first. 2014-10-21 21:22:16 -04:00
VertexLoader_Normal.cpp Mechanical changes to move most CP state to a struct rather than separate globals. 2014-09-28 21:23:29 -04:00
VertexLoader_Normal.h Add missing includes where headers depend on other headers having been included first. 2014-10-21 21:22:16 -04:00
VertexLoader_Position.cpp Mechanical changes to move most CP state to a struct rather than separate globals. 2014-09-28 21:23:29 -04:00
VertexLoader_Position.h Add missing includes where headers depend on other headers having been included first. 2014-10-21 21:22:16 -04:00
VertexLoader_TextCoord.cpp Mechanical changes to move most CP state to a struct rather than separate globals. 2014-09-28 21:23:29 -04:00
VertexLoader_TextCoord.h VertexLoader: Change VtxDesc to use u64 instead of u32 2014-09-01 11:18:02 +02:00
VertexLoaderManager.cpp Changes to allow LoadCPReg to work in a preprocess mode which affects a separate state. 2014-09-28 21:25:06 -04:00
VertexLoaderManager.h Changes to allow LoadCPReg to work in a preprocess mode which affects a separate state. 2014-09-28 21:25:06 -04:00
VertexManagerBase.cpp Added a xf.numtexgen != bp.numtextgen error log if there is a mismatch detected. 2014-09-24 10:46:09 +10:00
VertexManagerBase.h Add missing includes where headers depend on other headers having been included first. 2014-10-21 21:22:16 -04:00
VertexShaderGen.cpp Use pointers instead of references in GetUidData to avoid the undefined behavior of *(T *)nullptr (ewwww) 2014-10-21 21:20:05 -04:00
VertexShaderGen.h VideoCommon: Remove some unused constants from VertexShaderGen.h. 2014-07-05 23:46:07 -04:00
VertexShaderManager.cpp Mechanical changes to move most CP state to a struct rather than separate globals. 2014-09-28 21:23:29 -04:00
VertexShaderManager.h Convert all includes to relative paths. 2014-02-18 02:19:10 -05:00
VideoBackendBase.cpp Migrate global init stuff into UICommon. 2014-10-05 20:47:37 -04:00
VideoBackendBase.h Add a central variable g_want_determinism which controls whether to try to make things deterministic. 2014-09-28 21:34:31 -04:00
VideoCommon.h Include CommonTypes.h instead of Common.h. 2014-09-08 15:39:58 -04:00
VideoCommon.vcxproj Reimplement Bounding Box calculation using the software renderer. 2014-10-10 12:27:06 +01:00
VideoCommon.vcxproj.filters Reimplement Bounding Box calculation using the software renderer. 2014-10-10 12:27:06 +01:00
VideoConfig.cpp Moved Input Display to Movie Menu 2014-10-17 21:08:34 -04:00
VideoConfig.h Moved Input Display to Movie Menu 2014-10-17 21:08:34 -04:00
VideoState.cpp Get buildbot to compile. 2014-10-10 12:28:15 +01:00
VideoState.h Convert some more header inclusions into forward declarations 2014-07-29 20:55:07 -04:00
XFMemory.cpp Video backends: mass-replace "xfregs" with "xfmem". 2014-05-16 18:58:07 -07:00
XFMemory.h Add the 'desynced GPU thread' mode. 2014-09-28 21:34:29 -04:00
XFStructs.cpp Add the 'desynced GPU thread' mode. 2014-09-28 21:34:29 -04:00
XFStructs.h Convert all includes to relative paths. 2014-02-18 02:19:10 -05:00