Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package cogl for openSUSE:Factory checked in 
at 2021-10-08 22:04:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cogl (Old)
 and      /work/SRC/openSUSE:Factory/.cogl.new.2443 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "cogl"

Fri Oct  8 22:04:50 2021 rev:50 rq:923217 version:1.22.8

Changes:
--------
--- /work/SRC/openSUSE:Factory/cogl/cogl.changes        2020-06-11 
10:00:34.778364710 +0200
+++ /work/SRC/openSUSE:Factory/.cogl.new.2443/cogl.changes      2021-10-08 
22:05:09.916571675 +0200
@@ -1,0 +2,15 @@
+Thu Sep 30 10:04:23 UTC 2021 - Bj??rn Lie <[email protected]>
+
+- Add 2bd3cbed45d633fb15625d58e6b7cb8721b0ba98.patch: cogl-gles2:
+  Fix undefined references. Following this, add libtool
+  BuildRequires and pass autoreconf call before configure as the
+  patch touches the buildsystem.
+- Add patches from fedora that should have gone upstream:
+  + 0001-egl-Use-eglGetPlatformDisplay-not-eglGetDisplay.patch:
+    egl: Use eglGetPlatformDisplay not eglGetDisplay.
+  + 0002-add-GL_ARB_shader_texture_lod-support.patch: Add
+    GL_ARB_shader_texture_lod support.
+  + 0003-texture-support-copy_sub_image.patch: texture: Support
+    copy_sub_image.
+
+-------------------------------------------------------------------

New:
----
  0001-egl-Use-eglGetPlatformDisplay-not-eglGetDisplay.patch
  0002-add-GL_ARB_shader_texture_lod-support.patch
  0003-texture-support-copy_sub_image.patch
  2bd3cbed45d633fb15625d58e6b7cb8721b0ba98.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ cogl.spec ++++++
--- /var/tmp/diff_new_pack.DVh5yI/_old  2021-10-08 22:05:10.364572412 +0200
+++ /var/tmp/diff_new_pack.DVh5yI/_new  2021-10-08 22:05:10.364572412 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package cogl
 #
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -27,9 +27,18 @@
 URL:            http://clutter-project.org/
 Source0:        
https://download.gnome.org/sources/cogl/1.22/%{name}-%{version}.tar.xz
 Source99:       baselibs.conf
+# PATCH-FIX-UPSTREAM 2bd3cbed45d633fb15625d58e6b7cb8721b0ba98.patch -- 
cogl-gles2: Fix undefined references.
+Patch0:         
https://gitlab.gnome.org/GNOME/cogl/-/commit/2bd3cbed45d633fb15625d58e6b7cb8721b0ba98.patch
+# PATCH-FIX-UPSTREAM 
0001-egl-Use-eglGetPlatformDisplay-not-eglGetDisplay.patch -- egl: Use 
eglGetPlatformDisplay not eglGetDisplay
+Patch1:         
https://src.fedoraproject.org/rpms/cogl/raw/rawhide/f/0001-egl-Use-eglGetPlatformDisplay-not-eglGetDisplay.patch
+# PATCH-FEATURE-UPSTREAM 0002-add-GL_ARB_shader_texture_lod-support.patch  -- 
Add GL_ARB_shader_texture_lod support
+Patch2:         
https://src.fedoraproject.org/rpms/cogl/raw/rawhide/f/0002-add-GL_ARB_shader_texture_lod-support.patch
+# PATCH-FEATURE-UPSTREAM 0003-texture-support-copy_sub_image.patch -- texture: 
Support copy_sub_image
+Patch3:         
https://src.fedoraproject.org/rpms/cogl/raw/rawhide/f/0003-texture-support-copy_sub_image.patch
 
 BuildRequires:  fdupes
 BuildRequires:  gtk-doc >= 1.13
+BuildRequires:  libtool
 BuildRequires:  pkgconfig
 BuildRequires:  pkgconfig(cairo) >= 1.10
 BuildRequires:  pkgconfig(egl)
@@ -185,6 +194,7 @@
 %autosetup -p1
 
 %build
+autoreconf -vif
 %configure \
        --disable-static \
        --enable-gtk-doc \

