diff --git a/dri3/dri3_request.c b/dri3/dri3_request.c index 46f058bba5..8b08078814 100644 --- a/dri3/dri3_request.c +++ b/dri3/dri3_request.c @@ -48,6 +48,18 @@ dri3_screen_can_one_point_four(ScreenPtr screen) dri3->info->import_syncobj; } +static Bool +dri3_screen_can_one_point_one(ScreenPtr screen) +{ + dri3_screen_priv_ptr dri3 = dri3_screen_priv(screen); + + if (dri3 && dri3->info && dri3->info->version >= 1 && + dri3->info->fd_from_pixmap) + return TRUE; + + return FALSE; +} + static Bool dri3_screen_can_one_point_two(ScreenPtr screen) { @@ -75,10 +87,14 @@ proc_dri3_query_version(ClientPtr client) }; DIX_FOR_EACH_SCREEN({ - if (!dri3_screen_can_one_point_two(walkScreen)) { + if (!dri3_screen_can_one_point_one(walkScreen)) { reply.minorVersion = 0; break; } + if (!dri3_screen_can_one_point_two(walkScreen)) { + reply.minorVersion = 1; + break; + } if (!dri3_screen_can_one_point_four(walkScreen)) { reply.minorVersion = 2; break; @@ -86,10 +102,14 @@ proc_dri3_query_version(ClientPtr client) }); DIX_FOR_EACH_GPU_SCREEN({ - if (!dri3_screen_can_one_point_two(walkScreen)) { + if (!dri3_screen_can_one_point_one(walkScreen)) { reply.minorVersion = 0; break; } + if (!dri3_screen_can_one_point_two(walkScreen)) { + reply.minorVersion = 1; + break; + } if (!dri3_screen_can_one_point_four(walkScreen)) { reply.minorVersion = 2; break;