-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
[Report] Hardware Tessellation test on android failed. #9234
Comments
you can install aLogCat to view debug logging |
@zminhquanz Thank you for the information. I'll try it later. |
Hmm, I don't know how to use this app... |
@xebra enable debug logging in tools -> developer |
i don't know how to tell you to understand , wait @hrydgard going to tell this |
On android everything(this means other apps as well) logs to one place and there are apps which you can use to read it directly from your phone or it can also be read on pc. Last time I had to check a shader I used "CatLog" app, note you don't have to(nor want to!) change any logging options in ppsspp to debug a shader, debug log will not give you anything more since shader errors are very verbose already and would just spam the log. Just run ppsspp, run your test app to fail a shader compilation / hardware transform, then pause, press home button and launch the CatLog app to read logs, you can pause logging in it and filter the results for NativeApp which will show you ppsspp logs hiding everything else and hopefully expose some useful errors. General problems with shaders on android are dumb drivers with very poor compilers. This means 3 things:
Checking http://report.ppsspp.org/logs/kind/39 newer errors seems to be related to tesselation. And ugh lots of them, but most seems to be just dumb int/float conversion/overload functions which is exactly something that desktops drivers will interpret correctly, but doesn't really follow glsl specs where you have to cast ints into floats etc. by hand for example if function expects (float, float), something like (1, 2) is incorrect, but interpreted on pc's just fine, for mobiles we have to (float(1), float(2)). |
Or just 1.0, 2.0. Looks nicer than float(1) etc. |
Yeah, I was giving an example in case of variables.:3 |
@LunaMoo Thank you so much for your explain with details. I understood a little about android system.
Hmm, I think it's very hard to fix them. If I could fix it on my device, but others... BTW, I'm implementing this on DX9 but still something a little buggy... |
If necessary we can just turn off the feature on Android, or whitelist certain devices. |
Yeah, you right. |
Would be much easier if there was a tool that simulate the awfulness of mobile gpu drivers on pc. And yeah I would be for just disabling it there as well. People are excited by "hardware tesselation" for various reasons primary being the screenshots comparison showing fps difference and missunderstanding caused by it. This isn't free speedup, it shifts heavy work from cpu to a shader - really nice for most typical pc's, gles devices however are nowhere close:]. Edit: I was just checking the vertex shader generator code and shouldn't it check for and enable GL_EXT_gpu_shader4? Most of that code seems to need it, we could also maybe disable it for all devices that doesn't support it. There's also gl_InstanceID which requires minimum gles 3.00. |
Work great in my galaxy S6 |
So you actually checked game which uses this code or the test homebrew? Meanwhile I found a way to reproduce the problem on pc;p linux under virtualbox - yay for poor gpu/drivers. Log from test homebrew:
So mod() fails and expects floats since as with my edit above integer math requires GL_EXT_gpu_shader4, so that's one thing we need to check and enable. Not doing that could probably be the reason why it failed for the person with nvidia gpu on win 10 reporting in merge thread. Another problem is gl_InstanceID which requires gles 3.00 or if someone really cares, it could also work on older iOS with some apple stuff, probably not worth. Guess both of those could be supported on new higher end smartphones like mentioned GS6. |
New build (1.3-388) tested, break some textures in NFS MW and bornout legend. |
In mesa3d intel driver under linux Workaround fix needed Force Compatibility core because by default run 130 GLSL unsuported for gl_instanceID https://www.opengl.org/sdk/docs/man/html/gl_InstanceID.xhtml export MESA_GL_VERSION_OVERRIDE=3.3COMPAT That function only avaible GLSL 140 and higher in the Opengl Desktop |
@LunaMoo Your cooperation is really appreciated.
I didn't know that, I'll try to check it out.
Ah, yes, I forgot it.
I was thinking similar situation like Android emulation on Android Studio or something but I didn't realize that. Linux on Virtualbox seems good solution.
It's very useful infomation! thanks :) |
because hardware on mobile is different ( GPU like Mali , Powervr , Adreno , Nvidia ) , and is having problem graphic |
@xebra you're welcome and also with llvmpipe driver like virtualbox/vmware too work |
I pushed DX9 version(still incomplete). |
Is it fixed? I don't have a device to test. |
It still can fail to compile due to gl_InstanceID. For GLES it requires shader version 3.00, for OGL it's 1.40 version. On lower versions the feature should be completely disabled. |
Qualcoom (Adreno) is not known for good drivers... |
Ok well if I wait 30 seconds avg crash libsc-a3xx.so and libGLESv2_adreno.so driver fault edit : ok The log is here :)
|
@hrydgard i thought newer adrenos are better? |
@abz1 They are, but from what I understand their shader compiler is still not exactly the best. |
Now that #9249 is solved, did any of this start to work? :) |
@hrydgard In my zenfone5, it can run only PuzzleBobble. Bezier in pspgl can not run because it crashes the app when starting. |
@hrydgard with Adreno device not work anywat is driver fault maybe need disable in Adreno 3xx series? In blacklist series v84 driver . |
Why Tessellation is disabled in my galaxy s6? I didn't experience any issue before. Some user have problem with old mali400 but my device have mali t760 mp8 with sles 3.1 |
Also happen in mesa3d driver too not are avaible now with Opengl 3.3 GLSL . |
@brujo5 did the v1.3-450-g052660b worked for you? (the last build before compatibility check) I think it shouldn't, but instead being disabled it would probably break since Mali t720 doesn't have(?) OES_texture_float and it became a new requirement from some earlier changes. At least that's the only thing listed as required which seems to be missing on SGS6. |
I tried to fix it but it's not fixed yet. |
@xebra yep , I found for mesa3d drivers the fault is check for EXT_gpu_shader4 never can't supported and working without that function with GLSL compatible |
@mrcmunir Oh, I just found same issue when I checked all extensions in my zenfone5. |
Just simple report.
I tried auto-built v1.3-321-gce2feb2 but it's failed with Hardware Tessellation.
I hope to fix it but I don't know how to fix and debug with android.
Tested bezier in pspgl on ZenFone 5(Android 4.4.2)
The text was updated successfully, but these errors were encountered: