Skip to content
  • Rhys Perry's avatar
    radv,aco: use all attributes in a binding to obtain an alignment for fetch · 91f8f828
    Rhys Perry authored
    
    
    Instead of assuming scalar alignment for an attribute, we can use the
    required alignment of other attributes in a binding to expect a higher
    one.
    
    This uses the alignment of all attributes in the pipeline, not just the
    ones loaded. This can create slightly better code, but could break
    pipelines which relied on unused (and unaligned) attributes no being
    loaded. I don't think such pipelines are allowed by the spec.
    
    fossil-db (Sienna Cichlid):
    Totals from 44350 (30.32% of 146267) affected shaders:
    VGPRs: 1694464 -> 1700616 (+0.36%); split: -0.08%, +0.44%
    CodeSize: 60207184 -> 58093836 (-3.51%); split: -3.51%, +0.00%
    MaxWaves: 1175998 -> 1174948 (-0.09%); split: +0.02%, -0.11%
    Instrs: 11763444 -> 11458952 (-2.59%); split: -2.60%, +0.01%
    Latency: 70679612 -> 67062215 (-5.12%); split: -5.27%, +0.15%
    InvThroughput: 11482495 -> 11362911 (-1.04%); split: -1.20%, +0.16%
    VClause: 359459 -> 343248 (-4.51%); split: -6.36%, +1.85%
    SClause: 422404 -> 419229 (-0.75%); split: -1.17%, +0.42%
    Copies: 754384 -> 764368 (+1.32%); split: -1.74%, +3.06%
    Branches: 197472 -> 197474 (+0.00%); split: -0.03%, +0.03%
    PreVGPRs: 1215348 -> 1215503 (+0.01%)
    
    Signed-off-by: default avatarRhys Perry <pendingchaos02@gmail.com>
    Reviewed-by: default avatarDaniel Schürmann <daniel@schuermann.dev>
    Part-of: <mesa/mesa!9007>
    91f8f828