Skip to content
  • Ilia Mirkin's avatar
    glsl: reuse main extension table to appropriately restrict extensions · e483cb9a
    Ilia Mirkin authored
    
    
    Previously we were only restricting based on ES/non-ES-ness and whether
    the overall enable bit had been flipped on. However we have been adding
    more fine-grained restrictions, such as based on compat profiles, as
    well as specific ES versions. Most of the time this doesn't matter, but
    it can create awkward situations and duplication of logic.
    
    Here we separate the main extension table into a separate object file,
    linked to the glsl compiler, which makes use of it with a custom
    function which takes the ES-ness of the shader into account (thus
    allowing desktop shaders to properly use ES extensions that would
    otherwise have been disallowed.) We can also now use this logic to
    generate #define's for all supported extensions automatically, removing
    the duplicate (and often inaccurate) list in glcpp.
    
    The effect of this change should be nil in most cases. However in some
    situations, extensions like GL_ARB_gpu_shader5 which were formerly
    available in compat contexts on the GLSL side of things will now become
    inaccessible.
    
    This regresses two ES CTS tests:
    
      ES3-CTS.shaders.shader_integer_mix.define
      ES31-CTS.shader_integer_mix.define
    
    however that is due to them using #version 100 instead of 300 es. As the
    extension is only defined for ES3, I believe this is the correct
    behavior.
    
    Signed-off-by: default avatarIlia Mirkin <imirkin@alum.mit.edu>
    Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com> (v2)
    v2 -> v3: integrate glcpp defines into the same mechanism
    e483cb9a