++++++ 0001-egl-Use-eglGetPlatformDisplay-not-eglGetDisplay.patch ++++++
>From 988e021960eb372be50038fdf0b2874f063c02b6 Mon Sep 17 00:00:00 2001
From: Adam Jackson <[email protected]>
Date: Tue, 11 Oct 2016 16:16:38 -0400
Subject: [PATCH] egl: Use eglGetPlatformDisplay not eglGetDisplay

The latter requires the implementation to guess which kind of display it
is. Different implementations do different thing, in particular glvnd
does something different from Mesa, and it's better to be explicit about
what we need.

Signed-off-by: Adam Jackson <[email protected]>
---
 cogl/cogl-egl.h                       |  1 -
 cogl/winsys/cogl-winsys-egl-kms.c     |  3 ++-
 cogl/winsys/cogl-winsys-egl-private.h | 33 +++++++++++++++++++++++++++++++++
 cogl/winsys/cogl-winsys-egl-wayland.c |  3 ++-
 cogl/winsys/cogl-winsys-egl-x11.c     |  2 +-
 5 files changed, 38 insertions(+), 4 deletions(-)

diff --git a/cogl/cogl-egl.h b/cogl/cogl-egl.h
index cea7b10..5dac55f 100644
--- a/cogl/cogl-egl.h
+++ b/cogl/cogl-egl.h
@@ -98,7 +98,6 @@ cogl_egl_context_get_egl_display (CoglContext *context);
 EGLContext
 cogl_egl_context_get_egl_context (CoglContext *context);
 
-
 COGL_END_DECLS
 
 /* The gobject introspection scanner seems to parse public headers in
diff --git a/cogl/winsys/cogl-winsys-egl-kms.c 
b/cogl/winsys/cogl-winsys-egl-kms.c
index 4da1f14..ae9f6fc 100644
--- a/cogl/winsys/cogl-winsys-egl-kms.c
+++ b/cogl/winsys/cogl-winsys-egl-kms.c
@@ -342,7 +342,8 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer,
       goto fail;
     }
 
-  egl_renderer->edpy = eglGetDisplay ((EGLNativeDisplayType)kms_renderer->gbm);
+  egl_renderer->edpy = cogl_winsys_egl_get_display(EGL_PLATFORM_GBM_KHR,
+                                                   kms_renderer->gbm);
   if (egl_renderer->edpy == EGL_NO_DISPLAY)
     {
       _cogl_set_error (error, COGL_WINSYS_ERROR,
diff --git a/cogl/winsys/cogl-winsys-egl-private.h 
b/cogl/winsys/cogl-winsys-egl-private.h
index 5d21b4f..27ac25c 100644
--- a/cogl/winsys/cogl-winsys-egl-private.h
+++ b/cogl/winsys/cogl-winsys-egl-private.h
@@ -200,4 +200,37 @@ CoglBool
 _cogl_winsys_egl_renderer_connect_common (CoglRenderer *renderer,
                                           CoglError **error);
 
+static inline EGLDisplay
+cogl_winsys_egl_get_display (EGLint type, void *native)
+{
+  EGLDisplay dpy = NULL;
+  const char *client_exts = eglQueryString (NULL, EGL_EXTENSIONS);
+
+  if (g_strstr_len (client_exts, -1, "EGL_KHR_platform_base"))
+    {
+      PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display =
+       (void *) eglGetProcAddress ("eglGetPlatformDisplay");
+
+      if (get_platform_display)
+       dpy = get_platform_display (type, native, NULL);
+
+      if (dpy)
+       return dpy;
+    }
+
+  if (g_strstr_len (client_exts, -1, "EGL_EXT_platform_base"))
+    {
+      PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display =
+       (void *) eglGetProcAddress ("eglGetPlatformDisplayEXT");
+
+      if (get_platform_display)
+       dpy = get_platform_display (type, native, NULL);
+
+      if (dpy)
+       return dpy;
+    }
+
+  return eglGetDisplay ((EGLNativeDisplayType) native);
+}
+
 #endif /* __COGL_WINSYS_EGL_PRIVATE_H */
