• Bas Nieuwenhuizen's avatar
    drm/amdgpu: Use device specific BO size & stride check. · 37ac3dc0
    Bas Nieuwenhuizen authored
    The builtin size check isn't really the right thing for AMD
    modifiers due to a couple of reasons:
    
    1) In the format structs we don't do set any of the tilesize / blocks
    etc. to avoid having format arrays per modifier/GPU
    2) The pitch on the main plane is pixel_pitch * bytes_per_pixel even
    for tiled ...
    3) The pitch for the DCC planes is really the pixel pitch of the main
    surface that would be covered by it ...
    
    Note that we only handle GFX9+ case but we do this after converting
    the implicit modifier to an explicit modifier, so on GFX9+ all
    framebuffers should be checked here.
    
    There is a TODO about DCC alignment, but it isn't worse than before
    and I'd need to dig a bunch into the specifics. Getting this out in
    a reasonable timeframe to make sure it gets the appropriate testing
    seemed more important.
    
    Finally as I've found that debugging addfb2 failures is a pita I was
    generous adding explicit error messages to every failure case.
    
    Fixes: f258907f ("drm/amdgpu: Verify bo size can fit framebuffer size on init.")
    Tested-by: default avatarSimon Ser <contact@emersion.fr>
    Signed-off-by: default avatarBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    37ac3dc0
amdgpu_display.c 48.9 KB