shader compilation fails on Adreno 420/430

Jim Graham james.graham at oracle.com
Tue Jul 14 19:55:25 UTC 2015


I can't really speak to the android traces or the details of shader 
compilation at runtime, but that shader code is the code that computes a 
device coordinate from fragment coordinates, including the fact that 
device coordinates are flipped in OpenGL.  It's pretty straightforward 
math.  The only odd thing I can see about that code is that it is a 
computation outside of any shader function (similar to a static variable 
in a C program) and it is the only such variable like that in any of the 
shaders?  (All of the other shader variables are either uniform or 
varying declarations and all calculations are inside the functions.)

			...jim

On 7/14/15 12:14 PM, Johan Vos wrote:
> Recently, we see crashes on recent Android devices that use an Adreno 420
> or 430 GPU.
>
> It turns out that those crashes occur while performing the native shader
> compilation
> (Java_com_sun_prism_es2_GLContext_nCompileShader)
> The crash really is a segmentation violation, which shouldn't happen
>
> More info is also here:
> https://bitbucket.org/javafxports/javafxmobile-plugin/issues/28/lollipop-51-and-error-with-gradient
>
> I managed to isolate the problem: In
> the FillRoundRect_LinearGradient_PAD.frag we have this:
>
> vec2 pixcoord = vec2(
>      gl_FragCoord.x-jsl_pixCoordOffset.x,
>
> ((jsl_pixCoordOffset.z-gl_FragCoord.y)*jsl_pixCoordOffset.w)-jsl_pixCoordOffset.y);
>
> If I replace this into
>
> vec2 pixcoord = vec2(0.5,0.5);
>
> we don't see a crash anymore.
> Clearly this is not a solution.
>
> I'm trying to get a clue on what might be wrong, and how we can create a
> work-around. Unfortunately, my knowledge on shaders is extremely limited,
> so all help is very welcome.
>
> Thanks,
>
> - Johan
>
> fyi, the Android error is added here:
>
> F/libc    (13998): Fatal signal 11 (SIGSEGV), code 1, fault addr 0xc in tid
> 1402
> 1 (QuantumRenderer)
> I/DEBUG   (  354): *** *** *** *** *** *** *** *** *** *** *** *** *** ***
> *** *
> **
> I/DEBUG   (  354): Build fingerprint:
> 'google/shamu/shamu:5.1.1/LMY47Z/1860966:u
> ser/release-keys'
> I/DEBUG   (  354): Revision: '33696'
> I/DEBUG   (  354): ABI: 'arm'
> I/DEBUG   (  354): pid: 13998, tid: 14021, name: QuantumRenderer  >>>
> com.hellog
> luon <<<
> I/DEBUG   (  354): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xc
> I/DEBUG   (  354):     r0 00000000  r1 aa9ba96b  r2 00000000  r3 ffffffff
> I/DEBUG   (  354):     r4 9f715abc  r5 aec99cf0  r6 9f70f7f8  r7 00000014
> I/DEBUG   (  354):     r8 aec99d04  r9 aaaf4b8b  sl ffffffde  fp 9f70fa10
> I/DEBUG   (  354):     ip aab235a8  sp 9f70f7e0  lr aaa09205  pc aaa09218
>   cpsr
> 60070030
> I/DEBUG   (  354):
> I/DEBUG   (  354): backtrace:
> I/DEBUG   (  354):     #00 pc 005bb218
>   /system/vendor/lib/libllvm-glnext.so (TP
> arseContext::handleIdentifier(TSymbol*, llvm::StringRef const&, int)+275)
> I/DEBUG   (  354):     #01 pc 005d727d
>   /system/vendor/lib/libllvm-glnext.so (yy
> 2parse(TParseContext&)+972)
> I/DEBUG   (  354):     #02 pc 005dcd3d
>   /system/vendor/lib/libllvm-glnext.so (yy
> 2PaYYParse(TParseContext&)+16)
> I/DEBUG   (  354):     #03 pc 005e481d
>   /system/vendor/lib/libllvm-glnext.so (YY
> Parser::ParseStrings(char**, long*, int, TParseContext&, int)+276)
> I/DEBUG   (  354):     #04 pc 005b305b
>   /system/vendor/lib/libllvm-glnext.so (Sh
> Compile+1326)
> I/DEBUG   (  354):     #05 pc 00552399
>   /system/vendor/lib/libllvm-glnext.so (LL
> VMCompiler::parse(QGLC_SRCSHADER*)+1188)
> I/DEBUG   (  354):     #06 pc 005557ed
>   /system/vendor/lib/libllvm-glnext.so (Co
> mpilerContext::CompileToIRShader(QGLC_SRCSHADER*,
> QGLC_COMPILETOIR_RESULT*)+168)
>
> I/DEBUG   (  354):     #07 pc 00105903
>   /system/vendor/lib/egl/libGLESv2_adreno.
> so (EsxShaderCompiler::CompileShader(EsxContext const*, EsxShader const*,
> EsxInf
> oLog*)+526)
> I/DEBUG   (  354):     #08 pc 00103ced
>   /system/vendor/lib/egl/libGLESv2_adreno.
> so (EsxShader::Compile(EsxContext*)+72)
> I/DEBUG   (  354):     #09 pc 000b2201
>   /system/vendor/lib/egl/libGLESv2_adreno.
> so (EsxContext::GlCompileShader(unsigned int)+60)
> I/DEBUG   (  354):     #10 pc 000e4ef9
>   /system/vendor/lib/egl/libGLESv2_adreno.
> so (EsxGlApiParamValidate::GlCompileShader(EsxDispatch*, unsigned int)+40)
> I/DEBUG   (  354):     #11 pc 000a947d
>   /system/vendor/lib/egl/libGLESv2_adreno.
> so (glCompileShader+44)
> I/DEBUG   (  354):     #12 pc 00005431
>   /data/app/com.hellogluon-1/lib/arm/libpr
> ism_es2_monocle.so (Java_com_sun_prism_es2_GLContext_nCompileShader+112)
> I/DEBUG   (  354):     #13 pc 00518ea5  /data/dalvik-cache/arm/data at app
> @com.hell
> ogluon-1 at base.apk@classes.dex
> W/ActivityManager(  804):   Force finishing activity 1
> com.hellogluon/javafxport
> s.android.FXActivity
>


More information about the openjfx-dev mailing list