Skip to content
  • Simon Ser's avatar
    dri: revert INVALID modifier special-casing · 105fcb9c
    Simon Ser authored and Marge Bot's avatar Marge Bot committed
    
    
    Commit 361f3622 ("dri: Unify createImage and createImageWithModifiers")
    has introduced new behavior for drivers which don't support explicit
    format modifiers. Before this commit, INVALID was not special-cased
    and any call to dri_create_image() with one or more modifiers returned
    NULL. After this commit, INVALID gained a special meaning: it indicates
    that the implicit modifier is accepted by the caller. This is surprising
    and is an API break.
    
    This causes further API breaks: for instance, before this commit a BO
    created via gbm_bo_create_with_modifiers() was guaranteed to always
    return a non-INVALID modifier in gbm_bo_get_modifier().
    
    This is inconsistent with gbm_dri_surface_create(): that function
    treats INVALID as a bad entry in the modifier list, and fails if
    it's the only acceptable modifier.
    
    Additionally, drivers don't special-case INVALID and just ignore it
    if they see it in a modifier list. This causes more inconsistencies.
    For instance, let's say that a library user passes the modifier list
    { INVALID, FOO } to GBM. If a driver supports explicit modifiers and
    doesn't support FOO for scanout, it'll return NULL. If a driver
    doesn't support explicit modifiers, the current logic would return
    a non-NULL BO with an INVALID modifier. This discrepency makes it
    harder to reason about the system: half of the API ignores INVALID,
    while the other half assumes INVALID indicates an implicit modifier.
    
    To fix these issues, revert to the behavior before the commit, and
    require use of the dedicated API without supplying any modifier for
    implicit modifiers.
    
    Signed-off-by: Simon Ser's avatarSimon Ser <contact@emersion.fr>
    Fixes: 361f3622 ("dri: Unify createImage and createImageWithModifiers")
    Part-of: <!32396>
    105fcb9c
Loading