creator ci20 GLES compiler: intermittent absence of GL_ES macro

This topic contains 4 replies, has 2 voices, and was last updated by  Martin Krastev 2 years, 4 months ago.

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #49554

    Hello,

    Since my shaders are shared across GL and GLES scenarios, the former rely on the #if macro apparatus to discriminated between platforms. This is how I’ve stumbled across the following issue:

    The GLSL compiler from Creator’s GLES stack ver. 1.13@3341330 may omit to define the GL_ES=1 macro in the scope of a GLSL translation unit. This behaviour is intermittent – it happens once in many runs, but without much determinism. I *suspect* some dependence on an internally-cached state in the driver might be at play.

    Best regards,
    Martin

    #49558

    PaulL
    Admin

    Would it be possible for you to provide the shader source that is failing?

    #49564

    Hi Paul,

    Here are two shaders – a vertex one and a fragment one, which show the general mechanism I use to differentiate between GL and GLES, and which shaders occasionally trigger the issue. The latter manifests like this (first log is from the vertex and second – from the fragment shader):

    
    shader compile log: Success.
    shader compile log: Compile failed.
    ERROR: 0:16: 'shader in & out declarations' : requires language version 130
    ERROR: 1 compilation errors. No code generated.
    
    
    #if GL_ES == 1
    
    #define in_qualifier attribute
    #define out_qualifier varying
    
    #else
    
    #define in_qualifier in
    #define out_qualifier out
    
    #endif
    
    in_qualifier vec3 at_Vertex;
    
    void main()
    {
        gl_Position = vec4(at_Vertex, 1.0);
    }
    
    
    #if GL_ES == 1
    
    #ifdef GL_FRAGMENT_PRECISION_HIGH
        precision highp float;
    #else
        precision mediump float;
    #endif
    
    #define xx_FragColor gl_FragColor
    
    #else
    out vec4 xx_FragColor;
    
    #endif
    
    uniform vec4 solid_color;
        
    void main()
    {
        xx_FragColor = solid_color;
    }
    

    ps: I’ve tried attaching the files but the forum has rejected them with ‘This file is not valid!’

    #49709

    PaulL
    Admin

    We’re still investigating to find where exactly the issue is occurring, but it seems to be platform specific.

    If you can provide any more information to help us create a consistent reproduction that would be helpful.

    #49747

    Hi PaulL,

    I’ve been running my ci20 on jessie for a couple of days now, investigating a cpu performance issue. I’ll get back to the GLES tests once I return to wheezy.

Viewing 5 posts - 1 through 5 (of 5 total)
You must be logged in to reply to this topic.