From d1804ebfc927f5a34f2ad7957dac1aa4c2e2107f Mon Sep 17 00:00:00 2001 From: John Kehayias Date: Sun, 30 Jul 2023 01:01:33 -0400 Subject: gnu: mutter: Fix build. With newer versions of Mesa, a test in ensure_bits_initialized fails. Fixed upstream in newer versions of mutter. See . * gnu/packages/gnome.scm (mutter)[source]: Add patch. * gnu/packages/patches/mutter-fix-inverted-test.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. --- gnu/local.mk | 1 + gnu/packages/gnome.scm | 5 +- .../patches/mutter-fix-inverted-test.patch | 290 +++++++++++++++++++++ 3 files changed, 295 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/mutter-fix-inverted-test.patch diff --git a/gnu/local.mk b/gnu/local.mk index d069dd420e..680876e2ff 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1621,6 +1621,7 @@ dist_patch_DATA = \ %D%/packages/patches/mupen64plus-ui-console-notice.patch \ %D%/packages/patches/mupen64plus-video-z64-glew-correct-path.patch \ %D%/packages/patches/musl-cross-locale.patch \ + %D%/packages/patches/mutter-fix-inverted-test.patch \ %D%/packages/patches/mutt-store-references.patch \ %D%/packages/patches/m17n-lib-1.8.0-use-pkg-config-for-freetype.patch \ %D%/packages/patches/nautilus-extension-search-path.patch \ diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index b09d9b4afd..b576f466b7 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -7817,7 +7817,10 @@ to display dialog boxes from the commandline and shell scripts.") name "-" version ".tar.xz")) (sha256 (base32 - "0h1ak3201mdc2qbf67fhcn801ddp33hm0f0c52zis1l7s6ipyb62")))) + "0h1ak3201mdc2qbf67fhcn801ddp33hm0f0c52zis1l7s6ipyb62")) + ;; TODO: Remove on update as this was merged upstream. See + ;; . + (patches (search-patches "mutter-fix-inverted-test.patch")))) ;; NOTE: Since version 3.21.x, mutter now bundles and exports forked ;; versions of cogl and clutter. As a result, many of the inputs, ;; propagated-inputs, and configure flags used in cogl and clutter are diff --git a/gnu/packages/patches/mutter-fix-inverted-test.patch b/gnu/packages/patches/mutter-fix-inverted-test.patch new file mode 100644 index 0000000000..3676b31def --- /dev/null +++ b/gnu/packages/patches/mutter-fix-inverted-test.patch @@ -0,0 +1,290 @@ +From 5a83e8ef8250526a40e8e69c6398f990ab482b2f Mon Sep 17 00:00:00 2001 +From: Olivier Fourdan +Date: Fri, 2 Jun 2023 14:42:51 +0200 +Subject: [PATCH 1/5] cogl/gl-framebuffer: Fix spurious trailing spaces + +Purely cosmetic fix, no functional change. + +Part-of: +--- + cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c | 12 ++++++------ + cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c | 12 ++++++------ + 2 files changed, 12 insertions(+), 12 deletions(-) + +diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c +index d6609bb2074..8d76f1578bf 100644 +--- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c ++++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c +@@ -72,32 +72,32 @@ ensure_bits_initialized (CoglGlFramebufferBack *gl_framebuffer_back) + GLenum attachment, pname; + size_t offset; + } params[] = { +- { ++ { + .attachment = GL_BACK_LEFT, + .pname = GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE, + .offset = offsetof (CoglFramebufferBits, red), + }, +- { ++ { + .attachment = GL_BACK_LEFT, + .pname = GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE, + .offset = offsetof (CoglFramebufferBits, green), + }, +- { ++ { + .attachment = GL_BACK_LEFT, + .pname = GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE, + .offset = offsetof (CoglFramebufferBits, blue), + }, +- { ++ { + .attachment = GL_BACK_LEFT, + .pname = GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, + .offset = offsetof (CoglFramebufferBits, alpha), + }, +- { ++ { + .attachment = GL_DEPTH, + .pname = GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, + .offset = offsetof (CoglFramebufferBits, depth), + }, +- { ++ { + .attachment = GL_STENCIL, + .pname = GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE, + .offset = offsetof (CoglFramebufferBits, stencil), +diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c +index c8db6a23a29..1ffc1d53509 100644 +--- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c ++++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c +@@ -82,32 +82,32 @@ ensure_bits_initialized (CoglGlFramebufferFbo *gl_framebuffer_fbo) + GLenum attachment, pname; + size_t offset; + } params[] = { +- { ++ { + .attachment = GL_COLOR_ATTACHMENT0, + .pname = GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE, + .offset = offsetof (CoglFramebufferBits, red), + }, +- { ++ { + .attachment = GL_COLOR_ATTACHMENT0, + .pname = GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE, + .offset = offsetof (CoglFramebufferBits, green), + }, +- { ++ { + .attachment = GL_COLOR_ATTACHMENT0, + .pname = GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE, + .offset = offsetof (CoglFramebufferBits, blue), + }, +- { ++ { + .attachment = GL_COLOR_ATTACHMENT0, + .pname = GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, + .offset = offsetof (CoglFramebufferBits, alpha), + }, +- { ++ { + .attachment = GL_DEPTH_ATTACHMENT, + .pname = GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, + .offset = offsetof (CoglFramebufferBits, depth), + }, +- { ++ { + .attachment = GL_STENCIL_ATTACHMENT, + .pname = GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE, + .offset = offsetof (CoglFramebufferBits, stencil), +-- +GitLab + + +From a2203df9f43b9e501a972d23b3d5584005c03ce6 Mon Sep 17 00:00:00 2001 +From: Olivier Fourdan +Date: Fri, 2 Jun 2023 11:54:58 +0200 +Subject: [PATCH 2/5] cogl/gl-framebuffer: Fix inverted test in + ensure_bits_initialized() + +Cogl's feature COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS is required +to use the GL_FRAMEBUFFER_ATTACHMENT_* queries. + +Unfortunately, the test for the availability of the private feature is +actually inverted in ensure_bits_initialized() which causes that whole +portion of code to be ignored, falling back to the glGetIntegerv() +method which isn't supported in core profiles. + +As Mesa has recently started to be more strict about these, this causes +the CI tests to fail in mutter. + +Part-of: +--- + cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c +index 1ffc1d53509..75a8b0c1fe2 100644 +--- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c ++++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c +@@ -76,7 +76,7 @@ ensure_bits_initialized (CoglGlFramebufferFbo *gl_framebuffer_fbo) + COGL_FRAMEBUFFER_STATE_BIND); + + #ifdef HAVE_COGL_GL +- if (!_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS)) ++ if (_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS)) + { + const struct { + GLenum attachment, pname; +-- +GitLab + + +From fad240f437d6b11f664c9c09aecabe5f5e703eca Mon Sep 17 00:00:00 2001 +From: Olivier Fourdan +Date: Mon, 5 Jun 2023 10:31:38 +0200 +Subject: [PATCH 3/5] cogl/gl-framebuffer: Match testing features + +The function ensure_bits_initialized() in cogl-gl-framebuffer-fbo.c +checks for COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS whereas the same +in cogl-gl-framebuffer-back.c simply checks for the driver being +COGL_DRIVER_GL3. + +Change the later to use the COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS +flag as well. + +Part-of: +--- + cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c +index 8d76f1578bf..f6a17e8f070 100644 +--- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c ++++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c +@@ -66,7 +66,7 @@ ensure_bits_initialized (CoglGlFramebufferBack *gl_framebuffer_back) + COGL_FRAMEBUFFER_STATE_BIND); + + #ifdef HAVE_COGL_GL +- if (ctx->driver == COGL_DRIVER_GL3) ++ if (_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS)) + { + const struct { + GLenum attachment, pname; +-- +GitLab + + +From c3af4c1b1571b05f67d48b90d9ea7313f3ca6003 Mon Sep 17 00:00:00 2001 +From: Olivier Fourdan +Date: Fri, 2 Jun 2023 14:27:29 +0200 +Subject: [PATCH 4/5] cogl/gl-framebuffer: Fail without QUERY_FRAMEBUFFER_BITS + +glGetIntegerv() with GL_RED_BITS/GL_GREEN_BITS/GL_BLUE_BITS/etc. is not +supported with the GL core context, so there is no point in falling back +to that without supporting COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS, +as this will cause an GL error. + +Part-of: +--- + cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c | 7 +------ + cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c | 7 +------ + 2 files changed, 2 insertions(+), 12 deletions(-) + +diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c +index f6a17e8f070..0ccd2324077 100644 +--- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c ++++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c +@@ -119,12 +119,7 @@ ensure_bits_initialized (CoglGlFramebufferBack *gl_framebuffer_back) + else + #endif /* HAVE_COGL_GL */ + { +- GE (ctx, glGetIntegerv (GL_RED_BITS, &bits->red)); +- GE (ctx, glGetIntegerv (GL_GREEN_BITS, &bits->green)); +- GE (ctx, glGetIntegerv (GL_BLUE_BITS, &bits->blue)); +- GE (ctx, glGetIntegerv (GL_ALPHA_BITS, &bits->alpha)); +- GE (ctx, glGetIntegerv (GL_DEPTH_BITS, &bits->depth)); +- GE (ctx, glGetIntegerv (GL_STENCIL_BITS, &bits->stencil)); ++ return FALSE; + } + + COGL_NOTE (FRAMEBUFFER, +diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c +index 75a8b0c1fe2..524196207f5 100644 +--- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c ++++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c +@@ -129,12 +129,7 @@ ensure_bits_initialized (CoglGlFramebufferFbo *gl_framebuffer_fbo) + else + #endif /* HAVE_COGL_GL */ + { +- GE (ctx, glGetIntegerv (GL_RED_BITS, &bits->red)); +- GE (ctx, glGetIntegerv (GL_GREEN_BITS, &bits->green)); +- GE (ctx, glGetIntegerv (GL_BLUE_BITS, &bits->blue)); +- GE (ctx, glGetIntegerv (GL_ALPHA_BITS, &bits->alpha)); +- GE (ctx, glGetIntegerv (GL_DEPTH_BITS, &bits->depth)); +- GE (ctx, glGetIntegerv (GL_STENCIL_BITS, &bits->stencil)); ++ return FALSE; + } + + if (!_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_ALPHA_TEXTURES) && +-- +GitLab + + +From d65883e0d7d70987e3888b86222b109c35f5a7a2 Mon Sep 17 00:00:00 2001 +From: Olivier Fourdan +Date: Mon, 5 Jun 2023 10:38:41 +0200 +Subject: [PATCH 5/5] cogl/gl-framebuffer: Remove conditional on HAVE_COGL_GL + +By testing the features flag, we can get rid of the conditional build +on HAVE_COGL_GL entirely. + +Part-of: +--- + cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c | 2 -- + cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c | 2 -- + 2 files changed, 4 deletions(-) + +diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c +index 0ccd2324077..94154d48efb 100644 +--- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c ++++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-back.c +@@ -65,7 +65,6 @@ ensure_bits_initialized (CoglGlFramebufferBack *gl_framebuffer_back) + framebuffer, + COGL_FRAMEBUFFER_STATE_BIND); + +-#ifdef HAVE_COGL_GL + if (_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS)) + { + const struct { +@@ -117,7 +116,6 @@ ensure_bits_initialized (CoglGlFramebufferBack *gl_framebuffer_back) + } + } + else +-#endif /* HAVE_COGL_GL */ + { + return FALSE; + } +diff --git a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c +index 524196207f5..3ea133d3143 100644 +--- a/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c ++++ b/cogl/cogl/driver/gl/cogl-gl-framebuffer-fbo.c +@@ -75,7 +75,6 @@ ensure_bits_initialized (CoglGlFramebufferFbo *gl_framebuffer_fbo) + framebuffer, + COGL_FRAMEBUFFER_STATE_BIND); + +-#ifdef HAVE_COGL_GL + if (_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS)) + { + const struct { +@@ -127,7 +126,6 @@ ensure_bits_initialized (CoglGlFramebufferFbo *gl_framebuffer_fbo) + } + } + else +-#endif /* HAVE_COGL_GL */ + { + return FALSE; + } +-- +GitLab + -- cgit v1.2.3