Skip to content
  • Eduardo Lima Mitev's avatar
    glsl: Add 16-bit types · 59f458cd
    Eduardo Lima Mitev authored and José María Casanova Crespo's avatar José María Casanova Crespo committed
    
    
    Adds new INT16, UINT16 and FLOAT16 base types.
    
    The corresponding GL types for half floats were reused from the
    AMD_gpu_shader_half_float extension. The int16 and uint16 types come from
    NV_gpu_shader_5 extension.
    
    This adds the builtins and the lexer support.
    
    To avoid a bunch of warnings due to cases not handled in switch, the
    new types have been added to a few places using same behavior as
    their 32-bit counterparts, except for a few trivial cases where they are
    already handled properly. Subsequent patches in this set will provide
    correct 16-bit implementations when needed.
    
    v2: * Use FLOAT16 instead of HALF_FLOAT as name of the base type.
        * Removed float16_t from builtin types.
        * Don't copy 16-bit types as if they were 32-bit values in
          copy_constant_to_storage().
        * Use get_scalar_type() instead of adding a new custom switch
          statement.
        (Jason Ekstrand)
    v3: Use GL_FLOAT16_NV instead of GL_HALF_FLOAT for consistency
        (Ilia Mirkin)
    v4: Add missing 16-bit base types support in glsl_to_nir (Eduardo Lima).
    v5: Fix coding style (Topi Poholainen).
    
    Signed-off-by: default avatarJose Maria Casanova Crespo <jmcasanova@igalia.com>
    Signed-off-by: default avatarEduardo Lima <elima@igalia.com>
    Signed-off-by: default avatarAlejandro Piñeiro <apinheiro@igalia.com>
    Reviewed-by: default avatarJason Ekstrand <jason@jlekstrand.net>
    Reviewed-by: default avatarNicolai Hähnle <nicolai.haehnle@amd.com>
    59f458cd