Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes missing objects on Adreno hardware. #1434

Merged
merged 1 commit into from
Oct 29, 2014

Commits on Oct 29, 2014

  1. 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.
    Sonicadvance1 committed Oct 29, 2014
    Configuration menu
    Copy the full SHA
    6d4867e View commit details
    Browse the repository at this point in the history