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
Conversation
c944dd1
to
b1c4cc4
Compare
That reminds me, what about that issue I had with my Ardreno drivers on my
|
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.
b1c4cc4
to
6d4867e
Compare
really? Are they as bad? |
" ERROR: 0:91: '<<' : wrong operand types no operation '<<' exists that This could be fixed by having some fallback bitshift each component
|
Fixes missing objects on Adreno hardware.
The main problem with working around that particular issue is that Qualcomm has the bug fixed in later driver versions and the line that does these vector shifts is quite dense with a couple of shifts on each one. |
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 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.