Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • chengbo7135/xserver
  • wjp/xserver
  • DemiMarie/xserver
  • alanc/xserver
  • uvas/xserver
  • cl91/xserver
  • heymiaoO/xserver
  • oreaus/xserver
  • stapelberg/xserver
  • PaulKocialkowski/xserver
  • CendioOssman/xserver
  • wiz/xserver
  • maos20008/xserver
  • dougvj/xserver
  • mgorse1/xserver
  • gldrk/xserver
  • TMR5454/xserver
  • Kyawswat/xserver
  • hexiaodong/xserver
  • gilvbp/xserver
  • vliaskov/xserver
  • aarondill/xserver
  • zzyiwei/xserver
  • kleinerm/xserver
  • jcherry/xserver
  • jcristau/xserver
  • nathankidd/xserver
  • jexposit/xserver
  • refi_64/xserver
  • kbrenneman/xserver
  • kupper.pa/xserver
  • LickmeDown/xserver
  • zboszor/xserver
  • jadahl/xserver
  • shadeslayer/xserver
  • mherrb/xserver
  • Julia/xserver
  • twaik/xserver
  • fvalasiad/xserver
  • zzxyb/xserver
  • HermannSW/xserver
  • erwinou/xserver
  • ekurzinger/xserver
  • nacho.resa/xserver
  • agoins/xserver
  • NSUTanghaixiang/xserver
  • p12tic/xserver
  • huxd1532/xserver
  • keithp/xserver
  • vinilokorlok/xserver
  • bbeckett/xserver
  • dslater38/xserver
  • zzag/xserver
  • emersion/xserver
  • djlucas/xserver
  • ccullumbine2018/xserver
  • daniels/xserver
  • llandwerlin/xserver
  • matt335672/xserver
  • doraskayo/xserver
  • afett/xserver
  • XDXTHX/xserver
  • xexaxo/xserver
  • ecurtin/xserver
  • rbernon/xserver
  • pekdon/xserver
  • karolherbst/xserver
  • russellcnv/xserver
  • mbiebl/xserver
  • orbea/xserver
  • vsyrjala/xserver
  • lyudess/xserver
  • manu/xserver
  • lucmann/xserver
  • tholin/xserver
  • yarivb/xserver
  • tmlind/xserver
  • chema/xserver
  • J-Bu/xserver
  • chenhuacai/xserver
  • E5ten/xserver
  • haagch/xserver
  • whot/xserver
  • strassek/xserver
  • mntmn/xserver
  • liyi42/xserver
  • YusufKhan-gamedev/xserver
  • iv-m/xserver
  • vanvugt/xserver
  • Rui511/xserver
  • catap/xserver
  • tjbp/xserver
  • webi123/xserver
  • noblock/xserver
  • freemangordon/xserver
  • xdandys/xserver
  • jbeich/xserver
  • zeising/xserver
  • romangg/xserver
  • pq/xserver
  • azhadchenko/xserver
  • Emantor/xserver
  • carlosg/xserver
  • kwg/xserver
  • pichika/xserver
  • klniu/xserver
  • TAAPArthur/xserver
  • sjoerd/xserver
  • Sjecai2/xserver
  • jturney/xserver
  • pkubaj/xserver
  • os369510/xserver
  • Zamundaaa/xserver
  • Gorg/xserver
  • lkundrak/xserver
  • niveditharau/xserver
  • ForTheReallys/xserver
  • jmonteiro/xserver
  • jocelyn/xserver
  • ThatMG393/xserver
  • fweimer/xserver
  • mlankhorst/xserver
  • marv/xserver
  • dbn/xserver
  • mattrope/xserver
  • coypoop/xserver
  • mwyraz/xserver
  • frog/xserver
  • 3v1n0/xserver
  • awilfox/xserver
  • muesli4/xserver
  • rarbab/xserver
  • yshui/xserver
  • jannau/xserver
  • mikeroyal/xserver
  • andrebsguedes/xserver
  • JeffyCN/xserver
  • ipominov/xserver
  • gtrentalancia/xserver
  • josch/xserver
  • lucyllewy/xserver
  • tomty89/xserver
  • qarmin/xserver
  • tagr/xserver
  • zwenna/xserver
  • bkylerussell/xserver
  • mupuf/xserver
  • zubzub/xserver
  • galaxytgtabiday/xserver
  • OlCe/xserver
  • ashafer/xserver
  • dengbo/xserver
  • valpackett/xserver
  • andreyknyazev077/xserver
  • antonovitch/xserver
  • contactshashanksharma/xserver-fork-shashank
  • akihiko.odaki/xserver
  • sknsean/xserver
  • rnpnr/xserver
  • hitong602/xserver
  • halfline/xserver
  • ismailsiege/xserver
  • dongwonk/xserver
  • Fatton1/xserver
  • GermanAizek/xserver
  • daenzer/xserver
  • FeepingCreature/xserver
  • mvlad/xserver
  • puleglot/xserver
  • smelenius/xserver
  • sewn/xserver
  • kaichuan.hsieh/xserver
  • SimonPilkington/xserver
  • adamdruppe/xserver
  • floppym/xserver
  • trevdave/xserver
  • luke-jr/xserver
  • headrush/xserver
  • davidriley/xserver
  • heitbaum/xserver
  • mrisaacb/xserver
  • goosen78/xserver
  • Ma/xserver
  • gmbr3/xserver
  • tsutsui/xserver
  • sherrodejjohnson/xserver
  • hassoon1986/xserver
  • lanodan/xserver
  • ydc-dadada/xserver
  • wengxt/xserver
  • icenowy/xserver
  • denisfa/xserver
  • StarsGreen/xserver
  • adamjrichter/xserver
  • bigon/xserver
  • djacewicz/xserver
  • davidre/xserver
  • kylin0061/xserver
  • arrowd/xserver
  • ernstp/xserver
  • bbrezillon/xserver
  • penguin42/xserver
  • anarsoul/xserver
  • marvinjr35/xserver
  • gerddie/xserver
  • xry111/xserver
  • psyruss85/xserver
  • volkanorhan/xserver
  • luporl/xserver
  • cbur201592/xserver
  • bphaslett/xserver
  • guillem/xserver
  • haihao/xserver
  • peterh/xserver
  • miztake/xserver
  • zaps166/xserver
  • lostgoat/xserver
  • vfjpl/xserver
  • bentiss/xserver
  • rilian-la-te/xserver
  • wujiangGitHub/xserver
  • cubanismo/xserver
  • arichardson/xserver
  • schreibemirhalt/xserver
  • jsg/xserver
  • karlosrangel337/xserver
  • knisht/xserver
  • manuelcrack642/xserver
  • ross/xserver
  • topimiettinen/xserver
  • davidedmundson/xserver
  • DPA/xserver
  • dkorkmazturk/xserver
  • karamjameelmoore/xserver
  • lihongtao/xserver
  • sthibaul/xserver
  • RyzenDew/xserver
  • christian-rauch/xserver
  • Vivek/xserver
  • peigongdsd/xserver
  • peng.jin/xserver
  • alagner/xserver
  • mehdigh419/xserver
  • dixler/xserver
  • BBaoVanC/xserver
  • Drakulix/xserver
  • Acidburn0zzz/xserver
  • bafanahub/xserver
  • benpicco/xserver
  • yangxiaojuan-loongson/xserver
  • kaocher82/xserver
  • pepp/xserver
  • cgzones/xserver
  • luyn/xserver
  • 1740301466jxz/xserver
  • ids1024/xserver
  • svalaskevicius/xserver
  • ZhiJie.Zhang/xserver
  • metux/xserver
  • eschwartz/xserver
  • jayantpranjal0/xserver
  • hmazlan/xserver
  • kerneltoast/xserver
  • Michaelypk/xserver
  • dottedmag/xserver
  • aplattner/xserver
  • sergiomb/xserver
  • looi/xserver
  • robclark/xserver
  • tzimmermann/xserver
  • vitoux.pascal/xserver
  • aditj/xserver
  • kennylevinsen/xserver
  • Kishore409/xserver
  • Daasin/xserver
  • dirbaio/xserver
  • xinbowang/xserver
  • mwei/xserver
  • SpikyCaterpillar1/xserver
  • devin11911191/xserver
  • xorg/xserver
  • alex-tu-cc/xserver
  • kaniini/xserver
  • jcourreges/xserver
  • n3rdopolis/xserver
  • zagursky/xserver
  • thesamesam/xserver
  • anholt/xserver
  • themaister/xserver
  • jrtc27/xserver
  • JoseExposito/xserver
  • Hi-Angel/xserver
  • City-busz/xserver
  • ydirson/xserver
  • dawnhan/xserver
  • avolkov/xserver
  • meMuszr/xserver
  • dk/xserver
  • cooperch/xserver
  • Tuetuopay/xserver
  • gabifalk/xserver
  • jeremyhu/xserver
  • 1480c1/xserver
  • Spintzyk/xserver
  • MisterDA/xserver
  • starnight/xserver
  • abono/xserver
  • ajax/xserver
  • dougg3/xserver
  • chenx_dust/xserver
  • EXtremeExploit/xserver
  • jwrdegoede/xserver
  • road2react/xserver
  • acelan/xserver
  • airlied/xserver
  • gfxstrand/xorg-xserver
  • justazarsky/xserver
  • sri-ka1ki/xserver
  • rgfernandes/xserver
  • lynxeye/xserver
  • tintou/xserver
  • mattst88/xserver
  • rmader/xserver
  • linkmauve/xserver
  • kamarul6401/xserver
  • andy-zetier/xserver
  • gsittyz/xserver
  • bernhardu/xserver
  • causztic/xserver
  • cpmichael/modesetting
  • ryanneph/xserver
  • zhangyaning/xserver
  • olv/xserver
  • hongaoo/xserver
  • LiChenG-P/xserver
  • Ivaniku/x-taylan
  • dkg/xserver
  • ofourdan/xserver
  • mahkoh/xserver
  • AkiSakurai/xserver
  • msizanoen1/xserver
341 results
Show changes
Commits on Source (9)
......@@ -955,11 +955,112 @@ glamor_egl_free_screen(ScrnInfoPtr scrn)
}
}
static Bool
glamor_egl_try_big_gl_api(ScrnInfoPtr scrn)
{
struct glamor_egl_screen_private *glamor_egl =
glamor_egl_get_screen_private(scrn);
if (eglBindAPI(EGL_OPENGL_API)) {
static const EGLint config_attribs_core[] = {
EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR,
EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR,
EGL_CONTEXT_MAJOR_VERSION_KHR,
GLAMOR_GL_CORE_VER_MAJOR,
EGL_CONTEXT_MINOR_VERSION_KHR,
GLAMOR_GL_CORE_VER_MINOR,
EGL_NONE
};
static const EGLint config_attribs[] = {
EGL_NONE
};
glamor_egl->context = eglCreateContext(glamor_egl->display,
EGL_NO_CONFIG_KHR, EGL_NO_CONTEXT,
config_attribs_core);
if (glamor_egl->context == EGL_NO_CONTEXT)
glamor_egl->context = eglCreateContext(glamor_egl->display,
EGL_NO_CONFIG_KHR,
EGL_NO_CONTEXT,
config_attribs);
}
if (glamor_egl->context != EGL_NO_CONTEXT) {
if (!eglMakeCurrent(glamor_egl->display,
EGL_NO_SURFACE, EGL_NO_SURFACE, glamor_egl->context)) {
xf86DrvMsg(scrn->scrnIndex, X_ERROR,
"Failed to make GL context current\n");
return FALSE;
}
if (epoxy_gl_version() < 21) {
xf86DrvMsg(scrn->scrnIndex, X_INFO,
"glamor: Ignoring GL < 2.1, falling back to GLES.\n");
eglDestroyContext(glamor_egl->display, glamor_egl->context);
glamor_egl->context = EGL_NO_CONTEXT;
}
xf86DrvMsg(scrn->scrnIndex, X_INFO,
"glamor: Using OpenGL %d.%d context.\n",
epoxy_gl_version() / 10,
epoxy_gl_version() % 10);
}
return TRUE;
}
static Bool
glamor_egl_try_gles_api(ScrnInfoPtr scrn)
{
struct glamor_egl_screen_private *glamor_egl =
glamor_egl_get_screen_private(scrn);
static const EGLint config_attribs[] = {
EGL_CONTEXT_CLIENT_VERSION, 2,
EGL_NONE
};
if (!eglBindAPI(EGL_OPENGL_ES_API)) {
xf86DrvMsg(scrn->scrnIndex, X_ERROR,
"glamor: Failed to bind GLES API.\n");
return FALSE;
}
glamor_egl->context = eglCreateContext(glamor_egl->display,
EGL_NO_CONFIG_KHR, EGL_NO_CONTEXT,
config_attribs);
if (glamor_egl->context != EGL_NO_CONTEXT) {
if (!eglMakeCurrent(glamor_egl->display,
EGL_NO_SURFACE, EGL_NO_SURFACE, glamor_egl->context)) {
xf86DrvMsg(scrn->scrnIndex, X_ERROR,
"Failed to make GLES context current\n");
return FALSE;
}
xf86DrvMsg(scrn->scrnIndex, X_INFO,
"glamor: Using OpenGL ES %d.%d context.\n",
epoxy_gl_version() / 10,
epoxy_gl_version() % 10);
}
return TRUE;
}
enum {
GLAMOREGLOPT_RENDERING_API,
};
static const OptionInfoRec GlamorEGLOptions[] = {
{ GLAMOREGLOPT_RENDERING_API, "RenderingAPI", OPTV_STRING, {0}, FALSE },
{ -1, NULL, OPTV_NONE, {0}, FALSE },
};
Bool
glamor_egl_init(ScrnInfoPtr scrn, int fd)
{
struct glamor_egl_screen_private *glamor_egl;
const GLubyte *renderer;
OptionInfoPtr options;
const char *api = NULL;
Bool es_allowed = TRUE;
Bool force_es = FALSE;
glamor_egl = calloc(sizeof(*glamor_egl), 1);
if (glamor_egl == NULL)
......@@ -967,6 +1068,16 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
if (xf86GlamorEGLPrivateIndex == -1)
xf86GlamorEGLPrivateIndex = xf86AllocateScrnInfoPrivateIndex();
options = xnfalloc(sizeof(GlamorEGLOptions));
memcpy(options, GlamorEGLOptions, sizeof(GlamorEGLOptions));
xf86ProcessOptions(scrn->scrnIndex, scrn->options, options);
api = xf86GetOptValString(options, GLAMOREGLOPT_RENDERING_API);
if (api && !strncasecmp(api, "es", 2))
force_es = TRUE;
else if (api && !strncasecmp(api, "gl", 2))
es_allowed = FALSE;
free(options);
scrn->privates[xf86GlamorEGLPrivateIndex].ptr = glamor_egl;
glamor_egl->fd = fd;
glamor_egl->gbm = gbm_create_device(glamor_egl->fd);
......@@ -1004,74 +1115,20 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd)
GLAMOR_CHECK_EGL_EXTENSION(KHR_surfaceless_context);
GLAMOR_CHECK_EGL_EXTENSION(KHR_no_config_context);
if (eglBindAPI(EGL_OPENGL_API)) {
static const EGLint config_attribs_core[] = {
EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR,
EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR,
EGL_CONTEXT_MAJOR_VERSION_KHR,
GLAMOR_GL_CORE_VER_MAJOR,
EGL_CONTEXT_MINOR_VERSION_KHR,
GLAMOR_GL_CORE_VER_MINOR,
EGL_NONE
};
static const EGLint config_attribs[] = {
EGL_NONE
};
glamor_egl->context = eglCreateContext(glamor_egl->display,
EGL_NO_CONFIG_KHR, EGL_NO_CONTEXT,
config_attribs_core);
if (glamor_egl->context == EGL_NO_CONTEXT)
glamor_egl->context = eglCreateContext(glamor_egl->display,
EGL_NO_CONFIG_KHR,
EGL_NO_CONTEXT,
config_attribs);
if (!force_es) {
if(!glamor_egl_try_big_gl_api(scrn))
goto error;
}
if (glamor_egl->context != EGL_NO_CONTEXT) {
if (!eglMakeCurrent(glamor_egl->display,
EGL_NO_SURFACE, EGL_NO_SURFACE, glamor_egl->context)) {
xf86DrvMsg(scrn->scrnIndex, X_ERROR,
"Failed to make GL context current\n");
if (glamor_egl->context == EGL_NO_CONTEXT && es_allowed) {
if(!glamor_egl_try_gles_api(scrn))
goto error;
}
if (epoxy_gl_version() < 21) {
xf86DrvMsg(scrn->scrnIndex, X_INFO,
"glamor: Ignoring GL < 2.1, falling back to GLES.\n");
eglDestroyContext(glamor_egl->display, glamor_egl->context);
glamor_egl->context = EGL_NO_CONTEXT;
}
}
if (glamor_egl->context == EGL_NO_CONTEXT) {
static const EGLint config_attribs[] = {
EGL_CONTEXT_CLIENT_VERSION, 2,
EGL_NONE
};
if (!eglBindAPI(EGL_OPENGL_ES_API)) {
xf86DrvMsg(scrn->scrnIndex, X_ERROR,
"glamor: Failed to bind either GL or GLES APIs.\n");
goto error;
}
glamor_egl->context = eglCreateContext(glamor_egl->display,
EGL_NO_CONFIG_KHR, EGL_NO_CONTEXT,
config_attribs);
if (glamor_egl->context == EGL_NO_CONTEXT) {
xf86DrvMsg(scrn->scrnIndex, X_ERROR,
"glamor: Failed to create GL or GLES2 contexts\n");
goto error;
}
if (!eglMakeCurrent(glamor_egl->display,
EGL_NO_SURFACE, EGL_NO_SURFACE, glamor_egl->context)) {
xf86DrvMsg(scrn->scrnIndex, X_ERROR,
"Failed to make GLES2 context current\n");
goto error;
}
xf86DrvMsg(scrn->scrnIndex, X_ERROR,
"glamor: Failed to create GL or GLES2 contexts\n");
goto error;
}
renderer = glGetString(GL_RENDERER);
......
......@@ -347,7 +347,7 @@ ApplyAutoRepeat(DeviceIntPtr dev)
xf86Msg(X_CONFIG, "AutoRepeat: %ld %ld\n", delay, rate);
xkbi->desc->ctrls->repeat_delay = delay;
xkbi->desc->ctrls->repeat_interval = rate;
xkbi->desc->ctrls->repeat_interval = 1000 / rate;
}
/***********************************************************************
......
......@@ -2096,6 +2096,14 @@ use for the screen. This may be used to select an alternate implementation
for development, debugging, or alternate feature sets.
Default: mesa.
.TP 7
.BI "Option \*RenderingAPI\*q \*q" string \*q
This option specifies an rendering API for use in conjunction with Glamor
accel method. You can specify OpenGL with a value "gl" and OpenGL ES with a
value "es", and the default is both, when Glamor fallbacks to GLES if GL 2.1 is
not available. This may be useful for embedded and old cards, where GL ES
feature set works faster than GL feature set.
Default: gl.
.TP 7
.BI "Option \*qInitPrimary\*q \*q" boolean \*q
Use the Int10 module to initialize the primary graphics card.
Normally, only secondary cards are soft-booted using the Int10 module, as the
......
......@@ -80,6 +80,15 @@ Sets the geometry of the \fIXwayland\fP window to \fIWxH\fP when running rootful
This option is not compatible with rootless mode (\fI-rootless\fP).
.TP 8
.B \-glamor " [\fIgl|es|off\fP]"
Use given rendering API for Glamor acceleration. Possible options are \fIgl\fP and \fIes\fP.
If \fIXwayland\fP was compiled with Glamor support, this option will instruct \fIXwayland\fP
to use only requested API for Glamor. If this set to \fIoff\fP, effect is equal to \fI-shm\fP option.
Without this option and without \fI-shm\fP option, \fIXwayland\fP tries the OpenGL rendering API first,
and fallback to GL ES if GL version is less than 2.1.
This option is not compatible with \fI-shm\fP option.
.TP 8
.B \-host-grab
Disable host keyboard shorcuts and confine the pointer when running rootful.
......@@ -123,6 +132,8 @@ to be an X window manager as well.
.BI \-shm
Force the shared memory backend instead of glamor (if available) for passing
buffers to the Wayland server.
This option is not compatible with \fI-glamor\fP option.
.TP 8
.BR \-verbose " [\fIn\fP]"
Sets the verbosity level for information printed on stderr. If the
......
......@@ -175,6 +175,7 @@ xwayland_server = executable(
xwayland_vars = [
'have_glamor=' + build_glamor.to_string(),
'have_glamor_api=' + build_glamor.to_string(),
'have_eglstream=' + build_eglstream.to_string(),
'have_initfd=true',
'have_listenfd=true',
......
......@@ -962,6 +962,11 @@ xwl_glamor_eglstream_init_egl(struct xwl_screen *xwl_screen)
};
int n;
if (!(xwl_screen->glamor & XWL_GLAMOR_GL)) {
ErrorF("glamor: eglstream backend requires desktop OpenGL\n");
goto error;
}
xwl_screen->egl_display = glamor_egl_get_display(
EGL_PLATFORM_DEVICE_EXT, xwl_eglstream->egl_device);
if (!xwl_screen->egl_display)
......
......@@ -1072,6 +1072,9 @@ xwl_glamor_try_big_gl_api(struct xwl_screen *xwl_screen)
};
int gl_version;
if (!(xwl_screen->glamor & XWL_GLAMOR_GL))
return FALSE;
eglBindAPI(EGL_OPENGL_API);
xwl_screen->egl_context =
......@@ -1112,6 +1115,9 @@ xwl_glamor_try_gles_api(struct xwl_screen *xwl_screen)
EGL_NONE,
};
if (!(xwl_screen->glamor & XWL_GLAMOR_GLES))
return FALSE;
eglBindAPI(EGL_OPENGL_ES_API);
xwl_screen->egl_context = eglCreateContext(xwl_screen->egl_display,
......
......@@ -41,6 +41,13 @@ typedef enum _xwl_egl_backend_flags {
XWL_EGL_BACKEND_NEEDS_N_BUFFERING = (1 << 1),
} xwl_egl_backend_flags;
typedef enum _xwl_glamor_mode_flags{
XWL_GLAMOR_NONE = 0,
XWL_GLAMOR_GL = (1 << 0),
XWL_GLAMOR_GLES = (1 << 1),
XWL_GLAMOR_DEFAULT = XWL_GLAMOR_GL | XWL_GLAMOR_GLES,
} xwl_glamor_mode_flags;
struct xwl_egl_backend {
/* Set by the backend if available */
Bool is_available;
......
......@@ -54,6 +54,9 @@
#ifdef XWL_HAS_EI
#include "xwayland-xtest.h"
#endif
#ifdef XWL_HAS_GLAMOR
#include "xwayland-glamor.h"
#endif
#ifdef MITSHM
#include "shmint.h"
......@@ -757,7 +760,7 @@ xwl_screen_init(ScreenPtr pScreen, int argc, char **argv)
#endif
#ifdef XWL_HAS_GLAMOR
xwl_screen->glamor = 1;
xwl_screen->glamor = XWL_GLAMOR_DEFAULT;
#endif
for (i = 1; i < argc; i++) {
......@@ -778,7 +781,7 @@ xwl_screen_init(ScreenPtr pScreen, int argc, char **argv)
defaultScreenSaverInterval = 0;
}
else if (strcmp(argv[i], "-shm") == 0) {
xwl_screen->glamor = 0;
xwl_screen->glamor = XWL_GLAMOR_NONE;
}
else if (strcmp(argv[i], "-eglstream") == 0) {
#ifdef XWL_HAS_EGLSTREAM
......@@ -787,6 +790,18 @@ xwl_screen_init(ScreenPtr pScreen, int argc, char **argv)
ErrorF("Xwayland glamor: this build does not have EGLStream support\n");
#endif
}
#ifdef XWL_HAS_GLAMOR
else if (strcmp(argv[i], "-glamor") == 0) {
if (strncmp(argv[i + 1], "es", 2) == 0)
xwl_screen->glamor = XWL_GLAMOR_GLES;
else if (strncmp(argv[i + 1], "gl", 2) == 0)
xwl_screen->glamor = XWL_GLAMOR_GL;
else if (strncmp(argv[i + 1], "off", 3) == 0)
xwl_screen->glamor = XWL_GLAMOR_NONE;
else
ErrorF("Xwayland glamor: unknown rendering API selected\n");
}
#endif
else if (strcmp(argv[i], "-force-xrandr-emulation") == 0) {
xwl_screen->force_xrandr_emulation = 1;
}
......@@ -961,7 +976,7 @@ xwl_screen_init(ScreenPtr pScreen, int argc, char **argv)
if (xwl_screen->egl_backend == NULL || !xwl_glamor_init(xwl_screen)) {
ErrorF("Failed to initialize glamor, falling back to sw\n");
xwl_screen->glamor = 0;
xwl_screen->glamor = XWL_GLAMOR_NONE;
}
}
#ifdef GLAMOR_HAS_GBM
......
......@@ -60,7 +60,7 @@ struct xwl_screen {
enum RootClipMode root_clip_mode;
int rootless;
int glamor;
xwl_glamor_mode_flags glamor;
int present;
int force_xrandr_emulation;
int fullscreen;
......
......@@ -102,6 +102,9 @@ ddxUseMsg(void)
ErrorF("-eglstream use eglstream backend for nvidia GPUs\n");
#endif
ErrorF("-shm use shared memory for passing buffers\n");
#ifdef XWL_HAS_GLAMOR
ErrorF("-glamor [gl|es|off] use given API for Glamor acceleration. Incompatible with -shm option\n");
#endif
ErrorF("-verbose [n] verbose startup messages\n");
ErrorF("-version show the server version and exit\n");
ErrorF("-noTouchPointerEmulation disable touch pointer emulation\n");
......@@ -207,6 +210,13 @@ ddxProcessArgument(int argc, char *argv[], int i)
else if (strcmp(argv[i], "-shm") == 0) {
return 1;
}
#ifdef XWL_HAS_GLAMOR
else if (strcmp(argv[i], "-glamor") == 0) {
CHECK_FOR_REQUIRED_ARGUMENTS(1);
/* Only check here, actual work inside xwayland-screen.c */
return 2;
}
#endif
else if (strcmp(argv[i], "-verbose") == 0) {
if (++i < argc && argv[i]) {
char *end;
......