<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Den fre 4 sep. 2020 kl 18:07 skrev Bas Nieuwenhuizen <<a href="mailto:bas@basnieuwenhuizen.nl">bas@basnieuwenhuizen.nl</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">This adds modifier support to radeonsi.<br></blockquote><div><br></div><div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default">Wouldn't it be more correct to say that this adds modifier support to amdgpu (and enables it to work with radeonsi OpenGL)</div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default">or something like that?</div></div><div><br></div><div><div style="font-family:arial,helvetica,sans-serif" class="gmail_default">//E</div></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
It has been tested on<br>
<br>
- VEGA10, RAVEN, NAVI14<br>
- weston, sway, X with xf86-video-amdgpu (i.e. legacy path still works)<br>
<br>
and includes some basic testing of the layout code.<br>
<br>
The main goal is to keep it somewhat simple and regression free, so<br>
on the display side this series only exposes what the current GPU<br>
can render to. While we could expose more I think that is more<br>
suitable for follow-up work as the benefit would be minimal and<br>
there are some more design discussion there to discuss that are<br>
orthogonal from the initial implementation.<br>
<br>
Similarly this series only exposes 32-bpp displayable DCC in the cases<br>
that radeonsi would use it and any extra capabilities here should be<br>
future work.<br>
<br>
I believe these are by far the most complicated modifiers we've seen<br>
up till now, mostly related to<br>
<br>
- GPU identification for cases where it matters wrt tiling.<br>
- Every generation having tiling layout changes<br>
- Compression settings.<br>
<br>
I believe the complexity is necessary as every layout should be different<br>
and all layouts should be the best in some situation (though not all<br>
combinations of GPU parameters will actually have an existing GPU).<br>
<br>
That said, on the render side the number of modifiers actually listed for<br>
a given GPU is ~10, and in the current implementation that is the same<br>
for the display side. (we could expose more actually differing layouts<br>
on the display side for cross-GPU compatibility, but I consider that<br>
out of scope for this initial work).<br>
<br>
This series can be found on<br>
<a href="https://github.com/BNieuwenhuizen/linux/tree/modifiers" rel="noreferrer" target="_blank">https://github.com/BNieuwenhuizen/linux/tree/modifiers</a><br>
<br>
An userspace implementation in radeonsi can be found on<br>
<a href="https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6176" rel="noreferrer" target="_blank">https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6176</a><br>
<br>
v2:<br>
<br>
Per suggestion from Daniel Vetter I added logic to get the tiling_flags at<br>
addfb2 time and convert them into modifiers for GFX9+.  Furthermore, the DCC<br>
constant econding modifers only get exposed on RAVEN2 and newer.<br>
<br>
Bas Nieuwenhuizen (11):<br>
  drm/amd/display: Do not silently accept DCC for multiplane formats.<br>
  drm/amd: Init modifier field of helper fb.<br>
  drm/amd/display: Honor the offset for plane 0.<br>
  drm/fourcc:  Add AMD DRM modifiers.<br>
  drm/amd/display: Store tiling_flags in the framebuffer.<br>
  drm/amd/display: Convert tiling_flags to modifiers.<br>
  drm/amd/display: Refactor surface tiling setup.<br>
  drm/amd/display: Set DC options from modifiers.<br>
  drm/amd/display: Add formats for DCC with 2/3 planes.<br>
  drm/amd/display: Expose modifiers.<br>
  drm/amd/display: Clean up GFX9 tiling_flags path.<br>
<br>
 drivers/gpu/drm/amd/amdgpu/amdgpu_display.c   | 169 +++-<br>
 drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c        |   2 +-<br>
 drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h      |   3 +<br>
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 754 ++++++++++++++----<br>
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h |   2 -<br>
 include/uapi/drm/drm_fourcc.h                 | 115 +++<br>
 6 files changed, 880 insertions(+), 165 deletions(-)<br>
<br>
-- <br>
2.28.0<br>
<br>
_______________________________________________<br>
amd-gfx mailing list<br>
<a href="mailto:amd-gfx@lists.freedesktop.org" target="_blank">amd-gfx@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a><br>
</blockquote></div></div>