Skip to content
  • Samuel Iglesias Gonsálvez's avatar
    anv: fix alphaToCoverage when there is no color attachment · bc66cebc
    Samuel Iglesias Gonsálvez authored and Iago Toral's avatar Iago Toral committed
    
    
    There are tests in CTS for alpha to coverage without a color attachment
    that are failing. This happens because we remove the shader color
    outputs when we don't have a valid color attachment for them, but when
    alpha to coverage is enabled we still want to preserve the the output
    at location 0 since we need the alpha component. In that case we will
    also need to create a null render target for RT 0.
    
    v2:
      - We already create a null rt when we don't have any, so reuse that
        for this case (Jason)
      - Simplify the code a bit (Iago)
    
    v3:
      - Take alpha to coverage from the key and don't tie this to depth-only
        rendering only, we want the same behavior if we have multiple render
        targets but the one at location 0 is not used. (Jason).
      - Rewrite commit message (Iago)
    
    v4:
      - Make sure we take into account the array length of the shader outputs,
        which we were no handling correctly either and make sure we also
        create null render targets for any invalid array entries too.
    
    v5:
      - Simplify removal of unused outputs by using rt_used[] so we don't have
        to special case alpha to coverage there too.
    
    Fixes the following CTS tests:
    dEQP-VK.pipeline.multisample.alpha_to_coverage_no_color_attachment.*
    
    Signed-off-by: default avatarSamuel Iglesias Gonsálvez <siglesias@igalia.com>
    Signed-off-by: default avatarIago Toral Quiroga <itoral@igalia.com>
    Reviewed-by: default avatarJason Ekstrand <jason@jlekstrand.net>
    bc66cebc