• Show log

    Commit

  • Hash : 9733ceef
    Author : Olli Etuaho
    Date : 2017-05-11T19:14:35

    Initialize uninitialized locals in GLSL output
    
    Guarantee that local variables are initialized before they are used
    in GLSL output. In HLSL output all variables were already being
    initialized.
    
    Locals are initialized using an AST transform. The local variable init
    can only be run after some simplification of the AST, so that it is
    able to handle complex cases like:
    
    for (int i[2], j = i[0]; i[0] < 3; ++i[0]) {
    }
    
    If we're dealing with ESSL 1.00 which lacks array constructors, in
    this kind of case the uninitialized array initialization code needs to
    be hoisted out of the loop init statement, and the code also needs to
    make sure that j's initializer is run after i is initialized.
    
    Another complex case involves nameless structs. This can be an issue
    also in ESSL 3.00 and above:
    
    for (struct { float f; } s; s.f < 1.0; ++s.f) {
    }
    
    Since the struct doesn't have a name, its constructor can not be used.
    We solve this by initializing the struct members individually,
    similarly to how arrays are initialized in ESSL 1.00.
    
    Initializing local variables is disabled on Mac and Android for now.
    On Mac, invalid behavior was exposed in the WebGL 2.0 tests when
    enabling it. On Android, the dEQP test runs failed for an unknown
    reason. Bugs have been opened to resolve these issues later.
    
    BUG=angleproject:1966
    TEST=angle_end2end_tests, WebGL conformance tests
    
    Change-Id: Ic06927f5b6cc9619bc82c647ee966605cd80bab2
    Reviewed-on: https://chromium-review.googlesource.com/504728
    Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
    Reviewed-by: Jamie Madill <jmadill@chromium.org>
    

  • Properties

  • Git HTTP https://git.kmx.io/kc3-lang/angle.git
    Git SSH git@git.kmx.io:kc3-lang/angle.git
    Public access ? public
    Description

    A conformant OpenGL ES implementation for Windows, Mac, Linux, iOS and Android.

    Homepage

    Github

    Users
    thodg_m kc3_lang_org thodg_w www_kmx_io thodg thodg_l
    Tags