When force_bgra8_unorm_first is true, we access display->formats and
change the order of certain formats. The final result is BGRA8_UNORM
being the first in the format list, as some clients require this.
But we are trying to do this before before setting up display->formats,
so it should result in a crash. Fix this by changing the order of
things. Now we first set up display->formats before trying to access it.
Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Acked-by: Daniel Stone <daniels@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12117>
/* Round-trip again to get formats and modifiers */
wl_display_roundtrip_queue(display->wl_display, display->queue);
+ if (display->sw)
+ display->formats = &display->swrast.formats;
+ else if (display->dmabuf.wl_dmabuf)
+ display->formats = &display->dmabuf.formats;
+
if (wsi_wl->wsi->force_bgra8_unorm_first) {
/* Find BGRA8_UNORM in the list and swap it to the first position if we
* can find it. Some apps get confused if SRGB is first in the list.
}
}
- if (display->sw)
- display->formats = &display->swrast.formats;
- else if (display->dmabuf.wl_dmabuf)
- display->formats = &display->dmabuf.formats;
-
out:
/* We don't need this anymore */
wl_registry_destroy(registry);