diff --git a/cogl/winsys/cogl-winsys-egl-wayland.c 
b/cogl/winsys/cogl-winsys-egl-wayland.c
index 2e22052..463041b 100644
--- a/cogl/winsys/cogl-winsys-egl-wayland.c
+++ b/cogl/winsys/cogl-winsys-egl-wayland.c
@@ -289,7 +289,8 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer,
     }
 
   egl_renderer->edpy =
-    eglGetDisplay ((EGLNativeDisplayType) wayland_renderer->wayland_display);
+    cogl_winsys_egl_get_display (EGL_PLATFORM_WAYLAND_KHR,
+                                 wayland_renderer->wayland_display);
 
   if (!_cogl_winsys_egl_renderer_connect_common (renderer, error))
     goto error;
diff --git a/cogl/winsys/cogl-winsys-egl-x11.c 
b/cogl/winsys/cogl-winsys-egl-x11.c
index 724a4d0..a7e9c2f 100644
--- a/cogl/winsys/cogl-winsys-egl-x11.c
+++ b/cogl/winsys/cogl-winsys-egl-x11.c
@@ -278,7 +278,7 @@ _cogl_winsys_renderer_connect (CoglRenderer *renderer,
     goto error;
 
   egl_renderer->edpy =
-    eglGetDisplay ((EGLNativeDisplayType) xlib_renderer->xdpy);
+    cogl_winsys_egl_get_display (EGL_PLATFORM_X11_KHR, xlib_renderer->xdpy);
 
   if (!_cogl_winsys_egl_renderer_connect_common (renderer, error))
     goto error;
-- 
2.9.3

++++++ 0002-add-GL_ARB_shader_texture_lod-support.patch ++++++
>From 78636289b073d67209a20145ef0dc003f2d77db6 Mon Sep 17 00:00:00 2001
From: Sian Cao <[email protected]>
Date: Tue, 12 Apr 2016 11:36:51 +0800
Subject: Add GL_ARB_shader_texture_lod support

The patch is used to do lod biased texturing. I can achieve
faster blurring of images instead of using large blur radius.

Signed-off-by:
 Sian Cao <[email protected]>: initial

---
 cogl/cogl-context.h                |  1 +
 cogl/cogl-glsl-shader.c            | 13 +++++++++++--
 cogl/cogl-types.h                  |  3 ++-
 cogl/driver/gl/gl/cogl-driver-gl.c |  7 +++++++
 4 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/cogl/cogl-context.h b/cogl/cogl-context.h
index 07badeb..261ce49 100644
--- a/cogl/cogl-context.h
+++ b/cogl/cogl-context.h
@@ -290,6 +290,7 @@ typedef enum _CoglFeatureID
   COGL_FEATURE_ID_PER_VERTEX_POINT_SIZE,
   COGL_FEATURE_ID_TEXTURE_RG,
   COGL_FEATURE_ID_BUFFER_AGE,
+  COGL_FEATURE_ID_SHADER_TEXTURE_LOD,
 
   /*< private >*/
   _COGL_N_FEATURE_IDS   /*< skip >*/
diff --git a/cogl/cogl-glsl-shader.c b/cogl/cogl-glsl-shader.c
index 196e0c7..4fb0eb5 100644
--- a/cogl/cogl-glsl-shader.c
+++ b/cogl/cogl-glsl-shader.c
@@ -87,8 +87,8 @@ _cogl_glsl_shader_set_source_with_boilerplate (CoglContext 
*ctx,
   const char *vertex_boilerplate;
   const char *fragment_boilerplate;
 
-  const char **strings = g_alloca (sizeof (char *) * (count_in + 4));
-  GLint *lengths = g_alloca (sizeof (GLint) * (count_in + 4));
+  const char **strings = g_alloca (sizeof (char *) * (count_in + 5));
+  GLint *lengths = g_alloca (sizeof (GLint) * (count_in + 5));
   char *version_string;
   int count = 0;
 
@@ -111,6 +111,15 @@ _cogl_glsl_shader_set_source_with_boilerplate (CoglContext 
*ctx,
       lengths[count++] = sizeof (texture_3d_extension) - 1;
     }
 
+  if (_cogl_has_private_feature (ctx, COGL_PRIVATE_FEATURE_GL_PROGRAMMABLE) &&
+      cogl_has_feature (ctx, COGL_FEATURE_ID_SHADER_TEXTURE_LOD))
+    {
+      static const char shader_texture_lod_ext[] =
+        "#extension GL_ARB_shader_texture_lod : enable\n";
+      strings[count] = shader_texture_lod_ext;
+      lengths[count++] = sizeof (shader_texture_lod_ext) - 1;
+    }
+
   if (shader_gl_type == GL_VERTEX_SHADER)
     {
       strings[count] = vertex_boilerplate;
diff --git a/cogl/cogl-types.h b/cogl/cogl-types.h
index 6accf8d..77964c6 100644
--- a/cogl/cogl-types.h
+++ b/cogl/cogl-types.h
@@ -470,7 +470,8 @@ typedef enum
   COGL_FEATURE_MAP_BUFFER_FOR_READ    = (1 << 21),
   COGL_FEATURE_MAP_BUFFER_FOR_WRITE   = (1 << 22),
   COGL_FEATURE_ONSCREEN_MULTIPLE      = (1 << 23),
-  COGL_FEATURE_DEPTH_TEXTURE          = (1 << 24)
+  COGL_FEATURE_DEPTH_TEXTURE          = (1 << 24),
+  COGL_FEATURE_SHADER_TEXTURE_LOD     = (1 << 25)
 } CoglFeatureFlags;
 
 /**
diff --git a/cogl/driver/gl/gl/cogl-driver-gl.c 
b/cogl/driver/gl/gl/cogl-driver-gl.c
index 716d1dd..f305b6a 100644
--- a/cogl/driver/gl/gl/cogl-driver-gl.c
+++ b/cogl/driver/gl/gl/cogl-driver-gl.c
@@ -568,6 +568,13 @@ _cogl_driver_update_features (CoglContext *ctx,
                       COGL_FEATURE_ID_TEXTURE_RECTANGLE, TRUE);
     }
 
+  if (_cogl_check_extension ("GL_ARB_shader_texture_lod", gl_extensions))
+    {
+      flags |= COGL_FEATURE_SHADER_TEXTURE_LOD;
+      COGL_FLAGS_SET (ctx->features,
+                      COGL_FEATURE_ID_SHADER_TEXTURE_LOD, TRUE);
+    }
+
   if (ctx->glTexImage3D)
     {
       flags |= COGL_FEATURE_TEXTURE_3D;
-- 
2.9.5

++++++ 0003-texture-support-copy_sub_image.patch ++++++
>From d8b34ab0604d80d0be22b8b78e9aa6bf4fac7db0 Mon Sep 17 00:00:00 2001
From: Sian Cao <[email protected]>
Date: Thu, 27 Oct 2016 15:19:32 +0800
Subject: texture: Support copy_sub_image

The patch is used to implement feature similar with kwin blur effect
by being abel to copy partial of framebuffer contents as texture and
do post blurring.

Signed-off-by:
 Sian Cao <[email protected]>: initial
 Bowen Li <[email protected]>: fix coding style

---
 cogl/cogl-atlas-texture.c                   |  1 +
 cogl/cogl-driver.h                          | 10 ++++++++
 cogl/cogl-sub-texture.c                     |  1 +
 cogl/cogl-texture-2d-sliced.c               |  1 +
 cogl/cogl-texture-2d.c                      | 30 ++++++++++++++++++++++
 cogl/cogl-texture-3d.c                      |  1 +
 cogl/cogl-texture-private.h                 |  9 +++++++
 cogl/cogl-texture-rectangle.c               |  1 +
 cogl/cogl-texture.c                         | 33 ++++++++++++++++++++++++
 cogl/cogl-texture.h                         |  9 +++++++
 cogl/driver/gl/cogl-texture-2d-gl-private.h |  9 +++++++
 cogl/driver/gl/cogl-texture-2d-gl.c         | 39 +++++++++++++++++++++++++++++
 cogl/driver/gl/gl/cogl-driver-gl.c          |  1 +
 cogl/driver/gl/gles/cogl-driver-gles.c      |  1 +
 cogl/driver/nop/cogl-driver-nop.c           |  1 +
 cogl/winsys/cogl-texture-pixmap-x11.c       |  1 +
 16 files changed, 148 insertions(+)

diff --git a/cogl/cogl-atlas-texture.c b/cogl/cogl-atlas-texture.c
index 1c8b569..e411302 100644
--- a/cogl/cogl-atlas-texture.c
+++ b/cogl/cogl-atlas-texture.c
@@ -1027,6 +1027,7 @@ cogl_atlas_texture_vtable =
     FALSE, /* not primitive */
     _cogl_atlas_texture_allocate,
     _cogl_atlas_texture_set_region,
+    NULL, /* copy_sub_image */
     NULL, /* get_data */
     _cogl_atlas_texture_foreach_sub_texture_in_region,
     _cogl_atlas_texture_get_max_waste,
diff --git a/cogl/cogl-driver.h b/cogl/cogl-driver.h
index 648228c..4a0aeaf 100644
--- a/cogl/cogl-driver.h
+++ b/cogl/cogl-driver.h
@@ -192,6 +192,16 @@ struct _CoglDriverVtable
                                    int level,
                                    CoglError **error);
 
+  CoglBool
+  (* texture_2d_copy_sub_image) (CoglTexture2D *tex_2d,
+                                 GLint xoffset,
+                                 GLint yoffset,
+                                 GLint x,
+                                 GLint y,
+                                 GLsizei width,
+                                 GLsizei height,
+                                 CoglError **error);
+
   /* Reads back the full contents of the given texture and write it to
    * @data in the given @format and with the given @rowstride.
    *
diff --git a/cogl/cogl-sub-texture.c b/cogl/cogl-sub-texture.c
index 7baf95e..0a16193 100644
--- a/cogl/cogl-sub-texture.c
+++ b/cogl/cogl-sub-texture.c
@@ -460,6 +460,7 @@ cogl_sub_texture_vtable =
     FALSE, /* not primitive */
     _cogl_sub_texture_allocate,
     _cogl_sub_texture_set_region,
+    NULL, /* copy_sub_image */
     NULL, /* get_data */
     _cogl_sub_texture_foreach_sub_texture_in_region,
     _cogl_sub_texture_get_max_waste,
diff --git a/cogl/cogl-texture-2d-sliced.c b/cogl/cogl-texture-2d-sliced.c
index e76bef6..b0b099f 100644
--- a/cogl/cogl-texture-2d-sliced.c
+++ b/cogl/cogl-texture-2d-sliced.c
@@ -1526,6 +1526,7 @@ cogl_texture_2d_sliced_vtable =
     FALSE, /* not primitive */
     _cogl_texture_2d_sliced_allocate,
     _cogl_texture_2d_sliced_set_region,
+    NULL, /* copy_sub_image */
     NULL, /* get_data */
     _cogl_texture_2d_sliced_foreach_sub_texture_in_region,
     _cogl_texture_2d_sliced_get_max_waste,
diff --git a/cogl/cogl-texture-2d.c b/cogl/cogl-texture-2d.c
index cc28cd9..d9ab188 100644
--- a/cogl/cogl-texture-2d.c
+++ b/cogl/cogl-texture-2d.c
@@ -628,6 +628,35 @@ _cogl_texture_2d_set_region (CoglTexture *tex,
 }
 
 static CoglBool
+_cogl_texture_2d_copy_sub_image (CoglTexture *tex,
+                                 GLint xoffset,
+                                 GLint yoffset,
+                                 GLint x,
+                                 GLint y,
+                                 GLsizei width,
+                                 GLsizei height,
+                                 CoglError **error)
+{
+  CoglContext *ctx = tex->context;
+  CoglTexture2D *tex_2d = COGL_TEXTURE_2D (tex);
+
+  cogl_texture_allocate (tex, NULL); /* (abort on error) */
+
+  ctx->driver_vtable->texture_2d_copy_sub_image (tex_2d,
+                                                 xoffset,
+                                                 yoffset,
+                                                 x,
+                                                 y,
+                                                 width,
+                                                 height,
+                                                 error);
+
+  tex_2d->mipmaps_dirty = TRUE;
+
+  return TRUE;
+}
+
+static CoglBool
 _cogl_texture_2d_get_data (CoglTexture *tex,
                            CoglPixelFormat format,
                            int rowstride,
@@ -675,6 +704,7 @@ cogl_texture_2d_vtable =
     TRUE, /* primitive */
     _cogl_texture_2d_allocate,
     _cogl_texture_2d_set_region,
+    _cogl_texture_2d_copy_sub_image,
     _cogl_texture_2d_get_data,
     NULL, /* foreach_sub_texture_in_region */
     _cogl_texture_2d_get_max_waste,
diff --git a/cogl/cogl-texture-3d.c b/cogl/cogl-texture-3d.c
index 8e2ff08..a59d386 100644
--- a/cogl/cogl-texture-3d.c
+++ b/cogl/cogl-texture-3d.c
@@ -741,6 +741,7 @@ cogl_texture_3d_vtable =
     TRUE, /* primitive */
     _cogl_texture_3d_allocate,
     _cogl_texture_3d_set_region,
+    NULL, /* copy_sub_image */
     _cogl_texture_3d_get_data,
     NULL, /* foreach_sub_texture_in_region */
     _cogl_texture_3d_get_max_waste,
diff --git a/cogl/cogl-texture-private.h b/cogl/cogl-texture-private.h
index 472c41d..34ff81c 100644
--- a/cogl/cogl-texture-private.h
+++ b/cogl/cogl-texture-private.h
@@ -90,6 +90,15 @@ struct _CoglTextureVtable
                            CoglBitmap *bitmap,
                            CoglError **error);
 
+    CoglBool (* copy_sub_image) (CoglTexture *texture,
+                                 GLint xoffset,
+                                 GLint yoffset,
+                                 GLint x,
+                                 GLint y,
+                                 GLsizei width,
+                                 GLsizei height,
+                                 CoglError **error);
+
   /* This should copy the image data of the texture into @data. The
      requested format will have been first passed through
      ctx->texture_driver->find_best_gl_get_data_format so it should
diff --git a/cogl/cogl-texture-rectangle.c b/cogl/cogl-texture-rectangle.c
index 65d2f06..9f533c9 100644
--- a/cogl/cogl-texture-rectangle.c
+++ b/cogl/cogl-texture-rectangle.c
@@ -761,6 +761,7 @@ cogl_texture_rectangle_vtable =
     TRUE, /* primitive */
     _cogl_texture_rectangle_allocate,
     _cogl_texture_rectangle_set_region,
+    NULL, /* copy_sub_image */
     _cogl_texture_rectangle_get_data,
     NULL, /* foreach_sub_texture_in_region */
     _cogl_texture_rectangle_get_max_waste,
diff --git a/cogl/cogl-texture.c b/cogl/cogl-texture.c
index d93db22..1f4b43c 100644
--- a/cogl/cogl-texture.c
+++ b/cogl/cogl-texture.c
@@ -514,6 +514,39 @@ cogl_texture_set_region (CoglTexture *texture,
 }
 
 CoglBool
+cogl_texture_copy_sub_image (CoglTexture *texture,
+                             int xoffset,
+                             int yoffset,
+                             int x,
+                             int y,
+                             size_t width,
+                             size_t height)
+{
+  CoglError *ignore_error = NULL;
+  CoglBool status;
+
+  if (!texture->allocated)
+    cogl_texture_allocate (texture, NULL);
+
+  if (!texture->vtable->copy_sub_image)
+    return FALSE;
+
+  status = texture->vtable->copy_sub_image (texture,
+                                            xoffset,
+                                            yoffset,
+                                            x,
+                                            y,
+                                            width,
+                                            height,
+                                            &ignore_error);
+
+  if (!status)
+    cogl_error_free (ignore_error);
+  return status;
+}
+
+
+CoglBool
 cogl_texture_set_data (CoglTexture *texture,
                        CoglPixelFormat format,
                        int rowstride,
diff --git a/cogl/cogl-texture.h b/cogl/cogl-texture.h
index 2718830..81657d1 100644
--- a/cogl/cogl-texture.h
+++ b/cogl/cogl-texture.h
@@ -399,6 +399,15 @@ cogl_texture_set_region (CoglTexture *texture,
                          unsigned int rowstride,
                          const uint8_t *data);
 
+CoglBool
+cogl_texture_copy_sub_image (CoglTexture *texture,
+                             int xoffset,
+                             int yoffset,
+                             int x,
+                             int y,
+                             size_t width,
+                             size_t height);
+
 #if defined (COGL_ENABLE_EXPERIMENTAL_API)
 
 /**
diff --git a/cogl/driver/gl/cogl-texture-2d-gl-private.h 
b/cogl/driver/gl/cogl-texture-2d-gl-private.h
index e5c6585..d2f9985 100644
--- a/cogl/driver/gl/cogl-texture-2d-gl-private.h
+++ b/cogl/driver/gl/cogl-texture-2d-gl-private.h
@@ -109,6 +109,15 @@ _cogl_texture_2d_gl_copy_from_bitmap (CoglTexture2D 
*tex_2d,
                                       int dst_y,
                                       int level,
                                       CoglError **error);
+CoglBool
+_cogl_texture_2d_gl_copy_sub_image (CoglTexture2D *tex_2d,
+                                    GLint xoffset,
+                                    GLint yoffset,
+                                    GLint x,
+                                    GLint y,
+                                    GLsizei width,
+                                    GLsizei height,
+                                    CoglError **error);
 
 void
 _cogl_texture_2d_gl_get_data (CoglTexture2D *tex_2d,
diff --git a/cogl/driver/gl/cogl-texture-2d-gl.c 
b/cogl/driver/gl/cogl-texture-2d-gl.c
index 8675f52..bc15ac5 100644
--- a/cogl/driver/gl/cogl-texture-2d-gl.c
+++ b/cogl/driver/gl/cogl-texture-2d-gl.c
@@ -35,6 +35,7 @@
 #include <config.h>
 
 #include <string.h>
+#include <stdio.h>
 
 #include "cogl-private.h"
 #include "cogl-texture-private.h"
@@ -719,6 +720,44 @@ _cogl_texture_2d_gl_copy_from_bitmap (CoglTexture2D 
*tex_2d,
   return status;
 }
 
+CoglBool
+_cogl_texture_2d_gl_copy_sub_image (CoglTexture2D *tex_2d,
+                                    GLint xoffset,
+                                    GLint yoffset,
+                                    GLint x,
+                                    GLint y,
+                                    GLsizei width,
+                                    GLsizei height,
+                                    CoglError **error)
+{
+  CoglContext *ctx = COGL_TEXTURE (tex_2d)->context;
+
+  if (ctx->current_read_buffer == NULL)
+    return FALSE;
+
+  if (ctx->current_draw_buffer)
+    _cogl_framebuffer_flush_journal (ctx->current_draw_buffer);
+
+  if (ctx->current_read_buffer != NULL &&
+      ctx->current_read_buffer != ctx->current_draw_buffer)
+    _cogl_framebuffer_flush_journal (ctx->current_read_buffer);
+
+  _cogl_bind_gl_texture_transient (GL_TEXTURE_2D,
+                                   tex_2d->gl_texture,
+                                   tex_2d->is_foreign);
+
+  ctx->glCopyTexSubImage2D (GL_TEXTURE_2D,
+                            0,
+                            xoffset,
+                            yoffset,
+                            x,
+                            y,
+                            width,
+                            height);
+
+  return TRUE;
+}
+
 void
 _cogl_texture_2d_gl_get_data (CoglTexture2D *tex_2d,
                               CoglPixelFormat format,
diff --git a/cogl/driver/gl/gl/cogl-driver-gl.c 
b/cogl/driver/gl/gl/cogl-driver-gl.c
index f305b6a..f7f5020 100644
--- a/cogl/driver/gl/gl/cogl-driver-gl.c
+++ b/cogl/driver/gl/gl/cogl-driver-gl.c
@@ -695,6 +695,7 @@ _cogl_driver_gl =
     _cogl_texture_2d_gl_get_gl_handle,
     _cogl_texture_2d_gl_generate_mipmap,
     _cogl_texture_2d_gl_copy_from_bitmap,
+    _cogl_texture_2d_gl_copy_sub_image,
     _cogl_texture_2d_gl_get_data,
     _cogl_gl_flush_attributes_state,
     _cogl_clip_stack_gl_flush,
diff --git a/cogl/driver/gl/gles/cogl-driver-gles.c 
b/cogl/driver/gl/gles/cogl-driver-gles.c
index e94449f..f5ac771 100644
--- a/cogl/driver/gl/gles/cogl-driver-gles.c
+++ b/cogl/driver/gl/gles/cogl-driver-gles.c
@@ -476,6 +476,7 @@ _cogl_driver_gles =
     _cogl_texture_2d_gl_get_gl_handle,
     _cogl_texture_2d_gl_generate_mipmap,
     _cogl_texture_2d_gl_copy_from_bitmap,
+    _cogl_texture_2d_gl_copy_sub_image,
     NULL, /* texture_2d_get_data */
     _cogl_gl_flush_attributes_state,
     _cogl_clip_stack_gl_flush,
diff --git a/cogl/driver/nop/cogl-driver-nop.c 
b/cogl/driver/nop/cogl-driver-nop.c
index 53f5975..9d88955 100644
--- a/cogl/driver/nop/cogl-driver-nop.c
+++ b/cogl/driver/nop/cogl-driver-nop.c
@@ -80,6 +80,7 @@ _cogl_driver_nop =
     _cogl_texture_2d_nop_get_gl_handle,
     _cogl_texture_2d_nop_generate_mipmap,
     _cogl_texture_2d_nop_copy_from_bitmap,
+    NULL, /* texture_2d_copy_from_image */
     NULL, /* texture_2d_get_data */
     _cogl_nop_flush_attributes_state,
     _cogl_clip_stack_nop_flush,
diff --git a/cogl/winsys/cogl-texture-pixmap-x11.c 
b/cogl/winsys/cogl-texture-pixmap-x11.c
index 398c357..a44cdaf 100644
--- a/cogl/winsys/cogl-texture-pixmap-x11.c
+++ b/cogl/winsys/cogl-texture-pixmap-x11.c
@@ -1164,6 +1164,7 @@ cogl_texture_pixmap_x11_vtable =
     FALSE, /* not primitive */
     _cogl_texture_pixmap_x11_allocate,
     _cogl_texture_pixmap_x11_set_region,
+    NULL, /* copy_sub_image */
     _cogl_texture_pixmap_x11_get_data,
     _cogl_texture_pixmap_x11_foreach_sub_texture_in_region,
     _cogl_texture_pixmap_x11_get_max_waste,
-- 
2.9.5

++++++ 2bd3cbed45d633fb15625d58e6b7cb8721b0ba98.patch ++++++
>From 2bd3cbed45d633fb15625d58e6b7cb8721b0ba98 Mon Sep 17 00:00:00 2001
From: orbea <[email protected]>
Date: Thu, 25 Mar 2021 07:17:20 -0700
Subject: [PATCH] cogl-gles2: Fix undefined references.

---
 cogl-gles2/Makefile.am | 1 +
 1 file changed, 1 insertion(+)

diff --git a/cogl-gles2/Makefile.am b/cogl-gles2/Makefile.am
index 72ec1eae..1328444e 100644
--- a/cogl-gles2/Makefile.am
+++ b/cogl-gles2/Makefile.am
@@ -17,6 +17,7 @@ endif
 AM_CFLAGS = $(COGL_DEP_CFLAGS) $(COGL_EXTRA_CFLAGS) $(MAINTAINER_CFLAGS)
 
 libcogl_gles2_la_SOURCES = cogl-gles2-api.c
+libcogl_gles2_la_LIBADD  = $(top_builddir)/cogl/libcogl.la
 libcogl_gles2_la_LDFLAGS = \
        -no-undefined \
        -version-info @COGL_LT_CURRENT@:@COGL_LT_REVISION@:@COGL_LT_AGE@ \
-- 
GitLab

Reply via email to