Skip to content
  • Simon Ser's avatar
    backend/drm: check buffer format for multi-GPU · c6dd5e3c
    Simon Ser authored
    Fixes on-screen corruption when displaying a fullscreen client
    with an implicit modifier on the secondary GPU.
    
    What happens here:
    
    - Client allocates a buffer with an INVALID modifier on primary GPU.
    - Compositor attempts to scan-out this buffer on an output connected
      to secondary GPU.
    - Buffer is imported to secondary GPU, and is interpreted as if it had
      the secondary GPU's implicit tiling, even though it has the primary
      GPU's implicit tiling.
    
    We need to forbid cross-device imports with implicit modifiers.
    The mgpu_formats list is stripped from any INVALID modifier so
    checking that fixes the bug.
    
    Using the mgpu_formats list has an additional benefit: the buffer
    is rejected in the test commit if it doesn't have a format supported
    by the multi-GPU renderer.
    
    Requires this Mesa bugfix:
    mesa/mesa!31725
    c6dd5e3c
Loading