]> git.baikalelectronics.ru Git - kernel.git/commit
drm/amdgpu: Use device specific BO size & stride check.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Tue, 4 May 2021 09:43:34 +0000 (11:43 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 6 May 2021 03:09:54 +0000 (23:09 -0400)
commitac3508da01f04e55da83f1082eb2c62cd56d07e3
tree30f60424d15596fc380f0730a421d34c494dce72
parent29b7f106da92b81852b2126dce7a1044ae545a6f
drm/amdgpu: Use device specific BO size & stride check.

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: 80a80a81079a ("drm/amdgpu: Verify bo size can fit framebuffer size on init.")
Tested-by: Simon Ser <contact@emersion.fr>
Signed-off-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c