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
