mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 16:08:04 +02:00
x11: Only report supported DRI3/Present versions
The version passed to QueryVersion requests is the version that the
client supports. We were just passing in whatever version of XCB was
present on the system, which may not be a version that Mesa actually
explicitly supports, e.g. it might bring unwanted semantics.
Set specific protocol versions which we support, and only pass those.
Signed-off-by: Daniel Stone <daniels@collabora.com>
Fixes: 7aeef2d4ef ("dri3: allow building against older xcb (v3)")
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
This commit is contained in:
parent
2a329f4ada
commit
696762eef5
2 changed files with 32 additions and 10 deletions
|
|
@ -520,6 +520,18 @@ struct dri2_egl_display_vtbl dri3_x11_display_vtbl = {
|
|||
.close_screen_notify = dri3_close_screen_notify,
|
||||
};
|
||||
|
||||
/* Only request versions of these protocols which we actually support. */
|
||||
#define DRI3_SUPPORTED_MAJOR 1
|
||||
#define PRESENT_SUPPORTED_MAJOR 1
|
||||
|
||||
#ifdef HAVE_DRI3_MODIFIERS
|
||||
#define DRI3_SUPPORTED_MINOR 2
|
||||
#define PRESENT_SUPPORTED_MINOR 2
|
||||
#else
|
||||
#define PRESENT_SUPPORTED_MINOR 0
|
||||
#define DRI3_SUPPORTED_MINOR 0
|
||||
#endif
|
||||
|
||||
EGLBoolean
|
||||
dri3_x11_connect(struct dri2_egl_display *dri2_dpy)
|
||||
{
|
||||
|
|
@ -542,12 +554,12 @@ dri3_x11_connect(struct dri2_egl_display *dri2_dpy)
|
|||
return EGL_FALSE;
|
||||
|
||||
dri3_query_cookie = xcb_dri3_query_version(dri2_dpy->conn,
|
||||
XCB_DRI3_MAJOR_VERSION,
|
||||
XCB_DRI3_MINOR_VERSION);
|
||||
DRI3_SUPPORTED_MAJOR,
|
||||
DRI3_SUPPORTED_MINOR);
|
||||
|
||||
present_query_cookie = xcb_present_query_version(dri2_dpy->conn,
|
||||
XCB_PRESENT_MAJOR_VERSION,
|
||||
XCB_PRESENT_MINOR_VERSION);
|
||||
PRESENT_SUPPORTED_MAJOR,
|
||||
PRESENT_SUPPORTED_MINOR);
|
||||
|
||||
dri3_query =
|
||||
xcb_dri3_query_version_reply(dri2_dpy->conn, dri3_query_cookie, &error);
|
||||
|
|
|
|||
|
|
@ -1026,6 +1026,18 @@ dri3_destroy_display(__GLXDRIdisplay * dpy)
|
|||
free(dpy);
|
||||
}
|
||||
|
||||
/* Only request versions of these protocols which we actually support. */
|
||||
#define DRI3_SUPPORTED_MAJOR 1
|
||||
#define PRESENT_SUPPORTED_MAJOR 1
|
||||
|
||||
#ifdef HAVE_DRI3_MODIFIERS
|
||||
#define DRI3_SUPPORTED_MINOR 2
|
||||
#define PRESENT_SUPPORTED_MINOR 2
|
||||
#else
|
||||
#define PRESENT_SUPPORTED_MINOR 0
|
||||
#define DRI3_SUPPORTED_MINOR 0
|
||||
#endif
|
||||
|
||||
/** dri3_create_display
|
||||
*
|
||||
* Allocate, initialize and return a __DRIdisplayPrivate object.
|
||||
|
|
@ -1057,13 +1069,11 @@ dri3_create_display(Display * dpy)
|
|||
return NULL;
|
||||
|
||||
dri3_cookie = xcb_dri3_query_version(c,
|
||||
XCB_DRI3_MAJOR_VERSION,
|
||||
XCB_DRI3_MINOR_VERSION);
|
||||
|
||||
|
||||
DRI3_SUPPORTED_MAJOR,
|
||||
DRI3_SUPPORTED_MINOR);
|
||||
present_cookie = xcb_present_query_version(c,
|
||||
XCB_PRESENT_MAJOR_VERSION,
|
||||
XCB_PRESENT_MINOR_VERSION);
|
||||
PRESENT_SUPPORTED_MAJOR,
|
||||
PRESENT_SUPPORTED_MINOR);
|
||||
|
||||
pdp = malloc(sizeof *pdp);
|
||||
if (pdp == NULL)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue