With newer versions of Mesa, a test in ensure_bits_initialized fails. Fixed upstream in newer versions of mutter. See <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>. * 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.
		
			
				
	
	
		
			290 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			290 lines
		
	
	
	
		
			11 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 5a83e8ef8250526a40e8e69c6398f990ab482b2f Mon Sep 17 00:00:00 2001
 | |
| From: Olivier Fourdan <ofourdan@redhat.com>
 | |
| 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: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>
 | |
| ---
 | |
|  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 <ofourdan@redhat.com>
 | |
| 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: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>
 | |
| ---
 | |
|  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 <ofourdan@redhat.com>
 | |
| 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: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>
 | |
| ---
 | |
|  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 <ofourdan@redhat.com>
 | |
| 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: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>
 | |
| ---
 | |
|  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 <ofourdan@redhat.com>
 | |
| 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: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3047>
 | |
| ---
 | |
|  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
 | |
| 
 |