On Fri, Nov 18, 2022 at 09:34:34AM +0100, Omar Polo wrote: > On 2022/11/17 15:39:53 +0000, Klemens Nanni <k...@openbsd.org> wrote: > > I see now. > > > > meson tries to install the same picom.desktop twice, so we might as well > > drop the second attempt and use the first file for @sample in PLIST. > > Agreed, I haven't realized the two picom.desktop files are the same! > > > git detection can also be neutered a tad simpler. > > sure; sometimes i fall for having more '-' than what strictly needed ;) > > > Here's your diff with a slightly simpler meson.build patch. > > > > So I have the following in my ~/.xsession > > picom --daemon --config /dev/null --vsync --backend glx > > due to -Dopengl=false all the backends except for xrender were > disabled. Thanks to brynet for hinting at eglGetProcAddress, I've > come up with the patch below. Not sure how i've used it is > idiomatic... > > eglGetProcAddress("glEGLImageTargetTexStorageEXT") should always > succeed because during the egl backend initialisation it checks > whether the GL_EXT_EGL_image_storage extension is supported. > > i still don't know why we need such patch; looking at repology > freebsd, crux and fedora are already distributing the picom-10 > package, and looking at their Makefile/recipe/whatever they don't seem > to do any fancy stuff. > > sdk managed to link it by adding a dependency on libOSMesa, maybe > that's the way? > > i'm also bundling another patch to fix a printf... > > > Updating with your patch now gives me > > $ picom --config /dev/null --vsync --backend glx > > [ 11/17/22 19:33:29.791 get_cfg ERROR ] Backend "glx" is only available > > as part of the legacy backends. > > [ 11/17/22 19:33:29.792 session_init FATAL ERROR ] Failed to get > > configuration, usually mean you have specified invalid options. > > [ 11/17/22 19:33:29.792 main FATAL ERROR ] Failed to create new session. > > > > https://github.com/yshui/picom/releases/tag/v10-rc1 says we can use > > the `legacy-backends' option or switch to the "egl" one, but neither > > works for me: > > $ picom --config /dev/null --vsync --backend glx --legacy-backends > > [ 11/17/22 19:38:21.287 init_render ERROR ] GLX backend support not > > compiled in. > > [ 11/17/22 19:38:21.287 session_init FATAL ERROR ] Failed to initialize > > the backend > > now this works > > > $ picom --config /dev/null --vsync --backend egl > > [ 11/17/22 19:35:26.762 get_cfg WARN ] The egl backend is still > > experimental, use with care. > > [ 11/17/22 19:35:26.762 get_cfg ERROR ] Backend "egl" is only available > > as part of the legacy backends. > > [ 11/17/22 19:35:26.762 session_init FATAL ERROR ] Failed to get > > configuration, usually mean you have specified invalid options. > > [ 11/17/22 19:35:26.762 main FATAL ERROR ] Failed to create new session. > > and this too.
Yup, works now just like the current version. This seems OK to me, although I'd like to hear from someone using a destkop environment/whatever that makes use of /etc/xdg/autostart/ as to whether that works and/or it conflicts with how such setups handle ~/.xsession. I don't know this is supposed to work outside of a xenodm plus window manager setup (usually relying on ~/.xsession to start picom and such). A new picom update simply should cause it to be started or even run twice... I guess if ensuring this seems to much work, we can simply not @sample the .desktop file and thus stick to whatever mechanism users have now. > > I've tried the egl, glx and xrender backend. All seem to work fine > here (amdgpu) althought I hit one usual (for me) hang: after some time > I've left picom running on the system mostly idle the graphic froze, > network & co were still fine. Sadly, it's not a regression for me (: > > Index: Makefile > =================================================================== > RCS file: /home/cvs/ports/x11/picom/Makefile,v > retrieving revision 1.7 > diff -u -p -r1.7 Makefile > --- Makefile 11 Mar 2022 20:16:55 -0000 1.7 > +++ Makefile 18 Nov 2022 08:08:28 -0000 > @@ -2,14 +2,14 @@ COMMENT = lightweight compositor for X11 > > GH_ACCOUNT = yshui > GH_PROJECT = picom > -GH_TAGNAME = v9.1 > +GH_TAGNAME = v10 > > CATEGORIES = x11 > > # MPL 2.0 > PERMIT_PACKAGE = Yes > > -WANTLIB += GL X11 X11-xcb c config dbus-1 ev m pcre pixman-1 > +WANTLIB += EGL GL X11 X11-xcb c config dbus-1 ev m pcre pixman-1 > WANTLIB += xcb-composite xcb-damage xcb-glx xcb-image xcb-present > WANTLIB += xcb-randr xcb-render-util xcb-render xcb-shape xcb-sync > WANTLIB += xcb-xfixes xcb-xinerama xcb > @@ -34,6 +34,7 @@ LIB_DEPENDS = devel/libconfig \ > CONFIGURE_ARGS += -Dwith_docs=true \ > -Dunittest=true \ > -Dcompton=false > + > CONFIGURE_ENV += CPPFLAGS="${CPPFLAGS} -I${LOCALBASE}/include" \ > LDFLAGS="${LDFLAGS} -L${LOCALBASE}/lib" > > Index: distinfo > =================================================================== > RCS file: /home/cvs/ports/x11/picom/distinfo,v > retrieving revision 1.4 > diff -u -p -r1.4 distinfo > --- distinfo 14 Feb 2022 13:04:05 -0000 1.4 > +++ distinfo 17 Nov 2022 15:49:57 -0000 > @@ -1,2 +1,2 @@ > -SHA256 (picom-9.1.tar.gz) = hwCscb1JbJEmLIV24pyzrs8rTvSMBDlKkpUJ08s3uH0= > -SIZE (picom-9.1.tar.gz) = 263924 > +SHA256 (picom-10.tar.gz) = 6EAwTDKfB5cgWWMwKJTFXhHXfPUaIsCnIINEzm/Qojg= > +SIZE (picom-10.tar.gz) = 286728 > Index: pkg/PLIST > =================================================================== > RCS file: /home/cvs/ports/x11/picom/pkg/PLIST,v > retrieving revision 1.3 > diff -u -p -r1.3 PLIST > --- pkg/PLIST 11 Mar 2022 20:16:55 -0000 1.3 > +++ pkg/PLIST 17 Nov 2022 15:49:57 -0000 > @@ -3,6 +3,7 @@ bin/picom-trans > @man man/man1/picom-trans.1 > @man man/man1/picom.1 > share/applications/picom.desktop > +@sample ${SYSCONFDIR}/xdg/autostart/picom.desktop > share/examples/picom/ > share/examples/picom/picom.sample.conf > share/icons/hicolor/48x48/apps/picom.png > Index: patches/patch-meson_build > =================================================================== > RCS file: patches/patch-meson_build > diff -N patches/patch-meson_build > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-meson_build 18 Nov 2022 08:31:25 -0000 > @@ -0,0 +1,24 @@ > +- ignore git > +- autostart file in /etc/ needs PLIST @sample > + > +Index: meson.build > +--- meson.build.orig > ++++ meson.build > +@@ -7,8 +7,7 @@ cc = meson.get_compiler('c') > + version = 'v'+meson.project_version() > + > + # use git describe if that's available > +-git = find_program('git', required: false) > +-if git.found() > ++if false > + gitv = run_command('git', 'rev-parse', '--short=5', 'HEAD', check: > false) > + if gitv.returncode() == 0 > + version = 'vgit-'+gitv.stdout().strip() > +@@ -73,7 +72,6 @@ subdir('man') > + > + install_data('bin/picom-trans', install_dir: get_option('bindir')) > + install_data('picom.desktop', install_dir: 'share/applications') > +-install_data('picom.desktop', install_dir: get_option('sysconfdir') / 'xdg' > / 'autostart') > + > + if get_option('compton') > + install_data('compton.desktop', install_dir: 'share/applications') > Index: patches/patch-src_backend_gl_egl_c > =================================================================== > RCS file: patches/patch-src_backend_gl_egl_c > diff -N patches/patch-src_backend_gl_egl_c > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-src_backend_gl_egl_c 18 Nov 2022 08:31:25 -0000 > @@ -0,0 +1,42 @@ > +glEGLImageTargetTexStorageEXT fails to link because its pointer should > +be retrieved via eglGetProcAddress. > + > +Index: src/backend/gl/egl.c > +--- src/backend/gl/egl.c.orig > ++++ src/backend/gl/egl.c > +@@ -36,6 +36,8 @@ struct egl_data { > + EGLContext ctx; > + }; > + > ++static void (*imageTargetTexStorageFn)(GLenum, GLeglImageOES, const GLint > *); > ++ > + /** > + * Free a glx_texture_t. > + */ > +@@ -215,6 +217,17 @@ static backend_t *egl_init(session_t *ps) { > + > + success = true; > + > ++ /* > ++ * should always succeed since if we reach this point > ++ * it's ensured we have the GL_EXT_EGL_image_storage > ++ * extension. > ++ */ > ++ imageTargetTexStorageFn = > eglGetProcAddress("glEGLImageTargetTexStorageEXT"); > ++ if (imageTargetTexStorageFn == NULL) { > ++ log_error("don't have glEGLImageTargetTexStorageEXT!"); > ++ success = false; > ++ } > ++ > + end: > + if (!success) { > + egl_deinit(&gd->gl.base); > +@@ -270,7 +283,7 @@ egl_bind_pixmap(backend_t *base, xcb_pixmap_t pixmap, > + wd->dim = 0; > + wd->inner->refcount = 1; > + glBindTexture(GL_TEXTURE_2D, inner->texture); > +- glEGLImageTargetTexStorageEXT(GL_TEXTURE_2D, eglpixmap->image, NULL); > ++ imageTargetTexStorageFn(GL_TEXTURE_2D, eglpixmap->image, NULL); > + glBindTexture(GL_TEXTURE_2D, 0); > + > + gl_check_err(); > Index: patches/patch-src_picom_c > =================================================================== > RCS file: patches/patch-src_picom_c > diff -N patches/patch-src_picom_c > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-src_picom_c 18 Nov 2022 08:31:25 -0000 > @@ -0,0 +1,16 @@ > +fix uint64_t printing > + > +Index: src/picom.c > +--- src/picom.c.orig > ++++ src/picom.c > +@@ -539,8 +539,8 @@ static bool initialize_backend(session_t *ps) { > + } else { > + shader->attributes = 0; > + } > +- log_debug("Shader %s has attributes %ld", > shader->key, > +- shader->attributes); > ++ log_debug("Shader %s has attributes %"PRIu64, > ++ shader->key, shader->attributes); > + } > + } > + >