Commit 55db3c9c authored by Mario Kleiner's avatar Mario Kleiner Committed by Adam Jackson
Browse files

dri3: Robustly clamp to 1.0 if not all screens support 1.2



Checking for dri3_screen_info_rec.version >= 2 is insufficient,
as some shipping drivers, e.g., intel-ddx, nouveau-ddx, set the
version to DRI3_SCREEN_INFO_VERSION, ie. to whatever version the
installed servers headers define. On server 1.20 that would
be version 2, but the drivers still don't support the v1.2
hooks. Make sure all hooks are defined before reporting v1.2.

Also make clamping of reported version to minimum of client
or server robust against possible future clients with possible
majorVersion >= 2.0.
Signed-off-by: Mario Kleiner's avatarMario Kleiner <mario.kleiner.de@gmail.com>
Reviewed-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
Cc: Daniel Stone <daniels@collabora.com>
parent fbc5c5cd
......@@ -37,7 +37,10 @@ dri3_screen_can_one_point_two(ScreenPtr screen)
{
dri3_screen_priv_ptr dri3 = dri3_screen_priv(screen);
if (dri3 && dri3->info && dri3->info->version >= 2)
if (dri3 && dri3->info && dri3->info->version >= 2 &&
dri3->info->pixmap_from_fds && dri3->info->fds_from_pixmap &&
dri3->info->get_formats && dri3->info->get_modifiers &&
dri3->info->get_drawable_modifiers)
return TRUE;
return FALSE;
......@@ -79,7 +82,8 @@ proc_dri3_query_version(ClientPtr client)
*/
if (rep.majorVersion > stuff->majorVersion ||
rep.minorVersion > stuff->minorVersion) {
(rep.majorVersion == stuff->majorVersion &&
rep.minorVersion > stuff->minorVersion)) {
rep.majorVersion = stuff->majorVersion;
rep.minorVersion = stuff->minorVersion;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment