Re: [PATCH] glx: Duplicate relevant fbconfigs for compositing visuals
Hi, On 10/12/2017 10:32 PM, Adam Jackson wrote: On Thu, 2017-10-12 at 15:06 +0200, Thomas Hellstrom wrote: Ping? If we're going to do this, and I guess we have to, I'd like to see two changes: 1) Don't duplicate single-buffered fbconfigs OK. I was trying to figure out what Nvidia was doing here, and they appear to expose both single-buffer and sRGB 32-bit visuals. 2) Point all these fbconfigs at the same visual The problem with doing that is that the glx visual pointed to by the fbconfig might have completely different glx traits compared to the original fbconfig. I'm not sure whether that will cause any problems but I guess it might be confusing. Again, looking at what Nvidia does, they expose a number of 32-bit fbconfigs. The follow-up RFC patch tries to reduce the number of identical GLX visuals, though. Let me know whether you think we should go the nvidia way or try to expose as little as possible. Another question that has surfaced is the criterion we use to determine whether a visual should be compositing or not. In the patch I've considered 32-bit visuals as compositing. But looking at older dri1 client side code, it considers all visuals with depth != DefaultDepth(dpy, screen) as compositing. Thanks, Thomas - ajax ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
Re: [PATCH xserver 1/2] os: Add epoll-like pollset implementation for AIX
Peter Harriswrites: > AIX's poll only allows FD_SETSIZE entries in the fd list, which is > insufficient for expanded MaxClients. I can't evaluate whether these patches actually do the right thing, but they shouldn't affect systems which don't support the necessary functionality. I assume someone might review the Solaris patch, but is there anyone who can review the AIX patch? For the pair: Acked-by: Keith Packard -- -keith signature.asc Description: PGP signature ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
[PATCH xserver 2/2] os: Add epoll-like port implementation for Solaris
x11perf -noop with 200 xlogos connected is slightly faster with ports: before after Operation -- - 1840.0 1920.0 (1.04) X protocol NoOperation Signed-off-by: Peter Harris--- include/meson.build | 1 + os/ospoll.c | 128 +--- 2 files changed, 122 insertions(+), 7 deletions(-) diff --git a/include/meson.build b/include/meson.build index e0ebee258..8eec9ce36 100644 --- a/include/meson.build +++ b/include/meson.build @@ -126,6 +126,7 @@ conf_data.set('HAVE_MMAP', cc.has_function('mmap')) conf_data.set('HAVE_POLL', cc.has_function('poll')) conf_data.set('HAVE_POLLSET_CREATE', cc.has_function('pollset_create')) conf_data.set('HAVE_POSIX_FALLOCATE', cc.has_function('posix_fallocate')) +conf_data.set('HAVE_PORT_CREATE', cc.has_function('port_create')) conf_data.set('HAVE_REALLOCARRAY', cc.has_function('reallocarray', dependencies: libbsd_dep)) conf_data.set('HAVE_SETEUID', cc.has_function('seteuid')) conf_data.set('HAVE_SETITIMER', cc.has_function('setitimer')) diff --git a/os/ospoll.c b/os/ospoll.c index 4a59a5e6b..db9e73811 100644 --- a/os/ospoll.c +++ b/os/ospoll.c @@ -38,6 +38,12 @@ #define HAVE_OSPOLL 1 #endif +#if !HAVE_OSPOLL && defined(HAVE_PORT_CREATE) +#include +#define PORT1 +#define HAVE_OSPOLL 1 +#endif + #if !HAVE_OSPOLL && defined(HAVE_EPOLL_CREATE1) #include #define EPOLL 1 @@ -71,7 +77,7 @@ struct ospoll { #endif -#if EPOLL +#if EPOLL || PORT #include /* epoll-based implementation */ @@ -128,7 +134,7 @@ ospoll_find(struct ospoll *ospoll, int fd) while (lo <= hi) { int m = (lo + hi) >> 1; -#if EPOLL +#if EPOLL || PORT int t = ospoll->fds[m]->fd; #endif #if POLL || POLLSET @@ -145,7 +151,7 @@ ospoll_find(struct ospoll *ospoll, int fd) return -(lo + 1); } -#if EPOLL +#if EPOLL || PORT static void ospoll_clean_deleted(struct ospoll *ospoll) { @@ -205,6 +211,17 @@ ospoll_create(void) } return ospoll; #endif +#if PORT +struct ospoll *ospoll = calloc(1, sizeof (struct ospoll)); + +ospoll->epoll_fd = port_create(); +if (ospoll->epoll_fd < 0) { +free (ospoll); +return NULL; +} +xorg_list_init(>deleted); +return ospoll; +#endif #if EPOLL struct ospoll *ospoll = calloc(1, sizeof (struct ospoll)); @@ -232,7 +249,7 @@ ospoll_destroy(struct ospoll *ospoll) free(ospoll); } #endif -#if EPOLL +#if EPOLL || PORT if (ospoll) { assert (ospoll->num == 0); close(ospoll->epoll_fd); @@ -282,6 +299,41 @@ ospoll_add(struct ospoll *ospoll, int fd, ospoll->fds[pos].callback = callback; ospoll->fds[pos].data = data; #endif +#if PORT +struct ospollfd *osfd; + +if (pos < 0) { +osfd = calloc(1, sizeof (struct ospollfd)); +if (!osfd) +return FALSE; + +if (ospoll->num >= ospoll->size) { +struct ospollfd **new_fds; +int new_size = ospoll->size ? ospoll->size * 2 : MAXCLIENTS * 2; + +new_fds = reallocarray(ospoll->fds, new_size, sizeof (ospoll->fds[0])); +if (!new_fds) { +free (osfd); +return FALSE; +} +ospoll->fds = new_fds; +ospoll->size = new_size; +} + +osfd->fd = fd; +osfd->xevents = 0; + +pos = -pos - 1; +array_insert(ospoll->fds, ospoll->num, sizeof (ospoll->fds[0]), pos); +ospoll->fds[pos] = osfd; +ospoll->num++; +} else { +osfd = ospoll->fds[pos]; +} +osfd->data = data; +osfd->callback = callback; +osfd->trigger = trigger; +#endif #if EPOLL struct ospollfd *osfd; @@ -378,6 +430,16 @@ ospoll_remove(struct ospoll *ospoll, int fd) array_delete(ospoll->fds, ospoll->num, sizeof (ospoll->fds[0]), pos); ospoll->num--; #endif +#if PORT +struct ospollfd *osfd = ospoll->fds[pos]; +port_dissociate(ospoll->epoll_fd, PORT_SOURCE_FD, fd); + +array_delete(ospoll->fds, ospoll->num, sizeof (ospoll->fds[0]), pos); +ospoll->num--; +osfd->callback = NULL; +osfd->data = NULL; +xorg_list_add(>deleted, >deleted); +#endif #if EPOLL struct ospollfd *osfd = ospoll->fds[pos]; struct epoll_event ev; @@ -400,6 +462,19 @@ ospoll_remove(struct ospoll *ospoll, int fd) } } +#if PORT +static void +epoll_mod(struct ospoll *ospoll, struct ospollfd *osfd) +{ +int events = 0; +if (osfd->xevents & X_NOTIFY_READ) +events |= EPOLLIN; +if (osfd->xevents & X_NOTIFY_WRITE) +events |= EPOLLOUT; +port_associate(ospool->epoll_fd, PORT_SOURCE_FD, osfd->fd, events, osfd); +} +#endif + #if EPOLL static void epoll_mod(struct ospoll *ospoll, struct ospollfd *osfd) @@ -436,7 +511,7 @@ ospoll_listen(struct ospoll *ospoll, int
[PATCH xserver 1/2] os: Add epoll-like pollset implementation for AIX
AIX's poll only allows FD_SETSIZE entries in the fd list, which is insufficient for expanded MaxClients. As a bonus, x11perf -noop with ~250 xlogos connected is slightly faster with pollset: before after Operation - 575.0 599.0 (1.04) X protocol NoOperation Signed-off-by: Peter Harris--- include/meson.build | 1 + os/ospoll.c | 146 +++- 2 files changed, 146 insertions(+), 1 deletion(-) diff --git a/include/meson.build b/include/meson.build index 5d746eb70..e0ebee258 100644 --- a/include/meson.build +++ b/include/meson.build @@ -124,6 +124,7 @@ conf_data.set('HAVE_GETPROGNAME', cc.has_function('getprogname')) conf_data.set('HAVE_GETZONEID', cc.has_function('getzoneid')) conf_data.set('HAVE_MMAP', cc.has_function('mmap')) conf_data.set('HAVE_POLL', cc.has_function('poll')) +conf_data.set('HAVE_POLLSET_CREATE', cc.has_function('pollset_create')) conf_data.set('HAVE_POSIX_FALLOCATE', cc.has_function('posix_fallocate')) conf_data.set('HAVE_REALLOCARRAY', cc.has_function('reallocarray', dependencies: libbsd_dep)) conf_data.set('HAVE_SETEUID', cc.has_function('seteuid')) diff --git a/os/ospoll.c b/os/ospoll.c index ca14a0c8c..4a59a5e6b 100644 --- a/os/ospoll.c +++ b/os/ospoll.c @@ -32,6 +32,12 @@ #include "ospoll.h" #include "list.h" +#if !HAVE_OSPOLL && defined(HAVE_POLLSET_CREATE) +#include +#define POLLSET 1 +#define HAVE_OSPOLL 1 +#endif + #if !HAVE_OSPOLL && defined(HAVE_EPOLL_CREATE1) #include #define EPOLL 1 @@ -44,6 +50,27 @@ #define HAVE_OSPOLL 1 #endif +#if POLLSET + +// pollset-based implementation (as seen on AIX) +struct ospollfd { +int fd; +int xevents; +short revents; +enum ospoll_trigger trigger; +void(*callback)(int fd, int xevents, void *data); +void*data; +}; + +struct ospoll { +pollset_t ps; +struct ospollfd *fds; +int num; +int size; +}; + +#endif + #if EPOLL #include @@ -104,7 +131,7 @@ ospoll_find(struct ospoll *ospoll, int fd) #if EPOLL int t = ospoll->fds[m]->fd; #endif -#if POLL +#if POLL || POLLSET int t = ospoll->fds[m].fd; #endif @@ -168,6 +195,16 @@ array_delete(void *base, size_t num, size_t size, size_t pos) struct ospoll * ospoll_create(void) { +#if POLLSET +struct ospoll *ospoll = calloc(1, sizeof (struct ospoll)); + +ospoll->ps = pollset_create(-1); +if (ospoll->ps < 0) { +free (ospoll); +return NULL; +} +return ospoll; +#endif #if EPOLL struct ospoll *ospoll = calloc(1, sizeof (struct ospoll)); @@ -187,6 +224,14 @@ ospoll_create(void) void ospoll_destroy(struct ospoll *ospoll) { +#if POLLSET +if (ospoll) { +assert (ospoll->num == 0); +pollset_destroy(ospoll->ps); +free(ospoll->fds); +free(ospoll); +} +#endif #if EPOLL if (ospoll) { assert (ospoll->num == 0); @@ -213,6 +258,30 @@ ospoll_add(struct ospoll *ospoll, int fd, void *data) { int pos = ospoll_find(ospoll, fd); +#if POLLSET +if (pos < 0) { +if (ospoll->num == ospoll->size) { +struct ospollfd *new_fds; +int new_size = ospoll->size ? ospoll->size * 2 : MAXCLIENTS * 2; + +new_fds = reallocarray(ospoll->fds, new_size, sizeof (ospoll->fds[0])); +if (!new_fds) +return FALSE; +ospoll->fds = new_fds; +ospoll->size = new_size; +} +pos = -pos - 1; +array_insert(ospoll->fds, ospoll->num, sizeof (ospoll->fds[0]), pos); +ospoll->num++; + +ospoll->fds[pos].fd = fd; +ospoll->fds[pos].xevents = 0; +ospoll->fds[pos].revents = 0; +} +ospoll->fds[pos].trigger = trigger; +ospoll->fds[pos].callback = callback; +ospoll->fds[pos].data = data; +#endif #if EPOLL struct ospollfd *osfd; @@ -301,6 +370,14 @@ ospoll_remove(struct ospoll *ospoll, int fd) pos = ospoll_find(ospoll, fd); if (pos >= 0) { +#if POLLSET +struct ospollfd *osfd = >fds[pos]; +struct poll_ctl ctl = { .cmd = PS_DELETE, .fd = fd }; +pollset_ctl(ospoll->ps, , 1); + +array_delete(ospoll->fds, ospoll->num, sizeof (ospoll->fds[0]), pos); +ospoll->num--; +#endif #if EPOLL struct ospollfd *osfd = ospoll->fds[pos]; struct epoll_event ev; @@ -346,6 +423,19 @@ ospoll_listen(struct ospoll *ospoll, int fd, int xevents) int pos = ospoll_find(ospoll, fd); if (pos >= 0) { +#if POLLSET +struct poll_ctl ctl = { .cmd = PS_MOD, .fd = fd }; +if (xevents & X_NOTIFY_READ) { +ctl.events |= POLLIN; +ospoll->fds[pos].revents &= ~POLLIN; +} +if (xevents &
Re: [PATCH] glx: Duplicate relevant fbconfigs for compositing visuals
On Thu, 2017-10-12 at 15:06 +0200, Thomas Hellstrom wrote: > Ping? If we're going to do this, and I guess we have to, I'd like to see two changes: 1) Don't duplicate single-buffered fbconfigs 2) Point all these fbconfigs at the same visual - ajax ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
Re: [PATCH] XShmGetImage: fix censoring
On Wed, 2017-10-11 at 21:56 -0400, Nikolay Martynov wrote: > Hi. > > One more kind ping on this. It has been sent quite a long time ago > without any reply. It would really appreciate if someone could let me > know if this is a correct mailing list or not? Thanks for your patience, this looks good. Or at least, it looks better; the code is still kind of wrong, in that it's fetching the image and _then_ censoring, but since the destination is shared memory a client could potentially win the race and get some bits out that it shouldn't. And we're doing this censorship unilaterally, which seems like excess work if the windows clipping the one we're GetImage'ing from belong to the same client. Still, better than before, merged, thanks! - ajax ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
Re: [PATCH xserver 2/2] meson: Fix linkage of loadable modules for PE/COFF
On Tue, 2017-10-10 at 14:28 +0100, Jon Turney wrote: > For the loadable modules it makes sense to build for PE/COFF targets, link > those loadable modules with the import library for the Xorg executable, so > that symbols provided by the executable can be satisfied at link time (as > required by PE/COFF). > > Since this uses the syntax of using the returned build target object from an > executable() with an implib: kwarg to link_with:, introduced in meson 0.42 > and a syntax error with older meson, also update the minimum meson version > which we require in project() to that. Merged, thanks. - ajax ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
Re: [PATCH xserver] meson: Don't forget to define DEBUG!
On Wed, 2017-10-11 at 19:15 -0400, Lyude Paul wrote: > Signed-off-by: Lyude PaulNak. One, because debugoptimized appears to be the default build type, and I'm not really convinced it makes sense to enable all the random debugging bits in the normal case, at least not without putting in some effort to rationalize the existing "debug" code. (grep for DebugF() and see just how arbitrary things are.) But also two because it breaks the build: ../hw/xfree86/fbdevhw/fbdevhw.c:123:10: error: #if with no expression #if DEBUG ^ ../hw/xfree86/fbdevhw/fbdevhw.c: In function ‘fbdevHWSetMode’: ../hw/xfree86/fbdevhw/fbdevhw.c:469:10: error: #if with no expression #if DEBUG ^ ../hw/xfree86/fbdevhw/fbdevhw.c:489:10: error: #if with no expression #if DEBUG ^ - ajax ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
[ANNOUNCE] xorg-server 1.19.5
One regression fix since 1.19.4 (mea culpa), and fixes for CVEs 2017- 12176 through 2017-12187. C is a terrible language, please stop writing code in it. Adam Jackson (2): Revert "xf86-video-modesetting: Add ms_queue_vblank helper [v3]" xserver 1.19.5 Michal Srb (1): os: Make sure big requests have sufficient length. Nathan Kidd (7): Unvalidated lengths xfixes: unvalidated lengths (CVE-2017-12183) hw/xfree86: unvalidated lengths Xi: integer overflow and unvalidated length in (S)ProcXIBarrierReleasePointer Xi: fix wrong extra length check in ProcXIChangeHierarchy (CVE-2017-12178) dbe: Unvalidated variable-length request in ProcDbeGetVisualInfo (CVE-2017-12177) Unvalidated extra length in ProcEstablishConnection (CVE-2017-12176) git tag: xorg-server-1.19.5 https://xorg.freedesktop.org/archive/individual/xserver/xorg-server-1.19.5.tar.bz2 MD5: 4ac6feeae6790436ce9de879ca9a3bf8 xorg-server-1.19.5.tar.bz2 SHA1: 307d3405f709f7e41966c850b37deefe7f83eb9b xorg-server-1.19.5.tar.bz2 SHA256: 18fffa8eb93d06d2800d06321fc0df4d357684d8d714315a66d8dfa7df251447 xorg-server-1.19.5.tar.bz2 SHA512: 928dea5850b98cd815004cfa133eca23cfa9521920c934c68a92787f2cae13cca1534eee772a4fb74b8ae8cb92662b5d68b95b834c8aa8ec57cd57cb4e5dd45c xorg-server-1.19.5.tar.bz2 PGP: https://xorg.freedesktop.org/archive/individual/xserver/xorg-server-1.19.5.tar.bz2.sig https://xorg.freedesktop.org/archive/individual/xserver/xorg-server-1.19.5.tar.gz MD5: 97ab05c006718d6d484e4e5fe1aec534 xorg-server-1.19.5.tar.gz SHA1: 842cc1fbc26887698a70c6ad538bb07fa94b0130 xorg-server-1.19.5.tar.gz SHA256: 1818068b6b86387ee0e392cbe28208ff949d253a1611d17bf2908961f3669b1c xorg-server-1.19.5.tar.gz SHA512: 34f10c22bc7e003245c423288c495ef98707d7ba23ff4207d6dfde32e917fd752acc285e65da39805e74cfa275a655b1b0bf07bb5d2bc82a773854a17bc81ded xorg-server-1.19.5.tar.gz PGP: https://xorg.freedesktop.org/archive/individual/xserver/xorg-server-1.19.5.tar.gz.sig - ajax signature.asc Description: This is a digitally signed message part ___ xorg-announce mailing list xorg-announce@lists.x.org https://lists.x.org/mailman/listinfo/xorg-announce
[ANNOUNCE] xorg-server 1.19.5
One regression fix since 1.19.4 (mea culpa), and fixes for CVEs 2017- 12176 through 2017-12187. C is a terrible language, please stop writing code in it. Adam Jackson (2): Revert "xf86-video-modesetting: Add ms_queue_vblank helper [v3]" xserver 1.19.5 Michal Srb (1): os: Make sure big requests have sufficient length. Nathan Kidd (7): Unvalidated lengths xfixes: unvalidated lengths (CVE-2017-12183) hw/xfree86: unvalidated lengths Xi: integer overflow and unvalidated length in (S)ProcXIBarrierReleasePointer Xi: fix wrong extra length check in ProcXIChangeHierarchy (CVE-2017-12178) dbe: Unvalidated variable-length request in ProcDbeGetVisualInfo (CVE-2017-12177) Unvalidated extra length in ProcEstablishConnection (CVE-2017-12176) git tag: xorg-server-1.19.5 https://xorg.freedesktop.org/archive/individual/xserver/xorg-server-1.19.5.tar.bz2 MD5: 4ac6feeae6790436ce9de879ca9a3bf8 xorg-server-1.19.5.tar.bz2 SHA1: 307d3405f709f7e41966c850b37deefe7f83eb9b xorg-server-1.19.5.tar.bz2 SHA256: 18fffa8eb93d06d2800d06321fc0df4d357684d8d714315a66d8dfa7df251447 xorg-server-1.19.5.tar.bz2 SHA512: 928dea5850b98cd815004cfa133eca23cfa9521920c934c68a92787f2cae13cca1534eee772a4fb74b8ae8cb92662b5d68b95b834c8aa8ec57cd57cb4e5dd45c xorg-server-1.19.5.tar.bz2 PGP: https://xorg.freedesktop.org/archive/individual/xserver/xorg-server-1.19.5.tar.bz2.sig https://xorg.freedesktop.org/archive/individual/xserver/xorg-server-1.19.5.tar.gz MD5: 97ab05c006718d6d484e4e5fe1aec534 xorg-server-1.19.5.tar.gz SHA1: 842cc1fbc26887698a70c6ad538bb07fa94b0130 xorg-server-1.19.5.tar.gz SHA256: 1818068b6b86387ee0e392cbe28208ff949d253a1611d17bf2908961f3669b1c xorg-server-1.19.5.tar.gz SHA512: 34f10c22bc7e003245c423288c495ef98707d7ba23ff4207d6dfde32e917fd752acc285e65da39805e74cfa275a655b1b0bf07bb5d2bc82a773854a17bc81ded xorg-server-1.19.5.tar.gz PGP: https://xorg.freedesktop.org/archive/individual/xserver/xorg-server-1.19.5.tar.gz.sig - ajax signature.asc Description: This is a digitally signed message part ___ xorg@lists.x.org: X.Org support Archives: http://lists.freedesktop.org/archives/xorg Info: https://lists.x.org/mailman/listinfo/xorg Your subscription address: %(user_address)s
[ANNOUNCE] xorg-server 1.19.5
One regression fix since 1.19.4 (mea culpa), and fixes for CVEs 2017- 12176 through 2017-12187. C is a terrible language, please stop writing code in it. Adam Jackson (2): Revert "xf86-video-modesetting: Add ms_queue_vblank helper [v3]" xserver 1.19.5 Michal Srb (1): os: Make sure big requests have sufficient length. Nathan Kidd (7): Unvalidated lengths xfixes: unvalidated lengths (CVE-2017-12183) hw/xfree86: unvalidated lengths Xi: integer overflow and unvalidated length in (S)ProcXIBarrierReleasePointer Xi: fix wrong extra length check in ProcXIChangeHierarchy (CVE-2017-12178) dbe: Unvalidated variable-length request in ProcDbeGetVisualInfo (CVE-2017-12177) Unvalidated extra length in ProcEstablishConnection (CVE-2017-12176) git tag: xorg-server-1.19.5 https://xorg.freedesktop.org/archive/individual/xserver/xorg-server-1.19.5.tar.bz2 MD5: 4ac6feeae6790436ce9de879ca9a3bf8 xorg-server-1.19.5.tar.bz2 SHA1: 307d3405f709f7e41966c850b37deefe7f83eb9b xorg-server-1.19.5.tar.bz2 SHA256: 18fffa8eb93d06d2800d06321fc0df4d357684d8d714315a66d8dfa7df251447 xorg-server-1.19.5.tar.bz2 SHA512: 928dea5850b98cd815004cfa133eca23cfa9521920c934c68a92787f2cae13cca1534eee772a4fb74b8ae8cb92662b5d68b95b834c8aa8ec57cd57cb4e5dd45c xorg-server-1.19.5.tar.bz2 PGP: https://xorg.freedesktop.org/archive/individual/xserver/xorg-server-1.19.5.tar.bz2.sig https://xorg.freedesktop.org/archive/individual/xserver/xorg-server-1.19.5.tar.gz MD5: 97ab05c006718d6d484e4e5fe1aec534 xorg-server-1.19.5.tar.gz SHA1: 842cc1fbc26887698a70c6ad538bb07fa94b0130 xorg-server-1.19.5.tar.gz SHA256: 1818068b6b86387ee0e392cbe28208ff949d253a1611d17bf2908961f3669b1c xorg-server-1.19.5.tar.gz SHA512: 34f10c22bc7e003245c423288c495ef98707d7ba23ff4207d6dfde32e917fd752acc285e65da39805e74cfa275a655b1b0bf07bb5d2bc82a773854a17bc81ded xorg-server-1.19.5.tar.gz PGP: https://xorg.freedesktop.org/archive/individual/xserver/xorg-server-1.19.5.tar.gz.sig - ajax signature.asc Description: This is a digitally signed message part ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
Re: [PATCH xserver] meson: Add xkb_bin_dir option
On Thu, 2017-10-12 at 09:35 +0100, Daniel Stone wrote: > Hi, > > On 11 October 2017 at 23:03, Lyude Paulwrote: > > Now that we can actually configure all of the directories xkb uses for > > finding things, we can (finally, but only with meson) finally make it so > > that with the correct meson configuration the Xserver will "just work" > > without any additional changes to the installation prefix after > > building. > > > > For the people like me who have since scripted this part out of their > > build process and forgotten about it, building and installing the X > > server into a non-standard prefix has always required the following (or > > something else that makes sure that X has a valid xkbcomp configuration) > > commands be run right after doing the installation: > > > > # start in root of prefix you installed X to > > mkdir -pv share/X11/xkb/rules > > ln -s /usr/share/X11/xkb/rules/evdev share/X11/xkb/rules/ > > rm -f bin/xkbcomp > > ln -s /usr/bin/xkbcomp bin/ > > > > The one last piece of getting rid of this post-install junk is making > > sure that we can control the directory that X uses for finding the > > xkbcomp binary from meson so we can point it at the system provided > > xkbcomp (/usr/bin/xkbcomp or similar). So, this patch adds a > > configuration option for controlling this called xkb_bin_dir. > > We really should've made xkbcomp ship a pkg-config file. Should have? https://cgit.freedesktop.org/xorg/app/xkbcomp/tree/xkbcomp.pc.in > Reviewed-by: Daniel Stone remote: I: patch #181929 updated using rev 10cba7d54668698741510374ee63dec7a3cc3647. remote: I: 1 patch(es) updated to state Accepted. To ssh://git.freedesktop.org/git/xorg/xserver b747da5e25..10cba7d546 master -> master - ajax ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
Re: [PATCH xserver] meson: Don't forget to define DEBUG!
On 12/10/2017 00:15, Lyude Paul wrote: Signed-off-by: Lyude Paul--- include/meson.build | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/meson.build b/include/meson.build index 90f8de3cb..8894885c6 100644 --- a/include/meson.build +++ b/include/meson.build @@ -196,6 +196,9 @@ conf_data.set('XvMCExtension', build_xv) conf_data.set('HAVE_SHA1_IN_LIBNETTLE', '1') # XXX +enable_debugging = (get_option('buildtype') == 'debug') or (get_option('buildtype') == 'debugoptimized') It seems you could also write this as: enable_debugging = get_option('buildtype').startswith('debug') ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
Re: [PATCH] glx: Duplicate relevant fbconfigs for compositing visuals
Ping? On 10/03/2017 02:19 PM, Thomas Hellstrom wrote: Ping? On 09/27/2017 02:28 AM, Thomas Hellstrom wrote: Previously, before GLX_OML_swap_method was fixed, both the X server and client ignored the swapMethod fbconfig value, which meant that, if the dri driver thought it exposed more than one swapMethod, it actually just exported a duplicated set of fbconfigs. When fixing GLX_OML_swap_method and restricting the choice for built-in visuals to a single swap method that meant we didn't have that many fbconfigs to choose from when pairing the compositing visual with an fbconfig, resulting in the fbconfig paired with the compositing visual becoming too restrictive for some applications, (at least for kwin). This problem would also happen if the dri driver only exposed a single swap method to begin with. So, to make sure the compositing visual gets a good enough fbconfig, duplicate fbconfigs that are suitable for compositing visuals and make sure these duplicated fbconfigs can be used only by compositing visuals. For duplicated fbconfigs not paired with a compositing visual, construct new compositing visuals, making compositing clients able to choose visuals / fbconfig more adapted to their needs. This is in some sense equivalent to adding a new "TRUECOLOR_COMPOSITING" GLX visualtype. Fixes: 4486d199bd3b ("glx: Fix visual fbconfig matching with respect to swap method") Bugzilla: https://urldefense.proofpoint.com/v2/url?u=https-3A__bugs.freedesktop.org_show-5Fbug.cgi-3Fid-3D102806=DwIGaQ=uilaK90D4TOVoH58JNXRgQ=wnSlgOCqfpNS4d02vP68_E9q2BNMCwfD2OZ_6dCFVQQ=vkuCexXu1LR8eO5b1Ah8cu0J1Xw2xvDa-Id1c2l1YzM=7kcfvmjf2zGuiPPqAk7gcOQGkmnFHowOOsXyUj9Yqfs= Signed-off-by: Thomas HellstromTested-By: Nick Sarnie --- glx/glxdricommon.c | 45 + glx/glxscreens.c | 18 -- glx/glxscreens.h | 4 3 files changed, 61 insertions(+), 6 deletions(-) diff --git a/glx/glxdricommon.c b/glx/glxdricommon.c index 96f28d0..1879bfc 100644 --- a/glx/glxdricommon.c +++ b/glx/glxdricommon.c @@ -116,13 +116,15 @@ render_type_is_pbuffer_only(unsigned renderType) static __GLXconfig * createModeFromConfig(const __DRIcoreExtension * core, const __DRIconfig * driConfig, - unsigned int visualType) + unsigned int visualType, + GLboolean duplicateForComp) { __GLXDRIconfig *config; GLint renderType = 0; unsigned int attrib, value, drawableType = GLX_PBUFFER_BIT; int i; + config = calloc(1, sizeof *config); config->driConfig = driConfig; @@ -180,6 +182,28 @@ createModeFromConfig(const __DRIcoreExtension * core, config->config.drawableType = drawableType; config->config.yInverted = GL_TRUE; +#ifdef COMPOSITE + /* + * Here we decide what fbconfigs will be duplicated for compositing. + * fgbconfigs marked with duplicatedForConf will be reserved for + * compositing visuals. + * It might look strange to do this decision this late when translation + * from a __DRIConfig is already done, but using the __DRIConfig + * accessor function becomes worse both with respect to code complexity + * and CPU usage. + */ + if (duplicateForComp && + (render_type_is_pbuffer_only(renderType) || + config->config.rgbBits != 32 || + config->config.visualRating != GLX_NONE || + config->config.sampleBuffers != 0)) { + free(config); + return NULL; + } + + config->config.duplicatedForComp = duplicateForComp; +#endif + return >config; } @@ -194,21 +218,34 @@ glxConvertConfigs(const __DRIcoreExtension * core, head.next = NULL; for (i = 0; configs[i]; i++) { - tail->next = createModeFromConfig(core, configs[i], GLX_TRUE_COLOR); + tail->next = createModeFromConfig(core, configs[i], GLX_TRUE_COLOR, + GL_FALSE); if (tail->next == NULL) break; - tail = tail->next; } for (i = 0; configs[i]; i++) { - tail->next = createModeFromConfig(core, configs[i], GLX_DIRECT_COLOR); + tail->next = createModeFromConfig(core, configs[i], GLX_DIRECT_COLOR, + GL_FALSE); if (tail->next == NULL) break; tail = tail->next; } +#ifdef COMPOSITE + /* Duplicate fbconfigs for use with compositing visuals */ + for (i = 0; configs[i]; i++) { + tail->next = createModeFromConfig(core, configs[i], GLX_TRUE_COLOR, + GL_TRUE); + if (tail->next == NULL) + continue; + + tail = tail->next; + } +#endif + return head.next; } diff --git a/glx/glxscreens.c b/glx/glxscreens.c index f000e56..99bf6dd 100644 ---
Re: [PATCH xserver] meson: Add xkb_bin_dir option
Hi, On 11 October 2017 at 23:03, Lyude Paulwrote: > Now that we can actually configure all of the directories xkb uses for > finding things, we can (finally, but only with meson) finally make it so > that with the correct meson configuration the Xserver will "just work" > without any additional changes to the installation prefix after > building. > > For the people like me who have since scripted this part out of their > build process and forgotten about it, building and installing the X > server into a non-standard prefix has always required the following (or > something else that makes sure that X has a valid xkbcomp configuration) > commands be run right after doing the installation: > > # start in root of prefix you installed X to > mkdir -pv share/X11/xkb/rules > ln -s /usr/share/X11/xkb/rules/evdev share/X11/xkb/rules/ > rm -f bin/xkbcomp > ln -s /usr/bin/xkbcomp bin/ > > The one last piece of getting rid of this post-install junk is making > sure that we can control the directory that X uses for finding the > xkbcomp binary from meson so we can point it at the system provided > xkbcomp (/usr/bin/xkbcomp or similar). So, this patch adds a > configuration option for controlling this called xkb_bin_dir. We really should've made xkbcomp ship a pkg-config file. Reviewed-by: Daniel Stone Cheers, Daniel ___ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
Bug#878170: xserver-xorg-video-radeon: Fails to match video to vsync
It tears in full screen with and without compositing in xfce On 11 October 2017 09:40:59 BST, "Michel Dänzer"wrote: >On 10/10/17 07:50 PM, Anton Ivanov wrote: >> Package: xserver-xorg-video-radeon >> Version: 1:7.8.0-1+b1 >> Severity: important >> >> Dear Maintainer, >> >> Radeon (and amdgpu for that matter) in stretch no longer match frames >> to vsync correctly. This is observable with vdpau, opengl and plain >> xvideo. >> >> This used to work correctly in jessie so this is a recent regression. >> >> This is also observable in both full screen and windowed mode. The >> bottom ~5-10% of the picture updates on the wrong vsycn which is >> clearly visible especially in action sequences and animation. >> >> Tested with vlc, mplayer, xine and other software in a variety of >> output modes. I think I have eliminated other possible common factors >> leaving the video driver (and/or firmware) the most likely culprit. > >The only possibilities for reliably avoiding tearing in Xorg have >always >been: > >1. Using a compositing manager which uses OpenGL for rendering >2. Running an application in fullscreen, using page flipping (i.e. the > application must use something like OpenGL / VDPAU / VA-API / ... for > rendering / presentation, but not something like XVideo or even pure > X11) >3. Enabling TearFree > >Note that 1.+2. are not sufficient when using rotation or other >transforms via the RandR extension. > > >Does your setup fall under any of these cases? If not, you may just >have >gotten lucky before. > > >-- >Earthling Michel Dänzer | >http://www.amd.com >Libre software enthusiast | Mesa and X >developer -- Sent from my Android device with K-9 Mail. Please excuse my brevity.___ xorg-driver-ati mailing list xorg-driver-ati@lists.x.org https://lists.x.org/mailman/listinfo/xorg-driver-ati