mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 13:38:06 +02:00
gallium-xlib: query MIT-SHM before using it.
When Mesa is compiled for gallium-xlib using e.g.
./configure --enable-glx=gallium-xlib --disable-dri --disable-gbm
-disable-egl
and is used by an X server (usually remotely via SSH X11 forwarding)
that does not support MIT-SHM such as XMing or MobaXterm, OpenGL
clients report error messages such as
Xlib: extension "MIT-SHM" missing on display "localhost:11.0".
ad infinitum.
The reason is that the code in src/gallium/winsys/sw/xlib uses
MIT-SHM without checking for its existence, unlike the code
in src/glx/drisw_glx.c and src/mesa/drivers/x11/xm_api.c.
I copied the same check using XQueryExtension, and tested with
glxgears on MobaXterm.
This issue was reported before here:
https://lists.freedesktop.org/archives/mesa-users/2016-July/001183.html
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Cc: <mesa-stable@lists.freedesktop.org>
(cherry picked from commit a203eaa4f4)
This commit is contained in:
parent
5e85df1cfd
commit
92fa6d6959
1 changed files with 3 additions and 1 deletions
|
|
@ -396,6 +396,7 @@ xlib_displaytarget_create(struct sw_winsys *winsys,
|
|||
{
|
||||
struct xlib_displaytarget *xlib_dt;
|
||||
unsigned nblocksy, size;
|
||||
int ignore;
|
||||
|
||||
xlib_dt = CALLOC_STRUCT(xlib_displaytarget);
|
||||
if (!xlib_dt)
|
||||
|
|
@ -410,7 +411,8 @@ xlib_displaytarget_create(struct sw_winsys *winsys,
|
|||
xlib_dt->stride = align(util_format_get_stride(format, width), alignment);
|
||||
size = xlib_dt->stride * nblocksy;
|
||||
|
||||
if (!debug_get_option_xlib_no_shm()) {
|
||||
if (!debug_get_option_xlib_no_shm() &&
|
||||
XQueryExtension(xlib_dt->display, "MIT-SHM", &ignore, &ignore, &ignore)) {
|
||||
xlib_dt->data = alloc_shm(xlib_dt, size);
|
||||
if (xlib_dt->data) {
|
||||
xlib_dt->shm = True;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue