Skip to content
  • Faith Ekstrand's avatar
    compiler: Move double_inputs to gl_program::DualSlotInputs · 25efd787
    Faith Ekstrand authored
    
    
    Previously, we had two field in shader_info: double_inputs_read and
    double_inputs.  Presumably, the one was for all double inputs that are
    read and the other is all that exist.  However, because nir_gather_info
    regenerates these two values, there is a possibility, if a variable gets
    deleted, that the value of double_inputs could change over time.  This
    is a problem because double_inputs is used to remap the input locations
    to a two-slot-per-dvec3/4 scheme for i965.  If that mapping were to
    change between glsl_to_nir and back-end state setup, we would fall over
    when trying to map the NIR outputs back onto the GL location space.
    
    This commit changes the way slot re-mapping works.  Instead of the
    double_inputs field in shader_info, it adds a DualSlotInputs bitfield to
    gl_program.  By having it in gl_program, we more easily guarantee that
    NIR passes won't touch it after it's been set.  It also makes more sense
    to put it in a GL data structure since it's really a mapping from GL
    slots to back-end and/or NIR slots and not really a NIR shader thing.
    
    Tested-by: Alejandro Piñeiro <apinheiro@igalia.com> (ARB_gl_spirv tests)
    Reviewed-by: default avatarAlejandro Piñeiro <apinheiro@igalia.com>
    Reviewed-by: default avatarTimothy Arceri <tarceri@itsqueeze.com>
    25efd787