Skip to content
  • Timothy Arceri's avatar
    mesa: use gl_program for CurrentProgram rather than gl_shader_program · c505d6d8
    Timothy Arceri authored
    
    
    This makes much more sense and should be more performant in some
    critical paths such as SSO validation which is called at draw time.
    
    Previously the CurrentProgram array could have contained multiple
    pointers to the same struct which was confusing and we would often
    need to fish out the information we were really after from the
    gl_program anyway.
    
    Also it was error prone to depend on the _LinkedShader array for
    programs in current use because a failed linking attempt will lose
    the infomation about the current program in use which is still
    valid.
    
    V2: fix validate_io() to compare linked_stages rather than the
    consumer and producer to decide if we are looking at inward
    facing shader interfaces which don't need validation.
    
    Acked-by: default avatarEdward O'Callaghan <funfunctor@folklore1984.net>
    
    To avoid build regressions the following 2 patches were squashed in to
    this commit:
    
    mesa/meta: rewrite _mesa_shader_program_use() and _mesa_program_use()
    
    These are rewritten to do what the function name suggests, that is
    _mesa_shader_program_use() sets the use of all stage and
    _mesa_program_use() sets the use of a single stage.
    
    Reviewed-by: default avatarLionel Landwerlin <lionel.g.landwerlin@intel.com>
    Acked-by: default avatarEdward O'Callaghan <funfunctor@folklore1984.net>
    
    mesa: update active relinked program
    
    This likely fixes a subroutine bug were
    _mesa_shader_program_init_subroutine_defaults() would never have been
    called for the relinked program as we previously just set
    _NEW_PROGRAM as dirty and never called the _mesa_use* functions when
    linking.
    
    Acked-by: default avatarEdward O'Callaghan <funfunctor@folklore1984.net>
    c505d6d8