• Show log

    Commit

  • Hash : 2156cd6e
    Author : Kimmo Kinnunen
    Date : 2024-10-31T14:22:31

    Metal: Fix rewritten array variables clashes
    
    It was possible to generate MSL name clashes by declaring arrays,
    such as in:
      mat3 a[1]
      mat2 a_0;
    
    Complex GLSL outputs need to be linearized into primitive MSL types.
    This would happen for struct outputs, arrays and matrices. For
    these new MSL variables, the translator needs to invent new names
    that match, generated from both VS and FS.
    
    The clashes were due to the encoding scheme:
    
    For arrays, the MSL vertex output variable was named with _0 suffix for
    the array and _0 for the matrix row 0. In the example above, this
    would create a clash since also non-array mat would be linearized
    row-wise.
    
    For structs, field `a.b` would be encoded as `a_b`. By selecting
    different a and b, clashes could be generated trivially.
    
    It is redundant to encode named semantics in the out variable names. The
    only needed element is the discriminator which associates VS variables
    to FS variables. Currently this is done by using the user-provided
    root field name.
    
    Fix by encoding only the root variable name to the MSL variable name.
    The rest of the field discriminators are just a running number.
    Each GLSL name `a` is unique. MSL names get fixed suffix form `a_X`,
    and thus all of them are unique too.
    
    This is a continuation of following fixes that turned out to be
    incomplete:
    6fe8a399dd Metal: Fix rewritten out variables with underscores
    27423bffff Metal: Generate names for rewritten inputs
    
    Bug: angleproject:376417347
    Change-Id: I407db373d201b3e321c6d8414bafdbecfd82cf19
    Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5979774
    Reviewed-by: Geoff Lang <geofflang@chromium.org>
    Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
    Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
    

  • 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
    kc3_lang_org www_kmx_io thodg_w thodg_l thodg thodg_m
    Tags