Skip to content
  • Lionel Landwerlin's avatar
    glsl: builtin: always return clones of the builtins · f81ede46
    Lionel Landwerlin authored
    
    
    Builtins are created once and allocated using their own private ralloc
    context. When reparenting IR that includes builtins, we might be steal
    bits of builtins. This is problematic because these builtins might now
    be freed when the shader that includes then last is disposed. This
    might also lead to inconsistent ralloc trees/lists if shaders are
    created on multiple threads.
    
    Rather than including builtins directly into a shader's IR, we should
    include clones of them in the ralloc context of the shader that
    requires them. This fixes double free issues we've been seeing when
    running shader-db on a big multicore (72 threads) server.
    
    v2: Also rename _mesa_glsl_find_builtin_function_by_name() to better
        reflect how this function is used. (Ken)
    
    v3: Rename ctx to mem_ctx (Ken)
    
    Signed-off-by: default avatarLionel Landwerlin <lionel.g.landwerlin@intel.com>
    Reviewed-by: Kenneth Graunke's avatarKenneth Graunke <kenneth@whitecape.org>
    f81ede46