4c065158927d7bacc5eb1e4f2491b1db93f1dc12

Commit361f362258
("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 <contact@emersion.fr> Fixes:361f362258
("dri: Unify createImage and createImageWithModifiers") Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32396> (cherry picked from commit105fcb9cfd
)
`Mesa <https://mesa3d.org>`_ - The 3D Graphics Library ====================================================== Source ------ This repository lives at https://gitlab.freedesktop.org/mesa/mesa. Other repositories are likely forks, and code found there is not supported. Build & install --------------- You can find more information in our documentation (`docs/install.rst <https://docs.mesa3d.org/install.html>`_), but the recommended way is to use Meson (`docs/meson.rst <https://docs.mesa3d.org/meson.html>`_): .. code-block:: sh $ meson setup build $ ninja -C build/ $ sudo ninja -C build/ install Support ------- Many Mesa devs hang on IRC; if you're not sure which channel is appropriate, you should ask your question on `OFTC's #dri-devel <irc://irc.oftc.net/dri-devel>`_, someone will redirect you if necessary. Remember that not everyone is in the same timezone as you, so it might take a while before someone qualified sees your question. To figure out who you're talking to, or which nick to ping for your question, check out `Who's Who on IRC <https://dri.freedesktop.org/wiki/WhosWho/>`_. The next best option is to ask your question in an email to the mailing lists: `mesa-dev\@lists.freedesktop.org <https://lists.freedesktop.org/mailman/listinfo/mesa-dev>`_ Bug reports ----------- If you think something isn't working properly, please file a bug report (`docs/bugs.rst <https://docs.mesa3d.org/bugs.html>`_). Contributing ------------ Contributions are welcome, and step-by-step instructions can be found in our documentation (`docs/submittingpatches.rst <https://docs.mesa3d.org/submittingpatches.html>`_). Note that Mesa uses gitlab for patches submission, review and discussions.
Description
Languages
C
75.3%
C++
18.2%
Python
2.7%
Assembly
1.5%
Rust
1.2%
Other
0.9%