Skip to content
  • Lyude Paul's avatar
    glamor: Unbreak glamor_fd_from_pixmap() · 186a21c4
    Lyude Paul authored
    
    
    When support for allocating GBM BOs with modifiers was added,
    glamor_fd_from_pixmap() was changed so that it would return an error if
    it got a bo with modifiers set from glamor_fds_from_pixmap(). The
    problem is that on systems that support BOs with modifiers,
    glamor_fds_from_pixmap() will always return BOs with modifiers.
    
    This means that glamor_fd_from_pixmap() was broken entirely, which broke
    a number of other things including glamor_shareable_fd_from_pixmap(),
    which meant that modesetting using multiple GPUs with the modesetting
    DDX was also broken. Easy reproducer:
    
    - Find a laptop with DRI prime that has outputs connected to the
      dedicated GPU and integrated GPU
    - Try to enable one display on each using the modesetting DDX
    - Fail
    
    Since there isn't a way to ask for no modifiers from
    glamor_fds_from_pixmap, we create a shared _glamor_fds_from_pixmap()
    function used by both glamor_fds_from_pixmap() and
    glamor_fd_from_pixmap() that calls down to the appropriate
    glamor_egl_fd*_from_pixmap() function.
    
    Signed-off-by: Lyude Paul's avatarLyude Paul <lyude@redhat.com>
    Reviewed-by: default avatarDave Airlie <airlied@redhat.com>
    Cc: Louis-Francis Ratté-Boulianne <lfrb@collabora.com>
    Fixes: c8c276c9 ("glamor: Implement PixmapFromBuffers and BuffersFromPixmap")
    186a21c4