From 19d006ee3db4b4635ef9ef5c92562f3ffeddb305 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Tue, 24 Apr 2018 16:08:26 -0400 Subject: [PATCH] dri3: Clamp to 1.0 if not all screens support 1.2 Signed-off-by: Adam Jackson Reviewed-by: Daniel Stone --- dri3/dri3_request.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/dri3/dri3_request.c b/dri3/dri3_request.c index 452b08a87..8b3503611 100644 --- a/dri3/dri3_request.c +++ b/dri3/dri3_request.c @@ -32,6 +32,17 @@ #include #include +static Bool +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) + return TRUE; + + return FALSE; +} + static int proc_dri3_query_version(ClientPtr client) { @@ -45,6 +56,21 @@ proc_dri3_query_version(ClientPtr client) }; REQUEST_SIZE_MATCH(xDRI3QueryVersionReq); + + for (int i = 0; i < screenInfo.numScreens; i++) { + if (!dri3_screen_can_one_point_two(screenInfo.screens[i])) { + rep.minorVersion = 0; + break; + } + } + + for (int i = 0; i < screenInfo.numGPUScreens; i++) { + if (!dri3_screen_can_one_point_two(screenInfo.gpuscreens[i])) { + rep.minorVersion = 0; + break; + } + } + /* From DRI3 proto: * * The client sends the highest supported version to the server