diff options
author | Alyssa Ross <hi@alyssa.is> | 2023-06-16 06:56:35 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2023-06-16 06:56:35 +0000 |
commit | 99fcaeccb89621dd492203ce1f2d551c06f228ed (patch) | |
tree | 41cb730ae07383004789779b0f6e11cb3f4642a3 /nixpkgs/pkgs/development/libraries/cogl | |
parent | 59c5f5ac8682acc13bb22bc29c7cf02f7d75f01f (diff) | |
parent | 75a5ebf473cd60148ba9aec0d219f72e5cf52519 (diff) | |
download | nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.gz nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.bz2 nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.lz nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.xz nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.zst nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.zip |
Merge branch 'nixos-unstable' of https://github.com/NixOS/nixpkgs
Conflicts: nixpkgs/nixos/modules/config/console.nix nixpkgs/nixos/modules/services/mail/mailman.nix nixpkgs/nixos/modules/services/mail/public-inbox.nix nixpkgs/nixos/modules/services/mail/rss2email.nix nixpkgs/nixos/modules/services/networking/ssh/sshd.nix nixpkgs/pkgs/applications/networking/instant-messengers/dino/default.nix nixpkgs/pkgs/applications/networking/irc/weechat/default.nix nixpkgs/pkgs/applications/window-managers/sway/default.nix nixpkgs/pkgs/build-support/go/module.nix nixpkgs/pkgs/build-support/rust/build-rust-package/default.nix nixpkgs/pkgs/development/interpreters/python/default.nix nixpkgs/pkgs/development/node-packages/overrides.nix nixpkgs/pkgs/development/tools/b4/default.nix nixpkgs/pkgs/servers/dict/dictd-db.nix nixpkgs/pkgs/servers/mail/public-inbox/default.nix nixpkgs/pkgs/tools/security/pinentry/default.nix nixpkgs/pkgs/tools/text/unoconv/default.nix nixpkgs/pkgs/top-level/all-packages.nix
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/cogl')
3 files changed, 523 insertions, 28 deletions
diff --git a/nixpkgs/pkgs/development/libraries/cogl/default.nix b/nixpkgs/pkgs/development/libraries/cogl/default.nix index e58a500cf838..41aa3045841f 100644 --- a/nixpkgs/pkgs/development/libraries/cogl/default.nix +++ b/nixpkgs/pkgs/development/libraries/cogl/default.nix @@ -1,7 +1,27 @@ -{ lib, stdenv, fetchurl, fetchpatch, pkg-config, libGL, glib, gdk-pixbuf, xorg, libintl -, pangoSupport ? true, pango, cairo, gobject-introspection, wayland, gnome -, mesa, automake, autoconf -, gstreamerSupport ? true, gst_all_1 }: +{ lib +, stdenv +, fetchurl +, fetchpatch +, pkg-config +, libGL +, glib +, gdk-pixbuf +, xorg +, libintl +, pangoSupport ? true +, pango +, cairo +, gobject-introspection +, wayland +, gnome +, mesa +, automake +, autoconf +, gstreamerSupport ? true +, gst_all_1 +, harfbuzz +, OpenGL +}: stdenv.mkDerivation rec { pname = "cogl"; @@ -17,42 +37,56 @@ stdenv.mkDerivation rec { # submitted by Fedora on the GNOME Bugzilla # (https://bugzilla.gnome.org/787443). Upstream thinks the patch # could be merged, but dev can not make a new release. - - (fetchpatch { - url = "https://bug787443.bugzilla-attachments.gnome.org/attachment.cgi?id=359589"; - sha256 = "0f0d9iddg8zwy853phh7swikg4yzhxxv71fcag36f8gis0j5p998"; - }) - - (fetchpatch { - url = "https://bug787443.bugzilla-attachments.gnome.org/attachment.cgi?id=361056"; - sha256 = "09fyrdci4727fg6qm5aaapsbv71sf4wgfaqz8jqlyy61dibgg490"; - }) + ./patches/gnome_bugzilla_787443_359589_deepin.patch + ./patches/gnome_bugzilla_787443_361056_deepin.patch ]; outputs = [ "out" "dev" ]; - nativeBuildInputs = [ pkg-config libintl automake autoconf ]; + nativeBuildInputs = [ pkg-config libintl automake autoconf gobject-introspection ]; configureFlags = [ "--enable-introspection" + ] ++ lib.optionals (!stdenv.isDarwin) [ "--enable-kms-egl-platform" "--enable-wayland-egl-platform" "--enable-wayland-egl-server" - ] ++ lib.optional gstreamerSupport "--enable-cogl-gst" - ++ lib.optionals (!stdenv.isDarwin) [ "--enable-gles1" "--enable-gles2" ]; + "--enable-gles1" + "--enable-gles2" + ] ++ lib.optionals stdenv.isDarwin [ + "--disable-glx" + "--without-x" + ] ++ lib.optionals gstreamerSupport [ + "--enable-cogl-gst" + ]; - propagatedBuildInputs = with xorg; [ - glib gdk-pixbuf gobject-introspection wayland mesa - libGL libXrandr libXfixes libXcomposite libXdamage - ] - ++ lib.optionals gstreamerSupport [ gst_all_1.gstreamer - gst_all_1.gst-plugins-base ]; + # TODO: this shouldn't propagate so many things + # especially not gobject-introspection + propagatedBuildInputs = [ + glib + gdk-pixbuf + gobject-introspection + ] ++ lib.optionals stdenv.isLinux [ + wayland + mesa + libGL + xorg.libXrandr + xorg.libXfixes + xorg.libXcomposite + xorg.libXdamage + ] ++ lib.optionals gstreamerSupport [ + gst_all_1.gstreamer + gst_all_1.gst-plugins-base + ]; - buildInputs = lib.optionals pangoSupport [ pango cairo ]; + buildInputs = lib.optionals pangoSupport [ pango cairo harfbuzz ] + ++ lib.optionals stdenv.isDarwin [ OpenGL ]; - COGL_PANGO_DEP_CFLAGS - = lib.optionalString (stdenv.isDarwin && pangoSupport) - "-I${pango.dev}/include/pango-1.0 -I${cairo.dev}/include/cairo"; + COGL_PANGO_DEP_CFLAGS = toString (lib.optionals (stdenv.isDarwin && pangoSupport) [ + "-I${pango.dev}/include/pango-1.0" + "-I${cairo.dev}/include/cairo" + "-I${harfbuzz.dev}/include/harfbuzz" + ]); #doCheck = true; # all tests fail (no idea why) @@ -74,7 +108,7 @@ stdenv.mkDerivation rec { render without stepping on each other's toes. ''; - platforms = platforms.mesaPlatforms; + platforms = platforms.unix; license = with licenses; [ mit bsd3 publicDomain sgi-b-20 ]; }; } diff --git a/nixpkgs/pkgs/development/libraries/cogl/patches/gnome_bugzilla_787443_359589_deepin.patch b/nixpkgs/pkgs/development/libraries/cogl/patches/gnome_bugzilla_787443_359589_deepin.patch new file mode 100644 index 000000000000..45342dcff2cd --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/cogl/patches/gnome_bugzilla_787443_359589_deepin.patch @@ -0,0 +1,93 @@ +From 78636289b073d67209a20145ef0dc003f2d77db6 Mon Sep 17 00:00:00 2001 +From: Sian Cao <yinshuiboy@gmail.com> +Date: Tue, 12 Apr 2016 11:36:51 +0800 +Subject: [PATCH 1/2] 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. + +--- + 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 + diff --git a/nixpkgs/pkgs/development/libraries/cogl/patches/gnome_bugzilla_787443_361056_deepin.patch b/nixpkgs/pkgs/development/libraries/cogl/patches/gnome_bugzilla_787443_361056_deepin.patch new file mode 100644 index 000000000000..d8409e33fa93 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/cogl/patches/gnome_bugzilla_787443_361056_deepin.patch @@ -0,0 +1,368 @@ +From d8b34ab0604d80d0be22b8b78e9aa6bf4fac7db0 Mon Sep 17 00:00:00 2001 +From: Sian Cao <yinshuiboy@gmail.com> +Date: Thu, 27 Oct 2016 15:19:32 +0800 +Subject: [PATCH 2/2] texture: Support copy_sub_image + +We need copy_sub_image to implement blurring effects of partial framebuffer +contents as texture sources. + +--- + 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 + |